当前位置: 首页 > 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();

在这里插入图片描述

http://www.xdnf.cn/news/75403.html

相关文章:

  • 相对论大师-记录型正负性质BFS/图论-链表/数据结构
  • sqoop的参数及初体验
  • 【MCP Node.js SDK 全栈进阶指南】初级篇(1):MCP开发环境搭建详解
  • chromedp 反反爬设计方案
  • 美乐迪电玩大厅加载机制与 RoomList 配置结构分析
  • JavaScript之深浅拷贝
  • 安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
  • 【安装部署】Linux下最简单的 pytorch3d 安装
  • 安宝特案例 | AR如何大幅提升IC封装厂检测效率?
  • C#进阶学习(十)更加安全的委托——事件以及匿名函数与Lambda表达式和闭包的介绍
  • 【架构】ANSI/IEEE 1471-2000标准深度解析:软件密集型系统架构描述推荐实践
  • 【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出)
  • 4.21—4.22学习总结 JavaWeb:HTML-CSS
  • Laravel 对接阿里云 OSS 说明文档
  • ecovadis评级范围,如何拿到ecovadis评级高分
  • K8S探针的应用
  • 【教程】安装 iterm2 打造漂亮且高性能的 mac 终端
  • k8s-1.28.10 安装metrics-server
  • 模拟实现strncat、qsort、atoi
  • AR/VR衍射光波导性能提升遇阻?OAS光学软件有方法
  • 如何将当前文件夹及其子文件夹下的所有word提取到一个excel里
  • 新能源汽车充电桩:多元化运营模式助力低碳出行
  • CoinNexus Chain 推出泰利风暴,开启 Web3.0 智能金融元宇宙科技新时代
  • 数字空间与VR有什么关系?什么是数字空间?
  • 全能 Sui 技术栈,构建 Web3 的未来
  • Go语言之sync包 WaitGroup的使用和底层实现
  • NVIDIA 自动驾驶技术见解
  • 基于监督学习的图像分类系统优化
  • Oracle--PL/SQL编程
  • 蓝桥杯常考的找规律题