车辆遥测数据的Cassandra DB模式

0x6upsns  于 2023-08-04  发布在  Cassandra
关注(0)|答案(1)|浏览(139)

用例:车辆在场地上运行,它们不断发送遥测数据,如温度,纬度,经度和速度。我必须建立一个系统来保存这些数据,并提供分析查询,如超速的车辆数量,每辆车行驶的总距离-每天,每月,每年,在超速的情况下发送警报
我打算用Cassandra来保存车辆数据

CREATE TABLE vehicle_data_by_day  (

   vehicle_id VARCHAR,
   vehicle_number               VARCHAR static,
   speed        INT,
    latitude                DOUBLE,
    longitude               DOUBLE
    year INT,
     month INT,
    day INT,
     time timestamp,
    PRIMARY KEY ((vehicle_id, year, month, day), time)
    ) WITH CLUSTERING ORDER BY (time DESC)
   AND compaction = {'class': 'TimeWindowCompactionStrategy', 
                'compaction_window_size': 1, 
                'compaction_window_unit': 'DAYS'};

字符串
为了提供分析查询,我将通过以特定频率查询vehicle_data_by_day来运行后台作业,从而填充下表

create table vehicle_report (
    vehicle_id                    VARCHAR,
   vehicle_number               VARCHAR static ,
   distance_covered_per_day    int,
   year INT,
   month INT,
   day INT,
   PRIMARY KEY ((vehicle_id, year, month, day), 
   distance_covered_per_day)
   )
   WITH CLUSTERING ORDER BY (distance_covered_per_day DESC);
   AND compaction = {'class': 'TimeWindowCompactionStrategy', 
                'compaction_window_size': 1, 
                'compaction_window_unit': 'DAYS'};

                select distance_covered_per_day from vehicle_report where vehicle_id = ka01 and vehicle_type=car


这种设计是否可以扩展,或者我使用分析数据库会更好?

ntjbwcob

ntjbwcob1#

这取决于在一天内读取了多少读数。但从数据分布和扩展的Angular 来看,这对我来说很好。它看起来确实很难查询(只能通过确切的日期),但是的,这是权衡。
通常情况下,Cassandra不是基于OLAP的查询的好解决方案,这通常需要一些动态查询参数。但是只要可以在不使用ALLOW FILTERING指令的情况下查询第二个表,就应该没问题。

相关问题