As of version 1.1, Subversion provides two options for the type of underlying data store—often referred to as “the backend” or, somewhat confusingly, “the (versioned) filesystem”—that each repository uses. One type of data store keeps everything in a Berkeley DB (or BDB) database environment; repositories that use this type are often referred to as being “BDB-backed.” The other type stores data in ordinary flat files, using a custom format. Subversion developers have adopted the habit of referring to this latter data storage mechanism as FSFS—a versioned filesystem implementation that uses the native OS filesystem directly, rather than via a database library or some other abstraction layer, to store data.
Table 5-1 gives a comparative overview of Berkeley DB and FSFS repositories.
Table 5-1. Repository data store comparison
|Reliability||Data integrity||When properly deployed, extremely reliable; Berkeley DB 4.4 brings autorecovery||Older versions had some rarely demonstrated but data-destroying bugs|
|Sensitivity to interruptions||Very; crashes and permission problems can leave the database “wedged,” requiring journaled recovery procedures||Quite insensitive|
|Accessibility||Usable from a read-only mount||No||Yes|
|Usable over network filesystems||Generally, no||Yes|
|Group permissions handling||Sensitive to user umask problems; best if accessed by only one user||Works around umask problems|
|Scalability||Repository disk usage||Larger (especially ...|