【问题标题】:Database sharing/versioning数据库共享/版本控制
【发布时间】:2011-01-28 17:33:20
【问题描述】:

我有一个问题,但我不确定要使用哪个词。

我的问题:我有一个使用数据库存储信息的应用程序。数据库可以在访问(本地)或服务器(SQL Server 或 Oracle)中。我们支持这 3 种数据库。我们希望让用户能够做我认为我们可以称之为版本控制的事情。

让我解释一下:我们有一个数据库 1.这是master。我们希望能够创建与数据库 1 相同的数据库 2,但我们可以将其提供给其他人。

他们彼此合作,在这个非常复杂的数据库中添加、修改和删除记录。之后,我们希望数据库 1 包含来自数据库 2 的更改,但可以忽略一些更改。

供您参考,您的应用程序已经是多用户的,那么我们为什么不直接使用这个多用户而忘记这个版本控制呢?这是因为有时,我们需要将数据库的副本提供给另一个站点上的另一个公司,而他们无法连接到我们的服务器上。他们在他们身边工作,然后,我们想要合并。

这里有没有人对这种类型的要求有经验?我们有很多想法,但其中大多数都需要大量工作,对数据库或现有查询进行大量修改。

这是一个 200 万且不断增长的 C++ 应用程序,因此无法重写!

感谢您提供给我们的任何想法!

J-F

【问题讨论】:

  • 这听起来很乱,去过那里,祝你好运

标签: database versioning sharing


【解决方案1】:

您要查找的术语是数据库复制。您可以通过 google 来获取有关该主题的更多信息(我的个人经验有限)。

【讨论】:

  • but with the possibility to dismiss some of the change. 会很困难
  • @KM:我怀疑他们会找到现成的产品。但是文献应该为他们提供有关如何进行日志记录或检测更改以及在数据库节点之间移动更新信息的信息。已经有 200 万行代码,听起来他们愿意开发自己的解决方案。
  • 我同意doubt they'll find an off-the-shelf product.
  • 非常感谢您的帮助。我们将继续分析对我们数据库的影响。
【解决方案2】:

这已经由 ical(一个旧的 SunOS 日历应用程序)完成。

当应用程序进行更改时,您存储/记住/传输的不仅仅是数据库内容,而是实际的更改日志(例如“删除 ID 1 的记录”、“使用这些字段更新 ID 2 的记录”、“插入包含这些字段的记录")

这样您可以稍后将这些更改应用到主数据库,并在应用之前过滤它们

【讨论】:

  • 谢谢,这也是个好主意。我们正在我们的一个小型应用程序上执行此操作,管理起来非常复杂,但它是一个看起来不错的解决方案。