是否可以使用 MySQL 管理 20 TB 数据?

是否可以使用 MySQL 管理 20 TB 数据?

我正在做一个项目,我的工作是建立一个数据库系统来管理大约 60,000,000,000 条数据。

项目背景是我需要实时存储每秒从大约 30,000 个 RFID 阅读器读取的大量消息。假设每个 RFID 阅读器每天生成 6,000 条消息,我必须将 180,000,000 条条目插入数据库。

可能的数据条目如下:“time_stamp、Reader_ID、Tag_ID、other_msg_content”

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

现在我正在设计数据库系统,打算用MySQL,我的dump问题是:

  1. 使用 MySQL 是否明智,或者我应该使用 Oracle(价格昂贵)或 HBase?

  2. 如果我必须使用 MySQL,那么知道如何构建集群吗?

  3. 如果我将消息插入到表中,很快表就会变得很长。我想使用分片技术将长表拆分为多个短表。

    3.a. 我想知道 MySQL InnoDB 表的适当长度,即插入多少条数据后应该开始分片?

    3.b. 有没有好的分片代理解决方案?我知道 spock 代理和其他一些,需要推荐。

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

  5. 假设我需要在 MySQL 中处理 20 TB 的数据(为期 1 年),我计划使用 20 个节点(PC 服务器,便宜),每个节点存储 1 TB 的数据,这可能吗?欢迎提出任何意见。

非常感谢。

答案1

想法:

  • 如果您在公共论坛上询问这些问题,请聘请专家为您解答
  • 考虑 Postgres 和 SQL Server,它们也可以扩展到这个规模
  • 您需要 ACID 吗?不需要 = 考虑 NoSQL
  • 设计和硬件比平台更重要
  • 不要虚拟化或削减其他硬件成本
  • 您的 RPO/RTO 是多少?
  • 维护窗口?也就是说,你真的是 24/7/365 吗?始终每秒 30k 行
  • 正在存档?
  • 您需要年龄更大(比如说 6 个月)的在线用户吗?
  • 预算?
  • 需要进行实际测试来验证架构和设计是否符合规定负载
  • 20 TB 可能太小
  • 每天每 RFID 写入 6k 行数据,但每秒写入 30k 行数据?每天有 86.4k 秒,因此每秒只有 1/14 的 RFID 写入数据:每秒 420k+ 行数据的潜在峰值负载如何?

最后

  • 这不是一个数据库问题,而是一个架构问题
  • 你问的问题不对,对于这个要求来说太早了

相关内容