十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
Web1.0的時代,數(shù)據(jù)訪問量很有限,用一夫當關(guān)的高性能的單點服務(wù)器可以解決大部分問題。
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出橫山免費做網(wǎng)站回饋大家。
隨著Web2.0的時代的到來,用戶訪問量大幅度提升,同時產(chǎn)生了大量的用戶數(shù)據(jù)。加上后來的智能移動設(shè)備的普及,所有的互聯(lián)網(wǎng)平臺都面臨了巨大的性能挑戰(zhàn)。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,泛指非關(guān)系型的數(shù)據(jù)庫。
NoSQL 不依賴業(yè)務(wù)邏輯方式存儲,而以簡單的key-value模式存儲。因此大大的增加了數(shù)據(jù)庫的擴展能力。
Memcache Memcache Redis Redis MongoDB MongoDB 列式數(shù)據(jù)庫 列式數(shù)據(jù)庫 Hbase Hbase
HBase是Hadoop項目中的數(shù)據(jù)庫。它用于需要對大量的數(shù)據(jù)進行隨機、實時的讀寫操作的場景中。
HBase的目標就是處理數(shù)據(jù)量非常龐大的表,可以用普通的計算機處理超過10億行數(shù)據(jù),還可處理有數(shù)百萬列元素的數(shù)據(jù)表。
Cassandra Cassandra
Apache Cassandra是一款免費的開源NoSQL數(shù)據(jù)庫,其設(shè)計目的在于管理由大量商用服務(wù)器構(gòu)建起來的龐大集群上的海量數(shù)據(jù)集(數(shù)據(jù)量通常達到PB級別)。在眾多顯著特性當中,Cassandra最為卓越的長處是對寫入及讀取操作進行規(guī)模調(diào)整,而且其不強調(diào)主集群的設(shè)計思路能夠以相對直觀的方式簡化各集群的創(chuàng)建與擴展流程。
主要應(yīng)用:社會關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜(n*(n-1)/2)
1、性能
都比較高,性能對我們來說應(yīng)該都不是瓶頸。
總體來講,TPS 方面 redis 和 memcache 差不多,要大于 mongodb。
2、操作的便利性
memcache 數(shù)據(jù)結(jié)構(gòu)單一。(key-value)
redis 豐富一些,數(shù)據(jù)操作方面,redis 更好一些,較少的網(wǎng)絡(luò) IO 次數(shù),同時還提供 list,set,
hash 等數(shù)據(jù)結(jié)構(gòu)的存儲。
mongodb 支持豐富的數(shù)據(jù)表達,索引,最類似關(guān)系型數(shù)據(jù)庫,支持的查詢語言非常豐富。
3、內(nèi)存空間的大小和數(shù)據(jù)量的大小
redis 在 2.0 版本后增加了自己的 VM 特性,突破物理內(nèi)存的限制;可以對 key value 設(shè)置過
期時間(類似 memcache)
memcache 可以修改最大可用內(nèi)存,采用 LRU 算法。Memcached 代理軟件 magent,比如建立
10 臺 4G 的 Memcache 集群,就相當于有了 40G。 magent -s 10.1.2.1 -s 10.1.2.2:11211 -b
10.1.2.3:14000 mongoDB 適合大數(shù)據(jù)量的存儲,依賴操作系統(tǒng) VM 做內(nèi)存管理,吃內(nèi)存也比較厲害,服務(wù)
不要和別的服務(wù)在一起。
4、可用性(單點問題)
對于單點問題,
redis,依賴客戶端來實現(xiàn)分布式讀寫;主從復制時,每次從節(jié)點重新連接主節(jié)點都要依賴整
個快照,無增量復制,因性能和效率問題,
所以單點問題比較復雜;不支持自動 sharding,需要依賴程序設(shè)定一致 hash 機制。
一種替代方案是,不用 redis 本身的復制機制,采用自己做主動復制(多份存儲),或者改成
增量復制的方式(需要自己實現(xiàn)),一致性問題和性能的權(quán)衡
Memcache 本身沒有數(shù)據(jù)冗余機制,也沒必要;對于故障預防,采用依賴成熟的 hash 或者環(huán)
狀的算法,解決單點故障引起的抖動問題。
mongoDB 支持 master-slave,replicaset(內(nèi)部采用 paxos 選舉算法,自動故障恢復),auto sharding 機制,對客戶端屏蔽了故障轉(zhuǎn)移和切分機制。
5、可靠性(持久化)
對于數(shù)據(jù)持久化和數(shù)據(jù)恢復,
redis 支持(快照、AOF):依賴快照進行持久化,aof 增強了可靠性的同時,對性能有所影
響
memcache 不支持,通常用在做緩存,提升性能;
MongoDB 從 1.8 版本開始采用 binlog 方式支持持久化的可靠性
6、數(shù)據(jù)一致性(事務(wù)支持)
Memcache 在并發(fā)場景下,用 cas 保證一致性redis 事務(wù)支持比較弱,只能保證事務(wù)中的每個操作連續(xù)執(zhí)行
mongoDB 不支持事務(wù)
7、數(shù)據(jù)分析
mongoDB 內(nèi)置了數(shù)據(jù)分析的功能(mapreduce),其他不支持
8、應(yīng)用場景
redis:數(shù)據(jù)量較小的更性能操作和運算上
memcache:用于在動態(tài)系統(tǒng)中減少數(shù)據(jù)庫負載,提升性能;做緩存,提高性能(適合讀多寫
少,對于數(shù)據(jù)量比較大,可以采用 sharding)
MongoDB:主要解決海量數(shù)據(jù)的訪問效率問題。
表格比較:
memcache redis 類型 內(nèi)存數(shù)據(jù)庫 內(nèi)存數(shù)據(jù)庫
數(shù)據(jù)類型 在定義 value 時就要固定數(shù)據(jù)類型 不需要
有字符串,鏈表,集 合和有序集合
虛擬內(nèi)存 不支持 支持
過期策略 支持 支持
分布式 magent master-slave,一主一從或一主多從
存儲數(shù)據(jù)安全 不支持 使用 save 存儲到 dump.rdb 中
災(zāi)難恢復 不支持 append only file(aof)用于數(shù)據(jù)恢復
性能
1、類型——memcache 和 redis 都是將數(shù)據(jù)存放在內(nèi)存,所以是內(nèi)存數(shù)據(jù)庫。當然,memcache 也可用于緩存其他東西,例如圖片等等。
2、 數(shù)據(jù)類型——Memcache 在添加數(shù)據(jù)時就要指定數(shù)據(jù)的字節(jié)長度,而 redis 不需要。
3、 虛擬內(nèi)存——當物理內(nèi)存用完時,可以將一些很久沒用到的 value 交換到磁盤。
4、 過期策略——memcache 在 set 時就指定,例如 set key1 0 0 8,即永不過期。Redis 可以通
過例如 expire 設(shè)定,例如 expire name 10。
5、 分布式——設(shè)定 memcache 集群,利用 magent 做一主多從;redis 可以做一主多從。都可
以一主一從。
6、 存儲數(shù)據(jù)安全——memcache 斷電就斷了,數(shù)據(jù)沒了;redis 可以定期 save 到磁盤。
7、 災(zāi)難恢復——memcache 同上,redis 丟了后可以通過 aof 恢復。
Memecache 端口 11211
yum -y install memcached
yum -y install php-pecl-memcache
/etc/init.d/memcached start memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
-d 啟動一個守護進程
-p 端口
-m 分配的內(nèi)存是 M
-c 最大運行并發(fā)數(shù)-P memcache 的 pid
//0 壓縮(是否 MEMCACHE_COMPRESSED) 30 秒失效時間
//delete 5 是 timeout
一般將NoSQL數(shù)據(jù)庫分為四大類:鍵值(Key-Value)存儲數(shù)據(jù)庫、列存儲數(shù)據(jù)庫、文檔型數(shù)據(jù)庫和圖形(Graph)數(shù)據(jù)庫。它們的數(shù)據(jù)模型、優(yōu)缺點、典型應(yīng)用場景。
鍵值(Key-Value)存儲數(shù)據(jù)庫Key指向Value的鍵值對,通常用hash表來實現(xiàn)查找速度快數(shù)據(jù)無結(jié)構(gòu)化(通常只被當作字符串或者二進制數(shù)據(jù))內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問負載,也用于一些日志系統(tǒng)等。
列存儲數(shù)據(jù)庫,以列簇式存儲,將同一列數(shù)據(jù)存在一起查找速度快,可擴展性強,更容易進行分布式擴展功能相對局限分布式的文件系統(tǒng)。
文檔型數(shù)據(jù)庫,Key-Value對應(yīng)的鍵值對,Value為結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)要求不嚴格,表結(jié)構(gòu)可變(不需要像關(guān)系型數(shù)據(jù)庫一樣需預先定義表結(jié)構(gòu)),查詢性能不高,而且缺乏統(tǒng)一的查詢語法,Web應(yīng)用。
圖形(Graph)數(shù)據(jù)庫,圖結(jié)構(gòu),利用圖結(jié)構(gòu)相關(guān)算法(如最短路徑尋址,N度關(guān)系查找等),很多時候需要對整個圖做計算才能得出需要的信息,而且這種結(jié)構(gòu)不太好做分布式的集群方案,社交網(wǎng)絡(luò),推薦系統(tǒng)等。
NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
雖然關(guān)系型數(shù)據(jù)庫系統(tǒng)RDBMS在安裝和使用上仍然占有主要地位,但毋庸置疑,非關(guān)系型數(shù)據(jù)庫NoSQL技術(shù)已經(jīng)成為今天發(fā)展最快的數(shù)據(jù)庫技術(shù)。
NoSQL詳解:如何找到對的技術(shù)
NoSQL是對數(shù)據(jù)庫系統(tǒng)的總稱,在某種程度上,它的性能和用途可能完全不同。NoSQL一詞最早產(chǎn)生于上世紀九十年代,意思是NoSQL(沒有SQL語言),后來隨著時間和技術(shù)的發(fā)展,SQL界面仍然作為處理數(shù)據(jù)的方式存在,所以NoSQL又有了新的詮釋,即NotOnlySQL(不只是SQL語言)。今天,NoSQL數(shù)據(jù)庫憑借著其非關(guān)系型、分布式、開源和橫向擴展等優(yōu)勢,被認為是下一代數(shù)據(jù)庫產(chǎn)品。
四種主要的NoSQL數(shù)據(jù)庫和它們主要的應(yīng)用場景
鍵值數(shù)據(jù)庫:當數(shù)據(jù)以鍵的形式訪問時,比如通過國際標準書號ISBN找一本書,鍵值數(shù)據(jù)庫是最理想的。在這里,ISBN是鍵,書籍的其他信息就是值。必須知道鍵才能查詢,不過值是一堆無意義的數(shù)據(jù),讀取之后必須經(jīng)過翻譯。
文檔存儲數(shù)據(jù)庫:該數(shù)據(jù)庫以文檔的形式管理和存儲數(shù)據(jù)。有點類似于鍵值數(shù)據(jù)庫,但文檔數(shù)據(jù)庫中的數(shù)據(jù)有結(jié)構(gòu)。與鍵值數(shù)據(jù)庫中值是一堆無意義的數(shù)據(jù)不同,文檔數(shù)據(jù)庫中數(shù)據(jù)以文檔的結(jié)構(gòu)被描述,典型的是JavaScriptObjectNotation(JSON)或XML.文檔存儲數(shù)據(jù)庫中的數(shù)據(jù)可以通過定義的任何模式進行查詢,但鍵值數(shù)據(jù)庫只能通過它的鍵進行查詢。
NoSQL與關(guān)系型數(shù)據(jù)庫設(shè)計理念比較關(guān)系型數(shù)據(jù)庫中的表都是存儲一些格式化的數(shù)據(jù)結(jié)構(gòu),每個元組字段的組成都一樣,即使不是每個元組都需要所有的字段,但數(shù)據(jù)庫會為每個元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進行連接等操作,但從另一個角度來說它也是關(guān)系型數(shù)據(jù)庫性能瓶頸的一個因素。而非關(guān)系型數(shù)據(jù)庫以鍵值對存儲,它的結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時間和空間的開銷。特點:它們可以處理超大量的數(shù)據(jù)。它們運行在便宜的PC服務(wù)器集群上。它們擊碎了性能瓶頸。沒有過多的操作。Bootstrap支持缺點:但是一些人承認,沒有正式的官方支持,萬一出了差錯會是可怕的,至少很多管理人員是這樣看。此外,nosql并未形成一定標準,各種產(chǎn)品層出不窮,內(nèi)部混亂,各種項目還需時間來檢驗