快速工作的自由 - SQL Professional Toolbelt





0/5 (0投票)
2006 年 12 月 21 日
9分钟阅读

20387
数据库专业人员在工作场所扮演着特殊的角色,因为他们要负责客户数据库的完整性。本文认为,使用实时实例的“在线”或“锁梯”数据库开发模型是确保真正数据库完整性的唯一途径。
这是我们 CodeProject 赞助商的产品展示评测。这些评测旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。
引言
DBA 和数据库开发人员与其他软件工程师不同。应用程序软件工程师的最后期限通常可以看作是开发、测试和营销三方拔河比赛的标志。只要你足够用力地拉(或站稳脚跟),你就可以期望将最后期限向有利于你的方向移动。
但对于 DBA 和开发 DBA 来说,最后期限仍然具有其原始含义。正如时间和潮汐一样,数据库通常不会等待任何人。客户(或供应商)数据流入数据库的速度不由 DBA 控制。这取决于客户;虽然何时升级生产数据库的确切时间可能取决于 DBA,但这一决定很大程度上受到业务交易的发生速率和数量的影响。
如果您是一家在网上销售的软件公司,您的客户数据库的内容无疑比您存储产品的源代码控制数据库更有价值。毕竟,重新设计整个软件产品线可能需要一年时间。但重新增长客户数据可能需要 **五年** 时间。正是这些数据才是公司的真正瑰宝——黄金河流——委托给 DBA 的稳健之手。
商业世界的运作方式通常是:你承担的责任越多,你就能要求越多的行政自主权。
假设你是一名深海工程师,在三十英寻的水下为石油平台进行精密焊接。作为一名将生命置于危险中的专业人士,你绝不会接受公司提供的标准 BCD(浮力控制装置),仅仅因为他们碰巧以优惠的价格购得。你会在合同上坚持要获得——水箱、干式潜水服、BCD、调节器,甚至是你将要呼吸的压缩空气的品牌——这些你亲自测试并选择过的设备,因为你可以用它们来保护你的生命;同样,也能保护你队友的生命。
同样,如果你的工作的安全取决于你所维护的数据库的完整性,那么你就可以期望自己来决定如何完成这项工作。在有理智的人看来,没有人会在不要求完全自主选择随时可用的工具的情况下,承担如此高的责任。
责任通常被视为做出影响他人组织工作的决定。但这掩盖了真正的等式:责任 = 影响你 **你** 工作方式的决策能力。
在过去的六年里,随着 SQL Compare 和 SQL Data Compare 等强大且可靠的工具的广泛采用,SQL Server 专业人员的工作(无论你是开发还是管理数据库)自然围绕着“锁梯”模型演变而来。这是许多世纪以来工程师们利用一系列锁闸——有时是 10 个或 20 个甚至更多——来控制流量并确保所有船只及其货物安全,从而将运河引向上坡和下坡的陡峭坡度的方式。
在 SQL 世界中,从开发到生产的数据库梯子允许进行一系列分步更改、测试和实现,而不会损害生产数据库。梯子中的每个锁闸都是一个实时数据库,这意味着它是服务器上的实际实例。混淆仅在于“实时数据库”有时也指“生产数据库”,或楼梯顶端的公共可见数据库。将更改向上游推送意味着以锁定的步骤——通常是通过测试和暂存数据库——向上移动更改,直到顶部的最终可见实例。
“锁梯”模型是奥卡姆剃刀的最爱:开发和更新数据库最简单、最直接的方法,因为它需要最少的格式切换。这意味着只进行您打算进行的更改,而无需通过将各种 DBO 选择集切换进出 .sql 文件源代码控制系统,从而使 Master(即承载最新更改的实例)暴露于不必要的人为错误。
只要完整性可以得到保证,就应该始终优先选择更简单的开发过程而不是更复杂的开发过程,正是因为需要最大限度地减少损坏数据库的机会。该模型已成为数十万数据库专业人员事实上的工作方法,因为它安全高效。
Visual Studio Team System Team Edition for Database Professionals (VSTSTEforDP) 是微软的一项新产品,旨在用“干船坞”模型取代“锁梯”模型。在干船坞中,船只在返回水中进行试航之前,会完全从水中移除进行改装,然后再返回干船坞进行进一步调整,例如修补船体上任何剩余的泄漏,或重新调整螺旋桨轴。
应用于数据库,这种“干船坞”模型提供了一个离线工作流程系统,用于远程开发,不与实时服务器交互,而是使用一个由 .sql 文件组成的数据库项目,这些文件根据需要检入和检出到源代码控制应用程序中。一旦你(和你的团队成员)对 SQL 脚本进行了更改,你就可以将它们检入源代码控制,并希望从这些脚本的集合中生成一个实时数据库实例。
在接下来的两节中,我们将介绍“在线”和“离线”开发模型的论证。
离线“干船坞”模型
优点 | 缺点 |
管理:可以说,将数据库人员作为工程部门的一部分更容易管理。 | 无法访问:你无法直接查询你正在开发的数据库,而必须从你正在处理的脚本生成新实例。 |
源代码控制:架构可以更轻松地存储在源代码控制中,这为团队协作、版本控制和对象级别历史记录提供了现成的解决方案。 | 无法测试:由于没有真正的数据库,直到部署数据库之前都无法对其进行“测试”,这是一个额外的步骤。 |
工作流程:数据库架构可以按任何顺序开发,而不是按对象依赖性约束的顺序开发。对象可以按任何顺序添加或删除。 | 易损坏:由于没有强制执行数据库完整性,因此很容易在源代码控制中出现“损坏”的数据库,因为开发人员不仅可以破坏自己的数据库,还可以破坏团队其他成员的数据库。 |
效率低下:在进行更改时,增加了不必要的中间“数据库项目”步骤,从而减慢了流程并增加了人为错误的几率。 | |
封闭:缺乏简单易用的远程数据库部署和更新方法。 | |
不清晰:由于离线项目开发零散,维护透明准确的文档变得困难。 | |
奥卡姆剃刀:这完全违背了“如果没坏,就别修”的基本原则。 |
在线“锁梯”模型
优点 | 缺点 |
准确性:保证数据库完整性——即,如果更改破坏了数据库,则无法进行更改。 | 源代码控制:目前,这并未提供理想的源代码控制和版本控制方法。 |
速度:它快速高效——取决于数据的关键程度,开发人员可以设置任意数量的锁梯。 | 审计:数据库快照仅提供有限的审计跟踪机制。 |
灵活性:有各种各样的生产力工具可用于处理“锁梯”模型。 | |
访问:对于大多数开发人员来说,能够运行他们正在开发的数据库的查询至关重要。 | |
简单性:它使事情尽可能简单,最大限度地减少从脚本到实例再返回的传输,从而减少了意外数据库损坏的机会。 | |
熟悉度:迄今为止,它是行业中最广泛使用的开发模型,因此更容易进行培训、扩展和共享最佳实践。 |
偏向于经过验证、测试和广泛使用的在线数据库开发模式。这并不是说它完美无瑕,但它目前更贴近数据库专业人员的日常需求,并为在长期内满足他们尚未满足的需求提供了更大的机会。由于其广泛的采用,已经有众多供应商积极竞争,为该领域提供最简单、最可靠的工具。
但 SQL Server 数据库专业人员更喜欢使用一系列实时实例进行开发和更新的最有说服力的原因是:每次进行或迁移架构更改或数据更新时,你都能绝对清楚地知道数据库完整性得到了维护。你可以争辩说,这增加了压力,尤其是在从暂存环境同步到生产环境的最后阶段。但是,问任何领域的专业人士,他们都会告诉你,压力——对你行为重要性的认识——对于确保最佳绩效至关重要。无论是登山还是切割钢板,当你放松压力、注意力分散时,就会发生错误和事故。
对数据库进行干船坞式处理意味着从源头上消除了压力。当你将脚本从源代码控制中检出时,你对你(或其他团队成员)所做的更改是否会生成损坏的数据库没有任何反馈。
数据库专业人员第一次就做得对,因为他们是真实地进行的。
附录:SQL Toolbelt 与 VSTSTEforDP 的功能比较
特点 |
|
|
架构比较和同步 | SQL Compare | 架构比较 |
|
|
|
数据比较和同步 | SQL Data Compare | 数据比较 |
|
|
|
IntelliSense™ | SQL Prompt | - |
可视化建模 | SQL Dependency Tracker | - |
API 自动化 | SQL Toolkit | - |
数据库部署 | SQL Packager | - |
压缩、加密备份 | SQL Backup | - |
重构 | SQL Refactor - 12 种重构 | Object rename - 1 种重构 |
日志分析 | SQL Log Rescue | - |
文档 | SQL Doc | - |
单元测试 | - | 单元测试 |
数据生成 | - | 数据生成 |
源代码控制兼容性 | (2007 年第二季度上市) | 数据库项目 |
价格 – 3 年 20 用户许可证 | $2,391/席 | $6,066/席 |