今天小編帶大家了解下NoSQL,從廣義上說,NoSQL指的是非關系型數據庫,說的其實不是不用SQL,而是不只是SQL(NOT ONLY SQL)。NoSQL旨在打破關系型數據庫的統治格局,解決關系型數據庫解決不了的問題。
各個NoSQL數據庫都有一個共同的特點,就是能存儲海量的數據。NoSQL沒有復雜的關系模式,庫中的表是可以拆分的。幾乎所有的NoSQL數據庫都沒有數據表(table)的概念,取而代之的是文檔(document)。而文檔就是一個key-value(鍵-值)方式存儲數據的結構。比如{"item":"cigarette","brand":"Marlboro"}{"item":"liqor","brand":"Bacardi","qty":10}。把很多文件(document)存儲到一起的結構式集合(collection),而同一個集合(collection)里面的文件(document)的結構是不完全一致的。
NoSQL對數據的存儲類型沒有要求,什么都能往里面存,這也是NoSQL可以存儲圖像等復雜文件的原因。其中存儲專業圖的NoSQL數據庫是Neo4J,存儲文檔比較占優勢的是MongoDB,其他還有Cassandra等,HBASE也是一個NoSQL數據庫。下面我們就MongoDB做一個簡單介紹:
MongoDB是一個基於分布式文件存儲的數據庫,由C++編寫,旨在為WEB應用提供可擴展的高性能數據存儲解決方案。他支持的數據結構非常松散,是類似json的bjson格式,因此他可以存儲比較復雜的數據類型。MongoDB支持的查詢語言非常強大,其語法類似面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
雖然NoSQL有着廣泛的應用,但是我們認為NoSQL是不會取代傳統數據庫的,並在相當長的時間里,與傳統數據庫一起在各自領域發揮重要作用。