文章

MongoDB简介

MongoDB简介

1 MongoDB简介

MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案

不是内存型数据库,是一个文件型存储数据库

访问效率接近于redis

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

bson:二进制的json, 结构、表达形式、语法与json一摸一样,但数据管理是使用字节(注意与json的区别)

MongoDB最大的特点在于它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,并且支持对数据库建立索引

MongoDB中支持分组查询、统计

使用集合来存储数据

MongoDB只支持单表查询,不支持连接、多表查询

适用于中小型项目(性能比mysql好,但数据间无关系,会造成数据冗余)

不适用于大型项目(数据量太大,数据冗余太多)

不适和用作缓存

RDBMS: 关系型数据库

2 什么是NoSQL

Not Only Sql

不仅仅是SQL

3 NoSQL数据库的分类

3.1 键值存储数据库

依托于键值存储,存放到Hash表中的一种数据存储

优点:单一数据的读写效率高

缺点:批量操作效率低下

如:Tokyo、Tyrant、Redis、Voldemort、Oracle RDB

3.2 列存储数据库

通常用来应对分布式存储的海量数据。

键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。

如:Cassandra、HBase、Riak

3.3 文档型数据库

部分数据批量查询效率更高

如:MongoDB、CouchDB,国内也有文档型数据库SequoiaDB,已经开源

3.4 图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,他是使用灵活的图形模型,并且能够扩展到多个服务器上

NoSQL通常都会提供Rest接口,如:Neo4J、InfoGrid、Infinite Graph

4 MongoDB与关系型数据库术语对比

sql术语概念(RDBMS)MongoDB术语概念解释
databasedatabase数据库
tablecollection数据库表/集合(所有数据的操作都是依托于集合操作)
rowdocument数据行/文档(一个完整的json数据)
columnfield字段/域
indexindex索引/(某一个集合中,某一个字段创建索引)
table join 表连接/不支持(mongoDB中,集合与集合没有任何关系)
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

5 MongoDB与关系型数据库存储数据对比

6 MongoDb的数据类型

数据类型描述
String字符串,在MongoDB中,UTF-8编码的字符串才是合法的
Integer整形,存储数值,根随服务器长度(32位或64位)
boolean布尔值(存0/1,表真/假)
Double双精度浮点值
Min/Max keys将一个值与BSON(二进制的JSON)元素的最低值和最高值相对比
Array用于将数组或列表或多个值存储为一个键
Timestamp时间戳,记录文档添加或修改的具体时间
Object用于内嵌文档
Null空值
Symbol符号。
Date日期时间,如果通过java存储时间则是格林尼治时间,java读时自动转换时区。如果时客户端直接存储则不做时区转化
本文由作者按照 CC BY 4.0 进行授权