第 10 章

搜尋、推薦與管理系統裡的資料結構

系統之所以能快速搜尋、合理推薦與穩定管理資訊,背後往往是多種資料結構一起合作。真實世界很少只靠單一結構就能解決所有問題。

Combined Data Structures

預計閱讀時間:約 5 分鐘

產品思考 系統設計

本章開場

你在購物網站打幾個字,商品就跳出來;在影音平台看完一部片,系統很快推薦下一部;在公司知識庫搜尋一個關鍵詞,文件與標籤立刻被帶出。這些體驗看起來順暢,但背後其實是很多資料結構一起分工。

本章要解決的問題

一個真實系統同時要面對查找、分類、排序、推薦、關聯與權限管理時,為什麼不能只靠一種資料結構?又該如何理解它們彼此之間的合作?

核心概念

前面章節介紹的每一種結構,都像一種工具。陣列適合位置明確的資料,字典與雜湊適合快速查找,樹狀結構適合分類導覽,圖形結構適合描述關係,堆積適合處理優先順序。實務系統通常不是選一個,而是同時用好幾個。

例如搜尋系統可能先靠索引快速找資料,再用排序規則決定顯示順序;推薦系統可能用圖找出相似關係,再用其他結構存使用者偏好;任務管理系統可能同時用樹管理專案層級、用佇列追工作流、用字典查任務狀態。

真實系統不是資料結構單選題,而是根據問題把工具組合起來。
多種資料結構協同運作示意(以串流平台為例) 串流平台背後同時運作的資料結構 樹狀結構 內容 分類 字典 使用者 資料查找 圖形結構 相似內容 關聯 推薦引擎 堆積 熱門 排行計算 雜湊 快取 快速命中 使用者只看到一個流畅的推薦介面 真實系統不是一種結構,而是多種結構各司其職、協同運作
多結構協同示意:一個串流平台背後同時使用樹、字典、圖、堆積與雜湊——各自負責不同功能

這種組合思維很重要。因為使用者看到的是一個整體體驗,但背後其實是不同結構各自扮演不同角色。

這在生活中像什麼

百貨公司導覽不只是一張清單。它會先有樓層分類,再有店櫃位置,還可能提供搜尋與推薦。你走進一個大型活動現場,也會先看總圖,再看分區,再查節目表。這些資訊服務很少只有一種整理方式。

同樣地,外送平台不只要列餐廳,還要讓你能搜尋、篩選、推薦、排序與看到配送關係。這些需求本身就暗示了不同結構要一起工作。

具體例子

  1. Netflix 視音平台:內容分類用樹狀結構,使用者觀看記錄用字典儲存,推薦引擎用圖連結相似內容,熱門內容排行用堆積改善顯示順序——四種結構各司其職。
  2. Google Maps 搜尋路線:地圖資料用圖表示道路連結,趕路時間用優先佇列計算最短路徑,區域索引用雜湊加速尋址,廣告點分類用樹狀結構管理,是最具代表性的多結構結合。
  3. 公司 CRM 系統:客戶資料用字典快速查尋,洽商互動歷程用連結串列保留順序,客戶分類用樹狀分層,高價值客戶用堆積式排序追蹤 VIP——這就是一個平凡日常工具背後的引擎。
  4. 專案管理平臺(如 Jira):專案與子任務用樹狀結構展開,任務流動用佇列按流程走,命名/標籤/狀態用字典查詢,緊急標記用堆積式排序推到首位。
  5. 圖書館經典搜尋機制:索引用字典/雜湊定位記錄位置,分類用樹狀結構指引主題,相關書目用圖連結,新資料優先顯示用堆積避免被埋沒,同樣是多結構共同支撐一個服務。

這在工作上有什麼用

公司的客戶資料系統、知識庫、企業資源管理系統、客服平台與專案系統,幾乎都是資料結構的綜合應用。知識庫要有分類樹、搜尋索引、標籤字典與權限結構;客服平台要有工單佇列、客戶資料查找、急件優先排序與流程節點串接。

如果設計者只會用一種思路看待所有問題,系統往往會變得笨重。真正成熟的設計,是知道每個需求適合哪一種資料安排方式,再把它們串成一套使用者感受良好的流程。

為什麼重要

  • 它讓我們理解系統效能與體驗背後不是運氣,而是結構設計。
  • 它幫助我們避免拿單一工具硬套所有問題。
  • 它讓資料結構從單點知識,變成系統思維的一部分。

取捨同樣存在。設計越多結構,實作與維護也會更複雜。所以真正的重點不是堆很多名詞,而是根據需求做合理配置。

一句話總結

好系統不是只會用一種資料結構,而是知道什麼問題該交給什麼工具。

💭 捲輊三問

  1. 你每天用的某個 app(串流、地圖、電商),背後你覺得可能用了哪些資料結構的組合?
  2. 為什麼沒有一種「萬用結構」可以解決所有問題?
  3. 下次你看到一個功能很複雜的系統,你打算怎麼拆解它背後可能用了哪些工具?
下一章

從系統走回辦公室——工作每天用到、卻不知道它叫什麼名字的結構,在第十一章一一揭榑。