广告
返回顶部
首页 > 资讯 > 数据库 >数据库发展史(中)
  • 287
分享到

数据库发展史(中)

数据库发展史(中) 2017-12-15 10:12:45 287人浏览 绘本
摘要

数据库发展史(中)

数据库发展史(上)中,为大家介绍了网状数据库和层次数据库、关系数据库、分布式数据库、云数据库的发展史。本篇文章为大家介绍NoSQL数据库和Newsql数据库的发展历程。

NoSQL数据库

尽管关系数据库系统技术已经相对成熟,能很好地处理表格类型的数据,但对业界出现的越来越多复杂类型的数据(如文本、图像、视频等)无能为力。尤其是步入互联网WEB 2.0和移动互联网时代,许多互联网应用有着高并发读写、海量数据处理、数据结构不统一等特点,传统的关系数据库并不能很好地支持这些场景。另一方面,非关系数据库有着高并发读写、数据高可用性、海量数据存储和实时分析等特点,能较好地支持这些应用的需求。因此,一些非关系数据库也开始兴起。

为了解决大规模数据集合和多种数据种类带来的挑战,NoSQL数据库应运而生。NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的数据库。NoSQL最常见的解释是“非关系型(Non-Relational)”,但是“不仅仅是SQL(Not Only SQL)”的解释也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库。它们不保证关系数据的四个特性:原子性、一致性、隔离性、持久性(Atomicity、Consistency、Isolation、Durability,可简称ACID)。

NoSQL是全新的数据库革命性运动的体现,其拥护者提倡运用非关系型的数据存储,相对于铺天盖地的关系数据库运用,这一概念无疑是一种全新的思维注入。因为NoSQL数据库去掉了关系数据模型的特性,因此数据之间没有关系,容易进行扩展。例如,脸书(Facebook)或者推特(Twitter)每天都为用户收集万亿比特的数据,这些数据的存取不需要固定的模式,使用NoSQL无须多余的操作就能实现横向扩展,无形之中也在数据库架构的层面上带来了可扩展的能力。此外,得益于NoSQL数据库数据模型的无关系性,数据库的结构变得比较简单,因此容易支持海量数据的存储和高并发读写,性能比较优秀。

Johan Oskarsson在2009 年发起了一场关于分布式开源数据库的讨论,EricEvans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式和不提供ACID特性的数据库设计模式。2009年在亚特兰大举行的“no:sql(east)”讨论会是一个里程碑,其口号是“select fun,profit from real_world where relational=false;”。因此,对NoSQL最普遍的解释是“非关系型的”,强调键值存储和文档数据库的优点,而不是单纯的反对关系数据库。

虽然NoSQL数据库具有灵活的数据模型、高扩展性和高可用性等特点,但是,NoSQL不支持SQL查询,不支持数据的强一致事务处理,只能保证数据的弱一致性。NoSQL数据库主要包括4种类型: 文档数据库(Document-Oriented Database)、列簇式数据库(Column-family Database)、键值数据库(Key-Value Database)和图数据库(Graph Database)。接下来将分别介绍这四种数据库。

1. 文档数据库

从1989年起,美国Lotus公司(已被IBM 兼并)通过其群组工作软件产品Notes提出了数据库技术的全新概念———文档数据库(Document-Oriented Database),与传统数据库相比,文档数据库是用来管理文档的。在传统数据库中,信息被分割成离散的数据段,而在文档数据库中,文档是处理信息的基本单位。通俗地说,文档数据库假设存储的数据均按某种标准或编码来封装数据,这些封装好的数据可以是XML、YAML、JSON 或者BSON 等,也可以是pdf和微软Office文档等二进制文档格式。例如,XML数据库是针对XML文档做了优化的面向文档的数据库的子类。一些搜索引擎(也称为信息检索)系统如elasticsearch提供了足够的对文档的核心操作,从而满足面向文档数据库的定义。

