MongoDB 使用介绍

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介: MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的非关系型开源数据库系统。其优势在于可以存放海量数据,具备强大的查询功能,是一个独立的面向集合文档形式的。

MongoDB 使用介绍



一、MongoDB 简介


1.MongoDB 特点

2.MongoDB 适用场景

3.MongoDB 存储结构

4.MongoDB 数据类型


二、部署 MongoDB 数据库应用


1.准备系统环境

2.安装 MongoDB

3.创建 MongoDB 存储目录以及配置文件

4.编写服务启动脚本


一、MongoDB 简介



MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的非关系型开源数据库系统。其优势在于可以存放海量数据,具备强大的查询功能,是一个独立的面向集合文档形式的。


  • 应用平台:MongoDB 支持 Unix Linux Windows 等系统平台。


MySQL 与 MongoDB 区别:


image.png


1.MongoDB 特点


存储性:


  • 面向集合:数据被分组存储在数据集中,被称为一个集合。
  • 面向文档:存储在集合中的文档,被存储为键值对的形式。
  • 高效二进制数据存储:使用二进制格式存储,可以保存任何类型的数据对象。


操作性:


  • 完全索引:可以在任意属性上建立索引,包含内部对象。以提高查询的速度。
  • 强大的聚合工具:MongoDB 除了提供丰富的查询功能外,还提供了强大的聚合工具,如 count group 等。
  • 支持 Perl PHP Java C# JavaScript Ruby Python C 和 C++ 语言的驱动程序。


可用性:


  • 支持复制和数据恢复:MongoDB 支持主从复制机制,可以实现数据的备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。
  • 自动处理分片:MongoDB 支持集群自动切分数据,对数据进行切分可以使用集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡。


2.MongoDB 适用场景


  • 网站实时数据处理:它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高伸缩性。
  • 缓存:它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。
  • 高伸缩性的场景:非常适合由数十台或数百台服务器组成的数据库。


不适用于的场景如下:


  • 要求高度事务性的系统(例如:银行和会计系统)
  • 传统的商业只能应用。
  • 复杂的跨文档(表)级联查询。


3.MongoDB 存储结构


逻辑结构:


  • 文档 document:存放的数据。
  • 集合 collection:由多个文档组成,相当于表,但不同的是集合是无固定架构。
  • 数据库 database:多个集合组成的数据库。


物理结构:


  • .wt 文件:每个表或索引对应一个命名空间,数据量增加,文件数量增多,存储了分配和正在使用的磁盘空间。
  • 数据文件:存放数据的实体,并且使用预分配空间机制。
  • 日志文件:系统日志文件、journal 日志文件(用于 MongoDB 崩溃恢复的保障)、oplog 复制操作日志文件(相当于 MySQL 的 BinLog 文件)、慢查询日志(查询操作超出指定时间的语句)
  • 物理结构就是真正存放数据的位置。


4.MongoDB 数据类型


image.png


二、部署 MongoDB 数据库应用



image.png


1.准备系统环境


