MongoDB5.x简介及在centos7安装部署

简介: 🍅程序员小王的博客:程序员小王的博客🍅 欢迎点赞 👍 收藏 ⭐留言 📝🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕🍅java自学的学习路线:java自学的学习路线

一、mongoDB简介

1、mongoDB说明

(1)官方

官方文档地址:https://docs.mongodb.com/manual/


MongoDB是一个文档数据库,旨在方便应用开发和扩展。

(2)百度百科简介


MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展高性能数据存储解决方案。


MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型 。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。


总结: mongoDB 是一个非关系型文档数据库

2、mongodb历史

2009年2月,MongoDB数据库首次在数据库领域亮相,打破了关系型数据库一统天下的局面;


2010年8月, MongoDB 1.6发布。这个版本最大的一个功能就是Sharding,自动分片


2014年12月, MongoDB3.0发布。由于收购了WiredTiger 存储引擎,大幅提升了MongoDB的写入性能;


2015年12月,3.2版本发布,开始支持了关系型数据库的核心功能:关联。你可以一次同时查询多个MongoDB的集合。


2016年, MongoDB推出Atlas,在AWS、 Azure 和GCP上的MongoDB托管服务;


2017年10月,MongoDB成功在纳斯达克敲钟,成为26年来第一家以数据库产品为主要业务的上市公司。


2018年6月, MongoDB4.0 发布推出ACID事务支持,成为第一个支持强事务的NoSQL数据库;


2018年–至今,MongoDB已经从一个在数据库领域籍籍无名的“小透明”,变成了话题度和热度都很高的“流量”数据库。


3、特点

面向集合存储,易存储对象类型的数据


支持查询,以及动态查询


支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言


文件存储格式为BSON(一种JSON的扩展)


支持复制和故障恢复和分片


支持事务支持


索引 聚合 关联…


(1)高性能:

MongoDB提供高性能的数据持久性。特别是,


对嵌入式数据模型的支持减少了数据库系统上的I/O活动。


索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键。(文本索引解决搜索的需求、TTL索引解决历史数据自动过期的需求、地


理位置索引可用于构建各种 O2O 应用)


mmapv1、wiredtiger、mongorocks(rocksdb)、in-memory 等多引擎支持满足各种场景需求。


Gridfs解决文件存储的需求。


(2)高可用性:

MongoDB的复制工具称为副本集(replica set),它可提供自动故障转移和数据冗余。


(3)高扩展性:

MongoDB提供了水平可扩展性作为其核心功能的一部分。


分片将数据分布在一组集群的机器上。(海量数据存储,服务能力水平扩展)


从3.4开始,MongoDB支持基于片键创建数据区域。在一个平衡的集群中,MongoDB将一个区域所覆盖的读写只定向到该区域内的那些


片。


(4)丰富的查询支持:

MongoDB支持丰富的查询语言,支持读和写操作(CRUD),比如数据聚合、文本搜索和地理空间查询等。


(5)其他特点:

如无模式(动态模式)、灵活的文档模型、


4、应用场景

游戏应用:使用云数据库MongoDB作为游戏服务器的数据库存储用户信息。用户的游戏装备、积分等直接以内嵌文档的形式存储,方便进行查询与更新。


物流应用:使用云数据库MongoDB存储订单信息,订单状态在运送过程中会不断更新,以云数据库MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来,方便快捷且一目了然。


社交应用:使用云数据库MongoDB存储用户信息以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。并且,云数据库MongoDB非常适合用来存储聊天记录,因为它提供了非常丰富的查询,并在写入和读取方面都相对较快。


视频直播:使用云数据库MongoDB存储用户信息、礼物信息等。


大数据应用:使用云数据库MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。


这些应用场景中,数据操作方面的共同特点是:


(1)数据量大


(2)写入操作频繁(读写都很频繁)


(3)价值较低的数据,对事务性要求不高


对于这样的数据,我们更适合使用MongoDB来实现数据的存储。


5、什么时候选择MongoDB

在架构选型上,除了上述的三个特点外,如果你还犹豫是否要选择它?可以考虑以下的一些问题:


应用不需要事务及复杂 join 支持


新应用,需求会变,数据模型无法确定,想快速迭代开发


应用需要2000-3000以上的读写QPS(更高也可以)


应用需要TB甚至 PB 级别数据存储


应用发展迅速,需要能快速水平扩展


应用要求存储的数据不丢失


应用需要99.999%高可用


应用需要大量的地理位置查询、文本查询


如果上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MongoDB 绝不会后悔。


思考:如果用MySQL呢?

