iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
Software Development

Zero to Ruby on Rails系列 第 29

Day 29 - NoSQL 非關聯式資料庫

  • 分享至 

  • xImage
  •  

隨著 AI 快速發展,現已進入大數據的時代,相較於傳統的關聯型資料庫(如MySQL、PostgreSQL、SQL Server等)在許多應用中表現出色,但它們不適合所有情況,對於需要處理大量非結構化或半結構化數據,以及需要更高伸縮性和彈性的應用, NoSQL 資料庫就因此應運而生!

什麼是 NoSQL?

NoSQL(Not Only SQL)是一個泛指的術語,用於描述那些不採用傳統 SQL(Structured Query Language)關聯式資料庫管理系統的數據儲存系統。 NoSQL 資料庫的特點在於它們不遵循固定的架構,允許更靈活的數據模型,並提供更高的伸縮性和性能

NoSQL 的起源

NoSQL 並非一夜之間興起,它源於對大型網絡應用的需求。早期的互聯網企業,如 Google 和 Amazon,面臨著龐大的數據量,傳統關聯型數據庫難以滿足其需求。因此,它們開始開發自己的數據儲存系統,並共享這些經驗和技術。這些新的數據儲存系統就漸漸演變成了 NoSQL 資料庫

NoSQL 的關鍵特點

  • 非結構化數據: NoSQL 資料庫允許儲存和查詢非結構化或半結構化數據,這是關聯型數據庫難以處理的

  • 高伸縮性: NoSQL 資料庫設計用於水平伸縮,可以輕鬆處理大量數據和高流量

  • 分散式數據庫: 許多 NoSQL 資料庫支持分散式架構,使數據儲存在多個節點上,提高了可用性和容錯能力

  • 沒有固定模式: NoSQL 資料庫通常不需要固定的結構,允許根據需求靈活調整數據模型

NoSQL 的主要類型

  1. 文件型資料庫(Document Databases)
    文件型資料庫是NoSQL的一個重要分支,它們將數據儲存為文檔或記錄,通常使用 JSON或BSON 等類似的格式。這些文檔可以容納多種數據類型,從半結構化到非結構化。文件型資料庫的主要特點包括:
  • 非結構化數據:支持彈性的數據模型,無需嚴格的結構。
  • 高伸縮性:能夠處理大量數據和高讀寫負載。
  • 多用途:適用於許多不同應用,包括內容管理、用戶配置文件、目錄、日誌等。

代表性的文件型資料庫包括 MongoDB、CouchDB 和 RavenDB。

  1. 鍵-值資料庫(Key-Value Stores)
    鍵-值資料庫是 NoSQL 的最簡單形式,它們將數據儲存為鍵值對。這種類型的資料庫非常適合需要快速讀取和寫入操作的應用,並且通常用於緩存和會話儲存等場景。主要特點包括:
  • 簡單性:最基本的數據儲存方式,只需一個鍵和一個值。
  • 快速讀寫:高性能,特別適合需要快速存取的情境。
  • 分佈式:能夠擴展到多個節點,實現高可用性。

知名的鍵-值資料庫包括 Redis、Amazon DynamoDB 和 Riak。

  1. 列族型資料庫(Column-Family Stores)
    列族型資料庫是為處理大型數據集而設計的 NoSQL 類型,通常適用於分佈式環境。這些數據庫使用列族(column family)結構來儲存數據,這對於需要高性能和可伸縮性的應用非常有利。主要特點包括:
  • 大型數據集:能夠處理海量數據,支持高速讀寫操作。
  • 分佈式:通常構建在分佈式環境中,實現高可用性。
  • 高伸縮性:能夠擴展到多個節點,實現橫向伸縮。

知名的列族型資料庫包括 Apache Cassandra、HBase和Amazon SimpleDB。

  1. 圖形資料庫(Graph Databases)
    圖形資料庫是專為處理圖形數據而設計的 NoSQL 類型,它們適用於表示實體之間的關係,如社交網絡、知識圖譜和網絡拓撲。主要特點包括:
  • 圖形結構:使用節點和邊來表示實體和它們之間的關係。
  • 複雜查詢:支持複雜的圖形查詢,用於發現模式和關聯。
  • 高性能:適合處理大型圖形,實現高效的圖形遍歷。

著名的圖形資料庫包括 Neo4j、OrientDB和ArangoDB。

每種 NoSQL 類型都擁有自己的優勢和適用範圍,根據具體需求,選擇適合的類型和資料庫系統非常重要。

參考資料

什麼是 NoSQL?

NoSQL

NoSQL資料庫設計概念導讀

預告

明天即將來到鐵人賽的最後一天,我們明天見!


上一篇
Day 28 - DNS 網域名稱系統 & IP 位址
下一篇
Day 30 - TDD 測試驅動開發
系列文
Zero to Ruby on Rails30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言