nosql之mongodb简单安装与命令使用

前端之家收集整理的这篇文章主要介绍了nosql之mongodb简单安装与命令使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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特性@H_403_1@

功能简单@H_403_1@

没有统一的数据查询模型@H_403_1@

ACID:atomicity原子性、consistency一致性、isolation隔离、durability持久性@H_403_1@

nosql分类:@H_403_1@

列式数据库(按列管理)@H_403_1@

键值存储@H_403_1@

文档数据库(每一行当做一个实体,独立的文件)@H_403_1@

图存数据库(有复杂关系的图存对象),在社交站点用来存储人与人之间的复杂关系@H_403_1@


@H_403_1@

nosql的数据存储模型@H_403_1@

列式数据库(按列管理)@H_403_1@

数据模型:数据按列存储,将同一列数据存在一起@H_403_1@

优点:查找迅速,可扩展性强,易于实现分布式@H_403_1@

缺点:功能相对sql有限@H_403_1@

应用场景:分布式文件系统或分布式存储@H_403_1@

实例:bigtable、cassandra、HBase、hypertable(海量数据存储)@H_403_1@

跑在分布式文件系统上@H_403_1@

键值存储(数据模型:key-value存储)@H_403_1@

优点:查找迅速@H_403_1@

缺点:数据无结构,通常只被当作字符串或二进制数据@H_403_1@

应用场景:内容缓存@H_403_1@

实例:redis、dynamo@H_403_1@

文档数据库(每一行当做一个实体,独立的文件)@H_403_1@

数据模型:与键值模型类似,但value指向结构化数据,多个键值对上面附加了一个容器@H_403_1@

优点:数据格式要求不严格,无需事先定义结构@H_403_1@

增加某个字段不需要改动其数据结构@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@

应用场景:社交网络、推荐系统、关系图谱@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@

支持扩展性:复制、自动分片@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@

猜你在找的NoSQL相关文章