什么是图?
graphDB在计算机科学中,一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。
图有各种形状和大小。边可以有权重(weight),即每一条边会被分配一个正数或者负数值。考虑一个代表航线的图。各个城市就是顶点,航线就是边。那么边的权重可以是飞行时间,或者机票价格。
graphDB有了这样一张假设的航线图。从旧金山到莫斯科最便宜的路线是到纽约转机。
边可以是有方向的。在上面提到的例子中,
边是没有方向的。例如,如果小明认识小红,那么小红也就认识小明。相反,有方向的边意味着是单方面的关系。
继续前面航班的例子,从旧金山到阿拉斯加有向边意味着从旧金山到阿拉斯加有航班,但是从阿拉斯加到旧金山没有。
什么是图数据库?
- 首先,图数据库不是存储图像的数据库,那个是 Image 数据库。图数据库和传统的关系数据库比较,就是图和表的差别。图数据库是用点和边来表达数据之间的关系,是更自然的存储方式,更专注于对象之间的关联。传统的关系型数据库,可能是在记录交易的场景更有优势,在应用发展的某一个阶段更容易让人学习和使用。现在,我们讲社交关系是一种图,我们买东西、交易是一种图,资金是一种图,包括现在的知识也是一种图,图数据库是在知识图谱底层的一个基础设施,它把数据用图、用点和边的方式存储起来。
图数据库的应用有哪些优点?
-
使用图(或者网)的方式来表达现实世界的关系很直接、自然,易于建模。比如某人喜欢看某电影,就可以建立一条边连接这个人和这部电影,这条边就叫做“喜欢”边,同时这个人还可以有其它边,比如“朋友”边、“同学”边等,同样这个电影也可以有其它边,比如“导演”边、“主演”边等,这样就构建了自然的关系网。
-
图数据库可以很高效的插入大量数据。图数据库面向的应用领域数据量可能都比较大,比如知识图谱、社交关系、风控关系等,总数据量级别一般在亿或十亿以上,有的甚至达到百亿边。mysql不做分表分库的情况下插入百万数据基本就慢到不行,图数据库基本能胜任亿级以上的数据。
-
图数据库可以很高效的查询关联数据。传统关系型数据库不擅长做关联查询,特别是多层关联(比如查我的好友的好友有哪些人),因为一般来说都需要做表连接,表连接是一个很昂贵的操作,涉及到大量的IO操作及内存消耗。图数据库对关联查询一般都进行针对性的优化,比如存储模型上、数据结构、查询算法等,防止局部数据的查询引发全部数据的读取。
-
图数据库提供了专业的分析算法、工具。不少图数据库还提供了数据批量导入工具,提供了可视化的图显示界面,使得数据的分析结果更加直观展示出来。(这个在很多此类型数据库的视图界面都有体现,后面会拿arangoDB举例)
与传统关系型数据库相比,图数据库有哪些优势?
-
可以很自然的表达现实世界中的实体及其关联关系(对应图的顶点及边)
-
灵活的数据模型可以适应不断变化的业务需求
-
灵活的图查询语言,轻松实现复杂关系网络的分析
-
关系型数据库在遍历关系网络并抽取信息的能力非常弱,图数据库则为此而生
-
关系型数据库在数据规模庞大时很难做多层关联关系分析(Join操作往往消耗过长时间而失败),图数据库则天然把关联数据连接在一起,无需耗时耗内存的Join操作,可以保持常数级时间复杂度。
ArangoDB
-
原生多模型数据库
ArangoDB是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵盖三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。基于其本地集成多模型特性,您可以搭建高性能程序,并且这三种数据模型均支持水平扩展。
- Document 文档 可以在文档中存储海量数据, ArangoDB功能强大,应用范围广泛,可用于查询和处理诸如JOINs、辅助索引或ACID事物之类的文档。您还可以在JOIN连接上实现水平扩展。
- key/value 每个document文档里均有唯一的键和与其对应的值(键/值对)。如果您在document文件中存储一个值,那么ArangoDB可用作经典的、高度可扩展的键/值对存储例如用户在电子商务平台上将商品临时存储在购物车里或物联网应用程序中的传感数据等。
- ArangoDB包含了graph图形存储的完整功能集。例如模式匹配、最短路径、完全遍历等。与当前许多主流的图形处理方法相比,ArangoDB可以快速执行图形查询。
-
通过Foxx framework进行扩展
Foxx是一个JavaScript框架,用于编写直接在ArangoDB内部运行的以数据为中心的HTTP微服务。
1. 统一数据存储逻辑 在一致的特定于域的API上标准化数据访问和存储逻辑,从而允许客户端使用相同的性能优化查询来访问数据库。
2. 减少网络开销 Foxx在ArangoDB本身内部运行,使数据库查询与处理请求的逻辑捆绑在一起,从而减少应用程序需要发送到数据库的请求的数量。
3. 限制对敏感数据的访问 通过将身份验证和授权过程从应用程序转移到ArangoDB,Foxx可以隔离敏感信息,从而确保它永远不必离开数据库。
4. 其他功能 Foxx支持其他功能,包括使用Swagger自动生成文档,全栈JavaScript,无限扩展性以及与外部服务的集成。
网友评论