做餐厅网站的需求分析报告,重庆最近新闻大事件,科技微网站,如何在建设厅网站搜索企业目录
介绍
体系结构
数据模型
BSON
BSON 数据类型
特点
高性能
高可用
高扩展
丰富的查询支持
其他特点
部署
单机部署
普通安装
脚本安装
Docker Compose 安装
卸载
停止 MongoDB
删除包
删除数据目录 参考#xff1a; https://docs.mongoing.com/
介绍…目录
介绍
体系结构
数据模型
BSON
BSON 数据类型
特点
高性能
高可用
高扩展
丰富的查询支持
其他特点
部署
单机部署
普通安装
脚本安装
Docker Compose 安装
卸载
停止 MongoDB
删除包
删除数据目录 参考 https://docs.mongoing.com/
介绍
Mongodb 是一个开源的高性能五模式的文档行数据库当初的设计就是用于简化开发和方便扩展是 NoSQL 数据库产品中的一种。是最像关系型数据库 MYSQL 的非关系型和数据库
它支持的数据结构非常松散是一种类似于 JSON 的格式叫做 BSON 所以它既可以存储比较复杂的数据类型又相对灵活
Mongodb 中的记录是一个文档它是一个由字段和值组成的数据结构简称键值对结构Mongodb 文档类似于 JSON 对象即一个文档认为是一个对象字段的数据类型是字符型它的值除了使用基本的一些类型以外还可以包括其他文档普通数组和文档数组
体系结构 SQL 术语MongoDB 术语说明databasedatabase数据库tablecollection数据库表 / 集合rowdocument数据记录行 / 文档columnfield数据记录列 / 域indexindex索引table joins联表嵌入文档Mongodb 通过嵌入文档来替换多表连接primary keyprimary key主键Mongodb 会自动将 id 设置为主键
数据模型
Mongodb 的最小单位就是文档document对象文档对象对应关系型数据库的行数据在 Mongodb 中以 BSON 格式存储数据在磁盘上
BSON
BSON (Binary Serialized Document Format) 是一种类似 json 的一种二进制形式的存储简称 Binary JSON BSON 和 JSON 一样支持嵌套文档对象和数组对象但是 BSON 还多出一些数据类型比如Date 和 BinD艾特类型
BSON 采用了类似 C 语言结构体的名称对表示方法支持内嵌的文档对象和数组对象具有轻量性可遍历性高效性三个特点可以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高但是它的缺点是空间利用率不是很理想
BSON 中除了基本的 JSON 类型 String Integer Boolean , Double , Null , Array 和 Object 。mongo 还使用了特殊的数据类型这些类型包括 data object idbinary data regularexpression 和 code 。 每一个驱动都以特定的语言方式实现了这些类型查看你的驱动的文档来获取详细信息
BSON 数据类型
数据类型描述举例stringUTF-8 字符串都可以表示为字符串类型的数据{“X”:foober}object id对象 id 是文档的 12 字节的唯一 id{X:ObjectId()}booleantrue / false{X:true}array值的集合或者列表可以表示成数组{“X”:[a,b,c]}32位整数类型不可用。js仅支持 64 位浮点数所以该整数会被自动转换shell 也不支持shell 会默认将其转换成 64 位64位整数不支持这个类型js 仅支持 64 位浮点型shell 会使用一个特殊的内嵌文档来显示 64 位整数和上述一致64位浮点型shell 中的数字就是这种类型{“X”:3.1415926,y:3}null表示空值或者未定义的对象{“x”:null}undefined文档中也可以使用未定义类型{“x”:undefined}符号shell 不支持自动转换成字符型正则表达式使用的是 js 的正则表达式规则{“x”:/doober/i}代码文档中还可以包含 js 代码{“x”: function}二进制数据二进制数据可以由任意字节组成不过 shell 无法支持最大/最小值BSON 包含一个特殊的数据类型表示可能的最大/最小值但是 shell 没有这个类型
shell 默认使用 64 位浮点型数值。对于整型可以使用 Numberlnt 4 字节符号整数或者 NumberLong 8字节长整型
特点
高性能
Mongodb 提供高性能的数据持久化特别是对嵌入式数据模型的支持减少了数据系统上的 I/O 活动
索引支 持更快的查询并且可以包括孩子嵌入式文档和数据的键。文本索引解决搜索的需求TTL 索引解决历史数据自动过期的需求地理位置索引可用于构建各种 O2O 应用
mmapv1 , wiredtiger . mongorocks (rocksdb) , in-memory 等多引擎支持满足各种场景需求
Gridfs 解决文件存储需求
高可用
Mongodb 的复制工具称为副本集 ( replica set ) , 它可以提供自动故障转移和数据冗余
高扩展
Mongodb 提供了水平可扩展性作为其核心功能的一部分
分片将数据分布在一组集群的机器上。 海量数据存储服务能力水平扩展
从 3.4 开始Mongodb 支持基于**片键**创建数据区域。在一个平衡的集群中MongoDB 将一个区域多覆盖的读写只定向到该区域内的那些片
丰富的查询支持
Mongodb 支持丰富的查询语言支持读写操作CRUD比如数据聚合文本搜索和地理空间查询等
其他特点
如无模式动态模式灵活的文档模型
部署
参考 在 Ubuntu 上安装 MongoDB Community Edition - MongoDB 手册 v7.0
单机部署
普通安装
MongoDB 仅支持这些平台的 64 位版本。要确定您的主机当前正在运行的 Ubuntu 版本请在主机的终端上运行以下命令 rootslave03:~# cat /etc/lsb-releaseDISTRIB_IDUbuntuDISTRIB_RELEASE22.04DISTRIB_CODENAMEjammyDISTRIB_DESCRIPTIONUbuntu 22.04.4 LTS
导入公钥 sudo apt-get install gnupg curl
要导入 MongoDB 公共 GPG 密钥请运行以下命令
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \--dearmor#
创建列表文件
为您的 Ubuntu 版本创建列表文件 /etc/apt/sources.list.d/mongodb-org-7.0.list。
echo deb [ archamd64,arm64 signed-by/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
重新加载包数据库 sudo apt-get update
安装 MongoDB Community Server集群部署 sudo apt-get install -y mongodb-org
如果通过软件包管理器安装则在安装过程中会创建数据目录 /var/lib/mongodb 和日志目录 /var/log/mongodb。
默认情况下MongoDB 使用 mongodb 用户账户运行。如果更改运行 MongoDB 进程的用户您还必须修改数据和日志目录以赋予该用户访问这些目录的权限。
配置文件
目录/etc/mongod.conf
启动 MongoDB。
sudo systemctl start mongod
如果收到类似下方的错误
Failed to start mongod.service: Unit mongod.service not found.
首先运行以下命令 sudo systemctl daemon-reload
再次启动
验证 MongoDB 是否已成功启动。 sudo systemctl status mongod
开机自启动 sudo systemctl enable mongod
开始使用 MongoDB
默认端口号为 27017 mongosh
退出exit
附赠一篇脚本
注意脚本安装只限于 Ubuntu22.04 以及 CentOS8
脚本安装
#!/bin/bash
#### Author: huangqian# Date: 2024-09-30 17:18:03# LastEditors: huangqian # LastEditTime: 2024-09-30 19:05:12# FilePath: \shellProject\数据库\mongodb_setup.sh# Description: 这是默认设置,请设置customMade, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
### # define Color
RED\033[0;31m
GREEN\033[0;32m
YELLOW\033[1;33m
NC\033[0m # null Color# logs function
log() {echo -e $1 $YELLOW $(date %F %T) $NC - $2 | tee -a /var/log/mongodb_setup.log | sed s/\x1b\[[0-9;]*m//g
}# Server status function
Server_Status(){if [[ $? -ne 0 ]]; thenlog $RED [ERROR] $NC $RED $1 faild $NCexit 1;elselog $GREEN [SUCCESS] $NC $GREEN $1 success $NCfi
}# Ubuntu install mongodb function
Ubuntu_setup(){apt-get install gnupg curlServer_Status Gnupg and curl download# import MongoDB GPGcurl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmorServer_Status Import MongoDB GPG# Create /etc/apt/sources.list.d/mongodb-org-7.0.listecho deb [ archamd64,arm64 signed-by/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.listServer_Status Create mongodb-org-7.0.list# Update aptapt-get updateServer_Status Update apt# Install MongoDB Community Serverapt-get install -y mongodb-orgServer_Status Install mongodb-orgsystemctl daemon-reload
}# Centos install mongodb function
CentOS_setup(){cat /etc/yum.repos.d/mongodb-org-7.0.repo EOF
[mongodb-org-7.0]
nameMongoDB Repository
baseurlhttps://repo.mongodb.org/yum/redhat/8/mongodb-org/7.0/x86_64/
gpgcheck1
enabled1
gpgkeyhttps://pgp.mongodb.com/server-7.0.asc
EOFServer_Status mongodb-org-7.0.repo configurationyum install -y mongodb-orgServer_Status Install mongodb-orgyum install -y mongodb-org-7.0.14 mongodb-org-database-7.0.14 mongodb-org-server-7.0.14 mongodb-mongosh-7.0.14 mongodb-org-mongos-7.0.14 mongodb-org-tools-7.0.14Server_Status Install MongoDB related softword package# Auto Update softword packageexcludemongodb-org,mongodb-org-database,mongodb-org-server,mongodb-mongosh,mongodb-org-mongos,mongodb-org-toolsServer_Status Auto Update softword packagechown -R mongod:mongod /var/log/mongodb# Install SELinux strategyyum install git make checkpolicy policycoreutils selinux-policy-develServer_Status Install SELinux strategywhich gitif [ $? -eq 0 ];thengit clone https://github.com/mongodb/mongodb-selinuxServer_Status SELinux strategy clonecd mongodb-selinuxmake make installServer_Status make make installelselog $RED [ERROR] $NC git uninstall or not configuration PATHfi
}info(){echo $GREEN Enter [ systemctl start mongod ] start MongoDB $NCecho $GREEN Enter [ systemctl status mongod ] check status MongoDB $NCecho $GREEN Enter [ systemctl enable mongod ] starting Up start MongoDB $NCecho $GREEN Check MongoDB logs [ cat /var/log/mongodb_setup.log ] $NC
}# Confirm system version
SysVersion(){local SYSTEM_VERSION$(cat /etc/lsb-release | awk NR2);if [[ $SYSTEM_VERSION DISTRIB_RELEASE22.04 ]];then# Start installlog $YELLOW [INFO] $NC $YELLOW Ubuntu install ... $NCUbuntu_setupelselog $YELLOW [INFO] $NC $YELLOW CentOS install ... $NCCentOS_setupfi
}main(){SysVersioninfo
}main
Docker Compose 安装
创建数据目录 mkdir -p /root/mongo/data
docker-compose.yml
services:mongodb:container_name: mymongoimage: mongo:latestrestart: alwaysports:- 27017:27017environment:- MONGO_INITDB_ROOT_USERNAMEroot- MONGO_INITDB_ROOT_PASSWORDrootvolumes:- /root/mongo/data:/data/dbcommand:- --auth
启动 docker compose up -d
后续的使用和上诉安装之后是一致的
卸载
docker 版本的如何卸载不用过多赘述
停止 MongoDB
sudo service mongod stop
删除包
sudo apt-get purge mongodb-org*
删除数据目录
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
有关副本集群的搭建请跳转至链接https://blog.csdn.net/qq_62866151/article/details/142671701?sharetypeblogdetailsharerId142671701sharereferPCsharesourceqq_62866151spm1011.2480.3001.8118