我在某个地方听说,与其他dbms的散列索引不同,MongoDB的散列索引在内部使用b树,因此与普通的升序索引相比没有性能优势。我很震惊,但很快我注意到那篇文章中的MongoDB版本是3.4。
2w2cym1i1#
我明白你的困惑来自哪里,但在回答你的问题之前,有一件更重要的事情值得注意。MongoDB中的散列索引被添加用于特定目的,在使用分片时有效地跨分片分发数据。这就是他们使用“B树”结构的原因,因此他们可以有效地将树枝用作碎片。有了这个问题,让我们来回答你的问题:现在Mongodb版本6仍然是这样吗??还是增强了?是的,这将保持这种情况,因为它们是以这种方式设计的(如上所述)。如何证明哈希索引在内部是如何工作的?不知道如何回答这个问题,MongoDB是开源的,如果你愿意,你可以自己深入研究源代码。你可以相信我:)我是否必须使用其他存储(如redis)以获得更好的性能?这是一个非常宽泛的问题,一般来说,像Redis这样的内存数据库会比“标准”数据库给予更好的性能,因为它们有网络开销。然而,在内存中,数据库有自己的问题,“标准”数据库没有。此外,它们通常具有较少的功能,因为它们“更简单”。如果我们对您试图解决的问题、您设计的架构和数据的规模有一个正确的描述,那么就可以更容易地建议哪个数据库适合您的需求。
1条答案
按热度按时间2w2cym1i1#
我明白你的困惑来自哪里,但在回答你的问题之前,有一件更重要的事情值得注意。
MongoDB中的散列索引被添加用于特定目的,在使用分片时有效地跨分片分发数据。这就是他们使用“B树”结构的原因,因此他们可以有效地将树枝用作碎片。
有了这个问题,让我们来回答你的问题:
现在Mongodb版本6仍然是这样吗??还是增强了?
是的,这将保持这种情况,因为它们是以这种方式设计的(如上所述)。
如何证明哈希索引在内部是如何工作的?
不知道如何回答这个问题,MongoDB是开源的,如果你愿意,你可以自己深入研究源代码。你可以相信我:)
我是否必须使用其他存储(如redis)以获得更好的性能?
这是一个非常宽泛的问题,一般来说,像Redis这样的内存数据库会比“标准”数据库给予更好的性能,因为它们有网络开销。然而,在内存中,数据库有自己的问题,“标准”数据库没有。
此外,它们通常具有较少的功能,因为它们“更简单”。
如果我们对您试图解决的问题、您设计的架构和数据的规模有一个正确的描述,那么就可以更容易地建议哪个数据库适合您的需求。