TiDB 6.0 に搭載されたメタ機能: SQL での配置ルール
執筆者: PingCAP
編集者: Fendy Feng, Calvin Weng, Tom Dewan
TiDBは分散型で柔軟にスケール可能なデータベースです。データスケジューリング管理は、その最も基本的な機能の1つです。TiDBクラスタは複数のサーバーとデータセンターに展開でき、ホットスポットとデータボリュームに基づいてデータを複数の地域に分散することもできます。TiDBユーザーのビジネスがより複雑になり、グローバルに分散されるにつれて、リソースの分離、アクセスの遅延、リージョン間のデータアクセスに対する要求が高まります。これには、より柔軟なデータ配置ルールが必要です。
ユーザー体験を向上させるために、TiDB 6.0ではSQLインターフェイスに基づく新しいデータ配置フレームワークであるSQLにおける配置ルールが導入されています。これにより、TiDBユーザーは、レプリカの数、役割の種類、データの配置場所を柔軟にスケジュールおよび管理できます。これにより、TiDBは、マルチサービス共有クラスタ、クロスリージョン展開、および多様なビジネスニーズを満たすその他の多くのシナリオで、より柔軟なデータ管理を提供できます。
次に、この新機能がどのように役立つかを3つの使用例を紹介して学びましょう。
遅延を削減するための柔軟なクロスリージョンデータ配置
ある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とその新機能に興味がある場合は、ぜひコミュニティ版をお試しください。フィードバックやご不明な点などございましたら、いつでもお気軽にお問い合わせください。