什么是NoSQL
认识MongoDB
MongDB的下载与安装
MongoDB的体系结构
常用命令(基本的增删改查)
客户端GUI工具集合

一: 什么是NoSql
1 NoSQL简介
NoSQL是Not Only SQL的缩写,它指的是非关系型的数据库,是以key-value形式存储,和传统的关 
系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准,ACID属性,表结
构等等,这类数据主要有以下特点,非关系型的,分布式的,开源的,水平可扩展的

2 NoSQL发展现状
目前国内外正在应用的NoSQL的网站有:
新浪微博 Redis
Google Bigtable
视觉中国网站 MongoDB
优酷运营数据库分析 MongoDB
飞信空间 HandlerSocket
等等....

3 为什么要用NoSQL
随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了 
更多的需求,虽然关系型数据库已经在业界的数据存储方面占据不可动摇的地位,但是由于其天生的 
几个限制,使其很难满足上面这几个需求,扩展困难,读写慢,成本高,有限的支持容量,但是 
NoSQL关注的是对数据高并发地读写和对海量数据的存储等,与关系型数据库相比,它们在架构和数
据库模型方面做了"减法",而在扩展和并发等方面做了"加法"

4 NoSQL数据库的优缺点
在优势方面,主要体现在下面这几点:
简单的扩展
快速的读写
低廉的成本
灵活的数据模型

在不足方面
不提供对SQL的支持
支持的特性不够丰富
现有产品的不够成熟

二 认识MongoDB
1 MongoDB简介
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最 
像关系数据库的,语法有点类拟于Javascript面向对象的查询,它是一个面向集合的,模式自由的文 
档型数据库

面向集合(Collenction-Orented)
意思是数据库被分组存储集中被称为一个集合(Collention),毎个集合在数据库中都有一个唯一的 
标识名,并且可以包含无限数目的文档,集合的概念类似关系型数据里的表,不同的是它不需要定义 
任何模式

模式自由(scheman-free)
意思是集合里面没有列和行的概念,下面两个记录可以存在于同一个集合里面
{"name":"mongo"}
{"age":25}

文档型(documents)
意思是我们存储的数据是键-值的集合,键是字符串,值可以是数据类型集合里的任意类型,包括 
数组和文档,每一个文档相当于关系数据库中的一条记录

2 MongoDB特性
MongoDB的特点是高性能,易部署,易使用,存储数据库非常方便,主要特性有
面向集合存储,易于存储对象类的数据
模式自由
支持动态查询
支持完全索引,包含内部对象
支持复制和故障恢复
使用高效的二进制数据存储,包括大型对象(如视频等)
自动处理碎片,以支持云计算层次的扩展性
文件存储格式了BSON(一种JSON的扩展)

适用场景
持入化缓存层层
高效的实时性
用于对象及JSON数据的存储
高伸缩性的场景
大尺寸,低价值的数据存储

不适合的场景
要求高度事务性的系统
传统的商业智能应用
复杂多表查询

三 MongDB的下载与安装(Linux平台)
第一步: 下载MongoDB安装包
MongoDB的官网: http://www.mongodb.org找到相应的版本下载
如果有网络的话,用命令直接下载
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.2.2.tgz

第二步: 解压压缩文件
tar zxvf mongodb-linux-i686-2.2.2.tgz

第三步: 安装准备
将mongodb移动到/usr/local/mongodb文件夹
mv mongodb /usr/local/mongodb
创建数据库文件夹(默认的数据库文件的位置是/data/db,启动时自动创建)

mkdir /usr/local/mongodb/data
提示: mongoDB没有具体的安装过程,解压文件包后,可以直接使用,非常高效和方便
touch /usr/local/mongodb/dblogs
#日志文件

第四步: 开机启动
将mongodb启动项目加入rc.local保证mongodb在服务器开机时启动
echo "/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data" >> 
/etc/rc.local
第五步: 启动mongodb
运行mongod命令
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data -- 
logpath=/usr/local/mongodb/dblogs --fork
--dbpath执行数据库存放路径(默认是/data/db)
--fork是以Daemon(进程)方式运行
注意: 如果指定--fork参数,必须指定--logpath日志文件路径

