为什么说数据库版本控制是必须的
前言 开发过程中的版本控制非常常见,但在数据库的世界来说,版本控制就是二等甚至三等公民了。当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表、存储过程和视图等对象的变动是非常重要的,每次更改数据库,都需要做详细的记录,稍
前言
开发过程中的版本控制非常常见,但在数据库的世界来说,版本控制就是二等甚至三等公民了。当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表、存储过程和视图等对象的变动是非常重要的,每次更改数据库,都需要做详细的记录,稍不留神就出问题。我任职过的几家公司在开发流程中的版本控制做的非常到位,但数据库方面却是一片空白,在开发过程中,经常会涉及到表上增加列、修改列、修改存储过程和视图,发生变化后,之前的数据库对象定义就丢失了,给开发带来非常多的麻烦,下面说说我解决没有数据库版本控制机制所引起的麻烦的思路。备份数据库
解决这个麻烦我们最开始的思路就是备份数据库,每隔几天备份一次数据库,当需要找历史数据库对象时将备份库还原到测试机上再把对应的存储过程或者表定义找出来。这种方式使用过程中就发现很多问题,首先每次需要查看历史记录的时候去还原备份非常麻烦,其次随着开发的进行,很难记得清是谁在什么时间改了什么数据库对象,必须把一段时间内的备份都还原了再进行查找。这个过程不仅让人很恼火,也非常浪费时间精力,如果备份间隔过长,期间变更的对象定义就无法找回了。导出数据库对象
后来的解决思路就是每次修改数据库对象的时候将数据库对象的定义以.sql的方式存入SVN,这种方式非常麻烦。很多时候开发人员偷懒忘记签入SVN了,则会引起很大问题。新加入团队的人也很难看清版本修改的来龙去脉。此外,这种方式非常不直观,如果希望看到一个数据库对象的历史版本记录,则还要去SVN中查找,显示也非常不直观还有一个问题是团队中的开发DBA非常不习惯使用SVN。
将版本记录存入数据库
这种方式是我在网上看到过的,是在数据库中通过触发器对于数据库的变更操作进行记录,作为开发出身的人来说,对这种方式就不是很喜欢。况且去历史表中找版本修改记录本来就是一件费时费力的事。使用第三方工具
现在一些第三方公司已经开发了针对数据库的版本控制工具,我们之前曾经尝试过RedGate的SQLSource Control(http://www.red-gate.com/products/sql-development/sql-source-control/),SQLSource Control的原理是基于SVN,使用起来不是很符合团队的使用习惯,易用性不够,在团队推广的培训成本也比较高。
最近团队在使用的另一个工具是一个很易用的中文版数据库版本控制软件,叫做SourceSafe for SQL Server(http://www.grqsh.com/products.htm?tab=sourcesafe-for-sql-server), Source Safe for SQL Server的原理是将变更记录存入版本库,定期可以将数据库定义的脚本导入SVN,数据库版本的历史记录可以像在SVN中那样查看,团队推广的培训成本也比较低。帮助我们解决了很多团队中的问题。
后记
数据库版本化看似是个可有可无的过程,但做好了,可以减少开发和实施甚至是生产环境中的很多麻烦,我们的系统就是个活生生的例子。本文所阐述的方法是来自之前团队的经验。开发团队的发展都会经历从幼稚到成熟,借鉴成熟工具的经验和方法论,提前认识并解决问题可减少损失提升生产力。
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

虛擬幣價格上漲因素包括:1.市場需求增加,2.供應量減少,3.利好消息刺激,4.市場情緒樂觀,5.宏觀經濟環境;下降因素包括:1.市場需求減少,2.供應量增加,3.利空消息打擊,4.市場情緒悲觀,5.宏觀經濟環境。

Redis是一种内存数据结构存储系统,主要用作数据库、缓存和消息代理。它的核心特点包括单线程模型、I/O多路复用、持久化机制、复制与集群功能。Redis在实际应用中常用于缓存、会话存储和消息队列,通过选择合适的数据结构、使用管道和事务、以及进行监控和调优,可以显著提升其性能。

Laravel和Yii的主要區別在於設計理念、功能特性和使用場景。 1.Laravel注重開發的簡潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開發和初學者。 2.Yii強調性能和效率,適用於高負載應用,提供高效的ActiveRecord和緩存系統,但學習曲線較陡。

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

MongoDB的未來充滿可能性:1.雲原生數據庫發展,2.人工智能與大數據領域發力,3.安全性與合規性提升。 MongoDB在技術創新、市場地位和未來發展方向上不斷前進和突破。

C 適合處理傳感器數據,因為其高性能和低級控制能力。具體步驟包括:1.數據採集:通過硬件接口獲取數據。 2.數據解析:將原始數據轉換為可用信息。 3.數據處理:進行濾波和平滑處理。 4.數據存儲:保存數據到文件或數據庫。 5.實時處理:確保代碼的高效性和低延遲。

Concordium:兼顧隱私與合規的公共一級區塊鏈平台Concordium是一個公共一級區塊鏈平台,其核心在於將身份驗證與隱私及監管合規性巧妙融合。由LarsSeierChristensen於2018年創立,該平台的核心技術將加密身份嵌入到每一筆交易的協議級別。這種獨特的設計確保了責任追溯,同時保護用戶隱私,有效解決了區塊鏈領域匿名性和監管要求衝突的難題。為了緩解這一難題,Concordium利用零知識證明(ZKP)技術,允許用戶驗證特定的身份屬性,而無需公開不必要的個人信息。這意味著,儘管每
