4

検索エンジン (または同様の Web サービス) は、フラット ファイルおよび nosql データベースを使用します。Inverted Index の構造は多対多の関係より単純ですが、後者の関係で処理する方が効率的です。数十億の Web ページと数百万のキーワードに対して 2 つのテーブルが必要です。5,000 万行のテーブルをテストしました。mysql の速度は BerkeleyDB の速度に匹敵します。

大規模な mysql データベースを操作する際の問題は、ALTER TABLE などを扱うときに発生すると思います (ここでは当てはまりません)。このパフォーマンスは、mysql が非常に優れている読み取り集中型です。SELECT で行を読み取るとき、数行のテーブルと数百万行のテーブルの間に大きな違いは見つかりませんでした。数十億の行がある場合は異なりますか?

注: Google や Bing (または全文検索などの高度な機能) を意味するのではなく、概念について説明しています。

4

1 に答える 1

2

私の知る限り、nosql は、他の通常のリレーショナル データベース エンジンが提供しない柔軟性を提供します。どの検索エンジンがどのデータベース エンジンを使用しているかはわかりませんが、nosql (フラット ファイルではありません。複雑なアプリケーションに使用する理由がわかりません) を使用する利点はいくつか考えられます。

条件を一致させ、特定の順序なしで結果を出すだけであれば、どのリレーショナル データベースでも問題ありません。ただし、最も関連性の高い結果を提供したい場合は、考慮すべき基準がたくさんあります。あなたは出来る:

  • ユーザーが以前に選択した結果と類似した内容の結果を優先します。
  • 場所、言語、その他の既知の事実に基づいて、その人により関連性の高い結果を列挙します。
  • より人気のある結果を最初に列挙します (ここでも、特定の地域/年齢層/職業グループ、またはユーザーに関する既知の事実に基づく他のグループ内で最も人気があります)。

これらは、頭に浮かんだ基本的な並べ替え基準にすぎません。開発と保守を開始すると、他の何百もの基準が頭に浮かび、実装される可能性があります。次に、それぞれがどのように実装されるかを考えてみましょう。各リソースを特徴付ける何千ものフィールドが存在する可能性があり、新しい機能ごとに追加のデータが必要になります。

リレーショナル データベースの EAV パターンを使用してこれを行うことができます。これにより、ある程度の柔軟性が得られます。または、そのような目的のために正確に構築された NoSQL を使用することもできます。

繰り返しますが、これは NoSQL を使用する理由にすぎません。RDBMS を使用する理由は他にもたくさんあります。

于 2011-10-16T11:01:59.220 に答える