/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data -- 
logpath=/usr/local/mongodb/dblogs --fork

启动命令常用叁数选项说明
--dbpath 指定数据库的目录
--port 指定数据库的端口,默认是27017
--bind_ip 绑定IP
--directoryperdb为每个db创建一个独立的子目录
--logpath
--logappend指定日志生成方式(追加/覆盖)
--pidfilepath 指定进程文件路径,如果不能指定,将不产生进程文件
--keyFile 集群模式的关键标识
--journal 启动日志
--nssize 指定.ns文件的大小,单位MB,默认是16M, 最大是2GB
--maxConns最大的并发连接数
--notablescan 不允许进行表扫描
--noprealloc 关闭数据库文件的预分配功能

第六步: 进入客户端操作
/usr/local/mongodb/bin/mongo

第七步: 退出
exit;

第八步: 停止MongoDB服务器
如果处理连接状态,那么直接可以通过在admin库中发送db.shutdownServer()指令停止

Unix系统指令
killall mongod
注意: 不要用kill -9 PID来杀死MongoDB进程,这样会导致MongoDB的数据库损坏,用kill -2 杀 
死进程

四 MongoDB的体系结构
1 逻辑结构关系对比
mysql数据(database) table rows 三个层次组成

非关系型数据库
MongoDB数据库(database) 集合(collection), 文档对象(docuemnt)三个层

MongoDB里的集合对应于关系型数据库中的表,但是集合中没有列,行和关系,集合中只有文档 
,一个文档就相当与一条记录,这体现了模式自由的特点

show dbs; 查看数据库列表
db; 查看当前数据库
show tables; 查看当前集合

2 数据存储结构
Mysql的数据库结构
mysql的每个数据库存放在一个与数据同名的文件夹中,mysql如果使用MyISAM存储引擎,数 
据库文件类型包括.frm, MYD, MYI

MongoDB的灵敏据结构
MongoDB的默认数据目录是/data/db 它负责存储所有的MongoDB的数据文件,在MongoDB内部 
,每个数据库包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量拉加页变得越来越 
大多,所以如果系统中有一个叫做mydb的数据库,那么构成mydb这个数据库的文件主举动由mydb.ns, 
mydb.0, mydb.1等等组成

3 MongoDB数据类型
MongoDB的文档使用BSON(Binary JSON)来组织数据,BSON类似于JSON, JSON只是一种简单的表示 
数据的方式,只包含了站种数据类型(null, 布尔,数字,字符串,数组及对象),不能完全满足复杂 
的业务的需要,因此,BSON还提供日期,32位数字,64位数字等类型,以下是对mongoDB的数据类型进 
行简要说明
1 null
null类型用于表示空值或不存在的字段
如: {"one":null}
2 布尔类型 tru false
3 32位整数 mongoDB的控制台使用js引擎进行输入,而JS仅支持64位浮点数,所以32位整 
数将会被自动转义
4 64位整数
5 64位浮点数
6 字符串
7 符号
8 ObjectId类型
9 日期
10 正则表达式
11 代码 文档中可以包含JS代码
12 数组
13 内嵌文档

五 常用命令(基本的增删改查)
控制台中的基本操作命令

如果想查看当前连接哪里个数据库下面,可以直接输入db
查看用户列表db.system.users.find();
查看所有用户show users;
查看所有数据库show dbs;
查看所有集合 show collections
删除当前的数据库 db.dropDatabase();
删除collection db.集合名.drop();
想知道当前数据库支持哪里些命令,可以直接输入help
想知道当前数据库支持哪里些方法: db.help();
想知道当前集合支持哪里些方法: db.user.help(), user为集合名

创建数据库,集合
由于MongoDB不是关系型数据库文件,实际上,它并不存在传统关系型数据库中所谓"数据库"的 
说法,当你第一次新增数据时,MongoDB就会以collection集合的形式进行保存和新建,而不需要提 
前去建立

