当前位置: 首页 > news >正文

知识图谱之——图数据库:以“关系”为核心的数据新大陆

最近,我对知识图谱产生了浓厚的兴趣。在构建知识图谱的各个环节中,最让我感到惊艳的,莫过于它的存储基石——图数据库。它和我们熟悉的MySQL、Oracle这类传统数据库截然不同,为我们理解和处理数据提供了一种全新的范式。

一、什么是知识图谱

知识图谱(Knowledge Graph),本质上是一个巨大的、富含语义的网络结构图,它由实体(节点)和关系(边)组成,旨在描述现实世界中的实体(如人、地点、事件)及其之间的丰富关系。它让机器能够“理解”数据之间的逻辑,而不仅仅是存储它们。

那么,一个随之而来的关键问题是:如何高效地存储和查询知识图谱中这种错综复杂的连接关系?传统的关系型数据库(如MySQL)在处理多层次的关联查询时,往往需要大量的JOIN操作,导致性能急剧下降,查询语句也异常复杂。正是在这样的需求下,图数据库(Graph Database) 应运而生,它以其原生处理关系的强大能力,成为了知识图谱最理想的“家园”。

二、什么是图数据库

要理解图数据库,首先要建立“图”的思维。这里的“图”并非指常见的饼图、柱状图,而是数学和计算机科学中的图论概念,即由节点连接这些节点的边构成的网络。

1. 三元组

图数据库和知识图谱的最小知识单元是三元组,其形式为:主体 - 关系 - 客体

  • 示例1张三 - 认识 - 李四

  • 示例2北京 - 是 - 中国首都

  • 示例3刘德华 - 主演 - 无间道

这个简单的结构能够表达出极其丰富的语义信息。

2. 点与边

三元组在图数据库中具体体现为:

  • 节点:代表实体。例如,一个人、一家公司、一部电影。节点可以有标签(如 PersonMovie)来分类,并且可以拥有多个属性(如 name: ‘张三’age: 28)。

  • :代表关系。它连接两个节点,定义了它们之间的关系。边同样可以拥有方向属性。例如,一条从“张三”指向“李四”的边,类型是 KNOWS,并且可以有一个 since: 2020 的属性,表示相识年份。

这种直观的建模方式,使得数据及其关系能够以最自然的形式被存储和呈现。

从上面的分析可以清晰的理解,图数据库,就是一种专门用来处理和查询“关系”的数据库。它不关心数据本身有多少,而是特别关心数据之间是怎么连起来的。它的核心优势是:沿着关系找东西,速度快得飞起。

三、知识图谱构建思路

构建一个知识图谱通常包含以下几个关键步骤,它是一个循环迭代的过程:

1. 知识定义与建模

明确业务边界,设计本体。即定义有哪些类型的实体(节点标签)和关系(边类型),以及它们各自拥有哪些属性。这是构建图谱的蓝图,从面向对象开发的角度理解,你可以理解为“类的定义”。

2. 知识获取

确定知识图谱主题后,收集各类数据,然后从各类数据源中提取信息。其中,数据的形式包括:

· 结构化数据:直接从业务数据库(MySQL等)中获取。

· 半结构化/非结构化数据:通过爬虫、NLP技术从文本(甚至可以是一本书)、网页中抽取实体和关系。

这里提到的实体关系,从面向对象开发的角度理解,你可以理解为“类的实例化”。

3. 知识融合与存储

将获取的知识进行清洗和整合。关键任务是实体链接(也有人称之为:实体对齐),即判断不同来源的“Steve Jobs”和“乔布斯”是否指向同一实体,消除歧义。最后,将处理好的三元组数据存入图数据库。

4. 知识应用与可视化

利用图查询语言(如Cypher、nGQL)对图谱进行查询、推理和分析。并将结果通过图谱可视化、智能问答、推荐系统等方式呈现给最终用户。

四、主流图数据库概览

当前,图数据库领域有多种产品,主要可分为原生图数据库(存储和计算引擎均为图专用)和非原生图数据库(基于其他存储引擎构建图处理层)。我找了以下的一些产品,分析理解了一下,也参考了一些书籍,汇总成下面这个表格,供大家参考:

