DSE Graph评论:Graph数据库起双重作用
图形数据库明确表示节点之间的连接,并且比关系数据库更有效地分析网络(计算机,人,地理或其他方面)。 最近有很多好的分布式图形数据库,包括Amazon Neptune (OLTP,使用Gremlin和SPARQL查询语言), AnzoGraph (OLAP,使用SPARQL *,它是对SPARQL的增强), Neo4j (具有某些OLAP功能的OLTP,使用Cypher ); 和TigerGraph (混合OLTP和OLAP,使用GSQL)。
DSE Graph是一个分布式图形数据库,它建立在后端列式数据库DataStax Enterprise(DSE)上 ,并使用Apache TinkerPop Gremlin查询语言。 该产品源自开源的Titan数据库,该数据库具有多个后端,包括Cassandra。 DataStax Enterprise是Cassandra的增强版本。
当DSE Graph首次发布时,其他的Titan后端被删除,并且Titan代码被完全重写以更好地利用DSE。 从图到列的数据映射相当稀疏,但是使用专用图加载器加载图是必需的。 在DSE Graph 6.8的当前预览版中,图形顶点,边线和属性数据到列的映射比以前更紧密,并且可以使用DSE批量加载器dsbulk
来完成加载图,这与用于加载列的实用程序相同。
DSE Graph使用两个不同的引擎来支持事务和分析工作负载。 分析引擎依赖于Spark,后者是DSE产品的一部分。
DSE Graph的当前版本称为Graph Core。 旧版本现在称为Graph Classic; Graph Classic仍在产品中以向后兼容。 Graph Core和DSE 6.8预计于2020年上市。
DSE Graph Core架构和主要功能
根据DataStax的说法,Core Engine计划从三个主要方面改进了DataStax Graph:图形模型与常规C *(Cassandra)表对齐; 可用性得到改善; 并提高了性能。 图形性能的提高很大程度上是因为简化了读取和写入路径。
在新的图形数据模型中,图形对应于CQL键空间,顶点或边标签对应于CQL表,基础顶点或边标签的属性对应于CQL列。 可以使用ALTER KEYSPACE
语法使用CQL将现有键空间转换为图形,并可以使用ALTER TABLE
语法将现有表转换为顶点或边缘标签。
Core Engine体系结构的另一个好处是,您可以像CQL数据一样加载图形数据,因为图形数据实际上存储为C *键空间,表和列。 dsbulk
实用程序比用于Classic Engine图形的旧graphloader
实用程序要快得多。
DSE Graph架构。 该图早于DSE 6.8预览版,但实际上是正确的。 发生了变化的是DSE Graph和Cassandra之间的映射,未明确显示。
DSE Graph安装
我通过两种方式在iMac上安装了DataStax Graph 6.8和DataStax Studio: 使用Docker / Kubernetes (DataStax Studio),以及直接从tarball安装。 这些是实验室的预览,而不是产品。
我遇到了一些问题,但是在DataStax的帮助下解决了这些问题。 我安装的Java JDK比受支持的最低版本稍旧。 我通过从Oracle安装JDK 13来解决此问题。 我的机器上还安装了DSE 6.0和Spark的旧版本,然后安装了新的DSE 6.8。 在DataStax的帮助下,我在cassandra.yaml中设置了一些路径来“沙盒化”安装,并且在很好的情况下,我删除了旧的安装,包括/ var / lib / cassandra和/ var / log / cassandra。
当我最终使Docker和tarball安装都能正常工作时,我能够摆脱旧的iMac(Core i7 CPU,16 GB RAM和硬盘)的性能实在令人难以置信。
DataStax为我创建了两个云集群,可用于测试性能,这些性能更能代表企业使用的性能。 较大的群集具有3个节点,每个节点具有32个vCPU,128 GB RAM和SSD的AWS m5d.8xlarge实例。 不用说,与我的iMac相比,该集群速度很快。
测试DSE图
我在iMac上使用标准的DataStax Studio演示笔记本进行了研究,但是涉及的数据并不多。 为了在AWS的三节点集群上使用,Denise Gosnell博士根据她即将出版的有关图形数据的书 (将于2020年由O'Reilly出版)提供了两个更大的数据集和笔记本来演示对它们的分析。 较小的数据集包含6K比特币提供商中的36,000信任等级; 较大的数据集包含300K电影和20M用户排名。
对于这两个数据集,第一步是创建图模式,第二步是将数据批量加载到图数据库中。 之后,我根据需要使用OLTP查询引擎或Spark OLAP查询引擎对数据运行了各种Gremlin查询。 下面的屏幕图像及其标题显示了我的测试过程。
笔记本单元格的左侧显示了一些新的Gremlin schema
调用。 在右侧,下拉列表显示两个Gremlin引擎选项,即OLTP和OLAP(火花)。 与OLTP引擎相比,Spark引擎可以更大规模地运行,但仅支持Gremlin的一部分。
dsbulk
加载比特币信任数据库的顶点和边缘数据。 每次加载不到一秒钟。 “ rows/s
列比经过时间更有意义。 此图显示了一个特定的比特币提供商周围的信任社区,编号为1094。开头的with("label-warning",false)
子句抑制了在此上下文中无关紧要的烦人消息。 从起始顶点开始,我们将所有入站和出站边沿到相邻的顶点,然后再从这些顶点开始。
使用Gremlin sack()
函数可以在执行图形遍历时累积值。 withSack(0.0)
调用将麻袋初始化为浮点零。 sack(sum).by("trust")
将来自每个边缘的信任值相加。 如您所见,总信任度使用order().by(sack(), decr)
确定排序顺序。
PageRank是Google开发的一种全局算法,用于衡量网页的相对重要性。 在TinkerPop中,您需要使用Graph Computer进行图形遍历,以便调用pageRank
; 在DSE Graph中,您需要使用Spark运行分析查询以调用pageRank
。 在这里,我们针对比特币信任图运行了一个基本的pageRank()
查询; 花了大约39秒。 我们以前对同一图形的OLTP查询每个都花费了不到一秒钟的时间。 PageRank会触摸图形中的每个顶点,除非您过滤特定的顶点标签。 在这里,我们以表的形式查看结果。
我们也可以将PageRank结果显示为气泡图。 在这里,我使用了连接度来确定顶点的大小,并使用了Louvain社区检测(聚类)算法为顶点着色。
在这里,我已移至DataStax Studio笔记本主屏幕。 那里有半复制的笔记本,可以让我重现演示中看到的内容,包括数据加载,而不必删除图形。
现在,我们开始研究基于MovieLens和Kaggle Movie数据库的结合的笔记本。
这些schema()
调用定义了电影图数据库的一部分,我们将在接下来的六个步骤中使用它们。 请注意,对顶点标签而不是边缘标签使用了partitionBy()
。 图顶点中的分区键与C *表中的主键相对应,表示创建索引。
在这里,我们在集群中运行的shell中使用dsbulk
,将数据加载到我们刚刚在笔记本中创建的架构中。 最大的一组是等级,包括2千万条边,它们在1分钟23秒内加载完毕。
从IMDB和TMDB合并的电影数据集包含超过30万个电影。
来自MovieLens的收视率边缘超过2000万。 请注意,这是一个作为Spark作业运行的分析查询,仅耗时1.4秒。
此处显示的查询使用aggregate("x")
调用来创建电影的临时集合,其收视率与Toy Story相似,而cap("x")
发出该集合。 unfold()
步骤将集合取消捆绑,以便我们可以查看项目。
在这里,我们正在查看由单个用户评分的电影。 调用valueMap()
会显示遍历返回的每个电影顶点的所有值。
在这里,我们正在看同一个用户,并返回她的20部收视率最高的电影的电影名称和评级。
侧面的图形数据库
DSE Graph以与DataStax Enterprise正确集成的方式提供了高性能OLTP和OLAP图形操作,从而消除了同时拥有列式数据库和图形数据库的需求。 如我们所见,DSE Graph对Gremlin具有很好的支持,并具有很好的可伸缩性。 当DSE 6.8在2020年发布时,我预计该产品将与Amazon Neptune,Neo4j和TigerGraph竞争。
在没有定价信息的情况下讨论价值是不可能的,DataStax不会向我发布定价。 尽管如此,还是值得将DataStax放在图形数据库的评估列表中。 使用体面大小的集群免费试用一两个星期,并为您自己的应用程序提供概念证明,应该告诉您需要了解的内容。
-
成本:包含DSE Graph的DataStax Enterprise可免费用于非生产用途,但需要在生产中使用订阅。 订阅按节点或核心定价。
平台: Windows,MacOS,Linux; Docker,Kubernetes。
From: https://www.infoworld.com/article/3453384/dse-graph-review-graph-database-does-double-duty.html