TiDB User Day 2025 | 10月3日(金) 10:00〜17:00 開催!登録する
placement rules in sql

著者:PingCAP
編集者Fendy Feng, Calvin Weng, Tom Dewan

TiDBは分散型で柔軟にスケール可能なデータベースです。データスケジューリング管理は、その最も基本的な機能の1つです。TiDBクラスタは複数のサーバーとデータセンターに展開でき、ホットスポットとデータボリュームに基づいてデータを複数の地域に分散することもできます。TiDBユーザーのビジネスがより複雑になり、グローバルに分散されるにつれて、リソースの分離、アクセスの遅延、リージョン間のデータアクセスに対する要求が高まります。これには、より柔軟なデータ配置ルールが必要です。

ユーザー体験を向上させるために、TiDB 6.0ではSQLインターフェイスに基づく新しいデータ配置フレームワークであるSQLにおける配置ルールが導入されています。これにより、TiDBユーザーは、レプリカの数、役割の種類、データの配置場所を柔軟にスケジュールおよび管理できます。これにより、TiDBは、マルチサービス共有クラスタ、クロスリージョン展開、および多様なビジネスニーズを満たすその他の多くのシナリオで、より柔軟なデータ管理を提供できます。

次に、この新機能がどのように役立つかを3つの使用例を紹介して学びましょう。

遅延を削減するための柔軟なクロスリージョンデータ配置y

あるTiDBユーザーは、グローバルビジネスを持つサービスプロバイダーです。以前は集中型データアーキテクチャを採用していました。ビジネスが国際的に拡大した後、集中型アーキテクチャを介したリージョン間のデータアクセスが遅くなり、リージョン間のトラフィックのコストが高くなりました。そこで、地元のビジネスをサポートするために、彼らは地元のデータセンターを建設しました。

データには、ローカルで管理される地域データと、グローバルにアクセス可能な構成データの2種類がありました。地域のデータ量が多く、頻繁に更新されていましたが、他地域からのアクセスはほとんどありませんでした。対照的に、グローバル構成データの量は少なく、めったに更新されませんでした。ただし、これは世界的に一意であり、地域を超えてアクセスする必要がありました。明らかに、従来のスタンドアロンデータベースまたは単一のリージョンに展開されたデータベースは、これらの要件を満たすことができません。

彼らはTiDBを選択し、頭痛の種を解決しました。下の図に示すように、TiDBクラスタは、中国北部 (DC1)、中国東部 (DC2)、中国南部 (DC3) にある3つの個別のデータセンターに展開されています。これにより、さまざまな地域の顧客が最寄りのデータセンターのローカルデータにアクセスできるようになります。

TiDBクラスタは3つの個別のデータセンターに展開されています

TiDB 6.0のSQLでの配置ルールを使用すると、地域データのすべてのレプリカを特定の地域の特定のデータセンターにスケジュールできます。すべての地域データは、地域内で保存および管理できます。これにより、クロスリージョンデータレプリケーションのレイテンシが短縮され、トラフィックコストが削減されます。必要なのは、さまざまなデータセンターのストレージノードにラベルを付け、対応する配置ポリシーを作成し、SQLコマンドを実行してデータの保存場所を指定することだけです。

以下は配置ポリシーの例です。

CREATE PLACEMENT POLICY 'east_cn' CONSTRAINTS = '[+region=east_cn]';
CREATE PLACEMENT POLICY 'north_cn' CONSTRAINTS = '[+region=north_cn]';

ALTER TABLE orders PARTITION p_hangzhou PLACEMENT POLICY = 'east_cn';
ALTER TABLE orders PARTITION p_beijing PLACEMENT POLICY = 'north_cn';

ワークロードの分離

別のTiDBユーザーは、2,000を超える事業分野を持つ大規模なインターネット企業です。すべてのデータは、複数のMySQLクラスタによって管理されていました。データ量が多いため、約1,000のMySQLインスタンスがデータを保存していました。このため、データの監視、診断、バージョンのアップグレード、セキュリティ保護などの多くの日常業務は、運用および保守 (O&M) チームに多大なプレッシャーを与えています。さらに悪いことに、ビジネスが成長するにつれて、O&Mコストは年々増加しました。データベースのインスタンスを減らしてO&Mコストを削減したいと考えていましたが、データの分離、アクセスセキュリティ、柔軟なデータスケジューリング、および管理コストの削減を確保することは困難でした。

