为什么NoSQL很重要,为什么SQL仍然很重要?除了研究和教授数据库,富兰克林还创办了一家名为Truviso的数据库公司,该公司于2012年被思科收购。本文将分享他在该领域的一些想法。我们在分布式数据库和数据管理系统方面走了多远?人们谈论“数据库人”时经常会加上修饰词“脾气暴躁、老旧”。事实上,我们监督的许多系统已经运行了两三年。如果你看看MapReduce——在任何并行数据库系统中,比如Teradata,IBM的并行版本,Oracle的RAC,里面都有一个MapReduce引擎。这些技术已为人所知多年。因此,脾气暴躁、年迈的数据库人员过去确实解决了很多问题。话虽如此,作为一个数据库人,我认为事情确实发生了根本性的变化。也许,自从1980年代采用关系模型以来,***已经发生了变化。在许多方面,大数据生态系统与传统数据管理有着根本的不同。特别是现在人们喜欢谈论可扩展性,因为大数据中的“大”意味着你有很多数据。但同样,横向扩展技术已经存在了很长时间。现在由于一些不同的系统假设等,它们有点不同。有些人可能以前认为1,000个节点的系统是一个大系统,但现在他们谈论的是10,000个节点。加州大学伯克利分校教授、AMPLab联合主任迈克尔·富兰克林(MichaelFranklin)认为,在我看来,新一代数据管理的根本区别不仅体现在可扩展性上,还体现在灵活性上。如果您首先查看存储数据然后为数据提供结构的能力——有时这称为读取模式或需要模式——它确实是一个完整的游戏规则改变者。如果你想做一个数据管理项目,你说“好吧,第一步,弄清楚你想在系统的每个部分存储什么数据,它是什么样子的,它是如何组织的,然后它与什么有关您可能想存储在数据库系统中的所有其他数据呢;第二步,收集一些实际数据;第三步,尝试让实际数据遵循您在第一步中创建的模式。但在现实中,许多项目根本无法走得这么远。当人们刚开始做数据仓库之类的事情时,失败无处不在:人们向这些系统投入了大量资金,却无法让它们工作。在这个新环境中,您首先存储数据,然后弄清楚如何处理它,情况完全改变了。现在,你可以收集所有你想收集的技术资料;当你使用数据时,你必须做一些额外的工作;你可能会在性能方面受到一点影响,因为存储没有完全优化;你还有一些一致性问题需要理解。但总的来说,现在将数据管理系统整合在一起的阻力要小得多。“关系模型的真正突破是将数据的逻辑视图、数据处理方式以及数据实际存储方式的物理现实解耦。”如果你看看弹性计算,现在的云计算,HadoopMapReduce的一些机制,还有Spark等技术,你会发现能够添加更多的资源,让系统优雅地使用那些资源的能力,是以前从未有过的。现在您不仅可以扩展系统,还可以在需要时扩展系统,在不需要时收缩系统。这也完全减少了阻力。过去,你必须为你期望解决的安全问题建立一个数据中心或系统,现在已经没有必要这样做了。现在,您可以为您认为将来需要的系统构建系统,然后当您需要添加资源时,您可以利用云资源,或者您可以从一开始就在云中完成所有工作。这从根本上改变了现状。然后是在SQL等查询语言、R等统计处理语言和图形处理语言之间轻松无缝切换的能力——所有这些都可以在Spark中轻松完成。这是完全不同的,因此您不必再拘泥于某种模式来处理数据。数据可以存储在系统中,然后很合理的任务可以用图形系统处理,很合理的任务可以用关键查询语言处理,很合理的任务可以用统计处理语言处理。您也可以混合搭配它们。因此,与您可能会与之交谈的许多脾气暴躁、年迈的数据库人员相比,我认为事情已经发生了根本性的变化,而且不会倒退。我认为我们实际上正处于一个新时代的开始。当然,就像关系数据库革命的开始一样,要让系统更加健壮,提高系统的性能,让系统更易用,还有很多工作要做。但我们才刚刚开始这个旅程。现在Hadoop和Spark越来越流行,SQL还会是那些系统关注的焦点吗?我认为,尽管Hadoop越来越流行,人们对它越来越兴奋,但我和我的许多同事都在等待人们认识到直接编写MapReduce程序真的很麻烦;有专门为解决其中许多问题而开发的语言,尤其是SQL。SQL将在这些系统中发挥重要作用。您可能会在与Hive一样古老的系统中看到它。这就是数据库系统在许多方面变得流行的原因。因为直接编程太难了。此外,您也不想这样做,因为很多人没有通过关系模型和SQL等系统意识到这一点:真正的突破不在于语言。语言只是一种人工制品。真正的突破是解耦你对数据的逻辑视图、你想用数据做什么,以及数据实际存储方式的物理现实。关系模型构建的是愿景,即数据独立性。这允许您更改数据的布局,更改数据的组织、使用的系统、使用的机器,而不必在每次发生变化时都重写应用程序。此外,它还允许您在编写程序时不必过分担心数据的组织方式。这种灵活性对于面向数据的系统来说绝对是至关重要的,因为一旦你收集了数据,它往往会留在那里,而你编写的应用程序不会消失。您需要能够扩展数据的物理布局,并且您需要能够保护开发人员(尽管他们可能不想受到保护)不必担心这些类型的更改。任何与数据库系统打过交道的人都会看到这一点,因为Hadoop基本上打破了所有这些规则,而这个教训是几十年前的教训。我认为NoSQL趋势被夸大了,但也许核心功能(例如需求模式)比名称更重要?NoSQL趋势表明,有一系列重要的应用程序不需要传统数据库努力实现的保证:一致性、并发控制和恢复,诸如此类。您不会丢失任何数据,数据库中没有任何数据不符合模式。所有这些都是为了保护数据库免受程序员的侵害。在许多应用程序领域中,这些东西并不是真正需要的,而且在性能、可扩展性和易用性方面,为这些保证付出的代价实在是太高了。这实际上是NoSQL趋势所显示的,在一些重要的应用程序中,您不需要那些保证。如果放弃这些保证,您可以构建一个极其灵活、极其易于使用的系统。坦率地说,如果不是NoSQL趋势,我认为传统的数据库标准不会像现在这样发展。传统数据库厂商的未来在哪里?这些软件许可证仍然有很多业务。在许多应用中,传统系统仍然是非常好的解决方案。情况确实如此:它需要是记录系统,任何数据都不能丢失,决不能根据以某种方式损坏的信息做出决策。这些问题不会消失。传统厂商在这方面仍有一席之地。而在数据分析领域,传统数据库厂商的日子就更难过了:一方面,世界已经走上了开源的道路,他们传统的商业模式行不通,不得不重新考虑合适的商业模式应该是什么。另一方面,你必须改变你的心态。这些传统的老牌企业能否吸引足够多的具有新思想的人才在这些新领域展开竞争,还有待观察。“在大数据分析和科学计算等一些重要领域,开源肯定是必经之路,因为你可以让很多人共同解决一个问题。但我不相信开源适用于所有事情。“开源的一大优点是系统可以快速变化,你可以快速发展并引入新功能。对于那些需要某种稳定性的人来说,它也提出了一些挑战。当然,大数据分析是开源开发和开源系统的“最佳模式”。一方面,使用该系统的人在技术上精通并且有足够的信心来处理其中的一些问题,比如确保你有正确的版本;底层组件/组件更改后,系统的一部分也会更改。你能想到在过去十年中流行但不开源的许多数据库吗?我大概只能想到一个。目前势头无疑对开源有利,但答案取决于商业模式。这可能会对开源模式***是否会取而代之产生巨大的影响。因为归根结底,人们必须赚钱或支持这些系统,以确保它们稳健、安全,能够处理所有需要完成的事情。然而,当今市场上有许多有趣的开源商业模式。并且在软件和商业模式上会有很多创新。也许最大的挑战是将优秀免费产品的用户转变为付费客户。我以前做我的工作的方式,以及我工作中的每个人过去做他们工作的方式,我们会想出一个新的算法,一个新的连接方法,一个新的索引,一个新的技术,做之后的一些原型工作证明这是一个好主意。然后我们会去甲骨文、IBM和微软这样的公司,告诉他们我们有这个新东西。那些人要么忽略它,要么将它构建到产品中,有时你甚至都不知道。但是我们离实际用户总是有很大的差距。开源完全克服了这个障碍。现在,我们实验室的一个学生有一个好主意,他们可以编写代码,如果它看起来不错,他们会对其进行改进,以便其他人可以看到它的用途并使用它,***他们把它放在GitHub上,突然间,它实际上适用于现实世界。我们最近确实遇到了这样的情况:实验室的一个学生EvanSparks在我们的研究交流会上做了一个演讲,发起人也参与了交流。许多学生跳起来说,“这是我正在研究的某个组件。这是它的工作原理。”***,他们会说,“这个产品将在本月底推出测试版,或者我们上周正在研究这个产品。”推出了测试版。”Evan站起来谈论我们的机器学习管道KeystoneML。“该系统的测试版很快就会推出,”他说。他当着200人的面打开自己的GitHub页面,一举从私有代码库切换到公共代码库。这消除了一个真正好的想法的摩擦,并证明它有效,然后构建一个证明它有效的工件,并真正让人们开始使用它,尝试它,可能采用它。那个阻力完全没有了。作为一名研究人员和学者,让我感到兴奋的是,由于开源软件给我们带来的直接影响,现实世界中的人们愿意尝试、使用、采用和部署开源软件。您可以通过AMPLab的影响看到这一点。原标题:数据库专家谈为什么NoSQL很重要—而SQL仍然很重要,作者:DerrickHarris
