首頁(yè)>博客>新聞資訊特性講解>提速三倍,?不止,!悅數(shù)圖數(shù)據(jù)庫(kù)新版本技術(shù)特性搶先看!
提速三倍,?不止,!悅數(shù)圖數(shù)據(jù)庫(kù)新版本技術(shù)特性搶先看!
作為杭州悅數(shù)的最新產(chǎn)品,,悅數(shù)圖數(shù)據(jù)庫(kù)不僅是全球首家,,更是目前唯一一家支持 ISO/IEC 39075:GQL 國(guó)際圖查詢語(yǔ)言標(biāo)準(zhǔn)的分布式圖數(shù)據(jù)庫(kù)。它使用屬性圖模型,,集中管理和存儲(chǔ)用戶數(shù)據(jù),,并且可以使用經(jīng)過(guò)市場(chǎng)認(rèn)證的 MATCH 語(yǔ)句以及其他豐富的類(lèi) SQL 語(yǔ)句,輕松完成查詢屬性圖,。
全面擁抱 GQL :圖查詢的新篇章
不同于兼容或適配 GQL 的技術(shù)路線,,悅數(shù)圖數(shù)據(jù)庫(kù)在數(shù)據(jù)庫(kù)核心和底層架構(gòu)進(jìn)行了重構(gòu),全面擁抱 GQL,。同之前版本的悅數(shù)圖數(shù)據(jù)庫(kù)相似,,屬性圖的 schema 仍然是用戶創(chuàng)建或修改,并由數(shù)據(jù)庫(kù)管理的,。以下是一個(gè)使用 GQL 編寫(xiě)的 DDL 查詢示例,,該查詢嘗試創(chuàng)建一個(gè)包含一組節(jié)點(diǎn)類(lèi)型(如 City、Country,、Continent 等)和邊類(lèi)型(如 CITY_IS_PART_OF_COUNTRY,、COUNTRY_IS_PART_OF_CONTINENT 等)的圖類(lèi)型。每個(gè)節(jié)點(diǎn)或邊類(lèi)型都有其類(lèi)型名稱(如 City),、一組可選標(biāo)簽(如 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),
}
創(chuàng)建圖類(lèi)型后,就可以隨心所欲的創(chuàng)建任意數(shù)量的圖,,這些圖都將受到相同圖類(lèi)型的約束,。
接下來(lái),我們使用之前創(chuàng)建的 ldbc_type 來(lái)創(chuàng)建一個(gè)名為 LDBC 的圖,。
CREATE GRAPH IF NOT EXISTS LDBC TYPED ldbc_type
構(gòu)建好 LDBC 圖后,,用戶可以使用 MATCH 查詢來(lái)挖掘數(shù)據(jù)的價(jià)值,如下所示,首先聲明了兩個(gè)要從圖中匹配的路徑模式,,然后按 person.id 和 message.id 屬性對(duì)結(jié)果進(jìn)行排序和限制,,最后返回你需要的屬性。
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 相關(guān)的內(nèi)容,,那么 ISO 發(fā)布的《GQL 數(shù)據(jù)庫(kù)語(yǔ)言》以及《理解 GQL:標(biāo)準(zhǔn)圖查詢語(yǔ)言的全面概述》這兩份資料,,將為你提供關(guān)于GQL的詳細(xì)信息,包括其定義,、用途,、語(yǔ)法以及如何在圖數(shù)據(jù)庫(kù)中使用它進(jìn)行查詢和管理數(shù)據(jù)。
煥新登場(chǎng):從內(nèi)到外的架構(gòu)升級(jí)
架構(gòu)設(shè)計(jì):全面升級(jí),,性能飛躍
與 v3.0 系列相比,新版本的悅數(shù)圖數(shù)據(jù)庫(kù)在所有組件上均取得了根本性的技術(shù)進(jìn)步,。從全面支持 GQL 的新前端,,到分布式架構(gòu)的一致性協(xié)議,再到企業(yè)級(jí)基于規(guī)則的優(yōu)化和圖原生操作符支持,,每一個(gè)細(xì)節(jié)都經(jīng)過(guò)了技術(shù)人員的精心設(shè)計(jì)和優(yōu)化,。
數(shù)據(jù)結(jié)構(gòu):緊湊高效,,快如閃電
在內(nèi)存中,,我們使用新設(shè)計(jì)的與 Apache Arrow 兼容的向量數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)節(jié)點(diǎn)和邊的數(shù)據(jù)。這種緊湊的布局方式不僅減少了多達(dá) 95% 內(nèi)存開(kāi)銷(xiāo),,還無(wú)需對(duì)數(shù)據(jù)進(jìn)行序列化或反序列化,,也無(wú)需為此過(guò)程分配臨時(shí)內(nèi)存空間。用戶可直接在內(nèi)存中進(jìn)行快速的圖遍歷和屬性檢索,,還能夠進(jìn)行不受編碼和解碼限制的超高速查詢,,享受前所未有的速度體驗(yàn)!
執(zhí)行器:多面優(yōu)化,,無(wú)所不能
新版本悅數(shù)圖數(shù)據(jù)庫(kù)的執(zhí)行器現(xiàn)在能夠完全以向量化方式實(shí)現(xiàn)所有算子,同時(shí)對(duì)向量中的所有值進(jìn)行運(yùn)算,。這意味著用戶可以充分利用現(xiàn)代多核處理器和 DRAM 的硬件優(yōu)勢(shì),,享受比老版本快 2-3 倍的查詢速度。此外,,新版本還實(shí)現(xiàn)了完全并發(fā)和流水線化的運(yùn)行時(shí),,顯著提高了工作時(shí)的負(fù)載平衡和多核處理器利用率,并解決了 NUMA 問(wèn)題,。另外,,新版本還支持子查詢計(jì)劃下推,、細(xì)顆粒度的內(nèi)存管理等功能,助力高效查詢,。
存儲(chǔ)引擎:優(yōu)化編碼,,更快更穩(wěn),、
新版本的存儲(chǔ)引擎得到了全面優(yōu)化,,實(shí)現(xiàn)了更快的 KV 編碼和前綴掃描,。同時(shí),還引入了分區(qū)中的分桶的概念,,讓數(shù)據(jù)平衡和遷移變得更加快速和簡(jiǎn)單,。用戶還可以在創(chuàng)建圖后更改分區(qū)數(shù),享受更靈活的數(shù)據(jù)管理體驗(yàn),!
插件與程序:擴(kuò)展性強(qiáng),功能豐富
在新版本中,,我們還支持添加插件和開(kāi)發(fā)程序的功能,。用戶可以像使用 PostgreSQL 等流行數(shù)據(jù)庫(kù)一樣,將插件插入數(shù)據(jù)庫(kù)內(nèi)核,,實(shí)現(xiàn)更多自定義功能,。同時(shí),新版本支持使用 C++ 開(kāi)發(fā)程序,,并在 GQL 查詢中調(diào)用它們,,享受更好的性能和復(fù)用性!
性能對(duì)比:3 倍提速,,多快好省
測(cè)試環(huán)境
一個(gè)三節(jié)點(diǎn)集群
64 核 Intel 8352Y CPU,2.20GHz
256GB DRAM
2TB SSDs
比例因子(SF)為 100
測(cè)試結(jié)果
在同一環(huán)境下,,以查詢延遲的第 99 百分位數(shù)作為指標(biāo),,新版本的悅數(shù)圖數(shù)據(jù)庫(kù)相較于 v3.7 版本的性能提升了 1.01 到 6.43 倍,平均提升 3.01 倍,。而且所有新版本上的查詢均采用已發(fā)布為國(guó)際標(biāo)準(zhǔn)的 GQL 編寫(xiě),,而 v3.7則使用 openCypher 進(jìn)行編寫(xiě)。這意味著,,用戶僅需使用聲明式查詢語(yǔ)言即可輕松獲得卓越性能,,無(wú)需依賴復(fù)雜的 C++ 過(guò)程。
以 Q1 查詢?yōu)槔?,新版本的速度?v3.7 的 3.82 倍,,同時(shí)其進(jìn)程峰值內(nèi)存占用比 v3.7 減少了 64.47%。綜上所述,新版本悅數(shù)圖數(shù)據(jù)庫(kù)能以約 1/3 的內(nèi)存資源實(shí)現(xiàn) 3 倍以上的性能提升,。
語(yǔ)句示例
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
悅數(shù)圖數(shù)據(jù)庫(kù)GQL 的先行者,性能與效率再創(chuàng)新高
悅數(shù)圖數(shù)據(jù)庫(kù)新版本是首個(gè)也是目前唯一一個(gè)支持 GQL 標(biāo)準(zhǔn)的分布式圖數(shù)據(jù)庫(kù),。它不僅允許用戶以標(biāo)準(zhǔn)化的方式開(kāi)發(fā)應(yīng)用程序,,還結(jié)合了最新的數(shù)據(jù)庫(kù)技術(shù)和對(duì)圖原生特性的全面語(yǔ)法支持。通過(guò) LDBC SNB 基準(zhǔn)測(cè)試評(píng)估,,新版本的平均速度比目前最先進(jìn)的 v3.7 版快 3 倍,,內(nèi)存效率也提高了約 3 倍!隨著正式發(fā)布的臨近,,我們將在更多場(chǎng)景下發(fā)布更多的評(píng)估結(jié)果,,敬請(qǐng)期待!