什麼是資料庫?資料管理指南

資料庫是一種結構化系統,用於儲存、管理及擷取資訊。

資料庫就像數位圖書館,圖書館員清楚知道每本書每一頁的位置。如果走進一間堆滿數百萬張散亂紙張的大房間,您永遠找不到所需要的資訊。您需要一個能整理這些紙張、清楚標示內容並幫助您在幾秒鐘內檢索資訊的系統,而這正是資料庫對應用程式所扮演的角色。它就像數位系統的可靠記憶體,安全地儲存網站、企業和重要服務每天運作所依賴的資訊。

大多數資料庫可分為兩大類:

  • 關聯式資料庫 (SQL):這類資料庫會將資料整理成具有列與欄的資料表,其提供結構化查詢語言 (SQL),可找出資料點之間的關係,因此非常適合需要交易一致性與複雜查詢的情境。
  • 非關聯式資料庫 (NoSQL):這類資料庫的結構定義具有動態與彈性,會以文件、圖形或鍵/值組合等形式儲存資料,因此能有效處理大規模的非結構化、半結構化或快速變動的資料。

資料庫關鍵重點

  • 這是什麼?資料庫是專門的系統,負責儲存、整理及擷取資料,供應用程式使用
  • 如何運作?試算表是設計給人閱讀的,資料庫則是為了讓機器能溝通而構建的,可有效處理大量資訊
  • 可以如何使用?資料庫種類繁多,例如關聯式資料庫、文件資料庫和向量資料庫,每種都適用於不同類型的資訊,像是使用者個人資料、社群媒體貼文或 AI 生成的資料

什麼是代管資料庫服務?

當您在自己的電腦或伺服器上執行資料庫時,必須完成許多工作:要處理備份、安裝安全性更新,並確保伺服器不會耗盡記憶體。這種方式稱為「自行託管」。

代管資料庫服務能替您分擔這項工作。您付費給雲端服務供應商代為執行資料庫,他們會負責處理繁重的工作,例如設定基礎架構、更新軟體,以及確保系統保持連線。這樣一來,您就能專心編寫應用程式程式碼,不必擔心伺服器的基礎架構問題。

資料庫如何運作?

雖然 Google 試算表或 Excel 等這類的試算表很適合讓人快速瀏覽,但是如果有成千上萬的人同時使用時,就會變得緩慢且難以管理。資料庫的建構方式則完全不同,它們主要由三個部分組成:

  1. 資料:這是資訊本身,可以是簡單的文字 (姓名和電子郵件地址)、數字 (價格),也可以是圖片、AI 嵌入這類複雜的內容。
  2. 查詢:這是向資料庫「要求」提供資訊的方式。您會使用 SQL (結構化查詢語言) 等語言,來明確告訴資料庫您的需求。例如,您可能會要求提供「上週註冊的所有使用者」。
  3. 資料庫管理系統 (DBMS):這是充當管理員的軟體,負責處理要求、確保資料安全,以及整理資訊儲存方式。這類系統的例子包括 PostgreSQL、MySQL 和 MongoDB。

資料庫類型

選擇合適的資料庫取決於資料的結構特性。

類型

適用情境

主要特性

範例

關聯式 (SQL)

關係明確的結構化資料

使用資料表、資料列和資料欄

銀行帳戶餘額系統

非關聯式 (NoSQL)

彈性、快速且變動頻繁的資料

不使用資料表,而是以多種方式儲存資料

大型網頁應用程式的大數據分析

Key-Value

簡單快速的查詢

資料以成對形式儲存,就像數位字典一樣

儲存用於登入的使用者工作階段資訊

文件

儲存複雜的巢狀資料

以文件 (例如 JSON 檔案) 形式儲存資料

管理電子商務產品目錄

向量

AI 與機器學習

以數學向量的形式儲存資訊

根據使用者過去的行為尋找產品推薦

圖形

擁有深層連結的資料

著重於各個項目如何相互關聯

社群媒體「朋友的朋友」功能

時間序列

隨時間變動的資料

記錄具有特定時間戳記的資訊


監控工廠內的溫度感應器

關聯資料庫

關聯式資料庫通常也稱為 SQL 資料庫,會以結構化資料表呈現資料。如果需要確保銀行交易完全成功或完全失敗,您可能會決定使用關聯式資料庫,因為這類資料庫嚴格遵守 ACID (原子性、一致性、隔離性、持久性) 屬性。

