iT邦幫忙

2022 iThome 鐵人賽

DAY 3
1
Modern Web

資料庫也有版本控制系列 第 3

Day 3 : 資料庫版控的原理與方法

  • 分享至 

  • xImage
  •  

一、版本控制介紹

  1. Day 2 : 應用程式的版本控制與自動化部屬流程
    -> 2. Day 3 : 資料庫版控的原理與方法
  2. Day 4 : 資料庫的版本控制與自動化部屬流程

在上一篇我們知道了,光只有控制應用程式的版本與實現自動化部屬與測試是不夠的,我們還需要將資料庫也一起納入,那我們要如何進行這件事呢?

首先我們要先知道,關聯式資料庫裡面會有哪些異動是需要被紀錄的

  1. Database Schema

關聯式資料庫需要先定義明確資料的長相與類型,以下程式碼是 MySQL 用來創立書籍表的語法

CREATE TABLE book (
    id int,
    name varchar(50),
		create_at DATETIME
);
  1. Stored Procedure

一種將 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
  1. View

一種將 SQL 查詢語法在資料庫內包裝成能類似 Table 的作法,以下程式碼是 MySQL 用來寫入書籍表並且紀錄 Log 的語法

CREATE VIEW bool_view AS SELECT * FROM book;

版本不一至會造成的問題

當 Table 或 View 的結構與程式不一至,很有可能在 AP 啟動時就會報錯,而 Stored Procedure 不一至則有機會造成邏輯錯誤產生錯誤的資料,後續會非常難作還原與更正

版本控制的方法

  1. 最簡單也不需要使用工具的方式,就是由 RD 將類似以上這種的語法提交給 DBA 並上傳到 github 做版本管理,並在 QAT 這類型的環境中由 DBA 執行語法與由 QA 進行測試確保正常

  2. 使用自動化工具比對開發環境的資料庫結構並且產生語法,由此語法上 git 打上分支與版本號

  3. 透過 AP 的 Orm 工具在專案中留下資料庫的異動,並且由 AP 端直接對資料庫做結構異動


後續預告

這是版本控制篇章的第二天,明日將會進行介紹要用哪些工具對資料庫進行版控與自動化部屬的方式


上一篇
Day 2 : 應用程式的版本控制與自動化部屬流程
下一篇
Day 4 : 資料庫的版本控制與自動化部屬流程
系列文
資料庫也有版本控制30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言