數據庫的版本控制與代碼版本控制的區別在于數據庫中的生產數據是現場創造的,當我們的表結構發生改變時,不能直接用drop table然后再create table,因為這樣會導致生產數據丟失。而代碼則完全由開發人員創造,可以用完全覆蓋的方式升級。由于這點不同,致使數據庫在版本控制的過程中必然要采用與代碼不同的方法。
軟件過程有一個過程方法叫迭代過程。對數據庫的版本化,我們也可以采用這種類似的方法------后一個版本的腳本依賴于前一個版本的腳本,即當你要把數據庫升級到第n個版本時,你必須先把數據庫升級到第(n-1)個版本,以此遞歸。
我對對于數據庫版本化的具體思路如下:
1.只存在一個基線版本;
2.在基線版本后的修改都是修正版本;
3.版本號遵從的格式通常是:主版本號.次版本號.修正號
修正版本SQL腳本的命名規則(表,視圖,存儲過程,用戶,角色,規則,默認值,用戶定義的數據類型,用戶定義的函數,全文目錄);
a.涉及表、視圖、存儲過程、觸發器的增加 版本號為:V1.1.0.0。(主版本號不變,次版本號加一,修正號歸零)
b.涉及表、視圖、存儲過程、觸發器的更改、刪除 版本號為:V1.2.1.0。(主版本號和次版本號不變,修正號加一)
c.向表中增加、刪除初始化數據的變化 版本號為:V1.2.1.1。(在修正號后增加一個標識)
4.SQL腳本的格式:
每一個版本號為一個目錄,目錄下分別存放處理表、視圖、存儲過程等的SQL腳本;
/Database
├─V1.0.0.0
│ Full-Text.sql
│ PRocedures.sql
│ Tables.sql
│ Views.sql
│
├─V1.1.0.0
│ Tables.sql
│ Views.sql
│
├─V1.1.1.0
│ Full-Text.sql
│ Procedures.sql
│ Tables.sql
│ Views.sql
│
├─V1.1.1.1
│ Tables.sql
│
└─V1.1.2.0
Full-Text.sql
Procedures.sql
Tables.sql
Views.sql
5.關于數據庫中的版本說明及更新記錄:
在每個數據庫中新建一個表,名稱為DBVersion,用于記錄數據庫經歷的版本記錄以及最新的版本信息;
可用于SQL Server 2000的SQL代碼
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DBVersion]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[DBVersion]
GO
CREATE TABLE [dbo].[DBVersion] (
[DB_ID] [int] IDENTITY (1, 1) NOT NULL ,
[DB_Version] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[DB_Update_Time] [datetime] NOT NULL ,
[DB_Remark] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
6.編寫程序以實現以下功能:
讀取Database目錄的各個版本中的SQL文件,以實現升級或者新建數據。
對于升級數據庫需要能夠根據DBVersion表中的信息自動選擇需要導入的SQL文件;或者提示用戶當前可以升級到哪一些版本。
同時還需要有校驗Database中版本的文件是否完整(包括版本完整和文件完整,這就需要存在一個校驗文件);
參考linux內核版本號的命名規則:
Linux內核 版本號命名規則
Linux內核的版本號是有一定的規則的,版本號遵從的格式通常是:主版本號.次版本號.修正號。
主版本號和次版本號標志著重要的功能變動;修正號表示較小的功能變動。
以2.6.12版本為例,
2代表主版本號,6代表次版本號,12代表修正號。
其中次版本號還有特定的意義:如果次版本
號是偶數,則表示該內核是一個可放心使用的穩定版;如果次版本號是奇數,則表示該內核加
入了一些測試的新功能,是一個內部可能存在BUG的測試版
。如:2.5.74表示是一個測試版就的內核,2.6.12表示是一個穩定版的內核。
我們可以從Linux官方網站上:http://www.kernel.org/下載最新的內核代碼!
轉載請以鏈接形式注名來源:SEO雜碎
新聞熱點
疑難解答