数据库的历史

数据库的演进经历了从结构化数据在线处理到海量数据分析,从 SQL+OLAP 的 RDBMS 到 ETL+OLAP 的 Data Warehouse 和 Data Cube,再到今天异构多源的数据类型的发展历程。

  • 1960s - 1970s 现代数据管理实践开始起步,代表成果:网状数据库和层次数据库。
  • 1970s - 1980s IBM 的 EFCloud 开创了关系性数据库理论(SQL)。
  • 1980s - 1990s OLTP 联机事务处理系统的完善,关系数据管理在工业界和学术界取得了主导地位,并一直保持到今天。
    • 这段时间也属于商业起步阶段,此时 Oracle、IBM DB2、Sybase 以及 SQL Server 和 Informix 等开始出现。
    • 1985 - 1989,面向对象的数据库开始进入研究领域,但没有形成产业。
  • 1990s - 2000s,互联网的发展,出现了文本和多媒体数据库,数据分析和数据挖掘开始萌芽。
    • 开源数据库开始展露头角,出现了PostgreSQL和MySQL等。
    • 与此同时,出现了一些分析型数据库,因为之前出现的都是OLTP,而现在随着大量数据的出现,需要对于这些数据进行分析,因此出现了OLAP,而为了避免读写冲突,就需要建立分析型数据库系统,Teradata、Sybase IQ、Greenplum等就快速成长起来。
  • 2000s - 2010s,以谷歌为代表的互联网公司逐渐推出了 NoSQL 数据库。
    • web/xml 数据库得到飞速发展
  • 2010s 以后
    • AWS Aurora、Redshift、Azure SQL Database、Google Spanner以及阿里云的POLARDB和AnalyticDB等都发展起来了,它们的特点就是云原生、一体化分布式、多模和HTAP的能力。
    • 大数据理论先被产业界和社会认可,并扩展到了学术界。

数据库进步的动力

《大数据系统基础》中说到:计算平台、数据类型和产业应用是数据管理发展的驱动力。其中产业应用的拉动和驱动是核心作用。这三者的驱动作用是协同的。数据类型因产业应用而起,又需要实在的计算平台的承载;若无足够能力的计算平台,产业的应用会因新类型的数据无法妥善处理而受阻。计算平台的驱动作用是明显的,开源计算平台几乎是现代技术跟随者的生命之源,例如 Hadoop 生态圈,如果没有这些开源的计算平台,除了雅虎、谷歌之类的科技龙头公司外,其他科技企业大概率还是只能耗费巨资购买一个大数据时代的 Oracle/sqlserver。

数据库的类型

  • 传统关系型OLTP数据库:用于事务处理的结构化数据库,核心挑战是高并发、高可用以及高性能下的数据正确性和一致性。典型例子是银行的转账记账、淘宝下单、订单以及商品库存管理等。
  • NoSQL数据库及专用型数据库:存储和处理非结构化或半结构化数据(如文档,图,时序、时空,K-V),不强制数据的一致性,以此换来系统的水平拓展、吞吐能力的提升。
  • 分析型数据库 (On-Line Analytic Processing, OLAP):应用场景就是海量的数据、数据类型复杂以及分析条件复杂的情况,能够支持深度智能化分析。其面临的挑战主要是高性能、分析深度、与TP数据库的联动,以及与NoSQL数据库的联动。
  • 比较潦草的数据库分类: | 类型 | 举例 | 特色 | | —- | —- | —- | | Key-Value | redis |
    - fast
    - no-query
    - 适合于 caching
    | | Wide-Column | cassandra, hbase |
    - 无 schema,可存储非关系型数据
    - 无法 join
    - CQL
    - 去中心化的,容易扩展
    - 适用于时间序列等
    | | Document | MongoDB、CouchDB 等 |
    - 在 document 里存储 key-value 值
    - 适合于内容管理,软件开发
    - 不适用于 graph
    | | Relational Database | PostgreSQL、MySQL |
    - SQL
    - Edd Codd
    -

    | | Graph | Neo4j |
    - 适用于知识库、推荐系统等。
    | | Search | ElasticSearch、Solr 等 |
    - 适用于搜索引擎。
    | | Multi-model | FaunaDB 等 | |

NoSQL

  • 粗暴地理解,NoSQL 指代非关系型数据库,包含了大多数不以常规 RDBMS 原则为基础的数据存储,用于处理互联网大规模数据集,例如社交网络图、检索和搜索。
  • 1998年,Carlo Strozzi 首创概念,用于区分他创建的没有 SQL 接口的数据库。
  • 2009年,Eric Evans 在一次开源分布式数据库的活动中使用这个术语提及非关系型且不遵循 ACID 原则的数据库。
  • RDBMS 基于 ACID 事务的概念,而 NoSQL 的则基于 CAP 或 BASE。

    CAP

  • Eric Brewer 在 2000 年提出了 CAP 定理:在设计一个分布式环境中的应用程序时,存在三种基本需求:

    • (1)一致性:修改数据的任何操作后,数据仍然保持一致,并且所有访问该应用程序的用户或客户端都要得到相同的更新后的数据。
    • (2)可用性:系统总是保持可用的。
    • (3)分区容错性:系统即便被分为无法彼此通讯的服务器,也要持续地正常地运行。
  • CAP 定理宣称,任何时间,一个分布式系统只能满足上面三个保障的两个。

    BASE

  • 基本可用 Bascially Available

  • 软状态 Soft State
  • 最终一致性 Eventual consistency

参考资料

相关网站