N1QL為NoSQL數據庫帶來SQL般的查詢體驗

jopen 9年前發布 | 9K 次閱讀 NOSQL

英文原文:N1QL brings SQL to NoSQL databases

關系型數據庫已經流行了超過 40 年,在這個過程中 SQL 也成為了操作關系型數據庫的標準。SQL 將數據的存儲方式進行了包裝和抽象,使開發人員可以專注于程序邏輯。對開發人員工作的簡化也是 SQL 甚至關系型數據庫流行的原因。

社會在發展,數據在變化。從社交網絡、科學研究、物聯網等數據源產生的數據已經不局限于某個固定的結構,因此對于這些數據擅長結構化數據的關系型數據庫就難以處理了。

關系型數據庫最好有固定的 schema,這也使得滿足現代商業要求的敏捷性和快速迭代變得困難。動態 schema 不僅僅要求我們重新思考數據模型和數據庫,我們還需要一門新的查詢語言來讀取這些數據。

數據模型

我們先來看看數據模型。九十年代開始隨著圖形界面應用和 Web 應用的流行,多數商業應用的程序都使用面向對象的開發模式。對于 Web 應用來說 JSON 是表示數據對象的標準,服務器和應用之間交換的就是一個個 JSON 文件。兩千年左右 NoSQL 數據庫開始流行起來,NoSQL 數據庫的目的就是方便存儲和管理 JSON 文件。

JSON 數據庫很受開發人員的喜愛,因為它表示數據的方式和其他面向對象的程序設計語言如 Java、C++、.NET、Python 和 Ruby 等是一樣的而且可以有靈活的 schema。然而文件數據庫的開發人員一直以來都欠缺好用的查詢語言。

文件數據庫查詢語言的欠缺使開發人員陷入了兩難的境地:要么享受 JSON 靈活的數據模型要么享受關系型數據庫的 SQL 但兩者不可兼得。

查詢語言

N1QL(發音是“妮叩”)是一門將 SQL 引入文件數據庫的查詢語言。講得技術一點,JSON 是不符合第一范式的數據模型,而 N1QL 則對這一數據模型進行操作。N1QL 將傳統 SQL 對表和行的操作拓展至 JSON (嵌套文件)。

將 SQL 引入 JSON 有點像汽車油改電,雖然引擎換了但駕駛員的操作方式保持不變。現在開發人員既可以使用熟悉的 SQL 來操作又可以動態擴展應用的 schema。

下圖中是 SQL 和 N1QL 中 join 的寫法的一個簡單例子。想要深入學習 N1QL 的話請移步到 Couchbase 的 N1QL 教程

N1QL為NoSQL數據庫帶來SQL般的查詢體驗

擴展 SQL 而不是完全重新創造一門語言的好處是 SQL 中經典的關鍵字操作符排序集合等功能都可以進行復用。這極大地降低了開發人員使用 N1QL 的門檻。

不過關系型數據庫和文件數據庫的模型總歸是不同的,所以 N1QL 也有一些新的東西。比如 N1QL 引入了 NEST 和 UNNEST 關鍵字來集合或分解嵌套的對象、IS NULL 和 IS MISSING 來處理動態 schema 以及 ARRAY 函數來對數組元素進行遍歷或過濾。

新型數據模型的靈活性與開發人員熟悉的查詢語言的強大功能相結合為下一代更靈活更強大的應用開發打下了良好的基礎。開發者們借著妮叩盡情享受文件數據庫吧!

譯者/劉旭坤審校/朱正貴責編/仲浩

來自: CSDN
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!