2017-11-05 8 views
1

あたりの挿入の大音量はここに私のシナリオです:カサンドラやPostgreSQLは:分

  1. 私は100,000テーブルをしました。
  2. 私は1分ごとに各テーブルに挿入を行う必要があります。つまり、分ごとに10万回の挿入が別のテーブルにあります。
  3. データの損失はそれほど重要ではありませんが、速度とコストはそれほど重要ではありません。
  4. 挿入フィールドは、id、param1、param2、param3、param4、param5、timestampです。

このケースでは、どのデータベースが高速で安価であるか教えてください。

+1

pgとCassandraの両方のノードが1分あたり100kの挿入を処理します(Postgresには1つのテーブルがありますが、大量のコピー機能があります)。私はデータの損失が重要ではないと言ってカッサンドラに向かっているだろうし、カサンドラは最終的にPGを超えて拡大するだろう。しかし100kのテーブル? Wow – StuartLC

答えて

9

カサンドラは、10万の別個のテーブルで深刻なスケーラビリティの問題に直面する可能性があります。 100,000の独立したテーブルとは、100,000のオープンファイルの倍数を意味します(カーネルがオープンファイルを多く許可するように設定する必要があります).100,000個のmemtables(各テーブルの最後の変更は一時的にメモリに保持されます)たくさんの記憶が必要です。

カサンドラでこのようなことをする別の方法は、のテーブルと10万の異なるパーティション(ワイド行のカサンドラ名)を持つことです。 1分ごとに、既存の各パーティションにさらに1行(小さなエントリ)を追加します。エントリを追加した後にパーティションが巨大になるのを避けるために、通常は毎週、たとえば毎週(毎週約10,000分)新しいパーティションを開始します。カッサンドラのモデリングでは、これはしばしば「時系列データ」と呼ばれます。

あなたの質問には、と書かれたのは、というデータのみであり、それを読んでいないことです。これは見落としではなく、書き込みパフォーマンスと読み込みパフォーマンスについてもっと気にしていると仮定すると、Cassandraは特に書き込みが速いために適しています。スピードと1ドル当たりのパフォーマンスについて絶対に気にしているのであれば、Scylla(CassandraのC++での再実装)もご覧ください。

+1

これは私たちの目的を正確に定義しています。現在、私たちがコントロールしようとしている主な要因はコストです。私たちはGo libsを使ってウェブサイトを開発し、Cを使ってバックグラウンドジョブやハードウェアを開発しています。私たちはデータベースシステムを強く保有していないので、私たちは混乱しています。 Scyllaは非常に有望ですが、今は小さなコミュニティがあります。さて、私たちは、これらのシステムをすべてテストして、最高のパフォーマンスを発揮するシステムを見つけようと考えています。そのような詳細で書いていただきありがとうございます。 –