常见的文档数据库有mongoDB、Apache CouchDB、亚马逊AWS的Document DB等。以MonGoDB数据库为例,它是一个由c++ 语言编写的基于分布式文件存储的文档数据库。MongoDB的每个数据库(Database)下包含多个集合(Collection),每个集合下又可以有多个文档(Document),每个文档中的每条记录(Record)就是一条数据。这与关系数据库的记录(Record)和数据表(Table)的概念相似,但是同一个集合下的文档可以存储格式不同的数据,存储操作更加灵活。其他的文档数据库产品与之类似,在此不一一赘述。

2. 列簇式数据库

传统数据库有列数的限制,而宽表(BigTable、HBase)通过列簇的概念来降低这一限制。但是宽表带来了存储的开销,而列簇数据库通过融合行键值和列来形成统一关键字,并且可以把值分成多个列簇,让每个列簇代表一张数据映射表。典型的列簇式数据库包括Hbase、BigTable、Cloudera和Cassandra等。以Hbase为例,它是一个开源的非关系型分布式数据库(NoSQL),参考了谷歌的BigTable建模,实现的编程语言为Java。Hbase是Apache软件基金会的hadoop项目的一部分,运行于hdfs文件系统之上,为Hadoop提供类似于BigTable规模的服务。

但列簇数据库不同于列数据库。数据库存储方式分为两种: 行存储和列存储。行存储即按照行进行组织存储,适合于交易型业务,例如整行数据的增加和删除; 而列存储是按照列进行存储,适合于分析型业务,例如单列数据的聚集分析。下图是两种存储方法的图形对比。

在这里插入图片描述 列存储和行存储对比图

3. 键值数据库

键值数据库使用简单的键值方法来存储数据,是一种最简单的NoSQL数据库,具有较高的容错性和可扩展性。该类数据库将数据存储为键值对集合,其中键作为唯一标识符,键和值都可以是从简单对象到复杂对象的任何内容。在不涉及过多数据关系业务的需求中,使用键值存储可以非常有效地减少读写磁盘的次数,比关系型存储拥有更好的读写性能,能够解决关系数据库无法存储的数据结构问题。但是该类数据库的事务不能完全地支持ACID特性。

常见的键值数据库包括面向内存的键值数据库Redis和Memcached,面向磁盘的键值数据库RocksDB和LevelDB等。

•Redis是一个使用ANSI C语言编写的开源、基于内存、支持网络、可选持久性的键值对存储数据库。Redis是目前最流行的键值对存储数据库之一,经常被用于存取缓存数据。

•Memcached是一个开放源代码、高性能、分布式的内存对象缓存系统,用于加速动态Web应用程序,减轻关系数据库的负载。它可以应对任意多个连接,使用非阻塞的网络IO。它的工作机制是在内存中开辟一块空间,然后建立一个Hash表,Memcached自管理这些Hash表。Memcached设计简单而强大,简单的设计促进其迅速部署,易于发现所面临的问题,解决了很多大型数据缓存的问题。

•LevelDB是一个由谷歌研发的键值对嵌入式数据库管理系统编程库,以开源的BSD许可证发布。

4. 图数据库

图数据库的历史可以追溯到20世纪60年代的Navigational Databases,这时IBM也开发了类似树结构的数据存储模型。经过30多年的漫长发展,期间出现过可标记的图形数据库Logic Data Model。直至21世纪初,具有ACID特性的里程碑式图数据库产品,如Neo4j、oracle Spatial and Graph,才被开发出来并进行商业化。到2010年后,可支持水平扩展的分布式图数据库开始兴起,例如OrientDB、ArangoDB、MarkLogic。

至今,各式各样的图数据库越来越受到重视,在谷歌、领英、脸书等一些大公司中,已经有了广泛应用。图数据库的成功可以归结为很多因素,但归根结底是因为它们通过大量复杂的信息来支撑各类新型应用,例如知识图谱、社交网络分析。

NewSQL数据库

