資料

NoSQL(非關聯式資料庫)

/ NO-sequel or no-ESS-cue-ell /

NoSQL 是一類資料庫的統稱,它們不把所有東西都塞進 SQL 所依賴的那種規整的「列與欄」表格裡。它們不強求你預先把資料塞進一張固定的網格,而是讓每一筆記錄想長什麼樣就長什麼樣——當你的資料雜亂、經常變動、或乾脆套不進試算表時,這就很省心。

它有好幾種風味。文件型(如 MongoDB)把每筆記錄存成一團靈活的、類似 JSON 的資料;鍵值型(如 Redis)就是一本超大的字典——給它一個鍵,立刻還你一個值,快得飛起;此外還有寬欄型和圖(graph)資料庫,對付別的形狀的問題。

代價是實打實的。捨棄了死板的表格,你換來了靈活,往往還更容易橫跨多台機器擴展——但也放棄了關聯式資料庫白送給你的那種嚴格的一致性和清爽的關聯關係。這名字有點誤導:應理解為「不只是 SQL」,而非「不許用 SQL」。

db.users.insertOne({
  name: "Mei",
  roles: ["admin", "editor"],
  address: { city: "Taipei" }
})

文件型資料庫樂於把列表和物件巢狀在一筆記錄裡——根本不需要表格。

NoSQL 不是 SQL 的替代品,而是另一種工具。許多真實系統兩者都用:關聯式資料庫管訂單,鍵值儲存做快取。

又稱
non-relationaldocument databasekey-value storemongodbredis