Database design HBase表模型

Database design HBase表模型,database-design,hbase,Database Design,Hbase,我正在学习如何使用HBase。我需要在数据库中输入几辆车的每次行程(按地理定位点(x,y))。这些数据是JSON格式的 问题是,对于我恢复的每个文档,在行程中地理定位的点的数量都会发生变化。(每次旅行都不一样。) 如何在HBase中存储这些数据 是否必须更改插入的每行的列数 Trip1:x1,y1,x2,y2,x3,y3 Trip2:x1、y1、x2、y2、x3、y3、x4、y4 或者我只需要保留两列,一列用于所有x,一列用于所有y Trip1:(X,Y) Trip2:(X,Y) 据我所知

我正在学习如何使用HBase。我需要在数据库中输入几辆车的每次行程(按地理定位点(
x
y
))。这些数据是JSON格式的

问题是,对于我恢复的每个文档,在行程中地理定位的点的数量都会发生变化。(每次旅行都不一样。)

如何在HBase中存储这些数据

是否必须更改插入的每行的列数

  • Trip1:x1,y1,x2,y2,x3,y3
  • Trip2:x1、y1、x2、y2、x3、y3、x4、y4
或者我只需要保留两列,一列用于所有
x
,一列用于所有
y

  • Trip1:(X,Y)
  • Trip2:(X,Y)

据我所知,每次行程都是(x,y)坐标的时间序列。我建议采用以下模式设计:

Row key=shardKey+tripId+timestamp
,每行有
x
y
列。 碎片键可以是
(tripId%区域数)
,这样可以防止热点。
这将允许通过单次扫描从一个区域检索每次行程的数据。

如果我理解得很好,它大致对应于我解释的第一种可能性?而且,我不明白shardKey和时间戳是什么?如果您的tripId是增量的,这将导致在您的区域服务器上出现热点,分布式负载的整个想法将不起作用。切分键可以防止这种情况。然后,据我所知,每个点(x,y)都是在某个时间点生成的,因此有一个时间戳。这样,您可以在任何时间点跟踪位置。