柚子快報激活碼778899分享:NoSQL數(shù)據(jù)庫
柚子快報激活碼778899分享:NoSQL數(shù)據(jù)庫
? ? ? ? NoSQL最常見的解釋是Non-Relational,Not?Only SQL也被很多人接受。NoSQL僅僅是一個概念,泛指非關(guān)系型的數(shù)據(jù)庫,區(qū)別于關(guān)系數(shù)據(jù)庫,他們不保證關(guān)系數(shù)據(jù)的ACID特性。
1.NOSQL數(shù)據(jù)庫的分類
? ? ? ? 當前出現(xiàn)了很多不同類型、面向不同應用的No SQL產(chǎn)品,按照所使用的數(shù)據(jù)結(jié)構(gòu)的類型,一般可以將NoSQL數(shù)據(jù)庫分為4種類型:列式存儲數(shù)據(jù)庫、鍵值對存儲數(shù)據(jù)庫、文檔型數(shù)據(jù)庫、圖數(shù)據(jù)庫。
1.1.列式存儲數(shù)據(jù)庫
? ? ? ? ?行式數(shù)據(jù)庫即傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)按記錄存儲,每一條記錄的所有屬性存儲在一行。列式數(shù)據(jù)庫是按數(shù)據(jù)庫記錄的列來組織和存儲數(shù)據(jù)的,數(shù)據(jù)庫中每個表由一組頁鏈的集合組成。每條頁鏈對應表中的一個存儲列。
? ? ? ? 這類數(shù)據(jù)庫通常是用來應對分布式存儲的海量數(shù)據(jù)。鍵任然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。現(xiàn)有產(chǎn)品如Cassandra、HBase、Riak。
1.2.鍵值對存儲數(shù)據(jù)庫
? ? ? ? ?鍵值存儲的典型數(shù)據(jù)結(jié)構(gòu)一般為數(shù)組鏈表:先通過Hash算法得出Hashcode,找到數(shù)組的某一個位置,然后插入鏈表。
? ? ? ? 這類數(shù)據(jù)庫主要會用到一個哈希表,表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)。Key-value模型對于IT系統(tǒng)來說,其優(yōu)勢在于簡單、易部署。但是如果數(shù)據(jù)庫管理員只對部分值進行查詢或更新的時候,Key-value就顯得效率低下了?,F(xiàn)有產(chǎn)品如Tokyo?Cabinet/Tyrant、Redis、Voldemort、Oracle BDB。
1.3.文檔型數(shù)據(jù)庫
? ? ? ? ?文檔型數(shù)據(jù)庫同鍵值對存儲數(shù)據(jù)庫類似。文檔型數(shù)據(jù)庫的靈感來自于Lotus?Notes辦公軟件,而且它同鍵值存儲相類似。該類型的數(shù)據(jù)模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲,比如JSON。文檔型數(shù)據(jù)庫可以看作是鍵值數(shù)據(jù)庫的升級版,允許嵌套鍵值,在處理網(wǎng)頁等復雜數(shù)據(jù)時,文檔型數(shù)據(jù)庫比傳統(tǒng)鍵值數(shù)據(jù)庫的查詢效率更高?,F(xiàn)有產(chǎn)品如CouchDB、MongoDb,國內(nèi)也有文檔型數(shù)據(jù)庫SequoiaDB,已經(jīng)開源。
1.4.圖數(shù)據(jù)庫
? ? ? ? 圖行結(jié)構(gòu)的數(shù)據(jù)庫同其他采用行列以及剛性結(jié)構(gòu)的SQL數(shù)據(jù)庫不同,它使用靈活的圖形模型,并且能夠擴展到多個服務器上。NoSQL數(shù)據(jù)庫沒有標準的查詢語言(SQL),因此進行數(shù)據(jù)庫查詢需要指定數(shù)據(jù)模型。許多NOSQL數(shù)據(jù)庫都有REST式的數(shù)據(jù)接口或者查詢API。適合存儲通過圖進行建模的數(shù)據(jù),例如社交網(wǎng)絡數(shù)據(jù),生物信息網(wǎng)絡數(shù)據(jù),交通網(wǎng)絡數(shù)據(jù)等。常見的產(chǎn)品有Neo4J、InfoGrid、Infinite?Graph等。
2.NoSQL數(shù)據(jù)庫的一些共同特征?
? ? ? ? 目前業(yè)界對于NoSQL并沒有一個明確的范圍和定義,但是它們普遍存在下面一些共同特征:易擴展;大數(shù)據(jù)量,高性能;靈活的數(shù)據(jù)模型;高可用。
????????易擴展:去掉了關(guān)系數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴展。????????大數(shù)據(jù)量,高性能:NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下。這得益于它的無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡單。? ? ? ? 靈活的數(shù)據(jù)模型:NoSQL無須事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。? ? ? ? 高可用:NoSQL在不太影響性能的情況下,就可以方便地實現(xiàn)高可用的架構(gòu),有些產(chǎn)品通過復制模型也能實現(xiàn)高可用。
3.體系框架
? ? ? ? NoSQL整體框架分為4層,由下至上分為數(shù)據(jù)持久層(DataPersistence)、數(shù)據(jù)分布層(Data?Distribution?Model)、數(shù)據(jù)邏輯模型層(Data?Logical?Model)和接口層(Interface),層次之間相輔相成,協(xié)調(diào)工作。?
? ? ? ? (1)數(shù)據(jù)持久層定義了數(shù)據(jù)的存儲形式,主要包括基于內(nèi)存、硬盤、內(nèi)存和硬盤接口、定制可插拔4種形式。
? ? ? ? (2)數(shù)據(jù)分布層定義了數(shù)據(jù)是如何分布的,相對于關(guān)系型數(shù)據(jù)庫,NoSQL可選的機制比較多,主要有3種形式:一是CAP支持,可用于水平擴展;二是多數(shù)據(jù)中心支持,可以保證在橫跨多數(shù)據(jù)中心時也能夠平穩(wěn)運行;三是動態(tài)部署支持,可以在運行著的集群中動態(tài)地添加或刪除結(jié)點。
? ? ? ? (3)數(shù)據(jù)邏輯層表述了數(shù)據(jù)的邏輯表現(xiàn)形式。
? ? ? ? (4)接口層為上層應用提供了方便的數(shù)據(jù)調(diào)用接口,提供的選擇遠多于關(guān)系型數(shù)據(jù)庫。接口層提供了5種選擇:Rest、Thrift、Map/Reduce、Get/Put、特定語言API,使得應用程序和數(shù)據(jù)庫的交互更加方便。
柚子快報激活碼778899分享:NoSQL數(shù)據(jù)庫
文章鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。