web-dev-qa-db-ja.com

リレーショナルデータベースにスケーラビリティの問題があるのはなぜですか?

最近、私はオンラインでいくつかの記事を読みました。これは、リレーショナルデータベースにはスケーリングの問題があり、ビッグデータに関しては使用するのが適切ではないことを示しています。特にデータが大きいクラウドコンピューティングで。しかし、グーグルで拡張できない理由については、確かな理由を見つけることができませんでした。スケーラビリティに関して、リレーショナルデータベースの制限について説明していただけますか?

ありがとう。

28
lahiru madhumal

リレーショナルデータベースは、 [〜#〜] acid [〜#〜] プロパティに従って、堅実で成熟したサービスを提供します。トランザクション処理、リカバリを可能にする効率的なロギングなどを取得します。これらはリレーショナルデータベースのコアサービスであり、それらが得意なサービスです。それらはカスタマイズが難しく、特に特定のアプリケーションでそれらを必要としない場合(たとえば、重要度の低いWebサイトのコンテンツを提供する場合、この場合、広く使用されているMySQLはトランザクションを提供しない場合)、ボトルネックと見なされる可能性があります。デフォルトのストレージエンジンで処理するため、ACIDを満たしません)。多くの「ビッグデータ」問題は、これらの厳密な制約を必要としません。たとえば、Web分析、Web検索、移動オブジェクトの軌跡の処理などは、本質的に不確実性がすでに含まれているためです。

特定のコンピューターの制限(メモリ、CPU、ディスク:データが大きすぎる、またはデータ処理が複雑でコストがかかる)に達した場合は、サービスを配布することをお勧めします。多くのリレーショナルデータベースとNoSQLデータベースが分散ストレージを提供しています。ただし、この場合、ACIDを満たすのは難しいことがわかります。 CAP定理 は、可用性、一貫性、およびパーティションの許容範囲を同時に達成できないという、いくぶん似た状態です。 ACIDをあきらめると(たとえば、BASEを満たす)、スケーラビリティが向上する可能性があります。 this 投稿を参照してください。 CAPによる保管方法の分類用。

もう1つのボトルネックは、SQL操作を使用した柔軟で巧妙な型付きリレーショナルモデル自体です。多くの場合、操作が単純な単純なモデルで十分で効率的です(型なしのKey-Valueストアなど)。一般的な行単位の物理ストレージモデルも制限されている可能性があります。たとえば、データ圧縮には最適ではありません。

ただし、リレーショナルデータベースのテクノロジは成熟しており、十分に研究されており、広く普及しているため、 VoltDB などの新しいデータベースを含む高速でスケーラブルなACID準拠のリレーショナルデータベースがあります。与えられた問題に対して適切な解決策を選択する必要があります。

14
csaba

2つの異なる種類の交差点を想像してみてください。

1つは信号機または警察官が交通を規制し、交差点での動きは制限された速度であり、どの車がいつ正確にどの方向に交差点を走行したかを正確に記録する監視員がいます。

もう1人はそれを持っておらず、運転している速度に関係なく交差点に到着した人は誰でも、ただ飛び込んでできるだけ早く乗り越えたいと思っています。

前者は従来のデータベースエンジンです。岐路はデータそのものです。車は、データにアクセスしたいトランザクションです。信号機または警察官はDBMSです。ウォッチドッグはログとジャーナルを保持します。

後者はNOACIDタイプのエンジンです。

どちらにも飽和点があり、その時点で到着した車は入口で待ち行列に入れ始めます。どちらも最大のスループットを備えています。そのしきい値は、前者のタイプの交差点では低い値にあり、その理由は明らかです。

ただし、前者のタイプの交差点の利点も明らかです。事故が発生する機会がはるかに少なくなります。 2番目のタイプの交差点では、交通密度が交差点の理論上の最大スループットよりもはるかに低いポイントにある場合にのみ、事故が発生しないことが期待できます。また、データ管理エンジンへの変換では、一貫性のある一貫性のある結果が保証されます。これは、前者のタイプの交差点(リレーショナル、ネットワーク、階層のいずれの場合でも、従来のデータベースエンジン)のみが提供できます。

類推はさらに拡張することができます。事故が起こったらどうなるか想像してみてください。 2番目のタイプの交差点では、交通が再開できるようにできるだけ早く道路を片付けることが主な関心事になるでしょう。それが完了した後でも、事故の原因と方法を調査するためにどのような情報を利用できますか。何もありません。それは知られていません。次の事故が起こるのを待っているだけで交差点が開いています。規制された交差点には、何が起こったのかを見て証言できる交通を規制する警察官がいます。どの車がいつ正確に、どの入口で、どの速度で正確に進入したかを示すログがあり、事故の根本原因を特定するための検査に多くの資料が利用可能です。しかしもちろん、それは無料ではありません。

説明として十分にカラフルですか?

23
Erwin Smout

最も単純な例を見てみましょう。生成されたIDで行を挿入します。 IDはテーブル内で一意である必要があるため、他のINSERTが同じ値を使用しないように、データベースは何らかの方法で永続カウンターをロックする必要があります。したがって、2つの選択肢があります。1つのインスタンスのみにデータの書き込みを許可するか、分散ロックを使用するかです。どちらのソリューションも大きな問題であり、最も単純な例です。

2