DEX: Scalable Range Indexing on Disaggregated Memory——论文泛读

arXiv Paper 论文阅读笔记整理

问题

内存优化索引[2,3,18,27,42]对于加速OLTP至关重要,但随着数据大小(以及索引大小)的增长,对内存容量的需求可能会超过单个服务器所能提供的容量。内存分解允许内存优化范围索引(如B+树)扩展到一台机器之外,同时实现高硬件利用率和低成本。然而,由于基本的缓存、无原则的卸载和服务器之间的过度不一致,在分解内存上设计可扩展索引是一项挑战。

挑战

基本的缓存:现有方法大多针对传统的单片DBMS,分解内存使传统缓存机制的某些假设失效。本地和远程存储器之间的速度差距(通过RDMA为~10倍)比存储器和存储器之间的差距(例如,使用SSD为~1000倍)小得多。因此,与缓存维护和同步相关的软件开销变得更加突出。计算服务器不应假设有一定数量的本地内存,如果本地内存受到严重约束,那么不利用树索引属性的通用缓存机制可能无法正常运行。

无原则卸载:卸载利用了内存服务器上有限的计算,减少了RDMA通信。使计算线程只需向内存服务器发送一个索引操作,而不是产生多次往返的单个RDMA操作。但分解内存需要避免在内存服务器上占用有限的计算,明智的决策(即卸载什么、何时卸载以及卸载多少)对于避免过载和保证可扩展性能至关重要。

过度不一致:内存分解带来了处理不同来源的数据不一致的挑战,但现有的基于RDMA的分布式同步锁定成本高昂[49]。如果在计算服务器上实现缓存,就需要确保所有计算端缓存之间的一致性,这种复杂性随着计算服务器的数量而增长。如果同时考虑计算端缓存和内存端卸载,内存服务器会成为数据更改的另一个潜在来源,内存服务器需要确保其树索引视图与所有计算端缓存一致。这种全局一致性需要通过使用锁或一致性消息在整个卸载过程中得到保证。最后,所有包含过时页面的计算端缓存都应该与内存服务器同步。

本文方法

本文提出了一种用于内存分解的可扩展B+树DEX,包括3个技术。

  • 计算端逻辑分区:使用逻辑分区减轻交叉计算一致性开销,每个计算服务器在逻辑上拥有一组密钥范围,而内存服务器仍然存在全局可寻址的共享空间。通过这种方式,不同的计算服务器主要在索引的不相交部分上操作,从而降低了计算服务器之间的缓存一致性和远程内存访问的同步成本。负载平衡和添加/删除计算服务器既简单又轻便,因为逻辑分区只需要调整路由,而无需对数据进行物理重新分区。

  • 轻量级缓存:提出基于随机采样的轻量级缓存替换策略,减少了争用并实现了高可扩展性。为了减少缓存未命中,利用应用程序级别的信息进行路径感知缓存,会在缓存中保留从根节点到较低级别节点的频繁访问的索引路径。除非父节点已被缓存,否则子B+树节点不能被允许进入计算端缓存。类似地,父B+树节点在其所有子节点被逐出之前不会被逐出。这不仅提高了缓存效率(因为离根更近的节点更热),而且能够在计算服务器和内存服务器之间以较低的一致性开销实现更有效的卸载。

  • 机会主义卸载:在运行时跟踪内存服务器上的资源可用性,只有当完成时间可以最小化时,才会卸载索引操作。利用了路径感知缓存的特性,即缓存从根到较低级别节点的连续路径。这有效地防止了树遍历与缓存和卸载交织,从而消除了潜在不一致的来源。

在四服务器RDMA集群上的评估表明,在各种工作负载下,DEX的性能优于最先进的,吞吐量高出1.7–56.3倍。

总结

针对分离式内存环境下的可扩展索引,面临基本的缓存、无原则的卸载和过度不一致的问题。本文提出用于内存分解的可扩展B+树DEX,包括3个技术:(1)计算端逻辑分区:每个计算服务器在逻辑上复制一部分密钥,内存服务器仍然存储全局可寻址的共享空间。(2)轻量级缓存:利用应用程序级别的信息进行路径感知缓存,在缓存中保留从根节点到较低级别节点的频繁访问路径。父节点缓存后允许子节点缓存,父节点在其所有子节点被逐出后再逐出。(3)机会主义卸载:运行时跟踪内存服务器上的资源可用性,当完成时间可以最小化时,才会卸载索引操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/769012.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于ADRC自抗扰算法的UAV飞行姿态控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 控制系统概述 4.2 ADRC基本框架 4.3 控制律设计 5.完整工程文件 1.课题概述 基于ADRC自抗扰算法的UAV飞行姿态控制系统simulink建模与仿真,分别对YAW,PITCH,ROL…

golang写的自动更新器

文件自动更新器,这个很多端游和软件都有用到的。 golang的rpc通信,是非常好用的一个东西,可以跟调用本地函数一样,调用远程服务端的函数,直接从远程服务端上拉取数据下来,简单便捷。 唯一的遗憾就是&#x…

互联网盲盒小程序的市场发展前景如何?

近几年来,盲盒成为了大众热衷的消费市场。盲盒是一个具有随机性和惊喜感,它能够激发消费者的好奇心,在拆盲盒的过程中给消费者带来巨大的愉悦感,在各种的吸引力下,消费者也愿意为各类盲盒买单。如今,随着盲…

暑假提升(2)[平衡二叉树之一--AVL树]

我不去想未来是平坦还是泥泞,只要热爱生命一切,都在意料之中。——汪国真 AVLTree 1、诞生原因2、什么是AVL树3、如何设计AVL树3、1、AVL树节点的定义3、2、AVL树的插入3、3、平衡因子那些事3、3、1、平衡因子-2/2下的简单情况3、3、2、平衡因子-2/2下的…

