简单版本控制系统或版本控制文件系统或版本控制数据库

时间:2011-04-08 10:00:16

标签: version-control database-versioning

我正在寻找一个简单的版本控制系统,用于大量的记录或文件(约5000万,~100GB解压缩,~20MB打包)。这些文件每个只有几千字节,并且有唯一的ID,因此我不介意它们是否存储在平面结构(表,目录......)中。平均而言,每个记录每月更改一次,但大多数更改的差异小于千字节,因此压缩版本应该很容易。但是,每个版本只有一个条目的天真数据库会增长得太快。我需要以下操作:

  • 基本的CRUD操作:创建,读取,更新,删除
  • 最近更改的快速列表
  • 快速列出特定记录的最近更改
  • 查询给定时间段内的更改
  • 查询给定用户的更改(每个编辑与某个用户ID相关联,并且可选地将提交消息作为注释)
  • 对于写操作,必须有一个提交钩子来验证和拒绝格式错误的记录。

简而言之,我正在为简单的记录或文件寻找类似Wiki的软件。

我想到了可能的解决方案:

  • 将文件放入版本控制系统。这为我提供了复制和许多可用的访问工具,因此这是我的首选解决方案。但是对于像git这样的分布式系统来说,数据量太大了。是否有人使用Subversion成功完成类似任务?

  • 在数据库或文件系统中实现我自己的版本控制。我可能只需要存储压缩的记录和差异,会有更多的工作和学习的东西。如果只是为了好玩,这将是我首选的解决方案。

  • 使用版本控制文件系统。这将使设置,复制和访问变得更加困难。可能我需要在文件系统上面实现我自己的访问API。

  • 使用版本控制数据库系统。你能建议吗?

  • 使用其他现有数据存储进行版本控制(MediaWiki?,Amazon Cloud Drive?,...)

显然有许多方案。其他人使用哪种方法成功获得相似或更大量的数据?

1 个答案:

答案 0 :(得分:0)

如果你不反对在你的客户端上拥有每个文件的原始副本(我认为这是好的,如果你正在考虑svn)那么git可能是你问题的一个很好的解决方案。底层存储库存储将使用文件之间以及版本之间的二进制差异,因此您应该在那里接近最佳压缩。

使用裸仓库和一些脚本,您甚至可以在没有检出当前版本的情况下逃脱:可以从命令行获得对象,您可以在不签出的情况下创建新提交。

相关问题