【发布时间】:2015-06-10 16:11:47
【问题描述】:
我想知道在像 Hazelcast 这样的键值存储中使用哈希(CityHash、Murmur 等)作为键是否是个好主意。我预计数据库中有大约 2,000,000,000 条记录 (URL),因此可能会发生冲突。通过哈希冲突丢失一些数据并不是很严重,但当然最好避免它们。
记录包含 URL、时间戳、状态码。主要操作是插入和查找 URL 是否已经存在。
那么,鉴于速度是相关的,你会建议什么:
- 使用ID generator,或
- 使用诸如 CityHash 或 Murmur 之类的哈希算法,或者
- 使用相关字符串,在本例中为 URL 本身?
【问题讨论】:
-
您需要存储的其余数据是什么?您需要运行什么类型的操作?只需插入并检查重复吗?或者您是否在计算访问次数或报告 URL 历史记录?我见过的许多键值存储将在幕后处理带有散列的字符串键,包括透明地处理不同字符串之间的散列冲突。所以在前面添加自己的哈希码可能会降低性能。
-
感谢您的评论。我在我的问题中添加了一些细节。
标签: performance hash hazelcast key-value-store murmurhash