データベースのテーブルは、一連の二次元配列の集合であり、データオブジェクト間の関係を表現し、データを格納するために使用されます。この章では、主にテーブルに関連するデータベースオブジェクトと、テーブルストレージ、テーブル圧縮、テーブルグループ、一時テーブルなどのテーブルの関連使用特性について説明します。
データベースにおいて、テーブルはデータの組織化の基本単位であり、縦方向の列と横方向の行で構成されています。例えば、著者情報に関するテーブルの名前を「著者」とします。テーブル内の各列には、すべての著者の特定の種類の情報が含まれており、例えば姓などです。一方、各行には、指定された著者のすべての情報が含まれており、例えば姓、名前、住所などです。指定されたデータベーステーブルについて、列の数は通常テーブル作成時に決定され、各列は列名によって識別できます。一方、行の数は動的に変更可能です。
テーブルは通常のテーブルと一時テーブルに分かれます。OceanBaseデータベースのOracleモードにおける一時テーブルのライフサイクルは通常のテーブルと同じであり、一時テーブルが作成されると、任意のセッション(session)から可視され、明示的にDROPコマンドを実行した場合にのみクリーンアップされます。一時テーブルは通常のテーブルのネームスペースを占有しており、オブジェクト名は通常のテーブル名と同じにすることはできず、DROPが実行された後はゴミ箱に移動されません。
一時テーブルのデータクリアポリシーは、セッションレベルとトランザクションレベルに分かれます。セッションレベルの一時テーブルデータは、各セッションごとに個別に保存され、セッション間で相互干渉することはありません。セッションが切断されるとデータはクリーンアップされます。一方、トランザクションレベルの一時テーブルは、トランザクションがコミットされるとデータがクリーンアップされます。
列
データベースにおいて、列(Column)はテーブル上の特定の属性のフィールド値を記録するために使用され、ユーザーが各属性に付けた名前が列名となります。列名に加えて、列にはデータ型やデータ型の最大長(精度)などの情報も含まれます。
通常の列に加えて、OceanBaseデータベースのOracleモードには、仮想列(Virtual Column/Generated Column)と非表示列(Invisible Column)も含まれます。
仮想列は通常の列とは異なり、実際の物理ストレージ領域を持たず、クエリ時にユーザーが仮想列上で定義した式または関数によって結果が計算されます。
非表示列は、クエリ時に列名が明示的に指定された場合にのみユーザーに可視されます。SELECT *を使用してテーブルデータをクエリする場合、非表示列はユーザーには可視されません。非表示列は、データ移行や既に稼働しているアプリケーションの機能拡張に多く使用されます。
行
データベースにおいて、行(Row)はテーブル内の単一レコードにおけるすべての列のデータ集合を表します。簡単に言えば、データベースは列と行で構成されていると考えられます。テーブル内の各行は関連するデータの一組を表し、またテーブル内の各行は同一の構造を持ちます。
例えば、企業情報に関するデータテーブルでは、各行が一つの企業を表し、対応する列は企業名、企業の住所、付加価値税番号などの内容を表す可能性があります。