NoSQL,指的是非關系型的數據庫。隨著互聯(lián)網web2.0網站的興起,傳統(tǒng)的關系數據庫在應付web2.0網站,特別是超大規(guī)模和高并發(fā)的
10年的大田網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網絡營銷推廣的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整大田建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“大田網站設計”,“大田網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
SNS類型的web2.0純動態(tài)網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的數據庫則由于其本身的特點得到了非常迅速的發(fā)展。
NoSQL(NoSQL
= Not Only SQL
),意即“不僅僅是SQL”,是一項全新的數據庫革命性運動,早期就有人提出,發(fā)展至2009年趨勢越發(fā)高漲。NoSQL的擁護者們提倡運用非關系型的數
據存儲,相對于鋪天蓋地的關系型數據庫運用,這一概念無疑是一種全新的思維的注入。
從這一新興技術中選擇一款正確的NoSQL數據庫是非常具有挑戰(zhàn)性的。比一下網建議在選擇時考慮以下因素:
并發(fā)控制
并
發(fā)控制指的是當多個用戶同時更新運行時,用于保護數據庫完整性的各種技術。并發(fā)機制不正確可能導致臟讀、幻讀和不可重復讀等此類問題。并發(fā)控制的目的是保
證一個用戶的工作不會對另一個用戶的工作產生不合理的影響。在某些情況下,這些措施保證了當用戶和其他用戶一起操作時,所得的結果和她單獨操作時的結果是
一樣的。在另一些情況下,這表示用戶的工作按預定的方式受其他用戶的影響。
封鎖
就是事務T在對某個數據對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數據對象。
封鎖是一次只允許一個用戶讀取或修改的一種機制,是實現并發(fā)控制的一個非常重要的技術。
MVCC
Multi-Version Concurrency Control多版本并發(fā)控制,維持一個數據的多個版本使讀寫操作沒有沖突。MVCC優(yōu)化了數據庫并發(fā)系統(tǒng),使系統(tǒng)在有大量并發(fā)用戶時得到最高的性能,并且可以不用關閉服務器就直接進行熱備份。
ACID
指
數據庫事務正確執(zhí)行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久
性(Durability)。一個支持事務(Transaction)的數據庫系統(tǒng),必需要具有這四種特性,否則在事務過程(Transaction
processing)當中無法保證數據的正確性,交易過程極可能達不到交易方的要求。
None
一些系統(tǒng)不提供原子性。
鏡像
數據庫鏡像是DBMS根據DBA的要求,自動把整個數據庫或其中的關鍵數據復制到另一個磁盤上,每當主數據庫更新時,DBMS會自動把更新后的數據復制過去,即DBMS自動保證鏡像數據與主數據的一致性。
鏡像分為同步和異步。
數據存儲
指的是數據的物理特性怎樣被存儲在數據庫中。
磁盤 數據被存儲在硬盤驅動器里;
GFS或谷歌文件系統(tǒng)是一個由谷歌開發(fā)的專有的分布式文件系統(tǒng);
Hadoop是Apache軟件框架,免費許可下支持數據密集型分布式應用程序;
RAM隨機存儲器;
插件 可以添加外部插件;
Amazon S3通過Web服務接口提供存儲;
BDB:BDB
全稱是 “Berkeley DB”,它是MySQL具有事務能力的表類型,由Sleepycat
Software開發(fā)。BDB表類型提供了MySQL用戶長久期盼的功能,即事務控制能力。在任何RDBMS中,事務控制能力都是一種極其重要和寶貴的功
能。事務控制能力使得我們能夠確保一組命令確實已經全部執(zhí)行成功,或者確保當任何一個命令出現錯誤時所有命令的執(zhí)行結果均被退回。
實現語言
實現語言會影響數據庫的發(fā)展速度。典型的NoSQL數據庫是用低級語言如C / C + +編寫的。另一方面,那些更高層次的語言如Java,使自定義更容易。
實現語言有:C, C++, Erlang, Java, Python
特性
考慮下列哪一個特點對你的數據庫是最重要的:
持久性
可用性
一致性
分區(qū)容忍性
證書類型
下面這些許可證是一個不同的開放源碼許可的形式:
GPL:通用公共許可證
BSD:伯克利軟件分發(fā)
MPL:Mozilla公共許可證
EPL:Eclipse公共許可證
IDPL:最初的開發(fā)者的公共許可證
LGPL:較寬松通用公共許可證
存儲類型
存儲類型是NoSQL數據庫最大的不同,是決定使用哪款數據庫的一個首要指標。
關鍵字:支持get、put和刪除操作
按列存儲:相對于傳統(tǒng)的按行存儲,數據集成容易多了
面向文件系統(tǒng):存儲像是JSON或XML這樣的結構化文件,很容易就能從面向對象軟件中獲取數據。
在大數據時代,“多種架構支持多類應用”成為數據庫行業(yè)應對大數據的基本思路,數據庫行業(yè)出現互為補充的三大陣營,適用于事務處理應用的OldSQL、適用于數據分析應用的NewSQL和適用于互聯(lián)網應用的NoSQL。但在一些復雜的應用場景中,單一數據庫架構都不能完全滿足應用場景對海量結構化和非結構化數據的存儲管理、復雜分析、關聯(lián)查詢、實時性處理和控制建設成本等多方面的需要,因此不同架構數據庫混合部署應用成為滿足復雜應用的必然選擇。不同架構數據庫混合使用的模式可以概括為:OldSQL+NewSQL、OldSQL+NoSQL、NewSQL+NoSQL三種主要模式。下面通過三個案例對不同架構數據庫的混合應用部署進行介紹。
OldSQL+NewSQL 在數據中心類應用中混合部署
采用OldSQL+NewSQL模式構建數據中心,在充分發(fā)揮OldSQL數據庫的事務處理能力的同時,借助NewSQL在實時性、復雜分析、即席查詢等方面的獨特優(yōu)勢,以及面對海量數據時較強的擴展能力,滿足數據中心對當前“熱”數據事務型處理和海量歷史“冷”數據分析兩方面的需求。OldSQL+NewSQL模式在數據中心類應用中的互補作用體現在,OldSQL彌補了NewSQL不適合事務處理的不足,NewSQL彌補了OldSQL在海量數據存儲能力和處理性能方面的缺陷。
商業(yè)銀行數據中心采用OldSQL+NewSQL混合部署方式搭建,OldSQL數據庫滿足各業(yè)務系統(tǒng)數據的歸檔備份和事務型應用,NewSQL MPP數據庫集群對即席查詢、多維分析等應用提供高性能支持,并且通過MPP集群架構實現應對海量數據存儲的擴展能力。
商業(yè)銀行數據中心存儲架構
與傳統(tǒng)的OldSQL模式相比,商業(yè)銀行數據中心采用OldSQL+NewSQL混合搭建模式,數據加載性能提升3倍以上,即席查詢和統(tǒng)計分析性能提升6倍以上。NewSQL MPP的高可擴展性能夠應對新的業(yè)務需求,可隨著數據量的增長采用集群方式構建存儲容量更大的數據中心。
OldSQL+NoSQL 在互聯(lián)網大數據應用中混合部署
在互聯(lián)網大數據應用中采用OldSQL+NoSQL混合模式,能夠很好的解決互聯(lián)網大數據應用對海量結構化和非結構化數據進行存儲和快速處理的需求。在諸如大型電子商務平臺、大型SNS平臺等互聯(lián)網大數據應用場景中,OldSQL在應用中負責高價值密度結構化數據的存儲和事務型處理,NoSQL在應用中負責存儲和處理海量非結構化的數據和低價值密度結構化數據。OldSQL+NoSQL模式在互聯(lián)網大數據應用中的互補作用體現在,OldSQL彌補了NoSQL在ACID特性和復雜關聯(lián)運算方面的不足,NoSQL彌補了OldSQL在海量數據存儲和非結構化數據處理方面的缺陷。
數據魔方是淘寶網的一款數據產品,主要提供行業(yè)數據分析、店鋪數據分析。淘寶數據產品在存儲層采用OldSQL+NoSQL混合模式,由基于MySQL的分布式關系型數據庫集群MyFOX和基于HBase的NoSQL存儲集群Prom組成。由于OldSQL強大的語義和關系表達能力,在應用中仍然占據著重要地位,目前存儲在MyFOX中的統(tǒng)計結果數據已經達到10TB,占據著數據魔方總數據量的95%以上。另一方面,NoSQL作為SQL的有益補充,解決了OldSQL數據庫無法解決的全屬性選擇器等問題。
淘寶海量數據產品技術架構
基于OldSQL+NoSQL混合架構的特點,數據魔方目前已經能夠提供壓縮前80TB的數據存儲空間,支持每天4000萬的查詢請求,平均響應時間在28毫秒,足以滿足未來一段時間內的業(yè)務增長需求。
NewSQL+NoSQL 在行業(yè)大數據應用中混合部署
行業(yè)大數據與互聯(lián)網大數據的區(qū)別在于行業(yè)大數據的價值密度更高,并且對結構化數據的實時處理、復雜的多表關聯(lián)分析、即席查詢、數據強一致性等都比互聯(lián)網大數據有更高的要求。行業(yè)大數據應用場景主要是分析類應用,如:電信、金融、政務、能源等行業(yè)的決策輔助、預測預警、統(tǒng)計分析、經營分析等。
在行業(yè)大數據應用中采用NewSQL+NoSQL混合模式,充分利用NewSQL在結構化數據分析處理方面的優(yōu)勢,以及NoSQL在非結構數據處理方面的優(yōu)勢,實現NewSQL與NoSQL的功能互補,解決行業(yè)大數據應用對高價值結構化數據的實時處理、復雜的多表關聯(lián)分析、即席查詢、數據強一致性等要求,以及對海量非結構化數據存儲和精確查詢的要求。在應用中,NewSQL承擔高價值密度結構化數據的存儲和分析處理工作,NoSQL承擔存儲和處理海量非結構化數據和不需要關聯(lián)分析、Ad-hoc查詢較少的低價值密度結構化數據的工作。
當前電信運營商在集中化BI系統(tǒng)建設過程中面臨著數據規(guī)模大、數據處理類型多等問題,并且需要應對大量的固定應用,以及占統(tǒng)計總數80%以上的突發(fā)性臨時統(tǒng)計(ad-hoc)需求。在集中化BI系統(tǒng)的建設中采用NewSQL+NoSQL混搭的模式,充分利用NewSQL在復雜分析、即席查詢等方面處理性能的優(yōu)勢,及NoSQL在非結構化數據處理和海量數據存儲方面的優(yōu)勢,實現高效低成本。
集中化BI系統(tǒng)數據存儲架構
集中化BI系統(tǒng)按照數據類型和處理方式的不同,將結構化數據和非結構化數據分別存儲在不同的系統(tǒng)中:非結構化數據在Hadoop平臺上存儲與處理;結構化、不需要關聯(lián)分析、Ad-hoc查詢較少的數據保存在NoSQL數據庫或Hadoop平臺;結構化、需要關聯(lián)分析或經常ad-hoc查詢的數據,保存在NewSQL MPP數據庫中,短期高價值數據放在高性能平臺,中長期放在低成本產品中。
結語
當前信息化應用的多樣性、復雜性,以及三種數據庫架構各自所具有的優(yōu)勢和局限性,造成任何一種架構的數據庫都不能完全滿足應用需求,因此不同架構數據庫混合使用,從而彌補其他架構的不足成為必然選擇。根據應用場景采用不同架構數據庫進行組合搭配,充分發(fā)揮每種架構數據庫的特點和優(yōu)勢,并且與其他架構數據庫形成互補,完全涵蓋應用需求,保證數據資源的最優(yōu)化利用,將成為未來一段時期內信息化應用主要采用的解決方式。
目前在國內市場上,OldSQL主要為Oracle、IBM等國外數據庫廠商所壟斷,達夢、金倉等國產廠商仍處于追趕狀態(tài);南大通用憑借國產新型數據庫GBase 8a異軍突起,與EMC的Greenplum和HP的Vertica躋身NewSQL市場三強;NoSQL方面用戶則大多采用Hadoop開源方案。
非關系型數據庫:非關系型數據庫產品是傳統(tǒng)關系型數據庫的功能閹割版本,通過減少用不到或很少用的功能,來大幅度提高產品性能。
非關系型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合。
關系型數據庫:是指采用了關系模型來組織數據的數據庫。
關系模型指的就是二維表格模型,而一個關系型數據庫就是由二維表及其之間的聯(lián)系所組成的一個數據組織。
可以用SQL語句方便的在一個表以及多個表之間做非常復雜的數據查詢。
對于安全性能很高的數據訪問要求可以實現。
價格
目前基本上大部分主流的非關系型數據庫都是免費的。而比較有名氣的關系型數據庫,比如Oracle、DB2、MSSQL是收費的。雖然Mysql免費,但它需要做很多工作才能正式用于生產。
功能
實際開發(fā)中,有很多業(yè)務需求,其實并不需要完整的關系型數據庫功能,非關系型數據庫的功能就足夠使用了。這種情況下,使用性能更高、成本更低的非關系型數據庫當然是更明智的選擇。
對于這兩類數據庫,對方的優(yōu)勢就是自己的弱勢,反之亦然。