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

Tablestore:時系列データの書き込み

最終更新日:Dec 28, 2024

Tablestoreが提供するPutTimeseriesDataオペレーションを呼び出すことで、複数の時系列データ行を同時に書き込むことができます。時系列データは、メタデータとデータで構成されます。時系列データを書き込む前に時系列メタデータを定義していない場合は、システムが自動的に時系列のメタデータを抽出し、メタデータのインデックスを作成します。

説明

TablestoreのTimeSeriesモデルでは、2次元の時系列テーブルを使用して時系列データを格納します。各行は、時系列におけるある時点のデータを表します。時系列識別子とタイムスタンプは行のプライマリキー列であり、タイムスタンプ以下の時系列のデータポイントは行のデータ列です。1つの行に複数のデータ列を含めることができます。詳細については、概要をご参照ください。

使用上の注意

時系列データを書き込む際は、時系列テーブルの設計を評価し、時系列の総数を確認することをお勧めします。短い時系列には、時系列データの行が1つまたは数行しか存在しません。時系列テーブルに多数の短い時系列が含まれている場合、時系列メタデータの容量が大きくなる可能性があります。Tablestoreは、各時系列のメタデータのインデックスを作成します。メタデータの合計容量は、各時系列のメタデータサイズが4 KBであると仮定して計算されます。

時系列メタデータを削除するには、有効期限(TTL)を設定してメタデータを自動的に削除できます。また、DeleteTimeseriesMetaオペレーションを呼び出して、時系列メタデータを手動で削除することもできます。Tablestore SDKを使用する場合、TimeseriesKeyは時系列識別子を指定します。

説明

時系列データの課金については、TimeSeriesモデルの課金対象項目をご参照ください。

機能

PutTimeseriesDataオペレーションを呼び出すことで、複数の時系列データ行を同時に書き込むことができます。行がすでに存在する場合、既存の行のデータは削除され、新しいデータが書き込まれます。

時系列データを書き込むときは、時系列識別子と時系列のデータを指定する必要があります。時系列のメタデータを定義していない場合は、書き込まれたデータに基づいて、システムが自動的に時系列のメタデータを抽出します。

方法

Tablestoreコンソール、CLI、またはSDKを使用して時系列データを書き込むことができます。

説明

サポートされる機能は、時系列データの書き込み方法によって異なります。

時系列データを書き込む前に、以下の準備が完了していることを確認してください。

Tablestoreコンソールの使用

Tablestoreコンソールで時系列を定義し、時系列テーブルに時系列データを書き込むことができます。

  1. インスタンス管理ページに移動します。

    1. Tablestoreコンソールにログインします。

    2. 上部のナビゲーションバーで、リソースグループとリージョンを選択します。

    3. 概要ページで、管理するインスタンスの名前をクリックするか、インスタンスのアクション列のインスタンスの管理をクリックします。

  2. インスタンスの詳細タブの下部にある時系列テーブルタブをクリックします。

  3. 時系列テーブルタブで、管理する時系列テーブルの名前をクリックし、データのクエリタブをクリックします。時系列テーブルのアクション列のデータの管理をクリックすることもできます。

  4. (オプション)時系列を作成します。

    1. データのクエリタブで、時系列の追加をクリックします。

    2. 時系列の追加ダイアログボックスで、時系列のメタデータを構成します。

      fig_datatimeseries

      次の表にパラメータを示します。

      パラメータ

      説明

      メトリック名

      時系列データの物理量またはメトリックの名前(例:cpu、net)。時系列にCPU使用率またはネットワーク使用率が記録されることを指定します。

      データソース

      時系列のデータソースの識別子。このパラメータは空のままにすることができます。

      タグ

      時系列のタグ。文字列型のキーと値のペアを複数指定できます。

      プロパティ

      時系列のプロパティ列。時系列に関するプロパティ情報を記録するために使用されます。

    3. 追加をクリックします。

  5. データを挿入します。

    1. データの挿入をクリックします。

    2. データの挿入ダイアログボックスで、時間と属性列のパラメータを構成します。fig_datatimeseries

    3. OKをクリックします。

Tablestore CLIの使用

