M.J*_*.J. 8 java dataflow data-lineage
当我需要捕获从一个API到另一个API的数据流时,我有一个用例.例如,我的代码使用hibernate从数据库读取数据,在数据处理期间,我将一个转换POJO为另一个并执行更多处理,然后最终转换为最终结果hibernate对象.简而言之喜欢的东西POJO1要POJO2来POJO3.
在Java中有一种方法可以推断POJO3的属性是从POJO1的这个属性中产生/转换的.我想看看我可以捕获从一个模型到另一个模型的数据流的东西.这个工具可以是编译时也可以是运行时,我对两者都没问题.
我正在寻找一种可以与代码并行运行的工具,并在每次运行的基础上提供数据沿袭细节.
现在我将称它们为“States”,而不是“Pojos”!您有一个起始位置,可以通过不同的状态迭代和转换模型。最后,您将获得一个最终状态,您希望将其保留到数据库中
stream(A).map(P1).map(P2).map(P3)....-> set of B
Run Code Online (Sandbox Code Playgroud)
如果您使用称为事件溯源的技术,您可以推断出是的。那么这会是什么样子呢?不是直接将 A 映射到状态 P1,将状态 P1 映射到状态 P2,而是将所有必要且足以将 A 映射到 P1、将 P1 映射到 P2 的操作排队,依此类推...如果您想随时恢复 P1 或 P2时间,它只是排队操作的产物。只要您尚未更改数据库状态,您就可以随时向前或向后倒回。P1、P2、P3可以作为快照。
这样,您将能够重建该属性的精确映射流程。您将如何细粒度地对您的操作进行排队,是否要像 attribute level 一样细,或更细粒度,这取决于您。
这是一篇很好的文章,描述了事件溯源及其工作原理:https://kickstarter.engineering/event-commerce-made-simple-4a2625113224
更新:
我可以想到另一种技术来捕获属性变化。您可以装备您的 Pojo-s,它与 Hibernate 用于增强 Pojos 的技术几乎相同,并且与用于跟踪的技术配置文件相同。然后,您可以捕获 Pojo1、Pojo2、Pojo3 上的每个 setter 调用并做出反应。但不确定我是否会走那条路......
这是有关字节码检测的一些详细读物,如果https://www.cs.helsinki.fi/u/pohjalai/k05/okk/seminar/Aarniala-instrumenting.pdf
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |