哈囉大家好,我是古古
上一篇文章我們有先介紹了 Google Cloud 中的一般檔案的儲存服務 - Cloud Storage,了解要如何透過 Cloud Storage 去儲存 Blob 的二進制檔案
那麼從這篇文章開始,我們就會來介紹第二個分類「SQL 的儲存服務」,而這篇文章就會先介紹其中的第一種服務:Cloud SQL
Cloud SQL 是 Google Cloud 中的 SQL 儲存服務之一,而 Cloud SQL 的目的,是希望讓工程師專注在資料庫的 table 設計和應用上,所以就不用花時間去處理那些網路防火牆、資料庫備份機制...等等的 DBA 操作
所以簡單的說的話,Cloud SQL 就是提供了一個「雲端版的 SQL 資料庫給你用」,相對於我們之前還要自己在電腦上安裝 MySQL,處理他的防火牆和備份之類的,Cloud SQL 就統統會幫你做掉
所以你要做的,就是付錢,然後你就能得到一個可以動的 database 直接來開發了,天下太平!
補充:DBA 的全稱為 Database administrator (中文翻譯為資料庫管理者),通常 DBA 這個職位是會被劃分在 IT 部門裡面,負責管理整間公司的資料庫底層維運,一般後端工程師如果有什麼資料庫底層的需求 (ex: 加密、rollback),通常就是會和 DBA 對接,由 DBA 負責處理
如前面所述,Cloud SQL 的目的,即是提供一個「雲端版本的 SQL 資料庫給你用」,所以就可以讓工程師專注在資料庫的 table 設計,就不需要額外費心去處理防火牆、或是資料庫備份機制....等等的 DBA 操作了
所以換句話說的話,使用了 Cloud SQL,就可以把 DBA 的這一段日常維運工作給省下來,由 Google Cloud 來處理這種日常繁雜的事情,進而提升工程師開發的效率
而在 Cloud SQL 的官方簡介中就有提到:
「Cloud SQL provides a cloud-based alternative to local MySQL, PostgreSQL, and SQL Server databases」
所以說穿了,Cloud SQL 就只是把我們原本安裝在自己電腦上的資料庫,給搬到雲端上面而已 (順便幫我們做了 DBA 的日常維運),因此 Cloud SQL 並沒有加入什麼神奇的功能在裡面
在 Cloud SQL 服務中,我們是可以去創建一個「Instance (實例)」,並且選擇要在該 Instance 裡面要安裝哪一種 database 的,所以簡單的說的話,每一台 instance 裡面都是一套 SQL 服務就對了
而 Cloud SQL 目前提供三種 sql database 可以選,分別是 MySQL、PostgreSQL、Microsoft SQL Server,所以大家就可以根據自己比較熟悉的資料庫,去選擇想要在該 instance 中安裝哪種資料庫的
舉例來說,我們可以先在 Cloud SQL 中開一台 instance,然後選擇 MySQL,這樣我們就可以直接透過在後端程式裡面,去連線到該台 MySQL 資料庫
如果這時候我們還想要創建另一個資料庫 PostgreSQL 的話,我們就可以再開一台 instance,然後改成是選擇 PostgreSQL,這樣也是可以在後端程式裡面,直接去連線到該台 PostgreSQL 資料庫
所以在這個 project 裡面,就會同時有兩個 Cloud SQL 的 instance 存在,其中一台是 MySQL、而另一台是 PostgreSQL,並且每一個 instance 中的 data 都是獨立的,彼此不會互相干擾
大概了解了 instance 的概念之後,基本上大家也可以發現,在 Cloud SQL 裡面,就是以 instance 為單位來進行管理的,因此這裡就接著詳細介紹一下 instance 的相關特性
Cloud SQL 會為每一個 instance 創建 7 個備份,盡力確保資料庫的數據不會遺失,而這 7 個備份的數據是不需要額外收費的,直接就包含在當初創建 instance 的錢裡面了
補充:其實創建備份這部分,就是 DBA 以前會偷偷幫後端工程師做的事情,只是我們通常很難發現就是了(因為這滿底層的,在開發層通常感受不太到,只有出事時才會很有感XD)
Cloud SQL 會確保資料庫中的數據是有被加密的,確保資料是安全的,其中包含:
因為 Cloud SQL 是屬於「SQL 的儲存服務」類型,並且他提供的也是 MySQL、PostgreSQL、Microsoft SQL Server 這三種資料庫,因此在 Cloud SQL 中所提供的資料庫,是具備 ACID Transaction 事務的能力的
所以大家如果需要在後端程式中使用 Transaction 來處理程式邏輯的話,是可以直接做到的,不用進行額外的設定
在創建 instance 時,會需要選擇創在哪個 region 裡面,並且需要選擇是要創建成 single zone 還是 multiple zones
選擇 single zone 的話,就是該 zone 毀滅 data 就全滅,所以只適合用在 non-production 的開發上,線上環境絕對不要這麼搞
選擇 multiple zones 的話,就是 Google 會在該 region 裡面的多個 zone 裡面去做 7 個備份,我們可以自己選擇哪個 zone 是 primary zone、哪個 zone 又是 second zone
補充:不過現在只有特定幾個 region 可以創建 Cloud SQL (全亞洲只有 singapore region),所以其實也沒幾個好選
這篇文章介紹了 SQL 儲存服務中的 Cloud SQL 的用法,並且也介紹了 Cloud SQL 中的 Instance 的概念和特性
那麼下一篇文章,我們就會接著介紹同為「SQL 的儲存服務」中服務,也就是 Cloud Spanner,並且比較一下 Cloud SQL 和 Cloud Spanner 的差別在哪裡,那我們就下一篇文章見啦!