有100个数据点,每个数据点都有自己的独立表,其中包含架构和查询,如下所述:
SQLite中的当前架构
-
表名称:数据点的名称,例如Tempearature
-
Column-1:Name:Timestamp Type:TEXT(yyyy-MM-dd HH:mm:ss.ttt format)PRIMARY KEY
-
Column-2:Name:Value Type:FLOAT
-
第3栏:名称:质量类型:TEXT("GOOD","BAD")
查询SQLite
-
SELECT * FROM data-point-name;
-
SELECT * FROM data-point-name WHERE时间戳BETWEEN timesamp-1 AND timestamp-2;
-
INSERT INTO data-point-name(时间戳,值,质量)VALUES("2016-01-01 00:00:05.254",123.25454,"GOOD"); (这是一个例子)
目前我有SQLite数据库,其中每个数据点都有一个表,上面有模式,基本上我有100个表 . 这种方式读/写不会干扰在不同数据点上运行的查询 .
如何翻译这个模式在Cassandra中使用?
1 回答
在您的情况下,您可以将所有数据点存储在一个表中:
使用此结构,您可以运行以下查询:
但是使用这种结构,cassandra将按数据点名称对数据进行分区,如果你有很多点,你的分区将是巨大的,你可以有查询性能问题 .
您还可以通过分解时间来优化分区:
在这种情况下,这个结构允许cassandra将数据存储在比第一个例子更小的分区中,如果你按天查询数据,它会更强大:
获取'data-points-type'的所有积分
00:00 AM
和01:00 AM
之间的2016-01-01
当然,您可以按天(例如示例)或其他时间刻度(小时,分钟,秒和毫秒)进行分区 . 如果可以,小分区将有利于性能 .
希望这可以帮到你 .