使用MySQL来pipe理20 TB数据是否可行?

我正在一个项目中工作,我的工作是build立一个数据库系统来pipe理大约600亿个数据条目。

项目背景是我必须对大量每秒从大约30,000个RFID阅读器读取的消息进行实时存储。 假设每个RFID阅读器每天产生6000条消息,我必须将180,000,000条条目插入到数据库中。

一个可能的数据input就像“time_stamp,Reader_ID,Tag_ID,other_msg_content”

将根据时间范围,Reader_ID和Tag_ID进行查询(SELECT)。 查询不会很复杂。

现在我正在devise数据库系统,并计划使用MySQL。 我的转储问题是:

  1. 使用MySQL是明智的,还是应该使用Oracle(昂贵)或HBase?

  2. 如果我必须使用MySQL,任何想法如何build立群集?

  3. 如果我把消息插入一个表格,表格很快就会变长。 我想使用Sharding技术将长表拆分为许多短表。

    3.A. 我想知道一个MySQL InnoDB表的正确长度,也就是说,在插入了多less条数据之后,我将开始分片?

    3.B. 那里有没有好的分片代理解决scheme? 我知道spock代理和其他一些,需要build议。

  4. 我必须使用MySQL群集吗? 或者我只使用mysql主服务器和分片从服务器,并使用复制来实现高可用性?

  5. 假设我必须在MySQL中处理20TB数据(一年),我打算使用20个节点(PC服务器,便宜),并且每个节点存储1TB的数据,这有可能吗? 任何意见都欢迎。

非常感谢。

思考:

  • 如果您在公共论坛上提出这些问题,请聘请专家为您做
  • 考虑Postgres和SQL Server也会扩展到这个容量
  • 你需要ACID吗? 否=考虑NoSQL
  • devise和硬件比平台更重要
  • 不要虚拟化或削减其他硬件angular落
  • 你的RPO / RTO是什么?
  • 维护窗口? 又名你真的24/7/365? 每秒每秒30k行
  • 归档?
  • 你需要更长的时间(比如6个月)吗?
  • 预算?
  • 需要真实的testing来validation规定负载的架构和devise
  • 20 TB可能太小了
  • 每个RFID每天6k,但每秒30k? 每天有86.4k秒,所以每秒只能写入14个RFID中的1个:那么潜在的峰值负载每秒420k +行

最后

  • 这不是一个数据库问题,而是一个架构问题
  • 对于这个要求,你提出了错误的问题