购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 制定技术决策解决复杂问题

无论你是否在上述公司工作过,你都可以学着在你的领域里应用图思维。

所以你应该从哪儿开始?

学习和应用图思维的难点在于,你需要知道关系是否给你的数据带来价值。本节我们将用图来简要说明应用图思维会遇到的种种问题以及未来的挑战。

尽管简单,图1-3仍然试图引发你去评估数据中的核心问题。第一个决定需要团队知道你的应用程序需要什么类型的数据。我们特地从这个问题开始,因为它很容易被忽略。

图1-3:并不是所有问题都是图问题——你需要做的第一个决定

一些团队经常会忽视图1-3所示的问题,因为新事物的诱惑分散了他们的注意力,使得他们无法按已有的流程来构建生产应用程序。新兴事物和已有流程之间的这种关系使得早期团队忽视了对应用程序目标的关键评估。正因为如此,我们看到很多图项目最终失败并被束之高阁。

让我们一步步来看看图1-3试图传递什么,以免你重蹈早期图技术采用者的覆辙。

问题1:你的问题需要图数据吗

有很多思考数据的方式。决策树中的这第一个问题要求你理解应用程序所需的数据形态。例如,领英页面上的共同好友部分,就可以作为回答图1-3中问题1的“是”的最佳示例。领英使用联系人之间的关系,所以你可以浏览你的职业网络并了解你们的共同联系。向终端用户展示共同好友是一种非常流行的方式,Twitter、Facebook等社交网络应用程序也使用图数据。

当我们说“数据的形态”时,我们指的是你希望从数据中得到的有价值的信息结构。你想知道一个人的姓名和年龄吗?我们可以将其描述为适合用表来存储的一行数据。你想知道本书中的某章、某节、某页和某个示例为你演示了如何给图增加一个顶点吗?我们将其描述为适合文档或层次结构的嵌套数据。你想知道将你与埃隆·马斯克联系在一起的好友的一系列好友吗?在这里,你要问的是一系列最适合图的关系。

从自顶向下的角度考虑,我们建议根据数据形态来决定数据库和技术选项。现代应用程序中常用的数据类型如表1-1所示。

表1-1:常用的数据类型、形态和推荐的数据库类型汇总

对于今天最有趣的数据问题,你需要能够对数据应用所有三种思考方式。你要能灵活地对数据问题及其子问题应用不同的方式。对于问题的每一个部分,你都需要理解进入、驻留和离开应用程序的数据形态。这些点中的每一个,以及数据传输中的任何时间,都会推动应用程序中技术选择的需求。

如果你不确定问题所需的数据形态,那么图1-3中的下一个问题就要鞭策你去思考数据中关系的重要性。

问题2:数据中的关系有助于你理解问题吗

图1-3中更核心的问题问及了你的数据中是否存在关系,并为你的业务问题提供价值。是否能够成功应用图技术取决于决策树中的第二个问题。对我们来说,这个问题只有三个答案:是、否或也许是。

如果你能斩钉截铁地回答“是”或“否”,那么路径还算是清晰的。例如,对于图数据来说,领英的共同好友部分可以作为“是”的一个确切印证,而搜索框需要一个分面搜索功能,则是一个明确的“否”。我们可以通过理解解决业务问题所需的数据形态来明确这些区别。

如果数据中的关系可以帮助你解决业务问题,那么你需要在应用程序中使用图技术。如果数据中的关系没有帮助,你就需要找到其他的工具。也许表1-1中的某个选择可以作为你当下问题的解决方案。

但如果你不确定关系对你的业务问题是否重要,那么这就棘手了。这体现在图1-3左侧的“也许是”部分。根据我们的经验,如果你的思路把你带到这个决策点,那么很有可能你在解决一个过大的问题。我们建议你把问题拆分,然后从头开始分析图1-3。我们建议团队分解的最常见的问题是实体解析,或者了解数据中的真实情况。第11章将详细分析一个例子,以说明什么时候该在实体解析中使用图结构。

