Wide Column モデルは、メタデータ、ビッグデータ、その他のシナリオ向けの Bigtable/HBase 互換モデルです。各テーブルは、ペタバイト規模のストレージ、数千万 QPS、スキーマフリーのワイド行、多バージョンデータ、および TTL ベースのライフサイクル管理をサポートします。
モデルの概要
Tablestore の Wide Column モデルは、データを行、列、時間の 3 次元構造でテーブルに格納する、Bigtable/HBase と互換性のあるモデルです。テーブルはスキーマフリーであり、各行は異なる列を持つことができます。また、スキーマを定義することなく属性列の追加や削除が可能です。
モデルのコンポーネント

Wide Column モデルは、以下のコンポーネントで構成されています。
|
コンポーネント |
説明 |
|
プライマリキー |
テーブル内の各行を一意に識別します。プライマリキーは 1〜4 つのプライマリキー列で構成されます。 |
|
パーティションキー |
最初のプライマリキー列です。Tablestore は、パーティションキーの値に基づいて複数のパーティションにデータを分散させ、負荷分散を実現します。 |
|
属性列 |
行内のプライマリキー以外の列です。各属性列には、複数のバージョンの値を格納できます。行ごとの属性列の数に制限はありません。 |
|
バージョン |
各値には、データのライフサイクルを定義するバージョンタイムスタンプがあります。詳細については、「データバージョン」をご参照ください。 |
|
データ型 |
Tablestore は、String、Binary、Double、Integer、Boolean のデータ型をサポートします。詳細については、「データ型」をご参照ください。 |
|
Time To Live (TTL) |
テーブルごとにデータのライフサイクルを定義します。たとえば、TTL を 1 か月に設定すると、Tablestore は 1 か月より古いデータを自動的に削除します。詳細については、「Time To Live (TTL)」をご参照ください。 |
|
最大バージョン数 |
属性列ごとに保持するバージョンの最大数を設定します。バージョン数がこの制限を超えると、Tablestore は古いバージョンを非同期で削除します。詳細については、「最大バージョン数」をご参照ください。 |
コアコンポーネント
データテーブル、行、プライマリキー、および属性は、Tablestore の Wide Column モデルのコアコンポーネントです。テーブルは行のコレクションであり、各行はプライマリキーと属性で構成されます。最初のプライマリキー列がパーティションキーです。
次の表で、これらのコンポーネントについて説明します。
プライマリキーと属性列のデータ型は、「命名規則とデータ型」に記載されています。
|
コンポーネント |
説明 |
|
プライマリキー |
各行を一意に識別します。プライマリキーは 1〜4 つの列で構成されます。テーブルを作成する際には、プライマリキーの構成、各列の名前とデータ型、および列の順序を指定する必要があります。 Tablestore は、データテーブルのプライマリキーに基づいてデータにインデックスを付けます。データテーブルの行は、デフォルトでプライマリキーの昇順にソートされます。 |
|
パーティションキー |
最初のプライマリキー列です。Tablestore は、パーティションキーの値に基づいて行をパーティションとマシンに分散させ、負荷分散を実現します。同じパーティションキー値を持つ行は、同じパーティションに属します。1つのパーティションには、複数のパーティションキー値を含めることができます。Tablestore は、必要に応じてパーティションを自動的に分割およびマージします。 説明
パーティションキー値は最小のパーティショニング単位であり、それ以上分割することはできません。パーティションが大きくなりすぎるのを防ぐため、単一のパーティションキー値に対するすべての行の合計サイズが 10 GB 未満になるようにしてください。パーティションキーの選択ガイドラインについては、「テーブル操作」をご参照ください。 |
|
属性 |
複数の属性列で構成され、行ごとの制限はありません。列は行ごとに異なり、値を空にすることもできます。このスキーマフリーの特性により、各行は異なる属性列のセットを持つことができます。 属性列は、クエリ用の複数バージョンと設定可能な Time To Live (TTL) をサポートします。詳細については、「データバージョンとTTL」をご参照ください。 |
リレーショナルモデルとの違い
次の表では、Wide Column モデルとリレーショナルモデルを比較します。
|
モデル |
特徴 |
|
Wide Column モデル |
3 次元 (行、列、時間)、スキーマフリー、ワイド行、多バージョンデータ、ライフサイクル管理。 |
|
リレーショナルモデル |
2 次元 (行、列)、固定スキーマ。 |
制限
一般的な制限については、「制限」に記載されています。
-
セカンダリインデックスまたは検索インデックスを使用する場合は、該当する制限を確認してください: セカンダリインデックスの制限、検索インデックスの制限。
-
SQL クエリを使用する場合は、該当する制限を確認してください: SQL クエリの制限。
機能
|
特徴 |
説明 |
関連ドキュメント |
|
テーブル操作 |
インスタンス内のデータテーブルを一覧表示、作成、更新、削除します。 |
|
|
基本的なデータ操作 |
Tablestore は、テーブルデータの読み書きのために、単一行操作 (PutRow、GetRow、UpdateRow、DeleteRow) と複数行操作 (BatchWriteRow、BatchGetRow、GetRange) を提供します。 |
|
|
データバージョンと TTL |
バージョン管理と TTL を使用してデータ保持を管理し、ストレージ容量とコストを削減します。 |
|
|
自動インクリメントプライマリキー列 |
非パーティションプライマリキー列を自動インクリメントに設定した場合、データ書き込み時にその値を指定する必要はありません。Tablestore は、パーティションキーごとに列に一意で厳密に増加する値を生成します。 |
|
|
条件付き更新 |
指定された条件が満たされた場合にのみデータを更新します。それ以外の場合、更新は失敗します。 |
|
|
ローカルトランザクション |
単一のパーティションキー値内でローカルトランザクションを作成します。読み取りおよび書き込み操作を実行した後、トランザクションをコミットまたは破棄できます。 |
|
|
アトミックカウンター |
ページビュー (PV) のカウントなど、リアルタイムの統計情報を得るために列をアトミックカウンターとして使用します。 |
|
|
フィルター |
サーバー側で読み取り結果をフィルタリングし、一致する行のみを返すことで、ネットワーク転送と応答時間を削減します。 |
|
|
セカンダリインデックス |
インデックステーブルを作成して、プライマリキー以外の列でのクエリを可能にします。グローバルセカンダリインデックスとローカルセカンダリインデックスが含まれます。
|
|
|
検索インデックス |
転置インデックスと列指向ストレージに基づいて構築されており、複雑なビッグデータクエリに対応します。プライマリキー以外の列でのクエリ、全文検索、プレフィックス/あいまいクエリ、複合条件、ネストされたクエリ、地理空間クエリ、集計 (max、min、count、sum、avg、distinct_count、group_by)、および並列スキャンをサポートします。 |
|
|
SQL クエリ |
データエンジン間で統一された SQL インターフェイスを提供し、Tablestore 内のデータに対する複雑なクエリと分析を可能にします。インデックスベースのクエリ最適化も備えています。 |
|
|
Tunnel Service |
Tablestore は、3 つの分散リアルタイムデータチャネル (増分、完全、増分 + 完全) を提供し、テーブル内の履歴データと新規データの両方を消費および処理します。 |
課金
読み取り/書き込みスループット、データストレージ、およびアウトバウンドインターネットトラフィックに対して課金されます。詳細については、「課金の概要」をご参照ください。
よくある質問
関連ドキュメント
-
ゾーンレベルの災害復旧のために、ゾーン冗長インスタンスを作成します。詳細については、「ゾーン冗長ストレージ」をご参照ください。
-
テーブル暗号化と VPC アクセスでデータとネットワークアクセスを保護します。詳細については、「データ暗号化」および「ネットワークセキュリティ管理」をご参照ください。
-
誤った削除を防ぐために、定期的にデータをバックアップします。詳細については、「データバックアップ」をご参照ください。
-
Tunnel Service を使用して、テーブルの履歴データと新規データを消費および処理します。
-
CloudMonitor を使用して、メトリックベースのアラート通知を設定します。詳細については、「モニタリングとアラート」をご参照ください。
-
DataV または Grafana を使用してデータを可視化します。詳細については、「データ可視化」をご参照ください。