sqlite 作为存档格式有什么缺点吗?

sqlite 作为存档格式有什么缺点吗?

我有几个巨大的文件夹,里面有一些小文件,我想将它们存档以供长期存储(大约 200GB)。

我正在考虑使用 sqlite,而不是仅仅使用 gzip/tar/dar/7zip 之类的东西

sqlite3备份.db“.ar-cv数据”

忽略压缩,我是否会遇到一些陷阱?旧的简单 tar 有什么优势吗?

答案1

主要缺点:你需要一个sqlite3可执行文件具有存档支持当你需要恢复数据时。根据具体情况,你可能手边没有,但你更有可能找到一个可用的gziptar 等人

这就是为什么我对此特别挑剔:

  • macOS 系统sqlite3版本通常都与最新版相差无几,但 Apple 只会偶尔更新其软件,而许多 Mac 用户可能会因为各种原因运行过时的操作系统。因此,sqlite3Mojave 之前的macOS 系统不是支持存档,因此为了便于携带,你一定要确保自制sqlite3 包已安装并更新
  • Linux 上的 Homebrew 默认安装一个 Bottled(即预编译的二进制)sqlite v3.26,它以某种方式设法不是支持存档。我必须brew install --build-from-source sqlite3修复它。

这只是我亲身经历过的两个例子。您计划使用 SQLAR 的平台可能存在类似的问题。将所有这些与“它在任何地方都有效” gzip//tar等进行对比。

因此,如果您想认真使用 sqlar 格式,请仔细考虑所有情况并环境您将在其中执行此操作。例如,救援磁盘可能没有存档sqlite3,并且您确实不想在灾难恢复期间从头开始构建 sqlite。


除了具有存档功能的 之外sqlite3,您还需要考虑文件大小

由于 SQLar 本质上是一个 SQLite DB,因此它继承了所有限制这种文件格式。具体来说,每个文件的数据都存储为 BLOB,其默认最大大小为10亿字节。此外,SQLite 查询处理导致每行被处理为单个 BLOB,从而进一步降低文件大小限制。

比较一下压缩(2 32为“经典 ZIP”,2 64为 ZIP64)或GNU tar(无限制),并且您可能还有另一个理由选择传统路线。

相关内容