企业架构NOSQL数据库之MongoDB

举报
tea_year 发表于 2025/02/28 22:29:39 2025/02/28
31 0 0
【摘要】 MongoDB是一款流行的NoSQL数据库,以其灵活的文档模型、高性能和易扩展性而受到广泛关注。以下是一些常用的MongoDB命令及其功能。 华为云对MongoDB的支持主要体现在以下几个方面: 提供DDS服务:华为云的文档数据库服务DDS完全兼容MongoDB协议,提供一键部署、弹性扩容、容灾、备份、恢复、监控等服务能力。支持分片集群(Sharding)、副本集(ReplicaSet)

学习目标和内容

能够简单描述MongoDB的使用特点

能够安装配置启动MongoDB

能够使用命令行客户端简单操作MongoDB

能够实现基本的数据操作

能够实现MongoDB基本安全设置

能够操作安装php的MongoDB扩展

一、背景描述及其方案设计

业务背景描述

时间:2024.6.-2024.9

发布产品类型:互联网动态站点 商城

⽤户数量: 10000-12000(⽤户量猛增)

PV : 1000000-5000000(24小时访问次数总和)

QPS: 50-100*(每秒访问次数) 300

DAU: 2000~*000(每日活跃用户数)

根据业务需求:

用户访问日志是在web服务器access.log存储

统计每日访问量,峰值访问量

把每次访问存储到mongodb中,mongodb用来筛选日志

模拟运维设计方案

根据以上业务需求,采用mongodb数据库存储用户的访问日志,使用单台服务器

①访问日志存储

②在mongo中筛选查看信息

Mongodb介绍

nosql介绍

数据库排名:https://db-engines.com/en/ranking

关系数据库 RDBMS 设计表结构,通过SQL语句进行操作。连表关系

常见的关系型数据库:mysql oracle(商业) DB2(IBM) sqlserver(微软) access(微软) sqlite3(小型 嵌入到APP中) postgresql(加州伯克利大学)

nosql 泛指非关系数据库 存储格式key=>value

memcached redis 内存缓存数据库

mongodb 具有更多的功能,可以适用于大部分的mysql场景 document store 文档型数据库

2、产品特点

2.1、存储性

比较适合存储大量的没有规则无序的数据。

存储量大:单表实现存储PB级别的数据

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

1EB (Exabyte 百亿亿字节 艾字节)=1024PB,

1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024EB,

1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024ZB,

2.2、效率性

数据的效率,就是指存储和读写速度。

2.3、结构

三、安装和配置

1、安装方式介绍

yum方式安装:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

手动通用安装:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-linux/

2、二进制可执行安装

①上传安装包到服务器目录

②解压到安装目录 并移动

shell > tar xvf mongodb-linux-x86_64-rhel62-3.6.5.tgz

shell > mv mongodb-linux-x86_64-rhel62-3.6.5 /usr/local/mongodb

③创建数据存储目录和日志目录

shell > cd /usr/local/mongodb

shell > mkdir data

shell > mkdir logs

④启动mongod服务

shell > cd /usr/local/mongodb/bin

shell > ./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/log.txt --fork

参数介绍:

dbpath 数据存储路径

logpath 日志存储路径

fork 后台启动

auth 权限开启

bind_ip 指定绑定网卡ip

命令行客户端操作

四、数据结构类型操作 CURD

1、添加数据

mongodb里存储数据的格式文档形式,以bson格式的文档形式。

在mongodb中,可有无需创建数据库和集合,使用的时候会自动创建

创建一个库devops

语法:

db.集合名称.insert(bson格式数据)

1.1、普通数据添加

db.goods.insert({name:'huawei01',price:1000,weight:135,number:35})

1.2、多维数据对象添加

db.goods.insert({name:'xiaomi5',price:1999,weight:156,number:45,area:{province:'beijing',city:'beijing'}})

1.3、数组信息添加

db.goods.insert({name:'xiaomimax',price:2000,weight:180,number:100,area:{province:'henan',city:'zhengzhou'},color:['black','white','red']})

