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

Tablestore:Tablestore CLI でのワイドカラムモデルの使用

最終更新日:Dec 28, 2024

Tablestore コンソール、Tablestore CLI、または Tablestore SDK を使用して、Tablestore にアクセスできます。Tablestore CLI で Tablestore のワイドカラムモデルを使用する前に、オペレーティングシステムに基づいて Tablestore CLI をダウンロードし、Tablestore CLI を使用して Tablestore を有効化し、インスタンスを作成し、アクセス情報を設定し、データテーブルを作成し、テーブルからデータを読み取り、テーブルにデータを書き込み、SQL ステートメントを実行してデータをクエリする必要があります。

前提条件

Tablestore にログオンするために使用する Alibaba Cloud アカウントまたは RAM ユーザーのログオン情報を取得します。

Alibaba Cloud アカウント をまだ作成していない場合は、Alibaba Cloud 公式 Web サイトで作成してください。

RAM ユーザーとして Tablestore を使用するには、Alibaba Cloud アカウントを使用して RAM ユーザーを作成し、Tablestore にアクセスするための権限を RAM ユーザーに付与する必要があります。詳細については、RAM ポリシーを使用して RAM ユーザーに権限を付与する を参照してください。

警告

Alibaba Cloud アカウントの AccessKey ペアが漏洩した場合、リソースが潜在的なリスクにさらされます。RAM ユーザーの AccessKey ペアを使用して操作を実行することをお勧めします。これにより、Alibaba Cloud アカウントの AccessKey ペアの漏洩を防ぎます。

Tablestore CLI を使用して Tablestore にアクセスするには、Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペアを作成する必要があります。詳細については、AccessKey ペアを取得する を参照してください。

使用上の注意

Tablestore CLI を使用して作成できるのは、従量課金制の高性能インスタンスのみです。従量課金制のキャパシティインスタンスを作成するには、Tablestore コンソールを使用します。詳細については、「Tablestore コンソールでのワイドカラムモデルの使用」トピックの ステップ 2: インスタンスを作成する セクションを参照してください。

ステップ 1: Tablestore CLI をダウンロードして起動する

  1. オペレーティングシステムに基づいて Tablestore CLI パッケージをダウンロードします。

    オペレーティングシステム

    ダウンロードリンク

    Windows

    Windows 10 以降

    Linux

    macOS

  2. ダウンロードした Tablestore CLI パッケージを解凍します。パッケージのルートディレクトリに移動し、オペレーティングシステムに基づいて Tablestore CLI を起動するために使用される方法を選択します。

    1. Windows の場合、ts.exe ファイルをダブルクリックします。

    2. Linux および macOS の場合、./ts コマンドを実行します。

    説明

    Linux または macOS でコマンドを実行するために必要な権限がない場合は、chmod 755 ts コマンドを実行して権限を取得してから、コマンドを実行して Tablestore CLI を起動します。

    macOS で "ts" cannot be opened because Apple cannot check it for malicious software というメッセージが表示された場合は、macOS の [プライバシーとセキュリティ] 設定で ts コマンドの実行を許可する必要があります。

    起動時に次の情報が表示されます。

    # Welcome to use Command Line Tool for Aliyun Tablestore. Current Version is '2021-11-11'.
    #    _______      _      _              _
    #   |__   __|    | |    | |            | |
    #      | |  __ _ | |__  | |  ___   ___ | |_   ___  _ __    ___
    #      | | / _' || '_ \ | | / _ \ / __|| __| / _ \ | '__| / _ \
    #      | || (_| || |_) || ||  __/ \__ \| |_ | (_) || |   |  __/
    #      |_| \__,_||_.__/ |_| \___| |___/ \__| \___/ |_|    \___|
    #
    # Please visit our product website: https://www.aliyun.com/product/ots
    # You can also join our DingTalk Chat Group (ID: 11789671 or 23307953) to discuss and ask Tablestore related questions.
    #
    tablestore>

ステップ 2: Tablestore を有効化する

Tablestore の機能を使用する前に、Tablestore を有効化する必要があります。Tablestore を既に有効化している場合は、再度有効化する必要はありません。Tablestore を有効化する必要があるのは 1 回だけです。Tablestore を有効にしても課金されません。

  1. config コマンドを実行して、AccessKey ペア情報を設定します。詳細については、Tablestore CLI を起動してアクセス情報を設定する を参照してください。

    重要

    Alibaba Cloud アカウントの AccessKey ID と AccessKey シークレットで構成される AccessKey ペアが必要です。AccessKey ペアの取得方法については、AccessKey ペアを取得する を参照してください。

    config --id NTSVLeBHzgX2i************ --key 7NR2DiotscDbauohSq9kSHX8BDp9****************
  2. enable_service コマンドを実行して、Tablestore を有効化します。

