悦数图数据库

首页>博客>新闻资讯特性讲解>提速三倍?不止!悦数图数据库新版本技术特性抢先看!

提速三倍?不止!悦数图数据库新版本技术特性抢先看!

作为杭州悦数的最新产品,悦数图数据库不仅是全球首家,更是目前唯一一家支持 ISO/IEC 39075:GQL 国际图查询语言标准的分布式图数据库。它使用属性图模型,集中管理和存储用户数据,并且可以使用经过市场认证的 MATCH 语句以及其他丰富的类 SQL 语句,轻松完成查询属性图。

全面拥抱 GQL :图查询的新篇章

不同于兼容或适配 GQL 的技术路线,悦数图数据库在数据库核心和底层架构进行了重构,全面拥抱  GQL。同之前版本的悦数图数据库相似,属性图的  schema 仍然是用户创建或修改,并由数据库管理的。以下是一个使用 GQL 编写的 DDL 查询示例,该查询尝试创建一个包含一组节点类型(如 City、Country、Continent 等)和边类型(如 CITY_IS_PART_OF_COUNTRY、COUNTRY_IS_PART_OF_CONTINENT 等)的图类型。每个节点或边类型都有其类型名称(如 City)、一组可选标签(如 City、Place)和一组可选属性(如 id、name、url)。

CREATE GRAPH TYPE IF NOT EXISTS ldbc_type AS {
  NODE City (LABELS City&Place {id INT64 PRIMARY KEY, name STRING, url STRING}),
  NODE Country (LABELS Country&Place {id INT64 PRIMARY KEY, name STRING, url STRING}),
  NODE Continent (LABELS Continent&Place {id INT64 PRIMARY KEY, name STRING, url STRING}),
  ...
  EDGE CITY_IS_PART_OF_COUNTRY (City)-[:IS_PART_OF]->(Country),
  EDGE COUNTRY_IS_PART_OF_CONTINENT (Country)-[:IS_PART_OF]->(Continent),
  EDGE UNIVERSITY_IS_LOCATED_IN_CITY (University)-[:IS_LOCATED_IN]->(City),
  }

创建图类型后,就可以随心所欲的创建任意数量的图,这些图都将受到相同图类型的约束。

接下来,我们使用之前创建的 ldbc_type 来创建一个名为 LDBC 的图。

CREATE GRAPH IF NOT EXISTS LDBC TYPED ldbc_type

构建好 LDBC 图后,用户可以使用 MATCH 查询来挖掘数据的价值,如下所示,首先声明了两个要从图中匹配的路径模式,然后按 person.id 和 message.id 属性对结果进行排序和限制,最后返回你需要的属性。

MATCH
  (person:Person)-[:KNOWS]->(friend:Person),
  (message:Message)-[:HAS_CREATOR]->(friend)
ORDER BY
  person.id DESC,
  message.id ASC
LIMIT
  20
RETURN
  friend.id AS personId,
  friend.firstName AS personFirstName,
  friend.lastName AS personLastName,
  message.id AS postOrCommentId

如果您想更深入的了解 GQL 相关的内容,那么 ISO 发布的《GQL 数据库语言》以及《理解 GQL:标准图查询语言的全面概述》这两份资料,将为你提供关于GQL的详细信息,包括其定义、用途、语法以及如何在图数据库中使用它进行查询和管理数据。

焕新登场:从内到外的架构升级

架构设计:全面升级,性能飞跃

与 v3.0 系列相比,新版本的悦数图数据库在所有组件上均取得了根本性的技术进步。从全面支持 GQL 的新前端,到分布式架构的一致性协议,再到企业级基于规则的优化和图原生操作符支持,每一个细节都经过了技术人员的精心设计和优化。

数据结构:紧凑高效,快如闪电

在内存中,我们使用新设计的与 Apache Arrow 兼容的向量数据结构来存储节点和边的数据。这种紧凑的布局方式不仅减少了多达 95% 内存开销,还无需对数据进行序列化或反序列化,也无需为此过程分配临时内存空间。用户可直接在内存中进行快速的图遍历和属性检索,还能够进行不受编码和解码限制的超高速查询,享受前所未有的速度体验!

执行器:多面优化,无所不能

新版本悦数图数据库的执行器现在能够完全以向量化方式实现所有算子,同时对向量中的所有值进行运算。这意味着用户可以充分利用现代多核处理器和 DRAM 的硬件优势,享受比老版本快 2-3 倍的查询速度。此外,新版本还实现了完全并发和流水线化的运行时,显著提高了工作时的负载平衡和多核处理器利用率,并解决了 NUMA 问题。另外,新版本还支持子查询计划下推、细颗粒度的内存管理等功能,助力高效查询。

