すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Wide Columnモデル

最終更新日:Dec 28, 2024

Wide Columnモデルは、BigtableやHBaseのデータモデルに類似しており、メタデータやビッグデータの保存など、さまざまなシナリオに適しています。Wide Columnモデルは、データをデータテーブルに保存します。1つのデータテーブルにペタバイトレベルのデータを保存し、毎秒数千万回のクエリ(QPS)をサポートできます。データテーブルはスキーマレスで、ワイドカラム、最大バージョン数、および有効期限(TTL)管理をサポートしています。データテーブルは、自動インクリメント主キー列、ローカルトランザクション、アトミックカウンター、フィルター、条件付き更新などの機能もサポートしています。

はじめに

TablestoreのWide Columnモデルは、BigtableやHBaseのデータモデルに類似しています。Wide Columnモデルは、行、列、および時間で定義される3次元構造でデータをデータテーブルに保存します。データテーブルの各行は、異なる列を持つことができます。データテーブルの属性列は、動的に追加または削除できます。データテーブルを作成するときに、データテーブルの属性列に対して厳密なスキーマを定義する必要はありません。

コンポーネント

上の図は、Wide Columnモデルのコンポーネントを示しています。次の表では、コンポーネントについて説明します。

コンポーネント

説明

主キー

主キーは、データテーブルの行を一意に識別します。主キーは、1~4つの主キー列で構成されます。

パーティションキー

最初の主キー列は、パーティションキーと呼ばれます。Tablestoreは、パーティションキー値に基づいてデータテーブルのデータをパーティション分割します。同じパーティションキー値を共有する行は、データアクセス要求のバランスのとれた分散を確保するために、同じパーティションに割り当てられます。

属性列

行の主キー列以外のすべての列は、属性列と呼ばれます。各属性列には、異なるバージョンの値を含めることができます。Tablestoreは、各行に含めることができる属性列の数に制限を課していません。

バージョン

属性列の各値には、一意のバージョン番号があります。バージョン番号はタイムスタンプであり、これに基づいて属性列値のTTLを管理できます。詳細については、バージョン番号をご参照ください。

データ型

Tablestoreは、STRING、BINARY、DOUBLE、INTEGER、BOOLEANのデータ型をサポートしています。詳細については、データ型をご参照ください。

TTL

各データテーブルのTTLを指定できます。たとえば、データテーブルのTTLを1か月間に設定すると、Tablestoreは、1か月前にデータテーブルに書き込まれたデータを自動的に削除します。詳細については、TTLをご参照ください。

最大バージョン数

データテーブルの各属性列の値の最大バージョン数を設定できます。最大バージョン数を使用して、各属性列の値のバージョン数を制御できます。属性列の実際のバージョン数が最大バージョン数を超えると、Tablestoreは以前のバージョンを非同期的に削除します。詳細については、最大バージョン数をご参照ください。

コアコンポーネント

データテーブル、行、主キー、および属性は、TablestoreのWide Columnモデルのコアコンポーネントです。データテーブルは行で構成されます。各行は、主キーと1つ以上の属性で構成されます。最初の主キー列は、パーティションキーと呼ばれます。

次の表では、主キー、属性、およびパーティションキーについて説明します。

説明

主キー列と属性列でサポートされているデータ型の詳細については、命名規則とデータ型をご参照ください。

コンポーネント

説明

主キー

主キーは、データテーブルの行を一意に識別します。主キーは、1~4つの主キー列で構成されます。データテーブルを作成するときは、主キー列の名前、データ型、およびシーケンスを含む主キー列を指定する必要があります。

Tablestoreは、データテーブルの行の主キー値に基づいて、データテーブルのデータにインデックスを付けます。デフォルトでは、データテーブルの行は、主キー値に基づいて昇順にソートされます。

パーティションキー

最初の主キー列は、パーティションキーと呼ばれます。負荷分散を確実にするために、Tablestoreは、行のパーティションキー値が属する範囲に基づいて、データ行を対応するパーティションとマシンに自動的に分散します。同じパーティションキー値を共有する行は、同じパーティションに属します。1つのパーティションには、異なるパーティションキー値を持つ行が格納される場合があります。Tablestoreは、特定のルールに基づいてパーティションを分割およびマージします。

説明

パーティションキー値は、データをパーティション分割するための基本単位です。同じパーティションキー値を共有するデータは、さらに分割することはできません。パーティションが大きすぎて分割できないのを防ぐために、同じパーティションキー値を共有するすべての行の合計サイズを最大10 GBにすることをお勧めします。パーティションキーの選択方法の詳細については、テーブル操作をご参照ください。

