我想使用MongoDB的存储时间序列数据,并认为这将让事情变得更合理,以保持代表日期时间一个唯一索引字段。所以,问题是,我真的能与我自己的时间戳更换自动_id
创造,会有什么缺点?使用时间戳作为mongodb _id?
回答
我真的可以用自己的时间戳替换自动创建的_id吗?
是的,你可以。
会有什么缺点吗?
之一是,你必须为它工作,而内置的_id是,很好,内置的。 另外一个是,你要负责确保您的_id确实是独一无二的。根据您的数据频率和您使用的时间戳种类,这可能很简单,也可能不很简单。
我不是说这不是一个好主意。优点很明显,但是,有缺点。
kool,是否有无论如何我可以让mongo拒绝任何没有_id字段的插入(或者没有有效的时间戳,不管那可能?) – xcorat 2013-05-08 19:43:04
不是我知道的 – shx2 2013-05-08 19:47:47
@xcorat - 很多MongoDB驱动程序自动填充该字段,如果它是空的。某些驱动程序,如C#驱动器,具有在一个发生器或检验器插入对[示例]的方法(http://docs.mongodb.org/ecosystem/tutorial/serialize-documents-with-the-csharp-driver/#选择-AN-idgenerator使用的换一个-ID-场或属性) – WiredPrairie 2013-05-08 20:14:32
您绝对可以使用自己的时间戳填充_id
字段。事情看出来的是:
_id
是唯一索引,那么你就必须确保没有2个文件共享的时间戳。如果你不能保证这一点,那么它将无法工作。- 如果您要分割此集合,则可能需要避免将时间戳用作分片键。如果你总是与当前时间戳写入数据点,那么你会发现所有的写操作会去一个单一的碎片,而不是在碎片分布均匀。
thx。唯一ID不是问题,我可以使用upsert插入更多字段。对于分片,不会自动生成_id有相同的问题呢?它使用的时间戳太对了? – xcorat 2013-05-08 21:48:47
是的,autogenerated _id会有同样的问题。在2.4中,您可以使用_id上的散列索引作为分片键来避免分配不均的问题。 – 2013-05-08 22:06:36
- 1. MongoDB使用时间戳作为密钥进行版本控制
- 2. $组和时间戳$ sort mongodb
- 3. Doctrine2的MongoDB和时间戳
- 4. 使用时间戳作为正常时
- 5. 使用node.js的时间戳mongodb
- 6. 使用阳历作为时间戳
- 7. 熊猫:使用Unix时间戳时间戳作为日期时间索引
- 8. Mongodb时间戳,以毫秒为单位
- 9. 在mongodb中使用UNIX时间戳Group By Hour
- 10. 格式化MongoDB时间戳
- 11. _id与_id MongoDB中
- 12. MongoDB的$查找与_id作为PHP
- 13. MongoDB是一个好主意,使用_id作为实体ID
- 14. Nodejs,mongodb - 使用$ nin或$ in作为对象ID或_id
- 15. 时间戳行为不起作用
- 16. 如何从postgres获取时间戳作为时间戳?
- 17. 当使用StringObjectIdGenerator时,MongoDB C#不会为_id/ObjectId生成值
- 18. 时间戳为
- 19. 使用相同的更新时间戳排序MongoDB文档?
- 20. PHPCassa - 使用uuid时间戳作为密钥时无法插入
- 21. Mongodb - geospacial _id?
- 22. Java MongoDB 3.0+时间戳查询
- 23. 批量更新MongoDB时间戳
- 24. Symfony 2 StofDoctrineExtensionBundle时间戳与odm(MongoDB)
- 25. 使用时间戳计算时间
- 26. 如何使用mongodb _id查找记录
- 27. onEdit时间戳为特定工作表
- 28. 作为数字存储时间戳Mongoid
- 29. Oracle使用UNIX时间戳
- 30. 故障使用时间戳
你的时间序列频率是多少? – shx2 2013-05-08 19:27:05
〜100毫秒 – xcorat 2013-05-08 19:32:15