論理テーブルを使用すると、シャード化された物理データベースおよび物理テーブルに分散するデータに対して、各シャードへ手動でルーティングすることなく、クエリ実行、書き込み、および集計が可能です。
仕組み
データベースが水平シャーディング(ホリゾンタルシャーディング)されている場合、同一のテーブル構造が複数の物理テーブルに分割されます。たとえば、注文テーブル(orders table)を 10 個のシャードに分割すると、基盤となる物理データベース内では t_order_0 ~ t_order_9 という名前の物理テーブルが作成されます。
Data Management (DMS) は、この状況に対応するため、2 段階の抽象化を導入します。
| レベル | 名称 | 説明 |
|---|---|---|
| データベースレベル | 論理データベース | すべてのシャード化された物理データベースを統合的に表示するビュー |
| テーブルレベル | 論理テーブル | 同じ構造を持つすべての物理テーブルを統合したビュー。例: t_order |
クエリは論理テーブルに対して実行されます。DMS が自動的に適切な物理テーブルへルーティングします。
SQL のサポート状況
以下の表は、ルーティングアルゴリズムの設定有無に応じた SQL ステートメントのサポート状況をまとめています。
| SQL ステートメント | ルーティングアルゴリズム未設定時 | ルーティングアルゴリズムあり |
|---|---|---|
SELECT | 対応 | 対応 |
UPDATE | 対応 | 対応 |
DELETE | 対応 | 対応 |
INSERT | 非対応 | 対応 |
ルーティングアルゴリズムが設定されている場合、以下の SQL 機能がすべての物理シャードにわたって動作します。
集計:
COUNT()をはじめとする集計関数グループ化:
GROUP BYその他の SQL 構文は、ソースデータベースの規則に従います。
制限事項: サブクエリはサポートされていません。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
DMS 内で、物理データベースおよび物理テーブルが既に設定済みの論理データベースが存在すること
SQL ステートメントを実行するのに十分な権限を持つ DMS コンソールへのアクセスが可能であること
論理テーブルのクエリ
ステップ 1:論理データベースを選択してクエリを実行
DMS コンソールで、論理データベースを選択します。
必要に応じて、
SELECT、UPDATE、またはDELETEステートメントを実行します。この段階では、まだルーティングアルゴリズムが設定されていないため、INSERTは非対応です。
ステップ 2:ルーティングアルゴリズムの設定
ルーティングアルゴリズムは、指定されたフィールドの値に基づいて、書き込み操作をどの物理シャードに送信するかを決定します。
開始するには、モジュロ(剰余)方式のルーティングアルゴリズムを設定します。より複雑なルーティングロジックが必要な場合は、「ルーティングアルゴリズムの設定」をご参照ください。
ステップ 3:論理テーブルへのデータ挿入
ルーティングアルゴリズムを設定した後、INSERT ステートメントを実行して論理テーブルにデータを書き込みます。DMS が自動的に適切な物理シャードへ行をルーティングします。
ステップ 4:ルーティングに基づくフィールドを用いたクエリ
ルーティングアルゴリズムが有効な状態では、ルーティングに基づくフィールドを対象としたクエリは、対象の物理テーブルに直接送信されます。手動でのシャード切り替えは不要です。
クエリ結果の最終列には、対応する物理データベースおよび物理テーブル名が表示されます。該当列の値をクリックすると、その物理テーブルが開き、同じクエリを直接実行できます。
ルーティングに基づくフィールドを指定せずに全シャードを対象にクエリする場合(例:全レコード数のカウント)は、シャードキーを含まないクエリを実行します。
SELECT COUNT(*) FROM logical_table_name;GROUP BY をはじめとする標準的な SQL 句は、ソースデータベースと同様の動作をします。サブクエリはサポートされていません。
次のステップ
ルーティングアルゴリズムの設定 — シャード化テーブル向けに、モジュロ方式または複雑なルーティングロジックを設定します。