NoSQL之mongodb我见

NoSQL介绍:

NoSQL数据管理系统是目前非常流行的一种非关系性、分布式、不支持ACID设计规范式的数据库;NoSQL简单的数据模型、元数据和数据分离、弱一致 性、高吞吐量、高水平扩展能力和低端硬件集群使其流行的主要原因,而mongodb就是NoSQL数据库一种非常流行的实现方式。

常见的NoSQL数据存储模型

列式模型

文档类型

应用场景:在分布式文件系统之上提供支持随机读写分离的分布式数据库典型产品:HBase、Hypertable、Cassandra数据模型:以“列”为中心进行存储,将相同的列存储在一起优点:快速查询、高可扩展性、易于实现分布式扩展

应用场景:非强事务的web应用典型产品:MongoDB、Elasticsearch、CouchDB数据模型:键值模型,以文档存储优点:数据模型无须事先定义

键值模型

图式模型

应用场景: 内容缓存,用于大量并发数据访问的高负载场景典型产品:DynamoDB、Redis、Riak数据模型:基于hash表实现的key-value优点:查询速度快

应用场景:社交网络、推荐系统、关系图谱典型产品:Neo4j、Infinite Graph、TITAN数据模型:图式结构优点:适用于图式场景计算

MongoDB的复制功能有两种类型:

  • 第一种类型:master/slave模型,这类模型与MySQL模型基本相同
  • 第二种模型:replica set复制集、副本集;服务于同一数据集的多个mongodb实例;与mysql的主从类似,但是要比mysql主从工作效率要高 特性: + (1)至少三个节点,至少为奇数个节点
    • (2)当节点数不足时,使用arbiter(仲裁者)来参与
    • (3)heartbeat每2s中的信息监测以及自动失效转移

MongoDB复制集中特殊节点的类型:

  • (1)0优先级的节点:冷备节点,不会被选举成为主节点,但可以参与选举
  • (2)被隐藏的节点:首先是一个0优先级的从节点,且对客户端不可见
  • (3)延迟复制的节点:首先是一个0优先级的从节点,且复制时间落后于主节点一个固定时长
  • (4)arbiter:仲裁者,没有数据,只负责仲裁

MongoDB的复制架构:

  • (1)oplog: 是存储在local数据库中,最小为1G,大小为固定的文件;同时又只有主节点才可以有写入操作,而从节点不会有写入操作;而local数据存放了数据 集的所有元数据和oplog,用于存储oplog的是一个名为oplog.rs的collection,oplog.rs的大小依赖于OS和文件系统;但 其大小可以自定义(oplogSize)
  • (2)heartbeat: 用于监测各个节点复制时的信息

MongoDB复制过程:

  • (1)初时同步:initial sync 首先克隆所有数据库 其次应用数据集的所有改变;复制oplog并应用于本地 最后为所有collection构建索引
  • (2)回滚后追赶:post-rollback catch-up
  • (3)切分块迁移: sharding chunk mingratings

MongoDB的索引类型:

  • 单字段索引、组合索引(多字段索引)、多键索引、空间索引、文本索引、hash索引

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2015-12-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的安全视界观

【一起玩蛇】python武器库的打开方式

22611
来自专栏芋道源码1024

Dubbo源码解析 —— Router

前言 估算了一下, dubbo里面涉及的东西还是比较多的.比如谈到框架的时候,设计模式都是一个老生常谈的话题,再比如我们开发中我们不常用的一些概念, spi、...

4616
来自专栏北京马哥教育

一秒内诊断 Linux 服务器的性能

60,000 毫秒内对 Linux 的性能诊断 当你为了解决一个性能问题登录到一台 Linux 服务器:在第一分钟你应该检查些什么? 在 Netflix,我们有...

3396
来自专栏Java进阶架构师

dubbo源码解析-详解router

估算了一下,dubbo里面涉及的东西还是比较多的.比如谈到框架的时候,设计模式都是一个老生常谈的话题,再比如我们开发中我们不常用的一些概念,spi、javass...

983
来自专栏编程之路

羊皮书APP(Android版)开发系列(十六)Android 开源库的使用

1082
来自专栏大数据和云计算技术

云存储产品浅析

云上存储产品主要有对象存储,块存储,网络文件系统(NAS),还有最赚钱的CDN,我们将针对这些主流产品,讲讲他们产品特点,有云上存储时候知道如何选型,当然我们是...

3583
来自专栏python开发者

python的高性能web应用的开发与测试实验

python的高性能web应用的开发与测试实验 tornado“同步和异步”网络IO模型实验 引言 python语言一直以开发效率高著称,被广泛地应用于自动化领...

2998
来自专栏Python中文社区

jupyter notebook 远程连接调试实录

最近使用了一下jupyter notebook搭配GPU服务器这套搭配,顿时打开了一个新天地,记录一下配置过程。

2733
来自专栏CSDN技术头条

Google的大规模集群管理系统Borg(上篇)

摘要:Google的Borg系统是一个运行着成千上万项作业的集群管理器,它同时管理着很多个应用集群,每个集群都有成千上万台机器,这些集群之上运行着Google的...

2778
来自专栏沃趣科技

Oracle 12c数据库优化器统计信息收集的最佳实践(三)|何时不需要收集统计信息

原文链接 http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-bp-for-st...

3005

扫码关注云+社区