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

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

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

TiDB のオブジェクト

いくつかの一般的な用語を区別するために、TiDB で使用される用語について簡単に説明します。

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

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

データベース

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

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

テーブル

テーブルは、関連するデータをデータベースに集めたものです。

各テーブルはで構成されます。行の各値は特定のに属します。各列には 1 つのデータ型のみが許可されます。列をさらに修飾するには、いくつかの制約を追加できます。計算を高速化するために、 生成された列 (実験的機能)を追加できます。

索引

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

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

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

ノート:

TiDB では、 Primary Keyのデフォルト定義がInnoDB (MySQL の一般的なストレージ エンジン) とは異なります。

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

特殊なインデックス

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

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

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

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

アクセス制御

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

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

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

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

オブジェクトの制限

このセクションでは、識別子の長さ、単一のテーブル、および文字列型に関するオブジェクトの制限を示します。詳細については、 TiDB の制限事項を参照してください。

識別子の長さの制限

識別子の種類最大長 (許容される文字数)
データベース64
テーブル64
カラム64
索引64
ビュー64
順序64

単一テーブルの制限

タイプ上限(デフォルト値)
コラムデフォルトは 1017 で、最大 4096 まで調整できます
インデックスデフォルトは 64 で、最大 512 まで調整できます
パーティション8192
1 行のサイズデフォルトで 6 MB。
行の 1 列のサイズ6MB

txn-entry-size-limit構成アイテムを使用して、1 行のサイズ制限を調整できます。

文字列型の制限

タイプ上限
CHAR256文字
バイナリ256文字
VARBINARY65535 文字
VARCHAR16383 文字
文章6MB
BLOB6MB

行の数

TiDB は、クラスターにノードを追加することにより、無制限の数の行をサポートします。関連する原則については、 TiDB のベスト プラクティスを参照してください。

TiDB は、クラスターにノードを追加することにより、無制限の数の行をサポートします。関連する原則については、 TiDB のベスト プラクティスを参照してください。

エコシステム
TiDB
TiKV
TiSpark
Chaos Mesh
© 2022 PingCAP. All Rights Reserved.