TiDBデータベーススキーマ設計の概要
このドキュメントでは、TiDBのオブジェクト、アクセス制御、データベーススキーマの変更、オブジェクトの制限など、TiDBデータベーススキーマ設計の基本について説明します。
以降の書店では、を例として、データベースの設計方法、およびデータベース内でのデータ読み書き操作の実行方法を示します。
TiDB内のオブジェクト
一般的な用語を区別するために、TiDBで使用される用語に関する簡単な合意事項を以下に示します。
一般的な用語との混同を避けるため 本ドキュメントでは、データベースとは論理オブジェクトを指し、 TiDBとデータベースTiDB自体を指し、クラスターとは実行中のTiDBデプロイメントを指します。
TiDB は MySQL 互換の構文を使用します。この構文では、スキーマはデータベース内の論理オブジェクトの代わりに一般用語スキーマを意味します。詳細については、 MySQLドキュメントを参照してください。スキーマを論理オブジェクトとして持つデータベース (たとえば、 PostgreSQL 、 オラクル、 Microsoft SQL Server ) から移行する場合は、この違いに必ず注意してください。
データベース
TiDBにおけるデータベースとは、テーブルやインデックスなどのオブジェクトの集合体です。
TiDBにはtestという名前のデフォルトデータベースが付属しています。ただし、 testデータベースを使用する代わりに、独自のデータベースを作成することをお勧めします。
テーブル
テーブルは、データベース内の関連データのコレクションです。
各テーブルは行と列で構成されます。行の各値は特定の列に属します。各列は単一のデータ型のみを許可します。列をさらに絞り込むには、いくつかの を追加できます。計算を高速化するには、制約生成された列追加できます。
索引
インデックスとは、テーブル内の選択された列のコピーです。テーブルの1つまたは複数の列を使用してインデックスを作成できます。インデックスを使用すると、TiDBはテーブル内のすべての行を毎回検索することなくデータを迅速に検索できるため、クエリのパフォーマンスが大幅に向上します。
インデックスには大きく分けて2種類あります。
- 主キー:主キー列に対するインデックス。
- セカンダリインデックス:主キー以外の列に設定されるインデックス。
注記:
TiDBでは、プライマリキーのデフォルト定義はInnoDB (MySQLの一般的なstorageエンジン)とは異なります。
- InnoDBでは、プライマリキーの定義は一意であり、nullではなく、クラスタ化されたインデックスです。
- TiDB では、プライマリ キーの定義は一意であり、NULL ではありません。ただし、プライマリ キーがクラスタ化インデックスであるとは限りません。プライマリ キーがクラスタ化インデックスであるかどうかを指定するには、
CLUSTEREDステートメントのNONCLUSTEREDの後に、予約されていないキーワードPRIMARY KEYまたはCREATE TABLE追加します。ステートメントでこれらのキーワードが明示的に指定されていない場合、デフォルトの動作はシステム変数@@global.tidb_enable_clustered_indexによって制御されます。詳細については、クラスター化インデックス参照してください。
専門索引
さまざまなユーザー シナリオのクエリ パフォーマンスを向上させるために、TiDB はいくつかの特殊なタイプのインデックスを提供します。各タイプの詳細については、インデックスと制約参照してください。
その他のサポートされている論理オブジェクト
TiDBは、テーブルと同じレベルで以下の論理オブジェクトをサポートしています。
- ビュー: ビューは仮想テーブルとして機能し、そのスキーマはビューを作成する
SELECTステートメントによって定義されます。 - シーケンス: シーケンスはシーケンシャルデータを生成し、保存します。
- 一時テーブル: データが永続的ではないテーブル。
アクセス制御
TiDB は、ユーザーベースとロールベースの両方のアクセス制御をサポートします。ユーザーがデータ オブジェクトおよびデータ スキーマを表示、変更、または削除できるようにするには、ユーザーに直接権限付与するか、役割を通じて権限ユーザーに付与します。
データベーススキーマの変更
ベストプラクティスとして、データベーススキーマの変更を実行する際には、ドライバやORMではなく、 MySQLクライアントまたはGUIクライアントを使用することをお勧めします。
対象物の制限
詳細については、 TiDBの制限事項を参照してください。
お困りですか?
- 不和or スラックコミュニティに質問してください。
- TiDB Cloudのサポートチケットを送信してください
- TiDB Self-Managedのサポートチケットを送信してください