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 数据的存储。

相关推荐
文牧之3 小时前
PostgreSQL 用户资源管理
运维·数据库·postgresql
Paraverse_徐志斌7 小时前
MySQL 线上大表 DDL 如何避免锁表(pt-online-schema-change)
数据库·mysql·ddl·mysql锁·锁表·pt-osc
哈哈幸运7 小时前
MySQL运维三部曲初级篇:从零开始打造稳定高效的数据库环境
linux·运维·数据库·mysql·性能优化
愚公搬代码8 小时前
【愚公系列】《Python网络爬虫从入门到精通》055-Scrapy_Redis分布式爬虫(安装Redis数据库)
数据库·爬虫·python
pwzs8 小时前
深入浅出 MVCC:MySQL 并发背后的多版本世界
数据库·后端·mysql
大熊猫今天吃什么8 小时前
【一天一坑】空数组,使用 allMatch 默认返回true
前端·数据库
双叶8369 小时前
(51单片机)LCD显示数据存储(DS1302时钟模块教学)(LCD1602教程)(独立按键教程)(延时函数教程)(I2C总线认识)(AT24C02认识)
c语言·数据库·单片机·嵌入式硬件·mongodb·51单片机·nosql
XY.散人9 小时前
初识Redis · C++客户端list和hash
数据库·redis·缓存
追逐时光者9 小时前
MongoDB从入门到实战之MongoDB简介
后端·mongodb
码上飞扬9 小时前
深入 MySQL 高级查询:JOIN、子查询与窗口函数的实用指南
数据库·mysql