前提:

    最近做项目,数据库用的是mongodb。之前没接触过。因此从零开始学习一下。

一:为什么要用mongo

1.MongoDB与MySQL的区别

   

为什么数据采集要采用mongodb数据库 为什么要使用mongodb_Mongodb

   

为什么数据采集要采用mongodb数据库 为什么要使用mongodb_缓存_02

   

为什么数据采集要采用mongodb数据库 为什么要使用mongodb_数据_03

   

为什么数据采集要采用mongodb数据库 为什么要使用mongodb_Mongodb_04

2.MongoDB适用于什么场景

MongoDB 的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS 系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。根据官方网站的描述,Mongo 适用于以下场景。

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

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

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

● 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。

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

    当公司数据模型无法具体确定,后期明确要进行扩展时,且表与表之间不需要进行JOIN操作,可以使用mongodb数据库。

    从网上看到下面这个表格    

应用特征

Yes/No?

我的数据量是有亿万级或者需要不断扩容

 

需要2000-3000以上的读写每秒

 

新应用,需求会变,数据模型无法确定

 

我需要整合多个外部数据源

 

我的系统需要99.999%高可用

 

我的系统需要大量的地理位置查询

 

我的系统需要提供最小的latency

 

我要管理的主要数据对象<10

 

3.MongoDB与NoSql的区别

类型

例子

典型应用场景

数据模型

优点

缺点

key-value存储

Redis

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统

key-value

查找数据速度快

数据没有结构化。

列存储数据库

Hbase

分布式的文件系统

以列簇族形式存储,将同一列数据存放在一起

查找速度快,可扩展性强,更容易进行分布式扩展。

功能相对局限

文档型数据库

MongoDB

Web应用

key-value

数据结构要求不严格,表结构可变,易于扩展

查询性能不高,缺乏统一的查询语法

图存储数据库

Neo4J

社交网络,关系图谱

图结构

利用图相关算法

很多时候,需要对整个图进行计算才能获取需要的信息。

4.MongoDB概念解析

SQL术语

MongoDB术语

解释

database

database

数据库

table

collection


row

document


column

field

数据字段

index

index

索引

table join

 

表连接,MongoDB不支持

primary key

primary key

主键。MongoDB自动将_Id字段设置为主键