目录

  • 论文背景
    • SPADE是什么
      • 案例研究
    • 比特币
  • 挑战
    • 收集/查询
    • 集成
    • 存储
  • 扩展
    • 基于内容的集成
    • 仓储筛选
  • 结论

论文背景

起源中间件(如SPADE)允许个人和应用程序使用一个公共框架来报告、存储和查询记录,这些记录描述了计算过程和结果数据工件的历史。以前的努力已经解决了一系列问题,从仪器技术到科学再现性和数据安全性领域的应用。在这里,我们报告了我们使用SPADE处理大型起源数据集的经验。特别是,我们描述了两个激励性的案例研究,大规模管理起源带来的几个挑战,以及我们解决每个问题的方法。

SPADE是什么

SPADE [26]是SRI的开源数据起源中间件第一代的设计在几个方面阻碍了可扩展性出处记录的收集和存储紧密耦合,以确保元数据始终与其描述的数据同步。特别是,它使用文件系统调用插入来跟踪持久数据的变化,并将结果记录在关系数据库中。文件系统活动突发的工作负载吞吐量受到后备存储支持的事务速率的限制。同样,查询性能受到所用数据库类型的限制。此外,组件是静态耦合的。这减缓了系统在新域中的使用,因为所有组件都必须修改以适应隐式模式的变化。每个出处记录都经过数字签名,所有查询响应都经过加密验证。这增加了计算带来的运行时开销。起源记录随着分布式环境中的数据流一起传播,引入了延迟和存储开销。
第二代的架构经过了重大修改,以解决上述问题(以及其他[10])。引入了一个起源内核来提供一个系统服务,该服务协调起源记录的收集、存储和查询。内核中的内部缓冲允许源报告程序以比配置的源存储所能支持的更高的速率生成活动突发。根据预期的工作负载和查询特征,分离存储允许使用图形、关系或其他数据库类型。内核公开了用于报告和查询出处的统一的、可扩展的接口。这使得记者的新领域得以迅速发展。加密签名和验证被排除在外,需要时可以添加回来。出处收集是分散的,减少了复制带来的存储开销。草图的使用加速了分布式查询性能[8]。
起源内核对于报告活动的领域是不可知的。它公开了一个允许报告起源元素的接口,最初使用开放起源模型(OPM) [20],最近使用W3C PROV [23]数据模型。除此之外,对被摄取元素的语义没有任何限制。每个报告者都可以自由地定义关于其收集的出处的独立属性集。这使得开发利用不同仪器技术来提供不同特性的多个报告程序成为可能。一旦起源元素到达内核,它们就被转换成类属图的顶点或边,并被当作类属图的顶点或边来处理。虽然这为存储子系统提供了管理起源记录的极大灵活性,但它也为管理“大起源”带来了挑战,正如我们在第3节中进一步描述的那样。
在多路复用来自多个报告器的起源流的过程中,SPADE内核可以在将流多路分解到每个配置的存储之前应用一组起源过滤器。每个过滤器可以对传入的出处顶点和边进行任意更改。例如,OPM元素可以转换成一个预嵌入。过滤器可以任意组合。这个属性使得它们对于集成出处很有用[9]。特别地,过滤器已经被用于时间相关事件的聚集、具有部分重叠元素的流的融合以及来自不同抽象层的出处的组合。然而,过滤器是为流处理而设计的,需要使用有限的窗口整合候选人必须到达。对于我们在第2节中描述的案例研究,这被证明是实践中的一个重大限制。
第3节描述了我们在使用大型起源数据集时面临的三个挑战。首先,关于如何使用信息的不完全知识和收集的高成本要求必须保留所有细节。第二,用于数据集成的流处理方法固有地用失去集成机会(当在时间窗口内没有观察到相关事件时)来交换内存使用(用于跟踪更长的历史)。第三,为了确保图形的持久表示保持连接,必须协调关于相同顶点的独立报告。如果考虑持久性存储,这可以显著降低来源的摄入率。我们解决上述问题的方法在第4节进行了描述,并在附录A中进行了评估。我们在第5节得出结论。附录B中概述了相关工作

案例研究

SPADE已被用于各种环境。在其最早的应用之一中,出处记录被用来识别软件发布时需要的文件。其使用的其他例子包括最小化工作流的重新执行[19],执行故障诊断[15],以及识别隐私敏感的数据流[29]。在每种情况下,SPADE都被部署为数据显微镜,也就是说,它被配置为具有窄焦距。特别是,仪器将收集回答一组特定问题所需的起源信息的预定义子集。此外,出处元数据仅在每次单一分析或实验期间记录。相比之下,我们下面描述的两个案例研究需要长时间收集大量的来源元数据,以促进感兴趣的分析范围。如我们在第3节中概述的,扩展的体积和时间尺度突出了导致设计变化和新功能的架构限制,如第4节所述。值得注意的是,尽管SPADE是为分布式设置设计的,但在以下两种设置中,它都被用作单个主机上的集中式服务。

比特币

比特币在2008年被提出[21]
作为第一种**完全分散的加密货币。**它支持匿名用户,没有中央铸币厂,并分配所需的验证工作,以确保参与者不会两次花费他们的现金。比特币的市场规模在2013年超过了10亿美元。到2014年,从戴尔到Expedia,75,000家主流公司接受了比特币支付[18]。
然而,它也被大量用于黑市,这可以从抓取“黑暗网络”[5]
(通常只能通过Tor隐藏服务访问)。
比特币可以被视为一种交易历史,它的公共账本(被称为区块链)报告了生态系统中所有支付的来源。将这些记录吸收到SPADE中可以实现广泛的基于出处的查询。特别是,这允许发现比特币付款人和收款人之间的所有路径(甚至通过多个中间交易);祖先血统查询返回比特币找到特定交易或收款人的所有付款人;对后代的查询确定了收到全部或部分付款的所有受款人;并且,对代理顶点的检查允许直接识别他们所有的收入和支出。如果不将比特币引入出处框架,这种查询将需要遍历整个区块链。虽然起源框架的使用为此类查询提供了优化的支持,但它必须解决管理大型起源图的挑战。即使是比特币区块链的前20万个块,在活动相对较少的时候,也会产生3100万个顶点和5500万条边。在398,000个块(占当前区块链的99%)被摄取到SPADE之后,图形数据库包含5.22亿个顶点和10.42亿条边。对于索引,它需要468 GB的磁盘空间

挑战

收集/查询

收集关于系统中的代理、活动和工件(以及它们所经历的转换)的信息依赖于部署工具或者从现存的数据中得出推论。当最终目标被定义时,有可能关注覆盖范围、抽象级别和时间粒度的选择。例如,如果出处将用于诊断科学工作负载的输入/输出热点位于何处[11],则可以排除系统中不相关活动的覆盖范围;如果目标是识别移动应用程序中隐私敏感的信息流[29],那么函数调用抽象层的出处就足够了;如果信息将指导软件发布的阶段[10],则需要简单的依赖性分析,而不需要细粒度的时间访问记录。
收集大型数据集需要大量的投资,避免每次需要不同的属性时重复操作。这是由几个因素驱动的,包括收集信息所需的时间长度、处理记录所需的计算资源以及所需的投资。因此,有必要利用工具来提供最大的覆盖率、精确的抽象和高度的时间保真度。然而,这在查询出处时带来了挑战,因为响应将包括无关紧要的细节。

集成

计算的历史被建模为一个类型化的、带注释的起源节点和关系图SPADE支持使用对结果图形元素流进行操作的过滤器序列。这允许诸如时间相关记录的聚合以及描述相同基础现象的不同方面的流的融合之类的操作。
集成以前是通过将多个传入的起源元素组合成更少的传出元素来实现的[9]。为了做到这一点,每个过滤器缓存流中较早到达的元素,直到较晚的元素到达。然而,这种设计隐含地假设了作为集成候选的起源元素之间至少松散的时间同步。当在有限的时间窗内进行实验分析时,这个假设总是成立的。然而,当**在长时间跨度内收集起源时,**高速缓存的无限制增长带来了挑战(由于内存压力对系统性能的不利影响)。

存储

SPADE利用了流处理范例。出处顶点和边从报告器移动到内核,缓冲区,对其应用过滤器,并尽快提交到永久存储。这种方法的优点是,它最大限度地减少了系统中各点中间状态的积累。这有助于利用大型出处数据集进行扩展。同一起源元素可能需要定义多次。例如,代表操作系统进程的顶点就是这种情况。每当进程读取一个文件并构造一个新的边来报告该事件时,一个端点将由同一个顶点组成。如果来源存储包含唯一的标识符,它可以协调同一来源元素的多个报告。在存储新的起源元素之前,存储可以检查它是否已经被存储。然而,这给扩展带来了挑战,因为这样的查询是昂贵的,并且限制了可以存储新出处的速率。

扩展

为了解决第3节中概述的挑战,我们扩展了SPADE的体系结构,改变了组件的设计,并以几种方式优化了实现。

被报告的来源流被收集在持久存储池中。分析种源图结果林最直接的方法是利用后台数据库的索引和查询语言。但是,这样的系统不直接支持特定于产地的操作。因此,SPADE内核公开了一个查询接口,客户端可以向该接口发送此类请求。每个出处查询被翻译成底层存储语言的查询序列。在过程结束时(可能是迭代的或递归的),产生的起源图被返回给客户端。
3.1节描述了在较粗的抽象级别收集最详细的可用信息与特定于应用程序的起源利用率之间的紧张关系。这促使了转换器的引入,这是Spade架构中的第五个可扩展性点(在现有的报告程序、过滤器、存储和草图接口之后)。转换器对起源查询产生的图形进行操作(如图1所示)。可以配置多个变压器,这样就可以组合它们的操作。每个转换器都可以对其接收的图形进行任意更改,然后将修改后的图形发送到下一个转换器。在最后一个进行了更改之后,结果将返回给查询客户端。可以作为镜头,专注于特定层次的细节,同时排除或抽象其他信息。具体地说,如果出处数据集用于特定应用,则安装适当的转换器允许在相应的数据模型中构建查询的框架。我们在A.1节中提供了示例。

基于内容的集成

大多数存储系统将用于引用内容片段的标识符的名称空间解耦。例如,存储在文件中的内容与其在典型文件系统中的名称和位置无关。同样,关系数据库中单元格的内容独立于它所在的列和行。此方法的优点在于,当内容更改时,不需要更新对数据容器的引用。在另一种方法中,用于引用一条数据的标识符直接从它导出。在典型的基于内容的存储中,标识符是存储在文件中的数据的加密散列。我们调整了Spade的图形数据库存储以利用此范例(使用SHA-256作为散列)。当起源顶点到达存储时,将检查是否存在具有相同注释集的实例。只有在未找到匹配项的情况下才会存储顶点。当边到达时,如果端点顶点与存储中的现有实例匹配,则边的端点将更改为持久存储中已有的版本。这种设计的一个缺点是,包含具有相同注释的顶点的独立起源图将通过合并的顶点连接起来。但是,通过添加额外的注释来指示每个顶点属于哪个图,就可以很容易地解决这一问题。这一步确保了种源森林不会合并成单一的连通图。这种基于内容的存储为执行来源整合提供了强大的原语。每个被监视的现象都会产生一组特定于领域的注释。它们装饰种源图的顶点和边。如果一个起源元素的所有注释在每次需要合并两个实例时都匹配,我们将其称为基于内容的可集成元素。(例如,一个座席可以控制多个进程。这可能会导致在报告每个进程时附带单独的代理说明。如果多个代理顶点的内容匹配,则可以将这些顶点集成到单个顶点中。)。类似地,如果一个应用域可以映射到一个模式,其中所有需要合并的去同步起源元素都是基于内容的可集成的,那么我们将其称为适合于基于内容的集成的应用程序域。此策略不支持所有可能的数据集成功能。然而,对于一些大型的应用程序来说,允许集成就足够了。

仓储筛选

提供具有唯一标识符的出处元素允许在存储子系统中协调同一元素的多个报告。正如第3.3节所述,这会带来性能开销。在基线设计中,速度减慢源于这样一个事实:每次元素到达时都会对底层存储进行查询。在经过优化的设计时,会维护一个缓存,以筛选同一种源元素的重复使用。高速缓存大小动态增长,以利用所有可用内存。但是,增加的内存压力会产生另一个开销来源。最终的设计采用混合方法,以Bloom Filter为主屏幕,以高速缓存为副屏幕。缓存大小固定,采用先进先出(FIFO)逐出策略。当起源顶点到达存储接口时,执行检查以查看其标识符是否存在于布隆过滤器中。如果答案是否定的,则可以将顶点提交到存储中,而无需检查它之前是否已插入(因为Bloom过滤器没有假阴性)。这消除了一个重要的开销来源。如果检查结果为是,则检查高速缓存。如果找到顶点的标识符,则不需要进一步操作。这消除了开销的第二个来源。如果在缓存中未找到该标识符,则将查询数据库以检查该标识符是否存在。只有在找不到标识符的情况下,才会将顶点添加到数据库中。请注意,如果存在高度的时间局部性,则大多数布隆过滤器误报在高速缓存检查期间被纠正。顶点可能会被错误地报告为在布隆过滤器中存在,但在缓存中不存在。在这种情况下,数据库检查会检测到这一点,并将顶点添加到持久存储中。因此,存储筛选在不丢失任何来源记录的情况下提高了性能。

结论

Spade是用于收集、过滤、存储和查询出处的中间件。在使用比特币交易和操作系统活动的大型数据集时,我们遇到了几个挑战。第一个问题涉及收集更多细节和为具体应用提取出处之间的紧张关系。这是通过转换器解决的,这是一种新的可扩展性。在这两个案例研究中,他们允许收集详细的来源,同时自动修剪查询响应。第二个挑战来自于使用过滤器执行来源集成,过滤器假定流之间存在松散的时间同步。基于内容的存储和仔细的数据建模相结合,无需任何流同步假设即可实现集成。第三个挑战来自存储子系统内存驻留数据结构的大小增长。使用Bloom过滤器和高速缓存可以显著减少所需的内存,从而改善了这一点。

Scaling SPADE to “Big Provenance”(论文阅读)相关推荐

  1. 【论文阅读】Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs

    [论文阅读]Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs 1.摘要 2.通过ViTs审视CNN 3. ...

  2. [论文阅读] (18)英文论文Model Design和Overview如何撰写及精句摘抄——以系统AI安全顶会为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  3. [论文阅读] (13)英文论文模型设计(Model Design)如何撰写及精句摘抄——以入侵检测系统(IDS)为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  4. [论文阅读] (12)英文论文引言introduction如何撰写及精句摘抄——以入侵检测系统(IDS)为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  5. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](7)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](7) Into the Weeds Other types of grap ...

  6. YOLOv4论文阅读(附原文翻译)

    YOLOv4论文阅读(附原文翻译) 论文阅读 论文翻译 Abstract摘要 1.Introduction 引言 2.Related work相关工作 2.1.Object detection mod ...

  7. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...

  8. 【论文阅读】7-Discovering Structural Regularity in 3D Geometry

    [论文阅读]7-Discovering Structural Regularity in 3D Geometry 1.Input: 2.Processing pipeline 2.1.Transfor ...

  9. 论文阅读—图像分割方法综述(三)(arXiv:[cs:cv]20200410)

    前面介绍了分割领域常用网络架构及其相应的分割模型,本节主要介绍一些最受欢迎的图像分割数据集及其特征.此外还有评估基于深度学习的分割模型的常用指标.并报告了这些模型的定量结果和实验性能. 系列回顾 论文 ...

  10. [论文阅读] (08) NDSS2020 UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

最新文章

  1. 独立服务器和虚拟服务器的区别,BlueHost虚拟主机与独立服务器的主要区别
  2. Kali渗透测试——快速查找Metasploit的模块
  3. React脚手架搭建及目录结构介绍
  4. 零基础学python爬虫-零基础学习python_爬虫(53课)
  5. 编程语言可分为三大类
  6. java core日志在哪里_java-如何在未启用日志记录功能的情况下在...
  7. scip 练习2.18
  8. 从设计者的角度解读ThreadLocal
  9. Centos6.8下SVN安装
  10. Latex tabular 表格
  11. SSM框架整合+案例
  12. 理解分布函数(概率论)
  13. 输入输出练习 python
  14. 婴幼儿体重在线计算机,【婴儿体重计算器标准_婴儿体重计算器标准专题】- 天鹅到家...
  15. cs1.6服务器修改弹道,CS1.6 比赛弹道能不能改?
  16. gtx1060+linux+双显卡,Manjaro Linux 安装1060显卡驱动
  17. 这份职业我有多少期许
  18. .xyz文件的定义及读取
  19. 我的青春我做主——80后提前的中年危机 / 陆琪
  20. apache php 内存,不再为Apache进程淤积、耗尽内存而困扰

热门文章

  1. python伪装ip_Python爬虫:使用IP代理池伪装你的IP地址继续爬
  2. matlab编写多目标测试函数SCH, ZDT, MOP, DTLZ
  3. SSLStrip 的未来 —— HTTPS 前端劫持
  4. readlink /var/lib/docker/overlay2: invalid argument的解决方案
  5. 理解 Joomla 的几个概念 - 读《Aprees.Begging.Joomla.From.Novice.to.Professional》
  6. python for ArcGIS 绘制上海市环线地图
  7. Word 宏命令大全
  8. 蓝牙LMP剖析(一)
  9. 小码哥C++_面向对象
  10. matlab 实现disparity,Matlab里的disparity map 计算