ArangoDB Graphs 系列——02 基础图技能

本文内容来源于官网2019版的课程,使用美国机场航班真实数据,来构建图并写一些有趣的查询。

ArangoDB

官方对ArangoDB的介绍中,它式一个原生多模型数据库

  • 多模型:支持3种主要的NoSQL数据模型,即key-value, documents, graph
  • 原生:使用相同的底层核心和一套查询语言(即AQL)来支持以上数据模型

ArangoDB的存储层级如下图所示

  1. 可以建立多个Databases,其中可包含任意数量的collections,安装好之后,有一个默认的数据库 _system

  2. Collections可以包含任意数量的documents。ArangoDB中有两类型的collection: document collection和edge collection

  3. Documents中存储的都是JSON对象,这些JSON对象中会含有一些系统自带的属性,如 _key, _id, _rev, _from, _to

ArangoDB架构

图基础

在ArangoDB中,每个边都有单一明确的方向,如果两个点之间是双向的关系,则需要两个方向的边来表示。不过在图遍历时,你可以使用 ANY来忽略边的方向(另外两种方向是 INBOUNDOUTBOUND)

ArangoDB允许你存储各种不同形状和体量的图,比如DAG有向无环图/有环/自环/多图(即两个顶点之间有多个边)。

顶点和边都是JSON document,所以说你可以存储任意想存的信息。

截屏2022-04-12 下午3.38.24.png

数据集

案例中使用的数据集来自于美国超过3000个机场,30万个航班在2008年1月1日至1月15日期间的数据

其中airport节点的结构如下,可看到每个机场包含全称,机场缩写,所在城市,州,经纬度,是否有VIP休息室等属性。

截屏2022-04-12 下午3.49.01.png

flights的结构如下,其中包含航班号,尾号,承运人编号,起飞降落时间地点等信息。

截屏2022-04-12 下午3.53.14.png

以下是几个样例数据,会分别存储在airports和flights各自的collection中。

截屏2022-04-12 下午4.06.06.png

如果要形成图,可以把airports当成顶点, flights当成边。airport中的 _id属性可以作为 flights中 _from和_to的值,从而表示某航班是从哪个机场飞到哪

截屏2022-04-12 下午4.52.34.png

最后对ArangoDB中的两类collection做个总结:

Document collections Edge collections
包含document,每个document都是JSON对象 包含含有特殊边属性的document,即 _from和_to
内置索引,每个document可以通过_key被快速检索到 每个edge collection都内置边索引
document可用作图中的顶点,换句话说,如果不建立图,也可以当做普通document使用 相当于RDBMS中存储多对多关系的cross table

下载和安装ArangoDB

之前的文章中已经介绍过了下载安装,一旦server启动后,可以通过在浏览器中访问http://localhost:8529 来打开web界面(ArangoDB社区把该UI界面称为 Aardvark)

本文仍然使用默认的 _system数据库为例

数据导入

arangodb_demodata下载示例数据集,并解压得到两个.csv文件,分别是airports.csv和flights.csv

导入 Airports

使用导入工具arangoimport,在命令行中键入命令来导入数据

arangoimport --file airports.csv的解压路径 --collection airports --create-collection true --type csv
复制代码

可以使用--help来查看arangoimport帮助:

arangoimport --help
复制代码

如果使用的不是默认root用户,可以使用 --server.username name来指定,如果没设置密码或者取消了登录认证,则看到提示要输入密码时直接回车。

解压后的airports.csv片段如下:

截屏2022-04-12 下午5.54.23.png

在命令行中敲入导入命令行,会看到类似如下的反馈:

截屏2022-04-12 下午5.56.11.png

arangoimport在背后做了什么呢?

  • 创建了一个新document collection,名叫 airports, 使用_key作为索引
  • CSV文件中的每一行都建立一个document,除了首行和最后一行(为空行)
  • csv的首行定义了属性名称

打开web界面,左侧菜单栏选择COLLECTIONS,可以看到airports,打开后即可浏览刚才导入的数据,如下图:

截屏2022-04-12 下午6.10.42.png

导入 Flights

参考

[1]Graph Course for Freshers

猜你喜欢

转载自juejin.im/post/7085512599151837220
今日推荐