使用 arangodb 连接到多个数据库

Posted

技术标签:

【中文标题】使用 arangodb 连接到多个数据库【英文标题】:Connecting to multiple databases with arangodb 【发布时间】:2021-12-09 16:52:41 【问题描述】:

我正在构建一个需要为每个项目动态创建新数据库的产品,因为新团队将根据需要创建一个新项目。见下图。后端使用 Node.js、Express.js、TypeScript 实现,使用的数据库是 ArangoDB。

这是一款用于企业服务器安装和 SaaS 的产品。

如何使用上述技术实现所需的架构?感谢您的想法和示例,参考。

【问题讨论】:

您好,您能详细说明您计划为每个项目创建新数据库的原因吗?它有很多缺点,例如 1. 您将无法使用开箱即用的功能来搜索/过滤所有项目中的任务等典型项目方面 2. 创建/升级集合以及使用任何图形、搜索、foxx 功能将变成部署/upgrade 噩梦,因为你必须在每个数据库上都这样做...... 嗨@sevcik.tk,您的观点非常有效。我的想法是,每个项目的资产都必须分开保存,以避免在一段时间内可能会出现数十万份文件的混合。我不确定我的思考过程是否正确,因此是这个问题。我很乐意了解是否有应对这种情况的架构建议。 看看多租户架构,我的思考过程是有道理的,应该是可能的。我想知道如何实现它。 【参考方案1】:

ArangoDB javascript Driver 遵循现代 JavaScript/TypeScript 和 async/await:您可以管理 new Database() 的动态集合,而不是一个 const db。它可以是一个映射,其中包含每个团队的数据库所有者的键和数据库对象的值。仍然在两个数据库连接之间加入数据并不容易。

Quicksql是一款SQL查询产品,可用于特定数据存储查询或多个数据存储关联查询。它支持关系型数据库、非关系型数据库,甚至支持不支持 SQL 的数据存储(如 Elasticsearch、Druid)。此外,SQL 查询可以连接或合并来自 Quicksql 中多个数据存储的数据。例如,您可以对一部分数据存储在 Elasticsearch 上,而另一部分数据存储在 Hive 上的一种情况进行统一的 SQL 查询。最重要的是QSQL不依赖任何中间计算引擎,用户只需要关注数据和统一的SQL语法即可完成统计分析。

但需要一些自定义 ArangoDB 支持才能将其与 ArangoDB Java Driver 一起使用。

【讨论】:

您好,Tomer,感谢您的回复。我见过司机。 Java 绝对不是一个选项,因为应用程序在 TypeScript 中。我的想法和你一样。我在 ArangoDB 文档的某处读到我们不能同时保持与不同数据库的多个连接。如果没有适当的驱动程序来支持此功能,这通常会限制数据库的应用程序。我知道有一些方法可以实现所需的架构。我想听听 ArangoDB 团队关于他们的提议是什么。谢谢。 该应用程序要求所有团队同时连接到他们的数据库/工作区。因此,所有这些都必须在不与任何数据库交换连接的情况下可用。

以上是关于使用 arangodb 连接到多个数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用不同的 jdbc 驱动程序连接到多个数据库

Spring Boot 使用 JdbcTemplate 和多个数据源自动重新连接到 PostgreSQL

如何通过多个类一次连接到 MySQL 数据库

ExpressJS 连接到回调的多个中间件

当多个用户连接到数据库时,VB6 数据库操作变慢

在 Node.js 中连接到多个 MySQL 数据库