MongoDB学习【一】MongoDB简介和部署

MongoDB简介

MongoDB是一种开源的、面向文档的、分布式的NoSQL数据库系统,由C++语言编写而成。它的设计目标是为了适应现代Web应用和大数据处理场景的需求,提供高可用性、横向扩展能力和灵活的数据模型。

主要特点:

  1. 文档模型

    • MongoDB采用JSON-like(类似于JavaScript对象)的数据结构,称为文档,每个文档可以有多个字段和嵌套结构,使得数据模型更加灵活多样。
    • 文档存储在集合(Collections)中,集合无需预先定义严格的模式,允许每个文档拥有不同的结构。
  2. 分布式存储

    • MongoDB支持分布式文件存储,能够将数据分散存储在多台机器上,从而实现数据的水平扩展和负载均衡。
  3. 高可用性与容错性

    • 通过复制集(Replica Sets)提供自动故障转移和数据冗余,确保服务高可用性。
    • 支持分片(Sharding)技术来分散大量数据集以支持更大规模的并发读写。
  4. 查询和索引

    • 提供强大的查询语言,支持丰富的查询表达式和聚合管道(Aggregation Pipeline),可以对数据进行复杂操作和分析。
    • 可以为文档中的任意字段创建索引,包括文本索引、地理位置索引等多种索引类型,以优化查询性能。
  5. 事务支持

    • 自MongoDB 4.0版本起,提供了对多文档事务的支持,满足了需要严格一致性的应用场景。
  6. 性能表现

    • 由于其内存映射的存储引擎设计,MongoDB在读写速度上有良好的表现,尤其适合读密集型和实时数据处理场景。
  7. 编程友好

    • MongoDB支持多种编程语言的API接口,方便开发者在各种开发环境中快速集成和使用。

总之,MongoDB凭借其灵活性、可扩展性和高性能特性,在现代Web应用开发、物联网、移动应用、实时分析等领域得到了广泛应用。

MongDB部署

单节点Docker-Compose部署MongDB

yaml 复制代码
version: '3.9'  # 使用 Docker Compose 的版本

services:
  mongodb:
    image: mongo:5.0.10-focal  # 使用官方MongoDB镜像
    restart: always             # 容器退出时自动重启
    container_name: mongodb  # 自定义容器名称
    hostname: mongodb        # 可选,设置容器主机名
    environment:
      MONGO_INITDB_ROOT_USERNAME: root  # 初始化管理员用户名(可选)
      MONGO_INITDB_ROOT_PASSWORD: 123456  # 初始化管理员密码(可选)
    ports:
      - "27017:27017"  # 映射容器内部端口到宿主机端口
    volumes:
      - ./data/db:/data/db  # 挂载数据卷以持久化数据
      - ./configdb:/data/configdb  # 如果需要配置副本集或分片集群,则挂载配置数据库目录

在docker-compose.yml文件目录下,后台启动

bash 复制代码
docker-compose up -d

启动后,使用MongDB Compose可视化工具连接

相关推荐
java干货几秒前
用 MySQL SELECT SLEEP() 优雅模拟网络超时与并发死锁
网络·数据库·mysql
来两个炸鸡腿1 分钟前
【Datawhale组队学习202601】Base-NLP task03 深入大模型架构
人工智能·学习·自然语言处理
哈哈不让取名字2 分钟前
使用Fabric自动化你的部署流程
jvm·数据库·python
代码游侠4 分钟前
学习笔记——文件传输工具配置与Makefile详解
运维·前端·arm开发·笔记·学习
菜鸟‍4 分钟前
【论文学习】MedDINOv3:如何将视觉基础模型适配于医学图像分割任务? || MACMD:基于多空洞上下文注意力与通道混合器解码的医学图像分割方法
深度学习·学习
洛_尘4 分钟前
MySQL 6:数据库约束
数据库·mysql
flyyyya5 分钟前
【AI学习从零至壹】langchain1.0中间件
人工智能·学习·中间件
dawudayudaxue5 分钟前
sqlite在安卓下使用ndk的交叉编译
android·数据库·sqlite
YIN_尹5 分钟前
【MySQL】表的约束(下)
android·数据库·mysql
lkbhua莱克瓦249 分钟前
Apache Maven全面解析
java·数据库·笔记·maven·apache