摘要:本文主要学习了数据库的定义和分类,以及MongoDB数据库的基本知识。
环境
Windows 10 企业版 LTSC 21H2
MongoDB 6.0.21
1 数据库
1.1 定义
数据库是按照数据结构来组织、存储和管理数据的仓库。
程序是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。所以需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。而数据库就是数据持久化的最佳选择。
比较简单的数据库就是类似LowDB这种使用文本存储的数据库,使用比较简单,单功能也比较有限。
1.2 分类
如果按数据模型分类,可以将数据库分为关系型数据库和非关系型数据库。
1.2.1 关系型数据库
通常适用SQL(Structured Query Language)表示。
以表格的形式组织数据,表格之间通过关系相连,使用SQL语言进行数据操作。
常见的数据库有:MySQL、Oracle、SQL Server、PostgreSQL等等。
适用于需要复杂查询和事务处理的场景,比如银行系统和企业资源规划系统等等。
1.2.2 非关系型数据库
通常使用NoSQL(Not only SQL)表示。
非关系型数据库根据存储形式不同还可以进一步分类。
1.2.2.1 键值存储数据库
以键值对的形式存储数据,键是唯一的,值可以是任意类型的数据。
常见的数据库有:Redis、Riak。
适用于需要快速读写操作的场景,比如缓存系统和会话存储。
1.2.2.2 文档型数据库
以文档的形式存储数据,文档可以是JSON和XML等格式,每个文档都是独立的。
常见的数据库有:MongoDB、CouchDB。
适用于需要灵活的数据结构和快速的读写操作,比如内容管理系统和实时分析系统。
1.2.2.3 列族数据库
以列族为单位存储数据,适合存储大量稀疏数据。
常见的数据库有:HBase、Cassandra。
适用于需要处理海量数据和高写入速率的场景,如物联网数据存储、日志分析。
1.2.2.4 图数据库
以图的形式存储数据,擅长处理实体之间的关系。
常见的数据库有:Neo4j、OrientDB。
适用于需要处理复杂关系的数据,如社交网络、知识图谱。
2 简介
2.1 概述
MongoDB是一种流行的开源文档型数据库,属于NoSQL数据库的一种。它以其灵活的数据模型、高性能和可扩展性而闻名,特别适合处理大量结构化和非结构化数据的应用程序。
官网网站:
2.2 原理
MongoDB使用BSON(Binary JSON)格式存储数据,这种格式是JSON的二进制表示,具有更高的存储效率和处理速度。每个文档都可以包含不同数量和类型的字段,使得数据模型更加灵活。
在MongoDB中,数据被组织成集合(Collection)和文档(Document)。集合是文档的集合,类似于关系型数据库中的表,但不需要预先定义固定的模式。文档则是数据的基本单位,由键值对组成,类似于JSON对象。
所有存储在集合中的数据都是BSON格式,BSON是一种类似JSON的二进制形式的存储格式,是Binary JSON的简称。
2.3 特点
- 高可用性:通过复制集(Replica Set)机制,实现数据的自动备份和故障转移。复制集由多个节点组成,包括一个主节点和多个从节点,数据在这些节点之间自动同步。
- 模式自由:使用动态模式(Schema-less)架构,同一集合中的文档可拥有不同字段,开发过程中可随时调整结构,减少迁移成本。
- 高性能:利用内存映射文件加速数据访问,支持多种索引类型(如复合、全文、地理空间)。
- 水平扩展:支持分片(Sharding)技术,允许将数据集拆分成多个部分,每个部分存储在不同的服务器上,从而提高系统的处理能力和存储容量。
- 复杂查询:支持复杂的查询表达式和操作符,包括聚合(Aggregation)、文本搜索(Text Search)和地理空间查询(Geospatial Queries)等,使得数据的检索和处理更加方便。
- 事务支持:在4.0版本后支持跨文档事务,满足一致性要求较高的场景,但需权衡性能。
- 多语言驱动:支持多种编程语言的驱动,比如Ruby、Java、C#、JavaScript、C、C++、PHP、Perl和Python等,方便开发者在不同的编程环境中使用。
条