最佳数据库变更控制方法

2024-04-10

作为数据库架构师、开发人员和顾问,有很多问题可以回答。其中之一,虽然我最近被问到,但仍然无法很好地回答,那就是......

“保持数据库变更记录、组织并能够在单开发人员或多开发人员环境中有效推出的最佳方法或技术之一是什么?”

这可能涉及存储过程和其他对象脚本,但尤其是模式 - 从文档到新的物理更新脚本,到推出,然后是完整的循环。有一些应用程序可以实现这一点,但需要模式挂钩和开销。我更想了解在没有大量额外第三方参与的情况下使用的技术。


我见过的最简单的方法是在不借助外部工具的情况下完成此操作,如果您愿意的话,可以创建一个“架构补丁”。模式补丁只是一个简单的 t-sql 脚本。模式补丁在脚本中被赋予一个版本号,并且该版本号存储在数据库的表中以接收更改。

对数据库的任何新更改都涉及创建一个新的架构补丁,然后您可以按顺序运行该补丁,然后检测数据库当前所在的版本并运行其间的所有架构补丁。之后,模式版本表将使用执行补丁的任何日期/时间进行更新,以存储用于下次运行。

像这样详细介绍的好书叫做重构数据库 https://rads.stackoverflow.com/amzn/click/com/0321293533.

