【问题标题】:How to store 800 billion GPS markers in database [closed]如何在数据库中存储 8000 亿个 GPS 标记[关闭]
【发布时间】:2012-10-10 18:19:16
【问题描述】:

我需要将用户记录的 GPS 轨迹存储到数据库中。轨道每移动 5 米就会包含一个标记,用于在地图上绘制一条线。我估计有 200 公里的轨道,这意味着 40,000 个 lnlt 标记。我估计最少有 50,000 个用户,每个用户有 20 条 200 公里的轨道。这意味着至少有 400 亿个 lnlt 标记。

这也需要扩展,因此对于 100 万用户,我需要 8000 亿个 GPS 标记的容量。

由于每组 40,000 个标记属于单个轨道,因此我们指的是 1 到 2000 万条记录/组 GPS 轨道。

要求: 用户将请求在移动应用程序中的 Google 地图上查看这些轨迹。

关系: 我目前有 2 张桌子。表一有:[trackid]、[userid]、[comment]、[distance]、[time]、[top speed]。

表 2 有 [trackid] [longitude] [latitude],这是所有 GPS 标记的存储位置。在保持读取性能的同时存储大量 GPS 数据的有效方法是什么?

新信息:

将 GPS 数据存储在 KML 文件中,以便在 Google 地图上将其显示为轨迹,这是一种节省数据库空间的好解决方案。将 KML 压缩到 KMZ(基本上是带有 KMZ 扩展名的压缩 KML)会大大减少文件大小。 KMZ 的加载速度比 GPX 快得多,并且可以作为 KML 层与 Google Maps API 集成。 See this information from Google 以获得进一步帮助。到目前为止,这似乎是满足预期要求的最佳解决方案。

【问题讨论】:

  • 您甚至可以将其存储在平面文件中,一个标记具有固定长度,因此您可以轻松查找文件。
  • 我不确定产品推荐是否符合网站指南的主题或建设性......但听起来这是高度标准化的数据。任何好的 RDBMS 都应该可以工作。
  • 你能把这些压缩成轨道的 B-SPLINE 吗?
  • @DavidStratton 我认为在 RDBMS 中存储此类数据的开销很大。它基本上是二进制数据。
  • @karl “这是 google 的解决方案,来自他们制作的不同应用程序”+1 开源。很高兴他的想法能帮助您找到问题的合适答案。

标签: mysql database database-design gps nosql


【解决方案1】:

与往常一样,特定数据库的选择取决于您希望如何存储信息以及如何使用它。因此,在不了解项目的确切要求以及数据关系的情况下,最好的办法是阅读该主题以确定哪种特定产品或存储模型最适合你。

一个很好的起点是阅读比较数据库的性能和使用的博客(见附件):

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

【讨论】:

  • 注意到了。我更改了问题的措辞,并添加了此问题的要求以及当前表之间的关系。也许它可以重新打开?
  • 任何对管理大量 GPS 标记数据感兴趣的人可以阅读此处developers.google.com/maps/articles/toomanymarkers 了解有关 Google 解决方案(例如融合表)的更多信息。
  • 良好的体育精神。老实说,我认为您的问题仍然过于广泛,因为您正试图同时涵盖许多不同的领域。就个人而言,我没有足够的特权来重新提出您的问题(它需要 3000 声望)。有关重新提出问题的更多信息,请参阅this
  • 没问题。我会在进一步研究这个主题时不断添加新信息,因为其他人可能会对类似问题的解决方案感兴趣。
  • @Skeletor 我的解决方案是将相关标记列表保存在 kml 文件中,并为其提供在数据库中引用的唯一 ID。这样,数据库的大小可以减少 4000 倍,并且只包含引用而不是静态数据点。
猜你喜欢
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多