Advertisement

什么是MongoDB?为什么要使用MongoDB?

阅读量:

什么是NoSQL?

作为一种非关系型分布式数据管理系统(DMS),NoSQL无需固定的架构设计。它通过避免使用joins连接操作和具备良好的扩展性,在处理大量非结构化数据时展现出高效性能。特别适用于需要处理海量数据的分布式存储环境。此外,NoSQL还广泛应用于大数据管理和实时Web服务系统中。例如,在Twitter、Facebook和Google等大型企业中,每天会产生TB级数量的日志数据。

NoSQL 数据库涵盖多种类型的数据库系统,既不单纯是也不是传统的 SQL 数据库体系。尽管 NoREL,NoSQL 被视为更优的术语。Carl Strozz 在 1998 年首次提出了 NoSQL 概念。

传统上基于SQL语法的RDBMS(关系型数据库管理系统)用于存储与检索数据。相比之下,在NoSQL数据库系统中则支持多态数据、非结构化数据、半结构化数据和传统上的结构化数据等多种技术手段。

¶ 为什么使用NoSQL?

NoSQL数据库的概念被广泛应用于当前互联网行业中(如Google、Facebook和Amazon等),逐渐成为技术领域中的热门话题。当采用基于关系型数据库管理系统(RDBMS)处理海量数据时,系统的运行效率显著降低。

显然通过改进现有的硬件配置来"横向扩展"我们的系统能够有效应对这一挑战。然而这样做成本高昂

解决该问题的替代方法是,在面对负载增长时将数据库负载分散至多个服务器上。这一技术被称为'横向扩展'。

非关系型数据库是一种特殊的数据库体系结构,在设计过程中充分考虑到了Web应用程序的需求,在扩展性方面表现出色

¶ NoSQL数据库的简要历史

  • 1998 年,在其轻量级开源关系数据库中采用 NoSQL 术语。
  • 2,ooo 年,在图形数据库领域推出了 Neo4j。
  • 2,ooo 四 invalidate 在数据仓库领域推出了 Google BigTable。
  • 二零零五年,在分布式系统领域启动了 CouchDB 项目。
  • 元月二零零七年,在研究领域发表了关于 Amazon Dynamo 的论文。
  • 八月二零零八 年,在社交网络领域开源了 Cassandra 项目。
  • 元月二零一三年,在重新引入 NoSQL 相关技术方面取得了进展。

¶ NoSQL的功能

非传统关联型 * NoSQL数据库通常不基于传统的关系型模型。

  • 避免将表格字段设计为固定模式。
  • 使用内置聚合函数或二进制大对象。
  • 无需建立对象间的关系映射和数据规范流程。
  • 没有复杂的功能模块,请注意以下内容:查询语言、事务处理能力(ACID)。

动态架构

提供一个直观且便于使用的界面来存储和检索相关数据;API可执行基本的数据操作及选择功能;遵循基于文本的标准协议,并常与带JSON格式的HTTP REST接口配合使用;通常不依赖传统的查询语言;支持Web数据库作为服务运行的基础

该系统采用分布式架构能够管理多个NoSQL数据库具备自动扩展和故障转移能力为了实现系统的扩展性和高吞吐量则不得不放弃传统的ACID一致性选择各节点之间几乎无需同步复制采用异步多主复制策略从而能够降低协调成本并提升系统的分布能力该系统仅保证最终的一致性无共享架构这样能够降低协调成本并提升系统的分布能力

¶ 什么是MongoDB

MongoDB主要作为面向文档的NoSQL数据库使用,并且其核心功能是存储大量数据。由其开发团队于2000年代中期推出的一种高效数据存储解决方案。其作为NoSQL数据库的一种应用形式被广泛采用。

¶ MongoDB功能

每个数据库都包含集合结构,并且其中每个集合又包含多个文档。这些文档具有不同的字段数量和内容特征。每个文档的具体大小与内容都是独一无二的。这种结构设计特别适合那些使用各自编程语言构建类与对象的开发人员。他们通常指出,在他们使用的编程语言中,默认情况下类不是以行和列的形式存在(尤其是在使用MongoDB之前),而是以键值对的方式进行组织更为直观)。从NoSQL数据库的基本概念可以看出,在MongoDB中使用的是类似"文档"的概念(在MySQL或其他传统关系型数据库中则称为"记录"),而无需预先定义具体的架构模式。相反的是关系型数据库必须预先定义固定的字段列表,并且无法动态地增加或删除字段信息。而在MongoDB中则完全不同——它允许开发者根据实际需求动态地创建与删除字段信息(虽然这并不是推荐的做法)。由于MongoDB所采用的数据模型更加灵活多样,在表示层次化关系以及存储数组、列表等复杂数据类型方面具有显著的优势。其高扩展性使得在全球范围内部署多个集群成为可能,并且一些集群甚至能够运行上百个节点的同时支持数百万级别的文档存取操作

¶ 为什么使用MongoDB

以下是一些为什么应该开始使用MongoDB的原因

  • 基于文档存储 – MongoDB是非关系型数据库的一种,在设计上主要针对处理非结构化信息的特点而生,在这种架构下,MongoDB不是按照传统的表来进行存储,而是将信息组织成一个个灵活多样的文档.这种特性使得其能够轻松适应实际业务环境的需求.
  • 灵活的数据检索方式 - MongoDB支持按字段、范围查询和正则表达式搜索等多种检索方式,允许用户根据实际需求快速定位所需信息.
  • 强大的索引功能 - 为了提升搜索效率,MongoDB允许用户为任意字段创建索引,从而实现对大量数据快速定位的能力.
  • 高可用性的复制机制 - MongoDB提供了一种高可用性的复制机制,通过创建一个复制集群即能达到高可用性的目的.该机制由两台或多台MongoDB实例组成,每个实例都可以作为从机或者 master 服务角色运行.
  • 分布式架构设计 - MongoDB采用分片技术实现了水平扩展的能力,其核心思想是把大量数据均匀分配至多台服务器上进行处理,从而提升了系统的扩展性和稳定性.

¶ MongoDB常用术语

下面是MongoDB中使用的一些常用术语

_id` – 这是MongoDB文档中的字段类型要求强制强制字段。_id字段代表MongoDB文档中的唯一标识符,在创建新文档时必须包含该字段以避免自动创建,默认情况下MongoDB会为其生成唯一的_id值。

  • 集合 – 这是MongoDB中用于组织数据的结构体。集合类似于数据库中的表,并且存在于单个数据库中。与关系型数据库不同的是集合不强制执行严格的结构化约束。
  • 游标 – 这是一个指向查询结果集位置的引导符。客户端可以通过逐个访问游标来获取查询结果集中的每一行数据。
  • 数据库 – 这是一个存储空间集合体,在其中可管理多个集合(类似表格)。每个MongoDB数据库独立存在,并有自己的文件系统目录结构。
  • 文档 - MongoDB中存储的数据单位通常被称为文档。每个文档由一组键-值对组成,并支持零个或多个字段信息。
  • 字段 - MongoDB中存储的数据属性名称及其对应值的一组组合体(键-值对)。每个文档可包含任意数量的字段信息,并与关系型数据库中的列具有相似的功能作用。

该图表展示了包含键值对的字段。在以下实例中,CustomerID和11作为文档中的键值对之一使用。

¶ MongoDB与RDBMS区别

下表将帮助您更容易理解Mongo中的一些概念:

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

全部评论 (0)

还没有任何评论哟~