我想要在內存中緊湊地存儲數十億條記錄(鍵/值),並且我需要支持的唯一操作是通過查找值它的關鍵。鍵和值都是小字符串。最重要的是如何將壓縮成的數據結構;它應該比簡單的關聯數組更深入地使用鍵的內部結構。例如,應該以某種方式壓縮鍵「apple」,「apply」和「apron」到值「1」,「2」和「3」。我在找什麼數據結構?用於將數十億字典密鑰緊密映射到值的內存數據結構
1
A
回答
3
這聽起來像是你想要一個trie - 它做了你所描述的那種「壓縮」,只存儲一次前綴。
我假設你有足夠的內存來存儲「數十億」的密鑰,當然,你需要在64位系統上才能夠解決如此多的項目。
2
你可以試試Trie。它從關鍵字串本身中形成一個樹形結構。不會有空位置(如在散列圖中)。
1
即使您正在處理的數據是小字符串,您是否確實您確定需要如此多的內存數據?這可能很容易達到千兆字節的內存,並且大多數數據可能不會被頻繁查詢。
一個精心設計的數據庫可能足以滿足您的需求。
相關問題
- 1. 使用AutoMapper將字典映射到列表並存儲它的密鑰
- 2. 將密鑰對值添加到字典
- 3. 存儲數十億整數的數據結構
- 4. 將密鑰映射到自身和另一個密鑰,而不覆蓋密鑰的先前映射
- 5. 用於存儲沒有關聯值的密鑰的數據結構
- 6. 多級密鑰的數據結構
- 7. GroupBy基於密鑰字典
- 8. 校驗密鑰存在於Python字典
- 9. 將路由參數映射到Redux商店的密鑰下
- 10. 映射,通過密鑰的散列/值
- 11. 使用JOLT將值映射到密鑰規格
- 12. 在映射後將值添加到RestKit映射結果字典
- 13. 密鑰是否有散列表映射到內存位置?
- 14. Spark:將HBase行密鑰的RDD映射到值爲
- 15. 如何將ASCII值映射到適當的密鑰代碼?
- 16. JPA2.0映射密鑰沒有存儲
- 17. 映射字典與基於實體的密鑰使用流利Nhibernate
- 18. VIM鍵映射到現有的密鑰
- 19. REP-52005:指定密鑰不存在於密鑰映射文件中
- 20. Vim和密鑰映射
- 21. 加密器和MySQL,將密鑰保存到數據庫/編碼?
- 22. 在數據庫中存儲700萬個密鑰的python字典
- 23. 將數據庫結構映射到nHibernate映射文件
- 24. Python字典,以數學方式將數值添加到現有密鑰值
- 25. 將通用數據結構映射到特定數據結構的模式
- 26. 基於密鑰自動排序對象的數據結構?
- 27. 映射數據結構混淆映射
- 28. 如何將數據字典中的數據映射到datagridview?
- 29. 用於映射相鄰房間的Java內置數據結構
- 30. 使用解密密鑰解密數據