シャーディング・対応のJDBCカスタムサブライブラリーのサブテーブル戦略 - 複合スライシングアルゴリズムのカスタム実装

断片化戦略シャーディング-JDBCは、すなわち、2次元を持っています:

  • ソースデータのパーティション化戦略(DatabaseShardingStrategy)
  • テーブルの分割戦略(TableShardingStrategy)

前記分割戦略によって表されるデータ・ソース:スライスデータを示す物理データソースポリシーテーブルに目標ルートデータは、宛先表にルーティングされます。

具体的には、テーブルのパーティション分割戦略は再び、その最初のサブライブラリーサブテーブルデータソース分割戦略に依存して、もちろん、唯一のシートを獲得することができます。

           

シャーディング-JDBCデータ・パーティショニング戦略を学びます

       シャーディング-JDBCフラグメントポリシーが断片化し、セグメンテーションアルゴリズムのキーを必要とします。実現は密接に断片化アルゴリズムおよび事業に関連しているようなので、シャーディング-JDBCは、開発者が自分自身を実装できるようにするためのインタフェースを提供することで、内蔵のアルゴリズムの断片化を提供しますが、抽出された様々なシーンによって断片化戦略、高レベルの抽象化を提供しません。アルゴリズムをスライス。

公式文書から次の引用。公式ドキュメント

まず、アルゴリズムをスライスの4種類を発表しました。

アルゴリズムデータ片をスライスして、INおよびフラグメンテーションの間には、=を介してサポート。
アルゴリズムをスライスすると自身がサイドを実装し、それは非常に高い柔軟性を達成することができ、アプリケーション開発者が必要です。

今では4つのスライシングアルゴリズムを提供しています。実現が密接フラグメンテーションアルゴリズム及びビジネスに関連しているように、
従って内蔵スライス算術を提供していないが、断片化されたポリシーによって、さまざまなシナリオに由来する
より高い抽象レベルを提供し、アプリケーション開発者は独自のスライスを実現することを可能にするインターフェースを提供しますアルゴリズム。

  • 正確な算術をスライスし-PreciseShardingAlgorithm

          フラグメンテーションとINのためのキー=フラグメントシーンのような単一のキーを使用して処理します。StandardShardingStrategyの使用を満たす必要があります。

  • レンジ・スライス算術-RangeShardingAlgorithm

          BETWEENと断片化のためのフラグメントのキーとして単一のキーを使用してシーンを処理します。StandardShardingStrategyの使用を満たす必要があります。

  • コンポジットスライス算術-ComplexKeysShardingAlgorithm

シャードキーより複雑なロジックを複数備え、フラグメンテーションのためのマルチキーシャードキーを使用してシーンとして処理するため、アプリケーション開発者は、自己の複雑さに対処する必要があります。ComplexShardingStrategy使用を満たす必要があります。

注意  :私たちはしばしば、レコード、ユーザーのクエリのユーザーIDリストに基づいて、事業開発中ですが、また、複雑なフラグメンテーションアルゴリズムを使用する必要があるユーザーのレコードを必要とする自然キーのクエリに基づきます。たとえば、Ordersテーブル、我々は時間だけのユーザーIDの一定期間のためにあなたのためのリストデータをチェックする必要がなく、オーダー注文IDに応じたデータの特定の部分をチェックする必要があります。ここでは、注文IDとのuserId複合シャードキーが属します。

  • ヒントスライス算術-HintShardingAlgorithm

ヒント断片化は、非SQLを決定フラグメンテーションフィールドを参照し、他の外部条件は、シーンによって決定されるSQLを使用して柔軟噴射フラグ・フィールドのヒントとすることができます。

ヒント断片化戦略は、シャーディング-JDBCの構文は、アルゴリズムを実装することによってサポートされていない制限を実現することができる、SQLの構文解析をバイパスすることです。

ヒントは、シーン行スライスを処理するために使用されます。HintShardingStrategy使用を満たす必要があります。

そして、パーティション化戦略の次の5種類をご紹介。

  • 標準的なパーティション化戦略-StandardShardingStrategy

= AND INとSQL文の支持体との間にスライスし、提供します。StandardShardingStrategyは、シングルシャードキーをサポートし、PreciseShardingAlgorithm RangeShardingAlgorithmに2つのスライス算術を提供するのみ。PreciseShardingAlgorithmは、処理およびIN =断片化のために選択する必要があります。RangeShardingAlgorithmはRangeShardingAlgorithm、間、およびSQLデータベースによる全体ルーティングプロセスを設定していない場合、間フラグメント処理のためのオプションです。

  • コンポジット・パーティション化戦略-ComplexShardingStrategy

= AND INとSQL文の支持体との間にスライスし、提供します。それほどパッケージが、直接キー値ペアの断片へと透過的にアプリケーション開発者によって完全算術スライスオペレータスライスに送信による乗算キーの間の複雑な関係を、キーComplexShardingStrategyサポートを乗算最大の柔軟性を提供し、達成した者。

ここでは設計原則のフレームワーク設計完全な理解を反映し、それはポイントを変更するようユーザに公開します、同じパッケージ内に、抽象化と実装の境界の明確な描写が、それは学習の価値があります。

  • ライン表現の断片化戦略-InlineShardingStrategy

SQL文およびIN =断片化のための運用サポートを提供するために使用さGroovyの表現は、断片化は、単結合のみをサポートしています。単純なスライスアルゴリズムのために、などの面倒Javaコードの開発を回避するために用いた簡単な構成で:T ユーザー $ - > {%8 U_IDは} U_IDに係るt_userテーブルを表す8をダイ、8つのテーブルにテーブル名を分割されt_user_7にt_user_0として。

  • ヒント分割戦略-HintShardingStrategy

SQLの断片化戦略を解析する方法によって、ヒントではなく。

  • 戦略を断片化しないでください-NoneShardingStrategy

断片化戦略のない戦略。

実 - カスタム複合パーティション化戦略

近接戦闘の目的以来、可能なパーティション化戦略ComplexShardingStrategyインターフェイスのカスタマイズを実現するために、すなわち、複雑なパーティション化戦略を実装する方法に焦点を当てているので。

おすすめ

転載: www.cnblogs.com/rinack/p/11241111.html