在傳統的應用開發中,SQL 資料庫(例如 MySQL、PostgreSQL、Oracle)因為擁有嚴謹的 Schema 與 ACID 特性,非常適合金融、ERP、會計系統等需要嚴格一致性的場景。但隨著應用需求越來越多樣化,特別是在大數據、快速迭代與分散式架構的環境下,SQL 固定的表格結構往往顯得笨重。
SQL(Structured Query Language,結構化查詢語言)資料庫是一種 關聯式資料庫,以表格(Table)的形式存放資料,透過行(Row)與列(Column)的結構來管理資訊。常見的 SQL 資料庫系統包括 MySQL、PostgreSQL、Oracle Database、Microsoft SQL Server 等。
其核心特色是:
結構化:資料需先設計資料表與欄位,並定義資料型別與約束。
關聯性:不同資料表之間可透過「主鍵(Primary Key)」與「外鍵(Foreign Key)」建立關聯。
標準化語法:使用 SQL 指令進行新增(INSERT)、查詢(SELECT)、更新(UPDATE)、刪除(DELETE)等操作。
一致性與完整性:強調交易(Transaction)與資料一致性,適合需要嚴格規範的應用情境。
NoSQL(Not Only SQL)是一類 非關聯式資料庫,與傳統 SQL 關聯式資料庫不同,它不依賴固定的資料表與 Schema,能以更彈性的方式處理 非結構化或半結構化資料。NoSQL 資料庫通常具備 高擴展性、高效能、容易水平擴充 的特點,常見類型包含文件型(如 MongoDB)、鍵值型(如 Redis)、列式(如 Cassandra)、圖形型(如 Neo4j)。它特別適合 大數據處理、即時應用、高併發服務 等場景。
項目 | SQL 資料庫 (關聯式) | NoSQL 資料庫 (以 MongoDB 為例) |
---|---|---|
資料模型 | 資料表 (Table)、列 (Row)、欄 (Column) | 文件 (Document)、集合 (Collection) |
結構 | 嚴格定義 Schema,需事先設計 | Schema 彈性,可同一集合中存不同欄位 |
查詢語言 | SQL (結構化查詢語言) | 各家語法不同,MongoDB 使用 JSON-like 查詢 |
資料關聯 | 透過 JOIN 關聯多表 | 傾向透過嵌入 (Embed) 或參照 (Reference),少用 JOIN |
擴充性 | 垂直擴充 (Scale-up),依賴更強硬體 | 水平擴充 (Scale-out),易於分散式架構 |
事務處理 | 強調 ACID (原子性、一致性、隔離性、持久性) | 傳統上較弱,MongoDB 4.0 後支援多文件交易 |
儲存形式 | 結構化資料,固定格式 | 半結構化或非結構化 (JSON、BSON) |
適用場景 | 金融系統、ERP、需要嚴格一致性的應用 | 高彈性、快速迭代的專案,如電商、社交平台、IoT |
MongoDB 是一種 NoSQL 資料庫,以 文件(Document) 形式來儲存資料,每筆資料使用類似 JSON 的 BSON 格式,具有高度彈性與可擴展性。它是目前最受歡迎的 NoSQL 解決方案之一,廣泛應用於網路服務、即時分析、大數據與雲端應用。
面向 | 說明 |
---|---|
類型 | NoSQL 文件導向資料庫 |
資料格式 | BSON(二進位 JSON),結構類似 JSON |
Schema | 無需固定 Schema,欄位可動態增減 |
核心特色 | 文件導向、高彈性、支援水平擴展(Sharding)、強大查詢與聚合(Aggregation Pipeline)、雲端友好(MongoDB Atlas) |
適用場景 | 即時應用(聊天室、通知)、電商平台(商品/訂單)、大數據分析、快速原型開發 |
優勢 | 彈性高、容易擴展、資料格式直觀 |
與 SQL 差異 | SQL 以表格存放,需固定 Schema;MongoDB 以文件存放,結構彈性更大 |