`
sunshine_1985
  • 浏览: 11177 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

 

MongoDB简介

MongoDB是什么?

MongoDB 取自英文单词(humongous), 是一个可扩展,高性能,开源的,面向文档的,使用c++实现的, NoSQL数据库。

 

MongoDB几个主要的术语

1文档( Document 一个有序的键值关联的集合   相当于关系数据库中的列

2集合( Collections集合就是一组文档   相当于关系数据库中的表

3数据库(Databas 一组集合就组成了一个数据库

4MongoDB主要的数据类型

4.1 普通类型

bollean  integer float string 正则表达式,这些类型太普通, 任何数据库或者语言里面都有这些数据。

4.2 Js代码

4.3 array  例如 {x: [a,1,c] }

4.4内嵌式的文档(embeded Document{x {y”:21334}}

4.5ObjectId 每个文档都有一个唯一的ObjectIDObjectID 使用12位来存储2416进制位 前4位时间戳 3位标识机器 2位的进程ID 3位的自增

 

MongoDB的特性介绍之一复制集

    在传统的关系型数据库, MySQL上, 为了确保数据的安全, 我们一般都会提供类似这种主从的备份机制, 就是全部数据都写到master 然后再同步到slave slave库只提供读的操作, 通过在读方面帮助主库分流, 从而降低主库的负载,提高主库的应答相应时间。同时备库作为主库的容灾, 如果主库挂掉,可以切换到备库,但是可能数据并不是最新, 无法保证完全的一致性。

MongoDB提供了备份集ReplicaSet的机制。 备份集,实际上是一个自动容灾备份的主备集群机制。备份集和master-slave的机制的最大不同是, 备份集没有一个所谓的master 而是只有一个选举出来的节点, 当这个master节点出错的时候, 可以从集群中重新选举一个新的master节点,从而避免了单点失败。而更重要的是, MongoDB 自动实现集合中的选举, 数据间同步都是自动完成, 无需开发者进行任何操作, 非常方便的保证数据的一致性。

如果当前master节点失败了, 那么剩余的节点会自动选出新的master节点出来,如果主节点发生了任何改变, 在新的主节点上的数据将被当作是最新数据,其他节点, 如果有些数据和这个新节点不同,将会自动回滚, 从而保证了整个集群的一致性。 而这个的实现是通过查询op_log在当前节点的操作,但是还没在新的主节点操作的, 查询出那些影响到master节点达到最新的所有操作。

 

MongoDB的特性之二 shards机制

    对于传统的关系型数据库的分表的实现, 一般需要在程序中, 实现复杂的根据某个id进行路由, 然后找到对应的数据库服务器,并在服务器中进行查找, 而这样会面临很多问题, 首先是如果数据库的容量到了,必须进行非常昂贵的复制操作, 同时, 添加新的服务器需要在修改程序, 从而使一些新的id可以保存到指定的服务器中, 这样的扩展性,对于数据高速发展的网站, 对于开发人员和DBA 都是一个梦魇。而使用MongoDB 则是在数据库级别屏蔽了这些相关的数据迁移和数据的负载均衡的操作, 对于开发者都是透明的。

MongoDB自动将数据分到不同的机器上, 实现了负载均衡, 同时可以更快的相应更大数量级的请求。

为了实现将数据自动分割集群上不同的机器, mongoDB主要的一个做法是将一个个的collection 分割成更小的集合chunk 分块, 这些分块分布式的存储到多个不同的shards上面,而这些数据对应应用程序的透明的, 因为mongoDB又实现了一个mongos的进程处于所有的shards前面, 应用程序不知道任何chunk的信息, 但是mongos知道所有chunks的具体位置信息, 应用程序通过想mongos发送请求来获取所有的相关信息。由于mongos实际上实现了一个路由信息, 而应用程序发送的请求, 通过mongos转发到指定的shards 然后在将最后的结果转发给应用程序。


shard机制的一个关键点是shardkeys。当你希望对数据进行划分, 你必须指定一个key 所有的数据按照这个key,将数据划分到不同的shards上面。使用不同特性的key 会有不同的优缺点 使用自增的Shardkey 缺点,有一个节点必须持续接受写数据, 而其他shard节点,只有读, 那个单点很容易出问题。使用随机的Shardkey 可以将节点随机的分配到不同的节点上,提高写的效率,使负载更加均衡。

shard的实现机制:shard的实现方式是, mongos实际上只是一个转发请求和应答的进程, 它本身并没有保存任何数据, 所有的关于chunk的元数据, 都保存在一个叫config server,的配置服务上, 在这个数据库上保存了所有关于指定的chunk节点保存在哪个shards的相关信息, mongos首先通过请求这个服务器, 获取对应的shards信息,再向对应的shards的信息, 发送请求, 并接受相应的应答。具体过程如下图所示。



五, 一个建议的生产环境的配置

为了避免单点的失败, 所有的实例都需要配置多个。

多个配置服务器 config server

多个路由服务器 mognos

使用shard机制, 并且对每个shard建立一个备份集,来保证数据安全性

 

分享到:
评论

相关推荐

    mongoDB简介.doc

    ### MongoDB简介 MongoDB是一种介于关系数据库和非关系数据库之间的产品,在非关系数据库中以其丰富的功能和接近关系数据库的特性而闻名。它支持类似JSON的BSON格式数据存储,适用于存储复杂的数据类型。 #### ...

    MongoDB简介及精进PDF

    在这个"MongoDB简介及精进PDF"的压缩包中,包含了对MongoDB的深度探讨,包括其基本概念、核心特性、最佳实践以及高级技术应用。 NOSQL主流产品的研究报告.docx可能涵盖了当前市场上流行的NoSQL数据库的比较,包括...

    MongoDB简介与实践

    ### MongoDB简介与实践 #### MongoDB概述 MongoDB是一款先进的、基于分布式文件存储的数据库系统,其核心编程语言为C++。这款数据库系统的设计初衷是为了满足Web应用对高性能、可扩展数据存储方案的需求。MongoDB...

    MongoDB简介(软件测试)

    MongoDB简介 软件测试

    mongodb-introduction:MongoDB简介

    在Cherryleer创建的这个MongoDB简介中,你将学习到如何开始使用MongoDB,从安装、基本操作到高级特性,为你的项目提供一个强大的非关系型数据库解决方案。通过JavaScript与MongoDB的紧密集成,你可以更加高效地管理...

    MongoDB简介与实践.pdf

    从提供的文件内容中,我们可以提取出以下关于MongoDB的知识点: 1. 关于NoSQL的知识点: NoSQL数据库是区别于传统关系型数据库的数据存储方式,它主要面对数据高并发性的实时读取与写入、海量数据存储和智能计算与...

    MongoDB简介习题.pdf

    MongoDB 是一个广泛使用的开源数据库系统,尤其在处理大量非结构化数据时表现出色。它是用 C++ 语言编写的,具有分布式文件存储的特性,适合于构建高度可扩展的应用程序。MongoDB 的设计目标是提供高性能、高可用性...

    MongoDB简介与实践.zip

    MongoDB是一种流行的开源、分布式文档型数据库,设计用于处理海量数据并提供高可用性和可扩展性。它采用了NoSQL的数据模型,与传统的SQL关系数据库相比,具有更灵活的数据结构和更高的写入性能。MongoDB使用BSON...

    MongoDB使用手册-中文版.pdf

    第 1 章 MONGODB 简介 MongoDB 是一个基于分布式文件存储的开源数据库系统,旨在为大规模数据存储和高性能数据处理提供解决方案。 MongoDB 的主要特点包括: * 高性能:MongoDB 采用高性能的存储引擎,能够快速...

    Mongodb for Ubuntu 18.04 ARM 64

    二、MongoDB简介 MongoDB是一个NoSQL数据库,它使用JSON-like文档进行数据存储,这使得处理复杂数据结构变得简单。它的特点是灵活性、高可用性、可扩展性和高性能,适用于大数据和实时应用。 三、安装MongoDB 1. ...

    Spring-Data-MongoDB3.2

    Spring Data MongoDB简介** Spring Data MongoDB提供了与MongoDB数据库交互的一系列抽象,包括MongoTemplate和Repository接口。通过这些接口,开发人员无需直接编写MongoDB的Java驱动程序代码,就能实现CRUD(创建...

    掌握MongoDB:NoSQL数据库基础与高级特性教程.rar

    MongoDB 简介 MongoDB 特点 安装与配置 安装 MongoDB 启动与配置 MongoDB 基本操作 数据库和集合 文档操作 查询操作 基本查询 高级查询 索引与性能优化 创建索引 索引类型 索引优化 聚合操作 聚合框架 常用聚合操作 ...

    7_webstorm配置mongodb1

    MongoDB简介 MongoDB是一款面向文档的NoSQL数据库,使用BSON(Binary Serialized Object Notation)存储数据。它具有高性能、高可用性和可扩展性,常用于大数据分析、实时分析、机器学习和人工智能等领域。 ...

    mongodb启动加入windows服务

    #### 一、MongoDB简介 MongoDB是一种非常流行的开源文档数据库系统,它属于NoSQL(非关系型数据库)的一种。与传统的关系型数据库不同,MongoDB采用BSON(Binary JSON)格式存储数据,这使得数据存储更加灵活,并且...

    java+MongoDB实现存图片、下载图片的方法示例

    Java和MongoDB简介 在本文中,我们将使用java作为开发语言,并配合MongoDB数据库来存储和下载图片。java是一种广泛使用的编程语言,known for its platform independence和large community support。MongoDB是一种...

    spring mongodb 中文文档

    1. **MongoDB 简介** MongoDB 是一个NoSQL 数据库,使用JSON 样式的文档存储数据,适合处理大规模数据。其特点包括高可用性、可扩展性和灵活性。 2. **Spring Data MongoDB 概述** Spring Data MongoDB 提供了一...

    MongoDB应用.doc

    一、 MongoDB 简介 MongoDB 是一种开源的、无模式的分布式文档型数据库,由10gen(现为MongoDB Inc.)开发,它以其高性能、高可用性和易扩展性而受到广泛欢迎。MongoDB 使用C++语言编写,设计目标是处理大量数据的...

Global site tag (gtag.js) - Google Analytics