05 第五讲 知识存储

本文探讨了图数据库在处理复杂关系查询方面的优越性,特别是在深度超过三层时的表现。通过与传统关系型数据库的对比,展示了图数据库如Neo4J在响应时间和查询效率上的优势。

http://notes.duyichao.site/2018/12/24/知识图谱入门——知识存储/

图数据库
在这里插入图片描述
图数据库更适合深层次数据查询,
在深度为2时(即朋友的朋友),两种数据库性能相差不是很明显;深度为3时(即朋友的朋友的朋友),很明显,关系型数据库的响应时间30s,已经变得不可接受了;深度到4时,关系数据库需要近半个小时才能返回结果,使其无法应用于在线系统;深度到5时,关系型数据库已经无法完成查询。而对于图数据库Neo4J,深度从3到5,其响应时间均在3秒以内。

  1. Why Graph DB?

学过数据结构这么课程的同学脑海中应该或多或少有图的概念。
1.1 什么是图?

图由两个元素组成:节点和关系。

每个节点代表一个实体(人,地,事物,类别或其他数据),每个关系代表两个节点的关联方式。这种通用结构可以对各种场景进行建模 - 从道路系统到设备网络,到人口的病史或由关系定义的任何其他事物。
1.2 什么是图数据库?

图数据库(Graph database)并非指存储图片的数据库,而是以图这种数据结构存储和查询数据。

图形数据库是一种在线数据库管理系统,具有处理图形数据模型的创建,读取,更新和删除(CRUD)操作。

与其他数据库不同,关系在图数据库中占首要地位。这意味着应用程序不必使用外键或带外处理(如MapReduce)来推断数据连接。

与关系数据库或其他NoSQL数据库相比,图数据库的数据模型也更加简单,更具表现力。

图形数据库是为与事务(OLTP)系统一起使用而构建的,并且在设计时考虑了事务完整性和操作可用性。
1.3 两个重要属性

根据存储和处理模型不同,市面上图数据库也有一些区分。

比如:
Neo4J就是属于原生图数据库,它使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能。

而JanusGraph不是原生图数据库,而将数据存储在其他系统上,比如Hbase。
① 图存储

一些图数据库使用原生图存储,这类存储是经过优化的,并且是专门为了存储和管理图而设计的。并不是所有图数据库都是使用原生图存储,也有一些图数据库将图数据序列化,然后保存到关系型数据库或者面向对象数据库,或其他通用数据存储中。
② 图处理引擎

原生图处理(也称为无索引邻接)是处理图数据的最有效方法,因为连接的节点在数据库中物理地指向彼此。非本机图处理使用其他方法来处理CRUD操作。

  1. 对比
    2.1 与NoSQL数据库对比

NoSQL数据库大致可以分为四类:

键值(key/value)数据库
列存储数据库
文档型数据库
图数据库

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述Neo4j是一个具有原生处理(native processing)功能和原生图存储(native graph storage)的图数据库

其中原生处理过程 就是说 不是使用索引查找的,而是使用免索引零连接来确保高性能的遍历的 索引类似列表 而免索引类似tree、有向无环图等存储的。

原生图存储就是 节点、属性、关系分开存储,然后 每个都是固定大小,可以快速定位去寻找相应的位置。
neo4j neostore.nodestore.db:存储 node neostore.propertystore.db:存储属性 neostore.relationshipstore.db:存储关系
一个重要的设计点是 store 中存储的 record 都是固定大小的,固定大小带来的好处是:因为每个 record 的大小固定,因此给定 id 就能快速进行定位。
具体在下面链接中。
图数据库的内部结构 (NEO4j)

在这里插入图片描述

图数据库介绍图数据库源起欧拉和图理论 (graph theory),也可称为面向/基于图的数据库,对应的英文是Graph Database。图数据库的基本含义是以“图”这种数据结构存储和查询数据。它的数据模型主要是以节点和关系 (边)来体现,也可处理键值对。它的优点是快速解决复杂的关系问题。
图具有如下特征:

包含节点和边
节点上有属性 (键值对)
边有名字和方向,并总是有一个开始节点和一个结束节点
边也可以有属性

在这里插入图片描述
原生数据库:包括基于main memory和基于disk。
非原生数据库
RDBMS:基于关系数据库
Schema-based:需要设计表结构
Schema-free:不需要设计表结构

基于NoSQL
Key-value:如Redis
Column family
Document store:如MongoDB
Graph database:如Neo4j(广义上的原生数据库)

开源数据库
开源数据库——RDF4J
处理RDF数据的Java框架
使用简单可用的API来实现
RDF存储
支持SPARQL endpoints
支持两种RDF存储机制
支持所有主流的RDF文件格式

开源图数据库——gStore C++
gStore从图数据库角度存储和检索RDF知识图谱数据;
gStore支持W3C定义的SPARQL 1.1标准,包括含有Union,OPTIONAL,FILTER和聚集函数的查询;gStore支持有效的增删改操作
gStore单机可以支持1Billion(十亿)三元组规模的RDF知识图谱的数据管理任务。

商业图数据库
Virtuoso
智能数据,可视化与整合
可扩展和高性能的数据管理
支持Web 扩展和安全
XML SQL RDF FREE TEXT 都可以
在这里插入图片描述
Allgrograph

一个现代的,高性能的,支持永久存储的图数据库
基于Restful接入支持多语言编程

在这里插入图片描述
Stardog

在这里插入图片描述
原生图数据库介绍
Neo4J

参见百度百科:Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

Neo4j数据存储:
Neo4j数据存储
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

OrientDB

OrientDB是一个用Java实现的开源NoSQL数据库管理系统。它是一个多模式的数据库,支持图形、文档、键值对、对象模型和关系,也可以为图数据库的管理与记录之间的提供连接。
Titan(小规模不推荐使用)

弹性和线性增长的数据和用户的可扩展性
数据分布和复制性能和容错性
支持增删改查,支持一致性
支持各种后端存储
支持全局图数据分析,报告,并通过ETL连接大数据平台
支持全文检索
在这里插入图片描述
在这里插入图片描述
Benchmark
常用的Benchmark

常用Benchmark.PNG
常用衡量指标

1 Load Time
2 Repository Size 存储库大小
当知识图谱越大时,希望读写性能呈线性增长时的斜率低
3 Query Response Time 查询响应时间
单Query:是否使用了Cache
多Query:mix query使得cache失效,大多存在与冷启动,即cache无预先保存与Query相关的结果情况
4 Throughputs 吞吐量
单Query
多Query
5 Inference Support 推理支持

在这里插入图片描述

一个音乐的知识图谱例子

在这里插入图片描述

在这里插入图片描述
艺术家 歌曲trackID 专辑 albumID 相互之间的关系如图 string是各个的名字
在这里插入图片描述
生成 <> <> . 的TTL数据
在这里插入图片描述
生成数据文件
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值