简短的故事:如何关联不同数据库中的两个实体?在微服务中,每个服务都有自己的数据库,在微服务体系结构中,不同数据库中的实体如何相互关联?
长话短说:我正在编写两个单独但相关的应用程序,比方说一个用于二手车销售商的管理系统以及一个帐户和财务系统。我希望我的应用程序能够彼此独立地工作。
现在,假设车辆交易在管理系统中完成,然后根据最终交易数据,我将在财务系统中生成发票。同样,如果要删除交易,则我也必须删除相应的发票,但要删除相应的发票,我想以某种方式将交易与发票相关联,但是我不能简单地在实体之间建立关系,因为我想要我的应用程序完全独立,这也意味着不同的数据库。还是有办法在不同数据库中的两个表之间建立关系?关联两个不同数据库的表甚至是一个好主意吗?
此外,我想要双向通信,例如,如果交易被编辑,那么其相关发票也将被编辑;如果发票被编辑,则其相关交易也将被编辑,就像微服务一样,我希望两个系统都能够独立运行,彼此并存。
可能的解决方案:我现在能想到的唯一解决方案是拥有一个数据库和两个独立的应用程序层,但是这种设计本身并不好,因为我以前使用过这种方法,但它也有很多缺点。
技术堆栈:我的技术堆栈是.Net和MSSQL
我正在寻找曾经设计过这种系统或曾经遇到过类似问题的人的答案。
使用uuid标识您的实体,并将其作为简单的String引用。
请参阅如何在C#中生成UUID
例如:
{
"Name" : "MyDeal",
"Id" : "6a0e5244-2a85-4944-9be4-04c8cfbf3e45"
}
{
"Name" : "MyInvoice",
"Id" : "efed8b94-0065-4004-adcc-9f2d219fb6eb",
"DealReference" : "6a0e5244-2a85-4944-9be4-04c8cfbf3e45"
}
不要使用通用持久性,例如通用数据库。参见https://stackoverflow.com/a/43618284/7803650。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句