主流面向文档的数据库系统中,有哪些会在其JSON文档中压缩键名?

4
我希望使用面向文档的数据库存储大量JSON文档,这些文档具有非常相似的模式(虽然不完全相同)。
一个示例文档:
{
     "firstName": "John",
     "lastName": "Smith",
     "age": 25,
}

这些系统(如CouchDB等)是否使用任何形式的压缩来避免反复存储键字符串(例如“firstName”)?

我的动机是在有数百万个文档,特别是当一些重复的键比如“firstName”要长得多时,尽量减少磁盘上数据库的大小。

谢谢您的想法!

W


编辑:经过深思熟虑,我认为我所询问的是一种更普遍的压缩系统的特定情况,在这种情况下,一个压缩字典在文档存储中被(部分?)共享,并可能随着时间的推移而建立。这将处理不仅仅是JSON键的压缩。
很有趣!

目前我不知道有哪些文档存储支持压缩(并不意味着没有)。MongoDB上有一个JIRA问题跟进支持此功能:http://jira.mongodb.org/browse/SERVER-164?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel - Spike Gronim
Mongo Jira 正在讨论通用的 gzip - 虽然如果压缩字典可以被建立并跨多个带有存储的文档使用,那么它可能是相同的。 - wodow
1个回答

2
我建议您增加一个“键映射”文档,其中存储键和它们的快捷方式...在后端进行映射不应该有太多麻烦...
{
   FirstName: 'a',
   Town: 'b'
}

{ 
  a: 'Peter',
  b: 'Zurich'
}

谢谢,托比,这就是我在思考的。不过,我认为它可以被说成是一个有用的功能,适用于文档存储的许多用途,这使得将其实现在文档存储服务器本身或包装层中更加合理。 - wodow
我同意,但由于在选择nosql时还存在其他考虑因素,我不会将像这样的琐事作为您的首要选择标准。 - Tobi Oetiker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接