没有合适的资源?快使用搜索试试~ 我知道了~
MongoDB开发使用手册.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 130 浏览量
2023-09-05
16:44:54
上传
评论
收藏 1022KB DOCX 举报
温馨提示
试读
47页
MongoDB开发使用手册
资源推荐
资源详情
资源评论
MongoDB 开发使用手册
一.基础部分
MongDB 简介
1. NOSQL 历史和产生原因
原因: 互联网用户数的增长和用户参与互联网习惯的改变
1. 初始的静态内容网站,提供中心化的内容服务,
特点: 中心化,用户阅读内容
系统:Apache
2. 动态网页内容,电子商务和论坛网站出现。
特点: 用户访问动态内容,并提供少量内容
系统:Apache+Mysql+Php, IIS+ASP+SQLSERVER, IIS+ASP.net+SQLSERVER,
TOMCAT+JSP+ORACLE
3. 博客出现: 去中心化网站出现。
特点:Web2.0 网站的雏形 用户阅读内容,并开始更多地参与网站的交互
系统: 高并发访问,数据库压力增大 Memcached 缓存的出现,并出现数据库集群的概
念
4. 微博,淘宝等网站出现,以及云计算平台出现,如 google,百度广告,等大规模系统
特点: 用户重复参与网站交互,和内容提供,而系统需要对用户行为进行分析
系统:支持高并发,及时响应,并能够实现分布式计算
NOSQL:Memcached, Redis, Hbase, 等 NOSQL 数据库,不仅仅是简单缓存,并能
够提供分布式要求,包括复制,分片,水平分区,并提供复杂格式的数据存储
总结:
1. 高并发读写操作
普通关系型数据库,很难满足高并发读写的要求,上万次读写的需求
2. 海量数据存储
上亿用户产生大量数据,包括用户数据,访问日志,用户提供内容,用户状态记录等,
这种海量数据的存储,关系型数据库已经很难满足,尤其是从海量数据中提取和汇总数
据成为瓶颈
3. 高可用性和高扩展性
关系型数据库也能支持,同步复制,水平分区扩展,但维护工作相当繁杂,并很难做到
热扩展
4. 内存操作(快速), 并发量高(非阻塞进程), 硬盘回写(数据完整和高效的平衡),备份和恢复
复制(高可用性,和连续服务), 分片(热扩展,海量数据) 操作简单(JSON),负载均衡,
分布式部署(局域网,和物理部分), 事务支持
2. 主流的 NOSQL 介绍
数据库类型
开发语言
特性
应用场景
CouchDB
Erlang
特点:DB 一致性,易于使用
使用许可: Apache
协议: HTTP/REST
双向数据复制
持续进行或临时处理
处理时带冲突检查
因此,采用的是 master-master 复制(见编注 2)
MVCC - 写操作不阻塞读操作
可保存文件之前的版本
Crash-only(可靠的)设计
需要不时地进行数据压缩
视图:嵌入式 映射/减少
格式化视图:列表显示
支持进行服务器端文档验证
支持认证
根据变化实时更新
支持附件处理
因此,CouchApps(独立的 js 应用程序)
需要 jQuery 程序库
适用于数据变化较少,执
行预定义查询,进行数据
统计的应用程序。适用于
需要提供数据版本支持
的应用程序。
如 CMS 系统,数据统计
汇总
Redis
C
特点:运行异常快
使用许可: BSD
协议:类 Telnet
1. 读写操作异常快
2. 较复杂的数据格式 sets, 链表,hash
3. 事务支持
4. 消息订阅 pub/sub
5. 主从同步复制
6. 硬盘回写
7. 第三方 sharding 支持
适用于数据变化快且数
据库大小可遇见(适合内
存容量)的应用程序
股票价格、数据分析、实
时数据搜集、实时通讯
配置下发,全局实时数据
Mongodb
C++
特点:保留了 SQL 一些友好的特性(查询,索
引)。
使用许可: AGPL(发起者: Apache)
协议: Custom, binary( BSON)
1. 支持 javascript 表达式
1.大数据量查询和汇总
2.分布式部署,和水平
扩展
数据统计汇总
2. 硬盘回写
3. 主从复制和集群功能
4. 内建分片机制
5. 较快读写性能
6. 大格式数据支持
7.空数据库大约占 192Mb
8. 事务支持
业务数据库,替代 Mysql
Neo4j
Java
特点:基于关系的图形数据库
使用许可: GPL,其中一些特性使用 AGPL/商
业许可
协议: HTTP/REST(或嵌入在 Java 中)
1.可独立使用或嵌入到 Java 应用程序
2.图形的节点和边都可以带有元数据
3.很好的自带 web 管理功能
4.使用多种算法支持路径搜索
5.使用键值和关系进行索引
6.支持事务(用 Java api)
7.使用 Gremlin 图形遍历语言
8.支持 Groovy 脚本
9.支持在线备份,高级监控及高可靠性支持使
用
适用于图形一类数据。这
是 Neo4j 与其他 nosql 数
据库的最显著区别
例如:社会关系,公共交
通网络,地图及网络拓谱
HBase
Java
特点:支持数十亿行 X 上百万列
使用许可: Apache
协议:HTTP/REST (支持 Thrift,见编注 4)
1. 采用分布式架构 Map/reduce
2. 对实时查询进行优化
3. 高性能 Thrift 网关
4. 通过在 server 端扫描及过滤实现对查询操
作预判
5. 支持 XML, Protobuf, 和 binary 的 HTTP
6. 对配置改变和较小的升级都会重新回滚
7. 不会出现单点故障
适用于偏好 BigTable:)并
且需要对大数据进行随
机、实时访问的场合
报表,数据挖掘
Memcache
C
1. 快速
2. 简单
3. 分布式支持和热扩展
KV 数据库
数据库辅助缓存
3.Mongodb 概述
3.1.Mongodb 内部文件和内存管理
结构: Database,Collection,Document
数据库DB
集合Collection1 集合Collection2
文档
Document1
文档
Document2
文档
Document3
文档
document4
逻辑关系对比
Mongodb
Mysql
Db(数据库)
Database(数据库)
Collection(集合)
Table(表)
Document(文档)
Row(行)
Field(列)
Col(字段)
每个数据库都有相应的数据库文件
示例: 新建了两个数据库(test,test1),并在两个 collection(user1,user2)分别插入记录
显示相关数据
[root@localhost db]# ls -l
-rwxr-xr-x 1 root root 5 12-23 17:07 mongod.lock
-rw------- 1 root root 16777216 12-23 17:08 test.0
-rw------- 1 root root 33554432 12-23 17:08 test.1
-rw------- 1 root root 16777216 12-23 17:08 test1.0
-rw------- 1 root root 33554432 12-23 17:08 test1.1
-rw------- 1 root root 16777216 12-23 17:08 test1.ns
-rw------- 1 root root 16777216 12-23 17:08 test.ns
drwxr-xr-x 2 root root 4096 12-23 17:08 _tmp
分别按两倍递增,16M,32M,64M,128M…..2G,最大为 2G,所以 mongodb 单服务器和数据库
最大存储上限为 2G
内存管理方式
1. Mongod 启动时,会载入相应文件到物理内存,并把内存管理交给系统,内存使用和结
构如下所示,如果数据量很大,mongod 启动的速度会较慢
2. 物理内存,虚拟内存,swap, MMAP
使用 MMAP 映射文件到虚拟内存,并映射虚拟内存到实际的物理内存
Linux内核
stack
进程Mongod
Test.1
Test1.0
Test1.1
…
Null
Linux内核
stack
进程Mongod
Test.0
Test.1
Test1.0
Test1.1
…
Null
未分配
32bit 内存上限为 4G-1G(内核占用)-0.5 堆栈 =2.5 即 32 位系统的内存可寻址上限是 2.5G
62bit 内存上限为 12T 所以 mongodb 的单数据库上限也相应的增加
所以 32 位系统 mongod 的单数据库文件上限为 2G
3. 物理文件被分成相应的块,每个块之间使用双向链表来连接
剩余46页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1902
- 资源: 3901
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功