json - JSON文档数据库中的键成本(mongodb,elasticsearch)

标签 json mongodb elasticsearch bigdata database

我想知道是否有人对诸如mongodb或elasticsearch之类的文档存储数据库中的JSON键大小具有速度或优化效果方面的经验。

例如:我有2个文档

doc1: { keeeeeey1: 'abc', keeeeeeey2: 'xyz')

doc2: { k1: 'abc', k2: 'xyz')

假设我有1000万条记录,那么以doc1格式存储数据意味着比在doc2中存储更多的db文件大小。

除此之外,在速度,RAM或任何其他优化方面是否会带来不利或负面影响?

最佳答案

您正确地注意到文档将具有不同的大小。因此,如果您决定采用第二种模式,则每个文档至少要保存15 bytes(类似文档为60%)。最终,您的140MB记录将以10 million之类的形式出现。这将为您带来以下优势:

  • HDD节省。 唯一的问题是,查看当前硬盘的价格几乎没有用。
  • 节省内存。 与硬盘相比,这对于索引编制很有用。在mongodb的indexes should fit in RAM to achieve a good performance工作集中。因此,如果您在这两个字段上都有索引,则不仅可以保存HDD空间的140MB,还可以保存潜在RAM空间的140MB(实际上是值得注意的)。
  • I / O 。由于输入/输出系统的限制,很多瓶颈都会发生(从磁盘读取/写入的速度受到限制)。对于您的文档,这意味着您可以使用模式2每1秒读写一次twice as many documents
  • 网络。在许多情况下,网络甚至比IO还要慢,并且,如果您的DB服务器位于不同的计算机上,则您的应用程序服务器的数据必须通过电线发送。您还可以发送两倍的数据。

  • 在介绍了优点之后,我必须告诉您使用小键的缺点:
  • 数据库的可读性。 当您执行db.coll.findOne()并看到{_id: 1, t: 13423, a: 3, b:0.2}时,很难理解确切存储在此处的内容。
  • 与应用程序的可读性与数据库相似,但至少在这里您可以找到解决方案。通过将currentDate转换为cprice转换为p的映射逻辑,您可以编写干净的代码并具有简短的模式。
  • 关于json - JSON文档数据库中的键成本(mongodb,elasticsearch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28492785/

    相关文章:

    node.js - 使用 Mongoose 更新许多内容时出现未定义

    c# - Match 和 Match_phrase 在具有相同查询字符串的多个字段上 - Elastic Search(Nest)

    java - 如何指定 JSON 文件作为 JasperStarter 的数据源?

    java - 如何使用索引提示选项查询

    以 Mongodb 作为后端的 Android App 和 Node.js (express framework)

    jdbc - Elastic Search JDBC River 插件 SQL Server 集成安全性

    ruby-on-rails - Elasticsearch SocketError (getaddrinfo : Name or service not known)

    javascript - 如何在 MarkLogic 中的 JSON 文档中插入行 [更新]

    javascript - Golang 后端到 javascript JSON Parse

    arrays - 从 mongodb 中删除重复的数组值