第一部分 mongodb 基础篇的更多相关文章

  1. 面试题之第一部分(Python基础篇) 80题

    第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相 ...

  2. mongodb基础篇

    一.  关于mongodb 两种非关系数据库 Redis:满足极高读写性能的Key-Value数据库 键值式储存,可以通过键快速查询到值. 内存数据库,类似于mencached.性能出色.容量低,不具 ...

  3. 【mongoDB基础篇①】安装与常用操作语句

    简述 mongoDB与redis同为noSql数据库,但是redis为kv数据库(key/value),而mongoDB为文档型数据库存储的是文档(Bson->json的二进制化).内部执行引擎 ...

  4. 第一天 Linux基础篇

    课程介绍 1.认识Linux的不同版本 2.以及应用领域 3.文件和目录 4.Linux命令概述 5.Linux命令-文件 6.Linux命令-系统管理-磁盘管理 认识Linux 什么是操作系统  生 ...

  5. 第一章 Scala基础篇

    目录 一.Scala基础语法 (一) 变量.类型.操作符 1.变量申明 2.字符串 3.数据类型 4.操作符 (二)循环判断 1.块表达式 2.条件表达式 3.循环表达式 (三)方法和函数 1.方法 ...

  6. 【mongoDB基础篇②】PHP-mongo扩展的编译以及使用

    安装PHP-mongo扩展 安装php-mongo扩展和安装其他php扩展的步骤一样: #1.首先上http://pecl.php.net上面搜索mongo,得到下载地址 wget http://pe ...

  7. MongoDB基础篇1:安装和服务配置

    一.下载 请前往官网下载community版本MongoDB,我当前可见最新版本是3.6.4 https://www.mongodb.com/download-center#community 如需下 ...

  8. MongoDB基础篇2:数据库/用户/数据集合的增删改

    一.数据库操作 创建并进入数据库: 命令:use DATABASE_NAME 示例:use tms   查看所有数据库: 命令:show dbs   注意: (1)新创建的数据库在show dbs命令 ...

  9. python面试题库——1Python基础篇

    第一部分 Python基础篇(80题) 为什么学习Python? 语言本身简洁,优美,功能超级强大,跨平台,从桌面应用,web开发,自动化测试运维,爬虫,人工智能,大数据处理都能做 Python和Ja ...

随机推荐

  1. mac上一键配置和安装adb驱动或者环境

    最近才使用的mac,老实说mac上要配置adb的环境不那么复杂,但是还是会让一些心不细或者动手能力不强的同学望而却步.那么到底有没有一个一键完成mac上adb和fastboot环境搭配的软件或者脚本呢 ...

  2. ubuntu上怎么设置默认python命令是执行python3而不是python2

    来源:https://segmentfault.com/q/1010000003713912 alternatives这么好的机制用起来呀. shell里执行: sudo update-alterna ...

  3. Caffe学习系列(9):运行caffe自带的两个简单例子

    为了程序的简洁,在caffe中是不带练习数据的,因此需要自己去下载.但在caffe根目录下的data文件夹里,作者已经为我们编写好了下载数据的脚本文件,我们只需要联网,运行这些脚本文件就行了. 注意: ...

  4. findstr()与strfind()的区别

    matlab中这两个字符串查找的函数findstr(), strfind()表明上看起来用法相似,效果也相似. 1. findstr(s1,s2)--在较长的字符串中查找较短的字符串出现的次数,并返回 ...

  5. [CareerCup] 5.1 Insert Bits 插入位

    5.1 You are given two 32-bit numbers, N and M, and two bit positions, land j. Write a method to inse ...

  6. [CareerCup] 9.11 Parenthesize the Expression 表达式加括号

    9.11 Given a boolean expression consisting of the symbols 0,1, &, |, and ^, and a desired boolea ...

  7. LeetCode 笔记26 Maximum Product Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  8. Java第一次实验

    北京电子科技学院(BESTI) 实验报告   课程: java实验    班级:1352     姓名:吕松鸿     学号:20135229  成绩: 指导教师: 娄嘉鹏    实验日期及时间:20 ...

  9. Linux 第一次学习笔记

    一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有 ...

  10. 20145208 实验三 Java面向对象程序设计

    20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...