您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > MongoDB开发使用手册
MongoDB开发使用手册一.基础部分MongDB简介1.NOSQL历史和产生原因原因:互联网用户数的增长和用户参与互联网习惯的改变1.初始的静态内容网站,提供中心化的内容服务,特点:中心化,用户阅读内容系统:Apache2.动态网页内容,电子商务和论坛网站出现。特点:用户访问动态内容,并提供少量内容系统:Apache+Mysql+Php,IIS+ASP+SQLSERVER,IIS+ASP.net+SQLSERVER,TOMCAT+JSP+ORACLE3.博客出现:去中心化网站出现。特点:Web2.0网站的雏形用户阅读内容,并开始更多地参与网站的交互系统:高并发访问,数据库压力增大Memcached缓存的出现,并出现数据库集群的概念4.微博,淘宝等网站出现,以及云计算平台出现,如google,百度广告,等大规模系统特点:用户重复参与网站交互,和内容提供,而系统需要对用户行为进行分析系统:支持高并发,及时响应,并能够实现分布式计算NOSQL:Memcached,Redis,Hbase,等NOSQL数据库,不仅仅是简单缓存,并能够提供分布式要求,包括复制,分片,水平分区,并提供复杂格式的数据存储总结:1.高并发读写操作普通关系型数据库,很难满足高并发读写的要求,上万次读写的需求2.海量数据存储上亿用户产生大量数据,包括用户数据,访问日志,用户提供内容,用户状态记录等,这种海量数据的存储,关系型数据库已经很难满足,尤其是从海量数据中提取和汇总数据成为瓶颈3.高可用性和高扩展性关系型数据库也能支持,同步复制,水平分区扩展,但维护工作相当繁杂,并很难做到热扩展4.内存操作(快速),并发量高(非阻塞进程),硬盘回写(数据完整和高效的平衡),备份和恢复复制(高可用性,和连续服务),分片(热扩展,海量数据)操作简单(JSON),负载均衡,分布式部署(局域网,和物理部分),事务支持2.主流的NOSQL介绍数据库类型开发语言特性应用场景CouchDBErlang特点:DB一致性,易于使用使用许可:Apache协议:HTTP/REST双向数据复制持续进行或临时处理处理时带冲突检查因此,采用的是master-master复制(见编注2)MVCC-写操作不阻塞读操作可保存文件之前的版本Crash-only(可靠的)设计需要不时地进行数据压缩视图:嵌入式映射/减少格式化视图:列表显示支持进行服务器端文档验证支持认证根据变化实时更新支持附件处理因此,CouchApps(独立的js应用程序)需要jQuery程序库适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。适用于需要提供数据版本支持的应用程序。如CMS系统,数据统计汇总RedisC特点:运行异常快使用许可:BSD协议:类Telnet1.读写操作异常快2.较复杂的数据格式sets,链表,hash3.事务支持4.消息订阅pub/sub5.主从同步复制6.硬盘回写7.第三方sharding支持适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序股票价格、数据分析、实时数据搜集、实时通讯配置下发,全局实时数据MongodbC++特点:保留了SQL一些友好的特性(查询,索引)。使用许可:AGPL(发起者:Apache)协议:Custom,binary(BSON)1.支持javascript表达式2.硬盘回写3.主从复制和集群功能4.内建分片机制5.较快读写性能1.大数据量查询和汇总2.分布式部署,和水平扩展数据统计汇总业务数据库,替代Mysql6.大格式数据支持7.空数据库大约占192Mb8.事务支持Neo4jJava特点:基于关系的图形数据库使用许可:GPL,其中一些特性使用AGPL/商业许可协议:HTTP/REST(或嵌入在Java中)1.可独立使用或嵌入到Java应用程序2.图形的节点和边都可以带有元数据3.很好的自带web管理功能4.使用多种算法支持路径搜索5.使用键值和关系进行索引6.支持事务(用Javaapi)7.使用Gremlin图形遍历语言8.支持Groovy脚本9.支持在线备份,高级监控及高可靠性支持使用适用于图形一类数据。这是Neo4j与其他nosql数据库的最显著区别例如:社会关系,公共交通网络,地图及网络拓谱HBaseJava特点:支持数十亿行X上百万列使用许可:Apache协议:HTTP/REST(支持Thrift,见编注4)1.采用分布式架构Map/reduce2.对实时查询进行优化3.高性能Thrift网关4.通过在server端扫描及过滤实现对查询操作预判5.支持XML,Protobuf,和binary的HTTP6.对配置改变和较小的升级都会重新回滚7.不会出现单点故障适用于偏好BigTable:)并且需要对大数据进行随机、实时访问的场合报表,数据挖掘MemcacheC1.快速2.简单3.分布式支持和热扩展KV数据库数据库辅助缓存3.Mongodb概述3.1.Mongodb内部文件和内存管理结构:Database,Collection,Document数据库DB集合Collection1集合Collection2文档Document1文档Document2文档Document3文档document4逻辑关系对比MongodbMysqlDb(数据库)Database(数据库)Collection(集合)Table(表)Document(文档)Row(行)Field(列)Col(字段)每个数据库都有相应的数据库文件示例:新建了两个数据库(test,test1),并在两个collection(user1,user2)分别插入记录显示相关数据[root@localhostdb]#ls-l-rwxr-xr-x1rootroot512-2317:07mongod.lock-rw-------1rootroot1677721612-2317:08test.0-rw-------1rootroot3355443212-2317:08test.1-rw-------1rootroot1677721612-2317:08test1.0-rw-------1rootroot3355443212-2317:08test1.1-rw-------1rootroot1677721612-2317:08test1.ns-rw-------1rootroot1677721612-2317:08test.nsdrwxr-xr-x2rootroot409612-2317:08_tmp分别按两倍递增,16M,32M,64M,128M…..2G,最大为2G,所以mongodb单服务器和数据库最大存储上限为2G内存管理方式1.Mongod启动时,会载入相应文件到物理内存,并把内存管理交给系统,内存使用和结构如下所示,如果数据量很大,mongod启动的速度会较慢2.物理内存,虚拟内存,swap,MMAP使用MMAP映射文件到虚拟内存,并映射虚拟内存到实际的物理内存Linux内核stack进程MongodTest.1Test1.0Test1.1…NullLinux内核stack进程MongodTest.0Test.1Test1.0Test1.1…Null未分配32bit内存上限为4G-1G(内核占用)-0.5堆栈=2.5即32位系统的内存可寻址上限是2.5G62bit内存上限为12T所以mongodb的单数据库上限也相应的增加所以32位系统mongod的单数据库文件上限为2G3.物理文件被分成相应的块,每个块之间使用双向链表来连接Linux内核stack进程MongodTest.0Test.1Test1.0Test1.1…NullTest.nsTest1.ns基本信息上一块指针下一块指针Test1.0Test1.0Data4.内存按照16M,32M,64M…2G递增方式进行分配,会预留相应的内存空间这是mongod会大量消耗内存的原因,即使一条记录,也会占用16M的内存空间,并且还不包括test1.ns所预先分配的内存空间这样的机制有利于防止较小的数据库浪费过多的磁盘空间,同时又能保证较大的数据库有相应的预留空间使用。5.Test.ns名字空间索引,保存着相应的文件索引每一条记录保存着相应的名字空间(包括collection的关键信息)Linux内核stack进程MongodTest.0Test.1Test1.0Test1.1…NullTest.nsTest1.nsUse1User2User3Test1.0Test1.0...1.name:user12.status:size,count3.firstextend起始地址4.lastextend终止地址5.indexdata地址6.内存的分配,新加入的数据,看是否有适合的空闲内存块可以分配,如果没有则增加新的数据块Mongodb需要定期来进行数据压缩,以释放掉相应的空闲内存,移动相应数据,把内存碎片整理成完整的内存块,以便于进行重新分配。repairDatabase()db.runCommand({compact:'yourCollection'});分别进行数据库的压缩和单个集合的压缩3.2.BSON数据格式索引的概念—数据库Mongdb的安装和配置1.下载Linux,windows,macosx,solaris编译和Source版安装建议选择64bit版本,能够支持更大的数据存储,32bit仅仅支持最大2G的文件建议选择编译版本安装,能够适应特性的硬件和系统平台,能够进行定制和配置安装,而且效率较高,不会出现兼容性错误,建议在产生环境使用一般选择在linux平台安装2.在linux平台安装步骤1:解压cpxx.tgz/usr/localtarzxvfmongodb.tgz步骤2:建立相应的数据库目录和日志目录cd/usr/local/mongodbmkdirdbmkdirlogs步骤3:启动mongodbcd/usr/local/mongodb/bin/usr/local/mongodb/bin/mongod–dbpath=/usr/local/mongodb/db–logpath=/usr/local/mongodb/logs/mongo.log--fork步骤4:安装相应的服务vi/etc/rc.local添加/usr/local/mongodb/bin/mongod–dbpath=/usr/local/mongodb/db–logpath=/usr/local/mongodb/logs/mongo.log--fork步骤5连接mongodmongo步骤6查看mongo日志vi/usr/local/mongodb/logs/mongodb.log3.Windows平台安装步骤1:解压mongoxx.zip到指定目录如c:\步骤2:建立相应的数据库目录和日志目录c:\mongodb\dbc:\mongodb\logs步骤3:启动mongodbcdc:\mongodb\binmongod–dbpath=c:\mongodb\db–logpath=c:\mongodb\logs\mongodb.log步骤4:安装相应的服务mongod–dbpath=c:\mongodb\db–logpath=c:\mongodb\logs\mongodb.lognetstartmongodb步骤5连接mongodmongo步骤6查看mongo日志4.Linux源码安装(待完善)5.配置参数说明基本配置----------------------------------------------------------------------------------quiet#安静输出--portarg#指定服务端口号,默认端口27017--bind_iparg#绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP--l
本文标题:MongoDB开发使用手册
链接地址:https://www.777doc.com/doc-4917885 .html