0

我是这个大数据世界的新手。作为一个课程项目,我正在研究传感器网络,并希望将传感器数据存储在 HBase 上。目前数据存储在 MySQL 数据库中。我正在尝试将此数据加载到 HBase 中。但是数据增长得如此之快,并且查询变得非常缓慢。这是 MYSQL 表模式:SensorLog(sensorID, userID,time,date)。所以这个表保存了一个传感器触发日志。对于每个用户(总共 45 个用户),他的公寓里有 25 个运动传感器。每次用户在他的公寓中移动时,都会触发一个传感器,并且此事件将记录到此表中。主要问题是在特定时间间隔和日期内为特定用户触发了哪些传感器。
我想出了三个HBase 模式,我只是想问问你对它们的看法。在这些模式中,我将时间表示为一天中的秒数,即 0-86400 范围内的整数。

Schema1:Rowkey:日期;列族:时间 { cq:(t0-t86400); 简历:(用户ID,传感器ID)}

Schema2: Rowkey: (Date,userID); 列族:时间 { cq:(t0-t86400); 简历:(传感器ID)}

Schema3: Rowkey: (Date,userID); 列族:时间 { cq:(s1-s25); 简历:(时间)}

请让我知道哪种模式更好,更有效?我提前感谢任何帮助。

4

1 回答 1

0

45 个人和 25 个传感器看起来不像你想在 HBase 中存储的东西。

如果您仍然热衷于使用 HBase,那么关键设计应该由您的读写模式驱动。例如,假设每个用户每秒只能进行几次测量,并且用户数量会影响负载,行键 userId、时间戳和传感器 ID 的复合键似乎是有意义的,其中值将是读数

最后,您可能想看看OpenTSDB,它是开源的,建立在 HBase 之上,旨在大规模存储时间序列测量。您可以在此处查看其架构

于 2013-09-23T19:24:11.367 回答