1个稳定版本

1.0.0 2023年1月25日

#2380数据库接口

Apache-2.0LGPL-3.0+

100KB
2K SLoC

TerminusDB 10到11转换工具

此工具允许您将TerminusDB 10存储目录转换为TerminusDB 11。TerminusDB 11具有改进的存储格式,将使用更少的存储空间并提高检索速度约25%。

安装

要安装此转换工具,请从发布页面下载二进制文件。或者,如果您已安装cargo,您可以使用cargo install terminusdb-10-to-11在本地构建二进制文件并将其安装到您的cargo bin文件夹中。在 ...

调用

Usage: terminusdb-10-to-11 convert-store [OPTIONS] <FROM> <TO>

Arguments:
  <FROM>  The storage dir from v10
  <TO>    The storage dir for v11

Options:
  -w, --workdir <WORKDIR>  The workdir to store mappings in
      --naive              Convert the store assuming all values are strings
  -c, --continue           Keep going with other layers if a layer does not convert
  -v, --verbose            Verbose reporting
  -r, --replace            Replace original directory with converted directory
  -k, --clean              Cleanup work directory after successful run
  -h, --help               Print help information

基本用法

对于TerminusDB用户

TerminusDB默认将数据库存储在您的terminusdb安装路径下的storage/db目录中。例如,如果您的terminusdb安装在与/home/joan/terminusdb(因此您的db位于/home/joan/terminusdb/storage/db

以下是一个简单的调用示例,它允许在备份的同时进行原地转换

$ terminusdb10-to-11 convert-store -krv <path to old store> <path to temporary new store dir>

对于您的terminusdb安装在与/home/joan/terminusdb(因此您的db位于/home/joan/terminusdb/storage/db)的示例,此命令如下

$ terminusdb10-to-11 convert-store -krv /home/joan/terminusdb/storage/db /home/joan/terminusdb/storage/converted_db

执行此转换后,您将无法再使用旧的TerminusDB 10存储。但是,您的旧存储已被复制到备份文件夹中,命令输出会告诉您备份文件夹的位置。如果您需要降级,只需将此备份文件夹移回原始位置即可。

对于其他存储用户

默认情况下,此转换工具假定它正在针对TerminusDB存储运行。这意味着它期望在各个层中所有值都带有TerminusDB类型注释。如果您在其他项目中使用terminus-store,这可能不会是您的情况,从而导致转换失败。

如果出现这种情况,您应该使用--naive标志。这将假设所有值都是字符串来转换存储。但是,不要在TerminusDB使用的存储上使用此标志,因为这将使目标存储不可用。

工具的功能

此工具执行以下步骤。

  1. 通过打开标签文件,收集任何引用的层以及它们的父层,找出可访问的层。
  2. 转换每个层,将转换后的层存储在目标目录中。如果层已转换(例如在先前的中断运行中),则跳过该层。
  3. 将所有标签复制到目标目录。

各种标志会修改这种基本行为。

在成功运行后替换原始存储

默认情况下,该工具不会修改原始存储目录,而仅在目标目录中构建新的存储。如果您希望在成功运行后自动替换存储,可以使用-r--replace。这将把原始存储移动到备份位置,然后把目标目录移动到原始位置。

在成功运行后清理临时文件

默认情况下,该工具不会清理转换过程中使用的临时文件。使用---clean,在成功运行后,工作目录将被自动删除。

请注意,如果指定了带有---workdir的显式工作目录,则此标志将被忽略。这是为了避免意外删除与转换无关的文件,例如当指定了已存在的目录作为工作目录时。

详细输出

使用---verbose,可以在转换层时打印出工具执行的步骤。这可以用于获取更准确的状态信息。

使用非默认工作目录

默认情况下,转换工具将使用目标存储目录的子目录来存储临时工作文件。使用---workdir,您可以为此设置不同的目录。

在失败时继续

当工具遇到错误时(例如,无法转换的值或缺少某些文件的层),它将立即退出。使用---continue,可以强制工具继续转换其他层。失败将被报告并记录,工具的最终退出代码将指示失败,但每个可转换的可达层都将被转换。

请注意,无法转换层也会自动导致其子层无法转换。

简单转换

使用--naive,可以强制工具忽略层中的任何类型注释,而是将所有内容转换为字符串。这在转换不由TerminusDB创建的存储时很有用。

依赖项

~33–45MB
~853K SLoC