iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
Modern Web

30天一起搞懂Web觀念系列 第 20

[DAY20] NoSQL 是什麼?

  • 分享至 

  • xImage
  •  

昨天看完SQL,今天就來講NoSQL~

為什麼要有NoSQL?

因為現代的應用程式需要處理不同來源的資料,而且像是社群貼文、感測器資料、即時聊天紀錄等等,很容易就會資料量爆炸、結構變化,SQL的固定結構就會變得很難操作,就會導致冗餘、資料重複造成效能等問題

因此NoSQL就出現了,他讓資料庫更彈性,更能輕鬆的擴展


NoSQL是什麼?

NoSQL(Not Only SQL,不只 SQL)就是一系列 非關聯式資料庫,它的特點是:

  • 沒有固定欄位結構,更彈性
  • 適合大規模資料和高速存取
  • 通常是一次拿到整筆資料
  • 可擴展性高,分散到很多伺服器都能運作

所以你可以想像:

  • SQL → 有秩序的 Excel 表格
  • NoSQL → 更像一個可以隨意放東西的 JSON 櫃子

NoSQL常見種類

NoSQL有很多種描述資料的方式

  • 鍵值型 (Key-Value Store)

    • 類似 JavaScript 的物件 {key: value}
      • value 可以是字串、JSON、二進位檔案(圖片、影片)…
    • 超快的查詢速度
    • 例如 Redis、DynamoDB
    • 用途:適合需要 超快速存取 的場景,例如:
      • 快取系統(Cache)
      • 使用者登入 Session 管理
      • 排行榜(key=使用者ID,value=分數)
  • 文件型 (Document-based)

    • 資料存成JSON或BSON格式
    • 例如 MongoDB、CouchDB、Firebase Firestore
    • 舉例:

    一個學生的資料

    {
      "id": 1,
      "name": "Joanne",
      "courses": ["數學", "英文"],
      "address": {
        "city": "台北",
        "dist": "大安"
      }
    }
    

    另一個學生可能就沒有 address 欄位,這在文件型資料庫是合法的

    • 用途:適合需要靈活欄位的應用,例如:
      • 社群貼文(每篇貼文的欄位可能不同,有的有圖片、有的有影片)
      • 電商商品(每種商品屬性不一樣)
  • 圖形資料庫 (Graph Database)

    • 資料以**節點 (Node)關係 (Edge)**來表示,本質上是一張圖 (Graph)

    • 底層用圖論演算法(像是 BFS、DFS、最短路徑)去查詢

    • 例如 Neo4j

    • 舉例:

      • 節點 (Node):人、商品、文章

      • 關係 (Edge):認識、購買、留言

        Amy —[朋友]→ Bob
        Amy —[購買]→ iPhone
        Bob —[留言]→ iPhone

    • 用途:適合強調關係的場景

      • 社群網路(朋友推薦系統)
      • 商品推薦(買了 A 的人也買 B)

參考資料

https://aws.amazon.com/tw/nosql/

https://www.ithome.com.tw/news/92507


上一篇
[DAY19] 什麼是 SQL?什麼是關聯?
下一篇
[DAY21] 常見網頁安全問題:XSS、CSRF、Clickjacking 是什麼?
系列文
30天一起搞懂Web觀念30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言