我知道返回的JSON存储的内容不同(例如,属性名称可能不会以相同的顺序返回)。
但是,Couchbase如何将JSON对象存储在磁盘中? 是否需要使用模式的任何优点或将其写为简单的纯文本?
如果是巨大的JSON,压缩它并存储为二进制文件会有任何缺点吗? (除了丢失查询容量等)。
答案 0 :(得分:2)
除了Llama先生所关联的维基页面,这很棒,而且我不打算重复听到,这里是你问题的其他答案。
如果您预先压缩应用中的文档,它们当然会更快地通过线路移动,如果压缩则更快地通过队列。缺点是你指出的那个,你失去了任何查询能力。没有索引,没有视图,没有N1QL。它只是一个二进制对象。如果你的应用程序正在使用一个很好的密钥模式,并且将按键遍历每个对象,并且永远不会查询,那就去吧! Couchbase会做得很好。
所有这一切,Couchbase确实对磁盘上的文件进行了快速压缩。这显然节省了磁盘空间,但无法帮助通过电线或飞行。
请注意,Couchbase正在开发一个名为ForestDB的新持久性引擎,它将取代当前的Couchstore。 https://github.com/couchbase/forestdb
另一方面,如果你有大量的JSON,那么可能值得考虑对它们进行标准化。显然,这对您的应用程序有意义,但如果可以,那么您只需要在需要时提取所需信息的一部分,并且可以优化使用Couchbase的托管缓存。例如,在用户配置文件存储中,我可能一直需要用户的身份验证信息,并且在自己的小文档中,我希望它始终在托管缓存中,但我很少需要用户的安全问题,如果他们不在托管缓存中,Couchbase必须从磁盘中获取它们,这很重要。但如果它们都在一个大型用户配置文件中,我将不得不获取整个对象,包括可能需要的大量数据。使用适当的标准化密钥模式,您可以获得所需的数据或使用批量获取并获取所有文档。