什麼是資料庫?
資料庫的定義、類型和範例。
什麼是資料庫?
在最基本的定義中,資料庫是任何相互關聯資訊的集合。當您在紙上列出購物清單時,您就是在建立一個小型的類比資料庫。但什麼是電腦科學中的資料庫呢? 在這個環境中,您要將「資料庫」定義為儲存在電腦系統上的資料資訊集合,例如當地雜貨店的庫存。
資料庫的用途是什麼?
資料庫用來儲存和組織資料,讓使用者更容易管理和存取。隨著資料集合逐漸擴張且日益複雜,想要讓資料保持井然有序、易於存取且安全無虞變得更為困難。為了解決這些問題,您使用包含了一層資料庫管理工具的資料庫管理系統 (DBMS)。
什麼是資料?
資料是從一個人、一個位置、一件事或一個物件 (這些都稱為實體) 上擷取並儲存的任何相關資訊,以及該實體的屬性。
例如,如果您要擷取並儲存當地餐廳的相關資訊,則每家餐廳都是一個實體,而其名稱、地址和營業時間則是該實體的屬性。您根據自己最愛的餐廳所收集並儲存的所有資訊都是資料。
資料庫類型
資料庫類型大略分為關聯式和非關聯式資料庫。關聯式資料庫已高度結構化,並了解稱為結構化查詢語言 (SQL) 的程式設計語言。非關聯式資料庫則非常多樣化,支援各種不同的資料結構。因為許多非關聯式資料庫不使用 SQL,因此通常稱為 NoSQL 資料庫。
資料結構類型
資料表結構是關聯式資料庫結構,可將資料組織成資料列和資料行 (資料列包含實體而資料行包含實體屬性)。 寬型資料表 (又稱為寬型資料行存放區) 使用具有空白屬性的疏鬆資料行,大幅增加您在資料表中可以擁有的資料行總數。因為有些空格是空的,所以寬型資料表是非關聯式資料庫結構的範例。
線性結構會將元素組織成一個序列
陣列
連結清單
二進位樹狀目錄
樹狀結構會將資料庫元素組織成來自一個根節點的父/子關聯性節點的階層式資料庫。
圖形
圖形結構會將資料庫元素組織成彼此之間有複雜關聯性的節點非階層式網路。
雜湊表
雜湊型結構會使用雜湊函數將索引鍵對應到值,藉由將索引指派給雜湊表,建立相關聯的資料。
文件導向資料庫
文件導向資料庫會將實體的資訊數量組織成單一物件 (文件),與其他物件分開。物件不需要彼此對應,而且可以編輯單一物件,不會影響其他物件。
關聯式資料庫
在關聯式資料庫中 (這是最常見的類型),資料會組織成資料表,保存每個實體的相關資訊,並透過資料列和資料行呈現預先定義的類別。此結構化資料讓存取有效率又有彈性。
關聯式資料庫的範例包括 SQL Server、Azure SQL、MySQL、PostgreSQL 和 MariaDB。
非關聯式資料庫
非關聯式資料庫儲存非結構化或半結構化的資料。它們與關聯式資料庫不同,不使用具有資料行和資料列的資料表,而是根據儲存資料類型的特定需求,使用經過最佳化的儲存體模型。非關聯式資料庫可讓您快速存取、更新及分析更大的分散式資料集合。
非關聯式資料庫的範例包括 MongoDB、Azure Cosmos DB、DocumentDB、Cassandra、Couchbase、HBase、Redis 和 Neo4j。
部分非關聯式資料庫稱為 NoSQL 資料庫。NoSQL 是指不使用 SQL 或不僅使用 SQL 查詢的資料存放區。作為替代,NoSQL 資料庫使用其他程式設計語言和結構來查詢資料。許多 NoSQL 資料庫都支援與 SQL 相容的查詢,但其執行這些查詢的方式通常與傳統關聯式資料庫執行相同 SQL 查詢的方式不同。
物件資料庫是一種非關聯式資料庫,使用物件導向程式設計。物件會以儲存在欄位或變數中的狀態 (事實資料),以及透過方法或函數顯示的行為進行編碼。物件可以永久保存在永續性儲存體中,不需要 API 或工具即可直接讀取和對應,這樣可讓您更快存取資料並獲得更好的效能。不過,物件資料庫並不像其他資料庫類型一樣普及,而且支援困難。
記憶體內部資料庫和快取
記憶體內部資料庫中的所有資料都儲存在電腦的隨機存取記憶體 (RAM) 中。當您查詢或更新此類型的資料庫時,您是直接存取主記憶體,不涉及任何磁碟。資料的載入速度很快,因為存取主記憶體 (接近主機板上的處理器) 比存取磁碟快很多。
記憶體內部資料庫通常用來儲存經常存取的資訊複本,例如定價或庫存資料。這稱之為快取。當您快取資料時,您會將其複本儲存在暫存位置,以便在下一次要求該資料時可更快載入。深入了解快取。
資料庫範例
資料庫看起來像是不可見的謎,但大多數人每天都會與其互動。以下是一些常見的關聯式資料庫、NoSQL 資料庫和記憶體內部資料庫範例:
財務交易
銀行使用資料庫追蹤客戶交易,從餘額查詢到帳戶往來轉帳的所有一切。這些交易幾乎都是即時發生,而大量交易所產生的資料必須一律保持在最新狀態。因此,銀行會使用以關聯式資料庫建置的線上交易處理系統,其可應付大量的客戶、處理因交易產生的經常性資料變更,且擁有快速的回應時間。
電子商務目錄
如果您有一個電子商務網站,您的目錄會包含個別產品,且每個產品都有自己的各種屬性。文件導向資料庫 (一種非關聯式資料庫) 會使用個別文件來描述單一產品的所有屬性。您可以變更文件中的屬性,卻不會影響任何其他產品。記憶體內部資料庫通常用來快取經常存取的電子商務資料,例如庫存和定價,以加速資料擷取並降低資料庫負載。
社交網路
當您加入社交網路時,您的資訊就會新增到所有使用該網路者的非關聯式資料庫。當您與該網路中的其他人連線時,您就成為社交圖形的一小塊。這就是為什麼您會看到朋友或專業人士的篩選清單,而且可以發掘這些朋友和人士認識的新人物。
個人化的結果
非關聯式資料庫推動的線上個人化已經極其普遍,所以您可能根本完全沒注意到。如果您透過旅遊網站預訂機位,您也會看到預訂飯店和租車的選項。網站的資料庫包含大量的非結構化資訊 (您的航班詳細資料、旅遊偏好、過去預訂的汽車或飯店等等),這些都可用來為您提供個人化的建議,節省您的時間、金錢或精力。同樣地,記憶體內部資料庫會用來當作工作階段存放區,以在應用程式使用期間有效保存暫時性的使用者資料,例如搜尋偏好或購物車。
商務分析
當組織想要從自己的資料中繪製深入解析時,關聯式資料庫可協助他們管理分析。例如,技術支援人員可從各種維度追蹤客戶問題,包括問題類型、解決問題的時間和客戶滿意度。使用資料表結構的關聯式資料庫,一次只使用兩個維度來組織客戶問題資料,但支援人員在使用線上分析處理系統時,一次可以查看多份資料表,讓多維度分析高速處理大量的資料。
資料庫管理系統
資料庫系統管理員使用資料庫管理系統 (DBMS) 控制資料,特別是在使用巨量資料時。巨量資料是指大量的結構化和非結構化資料,通常是系統即時或近乎即時收到的資料。DBMS 也有助於管理跨多個應用程式使用的資料,或位於多個位置的資料。
不同的資料庫管理系統提供不同層級的組織、可擴縮性和運用方式。除了您想要組織的資料類型和您想要的存取方式外,資料所在位置、資料庫所用的架構類型,以及您計畫的擴縮方式也會決定您使用的 DBMS。
您的資料是位於內部部署、雲端,還是都有?
在內部部署資料庫中,資料位於私人的現場硬體 (通常稱為私人雲端)。為了增加資料容量,資料庫管理必須確保現場伺服器擁有足夠的可用空間,或使用新硬體擴充基礎結構以建立空間。
在雲端式資料庫中,結構化或非結構化資料位於私人、公用或混合式雲端運算平台 (也就是結合私人和公用雲端儲存體的平台)。因為雲端資料庫是針對虛擬化環境所設計,因此同時具有高可調整性和可用性。其也有助於降低成本,因為您不需要購買太多硬體,只需支付所用的儲存體費用。
您的資料庫架構是集中式、分散式還是聯盟?
在集中式資料庫中,所有資料都位在同一個位置的系統中。這個系統就是所有使用者的存取點。
分散式資料庫可以同時跨越關聯式和非關聯式資料庫類型。在分散式資料庫中,資料是儲存在多個實體位置,可能位在多部內部部署的電腦上,或是散佈在互連電腦的網路中。
在聯盟資料庫中,在獨立伺服器上執行的數個不同資料庫會整合成一個大型物件。區塊鏈就是一種聯盟資料庫,能以安全方式管理財務總帳和其他交易記錄。
您會隨著資料的增長而擴大或縮減規模嗎?
擴大 (或縮減) 也稱為垂直縮放,這是將記憶體或更強大的 CPU 等資源新增到現有伺服器的程序。
擴增 (或縮減) 也稱為水平縮放,這會將更多機器新增到您的資源集區。
水平縮放與垂直縮放不同,可延長現有硬體的生命週期、讓您不受廠商掣肘自由升級、降低成本,還可能建立長期彈性。
Azure 資料庫
透過完全受控的資料庫,將可擴縮性、可用性和安全性自動化,簡化您的資料作業。從橫跨專屬和開放原始碼引擎的關聯式、NoSQL 與記憶體內部資料庫中選擇。
了解 Azure SQL 資料庫系列
整合您的 SQL 組合,但不犧牲合規性。使用熟悉的 SQL Server 技術,依您的方式移轉及現代化邊緣的應用程式,並將其部署到雲端。
使用適用於 PostgreSQL 的 Azure 資料庫放心大膽地擴縮
適用於 PostgreSQL 的 Azure 資料庫,可協助您快速且安心地調整您的工作負載,獲得高可用性、AI 提供的效能最佳化和進階的資料庫安全性。
使用 Azure Cosmos DB 建置高效能應用程式
Azure Cosmos DB 是完全受控的 NoSQL 資料庫,具備開放式 API 和任何規模中的保證速度。
使用 Azure Cache for Redis 有效率地處理高流量
Azure Cache for Redis 透過將快速快取層新增到應用程式的架構,協助您以近乎即時的速度管控數以千計的同時使用者。