我是 NoSQL 的新手。我一直有这个问题。众所周知,在 SQL 中,数据存储在表中,除了第一行之外,只有数据。相比之下,NoSQL 将数据存储在 Object 中,其中至少包含一对 key-value。NoSQL 是否将每个文档的所有键重复存储在存储中?如果是这样,我可以肯定SQL在存储效率方面优于NoSQL吗?
这里的 NoSQL,我的意思是 MongoDB。对困惑感到抱歉。
我是 NoSQL 的新手。我一直有这个问题。众所周知,在 SQL 中,数据存储在表中,除了第一行之外,只有数据。相比之下,NoSQL 将数据存储在 Object 中,其中至少包含一对 key-value。NoSQL 是否将每个文档的所有键重复存储在存储中?如果是这样,我可以肯定SQL在存储效率方面优于NoSQL吗?
这里的 NoSQL,我的意思是 MongoDB。对困惑感到抱歉。
我认为您主要要问的是,例如,如果您有 100 万个文档,每个文档有 20 个键(字段),MongoDB 是否还会为您的集合保存 2000 万个字符串以及所有值。
有一个简单的方法来测试它,不知道如何可靠,但你可以用 1 个大键制作 1 个集合,例如保存 100 万个文档,并检查集合的大小
/var/lib/mongodb
我不知道它是如何工作的细节,但我认为压缩会减少密钥的磁盘空间。我猜它会类似于一个 zip 文件,当我们多次存储 1 个单词时,只保存 1 次,即使一个 20MB 的文件也变成了几个 kb。
最好等待更好的答案或在这里询问,那里有人知道MongoDB如何存储数据的所有细节。询问他们关于密钥存储的问题。