0

Cassandra CQL3 と Thrift API に関する次の記事を読みました http://www.datastax.com/dev/blog/does-cql-support-dynamic-columns-wide-rows

この記事では、センサーからデータを収集するためのスキームを作成する例を示しています。タイムスタンプを列にすることで、「ワイド行」ソリューションを示しています。Cassandra の強みは、20 億の列をサポートし、列ごとにデータをすばやく抽出できることです。

この記事では、CQL3 を使用してテーブルを構築します。

CREATE TABLE data (
  sensor_id int,
  collected_at timestamp,
  volts float,
  PRIMARY KEY (sensor_id, collected_at)
) WITH COMPACT STORAGE;

これは次のように変換されます。

 sensor_id | collected_at             | volts
         1 | 2013-06-05 15:11:00-0500 |   3.1
         1 | 2013-06-05 15:11:10-0500 |   4.3
         1 | 2013-06-05 15:11:20-0500 |   5.7
         2 | 2013-06-05 15:11:00-0500 |   3.2
         3 | 2013-06-05 15:11:00-0500 |   3.3
         3 | 2013-06-05 15:11:10-0500 |   4.3

Thrift では、次のように訳されます。

list data;
RowKey: 1

=> (cell=2013-06-05 15:11:00-0500, value=3.1, timestamp=1370463146717000)
=> (cell=2013-06-05 15:11:10-0500, value=4.3, timestamp=1370463282090000)
=> (cell=2013-06-05 15:11:20-0500, value=5.7, timestamp=1370463282093000)

RowKey: 2

=> (cell=2013-06-05 15:11:00-0500, value=3.2, timestamp=1370463332361000)

RowKey: 3

=> (cell=2013-06-05 15:11:00-0500, value=3.3, timestamp=1370463332365000)
=> (cell=2013-06-05 15:11:10-0500, value=4.3, timestamp=1370463332368000)

次のセンサーデータ収集の問題について、Cassandra スキーマの例を考えようとしています。(float ではなく) bigint (long) 値を持つ新しいセンサーのセットを追加するとします。

このようなテーブル スキーマを設計して、異なるデータ型の両方のセンサー タイプを含めながら、タイムスタンプに基づいて列を保持する方法はありますか?

みんなありがとう

4

1 に答える 1