共用方式為


PHP on Microsoft Azure開發實戰(三) - 資料庫的選擇:MySQL or SQL Database

更新

簡介

許多使用 PHP 作為網站主要開發的程式語言的開發人員,或是許多知名的PHP網站套裝軟體(如:WordPress、MediaWiki、Joomla 等),會使用 MySQL 作為其網站應用程式的資料庫系統,而目前 Microsoft Azure 本身提供的是 SQL Database 的資料庫服務,但同時也與 ClearDB 合作提供 MySQL 的資料庫服務,這其中的差異,在將 PHP 網站移植到 Microsoft Azure 平台就是一個需要探討的議題。

這一系列文章包括:

  1. PHP 應用程式執行環境
  2. 部署 PHP 應用程式
  3. 資料庫的選擇: MySQL or SQL Database
  4. 使用 Microsoft Azure Storage – Blob storage 處理靜態檔案
  5. 使用 Microsoft Azure Storage – Table Service處理 Session 物件
  6. 使用 Microsoft Azure Service Bus 與其它系統進行通訊
  7. 實例說明:簡單購物網站實例

使用 MySQL 資料庫

Microsoft Azure 目前並沒有直接提供 MySQL 的資料庫服務,不過卻有與 ClearDB 合作提供 MySQL 的資料庫服務,或是使用 Microsoft Azure 虛擬機器(Windows Server 或 Linux Server)服務自行建立 MySQL 伺服器。

在 PHP 程式中要連接 MySQL 資料庫,可以直接使用 mysqli_* (MySQL Improvement Extensions) 系列的(mysql_* 系列的 APIs在未來的版本要拿掉了)APIs 或是 PDO_MYSQL ,在 Microsoft Azure 上的 PHP 執行環境都可以直接使用這兩種 APIs。

使用 ClearDB 提供的 MySQL 服務

目前一個 Microsoft Azure 訂閱帳戶可以使用一個由 ClearDB 提供的 MySQL 資料庫服務,並且 ClearDB 也依據 Microsoft Azure的資料中心提供全球各地的MySQL資料庫服務,讓你在 Microsoft Azure 上的服務也可以而 Microsoft Azure與 ClearDB 目前合作的方案為入門的 Mercury 方案(可參考這一頁的介紹),根據使用的情況可以隨時在 ClearDB 的網頁中升級用量。

有了這樣的合作,在建立 Microsoft Azure 網站服務(或是安裝需要 MySQL 的網站套裝軟體)時,就可以直接建立 MySQL 資料庫了:


可以直接在 Windows Azure 管理介面上建立由 ClearDB 提供的 MySQL 資料庫

如果要使用更多的 MySQL 資料庫,除了可以直接在 ClearDB 購買之外,也可以在 Microsoft Azure Store 中購買(台灣用戶尚未開放)。不過由於由 ClearDB 提供的 MySQL 資料庫服務,在雲端服務中常提及的 SLA(服務水準)就會依照ClearDB 的狀況為準。

至於資料庫管理的部份,可以選擇熟悉的 MySQL 管理工具,連線到租用的 MySQL 資料庫中進行管理。

使用虛擬機器自行架設MySQL伺服器

使用 Microsoft Azure 虛擬機器提供的服務架設 Windows Server 或 Linux Server之後,要安裝哪一個版本的 MySQL 都可以自行決定,但關於 MySQL 伺服器,或是虛擬機器的服務水準(例如:須建立兩個以上的虛擬機器實體,並且建立可用性集才確保高可用度)或是安全性就必須多花點心思來處理了。

Microsoft Azure 產品網頁上有兩篇 step-by-step 的教學文章可以參考:

使用 SQL Database 資料庫

Microsoft Azure 提供了 SQL Database資料庫服務,用戶僅須在後台選擇建立新的資料庫,不必自行架設或管理 SQL 伺服器即可直接使用,一切按照使用量計費。除此之外,Microsoft Azure 本身也提供了一個線上管理SQL Database 的介面(以Silverlight寫成),提供開發人員可以直接透過網頁管理 SQL Database,另外也支援一般用來管理 SQL Server 的 SQL Server Management Studio 軟體來進行管理。

在 PHP 應用程式中若要連接 SQL Database 服務,可以直接使用 SQLSRVPDO_SQLSRV 函式庫的 APIs,Microsoft Azure 產品頁面上有 step-by-step 的教學:「How to Access Windows Azure SQL Database from PHP」。

另外,關於 SQLSRV 及 PDO_SQLSRV 的 API 的說明可以參考 MSDN 上的頁面:「Microsoft Drivers for PHP for SQL Server」。

使用其它資料庫系統

除了 MySQL 以及 SQL Database 之外,Microsoft Azure 也與 Oracle 合作,可以直接在 Microsoft Azure 上建立安裝好 Oracle Database 的虛擬機器:

由於是 Oracle 官方標準的 Oracle Database,當然可以使用標準的 Oracle 管理工具來管理資料庫,而 PHP 應用程式的介接也可以使用 OCI8 APIs 來連接。

如果想要使用其它的資料庫系統,基本上都可以使用虛擬機器自行架設(像是 MariaDB、MongoDB 或是 PostgreSQL)這裡整理了一些網路上的一些安裝設定教學供作參考: