したがって、データ階層は非常に単純です。
Account >> SubAccount >> Category >> Product
各製品の毎日の統計 (これは単なる数値であり、毎日のパフォーマンスと呼びましょう) を取得する必要があります。数十のアカウント、数十のサブアカウント、数百のカテゴリ、および数百万の製品が存在する可能性があります。
これを可能にする API の形式は次のとおりです。
GetCurrentPerformance(Product)
現在、Web ベースのダッシュボードで、任意の製品、カテゴリ、サブアカウント、およびアカウントの時間対パフォーマンスを表示できる必要があります。また、GetCurrentPerformance(Product)
.
私はこのソリューションをクラウド、できれば AWS で構築しています。毎日取得したデータを最適に保存する方法を決定しようとしています。これが私が考えたものです:
- すべてをデータベース (RDBMS) に入れます。テーブルのサイズが手に負えないほど急速に大きくなることが懸念されます。
- 製品ごとにフラット ファイルを維持し、このファイルに 1 日のパフォーマンスを追加します。フェッチ中にカテゴリ、サブアカウント、およびアカウントの統計を計算し (平均)、カテゴリ、サブアカウント、およびアカウントごとにファイルを維持します。懸念: ファイルは S3 に保存する必要があり、S3 は追加をサポートしていません。全体的なファイルのプル、データの追加、ファイルのプッシュに非常に時間がかかります。
- (すべての製品にわたって) 毎日のデータに対して 1 つのファイルを維持します。次に、バッチ ジョブで、各製品、カテゴリ、サブアカウント、およびアカウントの統計を計算します。平均計算のためにすべてのファイルを参照する必要がないように、ファイル/データベースを維持します。懸念:特定の製品のタイムラインを表示するには、何百ものファイルを読み取る必要があります。
- No-SQL データベース? これについては経験がありません。
これは非常に単純な問題のように思えますが、最善の方法については混乱しています。提案をいただければ幸いです。