我目前正在开发基于微服务架构的.NET Core应用程序。作为其中的一部分,我们正在设计一个用于用户身份验证和授权的身份微服务。
我们正在考虑一种多语言持久化方法,特别是使用SQL Server来处理用户配置文件数据,因为它对结构化数据和ACID事务有很强的支持;使用Neo4j来管理复杂的关系和访问控制列表,因为它能够有效地处理复杂的关系和查询。
但是,我们知道这种方法引入了架构复杂性,因为应用程序需要与两种不同类型的数据库交互,并管理它们之间的数据一致性。
您是否有使用SQL Server和Neo4j作为Identity微服务的系统的实际经验或示例?在体系结构、性能、数据一致性和操作复杂性方面,我们应该考虑哪些关键因素?
如有任何建议、经验教训或相关资源的提示,将不胜感激。
1条答案
按热度按时间wqnecbli1#
如果你将SQL Server添加到你的解决方案中的原因只是(或主要是)ACID事务,我建议放弃它并坚持使用Neo4j,因为它是ACID兼容的,你将拥有两个世界的最佳状态(来自Graph DB的相应SQL列和关系的节点属性),没有你提到的复杂性。对于相同的DBMS和数据类型,一致性已经够难的了。如果你在混合中添加其他类型,它可能会变得非常难以管理和扩展。