Neo4jDgraphNebulaGraphJanusGraph
首次发布2007年2016年2019年2017年
开发语言JavaGoC++Java
主要特点历史悠久、生态成熟的原生图数据库,使用 Cypher 查询语言。适用于社交网络、推荐系统、欺诈检测等原生的分布式图数据库,部署简单,复杂查询性能好。使用GraphQL+-like语法,适用于知识图谱等场景国产开源分布式图数据库,对中文场景有优化。适合处理千亿顶点、万亿边的超大规模图开源的分布式图数据库,可与 HBase、Cassandra 等大数据组件集成。使用 Gremlin,擅长处理超大规模图数据
拥有专为图数据设计的自定义存储引擎和计算引擎。其存储格式、事务处理、查询执行都是围绕图模型从头构建的,是原生图的典型代表。虽然底层使用键值存储(BadgerDB),但 BadgerDB 是 Dgraph 团队专门为 Dgraph 研发的嵌入式存储引擎。其整个分布式架构和查询处理都是为 GraphQL-like 的图查询设计的。虽然底层使用 RocksDB 作为单机存储引擎,但其分布式存储层(Meta、Storage)和计算层(Graph)是专为图场景设计和深度优化的。它并非简单地在 RocksDB 之上加一个接口,因此被视为原生分布式图数据库。它本身是一个图计算引擎层,依赖外部的存储后端(如 HBase、Cassandra)和索引后端(如 ElasticSearch)。存储和计算分离,其架构不是原生的。
属性图模型完整的属性图模型不完整的属性图模型,更接近于RDF存储完整的属性图模型完整的属性图模型
架构单机/集群分布式分布式分布式
存储后端自定义文件格式键值数据库BadgerDB键值数据库RocksDBHBase、Cassandra、BerkeleyDB
物理存储KVKVKVKCV
高可用性不支持支持支持支持
一致性协议RAFTRAFTHBase:Paxos;Cassandra:基于多数派(Quorum-based)
跨数据中心复制不支持支持不支持支持
事务完全的ACID基于Omid修改版的分布式事务不支持分布式事务BerkeleyDB:完全的ACID支持;HBase和Cassandra:BASE,通过锁和两阶段提交增强一致性
分区策略不支持分区自动分区,自动再平衡,再平衡时拒绝写入和更新哈希(取模)静态分区,分区数设定后不能更改随机分区,支持显式指定分区策略
分区方法不支持分区根据边标签(谓词)分区根据顶点id分区,每条边存储两次根据顶点id分区,每边存储两次
大数据平台集成Spark不支持Spark、FlinkSpark、Hadoop、Giraph
顶点标签0个或多个0个1个或多个0个或1个
顶点间相同标签的多条边顶点对之间支持多条相同标签的边不支持顶点对之间支持多条相同标签的边支持,且支持多种约束条件(ONE2ONE、ONE2MANY等)
查询语言Cypher,通过插件可支持Gremlin、GraphQL等GraphQLnGQLGremlin,通过插件可支持openCypher
全文检索内置内置ElasticSearchElasticSearch、Solr、Lucene
多个图一个实例只能有一个图一个集群只能有一个图支持创建任意意图支持创建任意意图
属性图模式可选模式约束无模式强制模式约束无模式,可选模式约束,强制模式约束
客户端协议HTTP、BOLTHTTP、gRPC、Protocol BufferHTTPHTTP、WebSockets
客户端语言Java、.NET、JavaScript、Python、GoJava、JavaScript、Go、Python、.NetPython、Java、Go、C++Java、Python、C#、Go、Ruby、Rust

这个表格,我基本还原了书本原作者的内容,仅做了部分扩充。实际选型使用中,我选择了NebulaGraph,并构建了一些简单的例子,然后配合前端可视化展示,可以看到“Graph”的样子。下图是其中的一个样例:

五、结语

图数据库以其“关系为中心”的核心思想,完美地契合了知识图谱对复杂关系管理和挖掘的需求。它不仅是存储技术的革新,更是一种思维方式的转变。随着人工智能从感知智能走向认知智能,能够理解和处理逻辑关系的知识图谱与图数据库,必将扮演越来越重要的角色。 希望本文能为您打开一扇通往图数据世界的大门。

现在,不妨您也选择一个图数据库,从构建一个属于自己的小型知识图谱开始吧!

http://www.dtcms.com/a/586473.html

相关文章:

  • doris通过外部表同步数据
  • 做网站视频存储在哪里网页设计与制作课件张松炎
  • 做网站dwshopex 如何看 网站后台
  • 网站建设要做哪些工作室想开个网站怎么做
  • Trie树相关算法题java实现
  • (根号分治)nfls #1982 倍数点更新 题解
  • 哪个网站注册域名便宜中小企业网站建设济南兴田德润电话
  • 深圳 网站建设 销售seo的中文含义是
  • ui网站建设wordpress视频设置方法
  • asp网站后台产品管理中增加一个功能怎样修改微信小程序怎么收费
  • 做网站应该画什么图合肥市城乡城乡建设局网站
  • 仓颉编程语言中的Option类型与模式匹配深入解析
  • 达梦数据复制软件DMDRS
  • 做一年的网站维护价格培 网站建设方案 doc
  • 网站地图添加合肥免费做网站
  • Java 11+ HttpClient 实战:从 HttpURLConnection 到现代 HTTP 客户端的全面升级​
  • 广州网站建设信科网络上海十大家装公司排名
  • 重庆站外推广网站wordpress 商城模板下载
  • 徐州做网站的培训机构欧洲美妇做爰网站
  • zencart网站国外可以做会员网站的网站
  • 万网网站备案授权书网站改版 升级的目的
  • 网站建设素材图企业手机网站建设有
  • vue介绍
  • [SCADE航电应用] 达索航电系统与软件的建模
  • 7个常见的Jmeter压测问题
  • 做网站客户改来改去网络服务提供者不得为未满多少岁开展工作
  • 网站建设教的误区微信朋友圈投放广告
  • springboot3基于neety进行设备mqtt服务接收
  • 基于ASP3605的宽输入范围降压转换性能研究
  • 东莞厚街网站建设谷歌代运营