Json 字典或固定大小的列表用于高效的MongoDB存储

Json 字典或固定大小的列表用于高效的MongoDB存储,json,database,mongodb,storage,bson,Json,Database,Mongodb,Storage,Bson,我已经阅读了BSON相对于JSON的工作原理,但我仍然无法得出以下哪项在MongoDB中存储更有效的结论: 例1: 例2: 当然,不管重复的值是什么,我担心由于重复的字典键(即“f1”、“f2”、“f3”、“f4”),Ex2将占用更少的存储空间,尤其是当数据库中的文档数以百万计时。当然,我认为在EX2中,不同索引的每个数组都有一个没有被直接声明的含义(如在EX1-“F1”…)。首先,您的应用程序需要工作。如果它不提供有用的功能,那么它的速度有多快都无关紧要。假设您正在实现一个真实的项目,这些项目

我已经阅读了BSON相对于JSON的工作原理,但我仍然无法得出以下哪项在MongoDB中存储更有效的结论:

例1:

例2:


当然,不管重复的值是什么,我担心由于重复的字典键(即“f1”、“f2”、“f3”、“f4”),Ex2将占用更少的存储空间,尤其是当数据库中的文档数以百万计时。当然,我认为在EX2中,不同索引的每个数组都有一个没有被直接声明的含义(如在EX1-“F1”…)。

首先,您的应用程序需要工作。如果它不提供有用的功能,那么它的速度有多快都无关紧要。假设您正在实现一个真实的项目,这些项目通常不仅有非平凡的需求,而且随着时间的推移需求也会发生变化。以使应用程序完全不灵活为代价优化数据模型(无论使用何种数据库都很难更改)通常会以项目失败告终

如果需要,可以缩短字段名。例如,Mongoid提供了此功能

“固定大小列表”对于MongoDB来说不是一个有意义的术语。所有数组都可以是任意大小,并且大小在数组中编码。如果使用某些类型,MongoDB的实现与固定行大小的关系数据库不同

正如prasad所说,一旦您开始尝试以任何有意义的方式查询它,您的第二个选项可能会很快变得不可用,但是,如果您使用MongoDB作为只写数据存储,并且您的模式将在项目生命周期内得到修复,当然,如果省略字段名并使用数组,数据将占用更少的磁盘空间,插入速度也会更快


另一方面,如果您想要一个仍然可以查询的廉价批量数据存储,请尝试。

请告诉我如何在
Ex2
中查询任何内容?
[
    { "f1": "smth", "f2": 0.8, "f3": [[1,2],[3,4]], "f4": 0 },
    { "f1": "smth", "f2": 0.8, "f3": [[1,2],[3,4]], "f4": 0 },
    { "f1": "smth", "f2": 0.8, "f3": [[1,2],[3,4]], "f4": 0 }
]
[
    ["smth", "smth", "smth"],
    [0.8,0.8,0.8],
    [[[1,2],[3,4]],[[1,2],[3,4]],[[1,2],[3,4]]],
    [0,0,0]
]