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 出色团队的一员),我可以推荐两种方法的组合,具体取决于您如何 运行 增量。
- 使用触发器,您应该保存部署所需的所有信息,如果它使用缓慢变化的维度或整个 table 内容
- 使用分析差异知道的程序生成相关的delta脚本
我们有同样的问题,并尝试通过为我们想要关注的每个实体存储版本和分支 ID 来解决它。
在不同的 table 中,我们存储版本及其前身版本 ID,因此我们可以追踪分支在哪里相遇。
我们单独有一个带有版本号的审计跟踪。
我想知道这是否具有您需要(编辑)的相同元素,以及自您提出问题和上次编辑以来您是否有所进步。
感谢您提出合并唯一 ID 和版本号的建议
在这个问题中,我想弄清楚,在 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 出色团队的一员),我可以推荐两种方法的组合,具体取决于您如何 运行 增量。
- 使用触发器,您应该保存部署所需的所有信息,如果它使用缓慢变化的维度或整个 table 内容
- 使用分析差异知道的程序生成相关的delta脚本
我们有同样的问题,并尝试通过为我们想要关注的每个实体存储版本和分支 ID 来解决它。 在不同的 table 中,我们存储版本及其前身版本 ID,因此我们可以追踪分支在哪里相遇。 我们单独有一个带有版本号的审计跟踪。
我想知道这是否具有您需要(编辑)的相同元素,以及自您提出问题和上次编辑以来您是否有所进步。
感谢您提出合并唯一 ID 和版本号的建议