すべてのプロダクト
Search
ドキュメントセンター

Data Management:論理テーブルのクエリ

最終更新日:Jun 21, 2026

このトピックでは、論理テーブルをクエリする方法について説明します。

背景情報

  • データベースとテーブルシャーディングを実装した後、複数の物理テーブルに分散されたデータをクエリする簡単な方法が必要です。論理テーブルは統合されたビューを提供し、シャーディングされたデータを単一のテーブルであるかのようにクエリできるようにします。これにより、各クエリに対して正しいデータベースとテーブルを手動で特定する複雑さが抽象化されます。

  • データ管理 (DMS)は、論理データベースおよび論理テーブルからデータを集約することで、これらの透過的なクエリを可能にします。

操作手順

  1. データをクエリおよびエクスポートする 論理データベース を選択します。ルーティングアルゴリズムを構成する前は、SELECTUPDATE、および DELETE ステートメントのみを実行できます。INSERT ステートメントはサポートされていません。

    この段階で INSERT ステートメントを実行すると、システムは次のエラーを返します: [Error] dsql.DSQLException: No shard route found, execution failed. Make sure a routing algorithm is configured for the logical table.

  2. ルーティングアルゴリズムを構成します。この例では、単純なモジュロを使用します。複雑なアルゴリズムの構成の詳細については、「ルーティングアルゴリズムの構成」をご参照ください。

    [New algorithm] ダイアログボックスで、[Algorithm type][Single-column modulo][Modulo type][Simple modulo][Routing field][user_id (bigint)] に設定します。[Modulo]128 に設定し、[Save] をクリックします。

  3. INSERT ステートメントを実行します。

    たとえば、INSERT INTO scend_test(gmt_create,gmt_modified,user_id) VALUES (now(),now(),2); を実行して、scend_test テーブルにレコードを挿入します。実行が成功すると、結果エリアに緑色のチェックマークが表示されます。

  4. クイッククエリを実行します。

    • ルーティングアルゴリズムを構成した後、クエリ条件でルーティングフィールドを使用して、特定の物理シャードテーブルをクエリできます。これにより、物理データベースとテーブルを手動で計算して切り替える必要がなくなります。DMS SQL コンソールで、ルーティングフィールド user_id をクエリ条件として使用する SQL ステートメント SELECT * FROM scend_test WHERE user_id = 4 を実行します。実行ログには、DMS が論理テーブル scend_test を物理シャードテーブル poc_dev.scend_test_000 にルーティングしたことが記録されています。

    • クエリ結果には、ソースデータベースとテーブルを示す追加の列が含まれます。この列の値をクリックすると、SQL ステートメントとクエリ条件があらかじめ入力された状態で、対応する物理シャードテーブルに移動できます。たとえば、SELECT * FROM scend_test WHERE user_id = 2 を実行すると、結果のデータロケーション列に poc_dev.scend_test_000 が表示されます。これは、DMS がデータを対応する物理シャードテーブルにルーティングし、一致するレコードを 1 件返したことを示しています。

    • ルーティングフィールドを条件として含めずにクエリを実行することもできます。これにより、すべての物理シャードテーブルにわたるフルテーブルスキャンが実行されます。これは、概要統計などの操作に役立ちます。

      説明

      GROUP BY などの構文もサポートされています。ほとんどの SQL 構文はソースデータベースと一致していますが、サブクエリは現在サポートされていません。

      たとえば、SQL コンソールで SELECT COUNT(*) FROM scend_test; を実行すると、結果は 1 となり、テーブルに 1 件のレコードが含まれていることを示します。