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 | RAMユーザーを作成した後、Tablestoreリソースにアクセスするための最小限のアクセス許可をRAMユーザーに付与します。システムポリシーまたはカスタムポリシーを使用して、RAMユーザーにTablestoreリソースにアクセスするためのアクセス許可を付与できます。 Tablestoreリソースにアクセスするために必要なアクセス許可を持つAlibaba CloudアカウントまたはRAMユーザーを使用する場合は、この手順をスキップしてください。 重要 デフォルトでは、Alibaba Cloudアカウントはすべてのリソースに対するアクセス許可を持っています。リソースのセキュリティを確保するために、Alibaba CloudアカウントのRAMユーザーを作成し、RAMユーザーにさまざまなリソースへのアクセスを許可することをお勧めします。 | |
2 | Tablestoreの機能を使用する前に、Tablestoreを有効化する必要があります。 Tablestoreを有効化する必要があるのは1回だけです。Tablestoreを有効化しても課金されません。Tablestoreが有効になっている場合は、この手順をスキップしてください。 | |
3 | 重要
インスタンスに作成するテーブルのモデルとインスタンスタイプに基づいて、選択したリージョンにTablestoreインスタンスを作成します。 既存のTablestoreインスタンスがビジネス要件を満たしている場合は、この手順をスキップしてください。 | |
4 | 説明 主キーとパーティションキーを適切に設計することで、データホットスポットの問題を効果的に防ぐことができます。テーブル操作を参照してテーブルを設計することをお勧めします。 ビジネス関連データを格納するデータテーブルを作成します。データテーブルを作成するときは、ビジネス要件に基づいて次の機能を設定できます。
| |
5 | 説明 適切な属性列設定により、ビジネスデータ使用の効率を向上させることができます。データ操作を参照して属性列を指定することをお勧めします。 データテーブルのデータの書き込み、更新、読み取り、および削除を実行できます。 データを削除するには、手動で削除するか、データテーブルのTTLを指定して自動的に削除します。詳細については、データの削除またはデータバージョンとTTLをご参照ください。 | |
6 | インデックスを使用してクエリを高速化する | データテーブルの主キーに基づくデータクエリがビジネス要件を満たしていない場合は、インデックスを使用してデータクエリを高速化できます。Tablestoreは、さまざまなシナリオのデータクエリ要件を満たすために、セカンダリインデックスと検索インデックスを提供します。
|
7 | データを分析する | SQLクエリ機能または検索インデックスを使用して、データテーブルのデータを集計および分析します。
説明 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を使用して、データをグラフに表示できます。詳細については、データの視覚化をご参照ください。