MongoDB学习(—)基础知识

1.初识NoSql


1.1关系型数据库


          关系型数据库:以行和列来存储数据=>称为表。关系型数据库中,表都是存储格式化结构的数据

1.2非关系型数据库


1.2.1概念


        NoSql,Not only Sql,意为“不仅仅是sql”,泛指非关系型的数据库。非关系数据库以键值对存储,它的结构不固定.


1.2.2分类


        NoSql又分为四大类数据库:键值(Key-Value)存储数据库列存储数据库文档型数据库图形(Graph)数据库。它们的对比分析如下:

分类

Examples举例

典型应用场景

数据模型

优点

缺点

键值(key-value)

Tokyo Cabinet/Tyrant,

Redis,

Voldemort,

Oracle BDB

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 

Key 指向 Value 的键值对,通常用hash table来实现

查找速度快

数据无结构化,通常只被当作字符串或者二进制数据

列存储数据库

Cassandra, HBase, Riak

分布式的文件系统

以列簇式存储,将同一列数据存在一起

查找速度快,可扩展性强,更容易进行分布式扩展

功能相对局限

文档型数据库

CouchDB,

MongoDB

Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)

Key-Value对应的键值对,Value为结构化数据

数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

查询性能不高,而且缺乏统一的查询语法。

图形(Graph)数据库

Neo4J,

InfoGrid,

Infinite Graph

社交网络,推荐系统等。专注于构建关系图谱

图结构

利用图结构相关算法。比如最短路径寻址,N度关系查找等

很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

1.2.3  RDBMS 与 MongoDB 对应的术语

MongoDB学习(—)基础知识_第1张图片
MongoDB学习(—)基础知识_第2张图片

1.2.4Mongodb与Mysql的操作命令的对比

MongoDB学习(—)基础知识_第3张图片

 

1.2.5关系与非关系型数据库的对比


关系型数据库和非关系型数据库的特性、优点、缺点及应用场景对比如下:

 

特性

优点

缺点

关系型数据库

1.采用关系模型来组织数据

2.事务的一致性

3. 一个关系型数据库是由关系模型(即二维表格模型)及其之间的关联关系组成的一个数据组织

1.容易理解。二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更易理解

2.使用方便。标准的sql语言使得操作关系数据库非常方便

3.易于维护。丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率。

4.支持Sql及事务处理。可以进行复杂查询,事务支持使得其能保证数据一致性

1.读写性能差。为了维护数据一致性所付出的巨大代价就是其读写性能比较差

2.高并发读写需求

3.海量数据高效率读写

4.固定的表结构。不擅长为有数据的表做索引或表结构的变更

非关系型(NoSql)

1.以键值对存储

2.分布式

3.一般不支持ACID特性(即数据库事务特性:原子性、一致性、隔离性、持久性)

4.NoSql严格上讲不是一种数据库,应该是一种数据结构化存储方法的集合

1.灵活的数据存储模型。数据结构不固定

2.易扩展。数据之间无耦合,非常容易扩展

3. 高性能。能够适应现代网络对数据库高并发读写请求以及对海量数据的高速访问能力,得益于它的无关系性

4.高可用。在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。

1. 不提供对SQL的支持。Sql是工业标准,不支持sql将对用户产生一定的学习和迁移成本

2. 应用局限性。大多数NoSql数据库都不支持事务,现有产品功能不够完善,附加功能如Bi和报表等也不支持

3.现有产品不成熟。缺乏类似关系型数据库所具有的强有力的理论、技术、标准规范(如sql)等支持。



2.初识MongoDB


2.1简介


       MongoDB属于NoSql的一种,且是属于NoSql中的基于分布式文件存储的文档型数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

        MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson(是一种类json的一种二进制形式的存储格式,简称Binary JSON)格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB 的主要目标是在键/值存储方式(提供了高性能和高度伸缩性);

2.2概念

Ø  文档是mongodB中数据的基本单元,非常类似于数据库中的行;

Ø   集合collection可以看做是一个用于动态模式(dynamic schema)的表; 

Ø  mongodb的一个实例可以拥有多个独立的数据库,每个数据库拥有自己的集合;

Ø  每个文档都有一个特殊的键“_id”,这个键在文档所属的集合中是唯一的; 

Ø  mongodb自带一个javascript shell,用于管理mongodb的实例或者数据操作。


2.3数据模型

        一个MongoDB 实例可以包含一组数据库,一个DataBase 可以包含一组Collection(集合),一个集合可以包含一组Document(文档)。一个Document包含一组field(字段),每一个字段都是一个key/value pair。

key: 必须为字符串类型。

value:可以包含如下类型

1)基本类型,例如,string,int,float,timestamp,binary 等类型。

2)一个document。

3)数组类型


2.4使用原理


        所谓“面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。Nytro MegaRAID技术中的闪存高速缓存算法,能够快速识别数据库内大数据集中的热数据,提供一致的性能改进。

        模式自由(schema-free),意味着对于存储在MongoDB数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized Document Format)。

3. MongoDB INSTALL

1)下载安装包
下载方式:
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz
解压缩压缩包:
tar zxvf mongodb-linux-x86_64-3.2.9.tgz
 
2)安装准备
创建数据库文件夹与日志文件、配置文件:
mkdir -p  /usr/local/server/mongodb/data
touch /usr/local/server/mongodb/mongod.log
touch /usr/local/server/mongodb/ mongodb.conf
root@wiki:[/root]more  /home/percona-server-mongodb-3.2.17-3.8/bin/mongodb.conf
# Start MongoDB as a daemon on port 27017
port = 27018
fork = true # daemonize it !
journal = true #
#rest = true
logappend = true
#auth = true
dbpath = /opt/percona/mongodb/data/
logpath = /opt/percona/mongodb/logs/mongod.log
pidfilepath = /opt/percona/mongodb/mongod.pid
root@wiki:[/root]

将mongodb移动到/usr/local/server/mongdb文件夹:
mv mongodb-linux-x86_64-3.2.9/* /usr/local/server/mongodb/
 4) 系统profile配置

  1. vi /etc/profile  
  2. export MONGODB_HOME=/usr/local/mongodb  
  3. export PATH=$PATH:$MONGODB_HOME/bin  

保存后,重启系统配置source /etc/profile


3)启动mongodb(有两种方式)
参数启动:
参数启动可以直接在命令后面加配置参数,也可以加配置文件启动,如下加配置参数启动:
cd /usr/local/server/mongodb/bin/mongod/bin/
./mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/mongod.log --logappend  --port=27017 --fork
注:如果加权限就用 --auth 参数,不需要权限就去掉
如果在配置文件中配置好各项参数,则可以使用配置文件启动:
 ./mongod --config /usr/local/server/mongodb/mongodb.conf
4. 参数解释: --dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
--config 配置文件位置

你可能感兴趣的:(MONGODB)