TiDB データベース スキーマ設計の概要

このドキュメントでは、TiDB のオブジェクト、アクセス制御、データベース スキーマの変更、オブジェクトの制限など、TiDB データベース スキーマ設計の基本について説明します。

以降のドキュメントでは、 書店例として、データベースを設計し、データベース内でデータの読み取りおよび書き込み操作を実行する方法を示します。

TiDB のオブジェクト

いくつかの一般的な用語を区別するために、TiDB で使用される用語に関する簡単な合意を以下に示します。

  • 一般用語データベースとの混同を避けるため、このドキュメントではデータベースは論理オブジェクトを指し、 TiDBは TiDB 自体を指し、クラスターはTiDB のデプロイされたインスタンスを指します。

  • TiDB は MySQL 互換の構文を使用します。スキーマとは、データベース内の論理オブジェクトではなく、一般的な用語スキーマを意味します。詳細については、 MySQL ドキュメントを参照してください。スキーマを論理オブジェクトとして持つデータベース ( PostgreSQLオラクルMicrosoft SQLサーバーなど) から移行する場合は、この違いに必ず注意してください。

データベース

TiDB のデータベースは、テーブルやインデックスなどのオブジェクトのコレクションです。

TiDB には、 testという名前のデフォルトのデータベースが付属しています。ただし、 testデータベースを使用する代わりに、独自のデータベースを作成することをお勧めします。

テーブル

テーブルは、 データベース内の関連データのコレクションです。

各テーブルはで構成されます。行内の各値は特定のに属します。各列では 1 つのデータ型のみが許可されます。列をさらに修飾するには、 制約を追加します。計算を高速化するには、 生成された列を追加します。

索引

インデックスは、テーブル内で選択された列のコピーです。 テーブルの 1 つ以上の列を使用してインデックスを作成できます。インデックスを使用すると、TiDB はテーブル内のすべての行を毎回検索する必要がなく、データをすばやく見つけることができるため、クエリのパフォーマンスが大幅に向上します。

インデックスには一般的に 2 つのタイプがあります。

  • 主キー: 主キー列のインデックス。
  • セカンダリ インデックス: 非主キー列のインデックス。

ノート:

TiDB では、主キーのデフォルトの定義がInnoDB (MySQL の共通storageエンジン) とは異なります。

  • InnoDB では、主キーの定義は一意であり、null ではなく、クラスター化インデックスです。
  • TiDB では、主キーの定義は一意であり、null ではありません。ただし、主キーがクラスター化インデックスであるとは保証されません。主キーがクラスター化インデックスであるかどうかを指定するには、 CREATE TABLEステートメントのPRIMARY KEYの後に非予約キーワードCLUSTEREDまたはNONCLUSTEREDを追加します。ステートメントでこれらのキーワードが明示的に指定されていない場合、デフォルトの動作はシステム変数@@global.tidb_enable_clustered_indexによって制御されます。詳細については、 クラスター化インデックス参照してください。

特殊なインデックス

さまざまなユーザー シナリオのクエリ パフォーマンスを向上させるために、TiDB はいくつかの特殊なタイプのインデックスを提供します。各タイプの詳細については、 インデックス作成と制約を参照してください。

その他のサポートされている論理オブジェクト

TiDB は、 tableと同じレベルで次の論理オブジェクトをサポートします。

  • ビュー : ビューは仮想テーブルとして機能し、そのスキーマはビューを作成するSELECTステートメントによって定義されます。
  • シーケンス : シーケンスはシーケンシャルデータを生成して保存します。
  • 一時テーブル : データが永続的ではないテーブル。

アクセス制御

TiDB は、ユーザーベースとロールベースの両方のアクセス制御をサポートします。ユーザーがデータ オブジェクトとデータ スキーマを表示、変更、または削除できるようにするには、 権限ユーザー直接ユーザーに付与するか、ユーザーに権限役割を付与します。

データベーススキーマの変更

ベスト プラクティスとして、データベース スキーマの変更を実行するには、ドライバーまたは ORM の代わりにMySQLクライアントまたは GUI クライアントを使用することをお勧めします。

オブジェクトの制限

詳細については、 TiDB の制限事項を参照してください。

このページは役に立ちましたか?