北大青鸟设计培训:数据库有哪些类型?

长期以来,关系数据库一直是大公司的专利,市场被Oracle/DB2等企业数据库牢牢控制。

但随着互联网的兴起和开源社区的发展,90年代MySQL1.0的发布,标志着关系数据库的领域社区终于有了替代方案。

MySQL是MySQL推出的第一个独立的RDBMS。

相信大部分朋友对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接手后,性能和稳定性都有了明显的提升。

PostgreSQLPostgreSQL有着非常悠久的历史。它的前身是UCB的安格尔。主持这个项目的MichaelStronebraker获得了2015年的图灵奖。

后来,该项目被重命名为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。