我有点搞不懂json数据是如何内部组织的(动态模式对象的物理存储结构)。
db.some_collection.insert({x:1,y:4,z:34})
db.some_collection.insert({p:1,q:5,z:"nothing"})让我们假设如果我们在'x‘和'q’上创建索引,那么json数据是如何在内部组织/存储的。
寻找重要的建议
发布于 2015-11-05 23:42:18
您的问题非常广泛,因为MongoDB 3.0+中有多个存储引擎(以及存储引擎API)。数据和索引的物理布局将取决于存储引擎实现,但听起来您的一般问题是如何存储和索引具有不同架构的文档。
从概念上讲,每个文档都存储在连续二进制记录分配中,根据存储引擎的不同,该二进制记录分配可以包括填充。服务器端文档表示采用BSON (http://bsonspec.org),这是一种类似于二进制JSON的格式,其类型系统比JSON更丰富。BSON记录的大小可能不同;索引(通常是B树)指向索引记录的当前位置。
MongoDB (截至3.2)不维护实际BSON数据之外的任何架构信息。每个BSON文档包括所有的字段名以及值。这种动态模式(或“读取上的模式”)方法允许对文档进行解释,因为它们是从存储中读取的,而无需参考或更新中心模式目录。
有关更多信息,请参见:
https://dba.stackexchange.com/questions/120184
复制相似问题