MongoDB(1)简介 & 安装配置

MongoDB 入门专栏

http://blog.csdn.net/column/details/19681.html


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 这些传统的关系数据库;
 RDBMSNoSQL
特点- 高度组织化结构化数据 
- 结构化查询语言(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术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins 表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键






MongoDB 安装配置

以下以 Linux 环境的 mongoDB 安装配置作为示例,在 OS X,Window 环境下的操作也是类似的;

下载
选择合适的 MongoDB 版本下载,注意 window 版本的 mongodb-3.6 的 msi 安装程序可能会出现安装时进度条卡住的情况,此时可以直接杀线程,直接开始配置步骤,或者下载安装 3.4 版本的 mongodb;  

解压
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:
# http://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,通过浏览器打开:http://127.0.0.1:28017 即可打开该管理端口;

也可以使用 Robo 3T 这种 MongoDB 客户端管理软件,详见:https://robomongo.org







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章