首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

翻译:The Log-Structured Merge-Tree (LSM-Tree)

高性能事务系统应用程序通常在提供活动跟踪的历史记录表;同时,事务系统生成$日志记录,用于系统恢复。这两种生成的信息都可以受益于有效的索引。众所周知的设置中的一个例子是TPC-a基准应用程序,该应用程序经过修改以支持对特定账户的账户活动历史记录的有效查询。这需要在快速增长的历史记录表上按帐户id进行索引。不幸的是,基于磁盘的标准索引结构(如B树)将有效地使事务的输入/输出成本翻倍,以实时维护此类索引,从而使系统总成本增加50%。显然,需要一种以低成本维护实时索引的方法。日志结构合并树(LSM树)是一种基于磁盘的数据结构,旨在为长时间内经历高记录插入(和删除)率的文件提供低成本索引。LSM树使用一种延迟和批量索引更改的算法,以一种类似于合并排序的有效方式将基于内存的组件的更改级联到一个或多个磁盘组件。在此过程中,所有索引值都可以通过内存组件或其中一个磁盘组件连续进行检索(除了非常短的锁定期)。与传统访问方法(如B-树)相比,该算法大大减少了磁盘臂的移动,并将在使用传统访问方法进行插入的磁盘臂成本超过存储介质成本的领域提高成本性能。LSM树方法还推广到插入和删除以外的操作。然而,在某些情况下,需要立即响应的索引查找将失去输入/输出效率,因此LSM树在索引插入比检索条目的查找更常见的应用程序中最有用。例如,这似乎是历史表和日志文件的常见属性。第6节的结论将LSM树访问方法中内存和磁盘组件的混合使用与混合方法在内存中缓冲磁盘页面的常见优势进行了比较。

05
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    我们为什么需要MapReduce?

    我们为什么不能使用数据库来对大量磁盘上的大规模数据进行批量分析呢?我们为什么要使用MapReduce? 这些问题的答案来自磁盘的另一个发展趋势: 寻址时间的提高远远慢于传输速率的提高。寻址是将磁头移动到特定磁盘位置进行读写操作的过程。它是导致磁盘操作延迟的主要原因,因而传输速率取决于磁盘的带宽。   如果数据的访问模式中包含大量的磁盘寻址,那么读取大量数据集所化的时间势必会更长(相较于流式数据读取模式),流式读取主要取决于传输速率。另一方面,如果数据库系统只更新一小部分记录,那么传统的B树更有优势。但数据库系统更新大部分数据时,B树的效率比MapReduce低得多,因为需要使用“排序/合并”来重建数据库。   许多情况下,可以将MapReduce视为关系型数据库管理系统的补充。两个系统之间的差异如下表所示。MapReduce比较适合以批处理的方式处理需要分析整个数据集的问题,尤其是即席分析。RDBMS(关系型数据库管理系统)适用于“点查询”和更新,数据集被索引后,数据库系统能够提供低延迟的数据检索和快速的少量数据更新。MapReduce适合一次写入,多次读取数据的应用,而 关系型数据库更适合持续更新的数据集。 关系型数据库和MapReduce的比较

    02

    RabbitMQ基础介绍与在java中使用-入门「建议收藏」

    前言:MQ做应用解耦,流量削峰 这些是常识,RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库 常用的主流的MQ有四个 ActiveMQ: Apache下的一个子项目。使用Java完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,少量代码就可以高效地实现高级应用场景。可插拔的传输协议支持,比如:in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports。ActiveMQ支持常用的多种语言客户端 C++、Java、.Net,、Python、 Php、 Ruby等。 Kafka: Apache下的一个子项目,使用scala实现的一个高性能分布式Publish/Subscribe消息队列系统,具有以下特性:

    01
    领券