Mysql、MongoDB对比和使用场景
mongodb:
更高的写入负载
默认情况下,mongodb更侧重高数据写入性能,而非事务安全,mongodb很适合业务系统中有大量“低价值”数据的场景。但是应当避免在高事务安全性的系统中使用mongodb,除非能从架构设计上保证事务安全。
高可用性
mongodb的复副集(master-slave)配置非常简洁方便,此外,mongodb可以快速响应的处理单节点故障,自动、安全的完成故障转移。这些特性使得mongodb能在一个相对不稳定(如云主机)的环境中,保持高可用性。
数据量很大或者未来会变得很大
依赖数据库(mysql)自身的特性,完成数据的扩展是较困难的事,在mysql中,当一个单达表到5-10gb时会出现明显的性能降级,此时需要通过数据的水平和垂直拆分、库的拆分完成扩展,使用mysql通常需要借助驱动层或代理层完成这类需求。而mongodb内建了多种数据分片的特性,可以很好的适应大数据量的需求。
基于位置的数据查询
mongodb支持二维空间索引,因此可以快速及精确的从指定位置获取数据。
表结构不明确,且数据在不断变大
在一些传统rdbms中,增加一个字段会锁住整个数据库/表,或者在执行一个重负载的请求时会明显造成其它请求的性能降级。通常发生在数据表大于1g的时候(当大于1tb时更甚)。 因mongodb是文档型数据库,为非结构货的文档增加一个新字段是很快速的操作,并且不会影响到已有数据。另外一个好处当业务数据发生变化时,是将不在需要由dba修改表结构。
mysql:
1)这些数据通常需要做结构化查询,比如join,这时候,关系型数据库就要胜出一筹
2)这些数据的规模、增长的速度通常是可以预期的
3)事务性、一致性
4)丰富的锁机制
下一篇: Spring通过名称获取Bean示例
推荐阅读
-
mysql 开发基础系列15 索引的设计和使用
-
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
-
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
-
php中mysql连接和基本操作代码(快速测试使用,简单方便)
-
mongodb 在 linux 中的安装和简单使用
-
MySQL 存储过程和"Cursor"的使用方法
-
mysql视图之创建视图(CREATE VIEW)和使用限制实例详解
-
MySQL中datetime和timestamp的区别及使用详解
-
mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例
-
Perl5和Perl6对比使用Sigils的差别