[root@MongoDB ~]# ulimit -n 65535                 # 同一时间最多开启的文件数
[root@MongoDB ~]# ulimit -u 65535                 # 用户最多开启的程序数量
[root@MongoDB ~]# echo 0 > /proc/sys/vm/zone_reclaim_mode     # 配置内核参数. 当某个节点内存不足时可以借用其它节点的内存
[root@MongoDB ~]# sysctl -w vm.zone_reclaim_mode=0
vm.zone_reclaim_mode = 0
[root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag


因为下面安装的版本为 4.4.5,而 MongoDB 4 版本以上的 /bin 目录中的工具进行了分离,所以需要安装:传送门


image.png


[root@MongoDB ~]# wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.3.1.tgz
[root@MongoDB ~]# tar xf mongodb-database-tools-rhel70-x86_64-100.3.1.tgz 


2.安装 MongoDB


[root@MongoDB ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.5.tgz
[root@MongoDB ~]# tar xf mongodb-linux-x86_64-rhel70-4.4.5.tgz
[root@MongoDB ~]# mv mongodb-linux-x86_64-rhel70-4.4.5 /usr/local/mongodb
[root@MongoDB ~]# mv mongodb-database-tools-rhel70-x86_64-100.3.1/bin/* /usr/local/mongodb/bin/
[root@MongoDB ~]# echo "export PATH=/usr/local/mongodb/bin:\$PATH" >> /etc/profile
[root@MongoDB ~]# source /etc/profile


3.创建 MongoDB 存储目录以及配置文件


[root@MongoDB ~]# mkdir /usr/local/mongodb/{data,logs,conf}
[root@MongoDB ~]# cat <<END > /usr/local/mongodb/conf/mongodb.conf
bind_ip=192.168.1.1
port=27017
dbpath=/usr/local/mongodb/data/
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true                                  # 日志以文件追加的方式写入
fork=true                                   # 通过后台运行 MongoDB 服务
maxConns=5000                                 # MongoDB 最大连接数
END


4.编写服务启动脚本


[root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf        # 启动 MongoDB 服务
[root@MongoDB ~]# mongo 192.168.1.1:27017                   # 登录验证
[root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown   # 关闭 MongoDB 服务
[root@MongoDB ~]# vim /etc/init.d/mongodb
#!/bin/bash
case "$1" in
start)
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;;
stop)
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown;;
restart)
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;;
esac
[root@MongoDB ~]# chmod +x /etc/init.d/mongodb
[root@MongoDB ~]# /etc/init.d/mongodb start                   # 启动


登录验证


[root@MongoDB ~]# mongo 192.168.1.1:27017                   # 登录 MongoDB 数据库 (默认在 test 库中)
> show databases          # 查看数据库中所有库
admin   0.000GB
config  0.000GB
local   0.000GB
> db.getName()            # 查看当前登录库
test


MongoDB 安装完后的默认 4 个库:


  • admin:存放了有关数据库账号的相关信息。
  • config:用于分片集群环境,存放分片相关的元数据信息。
  • local:主要存储副本集的配置信息、oplog 信息(因为这些信息每个 MongoDB 都是独有的,所以配置集群时,并不会同步该库)
  • test:MongoDB 默认创建的一个测试库,连接 MongoDB 服务时,如果不指定连接的具体数据库,默认就会连接到 test 库。
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
NoSQL JavaScript MongoDB
MongoDB
【10月更文挑战第28天】
37 2
|
3月前
|
存储 NoSQL 物联网
MongoDB在哪些领域有应用?
MongoDB在哪些领域有应用?
78 3
|
2月前
|
存储 分布式计算 NoSQL
什么是 MongoDB ?
10月更文挑战第10天
20 0
|
3月前
|
存储 监控 NoSQL
MongoDB介绍
MongoDB介绍
62 1
|
存储 NoSQL 关系型数据库
什么时候选择MongoDB
什么时候选择MongoDB
94 2
|
存储
MongoDB-片键选择技巧
使用分片的目的是为了将数据存储到不同的服务器上, 所以在选择片键的时候,应该选择取值范围更广的字段作为片键,因为如果取值范围太小, 那么划分出来的数据段就太少, 那么分配到不同服务器的概率就越小, 例如:取值如果只有 true 或 false, 那么就只能划分出两个数据段, 那么也就最多只能保存到两台服务器上。
89 0
|
NoSQL JavaScript 关系型数据库
MongoDB使用实际很简单
MongoDB是个文档型数据库,虽然前有CouchDB夹击,后有MySQL 8.x文档支持的追赶,但是丝毫不影响它在市场中占据的份额。
|
NoSQL JavaScript Java
MongoDB资料大全
为了帮助大家进一步了解MongoDB,云栖社区组织翻译了GitHub Awesome MongoDB 资源,涵盖MongoDB中常见的库与工具、应用列表、以及相关的文档、教程等资源。
43484 0
|
存储 缓存 NoSQL
初探MongoDB
MongoDB 日志 存储引擎
1337 0
|
NoSQL MongoDB 索引
mongodb的限制
知道一个产品的限制所在,就可以更好的使用它。目前已知的mongodb限制如下: BSON Document Size:最大为16M 数据库:大小写敏感、数据库名称必须少于64个字符 集合名称不能包含如下信息:contain the $.
2307 0
下一篇
DataWorks