设为首页 - 加入收藏 92站长网 (http://www.92zhanzhang.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 平台 javascript 2019 系统
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

传统数据库不适合现代企业架构了?

发布时间:2019-10-14 01:34 所属栏目:[评测] 来源:Jay Kreps
导读:在 2011 年,Marc Andressen 写了一篇文章,题目是《为什么软件正在吞噬整个世界》。其中心思想是如果流程可以通过软件来实现,那么就一定会实现。这已经成为一种投资理论简略的表达方式,这种理论隐藏在硅谷目前独角兽初创企业浪潮的背后。它还是我们如今

在 2011 年,Marc Andressen 写了一篇文章,题目是《为什么软件正在吞噬整个世界》。其中心思想是如果流程可以通过软件来实现,那么就一定会实现。这已经成为一种投资理论简略的表达方式,这种理论隐藏在硅谷目前独角兽初创企业浪潮的背后。它还是我们如今看到的更广泛的技术趋势背后的统一思想,这些技术包括机器学习、物联网、无处不在的 SaaS 以及云计算。这些趋势都在用不同的方法使软件变得更丰富和功能强大,并在企业间扩大其影响范围。

我认为,伴随而来的变化容易被忽视但同样重要。这不仅仅是企业使用更多的软件,而且越来越多的企业通过软件重新定义。也即,企业执行的核心过程(从生产产品的方式到与客户交互的方式、交付服务的方式)正变得越来越多地在软件中指定、监控和执行。这已经是大多数硅谷技术公司的事实情况,但是,这种转变正在蔓延到所有类型的公司,无论其提供什么产品或服务。

为了澄清我的意思,让我们来看一个例子:消费银行的贷款批准流程。这是一个在计算机出现以前就存在的业务流程。传统上,这是一个需要几个星期才能完成的流程,其中涉及银行代理人、抵押贷款官员和信贷官员等,各自以手动过程进行协作。如今,该流程趋向于以半自动化的方式执行,这些功能都有一些独立的软件应用程序,可以帮助使用者更有效地执行。

然而现在,在很多银行中这个操作正在变为一个完全自动化的流程,其中信贷软件、风险软件和 CRM 软件之间相互通信并在几秒内提供决策。这里,银行贷款业务部门基本上变为软件了。当然,这不是说公司将只变为软件(即使在最以软件为中心的公司中还是有很多人的),只是整个业务在用软件定义过程。

????????°????o????é???????°??£?????????????o????

企业不只是把软件用作人工流程生产力的辅助手段,他们正在用代码构建整个业务部分。

这个转变具有很多重要的意义,但是,我关注的是,这对软件本身的角色和设计有什么意义。在这个新兴的世界上,应用程序的目的不太可能是为 UI 提供服务来帮助人们开展业务,更可能的是触发操作或对软件的其他部分作出反应以直接开展业务。尽管这很容易理解,但是,它引发了一个大问题。

传统的数据库架构是否适合这个新兴的世界? ?

毕竟,数据库一直是应用程序开发中最成功的基础结构层。然而,所有的数据库,从最完善的关系数据库到最新的键值存储,都遵循一种范式,在该范式中,数据是被动存储的,数据库等待命令对它进行检索或修改。被遗忘的是,这种范式的兴起是由一种特定类型的面向用户的应用程序来驱动的,在这种应用程序中,用户可以查看 UI 并启动将其转换为数据库查询的操作。在我们上面提到的例子中,很显然构建了一个关系数据库以支持有助于在这为期 1 到 2 周的贷款批准流程中人为因素的应用程序,但是,是否适合把包括实时贷款批准流程在内的全套软件组合在一起,而该实时贷款批准流程是基于不断变化的数据进行持持续查询而建立的?

实际上,值得注意的是,随着 RDBMS(CRM、HRIS、ERP 等等)的兴起,所有的应用程序都是在软件时代作为人类生产力辅助工具出现的。CRM 应用程序使销售团队更有效率,HRIS 让 HR 团队更有效率等等。这些应用程序都是软件工程师所谓的“CRUD”应用程序。它们帮助用户创建、更新及删除数据库记录,并在该流程上管理业务逻辑。这其中固有的假设是,在网络的另一端有人在驱动和执行该业务过程。这些应用程序的目标是给人们看一些东西(他们会查看结果),给应用程序输入更多的数据。

该模式与公司采用软件的方式相匹配:一点一点地增加由人执行的组织和过程。但是,数据基础设施本身并不知道如何互连或对公司内部其他地方发生的事情做出反应。这导致产生了围绕数据库构建的所有类型的解决方案,其中包括集成层、ETL 产品、消息传递系统,以及大量代码,这些代码是大规模软件集成的标志。

????????°????o????é???????°??£?????????????o????

由于数据库没有为数据流建模,因此,公司内部系统之间的互连是一团乱麻。

事件流的兴起

当软件的主要角色不是为 UI 提供服务,而是直接触发操作或对软件的其他部分做出反应时,那么,我们的数据平台需要什么新功能呢?

我认为,要从事件和事件流的概念开始来回答这个问题。什么是事件?发生的任何事情,包括用户登录尝试、购买行为、价格的变化等等。什么是事件流?一系列不断更新的事件,代表了过去发生的事情和现在正在发生的事情。

事件流为传统数据库的数据提供了一种非常不同的思考范式。基于事件构建的系统不再被动地存储数据集和等待来自 UI 驱动的应用程序的命令。与之相反,它的设计目的是支持贯穿整个业务中的数据流以及实时响应和处理发生在业务中的每个事件的反应。这似乎与数据库的领域相去甚远,但是,我认为,数据库的一般概念对未来的发展来说过于狭隘。

Apache Kafka 及其用途 ?

通过分享我自己的背景知识,我将概述一些事件用例。Confluent 的创始人最初在 LinkedIn 工作的时候创建了这个开源项目 Apache Kafka,近年来,Kafka 已经成为事件流运动的基础技术。我们的动机很简单:尽管 LinkedIn 所有的数据是通过一天 24 小时永不停止的流程不断生成的,但是,利用这些数据的基础设施限于每天结束时缓慢的大型批处理数据转储和简单的查找。“一天结束后的批处理”概念似乎是过去穿孔卡片和大型机时代的遗产。事实上,对于一个全球性的企业来说,每天没有结束的概念。

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章