頻繁に使用されるMySQL 構文要素との互換性
MySQLの言語構造、文字セット、タイムゾーン、データ型、共通関数、前処理プロトコル、並べ替え、結合 (JOIN)、ストレージプロセス、インデックス、パーティション、トランザクション、制御コマンド等頻繁に使用されるDDL、DML、DCL コマンド、およびデータベース アクセス APIが含まれています。
(分散) トランザクションのサポート
TDSQL は2フェーズコミットによる分散トランザクションをサポートし、振込先、請求、支払いなどのシナリオに最適です。クロスノードトランザクションパフォーマンスは、単一ノードの約70%であり、オープンソースの分散トランザクションプロトコルである XA よりも約 56% 高いです。現在、MySQL 5.7 のみがこの機能をサポートしています。
(分散)JOIN対応
TDSQL は、複数の物理ノード間の JOIN 操作、つまり分散結合をサポートします。JOINに関連するテーブルはシャードキーと同等な条件がある場合は、シャーディングの一貫性の原則により、この部分のデータを自動的に同じ物理ノードに保存します。この場合、シングルマシンのJOINと相当し、最高のパフォーマンスを発揮できます。クロス物理ノード データに関わる場合は、プロキシは最初に他のノードからデータをプルしてキャッシュします。この場合、ネットワークで送信されるデータが多すぎるため、ネットワークパフォーマンスが低下する可能性があります。
JSON対応
TDSQL は JSON 形式のデータの保存をサポートしているため、JSON 処理がより効率的になり、エラーの早期検出が可能になります。JSON 型を使用し、データの一貫性、トランザクション、JOINなどの従来のデータベース機能に対し要求がある場合は、TDSQLは最適な選択となります。 TDSQL の JSON サポートは MySQL に基づいており、MongoDB とは使い方が少し異なります。ご興味のある方はTDSQL と MongoDB の JSON 機能比較表をご覧ください。
3種類のテーブル作成ポリシー
分割テーブル:即ち水平分割されたテーブルです。通常、2,000 万行を超えるデータ (50 GB を超える) を格納する、急速に拡大する大規模なテーブルに適用できます。
ブロードキャストテーブル:即ちすべての操作がすべての論理シャードにブロードキャストされます。各シャードには完全なテーブルデータがあることを意味します。通常、このテーブルタイプは、構成テーブルまたは頻繁に結合する必要があるテーブルに適しています。当該種類のテーブルのデータ更新が少ないです。ブロードキャスト テーブルは2 つのテーブル間の共同クエリ とトランザクションを 1 つのノードに収束し、パフォーマンスを向上させます。
単一テーブル:シャーディングする必要のないテーブルです。 通常、このテーブルタイプは、データ量が少ないデータベース テーブルに最適です。単一テーブルが分割されていないため、使用中に MySQL と完全に互換性があります。
グローバルに一意の数値シーケンス
AUTO_INCREMENTと類似しています。自動インクリメントシーケンスは、ユーザーのためにグローバルに一意の数値 ID サービスを提供し、分散環境における一意のキーやプライマリキーなどのデータのグローバルな一意性を確保します。
パススルーコマンド
SQL ステートメントは、パフォーマンスと操作の柔軟性を向上させるために、注釈方法 (ヒント) を介してSQLを指定されたターゲットシャードに渡すことができます。
セカンダリパーティション
TDSQL は、シャーディングに加えてパーティションテーブルもサポートしています。つまり、水平分割されたテーブルに論理パーティションレイヤーを追加します。