可以分三個階段:
創新互聯是一家專業提供文安企業網站建設,專注與成都網站設計、做網站、H5場景定制、小程序制作等業務。10年已為文安眾多企業、政府機構等服務。創新互聯專業網站制作公司優惠進行中。
1. 數據采集與準備
2. 數據計算(涉及計算中的中間存儲), 題主中的“那些方面決定”應該主要是指這個階段處理方式。
3. 數據結果展現(反饋)
nosql是not only sql的意思。是近今年新發展起來的存儲系統。當前使用最多的是key-value模型,用于處理超大規模的數據。
以下是摘自百度百科中的一部分
NoSQL 是非關系型數據存儲的廣義定義。它打破了長久以來關系型數據庫與ACID理論大一統的局面。NoSQL 數據存儲不需要固定的表結構,通常也不存在連接操作。在大數據存取上具備關系型數據庫無法比擬的性能優勢。該術語在 2009 年初得到了廣泛認同。
當今的應用體系結構需要數據存儲在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲就是為了實現這個需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業 NoSQL 實現。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認同。從這些NoSQL項目的名字上看不出什么相同之處:Hadoop、Voldemort、Dynomite,還有其它很多。
NoSQL與關系型數據庫設計理念比較
關系型數據庫中的表都是存儲一些格式化的數據結構,每個元組字段的組成都一樣,即使不是每個元組都需要所有的字段,但數據庫會為每個元組分配所有的字段,這樣的結構可以便于表與表之間進行連接等操作,但從另一個角度來說它也是關系型數據庫性能瓶頸的一個因素。而非關系型數據庫以鍵值對存儲,它的結構不固定,每一個元組可以有不一樣的字段,每個元組可以根據需要增加一些自己的鍵值對,這樣就不會局限于固定的結構,可以減少一些時間和空間的開銷。
1 理解ACID與BASE的區別(ACID是關系型數據庫強一致性的四個要求,而BASE是NoSQL數據庫通常對可用性及一致性的弱要求原則,它們的意思分別是,ACID:atomicity, consistency, isolation, durability;BASE:Basically Available, Soft-state, Eventually Consistent。同時有意思的是ACID在英語里意為酸,BASE意思為堿)
2 理解持久化與非持久化的區別。這么說是因為有的NoSQL系統是純內存存儲的。
3 你必須意識到傳統有關系型數據庫與NoSQL系統在數據結構上的本質區別。傳統關系型數據庫通常是基于行的表格型存儲,而NoSQL系統包括了列式存儲(Cassandra)、key/value存儲(Memcached)、文檔型存儲(CouchDB)以及圖結構存儲(Neo4j)
4與傳統關系數據庫有統一的SQL語言操作接口不同,NoSQL系統通常有自己特有的API接口。
5 在架構上,你必須搞清楚,NoSQL系統是被設計用于成百上千臺機器的集群中的,而非共享型數據庫系統的架構。
6在NoSQL系統中,可能你得習慣一下不知道你的數據具體存在何處的情況。
7 在NoSQL系統中,你最好習慣它的弱一致性。”eventually consistent”(最終一致性)正是BASE原則中的重要一項。比如在Twitter,你在Followers列表中經常會感受到數據的延遲。
8 在NoSQL系統中,你要理解,很多時候數據并不總是可用的。
9 你得理解,有的方案是擁有分區容忍性的,有的方案不一定有。
一般比較普遍的就是四種方法:(具體見 SQL Anti-patterns這本書)
Adjacency List:每一條記錄存parent_id
Path Enumerations:每一條記錄存整個tree path經過的node枚舉
Nested Sets:每一條記錄存 nleft 和 nright
Closure Table:維護一個表,所有的tree path作為記錄進行保存。
而傳統的關系數據庫在應付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存儲樹形結構,數據庫樹結構
當前鏈接:http://m.newbst.com/article40/dssgceo.html
成都網站建設公司_創新互聯,為您提供網站排名、品牌網站設計、網站制作、微信小程序、域名注冊、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