问题标签 [database-versioning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1066 浏览

php - 如何处理 PHP 中的数据库/表更改?

好的,现在我遇到了这个问题,我需要为我的用户表添加一个“余额”列。我正在使用 Zend 框架,我希望在这里使用这个:

http://framework.zend.com/wiki/display/ZFPROP/Zend_Db_Schema_Manager+-+Rob+Allen#Zend_Db_Schema_Manager-RobAllen-6.Milestones%2FTasks

不幸的是,我想它从未进入实施阶段,只有头文件,实施文件无处可下载。

大家有什么建议吗?我不想去 5 mysql 数据库并手动添加我需要的列 - 同时我不想每次我需要进行任何数据库更改时都这样做。我需要类似 zend 模式管理器组件的东西。

0 投票
2 回答
5413 浏览

ruby-on-rails - Rails 中的对象版本控制,如 Papertrail,但单独的表

对于我目前正在进行的项目,我需要实现对象版本控制。不幸的是,我需要保留每个对象的完整历史记录,因此像 Papertrail 这样的单表解决方案很快就会变得无法管理。然而,Papertrail 有一些我喜欢的功能,但我无法在每个模型的单独表的解决方案中找到这些功能(例如acts_as_versioned)。

  • 能够存储来自控制器和模型的元信息
  • 数据已序列化,因此架构更改不会修改版本表
  • 遍历版本的强大方法
  • 自动跟踪变更责任

还有一些 Papertrail 没有的功能可以作为奖励:

  • 内置版本差异支持
  • 差分版本而不是完整版本

我目前正在考虑分叉 Papertrail 为每个模型使用单独的表,但如果有现有的解决方案,我希望节省这项工作。

更新: Vestal 版本默认使用单个表,但通过为每个模型提供自定义版本类并使用 ActiveRecord 的“set_table_name”方法,我能够为每个模型创建单独的表。Vestal Versions 还内置了差异支持,尽管它的界面不如 Papertrails 强大。它也缺乏关联支持。

更新 2: 由于 papertrail 似乎是一个更活跃的项目,我已经分叉了 gem,并添加了类似于 Vestal 版本的自定义类支持,现在允许为每个模型定义单独的表。我的 fork 在这里,但我希望它很快会被拉入主项目存储库。 https://github.com/benzittlau/paper_trail

0 投票
1 回答
1386 浏览

version-control - 简单的版本控制系统或版本控制文件系统或版本控制数据库

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

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

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

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

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

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

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

  • 使用版本控制数据库系统。你能推荐一些吗?

  • 使用其他一些具有版本控制的现有数据存储(MediaWiki?、Amazon Cloud Drive?、...)

显然有很多路径。其他人成功使用了哪些路径来处理类似或更多的数据?

0 投票
2 回答
530 浏览

database - Versioning a dataset in an RDBMS using initials and deltas

I'm working on a system that mirrors remote datasets using initials and deltas. When an initial comes in, it mass deletes anything preexisting and mass inserts the fresh data. When a delta comes in, the system does a bunch of work to translate it into updates, inserts, and deletes. Initials and deltas are processed inside long transactions to maintain data integrity.

Unfortunately the current solution isn't scaling very well. The transactions are so large and long running that our RDBMS bogs down with various contention problems. Also, there isn't a good audit trail for how the deltas are applied, making it difficult to troubleshoot issues causing the local and remote versions of the dataset to get out of sync.

One idea is to not run the initials and deltas in transactions at all, and instead to attach a version number to each record indicating which delta or initial it came from. Once an initial or delta is successfully loaded, the application can be alerted that a new version of the dataset is available.

This just leaves the issue of how exactly to compose a view of a dataset up to a given version from the initial and deltas. (Apple's TimeMachine does something similar, using hard links on the file system to create "view" of a certain point in time.)

Does anyone have experience solving this kind of problem or implementing this particular solution?

Thanks!

0 投票
2 回答
67 浏览

versioning - 版本控制默认安装/自定义触发器和存储过程

我是一家小公司的开发人员,我们正在努力实现一致的变更控制。我遇到了非开发人员在生产安装中调整存储过程和触发器的问题。当我们应用升级时,它们的更改将被覆盖,因为它们已经超出了开发团队用来验证数据库更改是否已合并到源代码控制中的过程。

您建议如何从技术和个人角度解决这个问题?

编辑 1:我们当前流程的一些背景知识可能会有所帮助。我们使用持续集成服务器 (TeamCity) 在签入时生成安装工件和标签 svn。当我们应用修复时,我使用 NMigrations 来管理模式和 sp/trigger 更改。不幸的是,阻止未经授权的模式更改超出了我的能力范围,因此我希望找到一种允许可覆盖触发器/sp 定义的设计模式。

0 投票
1 回答
919 浏览

cocoa-touch - 如何在 Xcode4 中将数据模型转换为版本化数据模型?

我记得在 Xcode 3.x 中,您可以简单地添加模型版本,然后 Xcode 会将您的数据模型转换为版本化数据模型。出于某种原因,当我按照 Xcode4 中的相同步骤尝试这样做时,它会使环境崩溃并且不会进行任何所需的更改。

有谁知道在 Xcode4 中版本控制和迁移数据模型的正确步骤?

我刚刚发现了这个先前的问题并发表了评论。我相信这是同一个错误,他们还没有修复它。

0 投票
2 回答
6039 浏览

mysql - Row versioning in MySQL

I would like to include an integer version field in my table, auto-incrementing on each update made to a row. Is it possible to do this in MySQL?

Please note that I'm not talking about a TIMESTAMP, which is not reliable as two concurrent updates might happen during the same second.

0 投票
1 回答
541 浏览

inheritance - 在 sqlalchemy 中使用版本控制和多级继承时遇到问题

我正在尝试使用 sqlalchemy 网站 ( http://www.sqlalchemy.org/docs/orm/examples.html#versioned-objects ) 上描述的版本控制方法以及多级继承模型 (Joined-Table 继承)

这是我的声明:

每当我尝试“create_all()”时,我都会收到以下错误:sqlalchemy.exc.ArgumentError:找不到“tissue_history”和“leucegene_tissue_history”之间的任何外键关系。

单级继承效果很好(即:如果我停在“组织”并且不声明“白血病组织”)但我真的需要一个多级继承方案才能工作..

谁能给我任何指示?

谢谢 !!

0 投票
5 回答
11093 浏览

git - 复杂分支系统中的数据库迁移

在我们当前的开发工作流程中,我们引入了数据库迁移(使用Ruckusing)以保持我们开发人员的数据库模式同步。它工作得很好,使用起来非常简单,但现在我们已经切换到 git 作为 VCS,我们面临着数据库版本控制系统中的下一个问题。

当检查一个已经开发了一段时间的分支时,可能会发生数据库模式与我来自的分支中的模式有很大不同的情况。这在某些情况下会导致数据库冲突。从逻辑上讲,我们似乎需要根据我们之前所在的分支运行迁移,但这会变得非常复杂,并且肯定会遇到一些人的问题。据我所知,没有一个支持分支的数据库迁移系统?

切换到功能分支时会增加复杂性,我们可能需要向上运行一些迁移,而其他向下迁移......从技术上讲,使用我们当前的 dbmigration 脚本似乎是不可能的,是否有任何明智的选择?在一个非常活跃和分支的开发系统中,是否有任何首选的方式来处理数据库迁移?

0 投票
1 回答
528 浏览

sql-server - 如何使用 RoundhouseE 以正确的顺序运行依赖于 sp 的创建索引脚本

关于回旋的问题。我有一个脚本调用 sp 来确定创建索引需要多少空间。(我们正在使用具有最大数据库大小限制的 sql express)。根据剩余空间的多少,它会从一大堆表中删除行,然后使用通常的检查创建索引(如果 sysindex 中不存在...创建索引...)。调用的 sp 将来会在其他索引创建脚本中使用,因此除非没有选项,否则我宁愿将其保留为 sp 而不是创建索引脚本的一部分(内联)。问题是roundhouse首先在UP文件夹中运行我的索引创建脚本,然后在sp文件夹或runfirstafterUp文件夹之后运行。它找不到 sp,因为它没有先插入数据库。请告知是否有任何解决此序列问题的方法。谢谢