前提:
最近做项目,数据库用的是mongodb。之前没接触过。因此从零开始学习一下。
一:为什么要用mongo
1.MongoDB与MySQL的区别
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字段设置为主键 |
--------------------- 本文来自 默默努力的小程序员 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/regrethh/article/details/80502795?utm_source=copy