老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

nosql為什么有優勢,關系數據庫和nosql的優缺點

為什么要使用NoSQL?NOSQL的優勢

非常榮幸能受邀在InfoQ開辟這樣一個關于NoSQL的專欄,InfoQ是我非常尊重的一家技術媒體,同時我也希望借助InfoQ,在國內推動NoSQL的發展,希望跟我一樣有興趣的朋友加入進來。這次的NoSQL專欄系列將先整體介紹NoSQL,然后介紹如何把NoSQL運用到自己的項目中合適的場景中,還會適當地分析一些成功案例,希望有成功使用NoSQL經驗的朋友給我提供一些線索和信息。 NoSQL概念隨著web2.0的快速發展,非關系型、分布式數據存儲得到了快速的發展,它們不保證關系數據的ACID特性。NoSQL概念在2009年被提了出來。NoSQL最常見的解釋是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一詞最早于1998年被用于一個輕量級的關系數據庫的名字。) NoSQL被我們用得最多的當數key-value存儲,當然還有其他的文檔型的、列存儲、圖型數據庫、xml數據庫等。在NoSQL概念提出之前,這些數據庫就被用于各種系統當中,但是卻很少用于web互聯網應用。比如cdb、qdbm、bdb數據庫。 傳統關系數據庫的瓶頸 傳統的關系數據庫具有不錯的性能,高穩定型,久經歷史考驗,而且使用簡單,功能強大,同時也積累了大量的成功案例。在互聯網領域,MySQL成為了絕對靠前的王者,毫不夸張的說,MySQL為互聯網的發展做出了卓越的貢獻。 在90年代,一個網站的訪問量一般都不大,用單個數據庫完全可以輕松應付。在那個時候,更多的都是靜態網頁,動態交互類型的網站不多。 到了最近10年,網站開始快速發展?;鸨恼搲?、博客、sns、微博逐漸引領web領域的潮流。在初期,論壇的流量其實也不大,如果你接觸網絡比較早,你可能還記得那個時候還有文本型存儲的論壇程序,可以想象一般的論壇的流量有多大。 Memcached+MySQL 后來,隨著訪問量的上升,幾乎大部分使用MySQL架構的網站在數據庫上都開始出現了性能問題,web程序不再僅僅專注在功能上,同時也在追求性能。程序員們開始大量的使用緩存技術來緩解數據庫的壓力,優化數據庫的結構和索引。開始比較流行的是通過文件緩存來緩解數據庫壓力,但是當訪問量繼續增大的時候,多臺web機器通過文件緩存不能共享,大量的小文件緩存也帶了了比較高的IO壓力。在這個時候,Memcached就自然的成為一個非常時尚的技術產品。 Memcached作為一個獨立的分布式的緩存服務器,為多個web服務器提供了一個共享的高性能緩存服務,在Memcached服務器上,又發展了根據hash算法來進行多臺Memcached緩存服務的擴展,然后又出現了一致性hash來解決增加或減少緩存服務器導致重新hash帶來的大量緩存失效的弊端。當時,如果你去面試,你說你有Memcached經驗,肯定會加分的。 Mysql主從讀寫分離 由于數據庫的寫入壓力增加,Memcached只能緩解數據庫的讀取壓力。讀寫集中在一個數據庫上讓數據庫不堪重負,大部分網站開始使用主從復制技術來達到讀寫分離,以提高讀寫性能和讀庫的可擴展性。Mysql的master-slave模式成為這個時候的網站標配了。 分表分庫隨著web2.0的繼續高速發展,在Memcached的高速緩存,MySQL的主從復制,讀寫分離的基礎之上,這時MySQL主庫的寫壓力開始出現瓶頸,而數據量的持續猛增,由于MyISAM使用表鎖,在高并發下會出現嚴重的鎖問題,大量的高并發MySQL應用開始使用InnoDB引擎代替MyISAM。同時,開始流行使用分表分庫來緩解寫壓力和數據增長的擴展問題。這個時候,分表分庫成了一個熱門技術,是面試的熱門問題也是業界討論的熱門技術問題。也就在這個時候,MySQL推出了還不太穩定的表分區,這也給技術實力一般的公司帶來了希望。雖然MySQL推出了MySQL Cluster集群,但是由于在互聯網幾乎沒有成功案例,性能也不能滿足互聯網的要求,只是在高可靠性上提供了非常大的保證。 MySQL的擴展性瓶頸 在互聯網,大部分的MySQL都應該是IO密集型的,事實上,如果你的MySQL是個CPU密集型的話,那么很可能你的MySQL設計得有性能問題,需要優化了。大數據量高并發環境下的MySQL應用開發越來越復雜,也越來越具有技術挑戰性。分表分庫的規則把握都是需要經驗的。雖然有像淘寶這樣技術實力強大的公司開發了透明的中間件層來屏蔽開發者的復雜性,但是避免不了整個架構的復雜性。分庫分表的子庫到一定階段又面臨擴展問題。還有就是需求的變更,可能又需要一種新的分庫方式。 MySQL數據庫也經常存儲一些大文本字段,導致數據庫表非常的大,在做數據庫恢復的時候就導致非常的慢,不容易快速恢復數據庫。比如1000萬4KB大小的文本就接近40GB的大小,如果能把這些數據從MySQL省去,MySQL將變得非常的小。 關系數據庫很強大,但是它并不能很好的應付所有的應用場景。MySQL的擴展性差(需要復雜的技術來實現),大數據下IO壓力大,表結構更改困難,正是當前使用MySQL的開發人員面臨的問題。 NOSQL的優勢易擴展NoSQL數據庫種類繁多,但是一個共同的特點都是去掉關系數據庫的關系型特性。數據之間無關系,這樣就非常容易擴展。也無形之間,在架構的層面上帶來了可擴展的能力。 大數據量,高性能 NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。這得益于它的無關系性,數據庫的結構簡單。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對web2.0的交互頻繁的應用,Cache性能不高。而NoSQL的Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要性能高很多了。 靈活的數據模型 NoSQL無需事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式。而在關系數據庫里,增刪字段是一件非常麻煩的事情。如果是非常大數據量的表,增加字段簡直就是一個噩夢。這點在大數據量的web2.0時代尤其明顯。 高可用NoSQL在不太影響性能的情況,就可以方便的實現高可用的架構。比如Cassandra,HBase模型,通過復制模型也能實現高可用。 總結NoSQL數據庫的出現,彌補了關系數據(比如MySQL)在某些方面的不足,在某些方面能極大的節省開發成本和維護成本。 MySQL和NoSQL都有各自的特點和使用的應用場景,兩者的緊密結合將會給web2.0的數據庫發展帶來新的思路。讓關系數據庫關注在關系上,NoSQL關注在存儲上。

