sql 和 c# 中数据版本控制的最佳实践

Best practice for data version control in sql and c#

在这个问题中,我想弄清楚,在 sql 中控制数据版本的最佳做法是什么。我们正在使用关系数据库(Sybase SAP Sql Anywhere)。问题是,我们不知道应该在软件的哪一层实施版本控制系统。我们想编写一个通用系统,以便版本控制适用于所有类型的数据,每种类型(类型:联系人、约会等)的工作量很小。

以下是我们找出的选项: 1.使用一个entity framework并计算两个模型的差异。然后将差异保存到数据库 2.使用触发器和comapre新旧数据并将它们分开保存table 3. 使用证明更改并将它们保存在单独的 table

中的程序

我知道这是一个非常笼统的问题,但也许有人对我们的问题有好的想法和解决方案。

编辑

重要提示:我想创建数据本身的版本,而不是 sql 模式或某些 sql 代码的版本。

EDIT2

让我们使用以下简单示例。我有一个小联系人table(不是我们真正的联系人table):

CREATE TABLE Contact
(
    "GUID" Uniqueidentifier NOT NULL UNIQUE,
    "ContactId" BIGINT NOT NULL Identity(1,1),
    "Version" INTEGER NOT NULL,
    "FirstName" VARCHAR(100),
    "LastName" VARCHAR(200),
    "Address" VARCHAR(400),
    PRIMARY KEY (ContactId, Version)
);

不,每次有人对联系人对象进行更改时,我都想保存它的新版本。但我正在寻找一个通用的解决方案。这必须为每种类型实现。

谢谢!

作为与数据库源代码控制息息相关的人(DBmaestro 出色团队的一员),我可以推荐两种方法的组合,具体取决于您如何 运行 增量。

  1. 使用触发器,您应该保存部署所需的所有信息,如果它使用缓慢变化的维度或整个 table 内容
  2. 使用分析差异知道的程序生成相关的delta脚本

我们有同样的问题,并尝试通过为我们想要关注的每个实体存储版本和分支 ID 来解决它。 在不同的 table 中,我们存储版本及其前身版本 ID,因此我们可以追踪分支在哪里相遇。 我们单独有一个带有版本号的审计跟踪。

我想知道这是否具有您需要(编辑)的相同元素,以及自您提出问题和上次编辑以来您是否有所进步。

感谢您提出合并唯一 ID 和版本号的建议