欢迎投稿

今日深度:

MongoDB数据库简介&安装配置,mongodb数据库

MongoDB数据库简介&安装配置,mongodb数据库


MongoDB 简介

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源 NoSQL 数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
\

MongoDB 主页:https://www.mongodb.com
MongoDB 官方文档:https://docs.mongodb.com

NoSQL 和 RDBMS

MongoDB 是一种典型的 NoSQL 数据库,区别与 MySQL,Oracle,DB2 这些传统的关系数据库;
? RDBMS NoSQL
特点 - 高度组织化结构化数据?
- 结构化查询语言(SQL) (SQL)?
- 数据和关系都存储在单独的表中。?
- 数据操纵语言,数据定义语言?
- 严格的一致性
- 基础事务
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
-键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理?
- 高性能,高可用性和可伸缩性
遵循原则 ACID 原则
  • A (Atomicity) 原子性
  • C (Consistency) 一致性
  • I (Isolation) 独立性
  • D (Durability) 持久性
CAP原则
  • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
  • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
  • 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)


以下是 NoSQL 的分类和部分代表:
列存储 Hbase、Cassandra、Hypertable
文档存储 MongoDB、CouchDB
key-value 存储 Tokyo Cabinet / Tyrant、Berkeley DB、MemcacheDB、Redis
图存储 Neo4J、FlockDB
对象存储 db4o、Versant
xml数据库 Berkeley DB XML 、BaseX

 

以下是部分 SQL 概念对应的 MongoDB 概念:
SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins ? 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键






MongoDB 安装配置

以下以 Linux 环境的 mongoDB 安装配置作为示例,在 OS X,Window 环境下的操作也是类似的;
下载选择合适的 MongoDB 版本下载,注意 window?版本的?mongodb-3.6 的 msi 安装程序可能会出现安装时进度条卡住的情况,此时可以直接杀线程,直接开始配置步骤,或者下载安装 3.4 版本的 mongodb; ?下载地址:https://www.mongodb.com/download-center?jmp=tutorials&_ga=2.97410399.1138236154.1518440736-1543170749.1518440736#community

解压linux 版本一般下载后是一个压缩包,解压该包即可获取 mongodb 的运行程序,假设该压缩包解压后得到目录 mongodb-3.6.2;为了方便启动,一般会把 mongodb-3.6.2/bin 目录写入到系统 PATH 变量;在 mongodb-3.6.2/ 下创建 data,logs 两个目录,分别用于储存数据和日志:
?
assad@DESKTOP-assad:/usr/bin/mongodb-3.6.2$ mkdir data
assad@DESKTOP-assad:/usr/bin/mongodb-3.6.2$ mkdir logs
之后需要将?mongodb-3.6.2/ 下所有的文件设置 group 和 own;
启动 mongoDB 服务运行 mongoDB 服务由 2 种方式,第一种是直接指定运行参数,第二种是指定配置文件,这里先演示第一种;?
assad@DESKTOP-assad:/usr/bin/mongodb-3.6.2/bin$ mongod --dbpath=/usr/bin/mongodb-3.6.2/data --logpath=/usr/bin/mongodb-3.6.2/logs/mongo.log ? ?# 指定 data,logpath 位置运行 mongodb 服务

连接 mongoDB?
assad@DESKTOP-assad ~ $ mongo
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.2
......
>
这里我是已经将?mongodb-3.6.2/bin?的路径变量写入到系统 PATH 了,如果没有需要定位到该目录下执行该指令;

设置管理员密码mongodb 默认没有设置密码的,为了安全会设置至少设置一个管理员密码,步骤如下:?
assad@DESKTOP-assad ~ $ mongo ? ? # 登入 mongodb
?
>show dbs; ? ? ? ? # 显示所有存在表
admin ?0.000GB
local ?0.000GB
?
> use admin ? ? ? ?# 使用 admin 数据库
switched to db admin ? ?
?
> db.createUser({user:"assad",pwd:"mongo123",roles:["root"]}) ? ? # 在 admin 数据库中创建用户
Successfully added user: { "user" : "assad", "roles" : [ "root" ] }
?
> exit 
之后重启 mongoDB 服务,并且以 auth 认证模式启动,如下:?
assad@DESKTOP-assad:/usr/bin/mongodb-3.6.2/bin$ mongod --dbpath=/usr/bin/mongodb-3.6.2/data --logpath=/usr/bin/mongodb-3.6.2/logs/mongo.log ?--auth
此时如果直接登陆 mongoDB 服务,所有的数据库操作都会被拒绝,需要以密码登入:?
assad@DESKTOP-assad ~ $ mongo -u assad -p mongo1994 127.0.0.1:27017/admin ? # 以管理员方式登入 mongodb
> show dbs
.....


使用配置文件启动 mongoDB 服务以上的 mongoDB 启动过程参数比较繁琐,可以编写一个配置文件,从配置文件启动 mongoDB,以下是一个示例的配置文件:
/etc/mongod.conf?
# for documentation of all options, see:
# https://docs.mongodb.org/manual/reference/configuration-options/
?
# Where and how to store data.
dbpath=/usr/bin/mongodb-3.6.2/data
journal=true
?
# where to write logging data.
logpath=/usr/bin/mongodb-3.6.2/logs/mongod.log
logappend=true
?
# network interfaces
bind_ip=127.0.0.1
port=27017
?
# security
auth=true
通过该配置文件启动 mongodb 服务:?
$ mongod -f /etc/mongod.conf
配置文件中的参数其实通过 mongo --help 都由说明;

MongoDB GUI 界面

MongoDB 提供了简单的 HTTP 用户界面,如果要启用该功能,只需要只当启动参数 --rest,如下:?
$ mongod -f /etc/mongod.conf --rest
默认的 Web 界面端口比服务端口多 1000,默认为 28017,通过浏览器打开:https://127.0.0.1:28017?即可打开该管理端口;
也可以使用 Robo 3T 这种 MongoDB 客户端管理软件,详见:https://robomongo.org

www.htsjk.Com true http://www.htsjk.com/DB2/20614.html NewsArticle MongoDB数据库简介安装配置,mongodb数据库 MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源 NoSQL 数据库系统,在高负载的情况下,添加更多的节点,可以保证服务...
评论暂时关闭