前言
本文旨在帮助mangoDB的小白初建认识。重点在于介绍mango是什么、它能做什么、有什么优势,这样在使用时哪怕不会操作,对整体的认识也能帮助自己进行有效的查证。所以具体操作和细节还得查看官方文档,或本文参考资料:
MongoDB教程 | 菜鸟教程
1. 概述
MongoDB 是一个可多机集群的分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
非关系数据库的功能往往极其有限,比如Redis并不支持查找,而MongoDB灵活丰富的功能让它作为一个非关系数据库,却是最像关系数据库的一位。
1.1 分布式系统
分布式系统(distributed system)由多机组成,并通过计算机网络连接(本地网络或广域网)通信实现整体功能。
1.2 为什么Nosql
Not Only Sql,它不仅仅是Sql。
很多数据由关系数据库来管理,这使得数据建模和应用程序编程更简单,比如JavaBean和Mysql。
但是今天可以轻松地通过第三方平台(如:Google,Facebook等)访问和抓取数据。由于用户数据和用户操作日志成倍增加,在数据挖掘中,NoSQL 数据库的发展能更好的处理这些大的数据。
1.2.1 nosql的优点
- 不需要固定的模式,高扩展性。
- 支持分布式
- 半结构数据,架构灵活
- 没有复杂的关系
1.2.2 nosql的缺点
- 没有标准化
- 查询功能有限
- 不够直观
1.2.3 nosql的种类
有很多,我只写少数几个大概对比一下
类型 | 举例 | 特点 |
---|---|---|
文档储存 | MongoDB | 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。 |
key-value储存 | Redis, Memcache | 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。 |
列存储 | Hbase | 按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
2 什么是mongoDB
- 基于C++编写的开源分布式数据库
- 在高负载时可以通过添加结点保证服务器性能
- 库中每条数据称作一个“文档”(Document),每个文档数据都是Josn格式,由多个key-value结构的数据构成。
{
name: "一个朋友",
gender: "男性",
hobby: ["萝莉", "宅", "女装"] // 域值也可