问题标签 [arangodb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1828 浏览

django - 使用 Foxx 为 Django 构建 API 或使用 ArangoDB Python 驱动程序?

我想在 Django 中使用 ArangoDB,但我不知道以下哪个选项更好:使用ArangoDB Python 驱动程序或使用 Foxx 构建新 API。我认为 ArangoDB Python 驱动程序不是基于 Foxx 的,我不知道从头开始构建新 API 的利弊,即使 Foxx 使它变得更容易。另外,我担心在 Foxx 和后端之间的接口中使用 javascript 会使事情变得更慢。如果我将Guacamole ODM与 Ruby on Rails 一起使用会更快吗?

0 投票
1 回答
1074 浏览

arangodb - 为什么在 arangodb 中排序很慢?

我正在尝试看看 arangodb 是否适合我们的用例。我们将拥有大量具有相同架构的文档(如 sql 表)。

为了尝试一些查询,我插入了大约 90K 的文档,这是很低的,因为我们预计文档数量在 100 万以上。

现在我想得到这些文档的一个简单页面,没有过滤,但降序排序。

所以我的aql是:

当我在 AQL 编辑器中运行它时,大约需要 7 秒,而我预计需要几毫秒或类似的时间。

我尝试在其上创建哈希索引和跳过列表索引,但这没有任何效果:

那么,我是否遗漏了什么,或者 ArangoDB 不适合这些情况?

0 投票
2 回答
235 浏览

node.js - 然后如何将 NPM 模块(十进制)添加到 ArangoDB 以进行 ACID 事务

我想用 ArangoDB 做 ACID 交易。我想将事务代码(nodejs-code)发送到 ArangoDB 服务器,然后它将在该服务器上执行,并希望在失败时提交或回滚。但是在 ArangoDB 服务器端,我需要安装 NPM Decimal 模块或调用包。

如何安装它,以及如何从其中的事务代码访问该特定模块?

问候和感谢。

0 投票
1 回答
432 浏览

transactions - ArangoDB 事务 - 如何防止抛出异常

在查找当时可能不存在的特定文档时,如何防止 ArangoDB 在事务期间引发异常?

Nodejs 将事务以一个块的形式发送到 ArangoDb 并在那里进行处理。那很完美。我想将所有数学卸载到服务器。

在交易期间,我想查看特定的集合并检查是否存在文档,如果可以找到文档,则获取字段“余额”,但如果找不到文档或其字段,那么我不想抛出异常并且不想停止正在进行的事务。相反,我更想继续进行交易,我们将变量 oldBalance 分配给字符串'0'。

(供您参考:在 nodeJS 端指定了集合的写锁:'user'),在这里您可以看到发送到 ArangoDB 的部分事务代码:

如果找不到具有该特定 _key 的文档,则会引发异常。那时用户可能在集合中没有条目。在这种情况下,我们想假设他的余额是字符串'0'。但不幸的是,已经抛出了异常。我更想像下面这样进行:

0 投票
2 回答
792 浏览

node.js - ArangoDB:如果数据或索引不再适合 RAM,这很糟糕吗?

亲爱的 ArangoDB 社区,

我想知道当我们使用 ArangoDB 时它是否不好,如果不幸的是数据 + 索引变得太大并且不再适合 RAM。那是怎么回事?它会严重破坏系统性能吗?

对于 TokuMX,这是一个非常迷人的 MongoDB 分支(TokuMX 提供了我需要的 ACID 事务),他们说那根本没问题!甚至 TokuMX 在他们的网站上也明确表示,如果数据 + 索引不适合 RAM,对 TokuMX 来说没什么大不了的。

此外,对于 MongoDB 和 TokuMX,我们可以通过一些命令来限制 RAM 的使用。

对于我的 Web 项目,我想决定要使用哪个数据库,以后不想更改。我的数据库服务器的内存现在不超过 500MB,并且由 NodeJS 服务器并发使用。所以两者都坐在一台服务器上。

在该服务器上,我运行了 1 个 Nodejs 服务器和 2 个数据库实例。在此,我将 TokuMX 和 ArangoDb 与 linux 中的 TOP 命令进行比较,以检查 RAM 使用情况。两个数据库都只有一个很小的测试集合。Linux 中的 TOP 命令对我说:ArangoDB: RES: 128 MByte in use,而对于 TokuMX,它说只有 9 MB (!!) Res 的意思是:我发现实际使用的物理 RAM。所以,差异已经很大了......谢谢和许多问候。虚拟内存的使用也有很大的不同。5 Gb 用于 arangodb。tokumx 只有 300 MB。

0 投票
1 回答
111 浏览

arangodb - ArangoDB Replication ServerID 在不同服务器之间重复

我在我们自己的内部网络(不直接连接到互联网)内的两台 OSX 10.9 不同的机器上安装了 arangodb2.0.6(带有 APP)

我在机器 A 中为数据库“MyDB”正确配置了复制记录器。

我在机器 B 中的数据库“MyDB”中配置了复制应用程序,指向 A,没有开始标记并启动它,返回“正在运行”:“真”。

但是应用程序立即停止并出现错误:lastError”:{“errorMessage”:“从端点'tcp://xxxx:8002'获得相同的服务器ID(190048212006786)作为本地应用程序服务器的ID”,},

如果通过 HTTP API 我在机器 A 和 B 中调用 /_api/replication/server-id,我得到相同的 serverId:190048212006786。

您分配 serverId 的方式是什么?基于 arangodb 版本/操作系统版本/外部 IP。

非常感谢,

0 投票
1 回答
932 浏览

node.js - ArangoDB:关于 FOXX 的一些问题

1.) 问:我想知道,如何在 FOXX 应用程序中要求和使用节点模块。

