【发布时间】:2023-09-04 02:48:01
【问题描述】:
我正在为大量记录或文件(~5000 万,~100GB 未打包,~20MB 打包)寻找一个简单的版本控制系统。这些文件每个只有几千字节,并且具有唯一的 ID,所以我不介意它们是否存储在平面结构(表、目录...)中。平均而言,每条记录每月更改一次,但大多数更改的差异小于千字节,因此压缩版本应该很容易。但是,每个版本都有一个条目的幼稚数据库会增长得太快。我需要以下操作:
- 基本 CRUD 操作:创建、读取、更新、删除
- 最近更改的快速列表
- 快速列出特定记录的最近更改
- 查询给定时间段内的变化
- 查询给定用户的更改(每个编辑都与某个用户 ID 相关联,并且可以选择将提交消息作为评论)
- 对于写操作,必须有一个提交挂钩来验证和拒绝格式错误的记录。
简而言之,我正在寻找一个类似 Wiki 的软件,用于简单的记录或文件。
我想到了可能的解决方案:
将文件放入版本控制系统。这为我提供了复制和许多可用的访问工具,因此它是我的首选解决方案。但是对于像 git 这样的分布式系统来说,数据量太大了。有人使用 Subversion 成功完成类似任务吗?
在数据库或文件系统中实现我自己的版本控制。我可能只需要存储压缩记录和差异,会有更多的工作和学习一些东西。如果只是为了好玩,这将是我的首选解决方案。
使用版本控制文件系统。这将使设置、复制和访问更加困难。可能我需要在文件系统之上实现自己的访问 API。
使用版本控制数据库系统。你能推荐一些吗?
使用一些其他现有数据存储进行版本控制(MediaWiki?、Amazon Cloud Drive?...)
显然有很多路径。其他人成功使用了哪些路径来处理相似或更多的数据?
【问题讨论】:
-
Subversion 是您的首选,您尝试过吗?它应该扩展到该大小的数据库,并且每个版本都将采用(二进制)差异。主要问题是它将每个文件的“原始”副本存储在工作副本中,从而有效地将客户端上的数据库大小加倍。 svn 1.7 改进了工作副本元数据存储,这可能会有所改善。
标签: version-control database-versioning