今天要讲的文章是OSDI 2016年的一篇文章,Fast and Concurrent RDF Queries with RDMA-based Distributed Graph Exploration。RDF全称是资源描述框架,RDF将现实生活中的关系描述成实体与实体之间的关系。这种实体与实体之间的关系可以用图来描述。实体可以用顶点来描述,实体与实体之间的关系可以用边来描述。

RDF图Graph应用场景

通过对大量且不断增长的RDF数据进行大量查询,RDF图形存储库为并发查询处理提供低延迟和高吞吐量势在必行。
现有的工作存在的问题
        先前的系统在大数据集上仍然经历高的查询延迟,并且大多数先前的设计具有较差的资源利用率,使得每个查询被顺序地处理。查询处理集中的依赖于潜在大表的连接操作,这通常会产生巨大的冗余中间数据。 此外,使用关系表triplets来存储三元组可能会限制一般性,使得现有系统难以支持RDF数据的一般图形查询,如可达性分析和社区检测。
现有的解决方案
1.使用triple 存储和 triple join方法
        存在的问题:First,使用三元组存储会过度依赖Join操作,特别是分布式环境下的merge/hash join操作。Second, scan-join操作会产生大量的中间冗余结果。Third, 尽管现有的工作使用redundant six primary SPO4 permutation index 可以加速join操作,但是索引会导致大量的内存开销。
2.使用Graph store 和 Graph exploration

存在的问题:之前的工作表明,最后一步join相应的子查询结果会造成一个潜在的性能瓶颈。特别是查询那些存在环的语句,或者有很大的中间结果的情况下。

Wukong针对现有的系统存在的问题,提处理一个可以在查询阶段进行优化中间结果的基于RDMA-Based的RDF Query系统。

1. Graph Model And Graph Indexs

类型的索引结构。分在Wukong中这里有两种不同别是 Predicate Index和Type Index索引。、

Wukong提出了谓词索引(P-idx)来维护所有使用其特定谓词标记的主体和对象入边和出边。索引顶点本质上充当从谓词到相应的主体或对象的倒排索引。Wukong还提出了一种Type Index索引方便查询一个Subject属于的类型。与先前基于图的方法(使用单独的数据结构管理索引)不同,Wukong将索引作为RDF图的基本部分(顶点和边)处理,同时还考虑了这些索引的分割和存储。 好处:首先,这使用图探索简化了查询处理,以便图探索可以直接从索引顶点开始。 其次,这使得在多个服务器之间分配索引变得简单而高效。

2.Differentiated Graph Partitioning

受到PowerLyra的启发,Wukong采用不同的分区策略算法对于正常顶点和索引顶点来说。每个正常顶点(例如,DS)将被随机分配(即,通过 散列顶点ID)到只有一个机器的所有边缘(邻居的ID)。与正常顶点不同的是,每个索引顶点(例如,takeCourse和Course)将被拆分并复制到多个机器,其边缘链接到同一机器上的正常顶点。 这很自然地将索引和它们的负载分配给每台机器。 

3.RDMA-friendly Predicate-based Store

Wukong采用一种基于RDMA-Based的分布式hash表结构存储RDF Graph Data。在这样的结构中,它包含两种不同的索引结构,一种是Type-index索引,存储Subject/Objetc的类型索引。一种是Predicate-Index索引,存储的是谓词的相邻顶点的索引。

4. Processing Query

4.1 Basic Query Processing

Wukong利用图探索通过沿着图特别是根据子图的每个边。对于大多数情况下(谓词通常是知道的恒定变量,然而subject/object是自由变量),Wukong利用谓词索引开始进行图探索。对于那些查询是一个子图环的查询,三个Subjet/Object都是自由变量。Wukong根据基于cost的方法和一些启发式的选择一个探索顺序。对于一些罕见的情况,那些谓词都是不知道的情况下,Wukong从一个静态的(常量)的顶点进行图形探索(通过pred 已知的顶点相关联的谓词)。

4.2 Full-history Pruning

在探索查询的每一个阶段中,通过RDMA READ读取其他机器上的数据,进行裁剪。裁剪那些没有必要的冗余数据。

4.3 Migrating Execution or Data

在探索查询的每一个阶段中,通过RDMA READ读取其他机器上的数据,进行裁剪。裁剪那些没有必要的冗余数据。对于一个查询阶段,如果有很少的顶点数据需要抓取从远程机器中,Wukong 使用一个本地执行的模式同步利用单边RDMA READ直接从远程顶点抓取数据。对于一个查询阶段,如果许多顶点需要被抓取。Wuong 利用一个Fork-Join 执行模式异步的分开查询计算到多个子查询在远程机器上。

4.4 Concurrent  Query Processing

