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

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

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

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

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

資料庫關鍵重點

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

什麼是代管資料庫服務?

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

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

資料庫如何運作?

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

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

資料庫類型

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

類型

適用情境

主要特性

範例

關聯式 (SQL)

關係明確的結構化資料

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

銀行帳戶餘額系統

非關聯式 (NoSQL)

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

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

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

Key-Value

簡單快速的查詢

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

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

文件

儲存複雜的巢狀資料

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

管理電子商務產品目錄

向量

AI 與機器學習

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

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

圖形

擁有深層連結的資料

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

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

時間序列

隨時間變動的資料

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


監控工廠內的溫度感應器

類型

適用情境

主要特性

範例

關聯式 (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 應用程式需要搜尋「意義」或相似性嗎?

向量

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

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

圖表

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

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

時間序列

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

考量

推薦的資料庫類型

推論

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

關聯式 (SQL)

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

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

NoSQL

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

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

鍵/值

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

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

文件

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

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

向量

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

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

圖表

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

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

時間序列

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

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

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

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

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