gpt4 book ai didi

arangodb - 使用 ArangoDB 时复制架构的帮助

转载 作者:行者123 更新时间:2023-12-01 23:57:09 27 4
gpt4 key购买 nike

在我解决 1000 个客户端的任务中,每个客户端都有单独的 ArangoDB,在运行时记录单独的信息......我们需要将这些信息聚合回单个主节点服务器中的集合,以便可以进行查询和报告在上面。研究 JavaScript 的强大功能和 ArangoDB 中的操作......这是否可能并且足够快以将数据“复制”回主节点......

1) 每个客户端都在记录本地运行数据

2) 执行一个 Action 触发器(让我们先来看看废话场景,没有批量上传或任何东西)......对于每个插入,获取本地插入的数据并向主节点发出准确的请求以插入到公共(public)集合中(存储在每个客户端上的文档数据具有唯一标识它的属性等)。

3) 这将有效地将每个客户端的唯一数据“复制”/聚合到单个主节点集合。

想法?

谢谢,

最佳答案

对此的初步想法:

您可以将插入/更新/删除操作包装到您自己的 API 中的特定集合。您可以在 ArangoDB 中编写自己的路由,而不是使用 ArangoDB 为文档提供的常规 HTTP POST、PUT/PATCH、DELETE 路由。 ArangoDB 有一个框架 Foxx 可以执行此操作。

例如,您可以创建自己的插入路由。在路由内部,您可以执行任何类型的 JavaScript 代码。例如,这是一个简单的插入包装器,它只是将数据插入到集合 mydata 中:

controller.post('/my-insert', function (req, res) {
var document = req.body();

try {
var result = db.mydata.save(doc);
// TODO: send off data to external server etc.

res.json(result); // send back result to original client
}
catch (err) {
// TODO: handle and report error
}
});

在上面的示例中,数据存储在本地集合中,响应被发送回客户端。但是,您可以在保存操作后执行额外的 JavaScript 代码。因此,您实际上可以从那里向另一台服务器发送数据。

您可以对更新和删除路由执行相同的操作。此解决方案要求您的所有操作都使用自定义路由,并且您不要使用常规文档 API 修改数据。使用常规 API 当然仍然有效,但不会触发自定义操作。

有趣的问题是,您是否可以接受“发送到另一台服务器调用”时的线程阻塞,以及如果由于某种原因向另一台服务器发送数据失败时您会怎么做。

关于arangodb - 使用 ArangoDB 时复制架构的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22999090/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com