当前位置: 首页 > news >正文

Mongodb分布式文件存储数据库

文章目录

    • 一、MongoDB 简介
      • 基本信息
      • 特点
      • 内部组件
    • 二、MongoDB 部署
      • 1. 安装依赖
      • 2. 解压部署并配置环境变量
      • 3. 修改配置文件以及启动服务
      • 4.数据库权限管理
    • 三、MongoDB 管理
      • 1. 角色权限
      • 2. 操作命令
        • 用户管理命令
        • 常用命令(Mongo4.2.8)
          • 数据库相关
          • 用户相关
          • 集合 Collection 相关

在这里插入图片描述

一、MongoDB 简介

基本信息

MongoDB 是由 C++ 语言编写的,基于分布式文件存储的开源数据库系统。在高负载情况下,可通过添加更多节点保证服务器性能。它旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为文档,数据结构由键值(key=>value)对组成,其文档类似于 JSON 对象,字段值可以包含其他文档、数组及文档数组。

  • 官方文档:https://docs.mongodb.com/manual/?_ga=2.57024426.1834178963.1557492386 - 816165234.155749238
  • 官方下载地址:https://www.mongodb.com/download-center/community

特点

  1. 高性能:提供高性能的数据持久性,支持嵌入式数据模型,减少数据库系统上的 I/O 操作;索引支持快速查询,可包含嵌入式文档和数组中的键。
  2. 丰富的语言查询:支持丰富的查询语言,用于读写操作(CRUD)、数据汇总、文本搜索和地理空间索引。
  3. 高可用性:复制工具(副本集)提供自动故障转移和数据冗余。
  4. 水平可扩展性:分片功能可将数据分布在一组计算机上,提供可扩展性。
  5. 支持多种存储引擎:如 WiredTiger 存储引擎、MMAPv1 存储引擎和 InMemory 存储引擎。

内部组件

  1. MongoDB Drivers:官方 MongoDB 客户端库,提供 C、C++、C#、Java、Node.JS、Perl、PHP、Python、Ruby 和 Scala 驱动程序的参考指南。
  2. MongoDB Stitch:为开发人员提供访问 MongoDB 和其他后端服务的 API,保持 MongoDB 功能和灵活性,支持细粒度的数据访问控制配置。
  3. MongoDB Atlas:MongoDB 在云中部署、操作和扩展的最佳方式,适用于 AWS、Azure 和 Google Cloud Platform,可轻松迁移数据,零停机。
  4. MongoDB Cloud Manager:用于管理 MongoDB 部署的软件包,提供监控和备份功能,帮助用户优化群集并降低操作风险。
  5. MongoDB Charts:可快速简单地创建 MongoDB 可视化图表。
  6. MongoDB Connector for BI:允许用户使用 SQL 创建查询,并使用现有的关系商业智能工具(如 Tableau、MicroStrategy 和 Qlik)对 MongoDB Enterprise 数据进行可视化、图形化和报告。
  7. MongoDB Compass:通过随机抽样文档子集,为用户提供 MongoDB 模式的图形视图,降低对数据库的影响并快速产生结果。
  8. MongoDB Spark Connector:可访问所有使用 MongoDB 数据集的 Spark 库,支持 SQL 分析、流式传输、机器学习和图形 API,也可与 Spark Shell 配合使用。

二、MongoDB 部署

1. 安装依赖

yum install libcurl openssl -y

2. 解压部署并配置环境变量

tar xvf mongodb-linux-x86_64-rhel70-4.4.6.tgz
mv mongodb-linux-x86_64-rhel70-4.4.6 /usr/local/mongodb
mkdir /usr/local/mongodb/{conf,data,logs}vi /etc/profile
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin

3. 修改配置文件以及启动服务

cd /usr/local/mongodb/
vi conf/mongodb.conf
port=39096
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongodb.log
bind_ip=0.0.0.0
#auth=true   ### 开启登录认证,配置完用户名密码在进行开启# 启动服务
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongodb.conf --logappend# 连接 mongodb
mongo --port 39096 -uaexcom --authenticationDatabase trade -p

4.数据库权限管理

// 创建并切换数据库
use trade
// 创建用户并授权数据库
db.createUser({user:"aexcom",pwd:"xxx=",roles:[{role:"readWrite",db:"trade"}]})// 验证是否登录成功
use trade
db.auth("aexcom","xxx=")

