NewSQL is in
講究泛用性的SQL類資料庫及重視專用性的NoSQL類資料庫,剛好追求的是兩個極端,而NewSQL則提倡平衡,平衡點則為應用服務的需要。資料庫系統近年來之所以多元化發展,其根本因素即在於資訊應用需求更為廣泛,傳統資料庫觀念無法一體適用,而其中改變甚鉅的即是資料分析市場的需求大增。所以雖然NewSQL定義上並未限定何種應用,但目前市場上NewSQL類產品均以資料分析作為設計的主要標的。
SQL資料庫的出現,是協助「人」簡單處理資料問題;NoSQL資料庫則是由「資料」為出發點,尋求資料專屬的處理系統。這其中還有一個缺口,就是「應用」,而這是NewSQL類資料庫所訴求的部份。
無論是SQL類資料庫或是NoSQL類資料庫,都是以基礎資料結構為設計核心,但若反過來從應用面來看,部份訴求可能就大不相同。以目前多數NewSQL資料庫設定為分析用資料庫為例,分析人員不盡然是資訊技術醇熟的操作人員,所以多納入較親切的SQL語法;交易安全及備援可能就不是優先的考量,所以多採用In-memory的技術加快執行效率,並調整交易安全等級,減少不必要的延遲;而過去Row-based觀念,也開始調整為利於統計運算的Column-based架構;在Big data的潮流下,NoSQL資料庫於分散式儲存的技術是必須要納入的。
In-memory relational database是NewSQL中成長快速的一個類別,如VoltDB[19]、MemSQL[20] 等產品都有相當優秀的表現,重點是重新針對In-memory的特點進行系統設計,在確保資料一致性的情況下,大幅提升執行效率,也具備一定程度的分散能力。NewSQL講究的不是極端的CAP theorem,而是CAP三者的平衡點。In-memory relational database可以讓使用者當成傳統的關聯式資料庫來使用,並善用記憶體的速度,來突破應用所需的效能瓶頸。
Multi-model database是另一個發展方向,它結合了不同類型資料庫的特點於一身。現時多數實際的應用,由於資料型態變化大,都可能必須整合兩種或以上的資料庫系統,以符合其應用發展需求。故Multi-model database期待能在單一資料庫,在接近專用資料庫效率的前提下,解決多樣化資料的問題,以減少管理及開發的複雜度。以FoundationDB[21]為例,目前已被Apple公司所併購[22],主要看上的就是Multi-model database的高使用彈性。同樣使用SQL介面,但可以同時擁有Key-value的快速,以及ACID的安心。
SQL與NoSQL的串連也是重頭戲,Apache Trafodion[23]專案是近來具代表性的例子,Transactional SQL-on-Hadoop Database。目標十分明確,就是要能兼顧SQL所提供的親切介面和資料交易安全,以及Hadoop平台的分散處理優勢。這個案例突顯了資料庫系統在操作介面與資料處理功能實際上是同等重要的。
Column oriented database對於以Row oriented設計傳統關聯式資料庫來說是相當巨大的改變,但以資料分析的時代需求而言,能夠從最底層的儲存方式來取得較佳的效率也是相當有效的作法之一。以MonetDB[24]為例,在以欄位為主的即時性統計運算,能夠取得不錯的執行效率。