一.nosql和mongodb的介绍
key-value Key 指向 Value 的键值对,通常用hash table来实现
产品:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB
产品:Cassandra, HBase, Riak
文档型数据库 Key-Value对应的键值对,Value为结构化数据
产品:CouchDB, MongoDB
图结构数据库 以“图”为基本存储模型 存在节点关系属性等,将实体直接关系化,实体属性为节点属性实体为对应的节点
产品:Neo4J, InfoGrid, Infinite Graph
•任意UTF-8字符串(比如:网
鸟);
•不能是空字符串;
•不得包含以下字符: (空格) 、
.、$、/、\、\0;
•长度不得超过64字节;
•保留字:admin、local、
config等;
集合
•任意UTF-8字符串(比如:网
鸟);
•不能是空字符串;
•不能包含\0 、 $;
•不能以system.开头;
文档
•任意UTF-8字符串(比如:网
鸟);
•不能是空字符串;
•不能包含\0、 $;
•不能以_开头;
bool true、false;
数字 仅支持64位浮点数,其他类型的数字会自动转化为此格式;
字符串 支持UTF-8字符集;
日期 存储标准纪元开始的毫秒数,不含时区;
regex 符合JavaScript语法的正则表达式;
code 任何JavaScript代码;
binary 可存储任意字节数的字节数组,但在Shell中无法使用;
数组 对象集合或列表在MongoDB可以被存储为数组;
嵌套文档 一个文档可以包含另外一个文档;
二.mongodb的安装
1.下载http://www.mongodb.org/downloads 最好选择偶数版本,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
2.安装(来源于网络)
1.解压mongodb-win32-i386-1.8.1.zip ,创建路径C:\Program Files\mongodb ,将解压后的Bin文件Copy to 此文件夹下
2.C:\Program Files\mongodb 下建立Data文件夹 C:\Program Files\mongodb\data ,然后分别建立db,log两个文件夹,至此mongodb下有以下文件夹
C:\Program Files\mongodb\bin
C:\Program Files\mongodb\data\db
C:\Program Files\mongodb\data\log
在log文件夹下创建一个日志文件MongoDB.log,即C:\Program Files\mongodb\data\log\MongoDB.log
完成以上工作后,你为奇怪为什么要建立这些文件夹(因为,Mongodb安装需要这些文件夹,默认安装是不用创建,但是文件都为安装到C:\data\下)
3.windows service方式安装
C:\Program Files\mongodb\bin>mongod --dbpath "C:\Program Files\mongodb\data\db" --logpath "C:\Program Files\mongodb\data\log\MongoDB.log" --install --serviceName "MongoDB"
这里db为数据库安装的文件夹,MongoDB.log就是开始建立的日志文件,--serviceName "MongoDB" 服务名为MongoDB
4.服务已经安装成功,运行
>NET START MongoDB (开启服务)
>NET stop MongoDB (关闭服务)
> C:\Program Files\mongodb\bin>mongod --dbpath "C:\Program Files\mongodb\data\db" --logpath "C:\Program Files\mongodb\data\log\MongoDB.log" --remove --serviceName "MongoDB" (删除服务)运行bin文件夹下mongo.exe 客户端即可操作了
三,mongodb的集群方式(来源于网络)
mongodb的集群
1.主从
<1> 数据备份。
<2> 数据恢复。
<3> 读写分离。
第一步:我们把mongodb文件夹放在D盘和E盘,模拟放在多服务器上。
第二步:启动D盘上的mongodb,把该数据库指定为主数据库,其实命令很简单:>mongodb --dbpath='XXX' --master,
端口还是默认的27017.
第三步:同样的方式启动E盘上的mongodb,指定该数据库为从属数据库,命令也很简单,当然我们要换一个端口,比如:8888。
source 表示主数据库的地址。
>mongod --dbpath=xxxx --port=8888 --slave --source=127.0.0.1:27017
第四步:从图中的红色区域我们发现了一条:“applied 1 operations"这样的语句,并且发生的时间相隔10s,也就说明从属数据库每10s
就向主数据库同步数据。
注:如果前期建立时候未配置主服务器,也可以使用命令在后期配置主服务器。
db.sources.insert({"host":"127.0.0.1:27017"})
读写分离:
在默认的情况下,从属数据库不支持数据的读取,但是没关系,在驱动中给我们提供了一个叫做“slaveOkay"来让我们可以显示的读取
从属数据库来减轻主数据库的性能压力
2.副本集
<1>: 该集群没有特定的主数据库。
<2>: 如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能,很牛X的啊。
3.分片
mongodb采用将集合进行拆分,然后将拆分的数据均摊到几个片并路由每次的操作上的一种解决方案
客户端操作:代表客户端,客户端肯定说,你数据库分片不分片跟我没关系,我叫你干啥就干啥,没什么好商量的。
mongos: 首先我们要了解”片键“的概念,也就是说拆分集合的依据是什么?按照什么键值进行拆分集合....
好了,mongos就是一个路由服务器,它会根据管理员设置的“片键”将数据分摊到自己管理的mongod集群,数据
和片的对应关系以及相应的配置信息保存在"config服务器"上。
mongod: 一个普通的数据库实例,如果不分片的话,我们会直接连上mongod。
http://www.cnblogs.com/huangxincheng/archive/2012/02/21/2361205.html