📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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の制限事項を参照してください。

お困りですか?

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