答:相对MySQL,可以以更低的成本解决问题(包括学习、开发、运维等成本)


6、MySQL和MongoDB对比

参考此图:


sql术语

image.png


7、数据模型

MongoDB的最小存储单位就是文档(document)对象。文档(document)对象对应于关系型数据库的行。数据在MongoDB中以BSON(Binary-JSON)文档的格式存储在磁盘上。BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称Binary JSON。BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。BSON采用了类似于 C 语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但它的缺点是空间利用率不是很理想。


Bson中,除了基本的JSON类型:string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括date,object id,binary data,regular expression 和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动的文档来获取详细信息。


BSON数据类型参考列表:



提示:


shell默认使用64位浮点型数值。{“x”:3.14}或{“x”:3}。对于整型值,可以使用NumberInt(4字节符号整数)或NumberLong(8字节符号整数),{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}


二、MongDB安装

(1)下载MongDB

下载地址:https://www.mongodb.com/try/download/community,我安装在linux上,5.X版本


注意:检查MongoDB的类型和操作系统类型是否一致


例如:操作系统为CentOS则下载platform为CentOS



也可以在linux直接下载:

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.4.tgz



  • 将下载安装包上传到 linux 系统解压缩
tar -zxvf  mongodb-linux-x86_64-rhel70-5.0.4.tgz



查看安装目录:ls

bin目录 用来存放启动mongoDB的服务以及客户端链接的脚本文件等



(2)启动 MongoDB 服务

 ./mongod --port=27017 --dbpath=../data --logpath=../logs/mongo.log
  `--port`    指定服务监听端口号 默认为 27017
  `--dbpath`  指定 mongodb 数据存放目录 启动要求目录必须存在
  `--logpath` 指定 mongodb 日志文件存放位置


注意: 由于指定日志文件因此启动时日志输出到日志中终端不显示任何日志


  • 注意:还有data,logs这两文件夹我们没有创建,需要提前创建
mkdir data
mkdir log



(3)客户端连接

./mongo --port=27017

相关文章
|
监控 前端开发 Linux
centos7系统安装部署zabbix5.0
【9月更文挑战第23天】在CentOS 7系统上部署Zabbix 5.0的步骤包括:安装MariaDB数据库及必要软件包,配置Zabbix仓库,设置数据库并导入Zabbix数据库架构,配置Zabbix服务器与前端参数,启动相关服务,并通过浏览器访问Web界面完成安装向导。
1516 0
|
Linux 应用服务中间件 nginx
在CentOS上部署Minikube教程
至此,您已成功在CentOS上部署并使用Minikube。您可以自由探索Kubernetes的世界,熟练配置和管理Kubernetes集群。
1128 20
|
JSON NoSQL Shell
MongoDB简介
MongoDB 是一款开源、高性能、无模式的文档型数据库,属于 NoSQL 产品,支持灵活的 BSON 数据格式,结构类似 JSON,适合存储复杂数据。它以文档为最小存储单位,具备高性能、高可用、高扩展性,支持丰富查询及多种数据类型,适用于大规模数据场景。
681 0
|
Oracle Java 关系型数据库
CentOS 7.6操作系统部署JDK实战案例
这篇文章介绍了在CentOS 7.6操作系统上通过多种方式部署JDK的详细步骤,包括使用yum安装openjdk、基于rpm包和二进制包安装Oracle JDK,并提供了配置环境变量的方法。
735 80
|
安全 关系型数据库 MySQL
CentOS7仅安装部署MySQL80客户端
通过上述步骤,你可以在CentOS 7上成功安装并配置MySQL 8.0客户端。这个过程确保你能够使用MySQL客户端工具连接和管理远程的MySQL数据库,而不需要在本地安装MySQL服务器。定期更新MySQL客户端可以确保你使用的是最新的功能和安全修复。
1547 16
|
存储 NoSQL 关系型数据库
微服务——MongoDB简介和体系结构
MongoDB是一种开源、高性能的文档型数据库,采用无模式设计,数据结构灵活,以类似JSON的BSON格式存储。它将记录作为文档,由字段和值对组成,支持复杂数据类型及嵌套结构。相比MySQL,MongoDB去除了传统表结构,使用集合(Collection)存储文档,适合处理非结构化和半结构化数据,简化开发并提升扩展性。其架构更灵活,适用于高并发和大数据场景。
677 0
|
JSON NoSQL 关系型数据库
MongoDB简介
MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。 它支持的数据结构非常松散,是一种类似于 JSON 的格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。 MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
3047 4
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
947 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
Oracle 关系型数据库 MySQL
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES