為何不應將 SharePoint Online 用作資料庫
SharePoint 是一套文件管理系統,用於儲存檔案、整理文件,以及與他人協作分享和編輯文件。 部分使用者,尤其是過去曾使用過 MS Excel 或 MS Access 的使用者,可能會認為將 SharePoint 作為資料庫使用是可行的。然而,無論這種做法有何優勢,您都應避免將 SharePoint 用作資料庫。
在探討不建議此類用途的原因之前,以下列出一些可能吸引使用者考慮將 SharePoint 作為資料庫使用的因素:
- 你不需要
dba用於建立新資料結構的權限 - 一個可擴充且即用型資料管理介面
- 您無需將 SharePoint 應用程式與儲存於其他位置的資料進行同步
- 無需同步即可遷移資料
資料組織
SharePoint 中並無類似資料庫的資料組織方式,這正是不應將 SharePoint 作為資料庫使用的關鍵原因。乍看之下,SharePoint 清單似乎與資料庫表格相似,同樣具備各欄位及不同資料類型。然而,這兩種結構的資料組織方式截然不同。SharePoint 是否使用 SQL Server? SharePoint 雖使用 MS SQL Server 作為其運作的資料庫管理系統,但 SharePoint 並非設計來執行真正資料庫的功能性。何謂 SharePoint 內容資料庫?內容資料庫是用來儲存一個或多個網站集合的 SharePoint 資料的資料庫。此資料庫的位置位於用於運作 SharePoint 的 MS SQL Server 上。
相較於關聯式資料庫,SharePoint 缺乏表之間的關聯性。以下是 SharePoint 中所缺乏的資料關聯:
One to One. 資料庫中某張表的一筆記錄與另一張表的一筆記錄之間存在關聯。例如,一個部門只能有一位經理,而一位經理也只能管理一個部門。
One to Many. 某張資料表中的一筆記錄,可能與另一張資料表中的多筆記錄相關聯。例如,一位客戶可能擁有許多銷售訂單。
Many to many. 兩個或更多資料表中的記錄,與另一資料表中的多個記錄相關聯。例如,客戶可以購買多種產品,而多種產品也可以由多位客戶購買。
缺少的資料庫特點
Database特點缺失(或基本缺失) SharePoint Online 與 SharePoint 本地部署版. 讓我們簡要地來看看 SharePoint 中缺少的這些特點。
主鍵與外鍵
資料庫使用唯一識別碼(包括主鍵和外鍵)來識別記錄,並連結具有父子關係的資料表。主鍵可唯一識別資料表中的記錄;一個資料表只能有一個主鍵。主鍵由一個或多個欄位組成,且不能為 NULL 值。外鍵是一個欄位或一組欄位,用以引用另一資料表中的主鍵,並連結不同資料表間的資料。 SharePoint 清單之間不存在關聯關係,且無法像資料庫中的資料表那樣將這些清單相互連結。
SQL 語言
SQL (Structured Query Language) 是一種標準語言,可讓您編寫用於資料庫中複雜查詢的程式碼。在使用實際資料庫時,您可以儲存查詢並重複使用。SharePoint 缺乏這項功能性。SharePoint 僅支援 CAML, Odata 以及搜尋查詢。您不應直接使用 SQL 查詢 SharePoint 資料庫(即 SharePoint 用於儲存 SharePoint 內容的 MS SQL 資料庫),因為這可能會導致穩定性問題,並違反 EULA (end user license agreement).
儲存程序
儲存程序是 SQL 語言的一部分。儲存程序是一組 SQL 語句,也就是說,它是一個可重複使用的程式碼區塊,在資料庫中建立並儲存。大多數資料庫管理系統都支援儲存程序(DBMS). 儲存程序具備多項優勢。您可以將資料存取邏輯集中於單一位置,並能進行最佳化。在安全性方面,只要授予儲存程序的執行權限,使用者便無需具備底層資料表的讀寫權限。使用 SharePoint 時,無法使用儲存程序。
交易
交易是一項工作單位,代表資料庫中的任何變更,並可視為"一個整體"。交易的一個例子是:當您從一個銀行帳戶(來源)提款,並將款項轉帳至另一個銀行帳戶(目的地)時。這兩個動作即構成一筆交易。 若第一項操作成功但第二項操作失敗,資金將退回來源銀行帳戶以維持交易的完整性。此即為交易回滾。同樣地,當交易失敗時,資料庫中的變更也會被回滾,資料不會遺失。SharePoint 不支援交易回滾。
索引與查詢優化
建立索引與查詢優化是用來提升資料庫效能的。經常使用的欄位可以預先建立索引,從而提升整體效能。 透過建立指向資料在資料庫中儲存位置的指標等優化技術,可針對資料檢索對資料庫進行優化。此方法遠比搜尋整個資料庫來得快速。SharePoint 中的索引功能旨在改善對儲存於 SharePoint 中的內容進行搜尋;然而,相較於可直接使用的資料庫,其功能性仍有所限制。特別是,SharePoint 中的清單最多僅能建立 20 個索引欄位。
大型項目與二進位資料
大多數現代資料庫都能直接在資料庫中儲存大量資料和二進位資料(例如影片檔案、圖片、音訊檔案等)。雖然二進位資料可以以檔案附件的形式儲存於 SharePoint 清單中,但不建議這樣做。 就功能性而言,SharePoint 中的二進位附件在效能上無法與關聯式資料庫中的二進位欄位相提並論。若在 SharePoint 清單中儲存過多帶有二進位附件的項目,效能可能會大幅下降。SharePoint 並不會為內容資料庫中的每個清單和資料庫建立新的資料表。您在 SharePoint 清單和資料庫中所見的所有資料,皆儲存於內容資料庫中的一張單一資料表中。
SharePoint 無法像資料庫那樣處理大量項目。 您應將 SharePoint 清單中的項目數量限制在 2000 個以內(包含根清單及其所含的資料夾)。若需在 SharePoint 中上傳檔案,請將其上傳至 SharePoint 資料庫,切勿將 SharePoint 清單用於此目的。
在 SharePoint 外部存取
您只能透過程式介面,或在 SharePoint 外部存取 SharePoint 清單,或者 XML. 由於整合性不佳,您不應在 SharePoint 儲存庫中使用清單來儲存必須由外部應用程式存取的資料。相較之下,關係型資料庫具備所有必要的整合功能性,並能與外部應用程式協作。
結論
有許多理由不應將 SharePoint 用作資料庫。SharePoint 的設計初衷是為了其他用途。若將 SharePoint 用作資料庫,可能會造成顯著的缺點並導致效能下降。 您無法以 SharePoint 取代關係型資料庫。SharePoint 中的"清單"之所以不被稱為"資料表",是有其原因的。SharePoint 的主要目的是集中儲存文件並進行協作編輯。請針對每項業務需求選用合適的工具。
無論您使用的是 MS SQL、Oracle 還是 SharePoint,都請務必記得備份您的資料。 NAKIVO Backup & Replication 這是一款通用的資料保護解決方案,支援 Oracle 備份、MS SQL 備份、Office 365 備份(包括 SharePoint Online 備份)以及 SharePoint Server 備份。