NoSQL與關(guān)系型數(shù)據(jù)庫設(shè)計理念比較
成都創(chuàng)新互聯(lián)專注于通城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供通城營銷型網(wǎng)站建設(shè),通城網(wǎng)站制作、通城網(wǎng)頁設(shè)計、通城網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造通城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供通城網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
關(guān)系型數(shù)據(jù)庫中的表都是存儲一些格式化的數(shù)據(jù)結(jié)構(gòu),每個元組字段的組成都一樣,即使不是每個元組都需要所有的字段,但數(shù)據(jù)庫會為每個元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接等操作,但從另一個角度來說它也是關(guān)系型數(shù)據(jù)庫性能瓶頸的一個因素。而非關(guān)系型數(shù)據(jù)庫以鍵值對存儲,它的結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時間和空間的開銷。
特點(diǎn):
它們可以處理超大量的數(shù)據(jù)。
它們運(yùn)行在便宜的PC服務(wù)器集群上。
它們擊碎了性能瓶頸。
沒有過多的操作。
Bootstrap支持
缺點(diǎn):
但是一些人承認(rèn),沒有正式的官方支持,萬一出了差錯會是可怕的,至少很多管理人員是這樣看。
此外,nosql并未形成一定標(biāo)準(zhǔn),各種產(chǎn)品層出不窮,內(nèi)部混亂,各種項目還需時間來檢驗
Web1.0的時代,數(shù)據(jù)訪問量很有限,用一夫當(dāng)關(guān)的高性能的單點(diǎn)服務(wù)器可以解決大部分問題。
隨著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ù)庫的擴(kuò)展能力。
Memcache Memcache Redis Redis MongoDB MongoDB 列式數(shù)據(jù)庫 列式數(shù)據(jù)庫 Hbase Hbase
HBase是Hadoop項目中的數(shù)據(jù)庫。它用于需要對大量的數(shù)據(jù)進(jìn)行隨機(jī)、實時的讀寫操作的場景中。
HBase的目標(biāo)就是處理數(shù)據(jù)量非常龐大的表,可以用普通的計算機(jī)處理超過10億行數(shù)據(jù),還可處理有數(shù)百萬列元素的數(shù)據(jù)表。
Cassandra Cassandra
Apache Cassandra是一款免費(fèi)的開源NoSQL數(shù)據(jù)庫,其設(shè)計目的在于管理由大量商用服務(wù)器構(gòu)建起來的龐大集群上的海量數(shù)據(jù)集(數(shù)據(jù)量通常達(dá)到PB級別)。在眾多顯著特性當(dāng)中,Cassandra最為卓越的長處是對寫入及讀取操作進(jìn)行規(guī)模調(diào)整,而且其不強(qiáng)調(diào)主集群的設(shè)計思路能夠以相對直觀的方式簡化各集群的創(chuàng)建與擴(kuò)展流程。
主要應(yīng)用:社會關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜(n*(n-1)/2)
Mongodb和mysql的區(qū)別
1.Mongodb簡介及優(yōu)缺點(diǎn)分析
Mongodb是非關(guān)系型數(shù)據(jù)庫(nosql ),屬于文檔型數(shù)據(jù)庫。文檔是mongoDB中數(shù)據(jù)的基本單元,類似關(guān)系數(shù)據(jù)庫的行,多個鍵值對有序地放置在一起便是文檔,語法有點(diǎn)類似javascript面向?qū)ο蟮牟樵冋Z言,它是一個面向集合的,模式自由的文檔型數(shù)據(jù)庫。
存儲方式:虛擬內(nèi)存+持久化。
查詢語句:是獨(dú)特的Mongodb的查詢方式。
適合場景:事件的記錄,內(nèi)容管理或者博客平臺等等。
架構(gòu)特點(diǎn):可以通過副本集,以及分片來實現(xiàn)高可用。
數(shù)據(jù)處理:數(shù)據(jù)是存儲在硬盤上的,只不過需要經(jīng)常讀取的數(shù)據(jù)會被加載到內(nèi)存中,將數(shù)據(jù)存儲在物理內(nèi)存中,從而達(dá)到高速讀寫。
成熟度與廣泛度:新興數(shù)據(jù)庫,成熟度較低,Nosql數(shù)據(jù)庫中最為接近關(guān)系型數(shù)據(jù)庫,比較完善的DB之一,適用人群不斷在增長。
優(yōu)點(diǎn):
快速!在適量級的內(nèi)存的Mongodb的性能是非常迅速的,它將熱數(shù)據(jù)存儲在物理內(nèi)存中,使得熱數(shù)據(jù)的讀寫變得十分快。高擴(kuò)展性,存儲的數(shù)據(jù)格式是json格式!
缺點(diǎn):
① mongodb不支持事務(wù)操作。
② mongodb占用空間過大。
③ 開發(fā)文檔不是很完全,完善。
2.MySQL優(yōu)缺點(diǎn)分析
優(yōu)點(diǎn):
在不同的引擎上有不同 的存儲方式。
查詢語句是使用傳統(tǒng)的sql語句,擁有較為成熟的體系,成熟度很高。
開源數(shù)據(jù)庫的份額在不斷增加,mysql的份額頁在持續(xù)增長。
缺點(diǎn):
在海量數(shù)據(jù)處理的時候效率會顯著變慢。
3.Mongodb和MySQL數(shù)據(jù)庫的對比
傳統(tǒng)的關(guān)系數(shù)據(jù)庫一般由數(shù)據(jù)庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB是由數(shù)據(jù)庫(database)、集合(collection)、文檔對象(document)三個層次組成。
MongoDB對于關(guān)系型數(shù)據(jù)庫里的表,但是集合中沒有列、行和關(guān)系概念,這體現(xiàn)了模式自由的特點(diǎn)。
4.MongoDB常用語句
# 連接Mongo數(shù)據(jù)庫,并設(shè)置數(shù)據(jù)存儲地址
mongod.exe --dbpath "d:softwareMongoDBServer3.0data"
#-----------------------#1# 數(shù)據(jù)庫
# 查看所有的數(shù)據(jù)庫
show dbs
# 刪除當(dāng)前使用的數(shù)據(jù)庫
db.dropDatabase()
# 使用這個數(shù)據(jù)庫(只有插入數(shù)據(jù)后完成創(chuàng)建數(shù)據(jù)庫)
use dbt
# 查看當(dāng)前使用的數(shù)據(jù)庫
db
db.getName()
# 查看當(dāng)前數(shù)據(jù)庫狀態(tài)
db.stats()
# 修復(fù)當(dāng)前數(shù)據(jù)庫
db.repairDatabase()
# 從一個數(shù)據(jù)庫復(fù)制到另一個數(shù)據(jù)庫
db.copyDatabase("mydb", "temp", "127.0.0.1");
#-----------------------#2# 集合
# 查看當(dāng)前數(shù)據(jù)庫下所有的集合
show collections
show tables
# 創(chuàng)建名稱為coll集合
db.createCollection('coll')
db.createCollection("coll2", {capped:true, autoIndexId:true, size:6142800, max:10000}) # 可選參數(shù)
# 查看當(dāng)前集合狀態(tài)
db.coll.stats()
# 刪除名稱為coll集合
db.coll.drop()
#-----------------------#3# 集合數(shù)據(jù)
# 插入空數(shù)據(jù)并且直接創(chuàng)建名稱為coll集合
db.coll.insert({})
# 插入一個或多個數(shù)據(jù)
db.coll.insert({name:'tom', age:22})
db.coll.insert([{name:'adam', age:10},{name:'john', age:23}])
# 添加數(shù)據(jù)(save方法可以修改相同id的數(shù)據(jù))
db.coll.save({name:'allen'})
# 刪除一個或所有的數(shù)據(jù)
db.coll.remove({name:'tom'})
db.coll.remove({})
# 刪除符合條件的數(shù)據(jù)中的第一條
db.coll.remove({name:'tom'}, 1)
# 更改數(shù)據(jù)
db.coll.update({name:'tom', age:22}, {$set:{name:'tom', age:222}})
# 查看數(shù)據(jù)
db.coll.find()
# 查看一條數(shù)據(jù)
db.coll.findOne()
db.coll.find({}, {name:1, '_id':0}) # 1表示顯示,0表示不顯示(find默認(rèn)顯示_id)
# 格式化顯示數(shù)據(jù),使數(shù)據(jù)更加清晰明了
db.coll.find().pretty()
# 使用and,or查看數(shù)據(jù)
db.coll.find({name:'tom', age:22}) # 等同and使用
db.coll.find({$or:[{name:'tom'}, {age:21}]}) # or使用
# 操作符大于,小于,等于,不等于,大于不等于,小于不等于
db.coll.find({age: {$gt: 22}}) # 大于
db.coll.find({age: {$lt: 22}}) # 大于
db.coll.find({age: 22}) # 等于
db.coll.find({age: {$ne: 22}}) # 不等于
db.coll.find({age: {$gte: 22}}) # 大于等于
db.coll.find({age: {$lte: 22}}) # 小于等于
# 顯示從skip之后limit個
db.coll.find().limit(2).skip(1)
#-----------------------# # 用戶
# 3.x之后版本添加用戶
use admin
db.createUser({user:'nu', pwd:'nu', roles:[{role:'readWrite',db:'admin'}]})
# 用戶認(rèn)證
db.auth("nu", "nu");
# 顯示當(dāng)前所有用戶
show users;
db.system.users.find()
3.x版本刪除用戶
db.removeUser('nu') # 不推薦使用,已經(jīng)廢棄
db.dropUser("nu");
# 當(dāng)前db版本
db.version();
# 當(dāng)前db的鏈接機(jī)器地址和端口
db.getMongo();
# 備份到備份目錄
mongodump
# 從備份目錄恢復(fù)備份語句。
mongorestore
咱們下期見。
分享文章:nosql數(shù)據(jù)庫對比,8種nosql數(shù)據(jù)庫比較
網(wǎng)址分享:http://www.rwnh.cn/article40/dscohho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、企業(yè)建站、虛擬主機(jī)、Google、商城網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)