一、关系型数据库:MySQL
二、非关系型的数据库:MongoDB 和 Redis
三、Mysql MongoDB Redis 的适用场景
一、MySQL
优点
1、体积小、速度快、总体拥有成本低,开源,提供的接口支持多种语言连接操作。
缺点
1、不支持热备份。
2、MySQL不支持自定义数据类型。
3、MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变。
4、MySQL对存储过程和触发器支持不够良好。
5、尽管 MySQL 理论上仍是开源产品,也有人抱怨它诞生之后更新缓慢。然而,应该注意到有一些基于 MySQL 并完整集成的数据库(如 MariaDB),在标准的 MySQL 基础上带来了额外价值。
6、MySQL对XML支持不够良好。
二、MongoDB 和 Redis
MongoDB 和 Redis 都是 NoSQL(非关系型的数据库),采用结构型数据存储。
1.Redis
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。优点:
1、读写性能优异。2、支持数据持久化,支持 AOF 和 RDB 两种持久化方式。
4、数据结构丰富:数据结构丰富:支持 string、hash、set、sortedset、list 等数据结构。
缺点:
1、Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的 IP 才能恢复。
2.MongoDB
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
优点:
1、弱一致性(最终一致),更能保证用户的访问速度。
2、文档结构的存储方式,能够更便捷的获取数。
3、内置 GridFS,高效存储二进制大对象 (比如照片和视频)。
4、内置Sharding。提供基于Range的Auto Sharding机制:一个collection可按照记录的范围,分成若干个段,切分到不同的Shard上。
5、第三方支持丰富。(这是与其他的NoSQL相比,MongoDB也具有的优势)。
6、性能优越:在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。
缺点:
1、mongodb不支持事务操作。所以事务要求严格的系统(如果银行系统)肯定不能用它。3、MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方。
Mysql 或 postgresql 、 mssql 关系型数据库,作为最终的数据存储(稳定)
MongoDB 可以作为一个中间数据缓存层组合出一个必要的数据实体(灵活的 json 结构可以组合出复杂数据类型,又可以复制多台服务器),读取速度也快,高并发构建主从服务器无压力。
Redis 用于统计列表排序等环节 (对 redis 理解不深,只知道是内存数据库读写操作速度快)