私は、異なるブックメーカーのウェブサイトからデータを取得する競馬オッズ集計アプリケーションを作成しています。まず、10 秒ごとに 3 つの Web サイト (後で 10 以上になる可能性があります) からデータを取得します。したがって、3 つの Web サイトの場合、毎日約 10,000 のレコード (ランナー) があり、各レコードは 10 秒ごとに 3 回読み取られ、オッズに変化があれば更新されます。
- DynamoDB はそのようなアプリケーションに適していますか、それとも RDBMS に固執する必要がありますか?
- 同じランナー (記録) のオッズ (異なる Web サイトから) を同時に更新する場合、DyanmoDB に一貫性の問題はありますか?
- アプリケーションは他のスポーツやレースに発展し、より多くの Web サイトからデータを取得する可能性があります。DyamoDB はより多くの読み取りと書き込みを行うため、莫大なコストが発生しますか?
更新 - 2020 年 7 月 21 日 9:30AM レコード構造は次のようになります。いくつかのスケジュールされたサービスが実行され、各サービスがブックメーカーを処理します。レコードがサービスによって読み取られ、同時に更新される可能性があります。計算された列の値は、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
更新 - 21/07/2020 12:20PM
投稿を更新した後、いくつかの数字が頭に浮かび、DynamoDB は非常に高価なようです。これが私の番号です。何か間違っている場合はお知らせください。
仮定:
- 10,000ランナー
- 1 か月 10 秒ごとに約 270,000 コールに切り上げ
- 3 ブックメーカー
- 各レコード/アイテムが 4KB 未満であると仮定します。
- 1 つの RCU で 1 か月あたり 520 万回の読み取りが可能 (どこかにあります)
- 1 つの WCU で 1 か月あたり 250 万回の読み取りが可能
1 か月あたりに必要な RCU: (3 * 1,0000 * 270,000)/5.2 ミル = 1558 RCU
1 か月あたりに必要な WCU: (3 * 1,0000 * 270,000)/2.5 ミル = 3240 WCU