超越NoSQL:为分布式SQL正名

来源 :计算机世界 | 被引量 : 0次 | 上传用户:cares
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  起初有文件,后来有基于结构化文件的导航数据库,然后出现了IMS和CODASYL。大概40年前,出现了首批关系数据库。在20世纪八、九十年代的大部分时间,“数据库”严格意义上指“关系数据库”。SQL(标准查询语言)占主导地位。

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

攻击SQL


  NoSQL以同样的方式攻击关系数据库和SQL。这回的主要问题是,互联网颠覆了具有40年历史关系数据库管理系统(RDBMS)架构的基本前提。这种数据库旨在节省宝贵的磁盘空间,并可纵向扩展。然而现在有太多的用户和太多的任务,一台胖服务器处理不了。NoSQL数据库则宣称,如果数据库没有连接(join),没有标准查询语言(因为实现SQL需要花费时间),也没有数据完整性,那么就可以横向扩展以处理众多用户。这解决了纵向扩展的问题,但也带来了新问题。
  与这些联机交易处理系统(OLTP)并行开发的是另一种关系数据库,名为联机分析处理系统(OLAP)。这种数据库支持关系结构,但在执行查询时就知道它们将返回大量数据。上世纪八、九十年代的公司企业仍主要由批处理驱动。此外,OLAP系统为开发和分析人员提供了将数据想象成n维数据集并加以存储的能力。如果你设想二维数组和基于两个索引的查询,以便基本上与恒定时间一样高效,但是随后在此基础上添加另一个维度,以便可以执行实质上是3个或更多因素(比如供应、需求和竞争对手数量)的查询,你就可以更高效地分析和预测。然而,构建这些元素是一项费力又高度面向批处理的工作。
  图形数据库几乎与横向扩展型NoSQL同一时间面市。许多事物本身不是“关系型”,或者不是基于集合论和关系代数,而是基于父子关系或朋友的朋友关系。一个典例是模型中的产品系列-产品品牌-款型-部件。如果你想知道“我的笔记本电脑搭载什么主板?”,会发现制造商的采购来源很复杂,光有品牌或型号可能不够。如果你想知道某产品系列中使用的所有主板,在经典(非CTE即通用表表达式)SQL中,你必须遍历表,并且分多个步骤进行查询。最初,大多数图形数据库根本就不分片。实际上,无需将数据实际存储为图形,就能完成许多类型的图形分析。

兑现和未兑现的NoSQL承诺


  NoSQL数据库的扩展性确实比Oracle数据库、DB2或SQL Server(它们都基于40年前的一种设计)好得多。然而,每种NoSQL数据库都存在新的限制:
  键值存储:没有比db.get(键)更简单的查询了。然而,世界上许多数据和使用场景无法以这种方式来设计结构。此外,我们其实在谈论缓存策略。在任何数据库中,主键查询速度很快。重要的只是内存中的数据。在理想情况下,它们像哈希图一样扩展。然而,如果要跑30趟数据库才能将数据放回去或进行任何类型的复杂查询,这行不通。这些系统现在更常作为缓存实施在其他数据库的前面。(例子:Redis。)
  文档数据库:这种数据库之所以流行起来,是由于它们使用JSON,对象又易于序列化成JSON。这种数据库的第一个版本没有连接,将整个“实体”放到一个庞大的文档中有其自身的缺点。没有事务保证,你还会遇到数据完整性问题。今天,一些文档数据库支持一种不太可靠的事务,但它不是大多数人习惯的同一种保护级别。而且,即使对简单查询而言,这种数据库在延迟方面常常速度很慢,尽管它们就吞吐量而言扩展性更好。(例子:MongoDB和Amazon DocumentDB。)
  列存储:这种数据库的查询速度与键值存储一样快,它们可以存储更复杂的数据结构。然而,如果执行像跨3个表(RDBMS术语)或3个集合(MongoDB术语)连接这样的操作,会让人痛苦不堪。这种数据库确实适合时间序列数据(请给我在下午1点至2点出现的所有事务)。
  還有其他更深奥的NoSQL数据库。然而,所有这些数据库的共同点是不支持通用数据库惯用语,而且往往专注于“特殊用途”。一些流行的NoSQL数据库(比如MongoDB)编写了出色的数据库前端和生态系统工具,因而开发人员很容易采用它们,但存储引擎存在严重的限制,更不用说弹性和可扩展性方面的限制了。