成都網站建設哪家好,找創新互聯!專注于網頁設計、重慶網站建設、微信開發、小程序設計、集團成都定制網站等服務項目。核心團隊均擁有互聯網行業多年經驗,服務眾多知名企業客戶;涵蓋的客戶類型包括:成都門窗定制等眾多領域,積累了大量豐富的經驗,同時也獲得了客戶的一致稱贊!

我們為什么要使用NOSQL非關系數據庫?

而傳統的關系數據庫在應付web2.0網站,特別是超大規模和高并發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,例如:

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,也得到了廣泛認同。

什么是NoSQL數據庫

什么是NoSQL數據庫?從名稱“非SQL”或“非關系型”衍生而來,這些數據庫不使用類似SQL的查詢語言,通常稱為結構化存儲。這些數據庫自1960年就已經存在,但是直到現在一些大公司(例如Google和Facebook)開始使用它們時,這些數據庫才流行起來。該數據庫最明顯的優勢是擺脫了一組固定的列、連接和類似SQL的查詢語言的限制。有時,NoSQL這個名稱也可能表示“不僅僅SQL”,來確保它們可能支持SQL。 NoSQL數據庫使用諸如鍵值、寬列、圖形或文檔之類的數據結構,并且可以如JSON之類的不同格式存儲。

什么是NoSQL,它有什么優缺點?

NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。

NoSQL用于超大規模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。

NoSQL的優點/缺點

優點:

- 高可擴展性

- 分布式計算

- 低成本

- 架構的靈活性,半結構化數據

