首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于车辆gps跟踪的Cassandra模式

用于车辆gps跟踪的Cassandra模式
EN

Stack Overflow用户
提问于 2017-07-02 00:51:06
回答 2查看 614关注 0票数 0

我有一个要求,即我每隔一段时间从设备中获取gps数据。

因此,对于给定的设备id,我有纬度、经度和时间戳字段。

我需要找到给定车辆id的最新纬度经度。

我的方法是将主键作为(device_id,timestamp)并按时间戳排序。

选择设备id作为分区键是个好主意吗?

在我的例子中,设备是一个虚拟机。每个新的工作都会创建一个新的工作。该设备将发送其gps位置,直到它完成其工作(通常为3-4天),然后到期。对于下一个作业,将创建一个具有新设备id的新设备。

因此,我将有一个给定设备id的数据3-4天,然后什么都没有。此外,每周都有新设备问世。

所以,我唯一担心的是我的分区数量会随着时间的推移而不断增加。对于cassandra来说,这是一个好的设计吗?

EN

回答 2

Stack Overflow用户

发布于 2017-07-02 12:18:45

是的,这是一个很好的设计。

分区键确定哪个节点存储数据。它负责跨节点的数据分发。分区数量越多,数据分布越多,可伸缩性越强,负载平衡的也越多。

票数 1
EN

Stack Overflow用户

发布于 2017-07-02 12:58:51

选择设备id作为分区键是个好主意吗?

是的,根据cassandra,你需要有一个分区键,这样那些键应该有非常好的分布,所以键的数量越多,你得到的分布数量就越多,这样当从客户端执行多个查询时,每个查询将在不同的节点上执行,因此可以减少热点。因此,将device_id作为分区键是的确切用例

您需要记住的另一件事是,来自cassandra文档here

单个分区中的最大单元数(行x列)为20亿。

这意味着从您的模式来看,给定device_id的时间戳不能超过20亿。我相信你的数据不会达到这个极限,如果是这样的话,你需要重新考虑你的数据模型。否则,你的数据模型是百分之好的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44863350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档