面向文档的NoSQL数据库MongoDB(上)

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 面向文档的NoSQL数据库MongoDB(上)

NoSQL优势


全称:Not Only SQL 不仅仅是数据库

  • 海量的扩展能力
  • 读写高性能
  • 与关系型数据库(RDBMS)相辅相成


NoSQL产品


  • 键值存储型(Key-Value) Redis/Codis
  • 列存储型 HBase
Hbase数据分析用的比较多
  • 图形(Graph)数据库
Neo4j知识图片用的较多
  • 文档型 MongoDB


MongoDB概念


举例:描述人
  • 关系型数据库


image.png


MongoDB特性


  • 可扩展(scalable)
  • 高性能(high-performance)
  • 开源(open source) NoSQL database
  • C++语言编写
  • Document-Oriented Storage
  • Full Index Support
  • Replication & High Availability
  • Auto-Sharding
  • Rich Querying
  • Updates
  • Map/Reduce
  • GridFS 存储二进制文件


MongoDB稳定性


如何解决数据丢失

  • 恢复日志(journal)

image.png

image.png


MongoDB高可用


核心业务SLASLA 99.99%以上怎么做到的?


MongoDB 副本集(replica set)

  • 数据多分冗余
  • 跨交换机部署
  • 更快的选举方式(参考raft协议)

架构

主从复制+高可用方案


image.png


分片

架构

image.png

1、对业务方来说没有分库分表的概念
不管数据量多大 对业务方来说都是单库单表
对于关系型数据库来说比如Myql有分库分表的概念
比如1T数据 MongoDB分2个片 每一个片存储500G数据
2、Router可以有很多台
3、分片信息存储在config server中
4、一个分片就是一个副本集(replica set)
5、Router先访问config server获取分片信息,Router再访问分片集(replica set)

表的分片(MongoDB Collection)

image.png



分片规则

Sharding Range-based

基于范围分片 用的较多

Mysql B+ Tree本质也是Range-based


image.png


Sharding Hash-based

取模分片

Java HashMap是Hash-based
查询速度比较快
不支持范围查询
对于数据库来说 不支持范围查询肯定不合适

image.png


1、3个配置节点、3个路由节点(mongos)都是stateless(无状态的即数据都一样)
2、每个分片就是一个replica set(一主两从) 一个分片3台机器
3、cnofig和mongos也可以混合部署在一个sharding上


应用场景


image.png

1、位置即GPS或LBS
2、中小公司用它没有问题 量大肯定不行
3、非交易相关的都可以用
a、事务支持的比较弱
b、mongodb 4.0已经支持事务 并且支持跨行事务


可扩展存储


image.png

1、最早的操作引擎是MMAP 支持表级锁 也是操作系统自带的一种机制
缺点就是内存利用率不高
2、WireTigger支持行级锁
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
10 0
|
3天前
|
NoSQL MongoDB 数据库
MongoDB数据恢复—MongoDB数据库文件被破坏的数据恢复案例
服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。
|
7天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
129 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
1月前
|
编解码 缓存 数据库
【软件设计师备考 专题 】编写内部设计文档:屏幕设计和数据库设计
【软件设计师备考 专题 】编写内部设计文档:屏幕设计和数据库设计
64 0
|
1月前
|
NoSQL 网络协议 MongoDB
Windows公网远程连接MongoDB数据库【无公网IP】
Windows公网远程连接MongoDB数据库【无公网IP】
|
7天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
41 2
|
23天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
105 0
|
23天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
23天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
4天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
14 0

热门文章

最新文章