我正在研究使用图形数据库(如 Neo4j - 主要是因为我需要 python 绑定)来对真实物理网络进行建模。但是,要求之一是能够跟踪机器所在位置的历史记录、网络端口的状态等。
在关系数据库中,我可以很容易地创建一个“存档”表,我可以用它来进行历史查询,但是,我已经多次被固定表模式的问题和相当尴尬的左连接所困扰。
有人对如何最好地维护图形数据库中的历史关系和节点属性有任何建议吗?
我正在研究使用图形数据库(如 Neo4j - 主要是因为我需要 python 绑定)来对真实物理网络进行建模。但是,要求之一是能够跟踪机器所在位置的历史记录、网络端口的状态等。
在关系数据库中,我可以很容易地创建一个“存档”表,我可以用它来进行历史查询,但是,我已经多次被固定表模式的问题和相当尴尬的左连接所困扰。
有人对如何最好地维护图形数据库中的历史关系和节点属性有任何建议吗?
根据节点的数量,您可能能够拍摄图网络的快照。然后索引每个节点,以便您可以在网络的每个修订版中查询它。
您还可以尝试对每个节点进行版本控制。每次一个节点或它的一个顶点发生变化时,复制该节点并引用它连接到的每个节点的当前版本。然后将您刚刚修改的节点的版本号向上。
由于 Neo4J 基于文件系统,您可以通过 Git 轻松保存图形数据库的版本。然后在版本之间来回切换以查看图表的情况等。
我知道 Sones 在数据库中提供版本控制。“......将它们置于版本控制之下并管理各种版本......”链接