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 のベスト プラクティスを参照してください。

Playground
新規
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.