NoSQL 資料庫

NoSQL 資料庫的優點是彈性高,這類資料庫以文件、圖形或鍵/值組合的形式儲存資料。由於不需要嚴格的結構定義,NoSQL 通常非常適合用於變動快速的應用程式,例如行動應用程式、社群媒體動態消息或即時內容管理系統。

鍵/值資料庫

這是最簡單的 NoSQL 資料庫形式,這類資料庫會將資料儲存為不重複的索引鍵,並與值配對。由於這種方式既快速又簡單,開發人員可能會用來快取工作階段資料或儲存使用者偏好設定。

這些資料庫就像字典,有一個鍵 (例如使用者名稱) 和對應的值 (個人資料)。由於不必在複雜的資料表中搜尋,就能找到所需內容,因此速度非常快。

文件資料庫

文件資料庫會以彈性格式 (通常是 JSON) 儲存資料。如果資料結構經常變動,這類資料庫非常實用,例如在內容管理系統中,不同的網誌文章可能會有不同的屬性。

向量資料庫

向量資料庫會將資訊儲存為數學向量,讓電腦能更瞭解資料的「意義」,而不只是比對確切的關鍵字,這項技術是現代生成式 AI 和搜尋功能的基礎。

圖形資料庫

圖形資料庫著重於資料點之間的關係。這類資料庫不使用資料表,而是將資料儲存為節點和邊。以社群網路為例,「人」是節點,「追蹤」動作是邊。如果您正在建構一個依賴複雜連結的推薦引擎,圖形資料庫能以遠快於標準關聯式資料庫的速度來查詢這些連結。

時間序列資料庫

時間序列資料庫專門儲存以時間編製索引的資料點,是專為處理大量、具有時間戳記的資料而打造,例如來自 IoT 裝置的感應器讀數、伺服器記錄或股市更新資訊。這類資料庫擅長「降採樣」,也就是將較舊的高頻率資料壓縮成更廣泛的摘要,以節省空間。

資料庫部署選項

資料庫可以放在幾個不同位置:

地端部署:在您自家辦公室或資料中心的實體硬體上執行資料庫。這種做法可讓您完全掌控資料庫,但必須自行管理所有安全性和維護作業。

混合式:結合地端部署和雲端環境。您可以將機密資料保留在地端部署環境以確保安全,同時將公開應用程式資料儲存在雲端。

雲端:資料庫位於雲端服務供應商的伺服器。這通常是最受歡迎的選擇,因為如果應用程式突然爆紅,就能輕鬆擴充。雲端資料庫可帶來多項優勢:

  • 彈性:可立即增加儲存空間或處理能力
  • 存取便利性:團隊成員可從世界各地管理資料庫
  • 維護:雲端服務供應商負責管理底層硬體、更新和安全性修補程式

在部署選項之間遷移,例如從地端部署設定轉移至代管雲端服務,或從混合式環境轉移至全雲端原生解決方案,重點應放在基礎架構變更,而不是單純的資料格式變更。請務必審慎規劃資料庫遷移作業,確保資料完整性、將停機時間減至最低,並管理連線變更。

AI 和資料庫

過去,開發人員通常會將標準應用程式資料和 AI 資料分開儲存在不同的資料庫孤島。這迫使開發人員要在資料庫和獨立的 AI 引擎之間來回移動大量資料,導致應用程式速度變慢,也更難以維護。如今,整合已成為趨勢。我們希望資料庫能理解並處理資料,包括 AI 生成的資訊,而且在同一處完成。

概括來說,現代資料庫正藉由新增下列核心 AI 功能,變得更加「智慧」:

  • 向量和語意搜尋:資料庫會將資料儲存為「向量」(代表意義的數字清單)。這樣一來,應用程式就能根據搜尋字詞的意義找出結果,而不只是比對關鍵字。例如搜尋「犬科動物」可以找到「狗」。
  • 檢索增強生成 (RAG):在 AI 模型回答問題前,資料庫會提供私密且最新的資訊,確保 AI 提供更準確且符合事實的答案。
  • 多模態功能和搜尋:資料庫現在可以儲存及關聯不同資料類型,例如文字、圖片和音訊。您可以搜尋這些格式的內容,例如找出與特定產品相片相符的文字說明或價格。
  • 將自然語言轉換為 SQL:將「Show me all high-value customers」(顯示所有高價值顧客) 等簡單的英文問題,轉換為擷取該資訊所需的確切程式碼。
  • 混合搜尋:結合傳統關鍵字搜尋與語意搜尋。這項技術非常有效,因為它會針對特定詞彙 (例如產品 ID) 使用完全比對,同時使用向量,根據意圖尋找相關項目。

