随笔分类 -  mongoDB

摘要:集群介绍:Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。主要功能:同步复制真正的multi-master,即所有节点可以同时读写数据库自动的节点成员控制,失效节点自动被清除新节点加入数据自动复制真正的并行复制,行级用户可以直接连接... 阅读全文
posted @ 2015-05-17 12:37 郭远威 阅读(10061) 评论(0) 推荐(2) 编辑
摘要:2015年3月3号,MongoDB新版本3.0发布了,和以前版本相比,这次改动较大,主要有以下几个方面:1. 引入了插件式的存储引擎架构,允许第三方根据实际项目的需要开发存储引擎,类似于MySql中的分层存储引擎架构。随同这种架构发布的新的存储引擎为WiredTiger,老的存储引擎更名为MMAPv... 阅读全文
posted @ 2015-03-27 22:49 郭远威 阅读(2613) 评论(1) 推荐(2) 编辑
摘要:“评博客,送好书!”限量版赠送! 《大数据存储MongoDB实战指南》上市了!这本书刚刚上市,即荣登各大排行榜榜单,并得到了不少读者和老师的好评。本书豆瓣页面:http://book.douban.com/subject/26333934。 一路走来,要真诚感谢各位热心读者!为了回馈广大读者,特别是 阅读全文
posted @ 2015-03-17 23:15 郭远威 阅读(474) 评论(8) 推荐(0) 编辑
摘要:锁粒度与并发性能怎么样?数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞。读操作请求的是读锁,能够与其它读操作共享,但是当写操作请求数据库时,它所申请的是写锁,具有排它性。MongoDB在2.2之前的版本,锁的粒度是非常粗的... 阅读全文
posted @ 2014-12-26 21:18 郭远威 阅读(2838) 评论(3) 推荐(0) 编辑
摘要:上面的(http://www.cnblogs.com/guoyuanwei/p/3565088.html)介绍了部署了一个默认的分片集群,对mongoDB的分片集群有了大概的认识,到目前为止我们还没有在集群上建立其它数据库,mongoDB的分片是基于集合(表)来进行的,因此要对一个集合分片,必须先使... 阅读全文
posted @ 2014-06-01 06:35 郭远威 阅读(2023) 评论(0) 推荐(0) 编辑
摘要:前面几篇文章的分析复制集解决了数据库的备份与自动故障转移,但是围绕数据库的业务中当前还有两个方面的问题变得越来越重要。一是海量数据如何存储?二是如何高效的读写海量数据?尽管复制集也可以实现读写分析,如在primary节点上写,在secondary节点上读,但在这种方式下客户端读出来的数据有可能不是最新的,因为primary节点到secondary节点间的数据同步会带来一定延迟,而且这种方式也不能处理大量数据。mongoDB从设计之初就考虑了上面所提到的两个问题,引入了分片机制,实现了海量数据的分布式存储与高效的读写分离。复制集中的每个成员是一个mongod实例,但在分片部署上,每一个片可能就是 阅读全文
posted @ 2014-02-24 18:09 郭远威 阅读(1559) 评论(1) 推荐(1) 编辑
摘要:对于某些应用程序来说,写关注是重要的。它能判断哪些写操作成功写入了,哪些失败了,对于失败的操作,驱动程序能返回错误,由应用程序决定怎么处理。如果没有写关注,应用程序发送一个写操作到socket后,就不会管后面发送了什么情况,不知道是否成功写入数据库,这种情形对于日志类型的应用程序还是可以接受的,因为偶尔的写失败不会影响整个日志的监控情况;带有写关注的操作会等到数据库确认成功写入后才能返回,因此写关注会带来一点性能的损失。下面先分析复制集上写关注配置。默认情况下复制集的写关注只针对primary节点,当应用程序发送一个写操作请求时,驱动程序会调用getLastError命令返回写操作的执行情况( 阅读全文
posted @ 2014-01-27 22:16 郭远威 阅读(1205) 评论(0) 推荐(1) 编辑
摘要:上面的介绍的数据同步(http://www.cnblogs.com/guoyuanwei/p/3293668.html)相当于传统数据库中的备份策略,mongoDB在此基础还有自动故障转移的功能。在复制集概述那一节提到过心跳"lastHeartbeat"字段,mongoDB就是靠它来实现自动故障转移的。 mongod实例每隔2秒就向其它成员发送一个心跳包以及通过rs.staus()中返回的成员的”health”值来判断成员的状态。如果出现复制集中primary节点不可用了,那么复制集中所有secondary的节点就会触发一次选举操作,选出一个新的primary节点。如上所配 阅读全文
posted @ 2014-01-27 22:13 郭远威 阅读(3212) 评论(0) 推荐(0) 编辑
摘要:mongoDB的Journaling日志功能与常见的log日志是不一样的,mongoDB也有log日志,它只是简单记录了数据库在服务器上的启动信息、慢查询记录、数据库异常信息、客户端与数据库服务器连接、断开等信息。Journaling日志功能则是mongoDB里面非常重要的一个功能,它保证了数据库服务器在意外断电、自然灾害等情况发生下数据的完整性。尽管mongoDB还提供了其它的复制集等备份措施(后面会分析),但Journaling的功能在生产环境中是不可缺少的,它依靠了较小的CPU和内存消耗,带来的是数据库的持久性和稳定性。本篇章将分析Journaling涉及到的功能细节问题。Journal 阅读全文
posted @ 2013-09-08 11:52 郭远威 阅读(1865) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/guoyuanwei/p/3279572.html 概述了复制集,整体上对复制集有了个概念,但是复制集最重要的功能之一数据同步是如何实现的?带着这个问题,下面展开分析。先利用mongo客户端登录到复制集的primary节点上。>mongo --port 40000查看实例上所有数据库rs0:PRIMARY> show dbslocal 0.09375GB可以看到只有一个local数据库,因为此时还没有在复制集上创建任何其它数据库,local数据库为复制集所有成员节点上默认创建的一个数据库。在primary节点上查看local数据上的集合 阅读全文
posted @ 2013-08-31 22:54 郭远威 阅读(3328) 评论(2) 推荐(1) 编辑
摘要:自我学习,仅供参考:数据库总是会遇到各种失败的场景,如网络连接断开、断电等,尽管journaling日志功能也提供了数据恢复的功能,但journaling通常是针对单个节点来说的,只能保证单节点数据的一致性,而复制集通常是由多个节点组成,每个节点除了journaling日志恢复功能外,整个复制集还具有故障自动转移的功能,这样能保证数据库的高可用性。在生产环境中一个复制集最少应该包含三个节点,其中有一个必须是主节点,典型的部署结构如下图:其中每个节点都是一个mongod进程对应的实例,节点之间互相周期性的通过心跳检查对方的状态,默认情况下primary节点负责数据的读、写,second节点备份p 阅读全文
posted @ 2013-08-24 17:47 郭远威 阅读(2790) 评论(0) 推荐(1) 编辑
摘要:本实验将按以下几步进行:实验环境monodevelop ,ubuntu10.04,实验目的:探索分布式文件存储方案1、单机小文件的存储,逐步增加上传文件的大小,观察mongoDB中文件对磁盘分配大小的变化。2、采用分片的方式存储大量的数据实验一:首先建立一个数据库gywdb,上传一个574.5kB大小的文件,代码如下:View Code using System;using System.Collections;using System.Collections.Generic;using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Drive 阅读全文
posted @ 2012-05-27 20:29 郭远威 阅读(6228) 评论(5) 推荐(6) 编辑
摘要:首先按 http://www.cnblogs.com/guoyuanwei/archive/2012/04/04/2432013.html介绍的方法安装好monodevelop和mono开发环境按照mongoDB官方的例子安装好mongoDB在linux上:http://www.mongodb.org/display/DOCS/Quickstart+Unix,注意根据CPU是32位还是64位下载不同的版本打开一个终端启动mongoDB的数据库服务 root@ubuntu:/usr/local/mongoDB/bin# ./mongod在接下来的过程中,创建一个数据库gywdb来做测试。奇怪的事 阅读全文
posted @ 2012-04-11 17:03 郭远威 阅读(2727) 评论(4) 推荐(3) 编辑