理解数据时的常见失误

有时,图的数据形态可以暗含其他两种数据形态的重要性:嵌套和表结构。团队常常会误判。

虽然你可能觉得自己的问题是一个复杂问题,因此使用图思维来分析它,但这并不意味着必须在所有数据组件上应用图技术。事实上,将某些组件或子问题投射到表结构或嵌套文档上可能更有利。

使用投射(文件或表)来思考总是有帮助的。因此我们在图1-3中所做的思考不仅仅是“思考数据的最佳方式是什么?”它也在探索一种更加敏捷的思考流程来把复杂问题分解为更小的部分。也就是说,我们鼓励你去斟酌:针对当前的问题,思考数据的最佳方式是什么?

对于我们想在图1-3表达内容的最佳总结就是:要对症下药。这里的“药”,我们想的是更广泛的代指。不要局限于数据库的选择,而是更多地思考数据表示的选择。

1.3.1 现在你有了图数据,接下来是什么

图1-3中的第一个问题驱使你将查询驱动设计应用于数据表示决策。你的复杂问题中的某些部分可能更适用于表结构或者嵌套文档。这是意料之中的。

但如果你有图数据且需要应用它,要怎么办呢?这就需要图思维思考流程的第二部分了,如图1-4所示。

更进一步,我们假设你的应用程序可以从理解、建模和使用数据中的关系受益。

问题3:你要用数据中的关系做什么

在图技术的世界里,你主要对你的图数据做两件事情:分析或者查询。继续领英的例子,共同好友部分是查询图数据并将其加载到视图中的一个例子。领英的调研团队可能会追踪任意两个人之间的平均连接数,这就是一个分析图数据的例子。

第三个问题的答案将图技术决策分成两个阵营:数据分析以及数据管理。图1-4的中心展示了这个问题和每种选择的决策流。

图1-4:如何驾驭和使用应用程序中的图数据

当我们提到分析时,我们指的是你需要检视你的数据。通常,团队花费时间研究数据中的关系,目标是寻找哪些关系是重要的。这个流程和查询图数据是不一样的。查询指的是你需要从系统中检索数据。在这种情况下,你知道需要问的问题和回答这个问题所需的关系。

让我们从走向右侧的选项开始:当你确定终端应用程序需要存储和查询数据中的关系时的情况。不可否认,由于图行业当下所处的阶段和历史,这是最不可能的路径。但是在这些情况下,你应该已经准备好直接在应用程序中使用图数据库了。

我们从合作中发现了一些需要用数据库管理图数据的常见用例。这些用例是接下来几章的主题,我们留到后面讨论。

然而更常见的是,团队知道他们的问题需要图数据,但是却不知道如何确切地回答自己的问题,或者哪些关系是重要的。这就把问题指向了分析图数据的需求上。

从这里开始,我们希望你和团队能思考要从分析图数据中得到什么样的可交付成果。对于基础设施和工具,围绕图分析创建结构和目标可以帮团队做出更明智的选择。这也是图1-4的最终问题。

问题4:你要用这个结果做什么呢

图数据分析中的主题可能涉及从理解跨关系的特定分布到跨整个结构运行算法。这是算法的领域,例如,连接组件、团检测、三角计数、计算图的度分布、页面排名、推理器、协同过滤等。我们将在接下来的章节中定义它们中的大部分术语。

对于图算法的结果来说,最常见的三个终极目标是:报告(report)、研究或检索。让我们深入了解一下每个选项的含义。

我们将详细介绍所有三个选项(报告、研究和检索),因为这是当今大多数人使用图数据所做的事情。本书中接下来的技术示例和讨论主要集中在你决定何时需要图数据库。

