2014-01-21 6 views
4

Хорошо, я искал и не могу найти окончательный ответ.Subversion использует какую базу данных?

В какой базе данных используется подрывная деятельность?

Есть ли по умолчанию или вы можете настроить его для использования любого db ??

+0

Мне действительно интересно, почему вы спросили? У вас есть проект, где другая база данных даст значительные ускорения? –

+0

Поиск? См. Первую ссылку в [svn tag wiki] (http://stackoverflow.com/tags/svn/info). –

ответ

6

Subversion использует FSFS, и вы не можете и не хотите его менять.

+1

Хотя вы правы, что в данный момент вам не нужно переключаться с FSFS, вы можете использовать BDB с опцией '--fstype' для' svnadmin create' –

+0

@Ben Reser: я в основном отвечал: вы можете настроить его для использования любого db ». Но действительно, немного неясно – zerkms

+0

@zerkms, Почему SVN не использует sqlite? – Pacerier

2

Для хранения содержимого репозитория Subversion использует свою собственную базу данных FSFS. Это не база данных в смысле реляционной базы данных. Это метод хранения содержимого репозитория на основе файловой системы.

Для некоторых функций на стороне сервера и для хранения метаданных рабочей копии на стороне клиента используется SQLite.

Вы не можете изменить ни одно из этих решений, ни вы не должны обманывать в этих структурах, если вы не знаете точно, что вы делаете.

+0

«если вы точно не знаете, что делаете» --- и если вы это сделали - вы не спросите об этом :-) Хороший ответ – zerkms

5

Сервер

Subversion поддерживает два назад заканчивается тока для хранения хранилищ. Вы можете выбрать, который с опцией --fs-type команды svnadmin create.

  1. FSFS (это по умолчанию), который представляет собой пользовательский формат хранится читаемыми файлами несколько человеческих (основное исключением является то, что дельта-данные двоичный). FSFS также использует базу данных SQLite для отслеживания хэшей содержимого файла, поэтому существующее хранилище содержимого может быть повторно использовано, если идентичный контент необходимо снова сохранить (депуляция). Если вы думаете о типичной реляционной базе данных, использование SQLite в FSFS является самым близким к ней, и SQL-база db фактически не хранит никаких данных и может быть удалена без потери данных в любое время (следствием могут быть изменения в будущем больше места). FSFS выполнила значительную работу над этим, чтобы оптимизировать его для различных ситуаций и увеличила количество регуляторов, чтобы сделать его оптимальным даже для необычных ситуаций.

  2. BDB (это оригинальный задний конец), который использует Berkeley DB для хранения репозитория. Начиная с версии 1.8.0, этот задний конец устарел, но все еще поддерживается. За долгое время он не проделал много работы, и FSFS превзойдет его почти во всех случаях.

Там было по крайней мере один другой задний конец реализации с помощью Google, который не был выпущен с помощью Google's proprietary BigTable storage. Я считаю, что на самом деле это все еще используется для поддержки Subversion от GoogleCode.

Subversion 1.9.0 (не выпущенный на момент написания этой статьи) будет поддерживать новое экспериментальное хранилище под названием FSX (произносится как физика), которое будет намного компактнее и быстрее, чем FSFS. Ожидается, что после того, как FSX станет стабильным, BDB будет полностью удален.

Subversion не поддерживает использование других баз данных общего назначения, таких как MySQL, PostgreSQL, Oracle и другие (RDBMS или NOSQL) для хранения всего содержимого вообще, и на данный момент их не планируется поддерживать.

Client

Для клиентской стороне рабочей копии клиента Subversion использует два различных формата

  1. WCv1 (точно не имеет названия, но это то, что мы привыкли называть он теперь), который использовал плоские файлы в каталоге .svn под каждым каталогом рабочей копии. Это было использовано Subversion до 1.7.0, когда мы перешли на WC-NG.

  2. WC-NG, который использует базу данных SQLite в каталоге .svn на верхнем уровне рабочей копии. Это используется Subversion с 1.7.0.

Смежные вопросы