如果您想使用外部工具,可以查看Ruby 的迁移 http://wiki.rubyonrails.org/rails/pages/understandingmigrations项目或类似的 C# 工具,称为迁移网 http://code.google.com/p/migratordotnet/。这些工具通过创建具有“向前”和“向后”迁移的 c# 类/ruby 类来工作。这些工具的功能更加丰富,因为它们知道如何在模式补丁中前进和后退。然而,正如您所说,您对外部工具不感兴趣,但我想无论如何我都会为其他读者添加它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最佳数据库变更控制方法 的相关文章

  • 如何找到与日期范围最重叠的时间段

    假设您有一个包含标识符 开始时间和结束时间的表 这些开始和结束时间可以是任意时间长度 开始时间始终早于结束时间 假设没有空值 什么样的查询会告诉我最 流行 的时间 即每行中的两个范围与大多数其他行重叠的位置 它的实际应用是它是一个记录用户登
  • 甚至阻止超级管理员/dba 删除/更新表?

    我需要确保一些关键任务表永远不会被删除或编辑 唯一可能的操作是从中读取数据 并且 dba 可以添加更多行 就是这样 现在为了增加安全性 我想阻止甚至 dba 都能够删除 更改记录 所以基本上没有人可以删除或更改记录 也没有超级管理员 这些表
  • mySQL中外键必须是索引吗?

    我刚刚自己创建了第一个 mySQL 表 除了使用 Joomla Wordpress 等 我是 MS SQL 开发人员多年 但通常我可以轻松地在 MS SQL 中创建外键 但我遇到了困难或这里缺乏知识 这是我的表格 users user id
  • 实现批量记录获取

    在程序开始时 我需要将数据从 MS Access 数据库 mdb 读取到下拉控件中 这样做是为了每当用户在该控件中键入内容时 应用程序都可以自动完成 不管怎样 从数据库中读取数据花了很长时间 所以我想我应该实现批量行获取 这是我的代码 CS
  • 密码恢复:如何解密 md5 加密的密码? [复制]

    这个问题在这里已经有答案了 可能的重复 是否可以解密 md5 哈希值 https stackoverflow com questions 1240852 is it possible to decrypt md5 hashes 在我的网站中
  • 您会在新的商业项目中使用 S#arp 架构吗?

    The S arp 架构 http code google com p sharp architecture 看起来真的很酷 但是您是否认为它仍然太新而无法在重要的新项目中做出承诺 我们假设该项目乍一看很适合它 It all seems非常
  • 如何向多个涉及外键依赖的表插入数据(MySQL)

    我正在寻找将数据插入多个 MySQL 表的最佳实践方法 其中某些列是外键依赖项 这是一个例子 Table contacts contact id first name last name prof id zip code 联系人 表有主键
  • MySQL 查询在基于特定标签组合获取行时返回不需要的行

    我在 Windows 8 PC 上运行 PHP MySQL 我有一张桌子mytable像下面这样 product tag lot 1111 101 2 1111 102 5 2222 103 6 3333 104 2 4444 101 2
  • 为什么我们需要带有聚合函数的 GROUP BY?

    我看到一个例子 其中有一个员工列表 表 及其各自的月薪 我对工资进行了汇总 并在输出中看到了完全相同的表格 这很奇怪 这是必须做的 我们必须找出本月我们支付多少员工工资 为此 我们需要在数据库中对他们的工资金额进行求和 如下所示 SELEC
  • TSQL动态确定SP/Function的参数列表

    我想将通用日志记录片段写入存储过程集合中 我写这篇文章是为了对我们的前端用户体验进行定量测量 因为我知道前端软件使用了哪些 SP 以及它们的使用方式 我想在开始性能调优之前使用它来收集基线 然后显示调优的结果 我可以动态地从 PROCID
  • 如何从函数依赖中获取最小密钥?

    我需要一些帮助和指导 我有以下关系 R A B C D E F 以及函数依赖集 F AB gt C A gt D D gt AE E gt F R 的主键是什么 如果我应用推理规则 我会得到这些额外的函数依赖项 D gt A D gt E
  • SQL Server 2008 排序规则冲突 - 如何解决?

    为了简化 POC 我使用字符类型列进行以下查询 select AH NAME1 from GGIMAIN SYSADM BW AUFTR KOPF union select AH NAME1 from GGI2014 SYSADM BW A
  • 将自连接重写为 JPQL

    我需要将此自连接转换为 JPQL SELECT s1 FROM site AS s1 JOIN SELECT site type MAX last update date AS LastUpdate FROM site WHERE site
  • Oracle 10 中的本地临时表(适用于存储过程的范围)

    我是甲骨文新手 我需要在存储过程中处理大量数据 我正在考虑使用临时表 我正在使用连接池 并且该应用程序是多线程的 有没有一种方法可以为每次调用存储过程创建不同的表实例来创建临时表 以便来自多个存储过程调用的数据不会混淆 你说你是 Oracl
  • 如何在sql server中获取从当前日期时间到过去7天的过去7天的数据

    您好 我正在使用 pentaho 将表 A 数据从 sql server 加载到 mysql 加载数据时 我只需要从 sql server A 表获取最近 7 天的数据到 mysql 在sql server中createddate列数据类型
  • SQL查询;水平到垂直

    我遇到了涉及将水平行转换为垂直行的 SQL 查询 SQL Server 以下是我的数据 No Flag 1 Flag 2 Flag 3 A 1 2 3 B 4 1 6 转换后 该表应为 No FlagsName Flag value A F
  • 将一个巨大的字符串参数传递给存储过程

    我有一个存储过程 它有两个参数 ID 和日期 当我将大文本传递给 ID 参数时 仅考虑部分文本 就好像文本在某个地方被剪切一样 我想这是因为当我执行存储过程时如下 exec proc 1 2 3 4 20100101 一切正常 但是当我使用
  • 如何选择非“唯一”行

    我有下表 我必须从中获取非唯一行 id idA infos 0 201 1899 1 205 1955 2 207 1955 3 201 1959 我想获取该列的所有行infos 具有相同的idA至少有两行的值 上表的查询输出必须是 inf
  • 数据库中的 GUID 类型

    GUID不是数据库中的正式数据类型 在我们现有的 SQL Server 设计中 Uniqueidentifier类型用于GUID价值 现在我们正在切换到Sybase数据库 我们应该使用varchar 36 来代替那个Uniqueidenti
  • ALL 的 SQL 参数

    我想知道SQL中是否有一个参数适用于所有 不是 例如 我现在正在编写一个搜索表 如果用户不在文本框中输入某些内容 则意味着忽略该特定参数并显示该字段的所有内容 我知道您可以为每种情况创建单独的 OLEDB 或 SQL 命令 并且它会起作用

