实现数据库转型的8 项技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实现数据库转型的8 项技术
作者:作者 Peter Wayner 编译杨勇
来源:《计算机世界》 2017年第41期
什么是数据库?很久以前,这很简单。
数据库是一个现代的Bob Cratchit(狄更斯笔下的
人物),把数据放在由非常直的列组成的表格中,每一列的每一行都有一个输入。
漫长而无尽
的矩形显示的信息会一直延伸下去。
关系型数据库已经成为现代计算的基础。
绝大多数网站都只是涂抹在SQL 之上的一堆CSS。
能让我们感到有所不同的不过是在一张大表中又增加了一行。
随着开发人员逐渐意识到并不是所有的东西都适合放到一张简单的表中,人们对大矩阵式
表格的热情正在慢慢消退。
而且开发人员非常聪明,热衷于为每一需求寻找解决方案,他们开
始创建更好、更新的方式来存储信息。
过去的几年里,我们存储数据的其他机制出现了爆炸式
的增长。
这些非常棒的新选择还是数据库吗?还是要把数据放到一些大的矩阵中才能成为数据库吗?有些人喜欢用“数据存储”这个词来区分现代机制,因为“ 数据库” 这个词在我们的头脑中已经根深蒂固,认为它就是一种旧的表结构。
让我们把这些留给哲学家们吧。
我们只是输入数据,然后得到答案。
这里介绍了以新形式和新表格重塑数据库的8 种方法。
GPU 计算
很久以前,开发了视频卡来为孩子们的游戏描绘出精美的场景,而现在所谓的图形处理单
元能够进行大量的非图形处理任务。
数据搜索只是这些处理单元能够胜任的非图形操作任务之一。
挖掘大量的数据来寻找匹配,其本质上就是并行操作,包括了很多重复数百万次的基本的
工作(测试等式)。
因此,把工作交给GPU 的数千个处理器,完成起来就会非常简单。
最成功之处不是在于回答每一查询(显然要快很多倍),而是在准备工作中,因为几乎不
需要预处理。
很多数据库通过维护索引来节省时间,这实际上是针对每个可能搜索的预先计算
结果。
如果这个索引损坏了或者被破坏了,重建它可能需要几个小时、几天,甚至几个月的时间。
不过,如果数据可以放在GPU 的内存中,通常不需要索引就能够得到数据。
如果数据变化
很快,大部分索引从未使用过,那么跳过预处理就能够提高效率。
非易失性存储器(NVRAM)
程序员50 年前小试牛刀的时候就很容易做到这一点。
他们不必采用精心设计的协议来处
理RAM 和硬盘之间的数据,以确保一致性。
这是因为当时的记忆体是铁芯,当电源关闭时数据
并没有被清除。
这些好时光可能很快又会回来,因为芯片制造商正在讨论用NVRAM,即非易失
性存储器来取代RAM。
对于数据库程序员来说,这极大的改变了游戏规则,因为他们最大的挑战(甚至是他们能
继续工作下去的最大原因)正在消失。
有些人建议,数据库可以更快一些,因为会话语义能更
简单些。
而有些人的想法则是在数据写入介质之后构建恢复日志,而不是在写入之前。
没有人知道什么时候能尘埃落定。
如果人们不再需要永久记录,他们还会使用数据库吗?
还是因为需要搜索和索引而再次使用数据库?需要重新思考所有的算法和所有的架构。
今后未
来十年左右,我们会知道使用NVRAM 的最好方式。
扩展SQL
当NoSQL 开始大规模应用的时候,一个很大的特点是能够把您的数据存储扩展到多个节
点上。
像Cassandra 和MongoDB 这样的NoSQL 数据库,看起来具有所有大规模存储的优点,
意味着人们可能会放弃以前习惯了的SQL 环境。
在现实中,这也不需要付出什么代价。
虽然前期很容易在大型数据库中进行一些试验——
因为舍弃了SQL的所有负担,但却不能解释SQL 为什么不能在大规模运行的多台机器上正常工作。
事实上,Oracle 这样的企业已经做了很多年。
最新的大型数据库允许您运用所有SQL 知识,方便地使用分布在大集群上的一组数据。
例如,CockroachDB 提供了一个标准的SQL 查询引擎,可以访问多个节点上复制的数据,并能够
保证ACID。
是的,您需要为实现数据一致性的基本支持而付一些费用,但比您预期的少很多。
地理空间数据库
传统的数据库是建立在一维数据集上的,不支持含有地理信息的二维坐标。
您可以进行模拟,使用标准数据库,参照地理坐标来完成基本任务。
如果您一定要把经度和纬度放在不同的
列中,那么并不难搜索由一系列经度和纬度定义的框架中的所有行。
但是,一旦您想超越这个
基本框架,标准SQL 查询就无能为力了。
地理空间数据库增加了一些额外的功能,简化了在二维空间中的搜索、排序和交叉。
例如,空间索引一般通过在坐标空间上添加一个网格来进行工作,以便更快地搜索二维和三维环境中
相邻的行。
这些索引支持使用“包含”、“重叠”、甚至“触摸”等操作以及由多边形定义的集合来
编写查询。
所有这一切都使得对现实世界的推理更有效。
图形数据库
表是很多数据结构很好的存储库,但却不适合对一个巨大的、新兴的数据结构进行建模,
这一数据结构推动了互联网网络过去10 年的发展。
当所谓的“社交图”爆发时,我们的计算
机中有越来越多的节点,并在它们之间建立了链接。
节点之间的链接通常比其中的数据更重要。
当然,很容易在经典关系型数据库中存储和检索一对节点之间的链接,但却难以进行更复杂的
查询。
在一个友谊网络中,Bob 经过两跳或者三跳就能到达Chris 吗? Mary 在和她的一个朋
友约会吗?
图形数据库更容易进行这样的查询。
由于查询知道怎样查找链接指定的邻域,因此,不会
没完没了的去查找表。
Neo4J、OrientDB 和DataStax 等工具便是众多选择中的一些实例。
它
们也有自己的查询语言。
云数据库
最大的变化之一在于我们怎样购买数据库软件。
过去,我们购买自己的机器,签署许可协议,在我们自己的机器上运行软件。
而现在,云公司提供服务,把数据存储在我们看不见也摸
不着的地方。
他们只是说,当我们想要的时候,就会有数据。
优点是显而易见的,不需要维护服务器,也不需要放置服务器的机房。
没有必要担心许可、配置或者安装补丁,让别人去处理这些头痛的问题。
而且解决方案也很便宜——特别是如果您
没有存储大量数据的话,服务通常按字节收费。
但也有风险。
其他人能访问数据吗?服务器是否受到保护,不受电源浪涌、闪电风暴或者
洪水的影响?数据是否备份到一个可信的异地位置?您不得不信任云供应商所做的一切。
谷歌、微软和亚马逊等主要的云服务提供商提供了一长串的数据库服务。
现在,Oracle、MongoDB 和DataStax 也支持在云中提供数据库。
人工智能(AI)
有人说,人工智能只是最新一代的研究成果,刚刚从实验室里出来投入生产。
如果是这样
的话,有一些新产品和解决方案都有着“机器学习”、“神经网络”和“深度学习”等这样的
流行词。
这些看起来不像数据库,但您的确向其填入数据,问它们问题。
为什么不是呢?人工
智能解决方案的好消息是,您不需要知道您正在寻找什么。
您可以挥动您的手,问一些模糊的
问题,比如“最有趣的”或者“最亲密的”。
没有必要使用正确的关键字,也就是客服人员总
是要求您写下的那些烦人的参考数字。
坏消息是您不知道是否得到了正确的答案,因为您没有精确地设定问题。
这篇博客真的是
最有趣的吗?谷歌之所以成功,最大的秘诀就是没有绝对正确的答案。
如果您要求个大概,那
么没有人会抱怨。
有太多太多的机器学习工具包。
您可以问问您最喜欢的搜索引擎,“最有趣”的人工智能
是什么。
区块链(Blockchain)
区块链这个词涉及到比特币复杂的经济和政治问题,但在所有关于货币的讨论中,其基础
都是极其稳定和实用的分布式数据存储。
每个人都有机会更新长表中的数据,每个人都可以分
享答案。
最令人兴奋的是,每个人都可以分享相同的答案。
这可能适合那些狂热于比特币的企业。
一些开发人员更进一步,讨论了“智能合同”,这是另一种说法,即数据库中的信息是可
信的,足以让人们将其作为所有权之类的法律问题的基础。
您不能用一个普通的数据库来做这
件事,因为任何有管理权限的人都可以修改它。
但也有缺点。
每个用户必须有一个加密密钥,所有的会话都必须经过数字签名。
如果丢失
或者忘记了密钥,那些行中的数据会被永远冻结。
如果密钥被盗,那一切都完了。
换句话说,
区块链是不完美的,但它比标准模型可靠。
R3、Ripple 和IBM 只是探索这一领域的众多竞争者中的三家企业。
很多大银行都有自己
的内部项目。
它们自己还有比特币和山寨币公司,这也是生态支持系统的主要组成。
P e t e r W a y n e r 是InfoWorld 的特约编辑,他撰写了16 本各种主题的书籍,包括开源软件、自动汽车、增强隐私计算、数字交易和信息加密等。
原文网址:
world.c o m / a r t i c l e / 3 2 2 6 0 4 5 /d a t a b a s e / 8 - t e c h n o l o g i e s -transforming-the-database.html。