我想知道在諸如Hazelcast之類的鍵值存儲中使用散列(CityHash,Murmur之類)作爲鍵是否是個好主意。我期望在數據庫中擁有大約2,000,000,000條記錄(URL),因此可能會發生衝突。通過散列衝突丟失一些數據並不是非常關鍵,但當然最好避免它們。使用散列作爲鍵值存儲中的ID
一條記錄包含URL,時間戳,狀態碼。主要操作是插入並查找URL是否已存在。
所以,你會建議什麼,給定的速度是相關的:使用
- 一個ID generator,或
- 使用哈希算法像CityHash或雜音,或
- 使用相關的字符串,URL在這種情況下,它本身?
需要存儲的數據的其餘部分是什麼?你需要運行什麼類型的操作?只需插入並檢查重複?或者你是否在計算訪問量或報告URL歷史記錄?我見過的許多鍵值存儲都會在後臺散列處理字符串鍵,包括透明地處理不同字符串之間的散列衝突。因此,在前面添加您自己的散列碼可能會降低性能。 –
感謝您的評論。我爲我的問題添加了一些細節。 – deamon