Work-obliger work 窃取算法
        邻近的Worker进程的查询超时时间(s.end < now)。如果是这样的话这个Worker可能在处理冗长的查询,因此后续的查询任务可能被延迟。在这种情况下,这个Worker从该Worker的工作对队列中窃取一个查询任务来处理。在逼迫相邻的woker(知道看到一个不忙的Worker),Worker 进程持续通过从其中自己的工作队列中,持续处理自己的查询。持续处理自己的查询。

[OSDI 16] Wukong : 基于RDMA的高并发、快速的分布式RDF Graph Query系统相关推荐

  1. 高并发服务端分布式系统设计概要(上)

    高并发服务端分布式系统设计概要(上) ======张峻崇 原创.转载请注明出处.====== 又是快一年没写博客了,2013年也只剩尾巴,也不知道今年都忙了些什么.写这篇文章的目的,主要是把今年以来学 ...

  2. C/C++ 基于Linux的高并发后台服务器-经验小结

    1.多线程多进程模式 进程是操作系统资源分配最小的调度单位,意味着进程被暂停后,其下所有线程都会失去调度资源的权限.要充分利用系统资源,最好的形式是多线程多进程模式. 我们最好将一个整体功能,分散到多 ...

  3. 基于beego的高并发开源论坛框架Casnode

    Casnode是什么? Casnode是一款开源轻论坛程序.前端采用 javascript 和 React,后端主要为 beego 和 xorm.所以 xorm 支持的数据库,我们都支持哦.Casno ...

  4. 基于SpringBoot的高并发秒杀(限时秒杀)

    序 最近出于公司业务需要,做了拼团抢购,秒杀的业务. 秒杀系统场景特点 秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增. 秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成 ...

  5. java 下单 锁_JAVA 高并发下单解决方案-分布式锁

    背景:高并发情况下,商品出现超卖的情况. 最终目标:保证数据的最终一致性. Contrrler 层框架 : Spring MVC 第一次尝试:最初的时候,发现Spring MVC是一个单例多线程的Co ...

  6. 高级架构师,精通JAVA/高并发/微服务/分布式/中间件

    JAVA高级架构师专栏 大纲介绍 Java基础复习 单点系统 Springboot框架应用 页面开发模版引擎 Java核心基础 JVM调优 高并发优化 Spring.Mybatis.Springboo ...

  7. 高并发的大数据量查询导致系统频繁死机

    我们的大数据量查询是数据库分页的, 但是导出和打印功能是基于全部数据的. 系统投入使用后,对于导出和打印功能的使用远远要高于我们的预期. 而我们的系统的硬件设备是有限的 不能再升级了. 抓取内存大对象 ...

  8. 高并发Web服务的演变:节约系统内存和CPU

    一.越来越多的并发连接数 现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战.以最简单粗暴的方式解决,就是增加Web系统的机器和升级硬件配置.虽然现 ...

  9. 史上最强大型分布式架构详解:高并发+数据库+缓存+分布式+微服务+秒杀

    分布式架构设计是成长为架构师的必备技能,涵盖的内容很广,今天一次打包分享,文末有:最全分布式架构设计资料获取方式~ 负载均衡 负载均衡的原理和分类 负载均衡架构和应用场景 分布式缓存 常见分布式缓存比 ...

最新文章

  1. RS-232 Transmitter
  2. 电子商务系统的设计与实现(九):后端管理系统功能细化
  3. [20140928]创建连接到MySQL的连接服务器
  4. 基于C#的计时管理器
  5. Project Student:维护Webapp(可编辑)
  6. 第四次作业 孙保平034 李路平029
  7. linux无法下载ftp,linux 不能下载怎么办
  8. 在ubuntu里烧win10安装盘
  9. c++ 指针_C/C++学习笔记——C提高:指针强化
  10. mysql5.7.6允许远程_mysql5.7 设置远程访问
  11. window7安装sqlserver2000企业版
  12. 移动端滚动穿透的6种解决方案
  13. ubuntu 挂载优盘
  14. CAD切换工作窗口快捷键
  15. @ab测试工具使用详解
  16. 数字隔离器件在功率计量芯片中的应用
  17. 【C#】动态数字时钟和日历
  18. 鲁宾逊《非标准分析》中译版正式上线
  19. 基于Matlab的数字水印设计——基于空域的水印处理系统
  20. java node对比_服务端I/O性能:Node、PHP、Java、Go的对比

热门文章

  1. Jmeter和LoadRunner的区别
  2. 【POJ 3273】 Monthly Expense (二分)
  3. 用Anko和Kotlin实现Android上的对话框和警告提示(KAD 24)
  4. C#编程利器之五:集合对象(Collections)
  5. 百度输入法发布AI版本10.0,重磅推出“AI助聊”功能
  6. 给嵌入式工程师的一封信
  7. 填空题C语言,c语言填空题试卷.doc
  8. 单片机利用蜂鸣器如何输出音乐
  9. 架构 php_十年PHP架构师的成长之路,程序员必备
  10. toad连接oracle12c,[20181107]低版本toad连接18c数据库问题.txt