NoSQL数据库系统不具备高度结构化查询等特性,也不能提供ACID 的操作。此外,由于不同的NoSQL数据库都有各自的查询语言,这使它很难规范应用程序接口。为了解决NoSQL存在的这些问题,NewSQL数据库逐渐被提出来,这个概念是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统关系数据库的ACID和SQL等特性。

2011年,451研究所的Matthew Aslett在其论文中首次提出了NewSQL概念。从2011年后,一些商业公司和研究项目人员开始使用NewSQL来描述他们的系统。2012年谷歌在OSDI(USENIX Symposium on Operating Systems Design and Implementation)上发表了Spanner系统的论文,2013年在SIGMOD(Special Interest Group on Management ofData)发表了F1系统的论文,这两篇论文让业界第一次看到了关系模型和NoSQL的扩展性在超庞大集群规模上融合的可能性。Spanner/F1 论文引起了广泛关注,Cockroach Labs开发了CockroachDB分布式数据库,部署简单,具有很好的易用性;PinGCAP开发了TiDB,结合了关系数据库和NoSQL数据库的特性,具备强一致性和高可用性。

NewSQL数据库正在持续发展,在NewSQL概念下提出的多种数据库设计为开发人员提供了针对不同用例的多种选项,极大地推动了创新和专业数据库设计的发展。但是,没有任何NewSQL系统像传统的SQL系统那样具有通用性,目前大多数NewSQL数据库都是专有软件或仅适用于特定场景,这极大地限制了新技术的普及和采用,而且NewSQL对传统SQL系统的丰富工具仅仅提供部分访问,因此亟待开发具有通用能力的NewSQL系统。

Gauss松鼠会是汇集数据库爱好者和关注者的大本营, 大家共同学习、探索、分享数据库前沿知识和技术, 互助解决问题,共建数据库技术交流圈。

您可能感兴趣的文档:

--结束END--

本文标题: 数据库发展史(中)

