arangodump:我怎么知道最新的“修订版”?

问题描述 投票:1回答:1

我正在从arangodump手动解析和导入数据,其中包含每个文档的每个修订版的记录。问题是,我不知道哪个项目是最新版本。

(对于已删除文档的情况,这也存在问题,其中arangodump中的记录会带有修订但带有空文档。)

来自docs

客户端可以使用修订ID来执行简单的相等/不相等比较(例如,检查文档是否已更改),但是他们不应该使用修订ID来执行更大/更小的比较来检查文档修订是否是彼此比较大,即使这可能适用于某些情况。

Docs并没有给我希望。这甚至可能吗?

如果没有,将arangodump手动导入其他应用程序的正确方法是什么?

arangodb
1个回答
0
投票

ArangoDump旨在尽快为您提供现有数据库的快照。因此它不会在集合级别上提供内容,而是在磁盘上显示内容。就像@CoDEmanX所指出的那样,牺牲ArangoExport数据库服务器上的资源使用会给你。

为了回答您获取旧版本文档的原因,我们将不得不深入了解数据库本身。

插入数据库将创建一个带有_key的新文档。一旦你试图用UPDATE替换它,实际发生的是,写一个看不见的文件(又名标记),即删除旧版本。之后,创建新版本的文档。

这都是liniar,所以你有一个write ahead log - 又名WAL。这是以线性方式编写的,但只有部分内容被定义为已同步到磁盘。一旦事务要求文档为sealed - 执行暂停,直到内核回复它可以确保此阶段已同步到存储。

关于磁盘的方式。它实现的方式是为您提供最大的吞吐量,同时为您提供某些事情已被写入的保证(并且不会卡在磁盘缓存中等等)

稍后的工作将尝试清理所有东西,并绑定松散的目标。这被称为'收集'。它将从WAL收集文档,并将其存储在永久数据库文件中。它还会尝试将删除标记与现有文档结合使用,最终消失。

因此,一旦集合运行,删除的文档与其删除标记相结合实际上将消失。如果多个数据库文件的大小经历某个阈值,则可以将多个数据库文件组合到一个数据库文件中。甚至可能发生一些删除标记仅在这样的组合之后找到它们的文档。

© www.soinside.com 2019 - 2024. All rights reserved.