use --ts -t <TIMESERIES_TABLE>コマンドを実行して時系列テーブルを指定した後、Tablestore CLIを使用して次のコマンドを実行し、時系列テーブルに時系列データを書き込むことができます。

  • puttsコマンドを実行してデータ行を挿入します。詳細については、時系列データの書き込みをご参照ください。

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

    putts --k '["cpu","localhost",["region=hangzhou","os=ubuntu"]]' --field '[{"c":"fieldname","v":"fieldvalue"},{"c":"bool_field","v":true},{"c":"double_field","v":1.1},{"c":"int_value","v":10,"isint":true}]' --time 1635162859000000
  • import_timeseriesコマンドを実行して、ローカルファイルから時系列テーブルに時系列データをインポートします。詳細については、時系列データのインポートをご参照ください。

    ファイル名がimport_timeseries.txtで、/temp/ディレクトリに保存されているとします。次の例の各行は、measurement_name,tags fields timestamp形式の時系列データの行を表しています。

    次のサンプルコードは、構成ファイルの内容を示しています。

    cpu,hostname=host_0,region=cn-hangzhou usage_user=58i,usage_system=2i,usage_idle=24i 1609459200000000000
    cpu,hostname=host_1,region=cn-hangzhou usage_user=58i,usage_system=2i,usage_idle=24i 1609459200000000000

    次のサンプルコードは、import_timeseries.txtファイルから時系列テーブルに時系列データをインポートする方法の例を示しています。

    import_timeseries --input /temp/import_timeseries.txt

Tablestore SDKの使用

Tablestore SDK for JavaTablestore SDK for Goを使用して時系列データを書き込むことができます。この例では、Tablestore SDK for Javaを使用します。

次のサンプルコードは、test_timeseries_tableという名前の時系列テーブルに複数の時系列データ行を書き込む方法の例を示しています。

private static void putTimeseriesData(TimeseriesClient client) {
    List<TimeseriesRow> rows = new ArrayList<TimeseriesRow>();
    for (int i = 0; i < 10; i++) {
        Map<String, String> tags = new HashMap<String, String>();
        tags.put("region", "hangzhou");
        tags.put("os", "Ubuntu16.04");
        // 時系列のメジャーメント名、データソース、およびタグを指定して、時系列の識別子を構築します。
        TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
        // timeseriesKeyパラメータとtimeInUsパラメータを指定して、時系列データの行を作成します。
        TimeseriesRow row = new TimeseriesRow(timeseriesKey, System.currentTimeMillis() * 1000 + i);
        // データ値を追加します。
        row.addField("cpu_usage", ColumnValue.fromDouble(10.0));
        row.addField("cpu_sys", ColumnValue.fromDouble(5.0));
        rows.add(row);
    }
    String tableName = "test_timeseries_table";
    PutTimeseriesDataRequest putTimeseriesDataRequest = new PutTimeseriesDataRequest(tableName);
    putTimeseriesDataRequest.setRows(rows);
    // 複数の時系列データ行を同時に書き込みます。
    PutTimeseriesDataResponse putTimeseriesDataResponse = client.putTimeseriesData(putTimeseriesDataRequest);
    // すべてのデータが時系列テーブルに書き込まれたかどうかを確認します。
    if (!putTimeseriesDataResponse.isAllSuccess()) {
        for (PutTimeseriesDataResponse.FailedRowResult failedRowResult : putTimeseriesDataResponse.getFailedRows()) {
            System.out.println(failedRowResult.getIndex());
            System.out.println(failedRowResult.getError());
        }
    }
}

FAQ

関連情報

  • 時系列データを書き込んだ後、次の操作を実行できます。

  • Tablestore Sink Connectorを使用して、KafkaデータソースからTablestoreの時系列テーブルにデータをマイグレーションします。詳細については、時系列テーブルへのデータ同期をご参照ください。

  • 時系列メタデータの管理(時系列の取得、時系列メタデータのプロパティの更新、時系列メタデータの削除など)を実行できます。詳細については、時系列メタデータの管理をご参照ください。

  • 時系列データを視覚化するには、TablestoreをGrafanaに接続できます。詳細については、TablestoreとGrafanaの接続をご参照ください。