tkinter拖入txt文本并显示

tkinter拖入txt文本并显示 效果代码 效果 代码 import tkinter as tk from tkinter import scrolledtext from tkinterdnd2 import DND_FILES, TkinterDnDdef drop(event):file_path event.data.strip({})if file_path.endswith(.txt):with open(file_path, r, encodingutf-8…

K8s 的最后一片拼图:dbPaaS

K8s 的发展使得私有云跟公共云之间的技术差不断的缩小,不管是在私有云还是公共云,大家今天都在基于 K8s 去开发 PaaS 系统。而 K8s 作为构建 PaaS 的基础,其全景图里还缺最后一块“拼图”——dbPaaS。作为一个云数据库行业干了十几年的资深从…

urfread刷算法|构建一棵树

大意 示例标签串: 处理结果: 题目1 根据标签串创建树 需求 需求:给出一个字符串,将这个字符串转换为一棵树。 字符串可以在代码里见到,是以#开头,按照\分割的字符串。 你需要将这个字符串&#xff0…

【鸿蒙学习笔记】@Prop装饰器:父子单向同步

官方文档:Prop装饰器:父子单向同步 [Q&A] Prop装饰器作用 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的,但是变化不会同步回其父组件。 [Q&A] Prop装饰器特点 1・Prop装饰器不能在Entry装饰的…

Android Studio上传新项目到Gitee

一、在Gitee上创建仓库 首先需要再Gitee上创建仓库 1、在Gitee中新建仓库 2、输入仓库信息 3、生成仓库地址 创建成功会生成一个仓库地址,格式如下: https://gitee.com/test/compose_mvi_demo.git二、Android Studio 上传项目到Gitee 1、在Android …

CXL-GPU: 全球首款实现百ns以内的低延迟CXL解决方案

数据中心在追求更高性能和更低总拥有成本(TCO)的过程中面临三大主要内存挑战。首先,当前服务器内存层次结构存在局限性。直接连接的DRAM与固态硬盘(SSD)存储之间存在三个数量级的延迟差异。当处理器直接连接的内存容量…

Hive测试

1、数据仓库的体系结构包含四个层次,分别是: 数据源 数据存储和管理 数据服务 数据应用 2、Hive提供了类似关系数据库SQL的查询语言: HiveQL 3、Hive某种程度上可以看作 用户编程接口,本身不存储和处理数据,存储数据依…

CesiumJS【Basic】- #057 绘制纹理填充多边形(Primitive方式)

文章目录 绘制纹理填充多边形(Primitive方式)1 目标2 代码2.1 main.ts绘制纹理填充多边形(Primitive方式) 1 目标 使用Primitive方式绘制绘制纹理填充多边形 2 代码 2.1 main.ts import * as Cesium from &

CDC模型

引言 聚类是一种强大的机器学习方法,用于根据特征空间中元素的接近程度发现相似的模式。它广泛用于计算机科学、生物科学、地球科学和经济学。尽管已经开发了最先进的基于分区和基于连接的聚类方法,但数据中的弱连接性和异构密度阻碍了其有效性。在这项…

职业性格测试,企业HR招聘测评最常用人才测评

关于求职测评,招聘中用到的人才测评,你们对这个话题又知道多少呢?为什么我会以90后为分界线,首先90后正是接触计算机最早的一代,因为小编是90后,更了解这个年龄段都在做什么,可以说90后见证了互…

【echarts】拖拽滑块dataZoom-slider自定义样式,简单适配移动端

电脑端 移动端 代码片段 dataZoom: [{type: inside,start: 0,end: 100},{type: slider,backgroundColor: #F2F5F9,fillerColor: #BFCCE3,height: 13, // 设置slider的高度为15start: 0,end: 100,right: 60,left: 60,bottom: 15,handleIcon:path://M30.9,53.2C16.8,53.2,5.3,41.…

第一周题目总结

1.车尔尼有一个数组 nums ,它只包含 正 整数,所有正整数的数位长度都 相同 。 两个整数的 数位不同 指的是两个整数 相同 位置上不同数字的数目。 请车尔尼返回 nums 中 所有 整数对里,数位不同之和。 示例 1: 输入&#xff1a…

Android Studio环境搭建(4.03)和报错解决记录

1.本地SDK包导入 安装好IDE以及下好SDK包后,先不要管IDE的引导配置,直接新建一个新工程,进到开发界面。 SDK路径配置:File---->>Other Settings---->>Default Project Structure 拷贝你SDK解压的路径来这,…

自动化任务工具 -- zTasker v1.94 绿色版

软件简介 zTasker 是一款功能强大的自动化任务管理软件,以其简洁易用、一键式操作而著称。软件体积小巧,启动迅速,提供了超过100种任务类型和30多种定时/条件执行方法,能够满足用户在自动化方面的多样化需求。 zTasker 支持定时任…

数据结构 - C/C++ - 树

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 树的概念 结构特性 树的样式 树的存储 树的遍历 节点增删 二叉搜索树 平衡二叉树 树的概念 二叉树是树形结构,是一种非线性结构。 非线性结构:在二叉树中&#x…

分享一款可编辑本地电脑文件的在线编辑器

背景 之前见过在线版的VSCode,被惊讶到了。网页上竟然可以编辑电脑本地的文件,打破了网页无法编辑本地电脑文件的限制。一直好奇怎么做的。抽空研究了一下,然后发现其实也不难。 分析 先给大家介绍一下这款在线编辑器的效果。 左侧栏为文件…