保持数据模型同步(MySQL和Neo4j)

时间:2016-12-18 02:07:04

标签: domain-driven-design event-sourcing

昨天我看了Greg Young撰写的关于Polyglot Data的精彩演讲https://www.youtube.com/watch?v=hv2dKtPq0ME&t=24m54s

虽然我全心全意地同意关键点,但并非一切都是明确的实施明智。 他在视频的给定部分推动的想法是客户必须保持自己的状态,这是合理的但是这意味着应该有一个"主人" MySQL中的记录然后会以事件的形式传播到Neo4j?

那样我们必须在SQL中维护一个图形结构,不是吗? >。<

1 个答案:

答案 0 :(得分:1)

  

他在视频的给定部分推动的想法是客户端必须维护它自己的状态,这是合理的,但这是否意味着MySQL中应该有一个“主”记录,然后传播到Neo4j以事件的形式出现?

简答:是 - 客户端处理器跟踪自己的读取位置,并询问记录簿是否有更新。它会将这些更新转换为您的Neo4j实例的更改,并应用这些更改。

理论上,您并不真正需要以事件形式提取的更新 - 整个记录簿的快照都可以使用;但是使用更改流可以让您处理更小的信息块而不必担心您尚未阅读的内容会改变您目前所看到的内容的含义。

  

这意味着我们必须在SQL中维护一个图形结构,不是吗?

不是图形结构,不是 - 只是用于生成结构的所有状态。读取模型是一种视图 - 它可以忽略不相关的状态,它可以将相关状态转换为更合适的数据结构,但它不应包括记录簿中尚未表示的任何状态。