
非常に多くのレコードを受信するシステムの設計を検討しています。
1 秒あたりにデータベースに挿入できる回数に固定の制限はありますか?
通常、MS SQL サーバーを使用していますが、Oracle の方が優れているでしょうか? No-SQL クラウド ソリューションでパフォーマンスを向上させることは可能ですか?
答え1
1秒あたりの操作回数に人為的な制限を設けているデータベースシステムを私は知りません。もしそのようなシステムを見つけたら、激怒した唯一の制限要因は、OS とハードウェア、特にディスク スループットによって課される実際的な制限です。
残りの質問(どのデータベースが「優れている」か)は、実装と要件によって異なります。バケットにデータをダンプするだけの場合は、次のようなNoSQLソリューションが適しています。モンゴDB適切である可能性があり、そのパフォーマンスは非常に印象的です。データが高度にリレーショナルである場合は、SQL ベースの RDBMS システムの方が適しています。
どの SQL ベースの RDBMS でも、最適なパフォーマンスを得るためには、システムのチューニングにある程度時間がかかることを覚悟しておく必要があります。データベース ベンダーには、おそらくこの件に関する膨大なドキュメントが用意されており、最適にチューニングされたシステムと、ハードウェアにただ放り込んだだけのシステムとの違いは劇的なものになる可能性があります。
答え2
私自身のパフォーマンス テストで興味深い結果が得られた理由を探していたときに、この投稿に偶然出会いました。
私は、挿入をグループ化することでパフォーマンスをどの程度向上できるかを調べるために、Postgres でテストを行いました。つまり、一度に 1 つの挿入を実行するのではなく、複数の挿入を大きな SQL 文字列に挿入して、その SQL を実行します。
テストを始めるにあたって、実際のデータと比較してオーバーヘッドが最小限に抑えられるため、より多くのデータをまとめるほどパフォーマンスが向上することが期待できることはわかっていました。また、このような長い文字列に 1 ビットのエラーがある場合に再送信する必要があることに伴うオーバーヘッドにより、ある時点でパフォーマンスが低下し始めるだろうとも考えていました。
私が予想していなかったのは、実験結果でした。このデータをどのように説明すればよいかわかりません。そのため、これについて詳しい方がいらっしゃれば、説明していただけるかもしれません。