简述数据库的发展历程

549 阅读3分钟

数据库概念的提出源于分隔代码和数据操作的思想,让开发者在编写代码时不再考虑操作或访问数据的复杂性。那时候还是20世纪60年代。

关系型数据库

20世纪90年代,当今最流行的两大开源关系型数据库PostgreSQL、MySQL先后诞生,基于Edgar Codd在1970年提出的关系模型:将数据组织成关系(表),每个关系是元组(行)的无序集合。

分布式数据库

到了21世纪,互联网兴起。

Google 1998,Tencent 1998,Alibaba 1999,Baidu 2000。

面对互联网时代愈发庞大的数据和访问量,起初只能通过换更好的机器来突破系统瓶颈,但这明显不是长久之计。更糟糕的是,数据库在机器之间的迁移通常需要较长时间的停机,而多数互联网应用都是需要24小时在线的。

于是数据库中间件诞生了,对单点数据库进行数据分片,单机变集群来突破性能瓶颈。分片就是分库分表,中间件可以理解为分库分表的解决方案,比如说加个代理之类的。

引入数据库中间件后其实还是有问题的,比如说要考虑分布式事务的问题,还有如何解决连接查询这样的问题等等。数据库被创造的初衷不再,开发者们又要操心起操作或访问数据的问题来了。

这一切的复杂问题都大多是因为PostgreSQL、MySQL等等传统的关系型数据库都是20世纪的老物件了,放在21世纪互联网时代中,难免疲于应付。

NoSQL数据库

后来NoSQL出现了,它的特点刚好和关系型数据库是相反的,它不支持事务,没有强一致,但是扩展性更好,性能更高,这样的特点也是被需要的。我们比较熟悉的Redis、MongoDB、HBase等都属于NoSQL数据库。

NoSQL的出现并没有取代传统的关系型数据库,毕竟有些业务场景是没有办法放弃事务和强一致性的,因此我们总是会看到Redis+MySQL这样的组合出现,试图同时得到二者的优点,但这又引入了Redis和MySQL的数据一致性问题。

NewSQL数据库

那有没有一种数据库既有ACID的事务,又易扩展呢?有的,它被称为NewSQL数据库。NewSQL其实也是百花齐放,但大概可以分三类,例如阿里的OceanBase、PolarDB、RDS就分别是三种类型的NewSQL数据库。

至于云数据库嘛,其实应该叫它云数据库服务,所以本质上是个服务,你只要知道怎么用就行了,不需要知道数据库是怎么部署的,也不需要知道数据库在哪,如果遇到性能瓶颈,也不需要考虑怎么优化,只要加钱就行。