mongoDB课案Word文档格式.docx
- 文档编号:7663968
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:106
- 大小:470.91KB
mongoDB课案Word文档格式.docx
《mongoDB课案Word文档格式.docx》由会员分享,可在线阅读,更多相关《mongoDB课案Word文档格式.docx(106页珍藏版)》请在冰点文库上搜索。
共享数据是必不可少的应用,如银行,预订系统。
灵活性:
由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。
更快的速度:
分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。
开放系统:
由于它是开放的系统,本地或者远程都可以访问到该服务。
更高的性能:
相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。
分布式计算的缺点
故障排除:
:
故障排除和诊断问题。
软件:
更少的软件支持是分布式计算系统的主要缺点。
网络:
网络基础设施的问题,包括:
传输问题,高负载,信息丢失等。
安全性:
开发系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。
什么是NoSQL?
NoSQL,指的是非关系型的数据库。
NoSQL有时也称作NotOnlySQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。
(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
为什么使用NoSQL?
今天我们可以通过第三方平台(如:
Google,Facebook等)可以很容易的访问和抓取数据。
用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。
我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了,NoSQL数据库的发展也却能很好的处理这些大的数据。
实例
社会化关系网:
Eachrecord:
UserID1,UserID2
Separaterecords:
UserID,first_name,last_name,age,gender,...
Task:
Findallfriendsoffriendsoffriendsof...friendsofagivenuser.
Wikipedia页面:
Largecollectionofdocuments
Combinationofstructuredandunstructureddata
RetrieveallpagesregardingathleticsofSummerOlympicbefore1950.
RDBMSvsNoSQL
RDBMS
-高度组织化结构化数据
-结构化查询语言(SQL)(SQL)
-数据和关系都存储在单独的表中。
-数据操纵语言,数据定义语言
-严格的一致性
-基础事务
-代表着不仅仅是SQL
-没有声明性查询语言
-没有预定义的模式
-键-值对存储,列存储,文档存储,图形数据库
-最终一致性,而非ACID属性
-非结构化和不可预知的数据
-CAP定理
-高性能,高可用性和可伸缩性
NoSQL简史
NoSQL一词最早出现于1998年,是CarloStrozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。
2009年,Last.fm的JohanOskarsson发起了一次关于分布式开源数据库的讨论[2],来自Rackspace的EricEvans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。
2009年在亚特兰大举行的"
no:
sql(east)"
讨论会是一个里程碑,其口号是"
selectfun,profitfromreal_worldwhererelational=false;
"
因此,对NoSQL最普遍的解释是"
非关联型的"
,强调Key-ValueStores和文档数据库的优点,而不是单纯的反对RDBMS。
CAP定理(CAPtheorem)
在计算机科学中,CAP定理(CAPtheorem),又被称作布鲁尔定理(Brewer'
stheorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
一致性(Consistency)
(所有节点在同一时间具有相同的数据)
可用性(Availability)
(保证每个请求不管成功或者失败都有响应)
分隔容忍(Partitiontolerance)
(系统中任意信息的丢失或失败不会影响系统的继续运作)
CAP理论的核心是:
一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:
CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP-满足一致性,分区容忍必的系统,通常性能不是特别高。
AP-满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
NoSQL的优点/缺点
优点:
-高可扩展性
-分布式计算
-低成本
-架构的灵活性,半结构化数据
-没有复杂的关系
缺点:
-没有标准化
-有限的查询功能(到目前为止)
-最终一致是不直观的程序
BASE
BASE:
BasicallyAvailable,Soft-state,EventuallyConsistent。
由EricBrewer定义。
BASE是NoSQL数据库通常对可用性及一致性的弱要求原则:
类型
部分代表
特点
列存储
Hbase
Cassandra
Hypertable
顾名思义,是按列存储数据的。
最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
档存储
MongoDB
CouchDB
文档存储一般用类似json的格式存储,存储的内容是文档型的。
这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储
Tokyo
Cabinet
/
Tyrant
Berkeley
DB
MemcacheDB
Redis
可以通过key快速查询到其value。
一般来说,存储不管value的格式,照单全收。
(Redis包含了其他功能)
图存储
Neo4J
FlockDB
图形关系的最佳存储。
使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储
db4o
Versant
通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库
DB
XML
BaseX
高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。
ACIDvsBASE
ACID
原子性(Atomicity)
基本可用(Basically
Available)
一致性(Consistency)
软状态/柔性事务(Softstate)
隔离性(Isolation)
最终一致性(Eventualconsistency)
持久性(Durable)
什么是MongoDB?
MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB将数据存储为一个文档,数据结构由键值(key=>
value)对组成。
MongoDB文档类似于JSON对象。
字段值可以包含其他文档,数组及文档数组。
主要特点
MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
你可以在MongoDB记录中设置任何属性的索引(如:
FirstName="
Sameer"
Address="
8GandhiRoad"
)来实现更快的排序。
你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。
Mongo支持丰富的查询表达式。
查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
MongoDb使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。
Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
Map和Reduce。
Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
MongoDB支持各种编程语言:
RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
MongoDB安装简单。
MongoDB工具
有几种可用于MongoDB的管理工具。
监控
MongoDB提供了网络和系统监控工具Munin,它作为一个插件应用于MongoDB中。
Gangila是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中。
基于图形界面的开源工具Cacti,用于查看CPU负载,网络带宽利用率,它也提供了一个应用于监控MongoDB的插件。
GUI
FangofMongo–网页式,由Django和jQuery所构成。
Futon4Mongo–一个CouchDBFutonweb的mongodb山寨版。
Mongo3–Ruby写成。
MongoHub–适用于OSX的应用程序。
Opricot–一个基于浏览器的MongoDB控制台,由PHP撰写而成。
DatabaseMaster—Windows的mongodb管理工具
RockMongo—最好的PHP语言的MongoDB管理工具,轻量级,支持多国语言.
MongoDB应用案例
下面列举一些公司MongoDB的实际应用:
Craiglist上使用MongoDB的存档数十亿条记录。
FourSquare,基于位置的社交网站,在AmazonEC2的服务器上使用MongoDB分享数据。
Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
bit.ly,一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
,一个MTV网络的联营公司,使用MongoDB的。
Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
,一个购买和出售手工制作物品网站,使用MongoDB。
纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。
创建数据目录
MongoDB将数据目录存储在db目录下。
但是这个数据目录不会主动创建,我们在安装完成后需要创建它。
请注意,数据目录应该放在根目录下((如:
C:
\或者D:
\等)。
在本教程中,我们已经在C:
盘安装了mongodb,现在让我们创建一个data的目录然后在data目录里创建db目录。
c:
\>
cdc:
\
mkdirdata
cddata
\data>
mkdirdb
cddb
\data\db>
你也可以通过window的资源管理器中创建这些目录,而不一定通过命令行。
命令行下运行MongoDB服务器
为了从命令提示符下运行MongoDB服务器,你必须从MongoDB目录的bin目录中执行mongod.exe文件。
mongod.exe--dbpathc:
\data\db
如果执行成功,会输出如下信息:
2015-09-25T15:
54:
09.212+0800ICONTROLHotfixKB2731284orlaterupdateisnot
installed,willzero-outdatafiles
09.229+0800IJOURNAL[initandlisten]journaldir=c:
\data\db\j
ournal
09.237+0800IJOURNAL[initandlisten]recover:
nojournalfil
espresent,norecoveryneeded
09.290+0800IJOURNAL[durability]Durabilitythreadstarted
09.294+0800ICONTROL[initandlisten]MongoDBstarting:
pid=2
488port=27017dbpath=c:
\data\db64-bithost=WIN-1VONBJOCE88
09.296+0800ICONTROL[initandlisten]targetMinOS:
Windows7/W
indowsServer2008R2
09.298+0800ICONTROL[initandlisten]dbversionv3.0.6
……
将MongoDB服务器作为Windows服务运行
请注意,你必须有管理权限才能运行下面的命令。
执行以下命令将MongoDB服务器作为Windows服务运行:
mongod.exe--bind_ipyourIPadress--logpath"
C:
\data\dbConf\mongodb.log"
--logappend--dbpath"
\data\db"
--portyourPortNumber--serviceName"
YourServiceName"
--serviceDisplayName"
--install
下表为mongodb启动的参数说明:
参数
描述
--bind_ip
绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
--logpath
定MongoDB日志文件,注意是指定文件不是目录
--logappend
使用追加的方式写日志
--dbpath
指定数据库路径
--port
指定服务端口号,默认端口27017
--serviceName
指定服务名称
--serviceDisplayName
指定服务名称,有多个mongodb服务时执行。
--install
指定作为一个Windows服务安装。
MongoDB后台管理Shell
如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo.exe文件,MongoDBShell是MongoDB自带的交互式Javascriptshell,用来对MongoDB进行操作和管理的交互式环境。
当你进入mongoDB后台后,它默认会链接到test文档(数据库):
>
mongo
MongoDBshellversion:
3.0.6
connectingto:
test
由于它是一个JavaScriptshell,您可以运行一些简单的算术运算:
2+2
4
db
命令用于查看当前操作的文档(数据库):
db
test
插入一些简单的记录并查找它:
db.runoob.insert({x:
10})
WriteResult({"
nInserted"
:
1})
db.runoob.find()
{"
_id"
ObjectId("
5604ff74a274a611b0c990aa"
),"
x"
10}
第一个命令将数字10插入到runoob集合的x字段中。
MongoDB
概念解析
不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍。
下表将帮助您更容易理解Mongo中的一些概念:
SQL术语/概念
MongoDB术语/概念
解释/说明
database
数据库
table
collection
数据库表/集合
row
document
数据记录行/文档
column
field
数据字段/域
index
索引
tablejoins
表连接,MongoDB不支持
primarykey
主键,MongoDB自动将_id字段设置为主键
通过下图实例,我们也可以更直观的的了解Mongo中的一些概念:
一个mongodb中可以建立多个数据库。
MongoDB的默认数据库为"
db"
,该数据库存储在data目录中。
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
showdbs"
命令可以显示所有数据的列表。
$./mongo
showdbs
local0.078GB
test0.078GB
执行
命令可以显示当前数据库对象或集合。
运行"
use"
命令,可以连接到一个指定的数据库。
uselocal
switchedtodblocal
local
以上实例命令中,"
local"
是你要链接的数据库。
在下一个章节我们将详细讲解MongoDB中命令的使用。
数据库也通过名字来标识。
数据库名可以是满足以下条件的任意UTF-8字符串。
不能是空字符串("
)。
不得含有'
'
(空格)、.、$、/、\和\0(空宇符)。
应全部小写。
最多64字节。
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
admin:
从权限的角度来看,这是"
root"
数据库。
要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local:
这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config:
当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
文档
文档是一个键值(key-value)对(即BSON)。
MongoDB的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是MongoDB非常突出的特点。
一个简单的文档例子如下:
{"
site"
:
"
name"
菜鸟教程"
}
下表列出了RDBMS与MongoDB对应的术语:
RDBMS
表格
集合
行
列
字段
表联合
嵌入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mongoDB 课案
![提示](https://static.bingdoc.com/images/bang_tan.gif)