第一部分 mongodb 基础篇

什么是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集合的形式进行保存和新建,而不需要提 
前去建立

时间: 2024-10-09 14:41:15

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

第一章 Scala基础篇

目录 一.Scala基础语法 (一) 变量.类型.操作符 1.变量申明 2.字符串 3.数据类型 4.操作符 (二)循环判断 1.块表达式 2.条件表达式 3.循环表达式 (三)方法和函数 1.方法 2.函数 3.方法和函数的区别 4.总结 二.Scala常用数据结构/集合 (一)Scala集合分类和继承体系 1.分类 2.继承体系 (二)数组 (三)元组 (四)List (五)队列 (六)Set (七)Map 一.Scala基础语法 === (一) 变量.类型.操作符 1.变量申明 ●Java

Python 第一章 【基础篇】

Python 简介    Python 安装    第一个Python程序         Python 解释器         字符编码与解码      动态语言与静态语言的区别   变量及简单数据类型 编码规范 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五!!! 由上

Python第一周基础篇

<感言:首先感谢alex老师精彩课程,第一周的第一天,随着金角大王的豪言壮语般的心灵鸡汤完美收场.此刻坐在电脑前的我仍是热血澎湃,下定决心好好跟着大王一起学好python> ----祝老师教师节快乐                                      Python第一周基础篇 博文结构: --1--python2.*与python3.*主要区别 --2--python安装与配置 --3--PyCharm开发工具的安装与配置 --4--变量的定义 --5--注释的使用 --

Python学习基础篇第一篇——快速入门(适合初学者)

一.Python学习基础篇第一篇--(快速入门) 建议从Python2.7开始学习,Python2.7可以支持扩展大量的第三方类库,是目前比较成熟的版本 编写代码的软件推荐将python自带的IDLE和PyCharm集成IDE结合起来使用 1.1 Python命令行 Python命令行将以 >>> 开始,比如 >>>print 'Hello World!' 对于验证简单的命令可以在python自带的IDLE中完成  1.2 在Python自带的IDLE写一段小程序 在所

sql系列(基础篇)-第一章 关于sysdate

第一章 基本的SQL语句 1. 查询数据库系统时间,常以服务器默认的格式进行显示(根据数据库的字符集而定): 注意:dual 为数据库中的虚表,隶属于管理员 sys 用户,但所有的用户都可以访问:无实际意义,仅充当select 语句的结构(用 select取系统信息.临时结果等时,以 dual 充当语句结构): [email protected]>select sysdate from dual; SYSDATE --------- 18-JUN-14 1.1 修改系统时间的显示格式:(sess

VC++实战《星际传奇》网游课程第一部分网络游戏开发基础篇(游戏引擎设计)

本系列课程基于最新的DirectX11接口进行深入细致的讲解,内容涉及D3D11原理与应用.DirectInput.DirectSound等: 教程中专门针对新兴的D3D11接口展开深入的讲解,详细讲解了D3D11渲染管线.DirectComputer(参看<VC++游戏开发系列之Directcomputer并行计算原理与实践--DX11游戏实战开发>).Tessellation.多线程渲染.Shader动态链接等新内容.新知识.并且基于这些内容的基础,更进一步讲解了光照模型原理及实现.高级的

MongoDB 学习笔记(一)基础篇

1.MongoDB 特点 面向集合存储,存储对象类型的数据方便 模式自由,不需要定义任何模式(schma) 动态查询 完全索引,包含内部对象 复制和故障恢复方便 高效的二进制数据存储 支持c# 平台驱动 2.体系结构 一台服务器可以创建多个Server 实例和数据库,(推荐一天server 机器创建一个实例), 数据库:MongoDB 中的一系列与磁盘有关的物理文件(数据文件,日志文件等). 数据逻辑结构:文档 (documnet) 集合(collection) 数据库(database). d

【MongoDB】NoSQL Manager for MongoDB 教程(基础篇)

前段时间,学习了一下mongodb,在客户端工具方面,个人认为 NoSQL Manager for MongoDB 是体验比较好的一个,功能也较齐全.可惜在找教程的时候,发现很难找到比较详细的教程,也没有找到中文破解版之类的安装包.在经过摸索使用之后,决定写两篇关于NoSQL Manager for MongoDB 教程的总结,以供自己或者有需要的人翻查使用. 基础篇:安装.连接mongodb.使用shell.增删改查.表复制 进阶篇:索引.备份还原.从其他关系型数据库(mysql,sqlser

MongoDB基础教程系列--未完待续

最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作为目录篇,方便阅读,有问题大家一块交流哈.多谢大家关注,转载请注明出处,谢谢! MongoDB基础教程系列--第一篇 进入MongoDB世界 MongoDB基础教程系列--第二篇 MongoDB基本操作(一) MongoDB基础教程系列--第三篇 MongoDB基本操作(二) MongoDB基础教程