同时使用 Mariadb 和 Neo4j 来保持完整性

问题描述 投票:0回答:1

我试图在 Spring Boot 中通过 Neo4j 创建以下函数并将以下数字存储在 Mariadb 中。是否保持诚信?如果不保持完整性,是否应该只使用两个数据库之一?

与 Instagram 一样,这是一项用户可以发帖和关注他人的服务。

spring-boot neo4j mariadb
1个回答
0
投票

就我个人而言,我会尝试只使用一个数据库。当您向系统添加组件时,发生故障的可能性呈指数级增长。保持不同系统同步并不是一项简单的任务。

问题中没有足够的信息来做出完全明智的决定。它确实取决于系统的规模以及保持数据一致对业务的价值。

您想要在解决方案中投入的精力取决于您提供的服务的价值。您可以全力使用企业级代理来协调服务之间的一致性。这将有助于了解数据是否已成功写入 Maria,并在未成功写入时重试事务。

您可能想要创建一个基于事件的服务,以便在 Maria 服务落后于 Neo4j 的情况下更新可以排队并按顺序应用。与成熟的经纪商相比,这提供的弹性较差,但相对容易实施。您必须编写代码来管理队列,但在知道消息已成功处理之前不必删除消息。

在另一端,您可能正在构建供团队或部门使用的个人或小规模服务,在这种情况下,成熟的代理架构或排队服务可能会完全超出服务的业务价值。在这个级别(听起来像您所在的级别),您可以编写自己的迷你代理,它将属性或标签添加到 Neo4j 节点,尝试 Maria 事务,然后在成功时删除属性/标签。然后,您可以使用某种清理功能,定期扫描 Neo4j 数据库以查找过时的属性/标签。

最后一个想法(我并没有真正思考过这个问题)是编写一个 Neo4j 用户定义的函数来调用来进行更新。然后,您可以将 Maria 更新带入 Neo4j 事务中。请注意,这将对您的 Neo4j 服务产生性能影响,特别是如果 Maria 服务位于不同的节点或网络上。

© www.soinside.com 2019 - 2024. All rights reserved.