- 沒有復雜的關系

缺點:

- 沒有標準化

- 有限的查詢功能(到目前為止)

- 最終一致是不直觀的程序 (BY三人行慕課)

非關系型數據庫主要包括幾類各有什么特點?

NoSQL描述的是大量結構化數據存儲方法的集合,根據結構化方法以及應用場合的不同,主要可以將NoSQL分為以下幾類。

(1)Column-Oriented

面向檢索的列式存儲,其存儲結構為列式結構,同于關系型數據庫的行式結構,這種結構會讓很多統計聚合操作更簡單方便,使系統具有較高的可擴展性。這類數據庫還可以適應海量數據的增加以及數據結構的變化,這個特點與云計算所需的相關需求是相符合的,比如GoogleAppengine的BigTable以及相同設計理念的Hadoop子系統HaBase就是這類的典型代表。需要特別指出的是,Big Table特別適用于MapReduce處理,這對于云計算的發展有很高的適應性。

(2)Key-Value。

面向高性能并發讀/寫的緩存存儲,其結構類似于數據結構中的Hash表,每個Key分別對應一個Value,能夠提供非??斓牟樵兯俣?、大數據存放量和高并發操作,非常適合通過主鍵對數據進行查詢和修改等操作。Key-Value數據庫的主要特點是具有極高的并發讀/寫性能,非常適合作為緩存系統使用。MemcacheDB、BerkeleyDB、Redis、Flare就是Key-Value數據庫的代表。

(3)Document-Oriented。

面向海量數據訪問的文檔存儲,這類存儲的結構與Key-Value非常相似,也是每個Key分別對應一個Value,但是這個Value主要以JSON(JavaScriptObjectNotations)或者XML等格式的文檔來進行存儲。這種存儲方式可以很方便地被面向對象的語言所使用。這類數據庫可在海量的數據中快速查詢數據,典型代表為MongoDB、CouchDB等。

NoSQL具有擴展簡單、高并發、高穩定性、成本低廉等優勢,也存在一些問題。例如,NoSQL暫不提供SQL的支持,會造成開發人員的額外學習成本;NoSQL大多為開源軟件其成熟度與商用的關系型數據庫系統相比有差距;NoSQL的架構特性決定了其很難保證數據的完整性,適合在一些特殊的應用場景使用。

為什么海量數據場景中NoSQL越來越重要

本質是因為:隨著互聯網的進一步發展與各行業信息化建設進程加快、參與者的增多,人們對軟件有了更多更新的要求,需要軟件不僅能實現功能,而且要求保證許多人可以共同參與使用,因而軟件所需承載的數據量和吞吐量必須達到相應的需求。而目前的關系型數據庫在某些方面有一些缺點,導致不能滿足需要。

具體則需要對比關系型數據庫與Nosql之間的區別可以得出

關系型數據庫

關系型數據庫把所有的數據都通過行和列的二元表現形式表示出來。

關系型數據庫的優勢:

1.?保持數據的一致性(事務處理)

2.由于以標準化為前提,數據更新的開銷很?。ㄏ嗤淖侄位旧隙贾挥幸惶帲?/p>

3.?可以進行Join等復雜查詢

其中能夠保持數據的一致性是關系型數據庫的最大優勢。

關系型數據庫的不足:

不擅長的處理

1.?大量數據的寫入處理(這點尤為重要)

2.?為有數據更新的表做索引或表結構(schema)變更

3.?字段不固定時應用

4.?對簡單查詢需要快速返回結果的處理

--大量數據的寫入處理

讀寫集中在一個數據庫上讓數據庫不堪重負,大部分網站已使用主從復制技術實現讀寫分離,以提高讀寫性能和讀庫的可擴展性。

所以在進行大量數據操作時,會使用數據庫主從模式。數據的寫入由主數據庫負責,數據的讀入由從數據庫負責,可以比較簡單地通過增加從數據庫來實現規模化,但是數據的寫入卻完全沒有簡單的方法來解決規?;瘑栴}。