只要使用支援這些工具的資料庫,就能透過單一查詢,搜尋使用者的名稱、歷史記錄和偏好設定,簡化技術堆疊,讓應用程式提供更快速且智慧的體驗。

以下說明如何在 Python 中執行混合搜尋,結合特定關鍵字和語意概念:

  • Python
載入中…

選擇合適的資料庫

在確定採用特定架構前,請先思考以下問題,判斷哪種資料庫類型最符合專案需求。

考量

推薦的資料庫類型

推論

我的資料是否具有嚴謹的結構,例如銀行記錄或使用者帳戶?

關聯式 (SQL)

資料表和資料列可確保資料準確率,並強制執行記錄之間的嚴格關係。

我需要儲存格式經常變動的資料嗎,例如使用者記錄或活動動態消息?

NoSQL

由於沒有嚴格的結構定義,您可以儲存結構不斷演變或變化的資料。

是否需要盡快查詢簡易資料,例如使用者工作階段?

鍵/值

資料庫會將單一鍵直接對應至值,避免複雜的搜尋作業。

資料是否與程式碼中的物件類似,例如具有不同功能的產品?

文件

以 JSON 等格式儲存資料,可讓您輕鬆在應用程式程式碼中直接處理資料。

我建構的 AI 應用程式需要搜尋「意義」或相似性嗎?

向量

這類資料庫經過最佳化,會根據數學相似度 (而非確切關鍵字) 儲存及比較資料。

資料點之間的關係與資料本身同樣重要嗎?

圖表

這些系統的設計宗旨是快速掃遍複雜的關係,例如社群網路或詐欺偵測路徑。

我需要追蹤會隨時間不斷變化的資料,例如感應器讀數嗎?

時間序列

這類資料庫經過最佳化,可記錄並查詢以時間為索引的資料點。

確定專案適用的資料庫類型後,建議您一併考慮如何管理資料庫。如果您需要快速擴充,並希望將時間花在編寫功能,而不是修正伺服器錯誤,通常最好選擇代管雲端服務。

您的資料庫是否已準備好整合 AI 技術?

即使資料庫能順暢支援目前的應用程式,AI 仍會帶來新的需求。在開始建構下一個 AI 功能前,請先思考以下問題,確認目前的設定是否已準備就緒:

  • 我的資料庫可以同時儲存高維度向量資料和一般資料嗎?
  • 如果可以:您可以使用現有資料庫進行 AI 作業,藉此簡化架構
  • 如果不行:您可能需要在堆疊中加入專用向量資料庫或外掛程式
  • 我的資料庫是否提供內建相似度搜尋功能?
  • 如果有:您的系統可以快速找到「有意義」的相符項目,不必額外編寫程式碼
  • 如果沒有:您應建構或管理獨立的「搜尋層」,將資料轉換成 AI 可理解的內容
  • 我的資料庫能否處理資料,而不必將資料移至其他地方?
  • 如果可以:可節省資料傳輸費用,並縮短 AI 回應的延遲時間
  • 如果不行:您可能面臨效能瓶頸,因為需要不斷將資料來回傳送至外部 AI 模型
  • 資料庫能否集中處理不同類型的資料 (文字、圖片、音訊)?
  • 如果可以:您可以使用統一的查詢語言,建構複雜的「多模態」AI 應用程式
  • 如果不行:您可能需要合併多個資料庫,但這會導致程式碼難以維護
  • 資料庫能否輕鬆更新「知識」,以因應新資料的到來?
  • 如果可以:AI 功能會隨著資料更新,即時反映變更
  • 如果不行:AI 回覆可能過時或不準確,直到您手動觸發耗時的重新建立索引作業
  • 資料庫是否可以提供強大的安全性和存取控管機制,確保 AI 查詢安全無虞?
  • 如果可以:您可以安全地建構 AI 應用程式,只向使用者顯示他們有權查看的資訊
  • 如果不行:您可能面臨「資料外洩」的風險,AI 可能會不小心將受限資訊分享給不該分享的對象