1个稳定版本
1.0.0 | 2023年1月25日 |
---|
#2380 在 数据库接口
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使用的存储上使用此标志,因为这将使目标存储不可用。
工具的功能
此工具执行以下步骤。
- 通过打开标签文件,收集任何引用的层以及它们的父层,找出可访问的层。
- 转换每个层,将转换后的层存储在目标目录中。如果层已转换(例如在先前的中断运行中),则跳过该层。
- 将所有标签复制到目标目录。
各种标志会修改这种基本行为。
在成功运行后替换原始存储
默认情况下,该工具不会修改原始存储目录,而仅在目标目录中构建新的存储。如果您希望在成功运行后自动替换存储,可以使用-r
或--replace
。这将把原始存储移动到备份位置,然后把目标目录移动到原始位置。
在成功运行后清理临时文件
默认情况下,该工具不会清理转换过程中使用的临时文件。使用-
或--clean
,在成功运行后,工作目录将被自动删除。
请注意,如果指定了带有-
或--workdir
的显式工作目录,则此标志将被忽略。这是为了避免意外删除与转换无关的文件,例如当指定了已存在的目录作为工作目录时。
详细输出
使用-
或--verbose
,可以在转换层时打印出工具执行的步骤。这可以用于获取更准确的状态信息。
使用非默认工作目录
默认情况下,转换工具将使用目标存储目录的子目录来存储临时工作文件。使用-
或--workdir
,您可以为此设置不同的目录。
在失败时继续
当工具遇到错误时(例如,无法转换的值或缺少某些文件的层),它将立即退出。使用-
或--continue
,可以强制工具继续转换其他层。失败将被报告并记录,工具的最终退出代码将指示失败,但每个可转换的可达层都将被转换。
请注意,无法转换层也会自动导致其子层无法转换。
简单转换
使用--naive
,可以强制工具忽略层中的任何类型注释,而是将所有内容转换为字符串。这在转换不由TerminusDB创建的存储时很有用。
依赖项
~33–45MB
~853K SLoC