1

我正在编写赛马赔率聚合应用程序,它将从不同的博彩公司网站获取数据。首先,我将每 10 秒从 3 个网站获取数据(以后可能会超过 10 个)。因此,在 3 个网站的情况下,每天将有大约 10,000 条记录(跑步者),每条记录可以每 10 秒读取 3 次,并在赔率发生变化时更新。

  1. DynamoDB 适合那种应用程序还是我应该坚持使用 RDBMS?
  2. 当我同时更新同一跑步者(记录)的赔率(来自不同网站)时,DyanmoDB 是否会出现一致性问题?
  3. 该应用程序可能会扩展到其他运动和赛车并从更多网站获取数据,这是否会导致 DyamoDB 产生巨大的成本,因为它会进行更多的读写操作?

更新 - 2020 年 7 月 21 日上午 9:30 记录结构将如下所示。将会有一些预定的服务运行,每个服务都照顾一个 bookie。记录可能会被服务读取并同时更新。计算的列值将基于 Bookies 列的值。因此,我希望能够一致地读取 Bookies 列的最新值。

  RUNNER       EVENTID  BOOKIE1     BOOKIE2     BOOKIE3     BOOKIE...    CALCULATED
  Runner 1     12345    Odds1       Odds2       Odds3       Odds...      Value
  Runner 2     67890    Odds1       Odds2       Odds3       Odds...      Value

更新 - 2020 年 7 月 21 日下午 12:20

更新我的帖子后,我的脑海中突然出现了一些数字,而 DynamoDB 似乎非常昂贵。这是我的号码,如果有什么不正确的请告诉我。

假设:

  1. 10,000 名跑步者
  2. 一个月内每 10 秒大约有 270,000 个呼叫
  3. 3个赌徒
  4. 假设每条记录/项目小于 4KB。
  5. 一个 RCU 每月可以读取 520 万次读取(在某处找到)
  6. 一个 WCU 每月可以读取 250 万次读取

每月所需的 RCU:(3 * 1,0000 * 270,000)/5.2 磨机 = 1558 RCU

每月所需的 WCU:(3 * 1,0000 * 270,000)/2.5 磨机 = 3240 WCU

4

3 回答 3

3

DynamoDB 专为提高性能和可扩展性(特别针对读取)而构建,它支持事务

事实上,虽然关系数据库使用ACID 模型,但作为 NoSQL 键值对的 DynamoDB 使用 BASE 模型。这以一致性(保证事务在响应成功之前已写入磁盘)等特性换取了具有尖端性能的能力。

您绝对可以使用 DynamoDB,但您需要了解这些限制,例如,您不应该同时尝试对同一个项目进行多次更新。您提到您每 10 秒执行一次此操作,因此流程可以聚合更改然后应用。

如果您关心实时数据,那么您将使用强一致性读取来确保您正在读取最准确的数据。

您可以通过位于 DynamoDB 前面的内置缓存层DAX降低部分读取一致性成本。

此外,如果您的使用时间段较短,DynamoDB 会提供内置的自动扩展功能,这可以减少您在安静时支付的容量(读取和写入)。

除此之外,如果您希望在保持事务写入的同时获得性能,Redis 内存数据存储支持事务。有一个带有ElastiCache的 AWS 托管版本。

当然也有关系数据库选项,虽然这将允许事务性写入,但您需要考虑读取性能(无论是通过缓存还是通过只读功能)。

最终选择取决于您,这些选项中的每一个都有限制,但归结为您希望如何使用它。DynamoDB 可能是最便宜的选择,但您需要根据您的预期需求考虑架构。

于 2020-07-20T15:19:20.043 回答
2

DynamoDB 绝对能够跟上这种负载,甚至更多。在这方面,不要担心 DynamoDB

为了一致性,DynamoDB 确实具有执行强一致性读取的能力。此外,为了让您了解写入的工作原理,DynamoDB 仅在写入该分区的三个存储节点中的至少两个节点时才会确认写入。这两个之一必须是该分区的领导节点。强一致性读取总是来自领导节点。

至于成本,它取决于许多因素,并且在不了解您的工作量以及它将如何增长的情况下,我犹豫不决。如果您想观看它,您可以在桌子上使用按需容量模式按需付费,并且您只需为您使用的内容付费。

于 2020-07-20T15:31:08.777 回答
1

对于使用 DynamoDb 的这种情况的高可扩展性建议是 DAX ( https://aws.amazon.com/en/dynamodb/dax/ ),这使得 Dyanamo 适合。

关于一致性,这将取决于您的数据模型,并且随之而来,但是带有 DAX 的 Dynamo 处理得很好,这里是 DAX + Dynamo 一致性建议的链接:https ://docs.aws.amazon.com/amazondynamodb /latest/developerguide/DAX.consistency.html

最后,是的,您在任何云提供商中使用的所有服务都具有 I/O 配额或速率,因此当应用程序增长时,价格会相应增加。

于 2020-07-20T15:18:53.663 回答