MongodDB中自動生成ID的大小爲12 Bytes
,大整數的大小爲8 bytes
。我在運行Ubuntu Server的4臺機器上安裝了mongodb集羣,但我現在只是測試一些東西。只能通過一個服務器來完成插入操作,而這個服務器是一個nodejs服務器,但是可以使用運行全球本地c應用程序的各種機器和nodejs服務器來完成更新和刪除操作。MongoDB自動增量ID
由於我完全控制了插入,使用自動遞增ID不是更好嗎?
- 在1MB的內存中可以保存87381個12字節的ID和131027個8位的 字節ID。
- 它是值得的去自動增量ID和 除了保存內存有沒有好處?
- 性能明智不會比較一個8字節的id比一個12的 字節id,並不會減少大小,如果我做索引?
我怎麼做:
我有這個文件
{id:0 latestId:174845423}
我很少遞增1呢,我的大部分插件是批量插入,這樣的NodeJS服務器修改的文件被插入一個循環中,給每一個遞增的id,在插入操作結束時,我添加我更新最後一個id值的最新id。
您多久會生成一個新ID?意識到在MongoDB中不存在「自動遞增字段」類型,所以您需要使用如下模式:http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/ – WiredPrairie
@WiredPrairie我的日常操作中有98%是讀取和更新,正如我所說的插入只發生在單個nodejs服務器上,所以我可以創建一個具有id字段的文檔,並在插入操作完成時添加到它中,它們是通常批量插入,所以我可以將id添加到要插入的文檔中,並在插入結束時,通過插入文檔的數量來增加id文檔,因此插入操作得到了協調,並且我可以完全控制它們。 – Kanka
If你可以保證Ids是唯一的,並且節點進程永遠不會重複一個Id,你可以使用它。但是,如果節點進程突然死亡......除非將節點進程之外的最後一個值保存,否則將如何重新生成ID? – WiredPrairie