MongoDB阅读精要
部署:
MongoDB服务端可运行在Linux、Windows或IOS平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。64位系统就没有最大文件限制。
32位系统最大限制2g的原因为:32位系统下,所有地址必须能用32位系统访问到(超过2g访问不到了)。所以针对32位操作系统下的mongod最多只能处理2g的数据。
一个数据库的数据存储方式:
比如数据库test分别会有如下文件:
testabc.0,testabc.1,testabc.2
每个文件的大小都会成倍增加。第一个是16m,第二个是32m,第三个是64m。第四个是128m,.......直到最大到2g为止。
那么,2g之后会干嘛呢?
继续2g的创建下去。
疑问:既然这样子的话,为什么不一开始就创建一个2g的文件呢?
2g,2g,2g的创建下去。
php想操作这个数据库,必须下载这个数据库针对php的驱动。其实就是安装一个扩展入php中。
类似于加载php操作mysql的模块一样的。参看:http://us.php.net/manual/en/class.mongocollection.php。
联系:php操作memacache,也是需要加载一个php针对memache的扩展进去。然后有现成的函数可以拿来使用。
从现在可以理解出:mogodb的数据存储在文件系统上。并非内存上。但是速度很快,原因是什么?
1、高效的二进制数据存储方式。bson方式。没有表结构字段的限制关系。表结构扩展容易。
2、无需关联表进行查询。省去关联查询,查询数据快。
3.写入数据速度非常快。
4、有专门的商业公司进行维护和升级。10gen公司。
避免点或者缺点:
1.每个文档必须保持在16M以下
为了解决单个文件大小限制的需求,mogodb引入了gridfs文件系统,
10gen提到:如果这项设置不停的困扰到你,那么是否你的设计模式存在着问题;或者你可以使用文件无大小限制的GridFS。
2.不支持事务。需要用到事务场景的不能使用。对数据一致性要求高的不适合。
3、对磁盘的容量占用比较多。是因为其机制的特性促使的。
原因:删除记录不释放空间。mongodb每次空间不足时都会申请生成一大块的硬盘空间(就是生成一个新的文件),而且申请的量从64M、128M、256M那样的指数递增,直到2G为单个文件的最大体积。随着数据量的增加,你可以在其数据目录里看到这些整块生成容量不断递增的文件。
它采用预先申请文件空间的方式,按照级别进行递增,64M、128M、256M,2g。
4、mogodb把所有空闲的内存当缓存使用。无法预定义申请和设置内存大小。这样
容易受到其他程序干扰出现不稳定。
适合的业务和需求类型:
1、适合作为信息基础设施的持久化缓存层。理解为,数据是存储在磁盘上。数据持久。
2、一般存储数据量大的访问日志信息,用这个比较好。入库速度快,数据量无线增大,可以支持分布式存储。
3、是为海量数据存储与查询而设计的。
我觉得,mongodb与mysql的比较不是一个层面的,无法比较。一个是nosql系列的。一个是关系型数据库。只能以nosql与关系数据库的特点去比较。
mongodb应该与其他数据库redis去比较,都是同属于nosql系列的。
比如redis就不像mogodb那样支持sql式的查询操作。他完全是key-value形式的。
不适合的业务类型:
1)要求高度事务性的系统。
2)传统的商业智能应用。
3)复杂的跨文档(表)级联查询。
一些概念与关系数据库的比较
mongodb 关系数据库
数据库 数据库
集合 表
文档 行
因为是无模式, 列
所以不需要列的概念
objectId文档编号 类似于行的唯一编号
文档:符号{}可以看成是一个文档。
与关系型数据库相比,为什么查询性能提到了?
存储的数据不需要分表。存在一个集合中去了。关系型数据库每个表 的数据是分开文件存储的。因而查询一个商品的全部信息,一般需要查询多个表,去多个文件中操作数据。
而mongodb可以把商品的所有数据,比如sku,属性等信息都存储在一个文档中。由于放在一个地方,查询的速度快了。
MongoDB阅读精要的更多相关文章
- 为什么选择MongoDB?
为什么选择MongoDB? 阅读目录 开始 为啥用MongoDB? 原来的架构 新需求 如何解决? 新思路 选型条件 一些候选者 最初的选择 代价 新的候选者 重新选择 胆子大一点 胆子再大一点 胆子 ...
- MongoDB进阶之路:不仅仅是技术研究,还有优化和最佳实践--转载
摘要:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 本文将从操作手册.技术研究.会议分享.场景应用等几个方面给大家推荐干货好文 ...
- Mongodb Manual阅读笔记:CH9 Sharding
9.分片(Sharding) Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb ...
- Mongodb Manual阅读笔记:CH8 复制集
8 复制 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
- Mongodb Manual阅读笔记:CH7 索引
7索引 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔记 ...
- Mongodb Manual阅读笔记:CH6 聚合
6 聚合 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
- Mongodb源代码阅读笔记:Journal机制
Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODAT ...
- Mongodb Manual阅读笔记:CH5 安全性
5 安全性 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读 ...
- Mongodb Manual阅读笔记:CH4 管理
4 管理 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
随机推荐
- 高效的MySQL分页——利用子查询分页
——先抄回来~~~ 首先看一下分页的基本原理: mysql> explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20G*** ...
- C# 禁止datagridview 自动产生列
dataGridView1.AutoGenerateColumns = false;
- MFC带标题栏的窗口和不带标题栏的窗口最大化
原文链接: http://blog.csdn.net/smartgps2008/article/details/7741223 不带标题栏的窗口最大化: 第一种情况:覆盖任务栏 ShowWindow( ...
- SharePoint 2013怎样创建Wiki库
们使用Wiki页面来分享知识,增进团队合作.下面我将向大家展示SharePoint 2013 Wiki的使用方法.教程我都将以这张Wiki页面(即当前页)为示例. 编辑页面 如要编辑页面,单击顶部Ed ...
- python os.chdir() 用法
概述 os.chdir() 方法用于改变当前工作目录到指定的路径. 语法 chdir()方法语法格式如下: os.chdir(path) 参数 path -- 要切换到的新路径. 返回值 如果允许访问 ...
- [转]PostgreSQL教程(十六):系统视图详解
这篇文章主要介绍了PostgreSQL教程(十六):系统视图详解,本文讲解了pg_tables.pg_indexes.pg_views.pg_user.pg_roles.pg_rules.pg_set ...
- 温故而知新:柯里化 与 bind() 的认知
什么是柯里化?科里化是把一个多参数函数转化为一个嵌套的一元函数的过程.(简单的说就是将函数的参数,变为多次入参) const curry = (fn, ...args) => fn.length ...
- Android Studio 解决 Gradle 依赖冲突的问题
Android Studio 解决 Gradle 依赖冲突的问题 参考链接: Android Studio(Gradle)解决库依赖冲突问题:http://www.mobibrw.com/2016/3 ...
- 不错位的java .class 反编译工具推荐
我们经常会反编译看一些class文件,但是反编译出来的文件里面会有很多杂乱的东西 一直以来都是用的idea来反编译的,只要把class文件往里面一拖就行了 这么用没问题,用来看看源码什么的都OK 但是 ...
- Eclipse Axis2 插件将代码生成WSDL指南
Eclipse Axis2 插件将代码生成WSDL指南 快速学习手册 开发工具:https://spring.io/tools 插件地址:http://axis.apache.org/axis2/ja ...