第一,要想將數據的寫入規?;?,可以考慮把主數據庫從一臺增加到兩臺,作為互相關聯復制的二元主數據庫使用,確實這樣可以把每臺主數據庫的負荷減少一半,但是更新處理會發生沖突,可能會造成數據的不一致,為了避免這樣的問題,需要把對每個表的請求分別分配給合適的主數據庫來處理。

第二,可以考慮把數據庫分割開來,分別放在不同的數據庫服務器上,比如將不同的表放在不同的數據庫服務器上,數據庫分割可以減少每臺數據庫服務器上的數據量,以便減少硬盤IO的輸入、輸出處理,實現內存上的高速處理。但是由于分別存儲字不同服務器上的表之間無法進行Join處理,數據庫分割的時候就需要預先考慮這些問題,數據庫分割之后,如果一定要進行Join處理,就必須要在程序中進行關聯,這是非常困難的。

--為有數據更新的表做索引或表結構變更

在使用關系型數據庫時,為了加快查詢速度需要創建索引,為了增加必要的字段就一定要改變表結構,為了進行這些處理,需要對表進行共享鎖定,這期間數據變更、更新、插入、刪除等都是無法進行的。如果需要進行一些耗時操作,例如為數據量比較大的表創建索引或是變更其表結構,就需要特別注意,長時間內數據可能無法進行更新。

--字段不固定時的應用

如果字段不固定,利用關系型數據庫也是比較困難的,有人會說,需要的時候加個字段就可以了,這樣的方法也不是不可以,但在實際運用中每次都進行反復的表結構變更是非常痛苦的。你也可以預先設定大量的預備字段,但這樣的話,時間一長很容易弄不清除字段和數據的對應狀態,即哪個字段保存有哪些數據。

--對簡單查詢需要快速返回結果的處理? (這里的“簡單”指的是沒有復雜的查詢條件)

這一點稱不上是缺點,但不管怎樣,關系型數據庫并不擅長對簡單的查詢快速返回結果,因為關系型數據庫是使用專門的sql語言進行數據讀取的,它需要對sql與越南進行解析,同時還有對表的鎖定和解鎖等這樣的額外開銷,這里并不是說關系型數據庫的速度太慢,而只是想告訴大家若希望對簡單查詢進行高速處理,則沒有必要非使用關系型數據庫不可。

NoSQL數據庫

關系型數據庫應用廣泛,能進行事務處理和表連接等復雜查詢。相對地,NoSQL數據庫只應用在特定領域,基本上不進行復雜的處理,但它恰恰彌補了之前所列舉的關系型數據庫的不足之處。

優點:

易于數據的分散

各個數據之間存在關聯是關系型數據庫得名的主要原因,為了進行join處理,關系型數據庫不得不把數據存儲在同一個服務器內,這不利于數據的分散,這也是關系型數據庫并不擅長大數據量的寫入處理的原因。相反NoSQL數據庫原本就不支持Join處理,各個數據都是獨立設計的,很容易把數據分散在多個服務器上,故減少了每個服務器上的數據量,即使要處理大量數據的寫入,也變得更加容易,數據的讀入操作當然也同樣容易。

典型的NoSQL數據庫

臨時性鍵值存儲(memcached、Redis)、永久性鍵值存儲(ROMA、Redis)、面向文檔的數據庫(MongoDB、CouchDB)、面向列的數據庫(Cassandra、HBase)

一、 鍵值存儲

它的數據是以鍵值的形式存儲的,雖然它的速度非???,但基本上只能通過鍵的完全一致查詢獲取數據,根據數據的保存方式可以分為臨時性、永久性和兩者兼具 三種。

(1)臨時性

所謂臨時性就是數據有可能丟失,memcached把所有數據都保存在內存中,這樣保存和讀取的速度非???,但是當memcached停止時,數據就不存在了。由于數據保存在內存中,所以無法操作超出內存容量的數據,舊數據會丟失??偨Y來說:

。在內存中保存數據

??梢赃M行非常快速的保存和讀取處理

。數據有可能丟失

(2)永久性

所謂永久性就是數據不會丟失,這里的鍵值存儲是把數據保存在硬盤上,與臨時性比起來,由于必然要發生對硬盤的IO操作,所以性能上還是有差距的,但數據不會丟失是它最大的優勢??偨Y來說:

