一、简介
MongoDB是一种强大灵活可扩展的数据存储方式。它扩展了关系型数据库的众多有用功能,如辅助索引,范围查询和排序。MongoDB的功能非常丰富,比如内置的对MapReduce式聚合的支持,以及对地理空间索引的支持。
1.1 丰富的数据类型
MongoDB是
面向文档的数据库(所谓的文档就是一种结构化的数据,类似JSON对象),
不是关系型数据库。放弃关系模型的主要原因就是为了获得更加方便的扩展性,当然还有其他好处。
基本的思路就是将原来
“行”(row)的概念换成更加灵活的
“文档”(document)模型。面向文档的方式可以将文档或者数组内嵌进来,所以用一条记录就可以表示非常复杂的层次关系。使用面向对象语言的开发者恰恰这么看待数据,所以感觉非常自然。
MongoDB没有模式:文档的键不会事先定义也不会固定不变。由于没有模式需要更改,通常不需要迁移大量数据。不必将所有数据都放到一个模子里面,应用层可以处理新增或者丢失的键。这样开发者可以非常容易地变更数据模型。
个人理解的“模式(schema)”就是这样的模子定义,比如关系型数据库里每张表的列都是固定的,每一行数据都必须按照这个模子来增删改查。但是MongoDB不必这样,每条记录可以拥有不同类型不同数量的字段。
1.2 容易扩展
应用数据集的大小在飞速增加。量大到很多数据库都应付不来。T级别的数据现在随处可见。
由于开发者要存储的数据不断增长,他们面临一个困难的选择:该如何扩展数据库?升级(买更好的服务器)还是扩展(将数据分散到很多服务器上)?升级通常是最省力的做法,但是达到了物理极限的话花再多的钱都买不到更好的服务器。而扩展就不同了,不但经济而且可以持续添加:想要增加存储空间或者提升性能,只需要买台一般的服务器加入集群就好了。
MongoDB从最初设计的时候就考虑到了扩展的问题。它所采用的面向文档的数据模型使其可以自动在多台服务器之间分割数据。它还可以平衡集群的数据和负载,自动重排文档。这样开发者就可以专注于编写应用,而不是考虑如何扩展。要是需要更大的容量,只需要在集群中添加新机器,然后让数据库来处理剩下的事。
1.3 丰富的功能
1)索引
MongoDB支持通用辅助索引,能进行多种快速查询,也提供唯一的、复合的和地理空间索引能力。
2)存储JavaScript
开发人员不必使用存储过程了,可以直接在服务端存取JavaScript的函数和值。
3)聚合
MongoDB支持MapReduce和其他聚合工具。
4)固定集合
集合的大小是有上限的,这对某些类型的数据(比如日志)特别有用。
5)文件存储
MongoDB支持用一种容易使用的协议存储大型文件和文件的元数据。
[b]有些关系型数据库的常见功能MongoDB并不具备,比如join和复杂的多行事务。这个架构上的考虑是为了提高扩展性,因为这两个功能是在很难在一个分布式上实现。[/b]
1.4 不牺牲速度
卓越的性能是MongoDB的主要目标,也极大地影响了设计上的很多决定。MongoDB使用
MongoDB传输协议作为与服务器交互的主要方式(与之对应的协议需要更多的开销,如HTTP/REST)。
它对文档进行动态填充,预分配数据文件,用空间换取性能的稳定。默认的存储引擎中使用了内存映射文件,将内存管理工作交给操作系统去处理。动态查询优化器会“记住”执行查询最高效的方式。总之,MongoDB在各个方面都充分考虑了性能。
虽然MongoDB功能强大,尽量保持关系型数据库的众多特性,但是它并不是要具备所有的关系型数据库的功能。它尽可能地将服务器端处理逻辑交给客户端(由驱动程序或者用户的应用程序处理)。这样精简的设计使得MongoDB获得了非常好的性能。
1.5 简便的管理
MongoDB尽量让服务器自治来简化数据库的管理。除了启动数据库服务器之外,几乎没有什么必要的管理操作。如果主服务器挂掉了,MongoDB会自动切换到备份服务器上,并且将备份服务器提升为活跃服务器。在分布式环境下,集群只需要知道有新增加的节点,就会自动集成和配置新节点。
MongoDB的管理理念就是尽可能让服务器自动配置,让用户能在需要的时候调整设置。
就目前本人应用,MongoDB存储项目中的大字段,比如一段html代码,xml文件等;属性很多的对象,比如商品,因为无模式,不需要关联查询。其余一般还是存在关系型数据库里。还可以参考:
http://blog.csdn.net/offbye/article/details/40371395
http://www.admin10000.com/document/2500.html
http://www.cnblogs.com/zs234/p/3388065.html
参考:
《MongoDB权威指南》
分享到:
相关推荐
1. **MongoDB简介**:MongoDB是一个开源的NoSQL数据库,使用JSON格式的文档进行存储,支持丰富的查询语言和索引,提供了高可扩展性和高性能。它采用分布式架构,允许数据分布在多台服务器上,支持水平扩展,能轻松...
public interface UserRepository extends MongoRepository<User, String> { User findByUsername(String username); } ``` Spring Data MongoDB会自动为这个接口生成实现,使得你可以直接调用`findByUsername`...
一、MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,采用JSON(JavaScript Object Notation)文档格式存储数据,具有强大的查询能力,支持丰富的数据模型,包括文档、集合、数据库。其特点是横向扩展性良好...
二、MongoDB简介 MongoDB是一个NoSQL数据库,它使用JSON-like文档进行数据存储,这使得处理复杂数据结构变得简单。它的特点是灵活性、高可用性、可扩展性和高性能,适用于大数据和实时应用。 三、安装MongoDB 1. ...
二、MongoDB 简介 MongoDB 是一种文档型数据库,支持 JSON 格式的文档存储,具有高性能、高可用性和横向扩展性。在 Spring Data MongoDB 中,数据以 Java 对象的形式表示,通过 MongoDBTemplate 或 MongoRepository ...
mongoexport --host <hostname> --port <port> --db <database_name> --collection <collection_name> --type=csv --fields field1,field2,... --out <output_file.csv> ``` 二、MongoDB数据导入 对应的,...
- 如需指定其他数据库或端口,可使用命令 `mongo <database_name> --port <port_number>`。 #### 三、基本命令 1. **创建数据库**: - 数据库在使用时自动创建。例如,使用 `use mydb` 命令切换到名为 `mydb` 的...
mongodb-orm简介Mongodb ORM是基于java的ORM框架,简化了SDK的使用,使代码变得更清晰、简单。 与Ibatis类似,将查询、执行语句封装在xml中,与代码隔离。简称MQL。 项目中使用加入mongodb orm的支持包1. 添加jar...
一、MongoDB 简介 MongoDB 是一个基于分布式文件存储的数据库,设计用于处理大量数据,提供高性能、高可用性和可扩展性。它使用JSON(JavaScript Object Notation)样式的文档作为数据结构,支持多种数据模型,如...
一、MongoDB Java驱动API简介 MongoDB的Java驱动程序是Java应用程序与MongoDB服务器通信的桥梁。它实现了所有的MongoDB协议,并提供了一系列的类和接口,如MongoClient、MongoDatabase和MongoCollection等,供开发者...
1. **配置服务**: 首先,我们需要在服务定义中引入`nameko_mongodb`模块,并配置MongoDB连接信息,包括服务器地址、端口、数据库名等。 2. **定义数据模型**: `nameko-mongodb`允许开发者通过定义类来创建数据模型...
#### 一、MongoDB 简介 MongoDB 是一种基于分布式文件存储的开源数据库系统。它属于 NoSQL 数据库的一种,使用 BSON(Binary JSON)格式来存储数据,支持动态模式,使得开发过程更加简单快捷。 #### 二、Windows 下...
### Flink 同步数据+mongo<->hive+支持复杂类型 #### 一、Flink 简介 Apache Flink 是一个用于处理无界和有界数据流的开源流处理框架。它提供了高吞吐量、低延迟的数据处理能力,并且支持事件时间处理、状态管理等...
3. **启动服务**:在命令行中输入`mongod.exe --dbpath <data directory>`来启动MongoDB服务。其中`<data directory>`是指定的数据存储目录,如`C:\data\db`。 #### 配置文件 MongoDB可以通过配置文件(`mongod....
#### MongoDB简介 MongoDB是一款开源、跨平台、分布式的NoSQL(非SQL或非关系型)数据库系统。它不像传统的SQL数据库那样使用表格来存储数据,而是采用更加灵活的文档模型来存储各种形式的数据。这种文档模型使得...
1. 自动搭建:MongoDB实例基于三副本的副本集构建,确保数据的高可用性。容灾切换和故障迁移等高级功能由系统自动处理,对用户透明。 2. 一键备份与恢复:用户可以通过控制台轻松进行数据库的备份和恢复操作,确保...
在地域和可用区的选择上,阿里云MongoDB目前覆盖华北1(青岛)、华北2(北京)、华东1(杭州)、华东2(上海)和华南1(深圳)五个地域,每个地域内设有多个可用区,这些可用区之间内网互通,但故障隔离,保证了数据...
1. MongoDB 简介: MongoDB 是一个跨平台数据库,其数据模型基于 BSON(Binary JSON),这种格式允许存储复杂的数据结构,如数组和嵌套的对象,类似于 JSON 文档。MongoDB 不需要预定义的模式,这意味着在插入数据时...