您好,登錄后才能下訂單哦!
nosql:非關系型,分布式,不提供ACID
簡單數據模型
元數據和應用數據分離
弱一致性
優勢:
避免不必要的復雜性
高吞吐量
高水平擴展能力和低端硬件集群
不使用對象-關系映射
劣勢:
不支持ACID特性
功能簡單
沒有統一的數據查詢模型
ACID:atomicity原子性、consistency一致性、isolation隔離、durability持久性
nosql分類:
列式數據庫(按列管理)
鍵值存儲
文檔數據庫(每一行當做一個實體,獨立的文件)
圖存數據庫(有復雜關系的圖存對象),在社交站點用來存儲人與人之間的復雜關系
nosql的數據存儲模型
列式數據庫(按列管理)
數據模型:數據按列存儲,將同一列數據存在一起
優點:查找迅速,可擴展性強,易于實現分布式
缺點:功能相對sql有限
應用場景:分布式文件系統或分布式存儲
實例:bigtable、cassandra、HBase、hypertable(海量數據存儲)
跑在分布式文件系統上
鍵值存儲(數據模型:key-value存儲)
優點:查找迅速
缺點:數據無結構,通常只被當作字符串或二進制數據
應用場景:內容緩存
實例:redis、dynamo
文檔數據庫(每一行當做一個實體,獨立的文件)
數據模型:與鍵值模型類似,但value指向結構化數據,多個鍵值對上面附加了一個容器
優點:數據格式要求不嚴格,無需事先定義結構
增加某個字段不需要改動其數據結構
缺點:查詢性能不高缺乏統一查詢語法
應用場景:web應用
實例:MongoDB、couchDB
圖存數據庫(有復雜關系的圖存對象),在社交站點用來存儲人與人之間的復雜關系
數據模型:圖結構模型
優點:利用圖結構相關算法,×××能,并滿特殊場景應用需求
缺點:難以實現分布式,功能有定向性
應用場景:社交網絡、推薦系統、關系圖譜
實例:Neo4J
mongodb:scalable(可擴展的)high-performance(高性能)open source schema free document nosql
schema free:不需要事先創建數據結構
讀寫在內存中
支持擴展性:復制、自動分片
適用于:web站點、緩存、高可擴展性、high volume,low value
mongodb的安裝:這里推薦用rpm包安裝
rpm包地址:https://repo.mongodb.org/yum/redhat,選擇自己的版本進行下載
yum -y localinstall *.rpm
mkdir -p /mongodb/data:創建數據目錄,修改配置文件中的數據目錄路徑
usermod -d /mongodb/data mongod
chown -R mongod:mongod /mongodb/data:修改數據目錄的屬主屬組
最后簡單的修改一下配置文件的信息(數據目錄,日志目錄等等)
最后就可以啟動mongod
service mongod start
查看日志記錄,發現如下警告:
cat /var/log/mongodb/mongod.log查看日志,報錯如下:
** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files.
Number of processes should be at least 32000 : 0.5 times number of files.
參考:http://blog.csdn.net/kk185800961/article/details/45613267
mongodb當前限制:1024 processes, 64000 files
mongodb建議要求:processes = 0.5*files=32000(至少)
所以需要將 processes 從1024 改為 32000 或更大.
修改配置文件 /etc/security/limits.conf,添加配置信息:
###############for mongodb##############
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
然后重啟mongod,再次查看日志記錄,發現沒有警告了,于是安裝mongodb成功了
mongodb的簡單grud操作:
>help(查看幫助)
db.help() help on db methods
db.mycoll.help() help on collection methods
sh.help() sharding helpers
rs.help() replica set helpers
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
help misc misc things to know
help mr mapreduce
show dbs show database names
show collections show collections in current database
show users show users in current database
show profile show most recent system.profile entries with time >= 1ms
show logs show the accessible logger names
show log [name] prints out the last segment of log in memory, 'global' is default
use <db_name> set current database
db.foo.find() list objects in collection foo
db.foo.find( { a : 1 } ) list objects in foo where a == 1
it result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x set default number of items to display on shell
exit quit the mongo shell
查看所有庫:show dbs
查看所有集合(在mysql是表,在mongodb中用集合):show collections
切換庫:use huangdb(無需在此前定義,直接拿來使用庫就行)
向集合huangcoll中插入數據:db.huangcoll.insert({Name:"huang"})
查看集合的數據:db.huangcoll.find():這是查看集合huangcoll的所有數據
按條件查找數據:db.huangcoll.find({Name:"huang"}):找出Name為huang的文檔
創建索引:db.huangcoll.ensureIndex({Name:1}):給字段Name創建索引
查看索引:db.huangcoll.getIndexes():查看當前集合下的所有索引
更多mongo命令操作,參考文檔:
https://docs.mongodb.com/manual/crud/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。