NoSQL is not only SQL
若由Oracle於1978年上市的第一個資料庫系統起算至今,資料庫技術的發展已接近40年。歷經光陰的粹鍊下,資料庫領域呈現高度成熟與穩定的態勢,直到1998年NoSQL這個名詞的出現,資料庫的世界開始有了重大的改變。其關鍵問題在於,傳統關聯式資料庫所堅持的資料一致性(Consistency),在新型態的資料需求產生之後,這樣的嚴謹反而成為一種阻礙。
CAP theorem是由Eric Brewer[13]所提出的理論,意指在分散式系統中,Consistency、Availability、Partition tolerance三種訴求只能保證其二。在Big data時代來臨後,資料量遠大過單一主機的處理上限,分散式系統成為顯學,此理論的限制立即被突顯。由於可用性(Availability)是各種系統公認所必須要求的基本,故多數系統在一致性(Consistency)與分散容錯性(Partition tolerance)作出選擇。傳統的關聯式資料庫系統以一致性為優先,所以分散式的關聯式資料庫系統總是有明顯的分散瓶頸;而NoSQL類資料庫決定挑戰以Partition tolerance為優先的系統設計方式,成功地開創了新的資料庫領域。
NoSQL做了更多資料導向的選擇,雖然使用者可能無法安心確定何時會達到同步(Eventual consistency),但可以讓資料有更快速的處理;語法上可能彈性少了,但可以讓執行流程更有效率。
資料多樣性(Data variety)是現今資料型態的現況,「你永遠不知道下一個資料型態是什麼?」根據db-engines.com[14]所統計的數量,已達到約300個資料庫產品數量,百家爭鳴的緣由就來自於資料的型態越來越多樣化,處理方式也天差地遠。各種資料庫都有其專注的資料問題,所以到現在這個時代,選擇資料庫本身也成為一個重要的課題了。
Key-value資料庫是NoSQL由繁趨簡的先驅,Memcached[15]是目前最具代表性的產品,它嘗試以最簡單的資料型式出發,以達到最有效率的資料交換模式。這類的資料庫講究效率,也易於分散式處理,極簡化資料存取,適用於快取類的應用。
Graph database是近年來成長快速的資料庫,代表性的產品為Neo4j[16],其針對的議題為資料之間的關聯性,因社群網路的發展而開始受到重視,而Graph問題的運算複雜度又正巧是傳統關聯式資料庫最痛的問題點之一,促使Graph database的壯大。Graph database有效地提供data mining新的契機,不論深度和廣度的資料搜尋,都有長足的進步。
Text search資料庫也因為輿情分析的需求而興起。全文檢索技術雖然發展較為成熟,但一直未發展成為獨立的資料庫系統。目前以Elasticsearch[17]最為熱門,它簡化了大量的文字資料索引的統整工作,並輔以管理一般數字及時間等相關資訊。對於欲建立私有文字資料庫的應用服務,有巨大的貢獻。目前wikimedia即使用Elasticasearch作為其文字檢索資料庫[18]。
IOT(Internet of things)的需求引發了Time series database發展,其訴求在於快速計算特定時間區間的統計值,並以統計模型進行未來趨勢評估。常見的應用於大量的感應器收集環境資料,即時性評估如機器壽命、結構風險、醫療警示等應用。其以時間戳記為核心,處理不同時間顆粒及區間的統計計算,也提供連續值點的填補與預估,以提供決策的需求。