前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB入门介绍

MongoDB入门介绍

作者头像
测试加
发布2022-12-03 11:40:57
7450
发布2022-12-03 11:40:57
举报

MongoDB介绍

Mongodb是一个高性能、开源、无模式的文档型数据库,使用C++开发,是当前Nosql数据库产品中最热门的一种。这 里说到nosql数据库,就简单描述一下什么是nosql。nosql(not only sql非关系型数据库)的主要特点是非关系型的、分布式、开源的、水平扩展的。nosql的原始目的是为了大规模web应用,通常应用如模式自由、支持简单复制、简单的API、最终的一致性和大容量数据等。

nosql的主要解决三个需求:

  • 对数据库高并发读写的需求,往往要达到每秒上万次读写请求。
  • 对海量数据的高效率存储和访问的需求,大型社交网站,一个月就能产生2.5亿条用户数据。
  • 对数据库的高可扩展性和高可用的需求。

MongoDB特点

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

  • 面向集合存储,易存储对象类型的数据。
  • 模式自由。
  • 支持动态查询。
  • 支持完全索引,包含内部对象。
  • 支持查询。
  • 支持复制和故障恢复。
  • 使用高效的二进制数据存储,包括大型对象(如视频等)。
  • 自动处理碎片,以支持云计算层次的扩展性。
  • 支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • 文件存储格式为BSON(一种JSON的扩展)。
  • 可通过网络访问。

MongoDB和MySQL的区别

如下图形象的介绍下MongoDB和MySQL的区别

MongoDB适用场合

网站数据、缓存、大尺寸、低价值的数据,高伸缩型的场景,用于对象以及json数据的存储。

适用场景如下:

  • 表结构不明确且数据不断变大 MongoDB是非结构化文档数据库,扩展字段很容易且不会影响原有数据。内容管理或者博客平台等,例如圈子系统,存储用户评论之类的。
  • 更高的写入负载 MongoDB侧重高数据写入的性能,而非事务安全,适合业务系统中有大量“低价值”数据的场景。本身存的就是json格式数据。例如做日志系统。
  • 数据量很大或者将来会变得很大 Mysql单表数据量达到5-10G时会出现明显的性能降级,需要做数据的水平和垂直拆分、库的拆分完成扩展,MongoDB内建了sharding、很多数据分片的特性,容易水平扩展,比较好的适应大数据量增长的需求。
  • 高可用性 自带高可用,自动主从切换(副本集)

不适用场景如下:

  • MongoDB不支持事务操作,需要用到事务的应用建议不用MongoDB。
  • MongoDB目前不支持join操作,需要复杂查询的应用也不建议使用MongoDB。

Docker搭建Mongodb

获取docker镜像

代码语言:javascript
复制
docker pull mongo

创建mongodb容器

代码语言:javascript
复制
docker run --name  my-mongo1 -v /data/mongo_local_data:/data/db --rm -p 27017:27017  -d mongo --auth

进入容器设置用户

代码语言:javascript
复制
docker exec -it 容器id /bin/bash

mongo
use admin
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})   //创建用户,此用户创建成功,则后续操作都需要用户认证
exit

或者直接进入admin

代码语言:javascript
复制
docker exec -it ly-mongo mongo admin

db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})   //创建用户,此用户创建成功,则后续操作都需要用户认证
exit

mongo shell

mongo shell是MongoDB的交互式JavaScript接口。您可以使用mongo shell查询和更新数据以及执行管理操作。mongo shell作为MongoDB Server安装的一部分包含在内。

查看mongodb shell的执行路径。

代码语言:javascript
复制
/usr/local/mongodb/bin/

启动mongo

代码语言:javascript
复制
./mongod

mongo的shell

代码语言:javascript
复制
./mongo

查看mongo内存

代码语言:javascript
复制
db.serverStatus().mem

释放硬盘

代码语言:javascript
复制
db.repairDatabase()

删除集合

代码语言:javascript
复制
db.api_info_models.drop()

设置内存

代码语言:javascript
复制
use admin
db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: 52428800})

增加索引

代码语言:javascript
复制
db.api_info_models.createIndex({"id":1})
db.monkey_info_models.createIndex({"create_time": -1});
db.monkey_info_models.getIndexes();
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试加 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB和MySQL的区别
    • 获取docker镜像
      • 创建mongodb容器
        • 进入容器设置用户
          • mongo shell
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档