当前位置: 首页 > 科技观察

如何用好图数据库:TypeDB的特点和优势译者_0

时间:2023-03-17 18:47:58 科技观察

译者|崔浩审稿人|孙淑娟近年来,图数据库得到了规模化的发展,应用到很多领域,参与了优秀的解决方案。它们的灵活性使得以传统关系数据库无法做到的方式利用数据之间的关系和连接变得更加容易。但是你真的知道什么时候使用图形数据库吗?在这篇文章中,我们探讨了在使用图数据库之前要考虑的事项,甚至是不使用图数据库时要考虑的事项。1、什么是图数据库?图数据库是使用图论作为其数据模型基础的数据库。图数据库将连接性视为“一等公民”,这使得它们比传统的关系数据库更适合表示数据之间的连接。有两种类型的图形技术。RDF/语义网和属性图。虽然语义Web标准已经存在了很长时间,但属性图已成为主导技术,Cypher使用了大量图查询语言。本质上,属性图数据库中的数据模型由以下属性组成:节点、边、属性和标签。节点具有属性。节点有一个或多个标签。边是有向的,连接节点以在图中创建结构。边可以有属性。图形数据库应用于具有互连的数据。一些常见的用例包括:推荐引擎语义搜索反洗钱欺诈检测360客户视角度业务洞察解决方案。图形数据库有望成为获得这种洞察力的最简单方法,因为它们使理解数据中的关系和上下文变得容易。2.图数据库的挑战尽管有这些承诺,图数据库并没有征服世界。根据DB-Engines的数据,截至2022年10月,它们仅占数据库份额的1.8%,远未实现这些承诺。难以采用图形数据库有几个原因。它们可以概括为以下几点:1.对高度相关的数据建模由于图数据库的高表现力和相关的复杂性,在图中对数据进行建模并不容易。它类似于知识建模,也称为知识工程——一种需要高度专业化的工程师的高级技能。这使得图很难被普通开发人员采用,从而设置了很高的进入门槛。2.保持数据连续性图数据库的另一个大问题是缺乏强制性的模式。图数据库主要将模式验证委托给应用层,无论是隐式还是显式。这使得创建具有复杂数据的应用程序变得更加困难,因为数据一致性至关重要。图数据库缺乏明确的执行模式是其难以广泛应用的主要原因。3.查询数据Interrogationgraphs同样遇到挑战。由于(隐式)数据模型会限制表达式的路径,因此需要设计查询以匹配隐式数据模型。这是非常具有挑战性的,您需要以最佳方式对数据建模。此外,大多数图形数据库缺少重要的建模结构,例如嵌套或n元关系,这会导致建模决策不一致。有时关系可以定义为节点,有时则定义为边。结果,查询不一定能得到正确的数据。3.强类型数据库克服上述挑战对于帮助实现图数据库至关重要。这就是为什么开发了一种新型数据库:强类型数据库:TypeDB。开源的TypeDB通过提供更高层次的类型系统,抽象掉图数据库的低层次实现,让开发者更容易处理复杂的数据。TypeDB的类型系统基于以下核心概念。1.实体-关系模型TypeDB使用实体-关系模型进行数据建模。与图数据库不同,这意味着任何ER图都可以直接映射到TypeQL(TypeDB的查询语言)中,避免了规范化的过程。这意味着概念化模型是以人类熟悉的方式创建的。TypeDB的模型由实体类型、关系类型、属性类型组成,引入了角色类型。下面的示例展示了如何使用TypeQL编写基本模型。defineperson子实体,拥有名称,扮演就业:员工;公司子实体,拥有名称,扮演就业:雇主;就业子关系,关联员工,关联雇主;名称子属性,值字符串;在这个命名法中,方块代表实体;钻石代表关系;椭圆代表属性。该图概述了两个实体的模型-Person和Company,它们都具有name属性。人在雇佣关系中扮演雇员的角色,而公司扮演雇主的角色。2.类型层次TypeDB提供了开箱即用的类型层次模型,这是图数据库不支持的特性。遵循面向对象类型系统的原则,TypeDB确保所有类型都继承其超类型的行为和属性。这使得复杂数据结构的重用成为可能,并通过多态性丰富了数据解释。在下面的示例中,建模了一个三级实体层次结构。它的所有子类型都将继承firstname和lastname属性,而无需一一重新声明。定义人子实体,拥有名字,拥有姓氏;学生子人;本科生子学生;研究生子学生;教师子人;主管子老师;教授副教师;类型层次结构描述了一个由学生和教师类型子类型组成的实体。学生分为本科生和研究生两种,教师分为导师和教授两种。3.嵌套关系关系用来描述两个或多个事物之间的关联。有时事物本身就是关系,这意味着建模关系需要指向另一个关系——嵌套。图数据库不允许对嵌套关系进行建模,这需要一个二元边指向另一个二元边。唯一可能的实现方式是通过“reification”(具体化,将relation-edges变成point-entitynodes),即将一条边变成一个节点,让另一条边可以指向它。然而,TypeDB支持嵌套关系,使其成为最自然的数据建模形式。在下面的示例中,类型Marriage的关系被分配给变量$mar,然后通过该关系将其与城市相关联。match$alice是一个人,名字是“Alice”;$bob是一个人,名字是“Bob”;$mar($alice,$bob)是一个婚姻;$city是一个城市;($mar,$city)是一个位置;在图中,“Alice”扮演妻子的角色,而“Bob”扮演丈夫的角色。婚姻是嵌套关系,因为它也在一个区位关系中起到定位作用,城市“伦敦”在一段关系中起到定位作用。4.多重关系在现实世界中,关系不仅仅是指事物之间的二元联系。我们经常需要同时捕捉三个或更多相互关联的事物。将它们表示为二元关系会导致信息丢失,这在图形数据库中经常发生。另一方面,TypeDB可以自然地将多个事物表示为一种关系。在此示例中,n元关系转换连接了三个不同的实体:Person实体、Character实体和Movie实体。匹配$person是一个人,名字是“Leonardo”;$character是一个角色,名字是“Jack”;$movie是一部电影,名字是$movie-name;(actor:$person,character:$character,movie:$movie)isacast;get$movie-name;这是一个n元关系的例子,具体来说是一个三元关系,关系类型是强制转换的。该关系与三个实体有关:在电影《泰坦尼克号》中扮演角色“杰克”的演员是“莱昂纳多”。5.安全问题与图数据库不同,TypeDB提供了一种描述数据逻辑结构的方法,允许TypeDB验证代码是否正确插入和查询数据。查询验证超越静态类型检查,包括无意义查询的逻辑验证。通过严格的类型检查错误,您将拥有一个可以信任的数据集。下面插入查询的例子中,Charlie和DataCo的关系会被系统拒绝,因为一个人不能嫁给一个公司(假设schema遵循现实世界的一般规律)。insert$charlieisaperson,hasname"Charlie";$dataCoisacompany,hasname"DataCo";(husband:$charlie,wife:$dataCo)是一个婚姻;#invalidrelationcommit>>ERROR:invaliddatadetectedduringtypevalidation6.Reasoning最后,TypeDB提供了一个内置的推理引擎,使得TypeDB可以推导出新的见解并提供相应的解释。另一方面,属性图不提供本地推理能力。TypeDB的推理是基于模式中的规则。在查询执行过程中,如果满足数据集中的某种逻辑形式(定义在规则中),系统就会得出新的结论。就像编程中的函数一样,规则可以互锁以在数据级别创建行为抽象。通过以下规则,TypeDB将能够推断出一个城市位于一个大陆上,尽管两者之间不存在明确的关系。defineruletransitive-location:when{(located:$city,locating:$country)isalocation;(located:$country,locating:$continent)isalocation;}then{(located:$city,locating:$continent)isa}地点;};使用自动推理,TypeDB可以推断出“Camden”区和“UnitedKingdom”之间的关系(虚线),即使它们没有直接连接。4.总结回到我们的主题,我们什么时候应该使用图数据库?图适用于依赖复杂且相互关联的数据的应用程序。正如我们所见,它们缺乏广泛采用也是图数据库失败和挑战的原因。为了应对挑战并兑现图形数据库的最初承诺,我们构建了TypeDB。原文链接:https://dzone.com/articles/when-not-to-use-a-graph-database译者介绍崔浩,社区编辑,高级架构师,18年软件开发和架构经验,10年的分布式架构经验。