您最需要了解的NoSQL非關(guān)系型數(shù)據(jù)庫
朋友們,我們平時使用的數(shù)據(jù)庫,大多都是關(guān)系型數(shù)據(jù)庫,包括MySQL、PostgreSQL、SQLServer等。關(guān)系型數(shù)據(jù)庫的特點是數(shù)據(jù)的存儲通過二維表格實現(xiàn),將數(shù)據(jù)存儲在相互獨立的表格中。
近年來,隨著互聯(lián)網(wǎng)的飛速發(fā)展,數(shù)據(jù)的形態(tài)發(fā)生了很大改變,非關(guān)系型數(shù)據(jù)庫NoSQL應(yīng)運而生、越來越流行。NoSQL主要包括鍵值(Key-Value)存儲數(shù)據(jù)庫、列存儲(Column-oriedted)數(shù)據(jù)庫、面向文檔(Document-Oriented)數(shù)據(jù)庫、圖形(Graph)數(shù)據(jù)庫四種,下面介紹三款最常用的NoSQL數(shù)據(jù)庫。
Memcached(鍵值數(shù)據(jù)庫)
Memcaced是一個開源的、高性能的、具有分布式內(nèi)存對象的緩存系統(tǒng)。通過它可以減輕數(shù)據(jù)庫負載,加速動態(tài)的web應(yīng)用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年開發(fā)完成。目前全球有非常多的用戶都在使用它來架構(gòu)主機的大負載網(wǎng)站或提升主機的高訪問網(wǎng)站的響應(yīng)速度。
Memcached是一種純內(nèi)存緩存系統(tǒng),數(shù)據(jù)就像一張巨大的hash表,數(shù)據(jù)以key-value對的方式存在。通過緩存經(jīng)常被存取的對象或數(shù)據(jù),從而減輕了頻繁讀取數(shù)據(jù)庫的壓力,提高網(wǎng)站的響應(yīng)速度,構(gòu)建出快速更快的可擴展的Web應(yīng)用。
Memcached非常適合需要超高性能讀寫速度、持久化保存的應(yīng)用場景,但是最近幾年逐漸被其他的持久化產(chǎn)品替代如Redis。
Redis(鍵值數(shù)據(jù)庫)
Rediskey-value型存儲系統(tǒng)。相比Memcached,redis支持的存儲value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)等。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集、并集和差集及更豐富的操作,而且這些操作都是原子性的。
為了保證效率,redis的數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。
Redis提供了Python、Ruby、Erlang、PHP客戶端,使用非常方便。支持內(nèi)存緩存、支持持久化存儲、數(shù)據(jù)庫類型更豐富、支持主從集群、分布式 、支持隊列等特殊功能。
MongoDB(文檔數(shù)據(jù)庫)
MongoDB是一個介于關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系型數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。MongoDB支持的數(shù)據(jù)庫結(jié)構(gòu)非常松散,類似json的bjson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongodb***的特點是他支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。
MongoDB使用高效的二進制存儲數(shù)據(jù),她具有面向集合(Collenction-Orented)存儲、模式自由(schema-free)、支持動態(tài)查詢、支持完全索引、支持復(fù)制和故障恢復(fù)、自動處理碎片、以支持云計算層次的擴展性等諸多優(yōu)異性能,非常流行、應(yīng)用也非常廣泛。
雖然當前數(shù)據(jù)庫的主流還是關(guān)系型數(shù)據(jù)庫,但NoSQL的應(yīng)用只會越來越廣泛,原因非常簡單,因為當代和未來我們面對的數(shù)據(jù)類型越來越復(fù)雜,傳統(tǒng)的數(shù)據(jù)存儲方式已經(jīng)越來越無法滿足要求。
朋友們,如果您有興趣,可以更深入的了解下NoSQL,對您未來的學習、就業(yè)肯定會有莫大的幫助。