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

相关推荐
曹牧28 分钟前
Oracle数据库中,将JSON字符串转换为多行数据
数据库·oracle·json
被摘下的星星1 小时前
MySQL count()函数的用法
数据库·mysql
末央&1 小时前
【天机论坛】项目环境搭建和数据库设计
java·数据库
徒 花1 小时前
数据库知识复习07
数据库·作业
素玥1 小时前
实训5 python连接mysql数据库
数据库·python·mysql
jnrjian1 小时前
text index 查看index column index定义 index 刷新频率 index视图
数据库·oracle
瀚高PG实验室2 小时前
审计策略修改
网络·数据库·瀚高数据库
言慢行善2 小时前
sqlserver模糊查询问题
java·数据库·sqlserver
韶博雅2 小时前
emcc24ai
开发语言·数据库·python
有想法的py工程师2 小时前
PostgreSQL 分区表排序优化:Append Sort 优化为 Merge Append
大数据·数据库·postgresql