查询数据

语法:db.集合名称.find(查询条件)

findOne(查询条件)

2.1、笼统方式查询

不进行条件限制,全部取出来。

findOne会取出符合结果的第一条信息,并且以格式化形式返回

2.2、条件限制查询

条件格式,所见及所得

db.goods.find({name:'xiaomimax'})

db.goods.findOne({name:'xiaomimax'})

2.3、范围条件查询

mysql < <= > >= !=

mongo $lt $lte $gt $gte $ne

db.goods.find({price:{'$lte':1999}})

db.goods.find({price:{'$lt':1999}})

2.4、多个条件查询

类似mysql中的AND语法

db.goods.find({price:{'$lte':1999},number:{'$gte':40}})

2.5、多维字段查询

通过多维字段的值进行查询

db.goods.find({'area.city':'zhengzhou'});

注意:多维字段需要用引号包含起来

2.6、数组条件查询

①查询满足其中之一即可显示

db.goods.find({color:'black'})

②满足查询条件所有的才可显示

db.集合名称.find({字段(数组):{‘$all’:[v1,v2]}})

db.goods.insert({name:'iphonex',price:8398,weight:100,number:200,area:{province:'jiangsu',city:'nanjing'},color:['gray','black','white','gold']})

db.goods.find({color:{'$all':['black','gold']}})

2.7、限制查询字段

在实际使用环境,不需要查询并显示太多的字段。可以选择设定显示。

语法:db.集合名称.find({查询条件},{筛选条件})

显示为1,不显示为0 要是1都是1,要是0都是0 _id除外

db.goods.find({color:{'$all':['black','gold']}},{name:1,_id:0})

注意采用合适的方式,显示出查询字段值内容

_id是mongodb数据库里的集合中,默认的主键id,具有索引内容,通过主键查询,会很快的查询速度。不要随意修改此值,使用默认即可。

2.8、$or查询

满足其中之一的条件就可以显示,类似mysql的中的or条件语法

select * from goods where price > 5000 or number >= 100

db.goods.find({'$or':[{price:{'$gt':5000}},{number:{'$gte':100}}]})

2.9、count 语法

返回结果的数量统计

链式操作

db.goods.count()

db.goods.find({price:{'$gt':5000}}).count()

db.goods.count({price:{'$gt':5000}})

2.10、limit语法 skip语法

类似于mysql中的limit(skip,length)语法

limit() 取几个

skip() 跳过几个

db.goods.find().limit(1);

db.goods.find().skip(1).limit(1);

mongodb语法和SQL语句的对比

修改数据

语法:db.集合名称.update({查询条件},{修改条件})

updateOne() 修改匹配的第一条

updateMany() 修改匹配所有条

总结

MongoDB是一款流行的NoSQL数据库,以其灵活的文档模型、高性能和易扩展性而受到广泛关注。以下是一些常用的MongoDB命令及其功能。

华为云对MongoDB的支持主要体现在以下几个方面:

  1. 提供DDS服务:华为云的文档数据库服务DDS完全兼容MongoDB协议,提供一键部署、弹性扩容、容灾、备份、恢复、监控等服务能力。支持分片集群(Sharding)、副本集(ReplicaSet)、单节点(Single)三种部署架构,具有高性能、高可用性、高安全性和可弹性伸缩的特点

  2. 推出GeminiDB Mongo接口:基于华为自研的计算存储分离架构,兼容MongoDB生态的云原生NoSQL文档数据库。可以快速灵活添加计算节点以应对高并发场景,提供一键部署、快速备份恢复、计算存储独立扩容、监控告警等服务能力

  3. 镜像环境支持:华为云云商店Websoft9提供的MongoDB镜像环境,基于Docker架构部署,订阅可获得升级、变更、维护、救援等免费的技术支持服务

  4. 解决方案支持:华为云提供在云服务器上轻松搭建基于副本集的高可用MongoDB集群的解决方案,帮助用户实现一键部署、跨可用区部署、自动故障恢复等功能

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。