本文链接: https://www.lsjlt.com/news/8277.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库发展史(中)
    ...
    99+
    2017-12-15
    数据库发展史(中)
  • 数据库发展史(上)
    ...
    99+
    2021-04-18
    数据库发展史(上)
  • 数据库发展史(下)
    ...
    99+
    2019-01-16
    数据库发展史(下)
  • C/C++Qt数据库与Chart历史数据展示
    在前面的博文中具体介绍了QChart组件是如何绘制各种通用的二维图形的,本章内容将继续延申一个新的知识点,通过数据库存储某一段时间节点数据的走向,当用户通过编辑框提交查询记录时,程序...
    99+
    2022-11-12
  • C/C++中Qt数据库与Chart历史数据展示的示例分析
    这篇文章主要为大家展示了“C/C++中Qt数据库与Chart历史数据展示的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C/C++中Qt数据库与Chart历史数据展示的示例分析”这篇文章...
    99+
    2023-06-25
  • 数据库未来发展趋势(上)
    ...
    99+
    2021-09-25
    数据库未来发展趋势(上)
  • 数据库未来发展趋势(下)
    ...
    99+
    2014-07-29
    数据库未来发展趋势(下)
  • 国产数据库发展情况如何?
    一、数据库开发难度数据库研发是和操作系统相提并论的高难度工作。参考对数据库和分布式很感兴趣,学习路线是什么?这篇文章里说到了很多学习过程,从学术上就能看到其复杂度。然而这还只是万里长征的开始,学术到产品还有...
    99+
    2022-10-18
  • 数据库中如何高效率删除大表历史数据
    这篇文章主要介绍数据库中如何高效率删除大表历史数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!清理大表历史数据通过将非分区表Online Redefinition转换为以删除条件为...
    99+
    2022-10-18
  • 阿里云数据库发展趋势分析
    阿里云数据库作为阿里云的核心产品之一,一直以来都在不断发展和进步。本文将从以下几个方面对阿里云数据库的发展趋势进行分析。 一、云计算的发展趋势随着云计算技术的发展,阿里云数据库也将逐步实现云端化,从而实现更好的性能和可扩展性。未来,阿里云数...
    99+
    2023-11-08
    阿里 发展趋势 数据库
  • 如何看待FoundationDB数据库发展前景?
    如果说数据是科技领域的“石油”,那么数据库就是油井。无论你用哪一个程序,使用哪一个平台,都必须要有一个数据库。 数据库如此重要,以至于各大巨头企业都在抢夺数据库市场。在开源技术领域,数据库已呈疯长之势,...
    99+
    2022-10-18
  • 阿里云数据库的由来和发展
    阿里云数据库是阿里巴巴集团推出的一种云计算数据库服务,具有高效、安全、可扩展等特点,为用户提供一站式数据库解决方案。本文将详细说明阿里云数据库的由来和发展。 一、阿里云数据库的由来阿里巴巴集团成立于1999年,起初是一家电子商务公司,后来发...
    99+
    2023-12-17
    阿里 由来 数据库
  • 处理Zabbix历史数据库办法一
    一 问题描述随着Zabbix监控的主机和监控项目增多,Zabbix的历史数据会越来越多,MySQL数据库磁盘空间很容易就爆满,同时Zabbix前端查询数据会变得越来越慢。特别是通过Zabbix的API生成自...
    99+
    2022-10-18
  • 跨越数据库发展鸿沟,谈分布式数据库技术趋势
    金融行业架构转型需求随着移动化与互联网化的不断发展,我国金融行业的商业模式与技术体系已经逐渐走上了与西方世界完全不同的道路。众所周知,欧美国家的移动化普及率远远不如我国,同时人口基数也有着数量级的不同,这...
    99+
    2022-10-18
  • MySQL数据库技术如何影响职业发展?
    MySQL数据库技术如何影响职业发展?随着互联网的快速发展以及数据爆炸式增长,数据库技术变得越来越重要。作为一种十分流行的关系型数据库管理系统(RDBMS),MySQL在职业发展中扮演着重要的角色。本文将探讨MySQL数据库技术对职业发展的...
    99+
    2023-10-22
    职业发展 MySQL(数据库) 技术(技能)
  • 阿里云数据库的变化与未来发展
    随着数字化转型的加速,数据库技术正在经历着前所未有的变化。作为全球领先的云计算服务提供商,阿里云数据库也在不断发展和创新,以满足企业日益增长的数据处理需求。本文将对阿里云数据库的变化进行深入剖析,并对其未来发展进行展望。 一、阿里云数据库的...
    99+
    2023-12-15
    阿里 未来发展 化与
  • Oracle11g怎么清理数据库的历史日志
    这篇文章主要介绍“Oracle11g怎么清理数据库的历史日志”,在日常操作中,相信很多人在Oracle11g怎么清理数据库的历史日志问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-18
  • Oracle 11g清理数据库历史日志的方法
    这篇文章主要介绍了Oracle 11g清理数据库历史日志的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 创建存放数据库待删除日志文...
    99+
    2022-10-18
  • 处理Zabbixl历史数据库解决办法三---使用MySQL中间件为Zabbix数据库扩容
    一 应用场景描述 前面介绍了两种处理Zabbix历史数据的解决办法,但是如果当监控数据继续增长的话是不足以解决问题的。 处理Zabbix历史数据库办法二---使用MySQL表分区&nbs...
    99+
    2022-10-18
  • 阿里云数据库走向图表设置云数据库技术的发展与应用
    随着云计算的不断发展,云数据库技术已经成为企业数据管理的重要方式。本文将通过阿里云数据库走向图表设置,详细说明云数据库技术的发展与应用。 一、阿里云数据库走向图表设置随着云计算的快速发展,阿里云数据库已经成为企业数据管理的重要工具。为了更好...
    99+
    2023-10-31
    阿里 图表 数据库技术
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作