0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据库40年发展史:NoSQL和NewSQL谁将登上“铁王座”?

如意 来源:计算机世界 作者:计算机世界 2020-09-04 10:47 次阅读

起初有文件,后来有基于结构化文件的导航数据库,然后出现了IMS和CODASYL。大概40年前,出现了首批关系数据库。在20世纪八、九十年代的大部分时间,“数据库”严格意义上指“关系数据库”——SQL(标准查询语言)占主导地位。

后来随着面向对象编程语言日益流行,一些人认为,解决面向对象语言和关系数据库“阻抗不匹配”的办法是在数据库中映射对象。因此,我们最后迎来了“面向对象的数据库”。对象数据库方面有意思的地方是,在许多情况下,它们基本上是内置对象映射器的普通数据库。这种数据库后来渐渐失宠,下一个真正的主流尝试是2010年代的“NoSQL”。

1. 攻击SQL

NoSQL以同样的方式攻击关系数据库和SQL。这回的主要问题是,互联网颠覆了具有40年历史关系数据库管理系统(RDBMS)架构的基本前提。这种数据库旨在节省宝贵的磁盘空间,并可纵向扩展。然而现在有太多的用户和太多的任务,一台胖服务器处理不了。NoSQL数据库则宣称,如果数据库没有连接(join),没有标准查询语言(因为实现SQL需要花费时间),也没有数据完整性,那么就可以横向扩展以处理众多用户。这解决了纵向扩展的问题,但也带来了新问题。

与这些联机交易处理系统(OLTP)并行开发的是另一种关系数据库,名为联机分析处理系统(OLAP)。这种数据库支持关系结构,但在执行查询时就知道它们将返回大量数据。上世纪八、九十年代的公司企业仍主要由批处理驱动。此外,OLAP系统为开发和分析人员提供了将数据想象成n维数据集并加以存储的能力。如果你设想二维数组和基于两个索引的查询,以便基本上与恒定时间一样高效,但是随后在此基础上添加另一个维度,以便可以执行实质上是3个或更多因素(比如供应、需求和竞争对手数量)的查询,你就可以更高效地分析和预测。然而,构建这些元素是一项费力又高度面向批处理的工作。

图形数据库几乎与横向扩展型NoSQL同一时间面市。许多事物本身不是“关系型”,或者不是基于集合论和关系代数,而是基于父子关系或朋友的朋友关系。一个典例是模型中的产品系列-产品品牌-款型-部件。如果你想知道“我的笔记本电脑搭载什么主板?”,会发现制造商的采购来源很复杂,光有品牌或型号可能不够。如果你想知道某产品系列中使用的所有主板,在经典(非CTE即通用表表达式)SQL中,你必须遍历表,并且分多个步骤进行查询。最初,大多数图形数据库根本就不分片。实际上,无需将数据实际存储为图形,就能完成许多类型的图形分析。

2. 兑现和未兑现的NoSQL承诺

NoSQL数据库的扩展性确实比Oracle数据库、DB2或SQL Server(它们都基于40年前的一种设计)好得多。然而,每种NoSQL数据库都存在新的限制:

(1) 键值存储 ·

没有比db.get(键)更简单的查询了。然而,世界上许多数据和使用场景无法以这种方式来设计结构。此外,我们其实在谈论缓存策略。在任何数据库中,主键查询速度很快。重要的只是内存中的数据。在理想情况下,它们像哈希图一样扩展。然而,如果要跑30趟数据库才能将数据放回去或进行任何类型的复杂查询,这行不通。这些系统现在更常作为缓存实施在其他数据库的前面。(例子:Redis。)

(2) 文档数据库 ·

这种数据库之所以流行起来,是由于它们使用JSON,对象又易于序列化成JSON。这种数据库的第一个版本没有连接,将整个“实体”放到一个庞大的文档中有其自身的缺点。没有事务保证,你还会遇到数据完整性问题。今天,一些文档数据库支持一种不太可靠的事务,但它不是大多数人习惯的同一种保护级别。而且,即使对简单查询而言,这种数据库在延迟方面常常速度很慢,尽管它们就吞吐量而言扩展性更好。(例子:MongoDB和Amazon DocumentDB。)

(3) 列存储 ·

这种数据库的查询速度与键值存储一样快,它们可以存储更复杂的数据结构。然而,如果执行像跨3个表(RDBMS术语)或3个集合(MongoDB术语)连接这样的操作,会让人痛苦不堪。这种数据库确实适合时间序列数据(请给我在下午1点至2点出现的所有事务)。

