学习任何东西在没有理解的前提下去背熟一些概念是没有用的,就像只背会了几个概念而没有理解的开发人员去面试是经不住面试官的追问的。前面的两篇对MongoDB做了简单的介绍,能够很快上手,对MongoDB有一个感性的认识。本篇大部分内容来自MongoDB权威指南和MongoDB实战。希望在学习完整个MongoDB后能对本篇的内容有一个全新的认识。

NoSQL简介

NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库。这类数据库主要有这些特点:非关系型的、分布式的、开源的、水平可扩展的。原始的目的是为了大规模 web  应用,这场全新的数据库革命运动早期就有人提出,发展至2009 年趋势越发高涨。NoSQL 的拥护者们提 倡运用非关系型的数据存储,通常的应用如:模式自由、支持简易复制、简单的API、最终 的一致性 (非ACID )、大容量数据等。NoSQL 被我们用得最多的当数 key-value 存储,当然还 有其他的文档型的、列存储、图型数据库、xml 数据库等。相对于目前铺天盖地的关系型数 据库运用,这一概念无疑是一种全新思维的注入。

NoSQL的优势

同关系型数据库相比,NoSQL有下面的一些优势:

  • 适合对数据库高并发读写的需求。
  • 适合对海量数据的高效率存储和访问的需求。
  • 适合对数据库的高可扩展性和高可用性的需求。

由于NoSQL的这些优势,使得NoSQL比较适合以下的一些场景的使用:

  • 对数据库事务一致性要求不高的时候,因为NoSQL不支持事务(MongoDB是不支持事务的,其他的没做研究)。
  • 对数据库的写实时性和读实时性要求不高的时候。
  • 对复杂的SQL 查询,特别是多表关联查询不多的时候。

NoSQL的特点

  • 它可以处理超大量的数据
  • 它运行在便宜的它运行在便宜的 PC 服务器集群上服务器集群上,意思是在数据库不够用的时候进行PC的集群扩展很方便并且成本很低。
  • 它击碎了性能瓶颈,因为使用NoSQL省去了传统的程序模型到SQL之间转换的时间,执行效率更高。
  • 它没有过多的操作,意思是去掉了很多在关系数据库中拥有而在实际又不怎么使用的功能。
  • 它的支持支持者源于社区者源于社区,所有的NoSQL产品都是开源的。

MongoDB简介

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json  的bjson 格式,简称BSON,因此可 以存储比较复杂的数据类型。MongoDB  最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能, 而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。

MongoDB特点

1 丰富的数据模型 MongoDB是一种面向文档的数据库。在MongoDB中文档就相当于关系型数据库中的行。文档中可以包含很复杂的数据结构,这样一条记录就可以表示很复杂的层级关系。比如说文章表有一个字段是评论,在关系型数据库中我们通常会建一个评论表和文章表做关联,在MongoDB中就可以直接将评论存在一条文章记录的文档中。更符合我们的思维。 MongoDB没有模式,也就是说没有表结构,文档的字段可以随时添加,不会对原来数据有任何影响,使开发变得很容易。 2 容易扩展 在一些大型的网站中,数据的增长是非常惊人的。在面临数据增长机器不够用的时候通常有两种做法:

  • 购买更高配置的机器,会花费很大,而且达到物理极限后花钱也买不到更高配置的了。
  • 进行扩展,将数据分散到多个机器上,这种在操作上会显得复杂点。

MongoDB的设计就考虑到了扩展的问题,它所采用的面向文档的数据模型使得可以自动在多台服务器中切割数据。还可以平衡群集的数据和负载,自动进行文档重排。 3 丰富的功能

  • 索引:MongoDB支持通用辅助索引,可以进行多种快速查询。
  • 存储Javascript:不必再使用存储过程了,可以直接在服务器端存取Javascript的函数和值。
  • 聚合:MongoDB支持MapReduce和其他聚合工具。
  • 固定集合:集合的大小是有上限的,这对于日志一类的数据很有用。
  • 存储文件:MongoDB支持用一种容易使用的协议(GridFS)来存储大型文件。

4 更快的速度 高性能是MongoDB的目标,为了提高性能,就必须进行很多精简的设计,相比关系型数据库少了很多功能,但仍然保持着关系型数据库的众多的特性。一些精简设计表现在:

  • 使用MongoDB传输协议作为与服务器交互的主要方式,将比较HTTP、Reset等可以节省不少开销。
  • 对文档进行动态填充,预分配数据文件,用空间换取时间,而且空间对于现在来说已不是问题。
  • 默认的存储引擎使用内存映射文件,将内存管理工作交给OS去处理。
  • 动态查询优化器会记住执行查询最高效的方式。

5 简单的管理 MongoDB尽量让服务器自治来简化数据库的管理。除了启动数据库服务器之外,几乎没有什么管理操作了。如果主服务器挂掉了,MongoDB会自动切换到备份服务器上,并将备份服务器提升为活跃服务器。在分布式的环境下,群集只需要知道有新的节点就会自动集成和配置新的节点。

MongoDB适用场景

  • 网站数据:MongoDB非常适合实时的插入,更新与查询,并具备网站实时数据存储所 需的复制及高度伸缩性 。
  • 缓存:由于性能很高,MongoDB 也适合作为信息基础设施的缓存层。在系统重启之后, 由MongoDB 搭建的持久化缓存层可以避免下层的数据源过载 。
  • 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储 。
  • 高伸缩性的场景:MongoDB  非常适合由数十或数百台服务器组成的数据库。MongoDB的路线图中已经包含对MapReduce 引擎的内置支持 。
  • 用于对象及JSON 数据的存储:MongoDB 的BSON 数据格式非常适合文档化格式的存储及查询 。

