我想使用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