MongoDB 简介

目录

一、MongoDB

二、主要特点

[三、MongoDB 数据存储格式](#三、MongoDB 数据存储格式)

[JSON 格式](#JSON 格式)

[BSON 格式](#BSON 格式)

四、高可用的复制集群

五、水平扩展

适用场景


一、MongoDB

MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。

MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

二、主要特点

  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  • 可以在 MongoDB 记录中设置任何属性的索引 (如: FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  • 可以通过本地或者网络创建数据镜像,这使得 MongoDB 有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在 计算机网络中的其他节点上这就是所谓的分片。
  • Mongo 支持丰富的查询表达式。查询指令使用 JSON 形式的标记,可轻易查询 文档中内嵌的对象及数组。
  • MongoDb 使用 update() 命令可以实现替换完成的文档(数据)或者一些指定 的数据字段 。
  • Mongodb 中的 Map/reduce 主要是用来对数据进行批量处理和聚合操作。
  • Map 和 Reduce。Map 函数调用 emit(key,value)遍历集合中所有的记录,将 key 与 value 传给 Reduce 函数进行处理。
  • Map 函数和 Reduce 函数是使用 Javascript 编写的,并可以通过 db.runCommand 或 mapreduce 命令来执行 MapReduce 操作。
  • GridFS 是 MongoDB 中的一个内置功能,可以用于存放大量小文件。
  • MongoDB 允许在服务端执行脚本,可以用 Javascript 编写某个函数,直接在 服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB 支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种 语言。
  • MongoDB 安装简单。

三、MongoDB 数据存储格式

JSON 格式

JSON 数据格式与语言无关,脱胎于 JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json。 MongoDB 使用 JSON(JavaScript ObjectNotation)文档存储记录。 JSON 数据库语句可以容易被解析。

Web 应用大量使用,NAME-VALUE 配对

BSON 格式

BSON 是由 10gen 开发的一个数据格式,目前主要用于 MongoDB 中,是 MongoDB 的数据存储格式。BSON 基于 JSON 格式,选择 JSON 进行改造的原因主 要是 JSON 的通用性及 JSON 的 schemaless 的特性。 二进制的 JSON,JSON 文档的二进制编码存储格式 BSON 有 JSON 没有的 Date 和 BinData

MongoDB 中 document 以 BSON 形式存放 例如:

sql 复制代码
db.meeting.insert({meeting:"M1 June",Date:"2018-01-06"});  

四、高可用的复制集群

自动复制和故障切换 多数据中心支持滚动维护无需关机支持最多 50 个成员

五、水平扩展

这种方式是目前构架上的主流形式,指的是通过增加服务器数量来对系统扩容。 在这样的构架下,单台服务器的配置并不会很高,可能是配置比较低、很廉价的 PC,每台机器承载着系统的一个子集,所有机器服务器组成的集群会比单体服务 器提供更强大、高效的系统容载量。 这样的问题是系统构架会比单体服务器复杂,搭建、维护都要求更高的技术背景。

分片集群架构如下图所示:

适用场景

网站数据、缓存等大尺寸、低价值的数据 在高伸缩性的场景,用于对象及 JSON 数据的存储。

相关推荐
Cacciatore->11 分钟前
MongoDB 介绍与部署
数据库·mongodb
无名指的等待71217 分钟前
SpringBoot实现一个Redis限流注解
spring boot·redis·后端
~请叫我小祸害~21 分钟前
在 C# 中使用 Dapper 查询数据并导出 Excel
开发语言·数据库·c#·excel
kngines1 小时前
MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.1 MySQL简介与应用场景
数据库·mysql
A__tao1 小时前
在线 SQL 转 Python ORM工具
数据库·sql·oracle
微笑伴你而行2 小时前
spring boot 发送邮件验证码
java·数据库·spring boot
爱搞技术的猫猫2 小时前
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
java·数据库·音视频
huan_19932 小时前
通过mybatis的拦截器对SQL进行打标
数据库·sql·mybatis·mybatis拦截器·sql打标
超级无敌新新手小白2 小时前
SQL--算术运算符
数据库
椰椰椰耶3 小时前
【redis】hash基本命令和内部编码
redis·bootstrap·哈希算法