データベースのサイズを持つデータベースクエリの時間スケールはどうですか?
-
12-11-2019 - |
質問
私は最近OEIS(整数シーケンスのオンライン百科事典)で最近、私が持っていた特定の順序を調べようとしていました。
今、このデータベースはかなり大きいです。Webサイトは、2006年(5歳)の版が印刷された場合、750ボリュームのテキストを占めます。
これが同じ種類の問題であると確信していますGoogleも同様に処理する必要があります。しかし、彼らはまた、彼らが負荷分散を利用する分散システムを持っています。
負荷分散の怠慢ですが、データベースサイズと比較してクエリを実行するのにどのくらいの時間がかかりますか。
またはつまり、DBサイズに対するクエリの複雑さは何ですか?
編集:物事をより具体的にするために、入力クエリが単に次のような数字の文字列を調べると仮定します。
1, 4, 9, 16, 25, 36, 49
. 解決
クエリ、データベースの構造、競合などに強く依存します。しかし一般的にほとんどのデータベースはインデックスを使用する方法を見つけるでしょう、そしてそのインデックスはある種のツリー構造のどちらかになります(
だから回答は通常、どのタイプのデータ構造が使用されるかによって、典型的にはO(1)またはO(log(n))である。
これはあなたが常にハッシュ関数を使わないのか疑問に思うかもしれません。複数の理由があります。ハッシュ関数は値の範囲を取得するのを難しくします。ハッシュ関数がデータをうまく配信できない場合、アクセス時間がO(n)になる可能性があります。ハッシュは時折サイズ変更を必要とし、それは潜在的に非常に高価です。そして、log(n)は、すべての実用的なデータセットにわたってそれを合理的に一定に近いものとして扱うことができるようにゆっくり成長します。 (1000から1ペタバイトまでは5倍です)、頻繁に積極的に要求されたデータはある種の地域を示しています。結果として木は実際には多少一般的に見られます。 (ハッシュは稀なことはまれですが。)
他のヒント
データベースエンジンの実装、索引付け戦略、クエリの詳細、利用可能なハードウェア、データベース構成などを含むいくつかの要因によって異なります。
そのような一般的な質問に答える方法はありません。
テラバイトのデータを備えた適切に設計され実装されたデータベースは、実際には不良設計されたLittleデータベース(索引付けなしのParticaly Oneと相関副Queriesなどのものを悪いものを使用するもの)を実際に優れています。これが、データベースが大きいときに大規模なデータベースのデータベースのデータベース設計上の専門家を雇う必要があると期待している理由です。また、サイズを処理するために必要な設備の種類に投資する必要があります。