* subversion/libsvn_repos/repos.c
[svn.git] / notes / sql-backend
blob6c2868eff56250bbeb030328e8e7f592950fd785
1 The following references and ideas may be of use to people interested
2 in writing an SQL back end for Subversion.
4 * Glenn Thompson's pluggable FS document
6 A new filesystem implementation has to plug into Subversion alongside
7 the BDB one.  Currently, we have a framework allowing complete
8 reimplementations of the FS API to plug into Subversion alongside each
9 other, but it may (or may not) be more prudent to abstract the BDB
10 implementation at the table level so that the same code can use
11 multiple database implementations.
13 Glenn Thompson wrote a document about FS abstraction, located at
14 <http://www.cdrguys.com/subversion/>.  This document predates the FSFS
15 implementation, so it is a bit dated, but it is still highly relevant
16 to the hypothetical table-level abstraction described above.
18 The document posits two abstraction layers, the FSAP (filesystem
19 abstract provider) layer which abstracts at the API level, and the FSP
20 (filesystem provider) layer which abstracts at the table level.  The
21 FSP layer would only apply to libsvn_fs_base, which implements the BDB
22 back end.  The document's FSAP abstraction proposal was used as a
23 basis (though not as gospel) for the API-level abstraction we
24 currently have.
26 * Edmund Horner's prototype MySQL implementation
28 http://homepages.paradise.net.nz/~ejrh/subversion/mysql/ describes a
29 prototype implementation of a MySQL back end, also made before the
30 FSFS implementation.  There is a little more about this back end in
31 the mail thread at
32 http://www.contactor.se/~dast/svn/archive-2004-02/0470.shtml.