nosql:非关系型,分布式,不提供ACID@H_403_1@
简单数据模型@H_403_1@
元数据和应用数据分离@H_403_1@
弱一致性@H_403_1@
@H_403_1@
优势:@H_403_1@
避免不必要的复杂性@H_403_1@
高吞吐量@H_403_1@
高水平扩展能力和低端硬件集群@H_403_1@
不使用对象-关系映射@H_403_1@
@H_403_1@
劣势:@H_403_1@
ACID:atomicity原子性、consistency一致性、isolation隔离、durability持久性@H_403_1@
键值存储@H_403_1@
文档数据库(每一行当做一个实体,独立的文件)@H_403_1@
图存数据库(有复杂关系的图存对象),在社交站点用来存储人与人之间的复杂关系@H_403_1@
@H_403_1@
数据模型:数据按列存储,将同一列数据存在一起@H_403_1@
优点:查找迅速,可扩展性强,易于实现分布式@H_403_1@
实例:bigtable、cassandra、HBase、hypertable(海量数据存储)@H_403_1@
键值存储(数据模型:key-value存储)@H_403_1@
优点:查找迅速@H_403_1@
缺点:数据无结构,通常只被当作字符串或二进制数据@H_403_1@
实例:redis、dynamo@H_403_1@
文档数据库(每一行当做一个实体,独立的文件)@H_403_1@
数据模型:与键值模型类似,但value指向结构化数据,多个键值对上面附加了一个容器@H_403_1@
优点:数据格式要求不严格,无需事先定义结构@H_403_1@
应用场景:web应用@H_403_1@
实例:MongoDB、couchDB@H_403_1@
图存数据库(有复杂关系的图存对象),在社交站点用来存储人与人之间的复杂关系@H_403_1@
数据模型:图结构模型@H_403_1@
优点:利用图结构相关算法,提供性能,并满特殊场景应用需求@H_403_1@
应用场景:社交网络、推荐系统、关系图谱@H_403_1@
实例:Neo4J@H_403_1@
@H_403_1@
mongodb:scalable(可扩展的)high-performance(高性能)open source schema free document nosql@H_403_1@
schema free:不需要事先创建数据结构@H_403_1@
读写在内存中@H_403_1@
适用于:web站点、缓存、高可扩展性、high volume,low value@H_403_1@
@H_403_1@
mongodb的安装:这里推荐用rpm包安装@H_403_1@
rpm包地址:https://repo.mongodb.org/yum/redhat,选择自己的版本进行下载@H_403_1@
yum -y localinstall *.rpm@H_403_1@
mkdir -p /mongodb/data:创建数据目录,修改配置文件中的数据目录路径@H_403_1@
usermod -d /mongodb/data mongod@H_403_1@
chown -R mongod:mongod /mongodb/data:修改数据目录的属主属组@H_403_1@
最后简单的修改一下配置文件的信息(数据目录,日志目录等等)@H_403_1@
最后就可以启动mongod
@H_403_1@
service mongod start
@H_403_1@
查看日志记录,发现如下警告:@H_403_1@
cat /var/log/mongodb/mongod.log查看日志,报错如下:@H_403_1@
** WARNING: soft rlimits too low. rlimits set to 1024 processes,64000 files.@H_403_1@
Number of processes should be at least 32000 : 0.5 times number of files.@H_403_1@
参考:http://blog.csdn.net/kk185800961/article/details/45613267@H_403_1@
mongodb当前限制:1024 processes,64000 files@H_403_1@
mongodb建议要求:processes = 0.5*files=32000(至少)@H_403_1@
所以需要将 processes 从1024 改为 32000 或更大.@H_403_1@
修改配置文件 /etc/security/limits.conf,添加配置信息:@H_403_1@
###############for mongodb##############@H_403_1@
mongod soft nofile 64000@H_403_1@
mongod hard nofile 64000@H_403_1@
mongod soft nproc 32000@H_403_1@
mongod hard nproc 32000@H_403_1@
然后重启mongod,再次查看日志记录,发现没有警告了,于是安装mongodb成功了@H_403_1@
@H_403_1@
@H_403_1@
mongodb的简单grud操作:@H_403_1@
>help(查看帮助)@H_403_1@
db.help() help on db methods@H_403_1@
db.mycoll.help() help on collection methods@H_403_1@
sh.help() sharding helpers@H_403_1@
rs.help() replica set helpers@H_403_1@
help admin administrative help@H_403_1@
help connect connecting to a db help@H_403_1@
help keys key shortcuts@H_403_1@
help misc misc things to know@H_403_1@
help mr mapreduce@H_403_1@
@H_403_1@
show dbs show database names@H_403_1@
show collections show collections in current database@H_403_1@
show users show users in current database@H_403_1@
show profile show most recent system.profile entries with time >= 1ms@H_403_1@
show logs show the accessible logger names@H_403_1@
show log [name] prints out the last segment of log in memory,'global' is default@H_403_1@
use <db_name> set current database@H_403_1@
db.foo.find() list objects in collection foo@H_403_1@
db.foo.find( { a : 1 } ) list objects in foo where a == 1@H_403_1@
it result of the last line evaluated; use to further iterate@H_403_1@
DBQuery.shellBatchSize = x set default number of items to display on shell@H_403_1@
exit quit the mongo shell@H_403_1@
@H_403_1@
查看所有库:show dbs@H_403_1@
查看所有集合(在MysqL是表,在mongodb中用集合):show collections@H_403_1@
切换库:use huangdb(无需在此前定义,直接拿来使用库就行)@H_403_1@
向集合huangcoll中插入数据:db.huangcoll.insert({Name:"huang"})@H_403_1@
查看集合的数据:db.huangcoll.find():这是查看集合huangcoll的所有数据@H_403_1@
按条件查找数据:db.huangcoll.find({Name:"huang"}):找出Name为huang的文档@H_403_1@
创建索引:db.huangcoll.ensureIndex({Name:1}):给字段Name创建索引@H_403_1@
查看索引:db.huangcoll.getIndexes():查看当前集合下的所有索引@H_403_1@
更多mongo命令操作,参考文档:@H_403_1@
https://docs.mongodb.com/manual/crud/@H_403_1@