database - Subversion 使用什么数据库?

标签 database svn repository

Subversion 使用什么数据库?

是否有默认值,或者您可以将其设置为使用任何数据库吗?

最佳答案

服务器

Subversion 目前支持两个后端来存储存储库。您可以使用 svnadmin create 命令的 --fs-type 选项来选择。

  1. FSFS(这是默认设置)是一种自定义格式,存储了人类可读的文件(主要的异常(exception)是增量数据是二进制的)。 FSFS 还使用 SQLite用于跟踪文件内容哈希的数据库,因此如果需要再次存储相同的内容(重复数据删除),则可以重复使用现有的内容存储。如果您正在考虑一个典型的关系数据库,FSFS 中 SQLite 的使用是最接近的,SQLite 数据库实际上不存储任何数据并且可以随时删除而不会丢失数据(结果是 future 的修订可能需要增加空间)。 FSFS 已经对其进行了大量工作以针对各种情况对其进行优化,并且增加了一些旋钮以使其即使在异常情况下也能达到最佳状态。

  2. 使用 Berkeley DB 的 BDB(这是原始后端)存储存储库。从 1.8.0 开始,此后端已弃用但仍受支持。很长一段时间没有对它做很多工作,FSFS 几乎在所有情况下都会胜过它。

谷歌至少还有一个后端实现,它从未使用 Google's proprietary BigTable storage 发布过.我相信这实际上仍然用于 GoogleCode 的 Subversion 支持。

Subversion 1.9.0(在撰写本文时尚未发布)将支持一种名为 FSX(发音类似 physics)的新实验性存储,它将比 FSFS 更紧凑、更快。预计一旦 FSX 被认为稳定,BDB 将被完全删除。

Subversion 根本不支持使用其他通用数据库,如 MySQL、PostgreSQL、Oracle 和其他(RDBMS 或 NOSQL)来存储所有内容,目前没有计划支持它们。

客户端

对于客户端工作副本,Subversion 客户端使用了两种不同的格式

  1. WCv1(没有确切的名称,但我们现在就是这样调用它的)它在工作副本的每个目录下的 .svn 目录中使用平面文件。在我们更改为 WC-NG 时,Subversion 一直使用它直到 1.7.0。

  2. WC-NG它使用 SQLite工作副本顶层 .svn 目录中的数据库。 Subversion 自 1.7.0 起使用它。

关于database - Subversion 使用什么数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21269403/

相关文章:

svn - 一些基本的版本控制问题

svn - 如何通过控制台在 cygwin 上安装以前版本的软件包?

java - JPA删除不执行

svn:externals git 项目的子文件夹

database - Postgres-Golang-模式与数据库?

sql - INSERT INTO SELECT 非常慢,但 INSERT 或 SELECT 单独运行时速度很快

php - 保存小部件设置: php file vs db [apc installed]

java - 将 jar 文件放在存储库中的位置

git 恢复在 merge 期间删除的单个文件

php - Laravel 5.1 模型工厂种子错误