我只有一个 个大型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",
.
.
.
.
我需要支持以下操作:
查询元素应返回所有子元素,例如查询AssetID
应该返回
"AssetID": {
"IDType": "URI",
"IDSpec": "http://acplt.org/Assets/Motor_M23"
}
更新元素的值。
AssetID
的{{1}}子元素。我考虑了以下方法:
有没有一个好的数据库可以从大型JSON加载数据并处理我的操作?
答案 0 :(得分:2)
如果仅使用JSON,则应该使用document oriented database,因为它可以省去与sql相关的事情。
MongoDB是不错的选择,支持many drivers并且可以处理tree structures(尽管我不确定自动创建)
CRUD操作很简单,涵盖了多种情况。
对于繁忙服务器上的非常大的数据集,您应该使用XFS文件系统和WiredTiger存储引擎,因为这样做可以提高性能。
它得到了很好的支持,而且学习曲线并不是很多。 (我来自Pure SQL,没有太多麻烦)
您也可以选择MariaDB或MySQL,它们也都支持JSON,尽管我都没有经验,在MySQL的情况下,我认为这只是一个“螺栓”,面对即将到来的要求,必须添加它。
答案 1 :(得分:0)
这是选择正确数据库的典型体系结构问题,其中您必须考虑许多重要方面,例如HA,弹性,复制,分片,工具支持,成熟度,许可,备份和还原等。
MongoDB和Couchbase DB是两个最受欢迎且使用最广泛的文档数据库。选择一个没有直接答案,因为您必须进行权衡分析。我可以分享我的两分钱,希望这可以帮助您做出正确的决定。
可以考虑使用MongoDB数据库或Couchbase NoSQL文档数据库,因为json是这两种数据库中的头等公民,您将获得使用字段执行操作的不错选择。
还有更多需要考虑的方面,下面的链接将带您正确的方向。
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数组。它将满足您的要求。