Mongodb分布式文件存储数据库

文章目录

一、MongoDB 简介

基本信息

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

特点

  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. 安装依赖

bash 复制代码
yum install libcurl openssl -y

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

bash 复制代码
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. 修改配置文件以及启动服务

bash 复制代码
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.数据库权限管理

javascript 复制代码
// 创建并切换数据库
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. 操作命令

用户管理命令
javascript 复制代码
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)
数据库相关
javascript 复制代码
// 切换/创建数据库
use "dbname";
// 查询所有数据库
show dbs;
// 查看当前使用的数据库
db.getName();
// 查看数据库版本
db.version();
// 查看当前 db 的链接地址
db.getMongo();
用户相关
javascript 复制代码
// 创建普通用户(创建用户 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 相关
javascript 复制代码
// 获得数据聚合(表)
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();
相关推荐
小陈工4 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
科技小花8 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸8 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain8 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希9 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神9 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员9 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java9 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿9 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴9 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存