ステップ 3: インスタンスを作成する

create_instance コマンドを実行して、高性能インスタンスを作成します。詳細については、インスタンス操作 を参照してください。

次のサンプルコードは、中国 (杭州) リージョンに myinstance という名前の高性能インスタンスを作成する方法を示しています。

create_instance -d "CLI によって作成された最初のインスタンスです。" -n myinstance -r cn-hangzhou

ステップ 4: アクセス情報を設定する

config コマンドを実行して、アクセス情報を設定します。詳細については、Tablestore CLI を起動してアクセス情報を設定する を参照してください。

次のサンプルコードは、myinstance という名前のインスタンスのアクセス情報を設定する方法を示しています。

config --endpoint https://myinstance.cn-hangzhou.ots.aliyuncs.com --instance myinstance --id NTSVLeBHzgX2iZfcaXXPJ**** --key 7NR2DiotscDbauohSq9kSHX8BDp99bjs7eNpCR7o****

ステップ 5: データテーブルを作成して使用する

データテーブルを作成したら、テーブルまたはテーブル内のデータに対して操作を実行できます。詳細については、データテーブルに対する操作 を参照してください。

  1. 次のコマンドを実行して、order という名前のデータテーブルを作成します。

    create -t order --pk '[{"c":"id","t":"string"}]'
  2. 次のコマンドを実行して、order という名前のデータテーブルを使用します。

    use --wc -t order

ステップ 6: データに対する操作を実行する

ビジネス要件に基づいて、データ行の挿入、更新、読み取り、削除、およびデータのインポートまたはエクスポートを実行できます。詳細については、データに対する操作 を参照してください。

  • データ行を挿入する。

    次のサンプルコードは、データテーブルにデータ行を挿入する方法を示しています。

    put --pk '["000000114d884ca1dbd6b9a58e8d0d94"]' --attr '[{"c":"pBrand","v":"brand1"},{"c":"pPrice","v":1599.0},{"c":"payTime","v":1509615334404,"isint":true},{"c":"totalPrice","v":2498.99},{"c":"sName","v":"Tom"},{"c":"pId","v":"p0003004"},{"c":"oId","v":"o0039248410"},{"c":"hasPaid","v":true},{"c":"sId","v":"s0015"},{"c":"orderTime","v":1509614885965,"isint":true},{"c":"pName","v":"brand1 type"},{"c":"cName","v":"Alice"},{"c":"pType","v":"Mobile phone"},{"c":"pCount","v":1,"isint":true},{"c":"cId","v":"c0018"}]'
  • データ行を読み取る。

    次のサンプルコードは、プライマリキーカラムの値が 000000114d884ca1dbd6b9a58e8d0d94 である行を読み取る方法を示しています。

    get --pk '["000000114d884ca1dbd6b9a58e8d0d94"]'

    次の結果が返されます。

    +----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+-------------+--------+-------+---------------+-------+--------+------------+
    | id                               | cId   | cName  | hasPaid | oId         | orderTime     | pBrand | pCount | pId      | pName       | pPrice | pType | payTime       | sId   | sName  | totalPrice |
    +----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+-------------+--------+-------+---------------+-------+--------+------------+
    | 000000114d884ca1dbd6b9a58e8d0d94 | c0018 | Alice | true    | o0039248410 | 1509614885965 | brand1 | 1      | p0003004 | brand1 type | 1599   | Mobile phone  | 1509615334404 | s0015 | Tom | 2498.99    |
    +----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+-------------+--------+-------+---------------+-------+--------+------------+
  • データ行を更新する。

    次のサンプルコードは、プライマリキーカラムの値が 000000114d884ca1dbd6b9a58e8d0d94 である行を更新する方法を示しています。行が存在するかどうかに関係なく、データが挿入されます。行が存在する場合、挿入されたデータは既存のデータを上書きします。

    update --pk '["000000114d884ca1dbd6b9a58e8d0d94"]' --attr '[{"c":"pBrand","v":"brand2"},{"c":"pPrice","v":1599.0},{"c":"payTime","v":1509615334404,"isint":true},{"c":"totalPrice","v":2498.99},{"c":"sName","v":"Tom"},{"c":"pId","v":"p0003004"},{"c":"oId","v":"o0039248410"},{"c":"hasPaid","v":true},{"c":"sId","v":"s0015"},{"c":"orderTime","v":1509614885965,"isint":true},{"c":"pName","v":"brand2 type"},{"c":"cName","v":"Alice"},{"c":"pType","v":"Mobile phone"},{"c":"pCount","v":1,"isint":true},{"c":"cId","v":"c0018"}]'  --condition ignore
  • データをインポートする。

    サンプルデータ パッケージをローカルデバイスにダウンロードし、パッケージを解凍してから、import コマンドを実行してデータをバッチでインポートします。

    説明

    サンプルデータファイルには、合計 100 万行の注文データが含まれています。import -l パラメーターを使用して、インポートする行数を指定できます。

    次のサンプルコードは、サンプルデータファイルの 50,000 行の注文データを現在のテーブルにインポートし、現在の時刻をタイムスタンプとして使用する方法を示しています。コードでは、yourFilePath はサンプルデータパッケージが解凍されるパスを指定します。例: D:\\order_demo_data_1000000\\order_demo_data_1000000

    import -i yourFilePath --ignore_version -l 50000

    次の結果が返されます。

    Current speed is: 15800 rows/s. Total succeed count 15800, failed count 0.
    Current speed is: 27400 rows/s. Total succeed count 43200, failed count 0.
    Import finished, total count is 50000, failed 0 rows.
  • データをスキャンする。

    次のサンプルコードは、データテーブルの最大 10 行のデータをスキャンする方法を示しています。

    scan --limit 10
  • データ行を削除する。

    次のサンプルコードは、プライマリキーカラムの値が 000000114d884ca1dbd6b9a58e8d0d94 である行を削除する方法を示しています。

    delete --pk '["000000114d884ca1dbd6b9a58e8d0d94"]'
  • データをエクスポートする。

    データテーブルからローカル JSON ファイルにデータをエクスポートできます。

    次のサンプルコードは、現在のテーブルの pId、oId、および cName カラムのデータをローカルファイル mydata.json にエクスポートする方法を示しています。

    scan -o /tmp/mydata.json -c pId,oId,cName