NoSQL的一些产品

Database Architecture Implementation Language
Hypertable Bigtable, Column-oriented C++
HBase Bigtable, Column-oriented Java
Cassandra Dynamo (with Bigtable data model) Java
MongoDB Auto-sharding C++
Riak Dynamo, Key/Value store Erlang
CouchDB Document-oriented (non-scalable) Erlang
Redis In-memory, Key/Value store C
Project Voldemort Dynamo Java
Tokyo Cabinet/Tyrant Key/Value store C
Dynomite Dynamo Erlang
Amazon S3 Hosted Key/Value store Java
Amazon RDS Hosted MySQL C

转载于:https://www.cnblogs.com/oec2003/archive/2011/09/29/2741999.html

MongoDB(3)--有关NoSQL及MongoDB的一些概念相关推荐

  1. NoSQL Databases - MongoDB

    MongoDB被称为最象RDBMS的NoSQL, 确实是, 因为跟RDBMS相比, 它最大的改动其实就是在数据模型上有所不同. 其次就是MongoDB不支持事务, MongoDB只支持单文件的原子性修 ...

  2. NoSQL数据库-MongoDB和Redis

    NoSQL数据库-MongoDB和Redis   发布于2012-12-20,来源:比特网   1NoSQL简述 CAP(Consistency,Availabiity,Partitiontolera ...

  3. linux yun 安装 redis,Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法(总结篇)...

    如下是我工作中的记录,介绍的是linux系统下NoSQL:MongoDB和Redis的安装过程和遇到的问题以及解决办法: 需要的朋友可以按照如下步骤进行安装,可以快速安装MongoDB和Redis,希 ...

  4. Spring EclipseLink NoSQL - 使用MongoDB和Oracle NoSQL DB构建

    Spring EclipseLink NoSQL - 使用MongoDB和Oracle NoSQL DB构建 我们已经探索了如何实现EclipseLink JPA和众所周知的关系数据库(如MySQL) ...

  5. 2021-05-11 MongoDB面试题 MongoDB成为最好NoSQL数据库的原因是什么

    MongoDB成为最好NoSQL数据库的原因是什么? 以下特点使得MongoDB成为最好的NoSQL数据库:面向文件的:高性能:高可用性:易扩展性:丰富的查询语言.

  6. 【备忘】Mongodb/Redis/HBase NoSql视频教程2017数据库自学教程

    Mongodb/Redis/HBase NoSql视频教程2017数据库自学教程 下载地址:http://www.javaxxz.com/thread-321035-1-1.html

  7. 《MongoDB极简教程》第一章 NoSQL简史 MongoDB安装环境配置

    MongoDB 是一款开源的文档数据库,并且是业内领先的 NoSQL 数据库,用 C++ 编写而成. NoSQL (NoSQL = Not Only SQL ),意即"不仅仅是SQL&quo ...

  8. Nosql数据库MongoDB 理论+实践(JAVA API操作) 代码实践

    文章目录 一.数据库 数据库的概念: 数据库分类 关系型数据库 非关系型数据库 二.Mongo 存储的数据类型 下载 三个层次 基本指令(shell) 三.Mongo Manager Free 概念 ...

  9. NOSQL,MongoDB的操作和索引

    MongoDB创建和查看数据库 MongoDB 将 BSON 文档(即数据记录)存储在集合中,数据库包含文档集合.在 MongoDB 里面存在数据库的概念,但没有模式,保存数据的结构是 BSON 结构 ...

最新文章

  1. python numpy安装-Numpy安装
  2. 高防服务器租用:DDoS保护关键主题与防御保护性质
  3. 关于MVC项目目录结构调整的想法
  4. 消息队列mysql redis那个好_Redis与RabbitMQ作为消息队列的比较
  5. 转贴:电子商务如何提升网站转化率之:谷歌9条
  6. ORACLE DUAL表详解
  7. istanbul —— JavaScript 代码覆盖率检查工具
  8. SQLSERVER2008--日志收缩 or 日志清理
  9. python语言能做什么-python语言能做什么
  10. Windows核心编程_添加开机自启动
  11. 不定积分/定积分——三角函数n次方不定积分公式(包含sec^nx与csc^nx不定积分公式)
  12. BUUCTF WEB easyweb
  13. python实现两个图片的叠加融合
  14. layui 实现下拉多选功能 [xm-select]
  15. TF卡里删掉文件后内存没变大_双11,TF卡,SD卡,读卡器如何选,看这篇就够了...
  16. ros语音识别:pocketsphinx_continuous工作正常而gst-pocketsphinx不能识别相同语音的问题。
  17. word使用Bibtex4word插入参考文献
  18. 介绍两款常用的“图表统计图的插件
  19. Python对列表去重的多种方法(四种方法)
  20. 第一阶冲刺段结束后,对于其他组作品的建议

热门文章

  1. 2022-2028年中国生物基塑料产业发展动态及投资前景分析报告
  2. Redis 笔记(11)— 文本协议 RESP(单行、多行字符串、整数、错误、数组、空值、空串格式、telnet 登录 redis)
  3. GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)
  4. Go 语言同一个包内函数调用、包名和实际路径最后一个目录不一致问题
  5. 2022-2028年中国PVC糊树脂行业市场深度分析及市场规模预测报告
  6. python第三方库之学习flask-restful
  7. 【牛腩新闻发布系统】开发前的准备01
  8. 如何学习:自考小组学习
  9. 卷积池化计算 深度学习
  10. ipykernel_launcher.py: error: unrecognized arguments: -f /Users/apple/Library/Jupyter/runtime/kernel