MongoDB系列之----概述(一)

编程学思 2018-01-02 15:00:09 ⋅ 701 阅读

发展历史[维基百科]

NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。

1. NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库[1]。
2. 2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论[2],来自Rackspace的Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。
3. 2009年在亚特兰大举行的"no:sql(east)"讨论会是一个里程碑,其口号是"select fun, profit from real_world where relational=false;"。因此,对NoSQL最普遍的解释是“非关联型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS。

第一部分 关系型数据库与非关系型数据库

1.1 关系型数据库(Relational Database Management System)
1.1.1 关系型数据库概念
关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
1.1.2 关系型数据库的

1. 保持数据的一致性(事务处理)
2.由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)
3. 可以进行Join等复杂查询

不足

1. 大量数据的写入处理
2. 为有数据更新的表做索引或表结构(schema)变更
3. 字段不固定时应用
4. 对简单查询需要快速返回结果的处理

传统数据库的历程

1. 单表单单数据库;
2. 缓存数据;
3. 主从读写分离;
4. 关系数据库很强大,但是它并不能很好的应付所有的应用场景。MySQL的扩展性差(需要复杂的技术来实现),大数据下IO压力大,表结构更改困难,正是当前使用MySQL的开发人员面临的问题。
1.2 非关系型数据库(Not Only SQL)
1.2.1 概念
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
1.2.2 优缺点

优点:

- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系

缺点:

- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
1.2.3 有哪些公司再用
1. Google
2. Facebook
3. Mozilla
4. LinkedIn
....

第二部分 MongoDB

2.1 什么是Mongodb?

MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展高性能数据存储解决方案。
MongoDB 是一个介于关系数据库非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。

2.2 为什么选择MongoDB?
1. 面向文档的存储方式:数据被以JSON风格文档形式存放2. 任何属性均可索引3. 具有复制和高可用特性4. 自动数据分片5. 丰富的查询功能6. 快速的数据库升级7. 有mongodb(10gen)公司提供支持
应该在哪里使用MongoDB?
1. 大数据
2. 内容管理和交付
3. 移动和社交基础设施
4. 用户数据管理
5. 数据平台
不适用场景:
    —要求高度事务性的系统。
    —传统的商业智能应用。
    —复杂的跨文档 ( 表 ) 级联查询。

跟关系型数据库不一样的地方是,它是的以单文档为单位存储的, 你可以任意给一个或一批文档新增或删除字段,而不会对其它文档造成影 响,这就是所谓的schema-free,这也是文档型数据库最主要的优点。 跟一般的key-value数据库不一样的是,它的value中存储了结构信息, 所以你又可以像关系型数据库那样对某些域进行读写、统计等操作。 可以说是兼备了key-value数据库的方便高效与关系型数据库的强大功能。

更多精彩内容请关注“IT实战联盟”哦~~~




全部评论: 0

    我有话说:

    MongoDB系列---数据类型/插入文档(三)

    第一部分 BJSON 与 JSON MongoDB的文档与JavaScript中的对象很相似,JavaScript中的数据交互格式是JSON格式. JSON的数据格式: 1. null;2. 布尔

    Express 系列---概述()

    Express是目前最流行的基于Node.js的Web开发框架,可以快速地搭建一个完整功能的网站。

    MongoDB 数据库的基本操作(二)

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

    安全攻防系列 安全基础概念

      该系列记录学习极客时间–安全攻防技能30讲相关内容 安全的本质 安全的本质就是保护数据被合法地使用。 数据:应用最核心的东西;如用户信息、订单信息等等 合法:大到法律法规、业务

    MongoDB更新(五)

    如果数据库中尚未有数据, 准备测试数据db.test1.insertMany([    {"name": "zhangsan", "age": 19, "score": [90, 80]},    {"na...

    MongoDB 查询文档(五)

    第一部分 前期准备1.1 插入测试数据db.test1.insertMany

    MongoDB 更新/删除文档(四)

    更新文档文档存入数据库之后,就可以采用Update来修改它的内容,db.collection.up

    MongoDB 更新/删除文档(四)

    第一部分 更新文档 文档存入数据库之后,就可以采用Update来修改它的内容, db.collection.update( #查询条件   <query>, #修改器   <update>,  ...

    MongoDB 4.4.5 发布

    MongoDB种面向文档的数据库管理系统,用 C++ 等语言撰写而成,以解决应用程序开发社区中的大量现实问题。MongoDBMongoDB Inc. 于 2007 年 10 月开发

    MongoHelper 0.2.5 发布,Spring-Data-MongoDB 增强工具包

    工具包简化 CRUD 操作,并且提供了类 jpa 的数据库操作。

    MongoDB实战篇:数据库备份与恢复/导出与导入

    mongodump命令可以通过参数指定导出的数据量级转存的服务器......

    MongoDB实战篇:高级查询----$elemMatch与aggregate

    基本的Find查询将在其他章节示例,本文主要针对于遇到的问题与解决的方法做个记录,希望可以减少遇到这类问题的

    iOS直播---主要的概念()

    直播可谓风生水起, 热火朝天, 借此也对音视频进行次深入学习, 希望有需要的大家一块学习.第一步对直播的大

    商城系统 DBShop V3.0 Beta 发布

    全新重构,首次亮相。 系统简介 DBShop企业级商城系统,使用PHP语言基于Laminas(Zendframework 3) + Doctrine 2 组合框架开发完成。可定制、多终端、多场景、多

    Node模块fs模块(六)

    屏幕快照 2017-08-08 上午10.53.21.png 第一部分 概述 Node.js 提供组类似UNIX(POSIX)标准的文件操作API,Node.js中操作文件的模块是fs(File

    温故知新ES6(二)

    温故知新ES6 基础类型

    Node模块Events模块(五)

    Node模块Events模块(五)

    Kafka系列

      分区 Kafka 的消息组织方 式实际上是三级结构:主题 - 分区 - 消息 问题:为什么 Kafka 要做这样的设计?为什么使用分区的概念而不是直接使用多个主题呢? 分区的