数据库标准仍然很重要


  关系数据库占主导地位的原因之一是,它们有一个通用的工具生态系统。首先有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。

GraphQL和状态管理的兴起


  你知道谁总是翘着兩个大拇指想搭车,就想让他的应用进入到数据库里,但却不关心如何实现吗?事实证明,整整一代的开发人员都想这么做。而GraphQL(与图形数据库无关)可将对象图形存储在底层数据存储系统中。这样一来,开发人员就不必担心这个问题了。
  这方面的早期尝试是对象关系映射(ORM)工具,比如Hibernate。它们拿来一个对象后,基于对象到表的映射设置,基本上将对象变成了SQL。这种工具的许多前几代产品很难配置。此外,我们面临学习过程。
  大多数GraphQL实现方法与Sequelize或TypeORM之类的对象关系映射工具兼容。结构良好的GraphQL实现方法和API不会在你的全部代码中泄露状态管理问题,而是在对象图形发生变化时写入并返回相关数据。谁会在应用层面真正关心数据是如何存储的?
  面向对象数据库和NoSQL数据库的基础之一是,应用开发人员要意识到数据在数据库中如何存储方面的复杂情况。当然,这对于开发人员来说很难用较新颖的技术来驾驭,但现在不再困难了,因为GraphQL完全消除了这个问题。

NewSQL或分布式SQL闪亮登场


  谷歌遇到了数据库问题,写了一篇论文,然后编写了一种名为“Spanner”的实现方法,描述了全局分布式关系数据库如何行得通。Spanner引发关系数据库技术领域迎来了新一波创新。你实际上可以有一个关系数据库,不仅让它能扩展,还能在需要时进行全球范围扩展。我们所谈论的是现代意义上的大规模,而不是经常令人失望且日趋复杂的RAC/Streams/GoldenGate方法。
  所以,关系系统中“存储对象”的前提是错误的。如果关系数据库的主要问题是后端而不是前端,将会怎么样?这就是所谓的“NewSQL”或名称更恰当的“分布式SQL”数据库背后的想法。其想法就是将NoSQL存储知识和谷歌的Spanner概念与一种成熟的开源RDBMS前端(比如PostgreSQL或MySQL/MariaDB)结合起来。
  这意味着什么?这意味着鱼和熊掌可以兼得。这意味着你可以有多个节点,并横向扩展——包括跨云可用区扩展。这意味着你可以有多个数据中心或云地理区域——仅用一个数据库。这意味着作为用户,你可以拥有真正的可靠性和永远不会崩溃的数据库集群。
  与此同时,整个SQL生态系统仍有用!你无需重新构建整个IT基础架构就能做到这点。虽然你可能不敢“丢弃并更换”传统的RDBMS,但大多数企业并不打算使用更多的Oracle。最棒的是,你仍可以使用在云端和全球各地的SQL及所有工具。
  本文作者Andrew C. Oliver是开源分布式SQL数据库技术提供商Yugabyte的产品营销高级主管。
  原文网址
  https://www.infoworld.com/article/3564543/beyond-nosql-the-case-for-distributed-sql.html
