【发布时间】:2019-07-25 19:54:05
【问题描述】:
为了学习 lagom,我创建了一个简单的应用程序,其中包含一些简单的持久实体和持久读取端(根据官方文档,使用 cassandra)
官方文档包含一个section about model evolution,描述了如何更改模型。但是,在读取方面没有提及进化。
假设我有一个名为Item 的实体,有一个ID 和一个name,并且读取端会创建一个类似CREATE TABLE IF NOT EXISTS items (id TEXT, name TEXT, PRIMARY KEY (id)) 的表
我现在想更改项目以包含描述。这对于持久实体来说是微不足道的,但读取端也必须更改。
我可以看到几种方法来(也许)实现这一目标:
- 使用 liquibase 或play evolutions 等模型演化工具来更改读取边表。
- 以某种方式在
createTables中包含update table语句以迁移模型 - 创建包含附加信息的附加表,并保留旧表而不进行修改
哪种方法最合适?有更好的吗?
【问题讨论】:
-
如果不需要描述,读取端不需要改变。
-
是的,当然,这只是一个例子来说明我想要做什么,它正在改变读取端
-
重点是您不应该更改读取端。如果您的 API 发生变化,那就是服务的新版本。
-
事实上,这正是微服务存在的原因:如果您的数据库架构不断发展,任何人都不应受到干扰。
-
添加描述肯定会改变 API 并成为服务的新版本。它为项目引入了一项新功能
标签: persistence cqrs lagom