TiDB 6.0のSQLでの配置ルールを使用すると、柔軟な共有クラスタルールを簡単に作成できます。たとえば、次のSQLコマンドを作成して、企業AとBに同じストレージリソースを共有させて、ストレージと管理のコストを削減し、企業CとDに排他的なリソースを使用させて、ビジネスの分離を強化することができます。

CREATE PLACEMENT POLICY 'shared_nodes' CONSTRAINTS = "[+region=shared_nodes]";
CREATE PLACEMENT POLICY 'business_c' CONSTRAINTS = "[+region=business_c]";
CREATE PLACEMENT POLICY 'business_d' CONSTRAINTS = "[+region=business_d]";

ALTER DATABASE a POLICY=shared_nodes;
ALTER DATABASE b POLICY=shared_nodes;
ALTER DATABASE c POLICY=business_c;
ALTER DATABASE d POLICY=business_d;

ビジネスA、B、CおよびD間の柔軟なリソース共有

複数のビジネスサービスが1つのTiDBクラスタを共有するため、アップグレード、パッチ適用、バックアップ計画、スケーリングなどのO&Mタスクの頻度が大幅に減少します。これにより、管理の負担が軽減され、効率が向上します。

SQLの配置ルールにより、少数のTiDBクラスタを使用して多数のMySQLインスタンスを管理しています。さまざまなビジネスサービスからのデータソースをさまざまなデータベースに格納し、設定した配置ポリシーに従ってさまざまな物理ノードにスケジュールできます。これにより、異なるビジネスデータが物理的に分離され、リソースの競合やハードウェア障害による相互干渉が回避されます。さらに、ユーザー権限を管理することで、ビジネスサービス全体で不要なデータアクセスを回避し、データ品質とデータセキュリティを向上させます。

つまり、TiDB 6.0によって導入されたSQLの新しい配置ルールでは、必要なクラスタがはるかに少なくなり、O&Mコストと、アップグレード、監視、アラートなどのDBAのワークロードが大幅に削減されます。また、リソースの分離と低コストの要件のバランスもとれています。

ステイル読み取りによる低遅延読み取り

別のTiDBユーザーもインターネット企業です。彼らは、1つの都市にプライマリデータセンターとセカンダリデータセンターの両方を構築しました。セカンダリデータセンターのデータにアクセスすることはできましたが、ネットワークの遅延により、ピーク時には読み取りの遅延が大きくなりました。これは、ユーザー体験に影響を与えることになりました。

TiDB 6.0のSQLでの配置ルールを使用すると、データのレプリカを特定のマシンルームに正確に割り当てることができます。また、TiDBのステイル読み取り機能を活用して、データの鮮度と強力な一貫性が必要ないシナリオで、指定された期間の履歴データを読み取ることもできます。これにより、データセンター間でのデータ複製による読み込みレイテンシーを回避し、高いスループットを実現します。

以下は、SQLステートメントでの配置ルールの例です。

CREATE PLACEMENT POLICY eastnwest PRIMARY_REGION="us-east-1" REGIONS="us-east-1,us-east-2,us-west-1" SCHEDULE="MAJORITY_IN_PRIMARY" FOLLOWERS=4;
CREATE TABLE orders (order_id BIGINT PRIMARY KEY, cust_id BIGINT, prod_id BIGINT) PLACEMENT POLICY=eastnwest;

以下は、TiDBの履歴データを読み取るためのステイル読み取り機能をサポートするために使用されるAS OF TIMESTAMP構文の例です。

SELECT * FROM orders WHERE order_id = 14325 AS OF TIMESTAMP '2022-03-01 16:45:26';

まとめ

SQLでの配置ルールは、TiDB 6.0の興味深い機能です。この新機能により、ユーザーは初めて、ラベルに基づいてさまざまなレベルのパーティション、テーブル、またはデータベースでデータを自由にスケジュールできます。これにより、TiDBユーザーはより柔軟なデータ管理が可能になり、多様なビジネスニーズを満たすことができます。

TiDB 6.0とその新機能に興味がある場合は、ぜひコミュニティ版をお試しいただき、ご意見をお聞かせください。他にもご不明な点などございましたら、いつでもお気軽にお問い合わせください。


Have questions? Let us know how we can help.

Contact Us

TiDB Cloud Dedicated

TiDB Cloudのエンタープライズ版。
専用VPC上に構築された専有DBaaSでAWSとGoogle Cloudで利用可能。

TiDB Cloud Serverless

TiDB Cloudのライト版。
TiDBの機能をフルマネージド環境で使用でき無料かつお客様の裁量で利用開始。