我正在编写赛马赔率聚合应用程序,它将从不同的博彩公司网站获取数据。首先,我将每 10 秒从 3 个网站获取数据(以后可能会超过 10 个)。因此,在 3 个网站的情况下,每天将有大约 10,000 条记录(跑步者),每条记录可以每 10 秒读取 3 次,并在赔率发生变化时更新。
- DynamoDB 适合那种应用程序还是我应该坚持使用 RDBMS?
- 当我同时更新同一跑步者(记录)的赔率(来自不同网站)时,DyanmoDB 是否会出现一致性问题?
- 该应用程序可能会扩展到其他运动和赛车并从更多网站获取数据,这是否会导致 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 似乎非常昂贵。这是我的号码,如果有什么不正确的请告诉我。
假设:
- 10,000 名跑步者
- 一个月内每 10 秒大约有 270,000 个呼叫
- 3个赌徒
- 假设每条记录/项目小于 4KB。
- 一个 RCU 每月可以读取 520 万次读取(在某处找到)
- 一个 WCU 每月可以读取 250 万次读取
每月所需的 RCU:(3 * 1,0000 * 270,000)/5.2 磨机 = 1558 RCU
每月所需的 WCU:(3 * 1,0000 * 270,000)/2.5 磨机 = 3240 WCU