我想使用名为:nemopersona 的 node-json-rpc 的 NPM 模块作为客户端。可能也作为服务器。但至少作为客户端通过 RPC 从其他地方获取数据是很方便的。

FOXX 似乎不喜欢那条特定的行:一旦我添加了这条线,foxx 应用程序就会引发错误。

我已经将 NPM 模块(包)添加到各种目录中,例如:

进行更改后,我重新启动 Arangodb 服务器。但它不喜欢模块。另外我认为它不特别喜欢那条线:

在这里你可以看到我的 FOXX 应用程序的完整代码,它不工作。

2.) 问题:FOXX 命令是否像纯 Nodejs 中那样异步? 例如,当我们查看在 FOXX 应用程序中查找 ArangoDB 文档的命令时:

福克斯应用代码:

显然这不是匿名回调,对吗?应该是阻塞的。它会阻止服务器吗?这是我真正想知道的,它必须阻止服务器。但我是否也可以在 FOXX-apps 中编写 ArangoDB 数据库命令以进行回调样式等 I/O 操作以避免阻塞?它是 Nodejs 和 javascript 编写非阻塞代码的一大优势。FOXX也可以做到吗?

在 Nodejs 中有一个 javascript 驱动程序以非阻塞方式对 Arango 进行 I/O。

然后在 ArangoDB 中有事务。还有阻塞。但是对于 ACID 事务,我认为阻塞本身是可取的。所以我们不需要回调。

但是在 FOXX 应用程序中访问 ArangoDB 时,为什么没有呢?我错过了什么吗?

如果可能,请帮助我,非常感谢你。

0 投票
1 回答
2873 浏览

arangodb - 使用 AQL 在 arangodb 中进行聚合

我正在使用 SUM() 聚合函数在 arangodb 中尝试一项相当基本的任务。

这是一个返回正确数据的有效查询(尽管尚未汇总):

这将返回以下结果:

我正在使用 Collect 对结果进行分组,因为给定的 memberId 可能有多个“RegMem”对象。正如您从查询/结果中看到的那样,每个对象都有一个称为“项目”的较小对象列表,每个项目都有一个数量和一个描述。

我想 SUM() 成员的金额。但是,像这样调整查询不起作用:

它返回 0,因为它显然无法在扩展的项目列表中找到一个名为 amount 的字段。

查看结果我可以理解为什么:返回的结果使得 items 实际上是一个列表,具有数量/描述的对象列表。但我不明白如何正确引用或扩展未命名列表以返回 SUM() 函数的金额字段值。

理想情况下,查询应该返回 memberId 和总金额,每个成员一行,这样我就可以删除过滤器并为所有成员执行。

如果您能提供帮助,请提前非常感谢!马丁

PS 我已经完成了 arangodb 网站上的 AQL 教程并查看了手册,但真正帮助我的是加载更多示例查询以供查看。如果有人知道这样的资源或想分享他们自己的一些资源,'非常感谢。干杯!

0 投票
2 回答
3876 浏览

arangodb - 在 ArangoDB 中过滤数组值

我有这样的文件:

我正在尝试查找哪些客户端addrs的状态处于“OH”状态。我的 aql 查询是:

但我不断得到[1563] list expected。还有其他方法可以处理数组吗?

0 投票
1 回答
5368 浏览

arangodb - ArangoDB 的内存使用情况

我试图了解 Arangodb 的限制是什么以及理想的设置是什么。据我了解,arango 将所有收集数据存储在虚拟内存中,理想情况下您希望它适合 RAM。如果集合增长并且无法放入 RAM,它将被交换到磁盘。

所以我的第一个问题。如果我的数据库增长,我需要调整交换分区/文件以适应数据库吗?

由于 arango 还将数据同步到磁盘,这是否意味着数据将始终位于 RAM 和磁盘中?因此,如果我有一个 1.5GB 的数据库并且我的 RAM 为 1GB,我将需要至少有 0.5GB 的交换磁盘和 1.5GB 的常规磁盘空间?

我有点困惑 arango 如何使用虚拟内存。现在我有 7 个几乎是空的集合。我有 1GB 的 RAM 和 1GB 的交换磁盘。管理员报告说 arango 正在使用 4.5GB 的虚拟内存。如果交换磁盘是 1GB,这怎么可能?它目前使用 80MB 的 RAM。如果每个集合的日志大小为 32MB,这不应该是 224MB 吗?

关于期刊规模与收藏规模的建议是什么?这可以随着集合的增长而动态调整吗?

如果磁盘是 SSD 时,如果交换磁盘被大量使用,期望什么样的性能?如果交换磁盘被大量使用,性能是否与使用更传统的数据库(如 mysql)相似?