带你读《Elastic Stack 实战手册》之45:——3.5.4.Graph (上)

简介: 带你读《Elastic Stack 实战手册》之45:——3.5.4.Graph (上)

3.5.4.Graph


创作人:杨丛聿

审稿人:朱荣鑫

 

Graph 介绍

 

图作为一种现实中广泛存在的结构,与我们的生活息息相关,如社交网络、交通网络等。如何抽象的描述这些结构,并对其进行分析,获取潜在价值是一个普遍存在的问题。

 

相比于我们熟悉的关系数据库的建模方式,从 Graph 的角度出发,可以让一些复杂问题和场景的处理变得简单,如行为分析、个性化推荐、知识图谱等。

 

通常来讲,对于图的研究,分为图存储和图计算分析两个场景,二者解决的问题不同,相应的技术栈也有一些差异。

 

图存储

 

更强调图结构的建模,以及解决诸如邻居、路径等查询问题。

 

图计算

 

则是从全局或子图的角度为出发点,经过大量计算,来发现更深层次的问题,其关注的技术点,更多的是资源调度,以及各类经典图分析算法的实现。

 

Elasticsearch 的 Graph 功能介于二者之间,其定位是对已有的结构化数据进行分析,从图的角度去审视已有数据,并发现潜在价值。

 

图通常是以 vertex 和 edge 的模型管理数据,Elasticsearch 也不例外,只是区别于图数据库的先建模后存储,Elasticsearch 中 Graph 的建模逻辑,是在查询中动态填入的,其底层实现


逻辑是基于 Elasticsearch 的 terms 和 aggregations 相关功能。

 

相比于图数据库通常只提供基于 vertex 和 edge 的基础查询,Elasticsearch 由于本身在构建倒排索引时会统计词频,这使其在查询层面,兼具一定的分析能力。可见 Elasticsearch

Graph 本身的定位并不是图结构数据的管理(如知识图谱),而是在已有的结构化数据中,以图的视角来发现一些问题。如库中已存在用户的听歌记录,则可以根据听众偏好,为其进行歌曲的推荐。

 

其他图数据库概览

 

由于 Elasticsearch 本身从逻辑上更接近图数据库,不管是 vertices + connections 的数据模型还是查询模式,本节先介绍下目前主流图数据库的类别和实现逻辑,具体细节不进行展开。

 

目前主流的图数据库,以属性图和 RDF 模型为主;

RDF 相对小众,仅有 DGraph 属于此范畴;

属性图是由节点、边、属性三者构成的有向图,相比于其他数据库,其关键特征之一是边(或连接)与顶点一同被视为模型的核心组件


基于这些理念,一般属性图数据的结构可以归纳如下:

 

每个顶点(vertex)包括:

 

l 唯一标识符

l 一组出边

l 一组入边

l 一组属性(键值对

 

每条边(edge)包括:

 

l 唯一标识符

l 边的起点


l 边的终点

l 描述两个顶点间关系类型的标签

l 一组属性(键值对)

 

对于各类图数据库而言,数据建模的核心便是如何组织这些数据,从存储和索引的角度来看,目前主要分为自行实现和 Graph 层两种:

 

自行实现存储索引

 

代表如 neo4j,其使用了免索引邻接,即每个节点都会维护其相邻节点的引用,免去了基于索引查找相邻节点的开销,这个设计理念在很多图数据库中都可以看到;

 

以 Graph 层的形式构建,使用外置 Nosql 存储和外置索引

 

代表 JanusGraph、HugeGraph,对于此类图数据库,Elasticsearch 便可作为其索引层存在。

除此以外,如何在分布式场景下,对存储和计算进行优化,是各类图数据库遇到的最大问题,针对诸如分布式场景下的分片、删除等问题,逐步诞生了 NebulaGraph、 Dgraph 等。


《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.4.Graph (下) https://developer.aliyun.com/article/1228724

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
机器学习/深度学习 自然语言处理 算法
文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)
文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)
10655 145
|
JavaScript 前端开发 小程序
微信小程序全栈开发之性能优化策略
【4月更文挑战第12天】本文探讨了微信小程序全栈开发的性能优化策略,包括前端的资源和渲染优化,如图片压缩、虚拟DOM、代码分割;后端的数据库和API优化,如索引创建、缓存使用、RESTful API设计;以及服务器的负载均衡和CDN加速。通过这些方法,开发者可提升小程序性能,优化用户体验,增强商业价值。
630 1
|
11月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
5690 0
|
数据可视化 Python
Python中的数据可视化:在数据点上添加标签
Python中的数据可视化:在数据点上添加标签
687 3
|
Kubernetes 负载均衡 应用服务中间件
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
|
Kubernetes Go 开发者
GO编程语言:简洁、高效、强大的开源编程语言
GO语言,又称Golang,是由Google公司开发的一种静态类型、编译型的编程语言。其设计理念是提供一种直观、简洁、可靠的解决方案
446 2
|
前端开发
【Web 前端】对于数组去重都有哪些方法?
【4月更文挑战第22天】【Web 前端】对于数组去重都有哪些方法?
STM32CubeMX 定时器
STM32CubeMX 定时器
758 0
|
消息中间件 Java Apache
使用Spring Boot实现与ActiveMQ的消息队列集成
使用Spring Boot实现与ActiveMQ的消息队列集成

热门文章

最新文章

下一篇
开通oss服务