存储引擎:优化编码,更快更稳、

新版本的存储引擎得到了全面优化,实现了更快的 KV 编码和前缀扫描。同时,还引入了分区中的分桶的概念,让数据平衡和迁移变得更加快速和简单。用户还可以在创建图后更改分区数,享受更灵活的数据管理体验!

插件与程序:扩展性强,功能丰富

在新版本中,我们还支持添加插件和开发程序的功能。用户可以像使用 PostgreSQL 等流行数据库一样,将插件插入数据库内核,实现更多自定义功能。同时,新版本支持使用 C++ 开发程序,并在 GQL 查询中调用它们,享受更好的性能和复用性!

性能对比:3 倍提速,多快好省

测试环境

一个三节点集群

64 核 Intel 8352Y CPU,2.20GHz

256GB DRAM

2TB SSDs

比例因子(SF)为 100

测试结果

在同一环境下,以查询延迟的第 99 百分位数作为指标,新版本的悦数图数据库相较于 v3.7 版本的性能提升了 1.01 到 6.43 倍,平均提升 3.01 倍。而且所有新版本上的查询均采用已发布为国际标准的 GQL 编写,而 v3.7则使用 openCypher 进行编写。这意味着,用户仅需使用声明式查询语言即可轻松获得卓越性能,无需依赖复杂的 C++ 过程。

以 Q1 查询为例,新版本的速度是 v3.7 的 3.82 倍,同时其进程峰值内存占用比 v3.7 减少了 64.47%。综上所述,新版本悦数图数据库能以约 1/3 的内存资源实现 3 倍以上的性能提升。

语句示例

USE ldbc
MATCH 
  (p:Person{id:2}),
  (friend:Person{firstName:"Kyle"})
WHERE 
  p<>friend
MATCH 
  path1 = ANY SHORTEST PATH (p)-[:KNOWS]-{1,3}(friend)
RETURN 
  min(length(path1)) AS distance,
  friend GROUP BY friend
NEXT 
USE ldbc
ORDER BY
  distance ASC,
  friend.lastName ASC,
  friend.id ASC
LIMIT
  20
MATCH
  (friend)-[:IS_LOCATED_IN]->(friendCity:City)
OPTIONAL MATCH
  (friend)-[studyAt:STUDY_AT]->(uni:University)-[:IS_LOCATED_IN]->(uniCity:City)
RETURN 
  collect(CASE WHEN NOT uni.name IS NULL THEN RECORD 
      {uniName:uni.name,
      studyAtClassYear:studyAt.classYear, 
      uniCityName:uniCity.name} END
    ) AS unis,
  friend,
  friendCity,
  distance GROUP BY friend,
  friendCity,
  distance
NEXT 
USE ldbc
OPTIONAL MATCH
  (friend)-[workAt:WORK_AT]->(company:Company)-[:IS_LOCATED_IN]->(companyCountry:Country)
RETURN
  collect(CASE WHEN NOT company.name is null THEN RECORD 
      {companyName:company.name,
      workAtWorkFrom:workAt.workFrom,
      companyCountryName:companyCountry.name} END
    ) AS companies,
  friend,
  unis,
  friendCity,
  distance GROUP BY friend,
  unis,
  friendCity,
  distance
NEXT
USE ldbc
ORDER BY
  distance ASC,
  friend.lastName ASC,
  friend.id ASC
LIMIT 20
RETURN
  friend.id AS friendId,
  friend.lastName AS friendLastName,
  distance AS distanceFromPerson,
  friend.birthday AS friendBirthday,
  friend.creationDate AS friendCreationDate,
  friend.gender AS friendGender,
  friend.browserUsed AS friendBrowserUsed,
  friend.locationIP AS friendLocationIp,
  friend.email AS friendEmails,
  friend.speaks AS friendLanguages,
  friendCity.name AS friendCityName,
  unis AS friendUniversities,
  companies AS friendCompanies

悦数图数据库GQL 的先行者,性能与效率再创新高

悦数图数据库新版本是首个也是目前唯一一个支持 GQL 标准的分布式图数据库。它不仅允许用户以标准化的方式开发应用程序,还结合了最新的数据库技术和对图原生特性的全面语法支持。通过 LDBC SNB 基准测试评估,新版本的平均速度比目前最先进的 v3.7 版快 3 倍,内存效率也提高了约 3 倍!随着正式发布的临近,我们将在更多场景下发布更多的评估结果,敬请期待!