属性

1つの行に複数の属性列を含めることができます。行の属性列の数に制限はなく、各行の属性列は異なる場合があります。行の属性列の値は空にすることができます。複数の行の同じ属性列の値は、異なるデータ型にすることができます。

属性列には、複数のバージョンの値を格納できます。属性列に保持できる値のバージョン数を指定できます。また、属性列値のTTL値を指定することもできます。詳細については、データバージョンとTTLをご参照ください。

Wide Columnモデルとリレーショナルモデルの違い

次の表では、Wide Columnモデルとリレーショナルモデルの違いについて説明します。

モデル

機能

Wide Columnモデル

3次元構造(行、列、および時間)、スキーマレス、ワイドカラム、最大バージョン数、およびTTL管理

リレーショナルモデル

2次元構造(行と列)および固定スキーマ

制限

Wide Columnモデルの一般的な制限の詳細については、一般的な制限をご参照ください。

  • セカンダリインデックスまたは検索インデックスを使用してデータクエリを高速化する場合は、インデックスの制限に注意してください。詳細については、セカンダリインデックスの制限検索インデックスの制限をご参照ください。

  • SQLを使用してデータのクエリと分析を行う場合は、SQLクエリの制限に注意してください。詳細については、SQLの制限をご参照ください。

手順

次の表では、手順について説明します。

手順

操作

説明

1

Tablestoreリソースへのアクセス許可をRAMユーザーに付与する

RAMユーザーを作成した後、Tablestoreリソースにアクセスするための最小限のアクセス許可をRAMユーザーに付与します。システムポリシーまたはカスタムポリシーを使用して、RAMユーザーにTablestoreリソースにアクセスするためのアクセス許可を付与できます。

Tablestoreリソースにアクセスするために必要なアクセス許可を持つAlibaba CloudアカウントまたはRAMユーザーを使用する場合は、この手順をスキップしてください。

重要

デフォルトでは、Alibaba Cloudアカウントはすべてのリソースに対するアクセス許可を持っています。リソースのセキュリティを確保するために、Alibaba CloudアカウントのRAMユーザーを作成し、RAMユーザーにさまざまなリソースへのアクセスを許可することをお勧めします。

2

Tablestoreを有効化する

Tablestoreの機能を使用する前に、Tablestoreを有効化する必要があります。

Tablestoreを有効化する必要があるのは1回だけです。Tablestoreを有効化しても課金されません。Tablestoreが有効になっている場合は、この手順をスキップしてください。

3

Tablestoreインスタンスを作成する

重要
  • Tablestoreインスタンスを作成する前に、インスタンスに作成するテーブルのモデルと、読み取りと書き込みのパフォーマンスとコストに関するビジネス特性とビジネス要件に基づいてインスタンスタイプを決定する必要があります。詳細については、課金概要インスタンスをご参照ください。

  • Wide Columnモデルの検索インデックス、Tunnel Service、SQLクエリ、データ配信、データ暗号化、制御ポリシー、データバックアップ、およびゾーン冗長ストレージ(ZRS)機能は、特定のリージョンでのみサポートされています。必要な機能をサポートするリージョンを選択して、インスタンスを作成します。詳細については、機能とリージョンをご参照ください。

インスタンスに作成するテーブルのモデルとインスタンスタイプに基づいて、選択したリージョンにTablestoreインスタンスを作成します。

既存のTablestoreインスタンスがビジネス要件を満たしている場合は、この手順をスキップしてください。

4

データテーブルを作成する

説明

主キーとパーティションキーを適切に設計することで、データホットスポットの問題を効果的に防ぐことができます。テーブル操作を参照してテーブルを設計することをお勧めします。

ビジネス関連データを格納するデータテーブルを作成します。データテーブルを作成するときは、ビジネス要件に基づいて次の機能を設定できます。

  • 属性列を使用してデータをクエリする場合、セカンダリインデックスを作成してクエリを高速化できます。

  • データテーブルのデータ暗号化設定を指定することで、保存データの暗号化(DARE)を有効にできます。

  • eコマースWebサイトのアイテムID、大規模WebサイトのユーザーID、フォーラムの投稿ID、チャットツールのメッセージIDなど、自動インクリメント主キー列が必要なシステム設計シナリオでは、データテーブルを作成するときに自動インクリメント主キー列を指定できます。

5

データの基本操作を実行する

説明