其他文献
DigiCert最近的一项调查发现,对物联网安全的投资可能会产生积极的重大业务影响。  物联网时代已经到来。83%的公司表示目前物联网(IoT)对于业务非常重要,92%的公司表示物联网将在两年内对公司的业务非常重要。  数据是根据DigiCert委托市场调研机构ReRez Research对全球700家公司进行调查后所得出的结论,目的是为了更好地了解物联网和物联网安全。  我一直认为当人们不再对某
变革始终未停。始于OpenStack开源项目,OpenStack基金会的航船正在朝更加开放的“开放基础设施”领域前行。  开源基础设施峰会Open Infrastructure Summit(以下简称“峰会”)于当地时间4月29日在美国城市丹佛召开,这是OpenStack基金会(以下简称“基金会”)组织的每年两场峰会之一。  来自IDC的数据显示,2018年,全球基于OpenStack的商业市场规
从之前上海市民需要拿着看病的单据回单位报销,到现在各大医院都开设了平台预约、自助支付,再到未来基本医保报销结算“一次办”。科技的力量正让老百姓跑腿次数越来越少,让城市服务更温暖。  如今,这幅基于数字基础的智慧城市美好图景正在逐渐展开。然而,在20多年前,这幅图景的落地却面临着诸多考验。  “那是巨大的挑战,当时业内没有可以参考的案例,从零开始是有难度的,但是它事关民生福祉,这件事办得不好,不仅会
北洋时期,中国留日学人在引进传播西方文化的同时,通过与日本友人移书论学、切磋交流中国传统学术问题,在日本刊物上发表有关中国传统学术的论著等方式,努力向日本介绍传播中国传统文化思想;通过在日发表诗歌、小说,授课、赠书等方式,介绍传播中国现代文学;与日本友人诗词唱和,增进中日知识界的交往与友谊,也弘扬了中国文化传统;组织参与中国传统戏曲对日演出,推动了日本的中国戏曲研究;推动中国绘画艺术作品在日本展出
随着云计算大行其道,DevOps的价值更加凸显。  “接到产品后,运维部门每个人的心中都充满了恐惧。”一位运维产品经理如是说。运维产品经理将自己的恐怖之源归结为——软件开发部门送来的产品在现有底层平台上无法运行,产品体系结构跟现有的存储、网络、部署或者安全模型不匹配等几大原因。  然而,开发部门也有自己的苦衷,“客户要求一款软件产品使用最新的技术和运行平台,还要能马上交付。开发部门只能没日没夜地加
如果没有计划,您就是盲目飞行。这里列出了您应该遵循的9个步骤。  在开发应急响应(IR,Incident Response)计划时,细节非常关键。但是,即使是最成功的IR计划也可能缺乏关键信息,导致不能很快的恢复正常业务运营。  Cybereason的这一指南深入介绍了九个经常被遗忘,但是非常重要的步骤,您应该将其纳入您的IR计划中。  整个公司都要做好准备  一名优秀的安全领导应能让全公司的员工
[摘要]清末“新政”时期,官方为了维护社会治安,改良社会风习,同时也为确保其统治的稳固,对“私设神坛”、迎神赛会等迷信陋俗进行治理,并得到民间的呼应,取得一些成效。但由于迷信陋俗相沿已久,积习难以骤然革除,加以它在官场依然盛行,这样,使之虽有限禁但难收戒除良效。  [关键词]清末,官方,迷信陋俗,治理,成效  [中图分类号]K25 [文献标识码]A [文章编号]0457-6241(2007)04-
通过对20世纪50-70年代初中国对外战略的历史考察,可以发现中国对日邦交正常化战略发挥了关键作用。中国政府在防止日本军国主义复活原则的基础上,首倡“以民促官”及“官民并举”的基本方针,提出正确对待历史问题并放弃战争赔款,并采取“先美后日、以美促日”的外交战略于1972年实现了中日邦交正常化,取得了继中美发表《上海公报》后的又一外交胜利。虽然中国对日邦交正常化战略在实施过程中历经曲折,但它兼具現实
今天的CIO会感觉自己就像是马戏团的表演者,同时处理多个项目,还要确保没有一个项目失败。疫情使这个问题显得尤为紧迫,一方面是公司要求在家工作,另一方面又需要加快数字化转型。然而,当全世界开始在疫情后恢复过来时,随着远程工作、安全、数字化转型、自动化及其他紧迫的项目开始需要重新关注和迅速完成,同时处理多个项目很快会变得更迫切。  由于压力会变得很大,现在制定策略,规划好如何在不牺牲时间、预算或质量的
在长沙举行的华为中国生态伙伴大会2017上,华为强调,要通过平台和生态的双轮驱动来做大产业蛋糕。  刚刚结束的华为中国生态伙伴大会2017,是华为进入企业业务市场以来的第七届伙伴大会。“7”在数字中一直有着特殊的含义,月亮的运转周期是28天,以7天为一个阶段,世界上有七大奇跡;在古希腊,7是完美的数字,它是3和4的和,代表着三角形和四边形,这两种形状在希腊是完美无缺的。  不同于前六届的“合作伙伴