三、MongoDB 管理

1. 角色权限

  • Read:允许用户读取指定数据库。
  • readWrite:允许用户读写指定数据库。
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问 system.profile。
  • userAdmin:允许用户向 system.users 集合写入,可在指定数据库里创建、删除和管理用户。
  • clusterAdmin:只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限。
  • readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限。
  • userAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限。
  • dbAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限。
  • root:只在 admin 数据库中可用,超级账号,拥有超级权限。

2. 操作命令

用户管理命令
db.auth() // 将用户验证到数据库。
db.changeUserPassword() // 更改现有用户的密码。
db.createUser() // 创建一个新用户。
db.dropUser() // 删除单个用户。
db.dropAllUsers() // 删除与数据库关联的所有用户。
db.getUser() // 返回有关指定用户的信息。
db.getUsers() // 返回有关与数据库关联的所有用户的信息。
db.grantRolesToUser() // 授予用户角色及其特权。
db.removeUser() // 已过时,从数据库中删除用户。
db.revokeRolesFromUser() // 从用户中删除角色。
db.updateUser() // 更新用户数据。
常用命令(Mongo4.2.8)
数据库相关
// 切换/创建数据库
use "dbname";
// 查询所有数据库
show dbs;
// 查看当前使用的数据库
db.getName();
// 查看数据库版本
db.version();
// 查看当前 db 的链接地址
db.getMongo();
用户相关
// 创建普通用户(创建用户 cg,对 mytest 数据库读写权限)
db.createUser({user:"cg",pwd:"lianshi",roles:[{role:"readWrite",db:"mytest"}]})
// 删除用户
db.dropUser("yonghu")
// 修改用户密码
db.updateUser("cg",{pwd:"123456"})
// 进入数据 mytest,用户名密码认证
db.auth("cg","lianshi");
集合 Collection 相关
// 获得数据聚合(表)
db.getCollectionNames();
// 集合(表)插入数据
db.student.insert({"id":"2","name":"yxy"})
// 查询数据
db.student.find();
// 查询唯一字段值
db.student.distinct("name");
// 查询 name = yxy 的记录
db.student.find({"name":"yxy"});
// 插入 int32 字段类型的数据
db.student.insert({"id":NumberInt(1234567),"name":"hu"});
// 插入 int64 字段类型数据
db.student.insert({"age":NumberLong(22),"name":"hu"});
// 插入 Decimal 字段类型数据
db.student.insert({"va":NumberDecimal("22.3"),"name":"hu"});
// 查询语句
db.student.find({}).projection({}).sort({_id:-1}).limit(100)
// 删除(集合)表
db.student.drop();

在这里插入图片描述

相关文章:

  • NineData 与飞书深度集成,企业级数据管理审批流程全面自动化
  • IDEA热加载
  • 逐位逼近法计算对数的小数部分
  • SpringClound 微服务分布式Nacos学习笔记
  • Docker--Docker网络原理
  • day35图像处理OpenCV
  • Java面向对象的三大特性
  • ClickHouse 设计与细节
  • Python 设计模式:模板模式
  • 安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
  • Qt -对象树
  • CSS预处理器对比:Sass、Less与Stylus如何选择
  • 操作系统之shell实现(下)
  • Laravel 对接阿里云 OSS 说明文档
  • GPIO(通用输入输出端口)详细介绍
  • 【Qt】控件的理解 和 基础控件 QWidget 属性详解(通俗易懂+附源码+思维导图框架)
  • PyTorch卷积层填充(Padding)与步幅(Stride)详解及代码示例
  • 深入理解 Spring @Configuration 注解
  • PyTorch深度学习框架60天进阶学习计划 - 第48天:移动端模型优化(二)
  • 4.22tx视频后台开发一面
  • 奔驰一季度利润降四成,受美国加征关税影响放弃全年盈利展望
  • 水利部将联合最高检开展黄河流域水生态保护专项行动
  • 民生访谈|支持外贸企业拓内销,上海正抓紧制定便利措施
  • 力箭二号火箭成功进行满载起竖试验,计划今年首飞发射轻舟飞船
  • 举牌超200轮!中铁建7.76亿元竞得北京通州梨园宅地
  • 央行召开落实金融“五篇大文章”总体统计制度动员部署会议