ステップ 7: SQL ステートメントを実行してデータをクエリする

SQL クエリ機能は MySQL クエリ構文と互換性があり、データ定義言語 (DDL) ステートメントを使用したテーブル作成をサポートしています。既存のデータテーブルの場合、CREATE TABLE ステートメントを実行して、既存のデータテーブルのマッピングテーブルを作成できます。その後、SQL ステートメントを使用して既存のデータテーブルのデータにアクセスできます。詳細については、SQL クエリ を参照してください。

SQL ステートメントを使用してテーブル内のデータをすばやくクエリするには、次の手順を実行します。

  1. sql コマンドを実行して、SQL モードに入ります。

  2. 次のコマンドを実行して、order という名前のデータテーブルのマッピングテーブルを作成します。

    説明

    データテーブルとマッピングテーブル間のフィールドタイプのマッピングの詳細については、SQL でのデータ型マッピング を参照してください。

    CREATE TABLE `order` (
        `id` VARCHAR(1024),
        `cId` MEDIUMTEXT,
        `cName` MEDIUMTEXT,
        `hasPaid` BOOL,
        `oId` MEDIUMTEXT,
        `orderTime` BIGINT(20),
        `pBrand` MEDIUMTEXT,
        `pCount` BIGINT(20),
        `pId` MEDIUMTEXT,
        `pName` MEDIUMTEXT,
        `pPrice` DOUBLE,
        `pType` MEDIUMTEXT,
        `payTime` BIGINT(20),
        `sId` MEDIUMTEXT,
        `sName` MEDIUMTEXT,
        `totalPrice` DOUBLE,
        PRIMARY KEY(`id`)
    );
  3. ビジネス要件に基づいて、order データテーブルのデータをクエリします。

    • 例 1: 営業担当者名が Tom である 10 件の注文をクエリし、注文金額の昇順で注文を並べ替えます。

      SELECT * FROM `order` WHERE sName = "Tom" ORDER BY totalPrice ASC LIMIT 10;
    • 例 2: 製品タイプが「Mobile phone」である注文の数をカウントします。

      SELECT count(*) FROM `order` WHERE pType = "Mobile phone";
    • 例 3: 製品数が 1 より大きい注文の数をカウントします。

      SELECT count(*) FROM `order` WHERE pCount > 1;

SQL モードを終了するには、exit; コマンドを実行します。

FAQ

参考資料