我有 json 格式的对象依赖关系的分层谱系。 json 本身的结构非常简单,但深度可变。我附上了一张图片来显示树结构。 json 的深度可能是可变的,因为它是依赖项的对象沿袭,可能是 n 级深。
谱系的结构是从仪表板>>多维数据集/报告>>报告对象>>架构对象>>表/列开始,但仪表板可以有多个多维数据集和报告。多维数据集本身可以包含多个报告,因此可能存在循环依赖性。但是,所有谱系的开始(根)都是仪表板,并且以表/列结束。有些可能有 5 个级别,有些可能有 20+。
我想了解存储这些数据的最佳方式是什么,以及是否有任何以结构化格式存储数据的建议或最佳实践。最终目标是拥有一个标准数据模型来加载此类数据集,并最终将它们以图形方式表示为组织图或树形图以显示沿袭。因此 json 结构应该能够解析以创建深度树/网络图。
{
"id": "String",
"name": "String",
"type": Integer,
"subtype": Integer,
"location": "String",
"dependents": {
"id": "String",
"name": "String",
"type": Integer,
"subtype": Integer,
"location": "String",
"dependents": {...}
}
}
您可以使用递归结构,其中每个节点可以包含
dependents
,其结构与父节点相同。这是用 JSON 表示树的常见做法。
对于存储和处理,您可以使用NoSQL数据库,例如MongoDB,它原生处理JSON,或者使用支持JSON的关系数据库,例如PostgreSQL。
确保每个节点都有唯一的标识符,并为每个级别使用标准键(例如,
id
、name
、type
、subtype
、location
、dependents
)您可以更新结构以包含用于管理循环依赖项的参考系统。例如:
{
"id": "dashboard1",
"name": "Main Dashboard",
"type": 1,
"subtype": 1001,
"location": "Location1",
"dependents": [
{
"id_ref": "cube1"
},
{
"id_ref": "report1"
}
]
},
{
"id": "cube1",
"name": "Sales Cube",
"type": 2,
"subtype": 1024,
"location": "Location2",
"dependents": [
{
"id_ref": "report1"
}
]
},
{
"id": "report1",
"name": "Annual Sales Report",
"type": 3,
"subtype": 1032,
"location": "Location3",
"dependents": [
{
"id_ref": "table1"
}
]
}
对于每个引用另一个实体的
dependent
,id_ref
用于链接到具有该 id
的实际实体。