ホームページ > よくある問題 > データベースを分割するにはいくつかの方法があります

データベースを分割するにはいくつかの方法があります

hzc
リリース: 2020-06-29 13:20:25
オリジナル
5613 人が閲覧しました

データベース分割には次のものが含まれます: 1. 機能ごとに分割 [垂直分割] し、異なる機能に関連するテーブルを異なるデータベースに配置します。この利点は、非常に直感的であることです。2. データベースの特定の部分に従って、 table フィールド値の範囲分割【水平分割】 あるテーブルのデータ量がどんどん増えて耐えられなくなった場合、さらに分割する必要があります。

データベースを分割するにはいくつかの方法があります

データベースを分割するいくつかの方法:

1.機能ごとに分割する (垂直分割)

異なる機能に関連するテーブルを異なるデータベースに配置するこの利点は、非常に直感的であることです。ただし、機能の特定の部分のデータ量や性能要件が制御可能な範囲を超える場合は、さらに細分化する必要があります。

2.テーブル内の特定のフィールド値の範囲に応じて分割する(水平分割)

あるテーブルに付随するデータ量がどんどん増えて耐えられなくなった場合、さらに分割する必要があります。 1 つのオプションは、キー範囲に基づいてセグメント化することです。たとえば、A に ID 1 ~ 10000、B に ID 10000 ~ 20000 を配置します。このような展開が予想されます。もう 1 つは、特定のフィールドの値に応じて分割する方法で、たとえば、ユーザー名の最初の文字が A ~ D で​​あれば A に属し、E ~ H は B に属します。これにもアンバランスがあり、ある範囲が単一の点で耐えられる範囲を超える場合には、分割し続ける必要があります。日付などによる細分化もあります。

利点: 単一テーブルのサイズは制御可能であり、自然な水平方向の拡張が可能です。

欠点: 集中書き込みのボトルネックの問題は解決できません。

3.ハッシュに基づくセグメンテーション

一般的には mod を使用して分割します。まず分割データベースの数を決定し、ハッシュ係数を取得してどれを使用するかを決定します。この方法ではデータを均等に分散できますが、データ量が増えると拡張が必要になった場合、この方法ではオンライン拡張ができません。ノードが追加されるたびに、ハッシュ アルゴリズムを再計算する必要があります。

したがって、この方法では一貫性のあるハッシュ mod 2^n を使用することをお勧めします

コメント統合注文データベースを例として、サブデータベースとサブテーブルのソリューションを説明します。は 32*32 です。つまり、userId の最後の 4 桁は、mod 32 によって 32 のライブラリに分割されます。同時に、各ライブラリは、userId の最後の 4 桁 div 32 mod 32 を使用して、合計で 32 のテーブルに分割されます。 1024 テーブル中。そのオンライン展開は 8 つのクラスター (マスター/スレーブ) であり、各クラスターには 4 つのライブラリ

4 があります。ルーティング テーブルに基づくセグメント化

これまでの方法はすべて、アプリケーション データに基づいて操作を決定します。ルーティング テーブルに基づくセグメント化は、より緩和された方法です。別のルーティング テーブルを保持し、そのルーティング テーブルを検索して、ユーザーの特定の属性に基づいてどのデータベースを使用するかを決定する、より一般的なソリューションです。

利点: ID とライブラリのマッピング アルゴリズムは自由に変更できます

欠点: 追加の単一ポイントが導入される可能性があります

以上がデータベースを分割するにはいくつかの方法がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート