2KB项目,专业的源码交易网站 帮助 收藏 每日签到

LinkBench —— 社交图谱的数据库功能测试Tools

  • 时间:2019-04-15 05:15 编辑:2KB 来源:2KB.COM 阅读:495
  • 扫一扫,手机访问
  • 分享
摘要:
LinkBench 英文原文:LinkBench: A database benchmark for the social graph 在数据库工程团队练习时期,我破费了上个寒假的工夫剖析了Facebook的数据库任务负载(workload)并协助开发了一款称为LinkBench的数据库功能测试Tools。这个周我们很幸运的将LinkBench宣布到了 GitHub上,并盼望它可以成为每一个需求实行功能测试和数据库调优任务的开发者手中的利器。

Facebook社交图谱(social graph)和MySQL

MySQL作为公司根底架构的主要组件,早期就被Facebook用于存储像文章,评论,赞(likes)和页面之类的数据。

我们展示数据的一种方法就是社交图谱(social graph),此中的工具如人(people),文章(posts),评论(comments)和页面(pages)是经过节点间分歧的关系类型(模子)互相联系关系(图中的有向边-directed edges)的。分歧的联系关系关系类型可以表现老友关系(friendship between two users),用户爱好某个工具的关系(user like another object),还可以表现文章属主(ownership of post)关系等等。

为何需求一款新的数据库功能测试Tools?

过来的5到10年里,数据库范畴又迎来了一次立异的低潮,像NoSQL和NewSQL曾经成了关系数据库(relational databases)的强力竞争者。与此同时硬件范畴也在敏捷地开展,固态存储装备和多核CPU曾经成为业界的主流,可以为数据库供给宏大的功能晋升。固然我们曾经可以经过让MySQL运用FlashCache来发扬出固态存储装备的优势,可是对基于固态存储的数据库优化另有非常多任务要做,只要如许才干最大限制的开掘出硬件的功能。

这些改动对Facebook来讲意味着甚么?起首,它意味着在进步呼应速度的同时我们有更多的时机来进步数据库根底设备(infrastructure)的效力,如下降动力的运用和硬件的开支。其次,它意味着我们需求对那些为处理Facebook负载而行将上线的数据库系统在适应性(suitability)和功能方面做一次系统的评价。

MySQL很好地统筹了灵敏性、功能和易于治理的特征,可是我们的数据库项目团队仍不时地探究在MySQL中存储社交图谱数据的其他办法。后来我们运用一些开源的功能测试Tools来评测数据库系统。但是,数据库功能测试的黄金规律是要在真实的产品负载状况下去测试系统的功能,可是普通的Tools都达不到如许的请求。当需求对Facebook根底设备中的某个主要组件实行调剂时,我们需求了解在生产负载的状况下数据库系统是怎么运作的。

而且我们以为关于其他构建于数据库和社交使用之上的社区来讲它们也可以从基于数据存储、检索社交收集和其他具有图谱构造数据的功能评测中获益。关于那些敏捷开展、具有海量数据和丰厚的数据模子的使用来讲,它们对数据库系统的需求都是各不类似的,可是用于测试这些系统负载的功能测试Tools却没有几个。
LinkBench经过生成(replicate)混杂了数据模子,图谱构造和恳求等数据来填凑数据库的方法完成了对存储着社交图谱的MySQL实行负载测试的目的。LinkBench是一个用于生成图(graph-serving)的功能测试Tools,而不是处置图(graph-processing)的测试Tools--差别在于前者会模仿在一个交互式的社交使用中的那些具有事务性的举措(transactional workload),然后者只是模仿举措的流程(analytics workload)。这个测试Tools不是用于处理图的社区发明问题(find graph communities)或图的切分问题(graph partitioning),而是用来及时地查询并更新数据库中的图谱。例如,关于图的查询比拟常用的方式就是找到一切来自节点X而且是A类型的一切的边,而更新操作就是拔出、删除边或许更新图中的节点或边。举个更新操作的例子,如“从user4拔出一个老友关系的边到user63459821”。

了解Facebook社交图谱的任务负载

我练习的大部分工夫都用于剖析社交图谱的数据和数据库查询时的负载,因此我提取了很多LinkBench可以用来对负载实行建模的要害参数。

LinkBench运用的一个特殊主要的属性就是出度散布(out-degree distribution),它把持图中每一个节点的出度。出度在过来人们研讨过的很多收集中像人际关系网或网页间的链接都遵照着幂律散布(power-law distributions),这关于包括着各类节点类型的社交图谱也异样实用,以下图所示:

LinkBench也需求模仿在生产情况下对数据库的查询操作。Facebook网站和手机使用所运用的数据大部分来自于内存缓存,只要一切写操作和小部分读缓存缺失(cache-miss)状况下才会运用到MySQL。Facebook的任务负载首要是以大量的读操作为主的,因而即便在缓存射中率很高时,读操作缺失(read miss)也弘远于写操作的。


经过将数据库查询划分为针对关系(边)和工具(节点)的很多小的中心操作,我们就能够逐一地剖析在生产数据库情况下对社交图谱的每一个操作的功能了。下面的表列出了用于保管或查询图谱时所对应的查询或更新操作。

下面的图展现了在生产情况中的某个数据库实例上分歧的操作跟着工夫的推移而发生的负载变更。从图中可以看到关于边的操作和读操作,特殊是鸿沟扫描(edge range scan)会给系统带来极大的担负。举个鸿沟扫描的例子,如“按最早到比来的工夫次序找出某个文章的一切评论”或“找出某个用户的一切老友”。


在真实情况中的MySQL实例上,对社交图谱的各类操作跟着工夫的变更图。百分比是按相对以后实例上每秒均匀操作数盘算得来的。

经过对负载跟踪(workload trace),并进一步剖析了分歧操作的拜访形式(access pattern)后,我发明了一些更风趣的工具:
  • 经过对数据库中一些运用频仍(hot)、次频仍(warm)和大量不频仍(cold)的行(rows)实行试验,发明对节点(nodes)和边(edges)的读、写拜访形式也都遵照着幂律散布(power-law distribution)。这对普通的数据库来讲是正常的,可是因为Facebook运用了像memcached之类的内存缓存技术,我们不断定这能否对拜访形式发生了影响。
  • 图谱的构造对拜访形式也有主要的影响:与超出跨越度节点相衔接的边凡是比那些与低出度节点相衔接的边会有更频仍的读、写操作。
我可以从发生这些后果的负载跟踪中提取到相干参数,并可以在LinkBench中重现。

LinkBench的架构

LinkBench被设计为可定制和可扩大的。它答应我们经过生成社交图谱的子集来模仿负载,这一特征对评价数据库处置特定联系关系类型的功能来讲是相当主要的。例如,将以写为主(write-heavy)和读为主(read-heavy)的联系关系类型辨别存储到分歧的数据库后端是有需要的,因而我们可以针对每品种型做独自的功能测试。它也答应我们运用比拟轻易的办法来编写适配器从而支撑新的数据库系统,因而我们可以比拟出在类似的负载下它与MySQL的功能差别。

真实的功能测试任务是由LinkBench driver担任的,它是一个用于生成社交图谱和各类操作的Java顺序。测试任务分为两个阶段:载入阶段(load phase),会生成一个初始的图谱并载入(loaded in bulk)到数据库中;恳求阶段(request phase),很多恳求线程会用各类操作对数据库实行并发拜访。在恳求阶段,各类操作的延迟和吞吐量城市被统计并给出陈述。


Driver在两个阶段的详细行动是经过一个设置装备摆设文件实行把持的,经过这个设置装备摆设文件可以轻松地把持功能测试中的各个参数。

测试后果

我们对打了Facebook补钉(请看http://www.facebook.com/MySQLatFacebook)的MySQL 5.1.53实行功能测试。我们在数据库中生成了12亿个节点和49亿条边,用MySQL规范的未经紧缩的InnoDB表存储,占用了1.4TB硬盘空间。MySQLServer具有2个CPU,8+中心(8+ cores/socket),144G内存,和16kB读取延迟(read latency at 16kB)小于500μs的固态硬盘。

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部