MongoDB 数据库介绍及安装

NoSQL 介绍

MongoDB 是一款 NoSQL(Not Only SQL) 数据库,意思是"不仅仅是 SQL",指的是非关系型数据库,是对不同与传统的关系型数据库的数据管理系统的统称。
NoSQL 用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

为什么使用 NoSQL

    随着数据日益增多,从 GBTBPB。这些数据有很大一部分是由关系型数据库管理系统(RBAMS)来进行处理的。
    由于关系型数据库的规范约束、事务特性、磁盘 IO 等特性,若服务器使用关系型数据库,当有大量数据产生时,传统的关系型数据库已经无法满足快速查询与插入的需求。NoSQL 的出现解决了这一危机。它通过降低数据的安全性,减少对事物的支持,减少对复杂查询的支持,获取性能上的提升。但是,在某些特定场景下,关系型数据库仍然是最佳人选,比如一些绝对要有事物与安全指标的场景。
    NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至 2009 年趋势愈发高涨。NoSQL 的拥护者们提倡运用非关系型的数据库存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是全新的思维注入

RBBMS vs NoSQL

MongoDB 数据库

NoSQL 数据库四大家族

键值(key-value)存储

特点:键值数据库就像传统语言中使用的哈希表,通过 key 添加、查询活着删除数据
优点:查询速度快
缺点:数据无结构化,通常只被当作字符串或者二进制数据存储
应用场景:内容缓存、用户信息比如会话、配置信息、购物车等,主要用于处理大量数据的高访问负载
NoSQL代表:Redis、Memcached...

文档(Document-Oriented)存储

特点:文档数据库将数据以文档的形式存储,类似 JSON,是一系列数据项的集合,每个数据都有一个名称与之对应的值,值既可以是简单的数据类型,比如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。
优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。
缺点:查询性能不高,缺乏统一的查询与法
应用:日志、Web应用等
NoSQL代表:MongoDB、CounchDB

列族(Wide Column Store/Column-Family)存储

特点:列存储数据库将数据存储在列族(Column Family)中,将多个列聚合成一个列族,键仍然存在,但是他们的特点是指向了多个列。举个例子,如果我们有一个 Person 类,我们通常会一起查询他们的姓名和年龄,而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中而薪资则在另一个列族中。
优点:列存储查找速度快,可拓展强,更容易进行分布式拓展,适用于分布式系统,应对分布式存储的海量数据。
缺点:查询性能不高,缺乏统一的查询语法
应用场景:日志、分布式的文件系统(对象存储)、推荐画像、时空数据、消息/订单等。
NoSQL代表:Cassandra、HBase...

图形(Graph-Oriented)存储

特点:图形数据库允许我们将数据以图形方式存储。
优点:图形相关算法。比如最短路径寻址,N 度关系查找等
缺点:很多时候需要对整个图做计算才能得出需要信息,分布式的集群方案不好做,处理超级节点乏力,没有分片存储机制,国内社区不活跃。
应用场景:社交网络、推荐系统等。专注于构建关系图谱。
NoSQL代表:Neo4j、Infinite Graph...

NoSQL 优缺点

优点

  • 高可扩展性
  • 没有标准化
  • 分布式计算
  • 有限的查询功能 (到目前为止)
  • 低成本

缺点

  • 最终一致时不直观的程序
  • 架构的灵活性,半结构化数据
  • 没有复杂的关系

总结

NoSQL 数据库在一以下几种情况下比较适用:

  • 数据模型比较简单
  • 需要灵活性更强的 IT 系统
  • 对数据库性能要求较高
  • 不需要高强度的数据一致性
  • 对于给定的 Key,比较容易映射复杂值的环境

MongoDB 简介

Mongo 源于 Humongous(巨大的;庞大的)一词。
MongoDB 是一个基于分布式文件存储的 NoSQL 数据库。由 C++ 语言编写。旨在为 WEB 应用提供可拓展的高性能数据存储解决方案。
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。

MongoDB 数据库

MongoDB 与关系型数据库术语对比

MongoDB 数据库

MongoDB 数据类型

MongoDB 数据库

下载与安装

可以通过 https://docs.mongodb.com/manual/installation/ 确认该版本软件是否支持你的操作系统

MongoDB 下载地址

MongoDB 数据库

下载完后进行解压配置环境变量

# 解压
$ tar -zxvf mongodb-linux-x86_64-ubuntu1804-5.0.1.tgz -C /opt
# 重命名文件夹
$ mv mongodb-linux-x86_64-ubuntu1804-5.0.1 mongodb
# 配置环境变量
$ vim /etc/profile
export MONGODB_HOME=/opt/mongodb
export PATH=$PATH:$MONGODB_HOME/bin

创建数据/日志目录

# 创建存放数据的目录
mkdir -p /opt/mongodb/data/db
# 创建存放日志的目录
mkdir -p /opt/mongodb/logs
# 创建日志记录文件
touch /opt/mongodb/logs/mongodb.log

启动 MongoDB

前台启动

MongoDB 的默认启动方式为前台启动。所谓的前台启动就是 MongoDB 启动进程会占用当前终端窗口

# 切换至指定目录
$ mongod --dbpath /opt/mongodb/data/db/ --logpath /opt/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0
  • --dbpath:指定数据文件存放目录
  • --logpath:指定日志文件,注意是指定文件不是目录
  • --logappend:使用追加方式记录日志
  • --port:指定端口,默认为27017
  • --bind_ip:绑定服务 IP,若绑定 127.0.0.1,则只能本机访问,默认为本机地址

注意:

启动时可能会出现以下问题
mongod: error while loading shared libraries: libcurl.so.4: cannot open shar

sudo apt update
sudo apt install libcurl4-openssl-dev
sudo apt install curl

后台启动

所谓后台启动就是以守护进程的方式启动 MongoDB。命令中添加 --fork即可

$ mongod --dbpath /opt/mongodb/data/db/ --logpath /opt/mongodb/logs/mongodb.log --logappend --port=27017 --bind_ip 0.0.0.0 --fork

结束服务只需要在上面命令下加上--shutdown

配置文件

bin 目录下增加一个 mongodb.conf配置文件

# 数据存放目录
dbpath = /opt/mongodb/data/db
# 日志文件存放目录
logpath = /opt/mongodb/logs/mongodb.log
# 以追加的方式记录日志
logappend = true
# 端口默认为 27017
port = 27017
# 对访问 IP 地址不做限制,默认为本机地址
bind_ip = 0.0.0.0
# 以守护进程的方式启动,即在后台运行
fork = true
# 启动
$ mongod -f /opt/mongodb/bin/mongodb.conf
# 停止
$ mongod -f /opt/mongodb/bin/mongodb.conf --shutdown

客户端访问

$ mongo
# 查看所有的数据库(没有数据的数据库会显示)
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> db
test
# 查看数据库版本
> db.version()
5.0.1
# 清屏命令
>cls

MongoDB 函数关闭

# 连接到 MongoDB 服务后,切换到 admin 数据库,使用相关函数关闭服务
# 切换 admin 数据库
>use admin
# 执行以下函数(21)即可关闭服务
>db.shutdownServer()
>db.runCommand("shtudown")
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!