mongodb的介绍、原理以及使用场景

什么是MongoDB ?
	MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
	在高负载的情况下,添加更多的节点,可以保证服务器性能。
	MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
	MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象
主要特点
	MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
	你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
	你可以通过本地或者网络创建数据镜像,这使得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使用内存映射存储引擎,

  1. 它会把数据文件映射到内存中,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能。MongoDB并不干涉内存管理工作,而是把这些工作留给操作系统的虚拟内存管理器去处理,这样做的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占多大内存,幸运的是虚拟内存管理器的存在让我们多数时候并不需要关心这个问题。
  2. MongoDB的内存使用机制让它在缓存重建方面更有优势,简而言之:如果重启进程,那么缓存依然有效,如果重启系统,那么可以通过拷贝数据文件到/dev/null的方式来重建缓存
mongo使用场合

    mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。mongo适用于以下场景:

  a.网站数据:mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

  b.缓存:由于性能很高,mongo也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源过载。

  c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。

  d.高伸缩性的场景:mongo非常适合由数十或者数百台服务器组成的数据库。

  e.用于对象及JSON数据的存储:mongo的BSON数据格式非常适合文档格式化的存储及查询。

不适合的场景:

  a.高度事物性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

  b.传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

  c.需要SQL的问题。


  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
7.4 7.4 文档 文档型数据库 型数据库 1 数据库原理及应用 电子科技大学-张凤荔 数据库系统原理与开发 MongoDB数据库的组成 MongoDB的集群架构 【 【本节学习目标 本节学习目标】 】 2 数据库原理及应用 电子科技大学-张凤荔 数据库系统原理与开发 一、文档数据库的组成 面向集合且模式自由的文档型数据库。面向集合--数据被分组为集 合(文档);数据模式自由;存储的数据是键值对的集合,键是字符 串,值是任意类型,包括数组和文档。 文档是MongoDB中数据的基本单元,集合可以被看作没有模式的表, MongoDB每个实例都可容纳多个独立数据库,每个数据库都有自己 的集合和权限(数据库)。 文档 (Document)--- 文档组集合 :Collection -- 多个集合 : 数据库 (database)。一个实例支持多个数据库(database) 3 数据库原理及应用 电子科技大学-张凤荔 数据库系统原理与开发 1 数据库对应的文件信息 默认数据目录是/daba/db,存储所有的数据文件,每个数据库都包 含一个.ns文件和一些数据文件,例如test数据库,数据库的文件 就会由test.ns、test.0、test.1、test.2等组成。 预分配空间的机制,用0进行填充。 每新分配一次,它的大小都会 是上一个数据文件大小的2倍,每个数据文件最大2G。 数据库的每张表都对应一个命名空间,每个索引也有对应的命名空 间,这些命名空间的元数据集中在*.ns文件中。 4 数据库原理及应用 电子科技大学-张凤荔 数据库系统原理与开发 例子– 数据库的相关文件 test数据库包含3个文件用于存储表和索引数据,test.2预分配的 空文件,test.0和test.1分到相应的盘区对应不同的名字空间。 每个命名空间可以包含多个不同的盘区,不是连续的,命名空间对 应的盘区随着分配的次数不断增长的。 不用释放回收空闲的磁盘 空间。 mongodb的数据将会保存在底层文件系统中,dbpath设定为 "/data/db"目录,创建一个database为"test",collection为 "sample",然后在此collection中插入数条documents。我们查 看dbpath下生成的文件列表: 5 数据库原理及应用 电子科技大学-张凤荔 数据库系统原理与开发 例子– 数据库的相关文件 test已经有6个数据文件(data files),每个文件以 "database"的名字 + 序列数字组成,序列号从0开始,逐个递增, 数据文件从16M开始,每次扩张一倍(16M、32M、64M、128M...) > ls -lh -rw------- 1 mongo mongo 16M 11 6 17:24 test.0 -rw------- 1 mongo mongo 32M 11 6 17:24 test.1 -rw------- 1 mongo mongo 64M 11 6 17:24 test.2 -rw------- 1 mongo mongo 128M 11 6 17:24 test.3 -rw------- 1 mongo mongo 256M 11 6 17:24 test.4 -rw------- 1 mongo mongo 512M 11 6 17:24 test.5 -rw------- 1 mongo mongo 512M 11 6 17:24 test.6 -rw------- 1 mongo mongo 16M 11 6 17:24 test.ns 6 数据库原理及应用 电子科技大学-张凤荔 数据库系统原理与开发 数据库存储--collection 数据库中所有的collections以及索引信息分散存储在多个数据文 件中,数据分块的单位为extent(范围,区域),即一个data file中有多个extents组成,extent中可以保存collection数据或 者indexes数据,一个extent只能保存同一个collection数据,不 同的collections数据分布在不同的extents中,indexes数据也保 存在各自的extents中; 在每个database的namespace文件中,每个collection只保存了第 一个extent的位置信息,每个extent都维护者一个链表关系。 7 数据库原理及应用 电子科技大学-张凤荔 数据库系统原理与开发 2 Namespace文件 对于namespace文件,比如"test.ns"文件,默认大小为16M,此 文件中主要用于保存"collection"、index的命名信息, 可保存collection的"属性"信息、每个索引的属性类型等 通

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值