MongoDB简介

数据库管理系统

数据的定义:文字、图像、地理位置信息(坐标、经纬度)等。

数据库管理系统的定义:建立、存取和管理数据,保证数据安全和完整性的软件。

常见的数据库管理系统:

  • 关系型:MySQL、Oracle、SQL Server、Db2等
  • 非关系型:MongoDB、Redis、HBase等

NOSQL简介

NoSQL=Not Only SQL,支持类似SQL的功能, 与Relational Database相辅相成。

其适用于性能较高,不使用SQL意味着没有结构化的存储要求(SQL为结构化的查询语句),没有约束之后架构更加灵活。

NoSQL数据库四大家族

  • 列存储:Hbase
  • 键值(Key-Value)存储:Redis
  • 图像存储:Neo4J
  • 文档存储:MongoDB

NoSQL的优势

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

MongoDB

MongoDB特性

MongoDB与RDBMS的最大区别:没有固定的行列组织数据结构,即无需将不同类的数据放入多张表中建立对应关系并分别存储其数据,而是直接放入一份文档进行存储。

数据存储格式

JSON

MongoDB使用JSON(JavaScript ObjectNotation)文档存储记录

JSON数据库语句容易被解析

Web应用大量使用

NAME-VALUE配对

BSON

二进制的JSON,JSON文档的二进制编码存储格式

BSON有JSON没有的Date和BinData

MongoDB中document以BSON形式存放

{
    _id: ObjectID("1"),
    username: “Silence”,
    regDate: “10-10-2015”,
    scores: {
        math: "80",
        english: "200"
    }
}

数据逻辑结构

文档(document)、集合(collection)、数据库(database)

MongoDB与RDBMS数据结构逻辑对比:

MongoDB

RDBMS

集合Collection

表Table

文档Document

行Row

数据库Database

数据库Database

索引值Index

索引值Index

嵌入式文件Embedded Document

合并Join

引用Reference

外键Foreign Key

分片Shard

分区Partition

MongoDB适用场景

  • 网站数据:MongoDB 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性
  • 缓存:由于性能很高,MongoDB 也适合作为信息基础设施的缓存层。在系统重启之后,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载
  • 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储
  • 高伸缩性的场景:MongoDB 非常适合由数十或数百台服务器组成的数据库。MongoDB的路线图中已经包含对 MapReduce 引擎的内置支持
  • 用于对象及 JSON 数据的存储:MongoDB 的 BSON 数据格式非常适合文档化格式的存储及查询
我的数据量是有亿万级或者需要不断扩容
需要2000-3000以上的读写每秒
新应用,需求会变,数据模型无法确定
我需要整合多个外部数据源
我的系统需要99.999%高可用
我的系统需要大量的地理位置查询
我的系统需要提供最小的latency
我要管理的主要数据对象 <10

以上条件满足一个可以考虑MongoDB,满足两个选择MongoDB不会后悔。

 

posted @ 2022-02-14 11:38  残城碎梦  阅读(137)  评论(0编辑  收藏  举报