6.非关系型数据库(Nosql)之mongodb:集群(主从复制),nosqlmongodb
1.主从复制是MongoDB最常用的复制方式,这种方式非常灵活,可用于备份、故障恢复、读扩展等
2最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址。运行mongod –master就启动了主服务器。运行mongod –slave –source master_address则启动了从服务器,其中master_address就是上面主节点的地址。
4 分别在F:盘下创建两个文件夹,分别用于存储主节点和从节点的数据
5 启动一个主节点
mongod --dbpath=f:/master --port 27107 –master (端口号可以自动指定,但是最好大些)
6 启动一个从节点
mongod --dbpath=f:/slave --port 20000--slave --source localhost:27017
7 启动两个客户端,分别连接主节点和从节点
mongo localhost:27017
|
执行命令: |
|
use toto for(var I = 1;i<=10000;i++) { db.c2.insert({name:”zhangsan”,age:i}); } |
mongo localhost:20000
|
show dbs; use toto db.c2.find(); db.c2.insert({name:”lisi”}); 这时候发现添加不进去 |
结论:主从复制
|
A 从节点只做查询操作 B 主节点宕机之后,从节点不能自动顶替上来。
这种集群只用来备份数据 |
首先要确定,你们为什么需要将关系型数据库中的数据导入到NoSql数据库中?是为了达到什么样的需求才这么做的。
我也是做开发的,我推荐以下几点,不要尝试将关系型数据库转换为非关系型数据库:
1、节约维护成本;
2、软硬件成本。Mongodb存储数据需要更多的存储空间。(当然,相对不同系统,硬件的配置也不尽相同);
3、为分布式而分布式;
4、从软件角度上,单纯为了提高IO的速度而进行转换;
如果非要强行移植,那么需要考虑一下几点:
1、Mongodb的维护以及灾备需要相对专业的开发人员担当(如果你们的运维就会,就当我没说过),因为许多Mongodb的配置都需要一些简单的javascript语法支持的,开发人员会比较容易上述;
2、Mongodb是“非关系”型的,所以以严格遵守范式所设计的关系型数据库进行移植时,需要考虑多表查询的效率。一般来讲,关系表要对数据进行冗余才能达到高效率的查询。你只能通过代码的方式将多个主表和关系表连同一个数据查询表一同维护,增加的代码复杂度是显而易见的。
3、关系型数据库中很多特性在Mongodb中都没有,在移植之前必须要考虑清楚。例如自增主键、联合主键(可以用唯一索引代替)、相关驱动和连接方式等等(本人用的mssql,所以只能举mssql的例子。);
4、因为Mongodb使用的是操作系统自身的文件存储系统对存储介质进行操作和维护的,所以会在频繁进行增、删操作时产生磁盘碎片。(开发人员不用太关系这个);
5、最后要说道一下Mongodb的查询,如果你的关系型数据库中之前有很多的多表连接查询(3张以上),则请不要尝试移植。否则只能参考2进行操作才能达到性能和效率最大化;
NoSQL,指的是非关系型的数据库,仍然是数据库,只是放弃了对SQL查询的支持,同时在内部结构上做了一些改进,可以支持更快的读写操作。对应“CAP理论”(这个自己百度吧),NoSQL追求的是AP,而传统数据库追求的是CA。NoSQL数据库有很多种,具体实现方式不同,序列化的时候可能是将信息保存到传统硬盘或者固态硬盘上,这中间可能还有分布式存储、容错等问题,不能认为是将对象直接保存为文件。
参考资料:baike.baidu.com/view/2677528.htm