随机推荐

  • SKScene 中的 Segue 到 UIViewController

    在我的 GameScene swift 文件中 我尝试执行返回到我的菜单视图控制器的操作 如下所示 func returnToMainMenu var vc UIViewController UIViewController vc self
  • MySQL CASE 是如何工作的?

    我知道 SQL 的CASE语法如下 CASE WHEN search condition THEN statement list WHEN search condition THEN statement list ELSE statemen
  • javascript 函数绑定到什么对象(它的“this”是什么)?

    我知道它在函数内部this var func function return this f arguments callee gt true if bound to some object gt false if is bound to n
  • 如何找到csv文件列的平均值

    import csv with open Met csv r as f reader csv reader f delimiter quoting csv QUOTE NONE for row in reader print row 我无法
  • 显示包含扩展信息的页面

    I have the following functionality given below 单击详细信息时 我希望内容视图上显示的文本应显示在由推送异步创建的新详细信息页面上 如何发送包含内容中给出的信息的参数 例如标题 类别和描述 我有
  • 来自 keras 模型中图像列表的 TensorFlow 数据集

    我试图了解如何读取本地图像 将它们用作 TensorFlowDataset https www tensorflow org api docs python tf data Dataset并使用 TF 数据集训练 Keras 模型 我正在关
  • 为什么没有为原始数据类型分配内存? [复制]

    这个问题在这里已经有答案了 char bool 和 int 等原始数据类型有一定的内存 假设char 它有1个字节的内存 当我们在代码中使用 char 变量时 该变量必须需要 1 个字节的内存 在这种情况下我们为什么不分配内存呢 由于我们从
  • Spring - 需要在 @Component 类中自动装配 @RestController 类

    我在同一个 Maven 父模块下组合了 Web 和核心项目 如下所示 家长 网络 com parent test web 核心 com parent test core 我想参考核心项目中的Web模块依赖项来调用Web模块中的一些api 网
  • 从打开的“fancybox”中的功能关闭花式框

    大家好 我希望能够在从内部打开 fancyBox 时将其关闭 我已尝试以下方法但无济于事 function closeFancyBox html var re Element insert complete gi if html searc
  • Tensorflow 对象检测 API 索引越界

    运行 Android TF Detect 演示并使用我重新训练的 3 类 ssd mobilenet v1 coco 模型后 我的 TF 检测演示崩溃 给出索引越界异常这是 12 26 17 53 13 931 22429 25212 or
  • 设置Loader项目属性

    In the context https stackoverflow com questions 33513546 delegate folderlistmodel in tableview文件管理器 我有一个TableView组件保存在文
  • JavaScript 组织 |带模块的模块模式

    我将代码组织成 20 60 行模块 通常采用模块模式 我想要一个结构良好的面向对象的 JavaScript 库 这是最好的方法吗 该代码已经过测试并且可以工作 我喜欢它 因为程序员可以从库中提取模块并根据需要使用它们 它们是独立的 这里是
  • ASP.Net MVC - 处理错误的 URL 参数

    处理访问者构建自己的 URL 并将我们期望的 ID 替换为他们喜欢的任何内容的最佳方法是什么 例如 ASP Net MVC 处理错误的 URL 参数 https stackoverflow com questions 236349 但用户可
  • 如何将已经编译好的C库添加到Android中?

    我已经编译了库 针对 linux a 和 windows dll 我需要将其中一个 我想对于 Android 我将不得不使用 a 库导入到我的 android 项目中 所以我已经阅读了一些关于 NDK 的教程 但这里有一个问题 我是否需要源
  • Emgu CV 和官方 Microsoft Kinect SDK?

    Emgu CV http www emgu com wiki index php Main Page目前允许将 Kinect 与 OpenNI 驱动程序一起使用 http www emgu com wiki index php Downlo
  • 整个应用程序的异常处理

    我对 iPhone 中的异常处理有一些疑问 他们是这样的 假设我有一连串被依次调用的方法 即方法 A 调用方法 B 方法 B 又调用方法 C 方法 C 调用方法 D 这是放置我的 try catch 块的最佳位置 是方法 A B C D 还
  • 用拼凑的方式组合和合并 ggplot2 中的图例

    我想结合两个或多个情节来融合他们的传奇 例如 我可以创建一些数据和两个场景 如下所示 packages library ggplot2 library patchwork first plot set seed 07042020 x lt
  • 我如何知道 Perl 正则表达式的哪一部分与字符串匹配?

    我想搜索文件的行以查看其中是否有任何行与一组正则表达式中的一个匹配 像这样的东西 my regs qr a qr b qr c foreach my line
  • jQuery 对话框回发但 UpdatePanel 未更新

    我想从代码隐藏中显示 jQuery UI 对话框 并且需要在回发后刷新它 该对话框是用于过滤和查找数据的控件 因此 用户从 DropDownLists 中进行选择并在 TextBoxes 中输入文本 单击 Apply Button 发生异步
  • 最佳数据库变更控制方法

    作为数据库架构师 开发人员和顾问 有很多问题可以回答 其中之一 虽然我最近被问到 但仍然无法很好地回答 那就是 保持数据库变更记录 组织并能够在单开发人员或多开发人员环境中有效推出的最佳方法或技术之一是什么 这可能涉及存储过程和其他对象脚本