約 3 億レコードの膨大なデータがあり、3 ~ 6 か月ごとに更新されます。情報を取得するには、このデータを (継続的に、リアルタイムで) クエリする必要があります。オプションは何ですか - RDBMS(mysql) 、またはHadoop のような他のオプションがあります。どれが良いでしょうか?
5 に答える
3億レコードは通常のリレーショナルデータベースの範囲内にあり、インデックスを適切に使用すればライブクエリは問題ありません。
Hadoopは、高度に分散された冗長なデータが本当に必要でない限り、やり過ぎのように聞こえます。また、問題が発生した場合や最適化のためにサポートを見つけるのが難しくなります。
ええと、私は7億以上のレコードを持ついくつかのテーブルを持ついくつかのPostgreSQLデータベースを持っており、それらは常に更新されています。
これらのテーブルのクエリは非常に高速(数ミリ秒)で問題なく動作します。現在、私のデータは非常に単純であり、クエリするフィールドにインデックスがあります。
つまり、それはすべて、実行するクエリの種類と、高速ディスクに費やすのに十分なお金があるかどうかによって異なります。
他の人が言ったように、最新のRDBMSは、クエリとスキーマに応じて、そのようなテーブルを処理できます(いくつかの最適化を行う必要があります)。行を分割するための適切なキー(日付列など)がある場合は、パーティション化/シャーディング手法を使用すると、テーブルをいくつかの小さなテーブルに分割できます。
これらのスケーリング手法やその他のスケーリング手法の詳細については、先ほどここで尋ねた質問で読むことができます-MySQLのスケーリングソリューション(レプリケーション、クラスタリング)
最近の3億は、実際には巨大なものとは見なされていません:-)。
主にクエリを実行していて、クエリの形式が多かれ少なかれわかっている場合は、適切なインデックスを持つMySQLテーブルが問題なく機能します。
クエリの実行と同時に常に更新を適用している場合は、同時実行処理が優れているPostgreSQLを選択してください。
MS SQLServer、Sybase、Oracle、およびDB2はすべて、会社がお金を使うことを好む場合、これらのボリュームを簡単に処理します。
一方、非構造化データに対して真にフリーフォーマットのクエリを実行する場合は、Hadoopなどの方が適しています。
3億レコードは、Oracle、SQL Server、DB2などのトップエンドRDBMSに問題を引き起こさないはずです。mySQLについてはよくわかりませんが、最近ではかなり大きなデータベースで使用されると確信しています。