Subversion使用什么数据库?

时间:2014-01-21 21:24:22

标签: database svn repository

Subversion使用什么数据库?

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

3 个答案:

答案 0 :(得分:6)

Subversion使用FSFS,你既不能也不应该想要改变它。

答案 1 :(得分:6)

服务器

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

  1. FSFS(这是默认值),这是一种存储有某些人类可读文件的自定义格式(主要的例外是delta数据是二进制的)。 FSFS还使用SQLite数据库来跟踪文件内容的散列,因此如果需要再次存储相同的内容(重复数据删除),则可以重用现有的内容存储。如果您正在考虑典型的关系数据库,那么FSFS中的SQLite使用距离最近,并且SQLite数据库实际上并不存储任何数据,并且可以随时删除而不会丢失任何数据(后果是未来的修订可能需要更多的空间)。 FSFS已经完成了大量的工作,以便在各种情况下对其进行优化,并且已经发展了许多旋钮,即使在不寻常的情况下也能使其达到最佳状态。

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

  3. Google至少有一个其他后端实施,从未使用Google's proprietary BigTable storage发布。我相信这实际上仍然用于GoogleCode的Subversion支持。

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

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

    <强>客户端

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

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

    2. WC-NG,它在工作副本顶层的.svn目录中使用SQLite数据库。 Subversion从1.7.0开始使用它。

答案 2 :(得分:3)

为了存储存储库内容,Subversion使用自己的FSFS数据库。它不是关系数据库意义上的数据库。它是一种基于文件系统的存储库内容存储方法。

对于某些服务器端功能,以及在客户端存储工作副本元数据,它使用SQLite

除非你知道完全你正在做什么,否则你不能改变这些决定中的任何一个,也不应该对这些结构进行改编。