cam*_*mil 8 mysql database postgresql version-control mongodb
我想在数据库中存储博客文章.我认为拥有不同版本的数据会很不错,就像版本控制对文本文件一样.
所以,我想它就像一个表中的一行,有版本控制.因此,例如,您可以检索该行的最新版本或先前版本.你甚至可以从那一行开始分支.
有这样的事吗?
可能有用的信息:我目前正在使用Python,Django和MySQL.我正在试验MongoDB
编辑为清晰/更多上下文:我正在寻找一个更适合行的"版本控制"而不是数据库的解决方案; 我对分支整个数据库并不感兴趣.例如,我将能够在2011年1月1日和2010年1月1日查询博客文章的内容(无需切换数据库).
版本控制是一个复杂的话题;做对了真的很有挑战性,这就是为什么即使使用例如 git 也会很困难。我不想写一个完整的版本控制系统。
对于更简单的需求,请考虑以下结构,在伪 mongodb/JSON 中:
BlogPost {
"_id": ObjectId("..."),
"slug" : "how-to-version-my-posts",
"author" : "cammil",
"published" : date,
"lastModified" : date,
"publicVersion" : 32,
"draftVersion" : 34,
"teaserText" : "lorem ipsum dolor sit amet..."
}
BlogPostBody {
"_id" : ObjectId("..."),
"Version" : 32,
"Text" : "lorem ipsum dolor sit amet..."
}
Run Code Online (Sandbox Code Playgroud)
所以这里的想法是单独存储每个版本,并为编辑、博主等提供指向当前公开版本和当前版本的指针。
我的回答有点以 MongoDB 为中心(因为我构建了一个基于 MongoDB 的博客引擎供家庭使用),但它应该适用于任何存储系统。
好处:
MAX
查询公共或私人帖子的版本号last edited
,以版本号,这可能是不希望缺点:
首先,我必须说这是一个有趣的问题。
在我的工作中,我必须保存各种用户输入的版本。我这样做的方式,无论如何我真的不知道这是否是正确的方式,如下:
我有一张master
桌子和revisions
一张桌子。我选择这两个名称只是为了示例。
master 所做的是存储以下信息:
revisions
下面是什么店:
我通过这种方式取得的成果是我获得了一个 ID,比如说一篇博客文章。如果有人编辑了帖子,我会将这些信息存储到revisions
表格中。通过触发器,我增加了version_id
inrevisions
表。之后,我master
用最新的version_id
数字更新表。这样我就不必MAX()
在想查看最新版本时执行。
这样我就获得了简单而强大的网站内容版本系统。很容易看到变化,如果你滥用 MySQL 的一些很酷的特性,获取数据的速度也非常快(在我的实际表中,我最大限度地滥用了 InnoDB 的集群主键。所以 db 设计与那个略有不同。我在这里发帖)。
归档时间: |
|
查看次数: |
3294 次 |
最近记录: |