还有其他更深奥的NoSQL数据库。然而,所有这些数据库的共同点是不支持通用数据库惯用语,而且往往专注于“特殊用途”。一些流行的NoSQL数据库(比如MongoDB)编写了出色的数据库前端和生态系统工具,因而开发人员很容易采用它们,但存储引擎存在严重的限制,更不用说弹性和可扩展性方面的限制了。

3. 数据库标准仍然很重要

关系数据库占主导地位的原因之一是,它们有一个通用的工具生态系统。首先有SQL。虽然数据库方言可能不一样——如果你是开发或分析人员,想从SQL Server 6.5升级到Oracle 7,可能不得不修复查询,并使用“(+)”用于外部连接,但是简单的切实可行,复杂的很容易转换。

其次,你有ODBC以及后来的JDBC等。几乎任何可以连接到一个RDBMS的工具(除非为了管理该RDBMS而专门设计)都可以连接到其他任何RDBMS。有许多人每天连接到RDBMS,并将数据倒入到Excel以便分析。我不是指Tableau或其他数百种工具,而是指“鼻祖”Excel。

NoSQL摈弃了标准。MongoDB不使用SQL作为主要语言。MongoDB的劲敌Couchbase寻找一种查询语言来取代基于Java的mapreduce框架时,更是创建了一套自己的SQL方言。

标准很重要,无论是为了支持工具生态系统,还是由于许多查询数据库的人不是开发人员——他们都知道SQL。

4. GraphQL和状态管理的兴起

你知道谁总是翘着两个大拇指想搭车,就想让他的应用进入到数据库里,但却不关心如何实现吗?事实证明,整整一代的开发人员都想这么做。而GraphQL(与图形数据库无关)可将对象图形存储在底层数据存储系统中。这样一来,开发人员就不必担心这个问题了。

这方面的早期尝试是对象关系映射(ORM)工具,比如Hibernate。它们拿来一个对象后,基于对象到表的映射设置,基本上将对象变成了SQL。这种工具的许多前几代产品很难配置。此外,我们面临学习过程。

大多数GraphQL实现方法与Sequelize或TypeORM之类的对象关系映射工具兼容。结构良好的GraphQL实现方法和API不会在你的全部代码中泄露状态管理问题,而是在对象图形发生变化时写入并返回相关数据。谁会在应用层面真正关心数据是如何存储的?

面向对象数据库和NoSQL数据库的基础之一是,应用开发人员要意识到数据在数据库中如何存储方面的复杂情况。当然,这对于开发人员来说很难用较新颖的技术来驾驭,但现在不再困难了,因为GraphQL完全消除了这个问题

5. NewSQL或分布式SQL闪亮登场

谷歌遇到了数据库问题,写了一篇论文,然后编写了一种名为“Spanner”的实现方法,描述了全局分布式关系数据库如何行得通。Spanner引发关系数据库技术领域迎来了新一波创新。你实际上可以有一个关系数据库,不仅让它能扩展,还能在需要时进行全球范围扩展。我们所谈论的是现代意义上的大规模,而不是经常令人失望且日趋复杂的RAC/Streams/GoldenGate方法。

所以,关系系统中“存储对象”的前提是错误的。如果关系数据库的主要问题是后端而不是前端,将会怎么样?这就是所谓的“NewSQL”或名称更恰当的“分布式SQL”数据库背后的想法。其想法就是将NoSQL存储知识和谷歌的Spanner概念与一种成熟的开源RDBMS前端(比如PostgreSQL或MySQL/MariaDB)结合起来。

这意味着什么?这意味着鱼和熊掌可以兼得。这意味着你可以有多个节点,并横向扩展——包括跨云可用区扩展。这意味着你可以有多个数据中心或云地理区域——仅用一个数据库。这意味着作为用户,你可以拥有真正的可靠性和永远不会崩溃的数据库集群。

与此同时,整个SQL生态系统仍有用!你无需重新构建整个IT基础架构就能做到这点。虽然你可能不敢“丢弃并更换”传统的RDBMS,但大多数企业并不打算使用更多的Oracle。最棒的是,你仍可以使用在云端和全球各地的SQL及所有工具。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3581

    浏览量

    63330
  • 文件
    +关注

    关注

    1

    文章

    540

    浏览量

    24385
  • MySQL
    +关注

    关注

    1

    文章

    773

    浏览量

    25975
