【发布时间】:2016-09-20 15:49:28
【问题描述】:
我正在使用 Hbase 和 phoenix 进行交互式分析,我正在尝试为物联网项目设计我的 hbase 行键,但我不太确定我是否做得对。
我的数据库可以这样表示:
Client--->Project ----> Cluster1 ---> Cluster 2 ----> Sensor1
Client--->Project ----> Building ----> Sensor2
Client--->Project ----> Cluster1 ---> Building ----> Sensor3
我所做的是(Client_ID、Project_ID、Cluster_ID、Building_iD、SensorID)的复合主键
(1,1,1#2,0,1)
(1,1,0,1,2)
(1,1,1,1,3)
我们可以指定多个集群或使用分隔符 # 1#2#454 等构建 如果我们没有节点,我们插入 0。
在列族中,我们将拥有传感器的值和元数据的倍数。
我的问题是这个 hbase 行键设计用于表示我们希望 ID 为 1 的集群的所有传感器都有效的请求?
我还想把 Sensor_ID、TimeStamp 放在键中,并将所有的根放在列族中,但这种设计我不确定它是否适合我的要求。
我对这个项目的第三个想法是结合 Neo4j 生根和 hbase 的数据。
谁有类似问题的经验来指导我设计这个数据库的最佳方法?
【问题讨论】:
-
您知道给定客户端可能拥有的最大项目/集群/传感器数量吗?
-
每个传感器生成多少数据点?
-
@Gevorg 不,我没有想到任何最大数量,它是前 10 和前 60 传感器,因此每个传感器每天可能会生成大约 1440 个数据点,最近我试图查找时间序列像opentsdb这样非常适合hadoop生态系统的数据库,有什么建议吗?
-
我认为你在正确的轨道上。确保深入了解数据是如何存储在 HBase 中的,以及 OpenTSDB 如何定义架构以解决时间序列数据域。阅读这两种技术的文档/手册是值得的。