首先,请让我介绍一下我的用例:我正在研究Django应用程序(使用Graphene的GraphQL API),该应用程序在云中运行,但其本地实例也存在于本地客户网络中。
例如,云中的一个应用程序和本地网络上的3个实例(具有启用了BDR的PostgreSQL服务器的本地Django应用程序实例)。如果存在网络连接,我们将使用双向复制来获取新数据,因为如果没有连接,我们将使用本地实例。这是用于说明的简化基础结构图。
因此,如果我想使用BDR,则无法在ORM中执行DELETE和UPDATE操作。我必须为我的实体生成UUID,并且每个更改都只是一条新记录,其中包含相同UUID的更新数据。所选UUID的最新记录是我的有效记录。删除只是另一个标志。到现在为止,一切似乎都很好,当我想使用例如多对多关系时,问题就开始了。关系依赖于数据库主键,我必须以某种方式处理删除。您能找到解决此问题的最佳方法吗?我的想法不多,但我不想做出错误的决定:
您之前必须解决类似的问题吗?是否有某种良好的做法,或者只是在通往地狱的高速公路上建造(AC / DC很酷)?
或者,如果您认为有更好的方法来构建服务体系结构,我很想听听您的想法。
谢谢。