收藏 人收藏

    评论

    相关推荐

    恒压变压器的发展史

    本电子书汇集了各类恒压变压器原理、产品以及它的的发展史,它的各项特性在电子行业得到普遍认可和广泛使用。清版主删除,以为附件超大了不能上传[此贴子已经被作者于2008-7-29 15:14:40编辑过]
    发表于 07-29 14:55

    3分钟,带你走进中国铁路通信发展史

      3分钟,带你走进中国铁路通信发展史  通信,是人类文明进步的标志。在远古时期,人类就通过简单的语言、图符、钟鼓、竹筒等手段传递信息。后来,又发展成烽火狼烟、飞鸽传信、驿站邮递等通信形式。随着
    发表于 05-19 16:15

    紧跟科技潮流,简述智能家居的发展史

    了今天的智能新生活。 下面,我们就来八一八智能家居的发展史,看看人们是经过怎样的努力,才享受到了如今美好惬意的新生活。 1932:Alpha机器人 1939:Elektro机器人 1950
    发表于 12-04 14:09

    阿里云云数据库开了一个未来大会,谈了谈2038数据库趋势

    NewSQL融合,NewSQL产品家族发布,在这场大会上更有看点的是,阿里云数据库团队畅想了未来20年数据发展的整个趋势。“未来的某一天,
    发表于 01-18 11:32

    人脸识别技术的60发展史

    ,这也是人们熟悉的识别方式。简单的来说就是一个让计算机认出你的过程。  人脸识别技术主要是通过人脸图像特征的提取与对比来进行的。人脸识别系统将提取的人脸图像的特征数据数据库中存储的特征模板进行搜索匹配
    发表于 06-20 13:29

    SQL与NoSQL数据库入门基础知识详解

    。扯的稍微多了点,后面在给家分享DKHadoop的安装以及使用,今天想给大家分享的是大数据基础内容中的数据库:SQL与NOSQL。理解这两种数据,只需要搞清楚二者的概念以及有何不同即可
    发表于 12-19 13:56

    美国力科示波器发展史

    电气信号的时域性质。”创始于上世纪四十年代的示波器历经数十发展进步,如今已跃然成为工业界最通用应用最广泛的测试测量仪器,是每一名电子工程师最重要的必备工具。示波器的技术进步是电子工业发展的成果,因为它
    发表于 06-28 06:44

    NoSQL数据库的类别

    NoSQL数据库的四大分类
    发表于 09-12 07:22

    蓝牙耳机发展史

    蓝牙耳机摆脱了有线的束缚,再加上2016起苹果手机率先取消3.5mm耳机口,更是扩大了蓝牙耳机的市场。进入2019,TWS真无线蓝牙耳机得到爆发式增长,下面我来讲解蓝牙耳机的发展史。1、1994
    发表于 10-22 14:29

    Linux系统发展史及版本更迭

    运维必知Linux系统发展史及版本更迭
    发表于 04-29 14:15

    5G的发展史

    5G到底是什么?为什么引得一众通讯巨头相继抢占先机?在这里,将用一组图带您梳理一下5G的发展史。在视频、游戏霸屏移动端的今天,4G已不能满足庞大的流量需求。4G即将成为明日黄花,5G即将接棒流量市场
    发表于 12-24 06:25

    液晶显示技术40发展历程回顾,不看肯定后悔

    液晶显示技术40发展历程回顾,不看肯定后悔
    发表于 06-03 06:24

    硬件:Intel CPU发展史 精选资料推荐

    发展史来向您讲述,处理器是如何一步一步发展到今天的。(有一大波CPU来袭,总有几款你认得)第一部分:20世纪70至80代(1).197111月15日,世界上第一块个人微型处理器40
    发表于 07-26 07:31

    什么是NoSQLNoSQL数据库的使用场景和架构介绍

    NoSQL,全称为Not Only SQL,指的是非关系型的数据库NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库
    的头像 发表于 11-09 11:01 908次阅读
    什么是<b class='flag-5'>NoSQL</b>?<b class='flag-5'>NoSQL</b><b class='flag-5'>数据库</b>的使用场景和架构介绍

    NoSQL 数据库如何选型

    什么是NoSQL数据库?为什么要使用NoSQL数据库?键值数据库内存键值数据库文档
    的头像 发表于 11-26 08:05 176次阅读
    <b class='flag-5'>NoSQL</b> <b class='flag-5'>数据库</b>如何选型