一、版本控制介紹
在上一篇我們知道了,光只有控制應用程式的版本與實現自動化部屬與測試是不夠的,我們還需要將資料庫也一起納入,那我們要如何進行這件事呢?
首先我們要先知道,關聯式資料庫裡面會有哪些異動是需要被紀錄的
關聯式資料庫需要先定義明確資料的長相與類型,以下程式碼是 MySQL 用來創立書籍表的語法
CREATE TABLE book (
id int,
name varchar(50),
create_at DATETIME
);
一種將 SQL 語法在資料庫內包裝成能呼叫的作法,以下程式碼是 MySQL 用來寫入書籍表並且紀錄 Log 的語法
CREATE PROCEDURE `AddBook`(
IN book_name varchar(50),
OUT out_result INT
)
BEGIN
-- 建立書籍
INSERT INTO `book`
(
`name`
VALUES
(
book_name,
NOW()
);
-- 寫入 LOG
INSERT INTO `user_log`
(
`action`,
`action_datetime`
)
VALUES
(
'Add Book',
NOW()
);
SET out_result = 1;
END
一種將 SQL 查詢語法在資料庫內包裝成能類似 Table 的作法,以下程式碼是 MySQL 用來寫入書籍表並且紀錄 Log 的語法
CREATE VIEW bool_view AS SELECT * FROM book;
當 Table 或 View 的結構與程式不一至,很有可能在 AP 啟動時就會報錯,而 Stored Procedure 不一至則有機會造成邏輯錯誤產生錯誤的資料,後續會非常難作還原與更正
最簡單也不需要使用工具的方式,就是由 RD 將類似以上這種的語法提交給 DBA 並上傳到 github 做版本管理,並在 QAT 這類型的環境中由 DBA 執行語法與由 QA 進行測試確保正常
使用自動化工具比對開發環境的資料庫結構並且產生語法,由此語法上 git 打上分支與版本號
透過 AP 的 Orm 工具在專案中留下資料庫的異動,並且由 AP 端直接對資料庫做結構異動
這是版本控制篇章的第二天,明日將會進行介紹要用哪些工具對資料庫進行版控與自動化部屬的方式