一、MongoDB 基础概念
什么是MongoDB
MongoDB 是面向文档的 NoSQL 数据库,用于大量数据存储。MongoDB 是一个在 2000 年代中期问世的数据库。属于 NoSQL 数据库的类别。
MongoDB功能
每个数据库都包含集合,而集合又包含文档。每个文档可以具有不同数量的字段。每个文档的大小和内容可以互不相同。文档结构更符合开发人员如何使用各自的编程语言构造其类和对象。开发人员经常会说他们的类不是行和列,而是具有键值对的清晰结构。从 NoSQL 数据库的简介中可以看出,行(或在MongoDB 中调用的文档)不需要预先定义架构。相反,可以动态创建字段。MongoDB 中可用的数据模型使我们可以更轻松地表示层次结构关系,存储数组和其他更复杂的结构。可伸缩性– MongoDB 环境具有很高的可伸缩性。全球各地的公司已经定义了自己的集群,其中一些集群运行着100多个节点,数据库中包含大约数百万个文档。
二、为什么使用MongoDB
以下是一些为什么应该开始使用MongoDB的原因
1、面向文档的–由于MongoDB是NoSQL类型的数据库,它不是以关系类型的格式存储数据,而是将数据存储在文档中。这使得MongoDB非常灵活,可以适应实际的业务环境和需求。
2、临时查询-MongoDB支持按字段、范围查询和正则表达式搜索。可以查询返回文档中的特定字段。
3、索引-可以创建索引以提高MongoDB中的搜索性能。MongoDB文档中的任何字段都可以建立索引。
4、复制-MongoDB可以提供副本集的高可用性。副本集由两个或多个mongo数据库实例组成。每个副本集成员可以随时充当主副本或辅助副本的角色。主副本是与客户端交互并执行所有读/写操作的主服务器。辅助副本使用内置复制维护主数据的副本。当主副本发生故障时,副本集将自动切换到辅助副本,然后它将成为主服务器。
5、负载平衡-MongoDB使用分片的概念,通过在多个MongoDB实例之间拆分数据来水平扩展。MongoDB可以在多台服务器上运行,以平衡负载或复制数据,以便在硬件出现故障时保持系统正常运行。
三、MongoDB常用术语
下面是MongoDB中使用的一些常用术语
1、_id – 这是每个MongoDB文档中必填的字段。_id字段表示MongoDB文档中的唯一值。_id字段类似于文档的主键。如果创建的新文档中没有_id字段,MongoDB将自动创建该字段。
2、集合 – 这是MongoDB文档的分组。集合等效于在任何其他RDMS(例如Oracle或MS SQL)中创建的表。集合存在于单个数据库中。从介绍中可以看出,集合不强制执行任何结构。
3、游标 – 这是指向查询结果集的指针。客户可以遍历游标以检索结果。
4、数据库 – 这是像RDMS中那样的集合容器,其中是表的容器。每个数据库在文件系统上都有其自己的文件集。MongoDB服务器可以存储多个数据库。
5、文档 - MongoDB集合中的记录基本上称为文档。文档包含字段名称和值。
6、字段 - 文档中的名称/值对。一个文档具有零个或多个字段。字段类似于关系数据库中的列。
四、一键安装脚本
#!/bin/bash
echo -e "\e[31m*******开始安装********\e[0m"
echo -e "输入安装版本,如\e[31m4.4.44\e[0m"
read version
find / -name mongo | xargs rm -rf
port=$(netstat -antup|grep mongo|wc -l)
if [ $port != 0 ]
then echo "mongo进程存在,请先杀掉进程"
ps -ef |grep mongo
exit 1
fi
cd /usr/local/
mkdir mongodb
tar -zxvf mongodb-linux-x86_64-rhel70-$version.tgz
cd /usr/local/mongodb/
mkdir data
mkdir logs
cd ./logs
touch mongodb.log
cd ../
mkdir etc
cd etc
touch mongodb.conf
cat <<EOF >>mongodb.conf
#数据库路径
dbpath=/usr/local/mongodb/data
#日志输出文件路径
logpath=/usr/local/mongodb/logs/mongodb.log
#错误日志采用追加模式
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#端口号 默认为27017
port=27017
#允许远程访问
bind_ip=0.0.0.0
#开启子进程
fork=true
#开启认证,必选先添加用户,先不开启(不用验证账号密码)
#auth=true
EOF
cat <<EOF >>/etc/profile
export PATH=$PATH:/usr/local/mongodb/mongodb-linux-x86_64-rhel70-$version/bin
EOF
source /etc/profile
cd /usr/local/mongodb-linux-x86_64-rhel70-$version/bin/
./mongod --config /usr/local/mongodb/etc/mongodb.conf
netstat -lanp | grep "27017"