而傳統的關系數據庫在應付web2.0網站,特別是超大規模和高并發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,例如:
10年積累的成都網站建設、做網站經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站制作后付款的網站建設流程,更有桐鄉免費網站建設讓你可以放心的選擇與我們合作。
1、High performance - 對數據庫高并發讀寫的需求
web2.0網站要根據用戶個性化信息來實時生成動態頁面和提供動態信息,所以基本上無法使用動態頁面靜態化技術,因此數據庫并發負載非常高,往往要達到每秒上萬次讀寫請求。關系數據庫應付上萬次SQL查詢還勉強頂得住,但是應付上萬次SQL寫數據請求,硬盤IO就已經無法承受了。其實對于普通的BBS網站,往往也存在對高并發寫請求的需求。
2、Huge Storage - 對海量數據的高效率存儲和訪問的需求
對于大型的SNS網站,每天用戶產生海量的用戶動態,以國外的Friendfeed為例,一個月就達到了2.5億條用戶動態,對于關系數據庫來說,在一張2.5億條記錄的表里面進行SQL查詢,效率是極其低下乃至不可忍受的。再例如大型web網站的用戶登錄系統,例如騰訊,盛大,動輒數以億計的帳號,關系數據庫也很難應付。
3、High Scalability High Availability- 對數據庫的高可擴展性和高可用性的需求
在基于web的架構當中,數據庫是最難進行橫向擴展的,當一個應用系統的用戶量和訪問量與日俱增的時候,你的數據庫卻沒有辦法像web server和app server那樣簡單的通過添加更多的硬件和服務節點來擴展性能和負載能力。對于很多需要提供24小時不間斷服務的網站來說,對數據庫系統進行升級和擴展是非常痛苦的事情,往往需要停機維護和數據遷移,為什么數據庫不能通過不斷的添加服務器節點來實現擴展呢?
在上面提到的“三高”需求面前,關系數據庫遇到了難以克服的障礙,而對于web2.0網站來說,關系數據庫的很多主要特性卻往往無用武之地,例如:
1、數據庫事務一致性需求
很多web實時系統并不要求嚴格的數據庫事務,對讀一致性的要求很低,有些場合對寫一致性要求也不高。因此數據庫事務管理成了數據庫高負載下一個沉重的負擔。
2、數據庫的寫實時性和讀實時性需求
對關系數據庫來說,插入一條數據之后立刻查詢,是肯定可以讀出來這條數據的,但是對于很多web應用來說,并不要求這么高的實時性。
3、對復雜的SQL查詢,特別是多表關聯查詢的需求
任何大數據量的web系統,都非常忌諱多個大表的關聯查詢,以及復雜的數據分析類型的復雜SQL報表查詢,特別是SNS類型的網站,從需求以及產品設計角度,就避免了這種情況的產生。往往更多的只是單表的主鍵查詢,以及單表的簡單條件分頁查詢,SQL的功能被極大的弱化了。
因此,關系數據庫在這些越來越多的應用場景下顯得不那么合適了,為了解決這類問題的非關系數據庫應運而生。
NoSQL 是非關系型數據存儲的廣義定義。它打破了長久以來關系型數據庫與ACID理論大一統的局面。NoSQL 數據存儲不需要固定的表結構,通常也不存在連接操作。在大數據存取上具備關系型數據庫無法比擬的性能優勢。該術語在 2009 年初得到了廣泛認同。
當今的應用體系結構需要數據存儲在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲就是為了實現這個需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業 NoSQL 實現。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認同。
SQL的獨特優勢包括:
1. SQL能夠加強與數據的交互,并允許對單個數據庫設計提出問題。這是很關鍵的特征,因為無法交互的數據基本上是沒用的,并且,增強的交互性能夠帶來新的見解、新的問題和更有意義的未來交互。
2. SQL是標準化的,使用戶能夠跨系統運用他們的知識,并對第三方附件和工具提供支持。
3. SQL能夠擴展,并且是多功能和經過時間驗證的,這能夠解決從快寫為主導的傳輸到掃描密集型深入分析等問題。
4. SQL對數據呈現和存儲采用正交形式,一些SQL系統支持JSON和其他結構化對象格式,比NoSQL具有更好的性能和更多功能。
NoSQL特點:
易擴展
NoSQL數據庫種類繁多,但是一個共同的特點都是去掉關系數據庫的關系型特性。數據之間無關系,這樣就非常容易擴展。也無形之間,在架構的層面上帶來了可擴展的能力。
大數據量,高性能
NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。這得益于它的無關系性,數據庫的結構簡單。NoSQL的Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要性能高很多了。
靈活的數據模型
NoSQL無需事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式。而在關系數據庫里,增刪字段是一件非常麻煩的事情。如果是非常大數據量的表,增加字段簡直就是一個噩夢。這點在大數據量的web2.0時代尤其明顯。
高可用
NoSQL在不太影響性能的情況,就可以方便的實現高可用的架構。比如Cassandra,HBase模型,通過復制模型也能實現高可用。
特點:
它們可以處理超大量的數據。
它們運行在便宜的PC服務器集群上。
PC集群擴充起來非常方便并且成本很低,避免了“sharding”操作的復雜性和成本。
它們擊碎了性能瓶頸。
NoSQL的支持者稱,通過NoSQL架構可以省去將Web或Java應用和數據轉換成SQL友好格式的時間,執行速度變得更快。
“SQL并非適用于所有的程序代碼,” 對于那些繁重的重復操作的數據,SQL值得花錢。但是當數據庫結構非常簡單時,SQL可能沒有太大用處。
沒有過多的操作。
雖然NoSQL的支持者也承認關系數據庫提供了無可比擬的功能集合,而且在數據完整性上也發揮絕對穩定,他們同時也表示,企業的具體需求可能沒有那么多。
Bootstrap支持
因為NoSQL項目都是開源的,因此它們缺乏供應商提供的正式支持。這一點它們與大多數開源項目一樣,不得不從社區中尋求支持。
優點:
易擴展
NoSQL數據庫種類繁多,但是一個共同的特點都是去掉關系數據庫的關系型特性。數據之間無關系,這樣就非常容易擴展。也無形之間,在架構的層面上帶來了可擴展的能力。
大數據量,高性能
NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。這得益于它的無關系性,數據庫的結構簡單。一般MySQL使用 Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對web2.0的交互頻繁的應用,Cache性能不高。而NoSQL的 Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要性能高很多了。
靈活的數據模型
NoSQL無需事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式。而在關系數據庫里,增刪字段是一件非常麻煩的事情。如果是非常大數據量的表,增加字段簡直就是一個噩夢。這點在大數據量的web2.0時代尤其明顯。
高可用
NoSQL在不太影響性能的情況,就可以方便的實現高可用的架構。比如Cassandra,HBase模型,通過復制模型也能實現高可用。
主要應用:
Apache HBase
這個大數據管理平臺建立在谷歌強大的BigTable管理引擎基礎上。作為具有開源、Java編碼、分布式多個優勢的數據庫,Hbase最初被設計應用于Hadoop平臺,而這一強大的數據管理工具,也被Facebook采用,用于管理消息平臺的龐大數據。
Apache Storm
用于處理高速、大型數據流的分布式實時計算系統。Storm為Apache Hadoop添加了可靠的實時數據處理功能,同時還增加了低延遲的儀表板、安全警報,改進了原有的操作方式,幫助企業更有效率地捕獲商業機會、發展新業務。
Apache Spark
該技術采用內存計算,從多迭代批量處理出發,允許將數據載入內存做反復查詢,此外還融合數據倉庫、流處理和圖計算等多種計算范式,Spark用Scala語言實現,構建在HDFS上,能與Hadoop很好的結合,而且運行速度比MapReduce快100倍。
Apache Hadoop
該技術迅速成為了大數據管理標準之一。當它被用來管理大型數據集時,對于復雜的分布式應用,Hadoop體現出了非常好的性能,平臺的靈活性使它可以運行在商用硬件系統,它還可以輕松地集成結構化、半結構化和甚至非結構化數據集。
Apache Drill
你有多大的數據集?其實無論你有多大的數據集,Drill都能輕松應對。通過支持HBase、Cassandra和MongoDB,Drill建立了交互式分析平臺,允許大規模數據吞吐,而且能很快得出結果。
Apache Sqoop
也許你的數據現在還被鎖定于舊系統中,Sqoop可以幫你解決這個問題。這一平臺采用并發連接,可以將數據從關系數據庫系統方便地轉移到Hadoop中,可以自定義數據類型以及元數據傳播的映射。事實上,你還可以將數據(如新的數據)導入到HDFS、Hive和Hbase中。
Apache Giraph
這是功能強大的圖形處理平臺,具有很好可擴展性和可用性。該技術已經被Facebook采用,Giraph可以運行在Hadoop環境中,可以將它直接部署到現有的Hadoop系統中。通過這種方式,你可以得到強大的分布式作圖能力,同時還能利用上現有的大數據處理引擎。
Cloudera Impala
Impala模型也可以部署在你現有的Hadoop群集上,監視所有的查詢。該技術和MapReduce一樣,具有強大的批處理能力,而且Impala對于實時的SQL查詢也有很好的效果,通過高效的SQL查詢,你可以很快的了解到大數據平臺上的數據。
Gephi
它可以用來對信息進行關聯和量化處理,通過為數據創建功能強大的可視化效果,你可以從數據中得到不一樣的洞察力。Gephi已經支持多個圖表類型,而且可以在具有上百萬個節點的大型網絡上運行。Gephi具有活躍的用戶社區,Gephi還提供了大量的插件,可以和現有系統完美的集成到一起,它還可以對復雜的IT連接、分布式系統中各個節點、數據流等信息進行可視化分析。
MongoDB
這個堅實的平臺一直被很多組織推崇,它在大數據管理上有極好的性能。MongoDB最初是由DoubleClick公司的員工創建,現在該技術已經被廣泛的應用于大數據管理。MongoDB是一個應用開源技術開發的NoSQL數據庫,可以用于在JSON這樣的平臺上存儲和處理數據。目前,紐約時報、Craigslist以及眾多企業都采用了MongoDB,幫助他們管理大型數據集。(Couchbase服務器也作為一個參考)。
十大頂尖公司:
Amazon Web Services
Forrester將AWS稱為“云霸主”,談到云計算領域的大數據,那就不得不提到亞馬遜。該公司的Hadoop產品被稱為EMR(Elastic Map Reduce),AWS解釋這款產品采用了Hadoop技術來提供大數據管理服務,但它不是純開源Hadoop,經過修改后現在被專門用在AWS云上。
Forrester稱EMR有很好的市場前景。很多公司基于EMR為客戶提供服務,有一些公司將EMR應用于數據查詢、建模、集成和管理。而且AWS還在創新,Forrester稱未來EMR可以基于工作量的需要自動縮放調整大小。亞馬遜計劃為其產品和服務提供更強大的EMR支持,包括它的RedShift數據倉庫、新公布的Kenesis實時處理引擎以及計劃中的NoSQL數據庫和商業智能工具。不過AWS還沒有自己的Hadoop發行版。
Cloudera
Cloudera有開源Hadoop的發行版,這個發行版采用了Apache Hadoop開源項目的很多技術,不過基于這些技術的發行版也有很大的進步。Cloudera為它的Hadoop發行版開發了很多功能,包括Cloudera管理器,用于管理和監控,以及名為Impala的SQL引擎等。Cloudera的Hadoop發行版基于開源Hadoop,但也不是純開源的產品。當Cloudera的客戶需要Hadoop不具備的某些功能時,Cloudera的工程師們就會實現這些功能,或者找一個擁有這項技術的合作伙伴。Forrester表示:“Cloudera的創新方法忠于核心Hadoop,但因為其可實現快速創新并積極滿足客戶需求,這一點使它不同于其他那些供應商。”目前,Cloudera的平臺已經擁有200多個付費客戶,一些客戶在Cloudera的技術支持下已經可以跨1000多個節點實現對PB級數據的有效管理。
Hortonworks
和Cloudera一樣,Hortonworks是一個純粹的Hadoop技術公司。與Cloudera不同的是,Hortonworks堅信開源Hadoop比任何其他供應商的Hadoop發行版都要強大。Hortonworks的目標是建立Hadoop生態圈和Hadoop用戶社區,推進開源項目的發展。Hortonworks平臺和開源Hadoop聯系緊密,公司管理人員表示這會給用戶帶來好處,因為它可以防止被供應商套牢(如果Hortonworks的客戶想要離開這個平臺,他們可以輕松轉向其他開源平臺)。這并不是說Hortonworks完全依賴開源Hadoop技術,而是因為該公司將其所有開發的成果回報給了開源社區,比如Ambari,這個工具就是由Hortonworks開發而成,用來填充集群管理項目漏洞。Hortonworks的方案已經得到了Teradata、Microsoft、Red Hat和SAP這些供應商的支持。
IBM
當企業考慮一些大的IT項目時,很多人首先會想到IBM。IBM是Hadoop項目的主要參與者之一,Forrester稱IBM已有100多個Hadoop部署,它的很多客戶都有PB級的數據。IBM在網格計算、全球數據中心和企業大數據項目實施等眾多領域有著豐富的經驗。“IBM計劃繼續整合SPSS分析、高性能計算、BI工具、數據管理和建模、應對高性能計算的工作負載管理等眾多技術。”
Intel
和AWS類似,英特爾不斷改進和優化Hadoop使其運行在自己的硬件上,具體來說,就是讓Hadoop運行在其至強芯片上,幫助用戶打破Hadoop系統的一些限制,使軟件和硬件結合的更好,英特爾的Hadoop發行版在上述方面做得比較好。Forrester指出英特爾在最近才推出這個產品,所以公司在未來還有很多改進的可能,英特爾和微軟都被認為是Hadoop市場上的潛力股。
MapR Technologies
MapR的Hadoop發行版目前為止也許是最好的了,不過很多人可能都沒有聽說過。Forrester對Hadoop用戶的調查顯示,MapR的評級最高,其發行版在架構和數據處理能力上都獲得了最高分。MapR已將一套特殊功能融入其Hadoop發行版中。例如網絡文件系統(NFS)、災難恢復以及高可用性功能。Forrester說MapR在Hadoop市場上沒有Cloudera和Hortonworks那樣的知名度,MapR要成為一個真正的大企業,還需要加強伙伴關系和市場營銷。
Microsoft
微軟在開源軟件問題上一直很低調,但在大數據形勢下,它不得不考慮讓Windows也兼容Hadoop,它還積極投入到開源項目中,以更廣泛地推動Hadoop生態圈的發展。我們可以在微軟的公共云Windows Azure HDInsight產品中看到其成果。微軟的Hadoop服務基于Hortonworks的發行版,而且是為Azure量身定制的。
微軟也有一些其他的項目,包括名為Polybase的項目,讓Hadoop查詢實現了SQLServer查詢的一些功能。Forrester說:“微軟在數據庫、數據倉庫、云、OLAP、BI、電子表格(包括PowerPivot)、協作和開發工具市場上有很大優勢,而且微軟擁有龐大的用戶群,但要在Hadoop這個領域成為行業領導者還有很遠的路要走。”
Pivotal Software
EMC和Vmware部分大數據業務分拆組合產生了Pivotal。Pivotal一直努力構建一個性能優越的Hadoop發行版,為此,Pivotal在開源Hadoop的基礎上又添加了一些新的工具,包括一個名為HAWQ的SQL引擎以及一個專門解決大數據問題的Hadoop應用。Forrester稱Pivotal Hadoop平臺的優勢在于它整合了Pivotal、EMC、Vmware的眾多技術,Pivotal的真正優勢實際上等于EMC和Vmware兩大公司為其撐腰。到目前為止,Pivotal的用戶還不到100個,而且大多是中小型客戶。
Teradata
對于Teradata來說,Hadoop既是一種威脅也是一種機遇。數據管理,特別是關于SQL和關系數據庫這一領域是Teradata的專長。所以像Hadoop這樣的NoSQL平臺崛起可能會威脅到Teradata。相反,Teradata接受了Hadoop,通過與Hortonworks合作,Teradata在Hadoop平臺集成了SQL技術,這使Teradata的客戶可以在Hadoop平臺上方便地使用存儲在Teradata數據倉庫中的數據。
AMPLab
通過將數據轉變為信息,我們才可以理解世界,而這也正是AMPLab所做的。AMPLab致力于機器學習、數據挖掘、數據庫、信息檢索、自然語言處理和語音識別等多個領域,努力改進對信息包括不透明數據集內信息的甄別技術。除了Spark,開源分布式SQL查詢引擎Shark也源于AMPLab,Shark具有極高的查詢效率,具有良好的兼容性和可擴展性。近幾年的發展使計算機科學進入到全新的時代,而AMPLab為我們設想一個運用大數據、云計算、通信等各種資源和技術靈活解決難題的方案,以應對越來越復雜的各種難題。
NoSQL,指的是非關系型的數據庫。隨著互聯網web2.0網站的興起,傳統的關系數據庫在應付web2.0網站,特別是超大規模和高并發的
SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的數據庫則由于其本身的特點得到了非常迅速的發展。
NoSQL(NoSQL
= Not Only SQL
),意即“不僅僅是SQL”,是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的數
據存儲,相對于鋪天蓋地的關系型數據庫運用,這一概念無疑是一種全新的思維的注入。
從這一新興技術中選擇一款正確的NoSQL數據庫是非常具有挑戰性的。比一下網建議在選擇時考慮以下因素:
并發控制
并
發控制指的是當多個用戶同時更新運行時,用于保護數據庫完整性的各種技術。并發機制不正確可能導致臟讀、幻讀和不可重復讀等此類問題。并發控制的目的是保
證一個用戶的工作不會對另一個用戶的工作產生不合理的影響。在某些情況下,這些措施保證了當用戶和其他用戶一起操作時,所得的結果和她單獨操作時的結果是
一樣的。在另一些情況下,這表示用戶的工作按預定的方式受其他用戶的影響。
封鎖
就是事務T在對某個數據對象(例如表、記錄等)操作之前,先向系統發出請求,對其加鎖。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數據對象。
封鎖是一次只允許一個用戶讀取或修改的一種機制,是實現并發控制的一個非常重要的技術。
MVCC
Multi-Version Concurrency Control多版本并發控制,維持一個數據的多個版本使讀寫操作沒有沖突。MVCC優化了數據庫并發系統,使系統在有大量并發用戶時得到最高的性能,并且可以不用關閉服務器就直接進行熱備份。
ACID
指
數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久
性(Durability)。一個支持事務(Transaction)的數據庫系統,必需要具有這四種特性,否則在事務過程(Transaction
processing)當中無法保證數據的正確性,交易過程極可能達不到交易方的要求。
None
一些系統不提供原子性。
鏡像
數據庫鏡像是DBMS根據DBA的要求,自動把整個數據庫或其中的關鍵數據復制到另一個磁盤上,每當主數據庫更新時,DBMS會自動把更新后的數據復制過去,即DBMS自動保證鏡像數據與主數據的一致性。
鏡像分為同步和異步。
數據存儲
指的是數據的物理特性怎樣被存儲在數據庫中。
磁盤 數據被存儲在硬盤驅動器里;
GFS或谷歌文件系統是一個由谷歌開發的專有的分布式文件系統;
Hadoop是Apache軟件框架,免費許可下支持數據密集型分布式應用程序;
RAM隨機存儲器;
插件 可以添加外部插件;
Amazon S3通過Web服務接口提供存儲;
BDB:BDB
全稱是 “Berkeley DB”,它是MySQL具有事務能力的表類型,由Sleepycat
Software開發。BDB表類型提供了MySQL用戶長久期盼的功能,即事務控制能力。在任何RDBMS中,事務控制能力都是一種極其重要和寶貴的功
能。事務控制能力使得我們能夠確保一組命令確實已經全部執行成功,或者確保當任何一個命令出現錯誤時所有命令的執行結果均被退回。
實現語言
實現語言會影響數據庫的發展速度。典型的NoSQL數據庫是用低級語言如C / C + +編寫的。另一方面,那些更高層次的語言如Java,使自定義更容易。
實現語言有:C, C++, Erlang, Java, Python
特性
考慮下列哪一個特點對你的數據庫是最重要的:
持久性
可用性
一致性
分區容忍性
證書類型
下面這些許可證是一個不同的開放源碼許可的形式:
GPL:通用公共許可證
BSD:伯克利軟件分發
MPL:Mozilla公共許可證
EPL:Eclipse公共許可證
IDPL:最初的開發者的公共許可證
LGPL:較寬松通用公共許可證
存儲類型
存儲類型是NoSQL數據庫最大的不同,是決定使用哪款數據庫的一個首要指標。
關鍵字:支持get、put和刪除操作
按列存儲:相對于傳統的按行存儲,數據集成容易多了
面向文件系統:存儲像是JSON或XML這樣的結構化文件,很容易就能從面向對象軟件中獲取數據。
分享題目:nosql高并發系統加速的簡單介紹
文章來源:http://vcdvsql.cn/article36/dsdgdsg.html
成都網站建設公司_創新互聯,為您提供云服務器、網頁設計公司、Google、企業網站制作、靜態網站、外貿建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