一、MongoDB介绍
1.1 mongoDB介绍
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
1.2 特点
-
MongoDB 是一个面向
文档存储
的数据库,操作起来比较简单和容易。 -
可以在MongoDB记录中设置任何属性的索引 (
如:id="1",name="goudan",Address="beijing"
)来实现更快查询或排序。 -
可以通过本地或者网络创建数据镜像,这使得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安装简单。
1.3 MongoDB相关术语
不管我们学习什么数据库都应该学习其中的基础概念,在MongoDB中基本的概念是文档、集合、数据库。
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将==_id字段==设置为主键 |
通过下图实例,我们也可以更直观的了解Mongo中的一些概念:
二、MongoDB详细介绍
MongoDB是一个开源的、跨平台的、面向文档的NoSQL数据库系统,由10gen公司(现更名为MongoDB Inc.)开发和维护。它使用JSON格式的文档来存储数据,而不是传统的表格形式。MongoDB的设计目标是为了满足当今互联网应用程序的需求,包括大规模的数据存储和高性能的读写操作。
MongoDB的特点包括:
1. 面向文档的存储:MongoDB使用BSON(Binary JSON)格式来存储数据,可以存储复杂的数据结构,包括嵌套文档和数组。这种灵活的数据模型使得MongoDB非常适合存储半结构化的数据,如日志、用户配置和社交媒体数据。
2. 高性能:MongoDB使用内存映射文件来提高读取性能,同时支持水平扩展和副本集,以确保数据的高可用性和可靠性。它还支持索引和聚合操作,以提高查询性能。
3. 自动分片:MongoDB支持自动分片,可以水平扩展到数百台服务器,以处理大规模的数据存储和高并发的读写操作。
4. 丰富的查询语言:MongoDB支持丰富的查询语言,包括范围查询、正则表达式、聚合操作和地理空间查询。它还支持二进制数据存储和全文搜索。
5. 灵活的数据模型:MongoDB的文档模型非常灵活,可以动态添加字段和嵌套文档,而无需预定义表结构。这种灵活性使得数据模型可以根据应用程序的需求进行自由调整。
6. 支持多种编程语言:MongoDB提供了丰富的客户端驱动程序和工具,支持多种编程语言,包括Java、Python、Node.js、Ruby和C#等。
MongoDB的架构包括以下几个核心组件:
1. 数据存储:MongoDB使用存储引擎来管理数据的存储和检索。目前MongoDB支持两种存储引擎:WiredTiger和MMAPv1。WiredTiger是MongoDB 3.2版本引入的默认存储引擎,它提供了更好的性能和可靠性。MMAPv1是MongoDB的旧存储引擎,它提供了更好的内存利用率。
2. 查询处理:MongoDB使用查询处理器来解析和执行查询操作。查询处理器负责解析查询语句、优化查询计划和执行查询操作。
3. 复制和故障转移:MongoDB支持副本集来提供数据的高可用性和可靠性。副本集包括一个主节点和多个从节点,主节点负责处理写操作,从节点负责复制主节点的数据。当主节点发生故障时,副本集会自动选举一个新的主节点来接管写操作。
4. 分片:MongoDB支持自动分片来实现数据的水平扩展。分片集群包括多个分片节点和多个配置服务器,分片节点负责存储数据,配置服务器负责存储分片集群的元数据。
5. 安全性:MongoDB提供了丰富的安全功能,包括访问控制、认证、授权和加密通信。它还支持角色和权限管理,可以根据用户的角色来控制其对数据库的访问权限。
总的来说,MongoDB是一个功能强大、性能优越、灵活可扩展的NoSQL数据库系统,非常适合存储半结构化的数据和处理大规模的数据存储和高并发的读写操作。它已经被广泛应用于互联网应用程序、大数据分析、物联网和人工智能等领域,成为了当今最受欢迎的NoSQL数据库系统之一。
Guff_hys_python数据结构,大数据开发学习,python实训项目-CSDN博客