日期:2014-05-16  浏览次数:20539 次

为什么人们对mongo感兴趣

假象我们在制作一个电子商务网站,如果我们使用关系型数据库,比如说mysql,那么一个product我们将会分别在几个表中保存,如果我们想要获得一个产品的全部信息,就不得不做很多的join,所以在设计数据库时候我们就需要考虑数据最好以什么样的结构来保存。

但是如果我们使用非关系型数据库,比如说mongo,我们完全可以将一个produce的数据存储在一个document中,一样也可以进行查询,而且mongo使用bson结构来存储,对于很多面向对象的语言来说,可以按照数据本身的结构进行保存,而不必分别存储在多个表当中。

?

mongo被设计成分布式的,而且使用于web application。

?

mongo是面向文档的,它不必像关系型数据库那样的组织关系,而且类型也是不固定的,这样的没有schema的设计有时会带来好处,但是也会带来一些坏处。

?

mongo关键的特性:

1、Ad hoc queries

2、indexes

3、replication

4、speed and durability

一些数据库为了达到很快的速度,选择在ram上进行操作,但是一旦服务停掉再恢复的话,这些数据就不一定在了,比如说memcache,所以数据库必须在速度和稳定性上做平衡。对于mongo,默认的是fire-and-forget,也就是说操作无需得到数据库服务的响应,如果想改变,需要配置。那么对于大量的并且无价值的数据,这样的方式是很划算的,反之,应该采取安全模式。

在mongo2.0中,日志记录是默认开启的,可以保证在服务器重启后,数据时一致的。

5、Scaling

扩展单节点的技术被称作纵向扩展,即对单节点增强硬件设施,但是这样无疑是需要开销的,而且扩展往往是有限的。mongo可以水平扩展,即提供replication+shard的模式,每个shard都是一个replication set