首先让我们讨论报告。当我们谈及报告一词时,主要指的是它的传统需求,即对于业务数据的智能分析和洞察。最常见的叫法是商业智能(BI)。尽管存在争议,但许多早期图项目的交付成果旨在为高管已建立的BI流水线提供指标或输入。从图数据扩展或创建商业智能流程所需的工具和基础设施值得专门写一本书来深入研究。本书并不关注BI问题的架构或方法。

在数据科学和机器学习领域,你会发现图算法的另一种常见应用:通用研发。企业投资研发,寄希望于在其图数据中发现价值。有几本书探讨了研究结构化图数据所需的工具和基础设施,但这本书并不在其中。

这将我们带到了最后一条路径上,即“检索”。在图1-4中,我们是特指那些给终端用户提供服务的应用程序。我们谈论的是服务于客户的数据驱动产品。这些产品的期望包含着低延迟、高可用、个性化等。和为内部用户创造指标的产品不同,这些应用程序有着不同的架构需求。本书将在接下来的技术章节中讨论这些主题和用例。

回想一下我们提到的领英。如果你使用领英,那么你很可能接触过前面提到的最佳示例,即图1-4中我们能想到的印证“检索”路径的最佳方式。领英里有一个功能是描绘你如何同网络中的任意其他人建立联系。当你在看别人的履历时,该功能会告诉你这个人是一度、二度还是三度联系。你与领英上任何其他人之间的联系长度可以透露出你的职业网络的有用信息。领英的这个功能是一个数据产品的示例,它遵循图1-4的检索路径向终端用户交付一个上下文图指标。

这三条路径之间的边界是模糊的。区别在于是打造数据驱动产品还是需要获取数据洞察。数据驱动产品为客户带来不可替代的价值。这些产品的下一波创新将是使用图数据来提供相关性更强和更有意义的体验。这些是我们想要在本书中探讨的有趣问题和架构。

分解问题并重试

偶尔你可能会对图1-3和图1-4中提出的问题感到茫然,只能回以“我不知道”——那也没有关系。

归根结底,你阅读这本书是因为你的业务中含有数据并且有一个复杂问题。这类问题往往庞大且互相依赖。从问题的最高层面看,图1-3和图1-4所展示的思维过程似乎与你的复杂数据脱节了。

然而,基于我们帮助世界各地数百个团队的集体经验,我们的建议仍然是你应该尝试分解问题并再次循环整个过程。

平衡利益相关的高管的需求、开发者技能和行业需求是极其困难的。你需要着眼于细微之处。以已知的和已验证的价值为基础,逐渐向解决复杂问题靠近。

如果忽略了决策过程会发生什么?很多时候,我们看到伟大的想法并不能从研发转变为生产应用程序:还是古老的分析瘫痪。运行图算法的目的是确定关系如何为数据驱动应用程序带来价值。你必须要为在该领域花费的时间和资源做一些艰难的决定。

1.3.2 看清局势

了解业务数据的战略意义和发现图技术如何(或是否能够)服务你的应用程序的途径是类似的。为了帮助你确定图数据对业务的战略重要性,我们已经讨论了有关应用程序开发的四个关键问题:

1.你的问题需要图数据吗?

2.数据中的关系有助于你理解问题吗?

3.你要用数据中的关系做什么?

4.你要用这个结果做什么呢?

将这些思考过程汇集在一起,图1-5将所有四个问题合并为一个图表。

图1-5:引发本书创作的决策过程:如何在你的应用程序中把握图技术的适用性和使用方法

我们花时间讲解整棵决策树,有两个原因。首先,决策树描绘了我们在构建、建议和应用图技术时使用的思维过程的完整场景。其次,这棵决策树说明了这本书的目的与图思维的契合之处。

也就是说,本书可以作为贯彻执行图1-5所示的图思维路线图的指南。 YxRqQcZnCuBomT8KXKOJV8xPJ6RXI9S3oL0aGe2EQ499vjLA8xoKjg5yQoJSTys2

点击中间区域
呼出菜单
上一章
目录
下一章
×