数据库|高薪程序员必备知识:图数据库( 二 )


因此 , 图数据库相比于关系型数据库而言 , 具有以下几点优势:
1、天然解释性:图的表示可以很直观地表达现实世界中的实体和关系
2、高性能:图数据库在数据关联关系查询中具有更高的性能
3、灵活性:一个新的实体可以很容易地加入现有数据中 , 可以适应不断变化的业务需求 , 任意添加或删除顶点、边 , 扩充或缩小模型
三、现在都有哪些主流图数据库
现在比较常用的图数据库包括Neo4j、JanusGraph、HugeGraph、ArangoDB、Amazon Neptune、AllegroGraph、Oracle Spatial and Graph、OrientDB、OrientDB等等 。 按照类型 , 可以分为纯图模型数据库(如Neo4j、JanusGraph、OrientDB等)以及多模型数据库(如ArangoDB、OrientDB等) 。
其中最常用的是开源的Neo4j 。

Neo4j是使用Java语言完全开发的 , 它使用原生图存储 , 以高度自由且规范的方式管理和存储数据 。 其单机性能表现良好 。 对于企业版是集群模式(非分布式) 。
JanusGraph是开源的分布式图数据库 , 它的单机性能较差 , 但是分布式部署可以支持千亿级以上的海量数据 , 并且和spark、hbase等有着良好的结合度 。
四、学习图数据库需要了解哪些算法知识
如果想深入学习图数据库 , 那么对于一些基本算法的理解必不可少 。 学习图数据库需要了解的基本算法有以下几种:
1、遍历算法:深度优先遍历、广度优先遍历
2、搜索算法:深度优先搜索、广度优先搜索、双向广度优先搜索、A*算法
3、最短路径算法:Dijkstra、Bellman-Ford、Floyd-Warshall
4、图匹配算法:匈牙利算法、KM算法
5、强连通分支算法与网络流:Ford-Fulkerson
6、深度学习:GNN
五、学习图数据库需要了解的图查询语言
像SQL一样 , 图查询语言是为了解决实际的查询问题 。 例如:
在一棵家谱树中 , 某人有多少个远房表亲?
在记录朋友或关注者信息的社交媒体图片中 , 两个用户之间的分离程度是多少?
在企业的供应链中 , 工厂与客户之间的最长跳数是多少?
在一系列银行交易中 , 哪些人与欺诈交易间的关系高于平均水平?
等等 。
那么 , 目前常用的图查询语言有哪些呢?主要有以下几种:

  • Gremlin——最初为Apache Tinkerpop项目开发的图搜索语言 , 可实现过程性或声明性查询 。
  • Cypher——最初由Neo4J创建 , 之后以OpenCypher的形式得到普及 , 这种声明性语言可用于搜索匹配特定属性的顶点和边 。
  • GQL——一项标准倡议 , 致力于将Cyher、GSQL以及PSQL统一起来 。
  • SPARQL——一种为了查询RDF格式知识图谱而建立的标准 。
  • PGQL——甲骨文的原创语言 , 用于从符合规范的顶点当中搜索并收集信息 。
  • GSQL——TigerGraph的原创过程语言 。
  • AQL——ArangoDB的原创过程语言 。
  • GraphQL——顾名思义 , 它肯定支持图查询;但GraphQL实际是一种更为通用的查询语言 , 能够高效搜索大部分文档与关系数据库 。 它虽然也能发掘出一部分图数据库用途 , 但总体来讲只是在支持与关系数据库相同的常规查询 。
好了 , 了解了这么多 , 现在是不是很想下载一个图数据库 , 开始自己探索 , 走向高薪之路了呢?
【数据库|高薪程序员必备知识:图数据库】