携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
背景知识
-
简单介绍
图数据库是以图论为基础的实现一种数据库。重要的概念分为 节点 与 关系。
与传统关系型数据库最大的区别是实体间的关系在图数据库中尤为重要。
举个例子:爱企查
-
图数据库分类
- 原生数据库。代表数据库为 Neo4j OrientDB,主要体现在点到边的指向类似链表的指针。
- 直接在关系型数据库上构建的数据库。AgensGraph、GraphView、SparkGraphX。基于关系型存储结构转化成图结构的数据库。
- 使用外置的 Nosql (HBase、Cassandra)存储。如 JanusGraph、HugeGraph
使用场景
-
社交网络
- 个人社交关系图。比如QQ、微信好友,可以用来做好友推荐。
- 公司关系。比如法人与公司的关系,可以用来做反欺诈等。
-
知识图谱
适合在某些特定领域构建知识图谱,完成知识的检索与推荐。比如 智能问答、个性推荐/搜索 。
-
金融反欺诈
通过贷款、联系人进行欺诈检测。举例:构建转账网络,有效监测大额资金的交易。
-
其他
网络/IT 运营、供应链管理、医疗......
查询语句
摘抄自:一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇
Cypher 是一个描述性的图形查询语言,允许不必编写图形结构的遍历代码对图形存储有表现力和效率的查询,和 SQL 很相似,Cypher 语言的关键字不区分大小写,但是属性值,标签,关系类型和变量是区分大小写的。
支持图数据库:Janus Graph、InfiniteGraph、Cosmos DB、DataStax Enterprise(5.0+) 、Amazon Neptune
Gremlin 是 Apache ThinkerPop 框架下的图遍历语言。Gremlin 可以是声明性的也可以是命令性的。虽然 Gremlin 是基于 Groovy 的,但具有许多语言变体,允许开发人员以 Java、JavaScript、Python、Scala、Clojure 和 Groovy 等许多现代编程语言原生编写 Gremlin 查询。
支持图数据库: Neo4j、RedisGraph、AgensGraph
nGQL 是一种类 SQL 的声明型的文本查询语言,nGQL 同样是关键词大小写不敏感的查询语言,目前支持模式匹配、聚合运算、图计算,可无嵌入组合语句。
nGQL 语言
=原生 nGQL 语句
+openCypher 兼容语句
支持图数据库:Nebula Graph
备注:OpenCypher 是由 openCypher Implementers Group 组织所开源和维护的图查询语言,最新版本为 openCypher 9。详情见:openCypher · openCypher
图数据对比
-
官网
Neo4j Graph Data Platform – The Leader in Graph Databases
-
Github
GitHub - neo4j/neo4j: Graphs for Everyone
GitHub - vesoft-inc/nebula: A distributed, fast open-source graph database featuring horizontal scal
GitHub - hugegraph/hugegraph: HugeGraph Database core component, including graph engine, API
-
博客
图数据库对比:Neo4j vs Nebula Graph vs HugeGraph
同花顺知识图谱团队的图数据库选型--消息、基本、技术三面 - 墨天轮
技术选型参考指标
- 开源 VS 付费 图数据库
- 分布式架构设计
- 毫秒级低延时查询 (多跳查询) & 千亿级节点/边存储
- 批量数据导入功能
- 开源社区的支持
- 使用简单 (Cypher Gremlin nGQL )
压测工具 or 压测博客
nebula-bench/README_cn.md at master · vesoft-inc/nebula-bench
OPPO 图 数 据 库 平 台 建 设 及 业 务 落 地 - 1024搜 -程 序 员 专 属 的 搜 索 引 擎
总结
当下 Neo4j 依旧是图数据库老大的地位,存储、可视化、生态、性能上都比较均衡的发展。最大的缺点是社区版仅支持单机部署,且很多功能受限。
以 Hugegraph 为代表的 NoSql 型存储数据库,虽然开源但是部分场景下查询性能不满足。
NebulaGraph 虽然存在社区版以及企业版的区分。但在整体架构设计以及使用上社区版、企业版基本没有差别(差别在于可视化)。整体性能与架构上设计比较先进而且有着活跃的社区支持。