如何解决neo4j 中的顺序事件建模
我们的内部 OLTP 系统会生成表示由员工触发的事件的顺序数据。
让我们假设以下示例数据:
活动 | 日期 | 上一状态 | 新状态 | 州名 | 员工 |
---|---|---|---|---|---|
创建 | 2020-10-01 | NULL | 0001 | 0001 的描述 | 乔安娜 |
改变 | 2020-10-02 | 0001 | 0002 | 0002 的描述 | 卡洛斯 |
改变 | 2020-10-03 | 0002 | 0003 | 0003 的描述 | 乔 |
改变 | 2020-10-04 | 0003 | 0002 | 0002 的描述 | 乔 |
改变 | 2020-10-05 | 0002 | 0003 | 0003 的描述 | 玛丽亚 |
改变 | 2020-10-06 | 0003 | 0004 | 0004 的描述 | 玛丽亚 |
更改可以在链中来回传递。
我想回答who did what and when ?
、what is the common sequencies ?
、is there any change of state that is not supposed to be ?
等问题
我尝试像这样对数据建模:
CREATE
(`0001`: Status {id:"0001",name:"Desc for 0001"}),(`0002`: Status {id:"0002",name:"Desc for 0002"}),(`0003`: Status {id:"0003",name:"Desc for 0003"}),(`0004`: Status {id:"0004",name:"Desc for 0004"}),(joana: Person {name:"Joana"}),(carlos: Person {name:"Carlos"}),(joe: Person {name:"Joe"}),(maria: Person {name:"Maria"}),(joana)-[:CREATE {date: "2020-10-01"}]->(`0001`),(carlos)-[:CHANGE {date: "2020-10-02"} ]->(`0002`),(`0001`)-[:NEXT {date: "2020-10-02"}]->(`0002`),(joe)-[:CHANGE {date: "2020-10-03"} ]->(`0003`),(`0002`)-[:NEXT {date: "2020-10-03"}]->(`0003`),(joe)-[:CHANGE {date: "2020-10-04"} ]->(`0002`),(`0003`)-[:NEXT {date: "2020-10-04"}]->(`0002`),(maria)-[:CHANGE {date: "2020-10-05"} ]->(`0003`),(`0002`)-[:NEXT {date: "2020-10-05"}]->(`0003`),(maria)-[:CHANGE {date: "2020-10-06"} ]->(`0004`),(`0003`)-[:NEXT {date: "2020-10-06"}]->(`0004`)
但我不确定这一点,因为这是我第一次处理这个问题。
而且我想我应该使用 MERGE 而不是 CREATE,以重用 Status 节点(它们是共享的)并为每个新更改创建新关系。
满足这种需求的最佳模型是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。