哪个是适合存储大型JSON的数据库?

时间:2018-09-04 11:44:35

标签: json database storing-information

我只有一个 个大型JSON文件。例如,

{   
    "Name": "Motor_M23",
    "AASID": {
        "IDType": "URI",
        "IDSpec": "http://acplt.org/AAS/Motor_M23"
    },
    "AssetID": {
        "IDType": "URI",
        "IDSpec": "http://acplt.org/Assets/Motor_M23"
    },
    "Header": {
        "PropertyValueStatementContainers": [
            {
                "Name": "Config",
                        .
                        .
                        .
                        .

我需要支持以下操作:

  1. 查询元素应返回所有子元素,例如查询AssetID应该返回

    "AssetID": {
        "IDType": "URI",
        "IDSpec": "http://acplt.org/Assets/Motor_M23"
    }
    
  2. 更新元素的值。

  3. 删除元素。
  4. 在层次结构级别之间移动元素,例如使AssetID的{​​{1}}子元素。

我考虑了以下方法:

  1. 图形数据库:我开始阅读有关Neo4J的文章。但是,它不能从JSON 智能地创建图。必须指定节点类型及其层次顺序。
  2. ElasticSearch :它可以通过将JSON视为文本而不是有效的解决方案来工作。
  3. Postgres :它支持查询JSON对象,但更新,删除效率不高。

有没有一个好的数据库可以从大型JSON加载数据并处理我的操作?

3 个答案:

答案 0 :(得分:2)

如果仅使用JSON,则应该使用document oriented database,因为它可以省去与sql相关的事情。

MongoDB是不错的选择,支持many drivers并且可以处理tree structures(尽管我不确定自动创建)

CRUD操作很简单,涵盖了多种情况。

对于繁忙服务器上的非常大的数据集,您应该使用XFS文件系统和WiredTiger存储引擎,因为这样做可以提高性能。

它得到了很好的支持,而且学习曲线并不是很多。 (我来自Pure SQL,没有太多麻烦)

您也可以选择MariaDBMySQL,它们也都支持JSON,尽管我都没有经验,在MySQL的情况下,我认为这只是一个“螺栓”,面对即将到来的要求,必须添加它。

答案 1 :(得分:0)

这是选择正确数据库的典型体系结构问题,其中您必须考虑许多重要方面,例如HA,弹性,复制,分片,工具支持,成熟度,许可,备份和还原等。

MongoDB和Couchbase DB是两个最受欢迎且使用最广泛的文档数据库。选择一个没有直接答案,因为您必须进行权衡分析。我可以分享我的两分钱,希望这可以帮助您做出正确的决定。

可以考虑使用MongoDB数据库或Couchbase NoSQL文档数据库,因为json是这两种数据库中的头等公民,您将获得使用字段执行操作的不错选择。

  1. MongoDB(CAP之外的CP支持)更喜欢一致性而不是可用性,而“ Couchbase”(CAP之外的AP)则是高可用性数据库。
  2. MongoDB集群适用于主/从体系结构,而沙发基集群适用于对等分发体系结构。

还有更多需要考虑的方面,下面的链接将带您正确的方向。

https://suyati.com/blog/mongodb-vs-couchbase/

https://www.couchbase.com/comparing-couchbase-vs-mongodb

因为在您的特殊情况下,您强调了只有一个大文件,所以也可以将单节点考虑基于IMDG(内存数据网格,例如Apache Ignite)的解决方案设置。

答案 2 :(得分:0)

Couchbase的类似SQL的N1QL可以进行深度JSON遍历和操纵。它也可以在查询时索引嵌套的数组元素和UNNEST数组。它将满足您的要求。