数据库有哪些类型?
关系型数据库
引入的第一个独立RDBMS是MySQL。相信大部分朋友对MySQL已经非常熟悉了。基本上,MySQL的成长史就是互联网的成长史。我接触的第一个MySQL版本是MySQL4.0,后来的MySQL5.5更加经典——几乎所有的互联网公司都在用。MySQL也普及了“可插拔”引擎的概念。针对不同的业务场景选择不同的存储引擎是MySQL调优的重要方式。比如对有事务需求的场景使用InnoDBMyISAM可能适合并发阅读场景;但是现在大多数情况下我推荐使用InnoDB。毕竟5.6以后已经成为官方默认引擎了。大部分朋友基本都知道MySQL适合什么场景(几乎所有需要持久化结构化数据的场景),我就不赘述了。
另外值得一提的是,MySQL5.6引入了多线程复制和GTID,使得故障恢复和主从运维更加方便。另外,5.7(目前是GA版本)是MySQL的重大更新,主要是读写性能和复制性能有了很大的进步(5.6版本实现了SCHEMA级别的并行复制,但意义不大,但MariaDB的多线程并行复制大放异彩,很多人选择MariaDB就是因为这个特性。MySQL5.7MTS支持两种模式,一种与5.6相同,另一种是基于binloggroupcommit的多线程复制,即在主端同时提交的binlog也可以在SLE端应用,实现并行复制)。如果有选择单机数据库技术的朋友,只需要考虑5.7或者MariaDB就可以了,而且5.6和5.7被Oracle接手后,性能和稳定性都有了明显的提升。
一种数据库系统
PostgreSQL有着非常悠久的历史。它的前身是UCB的Ingres,主持这个项目的MichaelStronebraker获得了2023年的图灵奖。后来,该项目被重命名为Post-Ingres,该项目基于BSDlicense下的开源。1995年,几个UCB同学开发了后Ingres的SQL接口,正式发布PostgreSQL95,然后在开源社区一步步成长起来。和MySQL一样,PostgreSQL是一个独立的关系数据库,但是和MySQL的SQL语法方便用户过度扩展不同,PostgreSQL的SQL支持非常强大。PL/SQL在内置类型、JSON支持、GIS类型和对复杂查询的支持方面比MySQL强大很多,而且从代码质量来看,PostgreSQL的代码质量优于MySQL。另外,与MySQL5.7之前的版本相比,PostgreSQL的SQL优化器比MySQL强大很多,几乎所有稍微复杂的查询都比MySQL执行得更好。
从近几年的趋势来看,PostgreSQL的势头也很强劲。我认为PostgreSQL的不足之处在于它不像MySQL那样有强大的社区和群众基础。MySQL经过这么多年的发展,已经积累了很多运维工具和最佳实践,但是PostgreSQL作为后起之秀,设计更好,功能更丰富。计算机培训发现PostgreSQL9之后的版本足够稳定,在选择新的项目技术时是个不错的选择。另外,很多新的数据库项目都是基于PostgreSQL源代码进行二次开发,比如Greenplum。