从MySQL迁移到AWS DynamoDB? 5米行,4个表,1k写入p / s

时间:2016-05-30 00:58:59

标签: mysql amazon-web-services solr amazon-dynamodb amazon-rds

考虑将我的MySQL架构转移到AWS DynamoDB。我的应用程序每秒需要1,000转/秒的请求。这如何与PHP /更新一起玩?有1000名工作人员处理DynamoDB r / w似乎会比MySQL r / w更高的CPU /内存收费。

我已经考虑过一个日志文件来存储更新的信息,然后创建脚本来处理日志文件以删除数据库加载 - 无论文件锁定如何阻碍,如果有人对实现这一点有任何想法会很好奇 - 300个单独的脚本将写入单个日志文件。然后可以每分钟将日志文件处理到数据库。不确定如何在没有锁定的情况下实现这一点。服务器脚本是用PHP编写的。

当前设置 MYSQL数据库(AWS上的RDS)

  • 表A有5m记录 - 主要的db表,30列主要是数字+文本< 500字符。 (每天增长+ 30k记录)。与包含;
  • 的其他4个表有关系
  • 表b - 15m记录(每天增长+ 90k记录)。
  • 表c - 2m记录(每天增长+ 10k记录)。
  • 表d - 4m记录(每天增长+ 15k记录)。
  • 表c - 1m记录(每天增长+ 5k记录)。

表A每秒更新大约1,000条记录,然后更新/添加的行排队等待添加到SOLR搜索。

希望得到一些降低成本的急需建议。在开始开发之前,我应该注意隐藏的成本或其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

我担心数据库性能改进的范围太广了。

  • IOPS。一些devops选择提供200GB存储(200 x 3 = 600 IOPS) 而不是"规定的IOPS"对于较小的存储(说他们只需要 50GB然后购买配置的IOS)。你需要启动一个excel 表找到定价/表现最佳点。
  • 您可能需要创建另一个&#34;非规范化表&#34;来自表A, 如果经常从表A中选择但不遍历整个表 text <500 chars。不要低估文本工作量。
  • 索引,索引,索引。
  • 如果您处理大量的非线性搜索,可能会将部分相关数据复制到您认为会提高性能的dynamodb,首先进行测试,但要维护RDBMS结构。
  • 没有一种尺寸适合所有解决方案。如果需要,还请检查消息队列的使用情况。

为今天的RDBMS添加200k记录/天实际上并不多。甚至1000 IOPS也只发生在突发中。如果查询是最重要的部分,那么您需要优化该部分。