而傳統(tǒng)的關系數(shù)據(jù)庫在應付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,例如:

為臥龍等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及臥龍網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、成都做網(wǎng)站、臥龍網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
1、High performance - 對數(shù)據(jù)庫高并發(fā)讀寫的需求
web2.0網(wǎng)站要根據(jù)用戶個性化信息來實時生成動態(tài)頁面和提供動態(tài)信息,所以基本上無法使用動態(tài)頁面靜態(tài)化技術,因此數(shù)據(jù)庫并發(fā)負載非常高,往往要達到每秒上萬次讀寫請求。關系數(shù)據(jù)庫應付上萬次SQL查詢還勉強頂?shù)米。菓渡先f次SQL寫數(shù)據(jù)請求,硬盤IO就已經(jīng)無法承受了。其實對于普通的BBS網(wǎng)站,往往也存在對高并發(fā)寫請求的需求。
2、Huge Storage - 對海量數(shù)據(jù)的高效率存儲和訪問的需求
對于大型的SNS網(wǎng)站,每天用戶產(chǎn)生海量的用戶動態(tài),以國外的Friendfeed為例,一個月就達到了2.5億條用戶動態(tài),對于關系數(shù)據(jù)庫來說,在一張2.5億條記錄的表里面進行SQL查詢,效率是極其低下乃至不可忍受的。再例如大型web網(wǎng)站的用戶登錄系統(tǒng),例如騰訊,盛大,動輒數(shù)以億計的帳號,關系數(shù)據(jù)庫也很難應付。
3、High Scalability High Availability- 對數(shù)據(jù)庫的高可擴展性和高可用性的需求
在基于web的架構當中,數(shù)據(jù)庫是最難進行橫向擴展的,當一個應用系統(tǒng)的用戶量和訪問量與日俱增的時候,你的數(shù)據(jù)庫卻沒有辦法像web server和app server那樣簡單的通過添加更多的硬件和服務節(jié)點來擴展性能和負載能力。對于很多需要提供24小時不間斷服務的網(wǎng)站來說,對數(shù)據(jù)庫系統(tǒng)進行升級和擴展是非常痛苦的事情,往往需要停機維護和數(shù)據(jù)遷移,為什么數(shù)據(jù)庫不能通過不斷的添加服務器節(jié)點來實現(xiàn)擴展呢?
在上面提到的“三高”需求面前,關系數(shù)據(jù)庫遇到了難以克服的障礙,而對于web2.0網(wǎng)站來說,關系數(shù)據(jù)庫的很多主要特性卻往往無用武之地,例如:
1、數(shù)據(jù)庫事務一致性需求
很多web實時系統(tǒng)并不要求嚴格的數(shù)據(jù)庫事務,對讀一致性的要求很低,有些場合對寫一致性要求也不高。因此數(shù)據(jù)庫事務管理成了數(shù)據(jù)庫高負載下一個沉重的負擔。
2、數(shù)據(jù)庫的寫實時性和讀實時性需求
對關系數(shù)據(jù)庫來說,插入一條數(shù)據(jù)之后立刻查詢,是肯定可以讀出來這條數(shù)據(jù)的,但是對于很多web應用來說,并不要求這么高的實時性。
3、對復雜的SQL查詢,特別是多表關聯(lián)查詢的需求
任何大數(shù)據(jù)量的web系統(tǒng),都非常忌諱多個大表的關聯(lián)查詢,以及復雜的數(shù)據(jù)分析類型的復雜SQL報表查詢,特別是SNS類型的網(wǎng)站,從需求以及產(chǎn)品設計角度,就避免了這種情況的產(chǎn)生。往往更多的只是單表的主鍵查詢,以及單表的簡單條件分頁查詢,SQL的功能被極大的弱化了。
因此,關系數(shù)據(jù)庫在這些越來越多的應用場景下顯得不那么合適了,為了解決這類問題的非關系數(shù)據(jù)庫應運而生。
NoSQL 是非關系型數(shù)據(jù)存儲的廣義定義。它打破了長久以來關系型數(shù)據(jù)庫與ACID理論大一統(tǒng)的局面。NoSQL 數(shù)據(jù)存儲不需要固定的表結構,通常也不存在連接操作。在大數(shù)據(jù)存取上具備關系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。該術語在 2009 年初得到了廣泛認同。
當今的應用體系結構需要數(shù)據(jù)存儲在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲就是為了實現(xiàn)這個需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業(yè) NoSQL 實現(xiàn)。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認同。
因為很多項目根本用不到復雜的關聯(lián)查詢,才有了 nosql 數(shù)據(jù)庫。可以大大提高效率。
如果涉及到復雜的多表關聯(lián),那就老老實實用關系數(shù)據(jù)庫唄。
在大數(shù)據(jù)時代,“多種架構支持多類應用”成為數(shù)據(jù)庫行業(yè)應對大數(shù)據(jù)的基本思路,數(shù)據(jù)庫行業(yè)出現(xiàn)互為補充的三大陣營,適用于事務處理應用的OldSQL、適用于數(shù)據(jù)分析應用的NewSQL和適用于互聯(lián)網(wǎng)應用的NoSQL。但在一些復雜的應用場景中,單一數(shù)據(jù)庫架構都不能完全滿足應用場景對海量結構化和非結構化數(shù)據(jù)的存儲管理、復雜分析、關聯(lián)查詢、實時性處理和控制建設成本等多方面的需要,因此不同架構數(shù)據(jù)庫混合部署應用成為滿足復雜應用的必然選擇。不同架構數(shù)據(jù)庫混合使用的模式可以概括為:OldSQL+NewSQL、OldSQL+NoSQL、NewSQL+NoSQL三種主要模式。下面通過三個案例對不同架構數(shù)據(jù)庫的混合應用部署進行介紹。
OldSQL+NewSQL 在數(shù)據(jù)中心類應用中混合部署
采用OldSQL+NewSQL模式構建數(shù)據(jù)中心,在充分發(fā)揮OldSQL數(shù)據(jù)庫的事務處理能力的同時,借助NewSQL在實時性、復雜分析、即席查詢等方面的獨特優(yōu)勢,以及面對海量數(shù)據(jù)時較強的擴展能力,滿足數(shù)據(jù)中心對當前“熱”數(shù)據(jù)事務型處理和海量歷史“冷”數(shù)據(jù)分析兩方面的需求。OldSQL+NewSQL模式在數(shù)據(jù)中心類應用中的互補作用體現(xiàn)在,OldSQL彌補了NewSQL不適合事務處理的不足,NewSQL彌補了OldSQL在海量數(shù)據(jù)存儲能力和處理性能方面的缺陷。
商業(yè)銀行數(shù)據(jù)中心采用OldSQL+NewSQL混合部署方式搭建,OldSQL數(shù)據(jù)庫滿足各業(yè)務系統(tǒng)數(shù)據(jù)的歸檔備份和事務型應用,NewSQL MPP數(shù)據(jù)庫集群對即席查詢、多維分析等應用提供高性能支持,并且通過MPP集群架構實現(xiàn)應對海量數(shù)據(jù)存儲的擴展能力。
商業(yè)銀行數(shù)據(jù)中心存儲架構
與傳統(tǒng)的OldSQL模式相比,商業(yè)銀行數(shù)據(jù)中心采用OldSQL+NewSQL混合搭建模式,數(shù)據(jù)加載性能提升3倍以上,即席查詢和統(tǒng)計分析性能提升6倍以上。NewSQL MPP的高可擴展性能夠應對新的業(yè)務需求,可隨著數(shù)據(jù)量的增長采用集群方式構建存儲容量更大的數(shù)據(jù)中心。
OldSQL+NoSQL 在互聯(lián)網(wǎng)大數(shù)據(jù)應用中混合部署
在互聯(lián)網(wǎng)大數(shù)據(jù)應用中采用OldSQL+NoSQL混合模式,能夠很好的解決互聯(lián)網(wǎng)大數(shù)據(jù)應用對海量結構化和非結構化數(shù)據(jù)進行存儲和快速處理的需求。在諸如大型電子商務平臺、大型SNS平臺等互聯(lián)網(wǎng)大數(shù)據(jù)應用場景中,OldSQL在應用中負責高價值密度結構化數(shù)據(jù)的存儲和事務型處理,NoSQL在應用中負責存儲和處理海量非結構化的數(shù)據(jù)和低價值密度結構化數(shù)據(jù)。OldSQL+NoSQL模式在互聯(lián)網(wǎng)大數(shù)據(jù)應用中的互補作用體現(xiàn)在,OldSQL彌補了NoSQL在ACID特性和復雜關聯(lián)運算方面的不足,NoSQL彌補了OldSQL在海量數(shù)據(jù)存儲和非結構化數(shù)據(jù)處理方面的缺陷。
數(shù)據(jù)魔方是淘寶網(wǎng)的一款數(shù)據(jù)產(chǎn)品,主要提供行業(yè)數(shù)據(jù)分析、店鋪數(shù)據(jù)分析。淘寶數(shù)據(jù)產(chǎn)品在存儲層采用OldSQL+NoSQL混合模式,由基于MySQL的分布式關系型數(shù)據(jù)庫集群MyFOX和基于HBase的NoSQL存儲集群Prom組成。由于OldSQL強大的語義和關系表達能力,在應用中仍然占據(jù)著重要地位,目前存儲在MyFOX中的統(tǒng)計結果數(shù)據(jù)已經(jīng)達到10TB,占據(jù)著數(shù)據(jù)魔方總數(shù)據(jù)量的95%以上。另一方面,NoSQL作為SQL的有益補充,解決了OldSQL數(shù)據(jù)庫無法解決的全屬性選擇器等問題。
淘寶海量數(shù)據(jù)產(chǎn)品技術架構
基于OldSQL+NoSQL混合架構的特點,數(shù)據(jù)魔方目前已經(jīng)能夠提供壓縮前80TB的數(shù)據(jù)存儲空間,支持每天4000萬的查詢請求,平均響應時間在28毫秒,足以滿足未來一段時間內的業(yè)務增長需求。
NewSQL+NoSQL 在行業(yè)大數(shù)據(jù)應用中混合部署
行業(yè)大數(shù)據(jù)與互聯(lián)網(wǎng)大數(shù)據(jù)的區(qū)別在于行業(yè)大數(shù)據(jù)的價值密度更高,并且對結構化數(shù)據(jù)的實時處理、復雜的多表關聯(lián)分析、即席查詢、數(shù)據(jù)強一致性等都比互聯(lián)網(wǎng)大數(shù)據(jù)有更高的要求。行業(yè)大數(shù)據(jù)應用場景主要是分析類應用,如:電信、金融、政務、能源等行業(yè)的決策輔助、預測預警、統(tǒng)計分析、經(jīng)營分析等。
在行業(yè)大數(shù)據(jù)應用中采用NewSQL+NoSQL混合模式,充分利用NewSQL在結構化數(shù)據(jù)分析處理方面的優(yōu)勢,以及NoSQL在非結構數(shù)據(jù)處理方面的優(yōu)勢,實現(xiàn)NewSQL與NoSQL的功能互補,解決行業(yè)大數(shù)據(jù)應用對高價值結構化數(shù)據(jù)的實時處理、復雜的多表關聯(lián)分析、即席查詢、數(shù)據(jù)強一致性等要求,以及對海量非結構化數(shù)據(jù)存儲和精確查詢的要求。在應用中,NewSQL承擔高價值密度結構化數(shù)據(jù)的存儲和分析處理工作,NoSQL承擔存儲和處理海量非結構化數(shù)據(jù)和不需要關聯(lián)分析、Ad-hoc查詢較少的低價值密度結構化數(shù)據(jù)的工作。
當前電信運營商在集中化BI系統(tǒng)建設過程中面臨著數(shù)據(jù)規(guī)模大、數(shù)據(jù)處理類型多等問題,并且需要應對大量的固定應用,以及占統(tǒng)計總數(shù)80%以上的突發(fā)性臨時統(tǒng)計(ad-hoc)需求。在集中化BI系統(tǒng)的建設中采用NewSQL+NoSQL混搭的模式,充分利用NewSQL在復雜分析、即席查詢等方面處理性能的優(yōu)勢,及NoSQL在非結構化數(shù)據(jù)處理和海量數(shù)據(jù)存儲方面的優(yōu)勢,實現(xiàn)高效低成本。
集中化BI系統(tǒng)數(shù)據(jù)存儲架構
集中化BI系統(tǒng)按照數(shù)據(jù)類型和處理方式的不同,將結構化數(shù)據(jù)和非結構化數(shù)據(jù)分別存儲在不同的系統(tǒng)中:非結構化數(shù)據(jù)在Hadoop平臺上存儲與處理;結構化、不需要關聯(lián)分析、Ad-hoc查詢較少的數(shù)據(jù)保存在NoSQL數(shù)據(jù)庫或Hadoop平臺;結構化、需要關聯(lián)分析或經(jīng)常ad-hoc查詢的數(shù)據(jù),保存在NewSQL MPP數(shù)據(jù)庫中,短期高價值數(shù)據(jù)放在高性能平臺,中長期放在低成本產(chǎn)品中。
結語
當前信息化應用的多樣性、復雜性,以及三種數(shù)據(jù)庫架構各自所具有的優(yōu)勢和局限性,造成任何一種架構的數(shù)據(jù)庫都不能完全滿足應用需求,因此不同架構數(shù)據(jù)庫混合使用,從而彌補其他架構的不足成為必然選擇。根據(jù)應用場景采用不同架構數(shù)據(jù)庫進行組合搭配,充分發(fā)揮每種架構數(shù)據(jù)庫的特點和優(yōu)勢,并且與其他架構數(shù)據(jù)庫形成互補,完全涵蓋應用需求,保證數(shù)據(jù)資源的最優(yōu)化利用,將成為未來一段時期內信息化應用主要采用的解決方式。
目前在國內市場上,OldSQL主要為Oracle、IBM等國外數(shù)據(jù)庫廠商所壟斷,達夢、金倉等國產(chǎn)廠商仍處于追趕狀態(tài);南大通用憑借國產(chǎn)新型數(shù)據(jù)庫GBase 8a異軍突起,與EMC的Greenplum和HP的Vertica躋身NewSQL市場三強;NoSQL方面用戶則大多采用Hadoop開源方案。
NoSQL 數(shù)據(jù)庫因其功能性、易于開發(fā)性和可擴展性而廣受認可,它們越來越多地用于大數(shù)據(jù)和實時 Web 應用程序,在本文中,我們通過示例討論 NoSQL、何時使用 NoSQL 與 SQL 及其用例。
NoSQL是一種下一代數(shù)據(jù)庫管理系統(tǒng) (DBMS)。NoSQL 數(shù)據(jù)庫具有靈活的模式,可用于構建具有大量數(shù)據(jù)和高負載的現(xiàn)代應用程序。
“NoSQL”一詞最初是由 Carlo Strozzi 在 1998 年創(chuàng)造的,盡管自 1960 年代后期以來就已經(jīng)存在類似的數(shù)據(jù)庫。然而,NoSQL 的發(fā)展始于 2009 年初,并且發(fā)展迅速。
在處理大量數(shù)據(jù)時,任何關系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 的響應時間都會變慢。為了解決這個問題,我們可以通過升級現(xiàn)有硬件來“擴大”信息系統(tǒng),這非常昂貴。但是,NoSQL 可以更好地橫向擴展并且更具成本效益。
NoSQL 對于非結構化或非常大的數(shù)據(jù)對象(例如聊天日志數(shù)據(jù)、視頻或圖像)非常有用,這就是為什么 NoSQL 在微軟、谷歌、亞馬遜、Meta (Facebook) 等互聯(lián)網(wǎng)巨頭中特別受歡迎的原因。
一些流行的 NoSQL 數(shù)據(jù)庫包括:
隨著企業(yè)更快地積累更大的數(shù)據(jù)集,結構化數(shù)據(jù)和關系模式并不總是適合。有必要使用非結構化數(shù)據(jù)和大型對象來更好地捕獲這些信息。
傳統(tǒng)的 RDBMS 使用 SQL(結構化查詢語言)語法來存儲和檢索結構化數(shù)據(jù),相反,NoSQL 數(shù)據(jù)庫包含廣泛的功能,可以存儲和檢索結構化、半結構化、非結構化和多態(tài)數(shù)據(jù)。
有時,NoSQL 也被稱為“ 不僅僅是 SQL ”,強調它可能支持類似 SQL 的語言或與 SQL 數(shù)據(jù)庫并列。SQL 和 NoSQL DBMS 之間的一個區(qū)別是 JOIN 功能。SQL 數(shù)據(jù)庫使用 JOIN 子句來組合來自兩個或多個表的行,因為 NoSQL 數(shù)據(jù)庫本質上不是表格的,所以這個功能并不總是可行或相關的。
但是,一些 NoSQL DBMS 可以執(zhí)行類似于 JOIN的操作——就像 MongoDB 一樣。這并不意味著不再需要 SQL DBMS,相反,NoSQL 和 SQL 數(shù)據(jù)庫傾向于以不同的方式解決類似的問題。
一般來說,在以下情況下,NoSQL 比 SQL 更可取:
許多行業(yè)都在采用 NoSQL,取代關系數(shù)據(jù)庫,從而為某些業(yè)務應用程序提供更高的靈活性和可擴展性,下面給出了 NoSQL 數(shù)據(jù)庫的一些企業(yè)用例。
內容管理是一組用于收集、管理、傳遞、檢索和發(fā)布任何格式的信息的過程,包括文本、圖像、音頻和視頻。NoSQL 數(shù)據(jù)庫可以通過其靈活和開放的數(shù)據(jù)模型為存儲多媒體內容提供更好的選擇。
例如,福布斯在短短幾個月內就構建了一個基于 MongoDB 的定制內容管理系統(tǒng),以更低的成本為他們提供了更大的敏捷性。
大數(shù)據(jù)是指太大而無法通過傳統(tǒng)處理系統(tǒng)處理的數(shù)據(jù)集,實時存儲和檢索大數(shù)據(jù)的系統(tǒng)在分析 歷史 數(shù)據(jù)的同時使用流處理來攝取新數(shù)據(jù),這是一系列非常適合 NoSQL 數(shù)據(jù)庫的功能。
Zoom使用 DynamoDB(按需模式)使其數(shù)據(jù)能夠在沒有性能問題的情況下進行擴展,即使該服務在 COVID-19 大流行的早期使用量激增。
物聯(lián)網(wǎng)設備具有連接到互聯(lián)網(wǎng)或通信網(wǎng)絡的嵌入式軟件和傳感器,能夠在無需人工干預的情況下收集和共享數(shù)據(jù)。隨著數(shù)十億臺設備生成數(shù)不清的數(shù)據(jù),IoT NoSQL 數(shù)據(jù)庫為 IoT 服務提供商提供了可擴展性和更靈活的架構。
Freshub就是這樣的一項服務,它從 MySQL 切換到 MongoDB,以更好地處理其大型、動態(tài)、非統(tǒng)一的數(shù)據(jù)集。
擁有數(shù)十億智能手機用戶,可擴展性正成為在移動設備上提供服務的企業(yè)面臨的最大挑戰(zhàn)。具有更靈活數(shù)據(jù)模型的 NoSQL DBMS 通常是完美的解決方案。
例如,The Weather Channel使用 MongoDB 數(shù)據(jù)庫每分鐘處理數(shù)百萬個請求,同時還處理用戶數(shù)據(jù)并提供天氣更新。
一樣是數(shù)據(jù)庫
NOSQL查詢速度快,但是占用空間也大(都去索引那邊了)
但是NOSQL查詢復雜的邏輯關系的時候,只能批量獲取到本地去統(tǒng)計而SQL能通過條件和關聯(lián)表等方式進行篩選只顯示符合條件的語句。
NOSQL用于無條件或少條件下的存取。百億級數(shù)據(jù)也能快速取出。
SQL用于復雜的邏輯存取。在數(shù)據(jù)量不多的情況下也能跟NOSQL一樣用于數(shù)據(jù)存儲。
nosql是not only sql的意思。是近今年新發(fā)展起來的存儲系統(tǒng)。當前使用最多的是key-value模型,用于處理超大規(guī)模的數(shù)據(jù)。
以下是摘自百度百科中的一部分
NoSQL 是非關系型數(shù)據(jù)存儲的廣義定義。它打破了長久以來關系型數(shù)據(jù)庫與ACID理論大一統(tǒng)的局面。NoSQL 數(shù)據(jù)存儲不需要固定的表結構,通常也不存在連接操作。在大數(shù)據(jù)存取上具備關系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。該術語在 2009 年初得到了廣泛認同。
當今的應用體系結構需要數(shù)據(jù)存儲在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲就是為了實現(xiàn)這個需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業(yè) NoSQL 實現(xiàn)。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認同。從這些NoSQL項目的名字上看不出什么相同之處:Hadoop、Voldemort、Dynomite,還有其它很多。
NoSQL與關系型數(shù)據(jù)庫設計理念比較
關系型數(shù)據(jù)庫中的表都是存儲一些格式化的數(shù)據(jù)結構,每個元組字段的組成都一樣,即使不是每個元組都需要所有的字段,但數(shù)據(jù)庫會為每個元組分配所有的字段,這樣的結構可以便于表與表之間進行連接等操作,但從另一個角度來說它也是關系型數(shù)據(jù)庫性能瓶頸的一個因素。而非關系型數(shù)據(jù)庫以鍵值對存儲,它的結構不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結構,可以減少一些時間和空間的開銷。
網(wǎng)站題目:nosql多表關聯(lián),sql多表關聯(lián)查詢技巧
URL鏈接:http://chinadenli.net/article22/phidjc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、品牌網(wǎng)站建設、App開發(fā)、外貿(mào)建站、外貿(mào)網(wǎng)站建設、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)