首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于存储车辆跟踪信息的MongoDB

用于存储车辆跟踪信息的MongoDB
EN

Stack Overflow用户
提问于 2014-11-13 01:28:50
回答 3查看 2.2K关注 0票数 3

我正在构建一个类似于Uber的应用程序,用于跟踪车辆。由于更新频率如此之高(占了多个用户),我想知道加快对mongodb集合的写入所涉及的一般实践。

我正在维护一个数据库来存储所有车辆的历史位置信息,但一旦投入生产,它肯定会增长非常快。我需要得到离某个点最近的车辆清单。为此,我应该实现一个单独的表(每辆车一行),该表在每次更新后更新,还是有更好/更快的方法使用现有的表来实现这一点?

EN

回答 3

Stack Overflow用户

发布于 2014-11-13 02:25:51

两个单独的集合可能是这里的最佳选择。

包含当前位置的vehicles集合。它甚至可以包括50个最新的位置条目,加上$push和$slice就不会有无限的数组增长。http://docs.mongodb.org/manual/reference/operator/update/slice/#up._S_slice

一个locationHistory集合,包括所有以前的车辆运动。您可以通过车辆ID和/或日期对其进行索引。

有一件事你一定要避免,那就是在文档中有一个无界数组。

{_id: ObjectID,VIN: String,pastLocations:{...unbounded数组...}}

当mongodb为新的车辆条目分配空间时,它将使用现有车辆大小的平均值来确定要分配多少磁盘空间。车辆条目的大小差异很大(有些比其他条目移动得更多,或者更新,等等)将对性能产生负面影响,并导致更多的页面错误。

这里的关键是你要尽量避免页面错误。将50条车辆历史记录(如果它们仅仅是GPS坐标)保存为一个子文档数组并不是很大。保留一整年可能超过1MB的历史记录将是一件很大的事情(嘿),并且在访问不同的车辆时总是会导致页面错误。

票数 2
EN

Stack Overflow用户

发布于 2014-11-15 23:59:24

在几个月的时间里,我在MongoDB中加载了20 GB+的大量数据(2014年8月部署了最新的稳定版本)。我注意到Windows上的数据库损坏了(使用高性能存储-光纤通道上的iSCI ),所以MongoDB服务只是停止了,无法启动。我仍然可以通过达到高数据负载来重现这个问题。我不推荐将MongoDB用于任何生产部署,我希望您能找到更好的DBMS。

票数 1
EN

Stack Overflow用户

发布于 2015-01-02 18:50:45

由于最新版本的wiredtiger集成,mongodb的性能应该会变得更好。(还不稳定:http://blog.mongodb.org/post/102461818738/announcing-mongodb-2-8-0-rc0-release-candidate-and)

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

https://stackoverflow.com/questions/26892913

复制
相关文章

相似问题

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