MongoDB 概述
1 数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
1.1 分类
- 关系型数据库 (SQL 结构化查询语言)
- 非关系型数据库(noSQL)
1.2 常见数据库
- MySQL (开源免费)
- SQLServer (微软公司)
- Oracle (甲骨文公司)
- DB2 (IBM公司)
- PostgreSQL (开源 免费)
- SQLite(开源 免费)(小巧、快速、潜入)
- MongoDB (NoSQL)
- Redis (NoSQL)
- Memcache (NoSQL)
1.3 数据库相关该概念
- DB 数据库
- DBA 数据库管理员
- DBMS 数据库管理系统
- DBS 数据库系统
2 NoSQL 数据库
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
2.1 优缺点:
优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
缺点
- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
2.3 NoSQL 数据库分类
类型 | 代表 | 特点 |
---|---|---|
列存储 | Hbase、Cassandra、Hypertable | 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
文档存储 | MongoDB、CouchDB | 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 |
key-value存储 | Tokyo Cabinet / Tyrant、Berkeley DB、MemcacheDB、Redis | 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |
图存储 | Neo4J、FlockDB | 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
对象存储 | db4o、Versant | 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 |
xml数据库 | Berkeley DB XML、BaseX | 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。 |
3 MongoDB 简介
MongoDB是开源,高性能的NoSQL数据库;支持索引、集群、复制和故障转移、各种语言的驱动程序丰富;高伸缩性;
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
shell 命令操作语法和 JavaScript 很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。
相关网址
官网地址:http://www.mongodb.org/ github: https://github.com/mongodb/ API Docs:http://docs.mongodb.org/manual/ nodejs驱动:https://github.com/mongodb/node-mongodb-native