適切な属性列設定により、ビジネスデータ使用の効率を向上させることができます。データ操作を参照して属性列を指定することをお勧めします。

データテーブルのデータの書き込み、更新、読み取り、および削除を実行できます。

  1. データをデータテーブルに書き込みます。詳細については、データの書き込みをご参照ください。

  2. 主キーに基づいてデータテーブルからデータを読み取ります。詳細については、データの読み取りをご参照ください。

データを削除するには、手動で削除するか、データテーブルのTTLを指定して自動的に削除します。詳細については、データの削除またはデータバージョンとTTLをご参照ください。

6

インデックスを使用してクエリを高速化する

データテーブルの主キーに基づくデータクエリがビジネス要件を満たしていない場合は、インデックスを使用してデータクエリを高速化できます。Tablestoreは、さまざまなシナリオのデータクエリ要件を満たすために、セカンダリインデックスと検索インデックスを提供します。

  • セカンダリインデックス:データテーブルの属性列に基づいてデータをクエリできます。Tablestoreは、読み取り整合性に対するさまざまな要件を満たすために、グローバルセカンダリインデックスとローカルセカンダリインデックスを提供します。

    セカンダリインデックスは、クエリする列を決定でき、クエリする列の数が少なく、すべての主キー列または主キープレフィックスの値を決定できるシナリオに適しています。

  • 検索インデックス:さまざまなクエリシナリオに転置インデックス、Bkdツリー、およびカラムストアを使用します。

    検索インデックスは、主キーとセカンダリインデックスに基づくクエリではビジネス要件を満たすことができないすべてのクエリおよび分析シナリオに適しています。たとえば、検索インデックスを使用することで、非主キー列、ブールクエリ、リレーショナルクエリ、全文検索、地理クエリ、プレフィックスクエリ、あいまいクエリ、ネストクエリ、および存在クエリに基づいてクエリを実行できます。

7

データを分析する

SQLクエリ機能または検索インデックスを使用して、データテーブルのデータを集計および分析します。

  • SQLクエリ:SELECTステートメントを実行して、JOIN関数、全文検索、集計、算術演算、リレーショナル演算、論理演算、フィールド値によるグループ化、検索インデックスのネストクエリ、検索インデックスのARRAYフィールドのクエリ、JSON関数などの機能を使用できます。詳細については、データのクエリをご参照ください。

  • 検索インデックスの集計:集計操作を実行して、行の最小値、最大値、合計、平均値、カウントと個別カウント、およびパーセンタイル統計を取得できます。また、集計操作を実行して、フィールド値、範囲、地理的な場所、フィルター、ヒストグラム、または日付ヒストグラム別に結果をグループ化し、グループ化されたクエリ結果の行をクエリし、ネストクエリを実行することもできます。

説明

MaxCompute、Spark、Hive、HadoopMR、Function Compute、Realtime Compute for Apache Flinkなどのコンピューティングエンジンを使用して、Tablestoreのデータを分析することもできます。詳細については、概要をご参照ください。

課金ルール

課金対象項目には、読み取りスループット、書き込みスループット、ストレージ使用量、およびインターネット経由のアウトバウンドトラフィックが含まれます。詳細については、課金概要をご参照ください。

FAQ

参考資料

  • TablestoreコンソールまたはTablestore CLIでWide Columnモデルを使用できます。詳細については、Wide Columnモデルを使用するをご参照ください。

  • インスタンスデータのデータセンターレベルのディザスタリカバリを実装するには、ZRS冗長タイプのインスタンスを作成します。詳細については、ZRSをご参照ください。

  • データストレージのセキュリティとネットワークアクセスセキュリティを確保するために、データテーブルを暗号化するか、仮想プライベートクラウド(VPC)をTablestoreインスタンスにバインドして、VPC経由でのみアクセスできるようにすることができます。詳細については、データ暗号化ネットワークセキュリティ管理をご参照ください。

  • 重要なデータが誤って削除されるのを防ぐために、データバックアップ機能を使用して重要なデータを定期的にバックアップできます。詳細については、Tablestoreのデータをバックアップするをご参照ください。

  • データテーブルの履歴データと増分データを使用するには、Tunnel Serviceを使用します。詳細については、Tunnel Serviceをご参照ください。

  • 監視メトリクスのアラート通知を設定するには、CloudMonitorを使用します。詳細については、監視とアラートをご参照ください。

  • データを視覚化するには、DataVまたはGrafanaを使用します。たとえば、DataVまたはGrafanaを使用して、データをグラフに表示できます。詳細については、データの視覚化をご参照ください。