我很想知道其他人使用哪些方法来跟踪对数据库所做的更改,包括表定义更改、新对象、包更改等。您是否使用带有外部版本控制系统的平面文件?触发器?其他软件?
我们的开发人员正在处理的数据库太大(有很多数据库对象)。我们必须控制 db 对象的更改(更改管理)。我们公司不能有一个人只负责数据库的变化。所以我们需要一个数据库对象的源安全,类似于标准代码的版本控制,但更多地与数据库相关,可以同步数据库和脚本。什么是最好的。可靠、便宜、实用 - 选择两个:)
source-control sql-server version-control sql-server-2008-r2
我目前正在使用 Tortoise SVN 对 .NET Web 应用程序进行源代码控制。将我们的 SQL Server 存储过程引入源代码管理的最佳方法是什么?我目前使用 VS 2010 作为我的开发环境,并使用 SQL Server Data Tools (SSDT) 连接到外部 SQL Server 2008 R2 数据库。
我过去一直在做的是将 procs 保存到 .sql 文件并将这些文件保持在源代码控制之下。我确定一定有比这更有效的方法吗?我可以在 VS2010、SSDT 甚至生产机器上的 SQL Server 上安装扩展吗?
sql-server-2008 source-control sql-server stored-procedures version-control
处理具有多个分支的项目,其中每个分支最终会合并回主分支,并且本质上是孤立的,以便开发新功能。
数据库,即 MS SQL Server,有一个共享架构,但是每个分支都会随着它的进展对架构进行更改。
我的主要问题是什么是处理从主分支到派生分支共享架构的好方法,以便对主分支所做的更改可以轻松合并到派生分支中,而无需在派生分支中进行新更改分支?
我使用Git对我的大部分工作进行版本控制:代码、文档、系统配置。我能够做到这一点,因为我所有有价值的工作都存储为文本文件。
我也一直在为我们的 Postgres 数据库编写和处理很多 SQL 模式。该模式包括视图、SQL 函数,我们将用R编程语言(通过PL/R)编写 Postgres 函数。
我试图复制和过去我和我的合作者编写的块模式,但我忘记这样做了。复制和过去的动作是重复的并且容易出错。
pg_dump / pg_restore 方法将不起作用,因为它会丢失注释。
理想情况下,我希望有某种方法将我当前的模式提取到一个或多个文件中并保留注释,以便我可以进行版本控制。
带注释的版本控制架构的最佳实践是什么?
我维护一个使用 PostgreSQL 数据库的遗留应用程序。
该应用程序严重依赖于存储过程(又名函数)。
我想将这些函数保存到以函数名命名的文件中,以便我可以使用 VCS(版本控制系统)。
我知道我可以ALTER FUNCTION使用 using保存代码,PgAdmin但这一次只允许我保存一个函数。
我正在寻找一种自动保存所有功能的方法。有没有办法编写此任务的脚本?
我在这里谈论的版本不是版本控制系统。就像在 SO 中一样,我得到了一些可以进行版本控制的文本数据(将它们与问题进行比较)(在编辑、保存、回滚的意义上)。每次编辑、更新、保存的内容都将根据最终用户的选项保存为新版本。我应该如何为这种任务设计一张桌子?
id pk auto increment
content
parentid defaults to 0
version defaults to 0
Run Code Online (Sandbox Code Playgroud)
id content parentid version
1 Hello World 0 0
2 Hello Doggy 1 1
3 Hello Kitty 1 2
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,父 ID 等于现有 ID 的每条记录都将保存在增量版本中(实际上是在服务器端代码中计算的)。显示在 UI 中,如下所示
1.Hello World
-Hello Doggy(Version1)
-Hello Kitty(Version2)
Run Code Online (Sandbox Code Playgroud)
其中每个都显示为链接,以便可以进行进一步的编辑。事情像预期的一样没有问题,但我们想改进这一点,我认为最好从桌子设计开始。
我是数据库设计师,在我当前的项目中,我正在实现在 RDBMS 中同时编辑数据行所需的版本控制功能。项目要求说,数据编辑会话可以持续几个小时或几天,直到执行提交。此外,在不同用户同时修改相同数据时产生的冲突应该以手动和半自动解决的可能性进行处理。换句话说,所需的编辑工作流类似于面向文档的版本控制系统(例如 SVN 或 Git)中使用的工作流。因此,传统的 OLTP 方法和冲突解决策略(MVCC、乐观/悲观锁)不能满足我的约束。我对现有工具进行了一些观察,这些工具为分支版本历史记录和多版本工作流提供了可能性:
SQL:2011 没有解决我的问题,因为它提供了对“线性”编辑历史的支持,而不是我正在寻找的分支。ESRI 和 Oracle 的解决方案是不错的候选者,但我很失望它们都具有用于操作版本的供应商特定接口。目前似乎没有人可以为关系数据的分支版本控制提供行业标准的解决方案(就像 SQL:2011 为时态表和线性版本历史所做的那样)。作为一名新来的数据库研究员,我想了解:
我想我可以尝试深入挖掘并提出一些标准模型或子语言来处理类似 Git 的版本控制,但我不知道从哪里开始。
我正在做一个新项目。项目的域逻辑如下:
用户上传文件(文档)并给出标题,然后另一个用户出现并且(她)也尝试上传具有相同标题的文件。只要文档的正文有差异,这就可以了。
如何设计我的域模型,以便稍后使用数据的 Web 应用程序可以通知查看特定文档的用户“嘿,此文档还有另一个版本”。
这是我所拥有的一个简单的 ERD,但这显然不能执行我上面想要的。

我将不胜感激任何帮助和建议。
谢谢
我有一个想法可以供我的开发人员使用,并且基本上需要反馈。
这个想法是拥有一个集中的 SQL Server 数据库服务器供所有开发人员使用。
每个开发人员都可以在特定项目的服务器上拥有自己的数据库(例如,SW_ProjectName)。
因此,如果开发人员休假一周,而我们需要在截止日期前完成,我们可以通过更改本地配置连接字符串轻松连接到他们的数据库。
除此之外,它们将是一个测试数据库(例如ProjectName_Testing),开发人员将使用它在部署到 Staging 之前运行测试他们的 sprint。
任何人都可以想到这种方法的优点和缺点,而不是让每个人都拥有自己的本地数据库进行开发。
在PostgreSQL Concurrency With MVCC 页面上,它说:
知道你在想什么:同时更新同一行的两个事务怎么样?这就是事务隔离级别的用武之地。Postgres 基本上支持两种模型,允许您控制如何处理这种情况。默认值 READ COMMITTED 在初始事务完成后读取行,然后执行语句。如果行在等待时发生更改,它基本上会重新开始。例如,如果您使用 WHERE 子句发出 UPDATE,则 WHERE 子句将在初始事务提交后重新运行,如果仍然满足 WHERE 子句,则执行 UPDATE。
该文件似乎表明,提交读仍然受到故障,应予以重审。
可以将 READ COMMITTED 设置为以与 SERIAZLIZABLE 相同的原子性无限期重试吗?
postgresql performance version-control serialization postgresql-performance
version-control ×12
sql-server ×5
postgresql ×3
schema ×2
backup ×1
erd ×1
functions ×1
mysql ×1
oracle ×1
performance ×1