图数据库市场的现状 图数据库的优势 以 Nebula Graph 为例 开源社区






--PostgreSQL WITH RECURSIVE post_all (psa_threadid , psa_thread_creatorid, psa_messageid , psa_creationdate, psa_messagetype ) AS ( SELECT m_messageid AS psa_threadid , m_creatorid AS psa_thread_creatorid , m_messageid AS psa_messageid , m_creationdate, 'Post' FROM message WHERE 1=1 AND m_c_replyof IS NULL -- post, not comment AND m_creationdate BETWEEN :startDate AND :endDate UNION ALL SELECT psa.psa_threadid AS psa_threadid , psa.psa_thread_creatorid AS psa_thread_creatorid , m_messageid, m_creationdate, 'Comment' FROM message p, post_all psa WHERE 1=1 AND p.m_c_replyof = psa.psa_messageid AND m_creationdate BETWEEN :startDate AND :endDate)SELECT p.p_personid AS "person.id" , p.p_firstname AS "person.firstName" , p.p_lastname AS "person.lastName" , count(DISTINCT psa.psa_threadid) AS threadCountEND) AS messageCount , count(DISTINCT psa.psa_messageid) AS messageCount FROM person p left join post_all psa on ( 1=1 AND p.p_personid = psa.psa_thread_creatorid AND psa_creationdate BETWEEN :startDate AND :endDate ) GROUP BY p.p_personid, p.p_firstname, p.p_lastname ORDER BY messageCount DESC, p.p_personid LIMIT 100;
--CypherMATCH (person:Person)<-[:HAS_CREATOR]-(post:Post)<-[:REPLY_OF*0..]-(reply:Message)WHERE post.creationDate >= $startDate AND post.creationDate <= $endDate AND reply.creationDate >= $startDate AND reply.creationDate <= $endDateperson. RETURNid, person.firstName, person.lastName, count(DISTINCT post) AS threadCount, count(DISTINCT reply) AS messageCountORDER BY messageCount DESC, person.id ASCLIMIT 100





GO N TO M STEPS FROM $ids OVER $edge_type WHERE $filters | FETCH PROP





Q:图数据库和多模数据库是冲突的吗?二者的关系是什么? A:相比来说多模数据库(multi-model),图数据库最大的特点是在于它的全关联,如何实现多跳查询。对应到数据库设计的话,就是考虑底层要做成一个什么样的数据格式,数据和计算怎么放在一起,这个和 multi-model 本身是不冲突的。为了提升性能,各个多模数据库处理方法并不一样:采用不同的存储引擎,或者是同一套存储引擎,数据结构可能会做成不同的样子。 Q:图查询设计的出发点是什么?为什么不考虑一开始基于 Gremlin 开发? A:对于数据分析的同学,Gremlin 并不是一个低门槛语言,有些不友好。当时 Gremlin 的设计实现要求每个算子发出来之后必进行执行出来结果,举个例子,我现在要做一个 .out 和 .in,我必须得先执行 .out 再进行 .in,这样就不能进行一个全局优化。而 18 年的时候,openCypher 并不完善,小问题有些,表达力不行需要 APOC 进行补充,而 APOC 法律协议并不像 openCypher 那么确定,所以基于此,我们自研了 nGQL。在 19 年开始,GQL(查询语言标准化)运动开始了,GQL、Cypher 和 openCypher 关系比较明显,所以演变成了现在的 nGQL。

期待和你的周日见面~同网易游戏、众安保险、携程金融探讨各种 Nebula 可行性。

文章转载自Nebula Graph Community,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




