我正在开发一个社交游戏的原型,我使用mongodb作为存储引擎。我想知道这是不是一个很好的方式来存储地图瓦片和相关的瓦片(州/类型等)在一个mongo集合。
地图:{ 0:{类型:草,状态:收获,last_action_date : 2012-01-12 } 1:{ ... } ....44:{ ...} }
也许平面文件应该更好?我不知道在mongo这样的数据库中存储瓦片地图的最佳实践。
这样,我就可以通过一个请求来获取所有地图瓦片,以及与瓦片关联的所有状态……(每个瓦片用一个数字索引,该数字允许确定瓦片的X/Y坐标)
有人在mongodb中使用这种系统吗?
谢谢!
发布于 2012-07-25 01:57:59
Mongo中的数据结构应该由您需要如何写入、访问和/或修改该数据来确定。也许将整个映射放在单个文档中作为双数组的子文档是有意义的(只适用于小映射)。也许将地图的每个块存储为单个文档更有意义(这似乎更有可能)。
如果您将tiles存储为单独的文档,则为它们提供一个公共键,如" map:'map1'“,这样您就可以一次提取整个地图。同时,将瓦片存储为单独的文档的强大之处在于,您不需要一次加载整个地图。取而代之的是,为每个块提供一个公共键,比如"map1“(这样您就可以在同一个集合中存储多个地图),包括一个x和y坐标(假设是2d空间),并在这三个字段上创建一个唯一的索引。有了它,你就可以快速有效地从内存中拉出当前计算或演示所不需要的那些磁贴,只需要在任何时候使用它们。
https://stackoverflow.com/questions/11633012
复制相似问题