Amazon DynamoDB比Amazon RDS(php)慢吗?

Mun*_*nim 2 php mysql amazon-ec2 amazon-rds amazon-dynamodb

我们使用在新加坡地区托管的一系列AWS服务.我们有几个EC2实例和一个RDS实例.我们计划将部分数据迁移到Amazon DynamoDB,这将有助于我们的应用程序数据设计.

不幸的是,DynamoDB总是比RDS慢.我在与EC2实例相同的区域中创建的表中编写了一行.使用适用于php的AmazonAWS SDK读取此行需要1秒以上的时间,并且使用mysql从RDS获取行的次数要比使用mysql少10倍.

我们可以做些什么来优化这个?我已禁用SSL,但我认为它没有太大的区别.

Hal*_*Hal 6

可能。与 RDS 托管数据库(MySQL、SQL Server、Oracle)相比,DynamoDB 具有相当大的延迟,并且运行在更厚的应用程序堆栈之上。

但是,IMO DynamoDB(和大多数 NoSQL 数据库)的主要优势在于延迟是可靠的。如果您在记录检索时看到 400 毫秒的延迟,您可以指望 1 个会话或 100,000 个会话的 400 毫秒延迟。

[注意:1 秒似乎很长 - 在大多数情况下,我们能够获得多条记录 < 秒,但我并没有真正将 DynamoDB 方法用于 PHP 特定的 SDK(只是 .Net)。我想知道是否还有其他东西会成为瓶颈。]


gre*_*reg 5

看看你之前的评论我会说扫描是你的问题.你真的只想在绝对必要的时候使用它,即将数据提供到map中以减少分析或沿着这些方向的东西.据我所知,扫描实际上遍历每一条记录并查找符合您条件的项目(sloooowwwww),其中get/query使用精美索引的散列/范围键.

如果可能的话,您应该构建数据,以便查询散列/范围键,如果这不可行,您可以查看将元数据/查询字段放入cloudsearch,使用它返回id然后直接获取项目来自迪纳摩.您还可以设置一些非变形表(在不同的表中重构相同的数据,以便您有不同的范围键)

使用PHP SDK,您不应该看到使用get和query命令的那些大延迟时间.

  • @Munim - 如果getitem很慢,那么肯定会有另一个问题. (2认同)