微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用多租户 GraphDB (Neo4J / ArangoDB) 设计和实现 SaaS 应用程序

如何解决使用多租户 GraphDB (Neo4J / ArangoDB) 设计和实现 SaaS 应用程序

我正在使用以下技术开发 SaaS 应用程序:

SaaS 应用程序将作为客户托管许多不同的公司。 来自 2 个不同公司的数据必须在 GraphDB 中完全隔离。 2 家不同的公司可能有不同的数据结构和模型。

查询 以下是我的查询

  • 如何在 GraphDB (Neo4J / arangoDB) 上设置多租户?
  • 是否每个公司都需要一个完全独立的 GraphDB 实例?
  • 是否可以在同一个 GraphDB 上托管 2 家公司,同时保持隔离?

任何人都可以为这种类型的架构提出最佳解决方案吗?
感谢您的时间

最好的问候

解决方法

由于 Neo4j 4.0 多租户支持通过多数据库。

在系统数据库中,您可以根据需要创建任意数量的数据库,并从客户端中选择一个会话一个会话地与之对话的数据库,这样您就可以将每个数据库用于一个租户。

这是 JS API:

https://neo4j.com/docs/api/javascript-driver/current/class/src/driver.js~Driver.html#instance-method-session

每个数据库实例可以处理成百上千个数据库。

enter image description here

启用 Neo4j Fabric 后,您可以进行跨数据库联合查询。

这里还有一些例子

,

使用 ArangoDB,您只需要一个实例,并且每个租户可以简单地使用一个数据库。

每个数据库都是独立的,例如,AQL 查询在单个数据库的上下文中运行,您只能访问该数据库的集合和命名图。

ArangoDB Architecture - Hierarchy of Databases,Collections and Documents

您可以为每个客户创建一个 ArangoDB 用户并限制其对相应数据库的访问以实现所需的隔离。

对于可扩展性和弹性,还有 OneShard 功能(企业版 / managed service)。它使您能够拥有一个集群,其中每个数据库都被视为单个分片,即客户的所有集合都存储在一个 DB-Server 上(不包括副本),以便可以在该节点上本地执行查询。这对于图遍历尤其有益。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。