代码之家  ›  专栏  ›  技术社区  ›  Simiil

lagom持续读边与模型演化

  •  0
  • Simiil  · 技术社区  · 7 年前

    为了学习lagom,我创建了一个简单的应用程序,其中包含一些简单的持久实体和一个持久读取端(根据官方文档,使用cassandra)

    官方文件包含 section about model evolution ,描述如何更改模型。然而,在阅读方面却没有提到进化论。

    假设我有一个实体 Item ,带有 ID 和A name ,读取端创建一个类似于 CREATE TABLE IF NOT EXISTS items (id TEXT, name TEXT, PRIMARY KEY (id))

    我现在要更改项目以包含说明。对于持久化实体来说,这是微不足道的,但是读取端也必须更改。

    我可以看到实现这一目标的几种方法:

    1. 使用模型演化工具,如Liquibase或 play evolutions 更改读取的副表。
    2. 以某种方式包括 update table 陈述 createTables 迁移模型的
    3. 创建包含附加信息的附加表,并保留旧表而不进行修改

    哪种方法最合适?有更好的吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   erip Jigar Trivedi    7 年前

    读取端的要点是将服务中事件流中实体状态更改的视图具体化。在这方面,作为服务控制器,您可以决定哪些内容对您的订户很重要。这可以通过创建具有反损坏层(或acl)的读取端来处理。

    通常,您的订阅者将订阅api事件,这些事件不会经历任何变化。你的内部事件(或impl事件) 可能需要改进;因此,应该从impl转换到api。

    这就是为什么在设计之前仔细考虑你的域名是非常重要的:你真的需要确定订户需要知道什么。在描述的情况下,我觉得订户不太可能需要(或想要!)知道这件事。

    推荐文章