私の質問には2つのサブ質問があります:
キー/値のタプルのセットとして表されるデータを毎秒受信する場合を考えてみましょう。各値は基本的に 64 ビットのカウンターです。データベースに保存する必要があります。値の数は数千です。それらの数千のうち、実際のデータを持っているのは 1% だけで、その他は null (まばらに入力されたセット) です。数千列のテーブルを作成することは理にかなっていますか? または、単に「id、タイムスタンプ、キー、値」として保存しますか?
質問 1 の答えが「数千の列」の場合、mysql/postgres ファミリのどのデータを使用する必要がありますか?
この場合の読み取りパターンはほとんどがチャートであるため、select はタイムスタンプに基づく一連のデータになります。したがって、すべてのデータまたは日付/時刻範囲内のデータの均一な 1/秒の書き込みと不定期の読み取りです。
おまけの質問ですが、そのようなデータを NoSQL データベースに格納するために使用できるパターンは何ですか? たとえば、MongoDB では、セット全体のわずか 1% のドキュメントを含む統計のコレクションを使用できます。その場合、読み取り/マップ/削減でどのように機能しますか? データの読み取りは mysql/postgres と比べてどうですか?
編集:私のユースケースはNewRelicサービスと非常に似ていますが、小さなデータセットをたくさん持つ代わりに、はるかに大きなデータセット(さらに大きなセットからまばらに取り込まれています)を持っていますが、頻度は低いです(そしてユーザーは少ないです)