建议以可变深度的 json 格式存储和处理数据以用于组织结构图表示

问题描述 投票:0回答:1

我有 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": {...}
  } 
}
json database treeview visualization
1个回答
0
投票

您可以使用递归结构,其中每个节点可以包含

dependents
,其结构与父节点相同。这是用 JSON 表示树的常见做法。

对于存储和处理,您可以使用NoSQL数据库,例如MongoDB,它原生处理JSON,或者使用支持JSON的关系数据库,例如PostgreSQL

确保每个节点都有唯一的标识符,并为每个级别使用标准键(例如,

id
name
type
subtype
location
dependents

考虑使用图形数据库来进行复杂的依赖关系和查询,例如Neo4j
要以图形方式表示数据,请使用 D3.jsvis.js 等库,它们可以解析 JSON 并创建交互式图表。

您可以更新结构以包含用于管理循环依赖项的参考系统。例如:

{
  "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
的实际实体。
这有助于避免 JSON 结构本身的循环依赖,并使其更易于解析和可视化。

© www.soinside.com 2019 - 2024. All rights reserved.