我的文档长这样:
{"url": "http://some-random-url.com/path/to/article"
"likes": 10
}
该url需要是唯一的。在
url
上创建一个唯一索引是个好主意吗?由于URL可以很长,这会导致更大的索引大小、更多的内存占用和更慢的整体性能。从url生成哈希值(我考虑使用 murmur3)并在其上创建唯一索引代替是否是个好注意。我假设碰撞的机会非常低,如此描述:https://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed
有人看到这种方法的任何缺点吗?新文档将如下所示(索引名为u_hash
而不是url
):
{"url": "http://some-random-url.com/path/to/article"
"likes": 10
"u_hash": "<murmur3 hash of url>"
}
更新
我不会在url
上进行正则表达式查询。将只进行完整的URL查找。我更关心此查找的性能,因为我相信它也将被mongodb内部用于维护唯一索引,从而影响写入性能(+较长的索引)。此外,我的理解是,mongobd对于长文本索引的表现不佳,因为它并非为此目的而设计。虽然可能取决于该索引是否适合RAM。有什么建议吗?