我正在尝试找出哪个数据库更适合在我的情况下存储 JSON 类型数据。假设我在某个时候有这些数据:
[
{
"parent_name": "A",
"versions": [
{
"version": "1.1",
"dependencies": [
{
"dep_name": "B",
"version": "5.2"
},
{
"dep_name": "C",
"version": "9.7"
}
]
}
]
}
]
一次更新后,我得到了这样的信息:
[
{
"parent_name": "A",
"versions": [
{
"version": "1.1",
"dependencies": [
{
"dep_name": "B",
"version": "5.2"
},
{
"dep_name": "C",
"version": "9.7"
}
]
},
{
"version": "1.2",
"dependencies": [
{
"dep_name": "D",
"version": "3.9"
}
]
}
]
}
]
又一个:
[
{
"parent_name": "A",
"versions": [
{
"version": "1.1",
"dependencies": [
{
"dep_name": "B",
"version": "5.2"
},
{
"dep_name": "C",
"version": "9.7"
}
]
},
{
"version": "1.2",
"dependencies": [
{
"dep_name": "D",
"version": "3.9"
},
{
"dep_name": "E",
"version": "20.8"
}
]
}
]
}
]
也许又一个:
[
{
"parent_name": "A",
"versions": [
{
"version": "1.1",
"dependencies": [
{
"dep_name": "B",
"version": "5.2"
},
{
"dep_name": "C",
"version": "9.7"
}
]
},
{
"version": "1.2",
"dependencies": [
{
"dep_name": "D",
"version": "3.9"
},
{
"dep_name": "E",
"version": "20.8"
}
]
}
]
},
{
"parent_name": "X",
"versions": [
{
"version": "0.2",
"dependencies": [
{
"dep_name": "A",
"version": "1.2"
}
]
}
]
}
]
我正在用 Python 编写脚本。我很困惑对于这种特定情况应该选择 SQL 还是 NoSQL 类型数据库。你能告诉我你的想法吗?
好吧,事情是这样的,如果您将所有数据都以 JSON 格式保持非规范化,那么无论您选择哪种类型的数据库,查询数据都将效率低下,并且需要更多的工作来管理。
即使在 NoSQL 数据库中,您也需要主动将数据规范化为它们自己的集合和列,以便可以直接查询和管理。当结构发生不可预测且频繁地超出您的管理能力时,NoSQL 数据库非常有用。
但您的 JSON 数据看起来结构相当良好。我看到两个对象,它们是 SQL 数据库中的两个表:
Versions
和Dependencies
。之间似乎存在一对多关系Versions
,Dependencies
您可以使用外键正式定义该关系。Parents
如果有更多关于它们的信息而不是当前显示的信息,您甚至可能有一个表的情况,否则它ParentName
可能只是表中的一列Versions
。因此,我推荐一种主流的现代 SQL 数据库。您应该选择 SQL 数据库,因为它很容易使用关系,并且可以使用关系轻松获取当前版本记录的依赖关系