SVN中两种存储方式的比较(BDB vs. FSFS)

Subversion 的版本库(repository),就是位于服务器端,统一管理和储存数据的地方。本文中,我们以 Linux 为例,介绍在服务器端配置和管理 Subversion 版本库的基本方法。

要创建一个版本库,首先要确定采用哪种数据存储方式。在 Subversion 中,版本库的数据存储有两种方式,一种是在 Berkeley DB 数据库中存放数据;另一种是使用普通文件,采用自定义的格式来储存,称为 FSFS。

两种存放方式各有优缺点,读者可以参考 http://svnbook.org/ 上面的文档来了解两者详细的比较和区别,这里,我们仅引用上述文档当中的简单对照表,给出一个简明的比较。

特性 Berkeley DB FSFS
对操作中断的敏感 很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。 不 敏感
可只读加载 不能 可 以
存储平台无关 不能 可 以
可从网络文件系统访问 不能 可 以
版本库大小 稍大 稍 小
扩展性:修订版本树数量 无限 制 某些本地文件系统在处理单一目录包含上千个条目时会出现问题。
扩展性:文件较多的目录 较慢 较慢
检出最新代码的速度 较快 可以
大量提交的速度 较慢,但时间被分配在整个提交操作中 较 快,但最后较长的延时可能会导致客户端操作超时
组 访问权处理 对于用户的 umask 设置十分敏感,最好只由一个用户访问。 对 umask 设置不敏感
功能成熟时间 2001 年 2004 年

确定了具体的数据存储类型,只要在命令行当中执行 svnadmin 命令就可以创建一个 Subversion 版本库,命令如下:

# 创建文件夹
$ mkdir /etc/svn/
$ mkdir /etc/svn/repos
# 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
$ svnadmin create --fs-type fsfs /etc/svn/repos

via:http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/

时间: 2024-11-09 02:02:59

SVN中两种存储方式的比较(BDB vs. FSFS)的相关文章

SVN的两种存储方式FSFS和BDB比较【转】

版本库数据存储 在Subversion1.2中,版本库中存储数据有两种方式.一种是在Berkeley DB数据库中存储数据:另一种是使用普通的文件,使用自定义格式.因为Subversion的开发者称版本库为(版本化的)文件系统,他们接受了称后一种存储方式为FSFS[14]的习惯,也就是说,使用本地操作系统文件系统来存储数据的版本化文件的系统. 建 立一个版本库时,管理员必须决定使用Berkeley DB还是FSFS.它们各有优缺点,我们将详细描述.这两个中并没有一个是更正式的,访问版本库的程序与

SVN 中两种Revert方式的区别

SVN中,当我们需要revert之前的commit的时候,有两个选项: 1. Revert to this revision 2. Revert changes from this revision 下面说一下两种方式的区别: 假设我们有四个连续的commit : 1, 2, 3, 4 对于commit 2 选择Revert to this revision,那么,只有1,2的改变被保留,3, 4的改变会被取消. 选择 Revert changes from this revision,那么,1

List集合中两种遍历方式

遍历List集合中的元素的方法有两种: 第一种:利用迭代器遍历 代码1: // 迭代器 Iterator it=list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } 或者代码2: for(Iterator it=list.iterator();it.hasNext();) { System.out.println(it.next()); }// 与while循环相比优点:对象it在循环结束后,变为垃圾,自动

Android中两种序列化方式的比较Serializable和Parcelable

Serializable和Parcelable接口可以完成对象的序列化过程,当我们需要通过Intent和Binder传输数据时就需要使用者两种序列化方式.还有,我们需要对象持久化到存储设备或者通过网络传输给其他客户端,这个使用也需要使用Serializale来完成对象的序列化.在Android应用开发中,这两种方式都很常见,但两者方式并不相同. 1.Serializable接口 Serializable接口是Java提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作.使用

html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。

sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储. 而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的

线性表的两种存储方式解析.

顺序存储: typedef struct _tag_LinkNode { int length; int capacity; void **node; }Link; 用以上结构体表达,length表示线性表目前有多少元素,capacity表示整个线性表的容量(创建之时已固定) 而这个node,最不容易理解,可以抽象为一个指针数组.每个元素都指向一个业务节点的内存地址,在创建之时必须与capacity动态绑定,代表可以容纳多少个业务节点. 在封装内部方法时,核心思想是业务层将业务节点转换成void

MySQL 的两种存储引擎

MyISAM 是MySQL的默认数据库引擎(5.5以后默认是InnoDB)性能极佳,但不支持事务处理. InnoDB 是MySQL的数据库常用的数据引擎. MyISAM 和 InnoDB 两者之间有明显的区别,简单梳理一下: 事务 m:每次查询具有原子性,执行速度比i快但是不支持事务操作. i:提供事务.回滚.崩溃修复能力的事务安全(ACID)型数据引擎 存储 m:每个m表在磁盘上存储成三个文件.分别是表定义文件(表名xx.frm).数据文件(表名xx.MYD).索引文件(表名xxx.MYI).

Linux中的两种link方式

Linux系统中包括两种链接方式:硬链接(hard link)和符号链接(symbolic link),其中符合链接就是所谓的软链接(soft link),那么两者之间到底有什么区别呢? inode 在Linux系统中,内核为每一个新创建的文件分配一个inode,每个文件都有一个惟一的inode,这里将inode简单理解成一个指针,它永远指向本文件的具体存储位置同时,文件属性保存在inode里,比如owner等.在访问文件时,inode被复制到内存,从而实现文件的快速访问.系统是通过inode来

Ajax中的get和post两种请求方式的异同

Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.   1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程.   2. 对于get方式,服务器端用Request.QueryS