。在硬盤上保存數據

??梢赃M行非常快速的保存和讀取處理(但無法與memcached相比)

。數據不會丟失

(3) 兩者兼備

Redis屬于這種類型。Redis有些特殊,臨時性和永久性兼具。Redis首先把數據保存在內存中,在滿足特定條件(默認是?15分鐘一次以上,5分鐘內10個以上,1分鐘內10000個以上的鍵發生變更)的時候將數據寫入到硬盤中,這樣既確保了內存中數據的處理速度,又可以通過寫入硬盤來保證數據的永久性,這種類型的數據庫特別適合處理數組類型的數據??偨Y來說:

。同時在內存和硬盤上保存數據

??梢赃M行非??焖俚谋4婧妥x取處理

。保存在硬盤上的數據不會消失(可以恢復)

。適合于處理數組類型的數據

二、面向文檔的數據庫

MongoDB、CouchDB屬于這種類型,它們屬于NoSQL數據庫,但與鍵值存儲相異。

(1)不定義表結構

即使不定義表結構,也可以像定義了表結構一樣使用,還省去了變更表結構的麻煩。

(2)可以使用復雜的查詢條件

跟鍵值存儲不同的是,面向文檔的數據庫可以通過復雜的查詢條件來獲取數據,雖然不具備事務處理和Join這些關系型數據庫所具有的處理能力,但初次以外的其他處理基本上都能實現。

三、?面向列的數據庫

Cassandra、HBae、HyperTable屬于這種類型,由于近年來數據量出現爆發性增長,這種類型的NoSQL數據庫尤其引入注目。

普通的關系型數據庫都是以行為單位來存儲數據的,擅長以行為單位的讀入處理,比如特定條件數據的獲取。因此,關系型數據庫也被成為面向行的數據庫。相反,面向列的數據庫是以列為單位來存儲數據的,擅長以列為單位讀入數據。

面向列的數據庫具有搞擴展性,即使數據增加也不會降低相應的處理速度(特別是寫入速度),所以它主要應用于需要處理大量數據的情況。另外,把它作為批處理程序的存儲器來對大量數據進行更新也是非常有用的。但由于面向列的數據庫跟現行數據庫存儲的思維方式有很大不同,故應用起來十分困難。

總結:關系型數據庫與NoSQL數據庫并非對立而是互補的關系,即通常情況下使用關系型數據庫,在適合使用NoSQL的時候使用NoSQL數據庫,讓NoSQL數據庫對關系型數據庫的不足進行彌補。


網站欄目:nosql為什么有優勢,關系數據庫和nosql的優缺點
本文來源:http://www.xueling.net.cn/article/dsdhshh.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 色综合免费视频 | 一区在线视频观看 | 精品麻豆国产色欲色欲色欲WWW | 成人av免费在线播放 | 美女视频免费是黄的网站高清 | 国产精品推荐制服丝袜 | 红杏亚洲影院一区二区三区 | 亚洲精品无码久久久久Y | 亚洲小说少妇区图片 | 一级国产 | 欧美日韩视频在线一区二区三区 | 视频一区在线 | 99re国产在线播放 | 中文字幕中文字幕中文字幕亚洲无线 | 精品av天堂毛片久久久 | 日韩精品无码一区二区 | 青青草视频在线免费观看 | 亚洲一区二区三区免费视频 | 色一情一乱一伦一区二区三欧美 | 99热.com| 日美一区二区 | 亚洲一区二区视频在线观看 | 亚洲在女同久久中文字幕 | 成人激情视频在线播放 | 蜜桃av片 | 免费无码又爽又高潮视频 | 亚洲欧美不卡视频在线播放 | 国产真实交换配乱淫视频 | aiai在线 | 国产第一页第二页 | 亚洲精品国产自在现线看 | 亚洲av毛片成人精品 | 亚洲AV无码片一区二区三区 | 日韩欧美中文字幕在线视频 | 成人性生活大片100部 | 久久久精品人妻一区亚美研究所 | 国产三级不卡在线观看视频 | 鲁一鲁亚洲无线码 | 91精品啪在线观看国产足疗 | 永久免费观看av | 亚洲精品天堂无码中文字幕 |