【TigerGraph】图数据库实战入门 —— 数据导入

简介: 该文件总共有27,279行,除第1行是表头外,每行用3列表示一部电影,分别为电影id(movieId)、电影名称(title)和电影类型(genres)。需要注意的是该csv文件用逗号分隔不同的列,而为了处理电影名称中包含的逗号,使用双引号(")转义title列。该文件总共有20,000,264行,除第1行是表头外,每行用4列表示一位用户对一部电影的评分,分别为用户id(userId)、电影id(movieId)、评分(rating)和评分时间(timestamp)。

 目录

 

1、数据集介绍

1.1 ml-20m解压之后如图

1.2 movie.csv

1.3 ratings.csv:

二、创建图模型

2.1 创建人(persion)节点

2.2 movie节点类型:

2.3 添加边

三、创建数据映射

3.1 添加movies.csv文件

3.2 添加 ratings.csv文件

3.3 添加映射关系

3.4 添加映射关系属性

四、载入数据

五、浏览图数据


请在这里下载并安装TigerGraph终身免费的开发者版本(Developer Edition):https://www.tigergraph.com/download/

我们使用MovieLens 20M数据集,该数据集相关工作请参见引用资料[1]。该数据集包含了138,000位用户针对27,000部电影的2000万条评分记录。数据集的下载地址为:https://grouplens.org/datasets/movielens/20m/

解压缩ml-20m.zip压缩包后,我们来熟悉一下该数据集的数据格式。

1、数据集介绍

1.1 ml-20m解压之后如图

image.gif编辑

1.2 movie.csv

image.gif编辑

该文件总共有27,279行,除第1行是表头外,每行用3列表示一部电影,分别为电影id(movieId)、电影名称(title)和电影类型(genres)。

需要注意的是该csv文件用逗号分隔不同的列,而为了处理电影名称中包含的逗号,使用双引号(")转义title列。

1.3 ratings.csv:

image.gif编辑

该文件总共有20,000,264行,除第1行是表头外,每行用4列表示一位用户对一部电影的评分,分别为用户id(userId)、电影id(movieId)、评分(rating)和评分时间(timestamp)。

这里的评分时间是用unix时间戳表示的。

在这个数据集中并没有提供用户的个人信息,可能是出于保护用户隐私的考虑。因此在后面的可视化展示中我们看到的用户数据都是被一个数字表示的。

二、创建图模型

图模型由若干节点类型(vertex type)和若干边类型(edge type)组成。可以指定边类型的源节点类型(source vertex type)和目标节点类型(target vertex type)。

图模型是对现实世界的问题的一种直观的抽象。

该电影推荐问题的模型:

节点:人(person)和电影(movie)

关系:打分(rate)

rate的源节点类型为person,目标节点类型为movie。

使用GUI集成开发工具GraphStudio创建图模型。打开浏览器,在地址栏输入安装TigerGraph机器的IP+14240端口访问GraphStudio,载入完成后点击左侧导航栏的Design Schema项进入创建图模型页面:

image.gif编辑

2.1 创建人(persion)节点

单击下图中黄色箭头所指的工具栏中的按钮即可添加节点类型,在弹出的窗口中设置节点类型名称、主键(primary id)名称和类型、属性(attribute)名称和类型,并根据语义选择节点类型的颜色和图标。

首先添加person节点类型

一个id属性

image.gif编辑

2.2 movie节点类型:

三个属性:id,title,genres

点击select icon 可以选择图标

点击色值,可以选择颜色

image.gif编辑

添加成功之后,可以看到如下

image.gif编辑

2.3 添加边

单击下图

第一步中黄色箭头所指的工具栏中的按钮进入添加边类型模式

第二步点击源节点类型

第三步点击目标节点类型

image.gif编辑

在弹出的窗口中设置边类型名称、边类型的有向性(directed)、属性(attribute)名称和类型,并可以选择边类型的颜色。我们输入rate边类型的信息:

image.gif编辑

至此,我们完成了图模型的创建。可以用鼠标滚轮缩放图模型,也可以用鼠标按住工作面板的空白处拖动整个图模型。

点击工具栏中的发布按钮将图模型发布到TigerGraph系统中。整个发布大概需要2分钟。

image.gif编辑

三、创建数据映射

数据映射(data mapping)指建立数据模型之间的元素的对应关系。在电影推荐的这个实例中,我们需要建立从csv文件代表的数据模型到图模型之间的对应关系。

这里需要弄清楚模型和元素之间的关系,这种关系类似于面向对象程序设计中类(class)与实例(instance)之间的关系。我们刚刚创建的图模型描述了这些类之间的关系,而我们接下来要向图中载入的数据(元素)则是具体的每一个人、每一部电影和每条某人对某电影的打分。

在由movies.csv文件和ratings.csv文件组成的模型中,文件表头的语义代表了该模型的结构。

movies.csv文件除表头以外的每行数据代表了一个电影元素,我们需要将它映射到图模型中的电影元素。

ratings.csv文件除表头以外的每行数据包含了一个(可能重复出现的)人元素和一个打分元素,我们需要将它映射到图模型的人元素和打分元素。

点击左侧导航栏的Map Data To Graph项进入创建数据映射页面:

image.gif编辑

3.1 添加movies.csv文件

需要将数据文件上传到TigerGraph后台。

有两种方式:1,直接上传:对于小于500MB的文件,可以直接通过GUI上传。

点击下图中黄色箭头1所指的工具栏添加数据源按钮,在弹出的窗口中点击黄色箭头2所指的上传文件按钮,选择本机解压缩后的ml-20m数据集中的movies.csv文件上传。

上传完成后在文件列表中会显示该文件:

image.gif编辑

然后将该数据源添加到工作面板上。

在Files on server列表中点击movies.csv文件,GraphStudio后台用算法智能分析数据并推断出文件的分隔符(delimiter)、换行符(end of line)和是否有表头(has header)。

需要在转义字符下拉列表中选择双引号("):

image.gif编辑

点击添加之后,movies.csv作为一个数据源被添加到工作面板上,表示为一个文件图标。用户可以按住这个图标拖动到任何想要的位置:

image.gif编辑

3.2 添加 ratings.csv文件

添加ratings.csv文件

再次点击工具栏添加数据源按钮,在弹出的窗口中选择ratings.csv文件添加到工作面板:

image.gif编辑

3.3 添加映射关系

将movies.csv映射到movie节点类型。点击工具栏中的映射数据到图模型按钮,然后点击数据源(movies.csv)图标,然后点击目标节点类型(movie)。这时候一条数据映射关系就被创建了:

image.gif编辑

3.4 添加映射关系属性

1,先点击数据源表中的某一行(对应于csv文件中的某一列,这种旋转90度的表达方式是ETL中普遍采用的可视化方式)

2,再点击节点类型属性表中的某一行(对应节点的主键或某个属性),就完成了一个属性映射。

这里建立了三条属性映射,你可能注意到原来显示在左侧工作面板该数据映射上面的错误信息消失了,这是因为你创建了对于movie节点类型的主键的映射。

对于节点来说,主键映射是必须的。而属性可以不被映射,在这种情况下当数据加载时这些未被映射的属性会使用默认值。

image.gif编辑

最后,建立ratings.csv到rate边类型的数据映射。重复与上面类似的操作,最终的映射结果为:

image.gif编辑

最后,点击左上角的发布按钮将数据映射发布到TigerGraph系统。发布所需时间和数据映射的个数相关,这里大概需要几秒:  

image.gif编辑

四、载入数据

接下来让TigerGraph系统根据我们创建的数据映射加载数据。点击左侧导航栏的Load Data项进入加载数据页面,点击工具栏中的开始加载按钮:

image.gif编辑

加载完成之后,如图:

image.gif编辑

五、浏览图数据

下面利用GraphStudio内置的一些图数据浏览功能直观的感受一下刚刚加载的数据。

点击左侧导航栏的Explore Graph项进入浏览图数据页面:

image.gif编辑

点击拾取节点(Pick Vertices)按钮从图数据中拾取5个person节点和5个movie节点。这里的拾取不是随机的,因此每次拾取会返回相同的结果。

如果想要更多的节点,可以修改Enter a number中的数字。这里最大可以输入500。

如果知道节点的主键,可以在Enter vertex id输入框中输入主键的值,然后点击旁边的Search按钮拾取那个节点。配置(Configuration)可以控制拾取节点的类型范围,默认是从全部类型中拾取。你也可以勾选取消一些类型。

image.gif编辑

默认情况下所有节点显示的标签都是它们的主键。

可以修改设置显示其他属性,设置movie类型的节点显示它们的title属性:

image.gif编辑

完成修改之后,可以看到工作面板中的movie节点的标题被显示出来了,可视化变得更加直观

image.gif编辑

切换到黑色的纵向导航栏第三个最短路径项。点击选择起始节点(Choose starting vertex)输入框,再随意点击工作面板中的一个节点。再点击选择目标节点(Choose destination vertex)输入框,再随意选择工作面板中的另一个节点。

image.gif编辑

就先到这里了,加油!


相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
22天前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
69 0
|
2天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
阿里云数据库重磅升级!元数据服务OneMeta + OneOps统一管理多模态数据
|
11天前
|
SQL NoSQL Java
彻底革新你的数据库操作体验!Micronaut数据访问技巧让你瞬间爱上代码编写!
【9月更文挑战第10天】Java开发者们一直在寻找简化应用程序与数据库交互的方法。Micronaut作为一个现代框架,提供了多种工具和特性来提升数据访问效率。本文介绍如何使用Micronaut简化数据库操作,并提供具体示例代码。Micronaut支持JPA/Hibernate、SQL及NoSQL(如MongoDB),简化配置并无缝集成。通过定义带有`@Repository`注解的接口,可以实现Spring Data风格的命名查询。
28 6
|
21天前
|
SQL Java OLAP
Hologres 入门:实时分析数据库的新选择
【9月更文第1天】在大数据和实时计算领域,数据仓库和分析型数据库的需求日益增长。随着业务对数据实时性要求的提高,传统的批处理架构已经难以满足现代应用的需求。阿里云推出的 Hologres 就是为了解决这个问题而生的一款实时分析数据库。本文将带你深入了解 Hologres 的基本概念、优势,并通过示例代码展示如何使用 Hologres 进行数据处理。
78 2
|
21天前
|
SQL 存储 数据处理
"SQL触发器实战大揭秘:一键解锁数据自动化校验与更新魔法,让数据库管理从此告别繁琐,精准高效不再是梦!"
【8月更文挑战第31天】在数据库管理中,确保数据准确性和一致性至关重要。SQL触发器能自动执行数据校验与更新,显著提升工作效率。本文通过一个员工信息表的例子,详细介绍了如何利用触发器自动设定和校验薪资,确保其符合业务规则。提供的示例代码展示了在插入新记录时如何自动检查并调整薪资,以满足最低标准。这不仅减轻了数据库管理员的负担,还提高了数据处理的准确性和效率。触发器虽强大,但也需谨慎使用,以避免复杂性和性能问题。
28 1
|
21天前
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
40 1
|
8天前
|
SQL 存储 数据库
MSSQL遍历数据库根据列值查询数据
【9月更文挑战第12天】在 SQL Server 中,可以通过游标或临时表遍历数据库并根据列值查询数据。示例展示了如何创建临时表存储数据库名,并通过循环遍历这些名称来执行特定查询。需替换 `YourTableName`、`YourColumnName` 和 `YourValue` 为实际值。此方法要求有足够权限访问各数据库。若无跨库权限,需分别执行查询。
|
14天前
|
前端开发 数据库 开发者
数据模型(数据库表设计)生成代码
BizWorks ToolKit 插件集成 Mybatis-Plus 代码生成工具,支持从数据库表批量生成代码,简化开发流程。本文详细介绍配置方法及项目示例,包括配置文件格式、生成选项及具体操作步骤,帮助开发者快速实现代码同步更新。配置文件 `.mp.yaml` 支持自定义输出目录、生成组件等,适用于多种项目结构。
27 0
|
18天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
37 0