CN111684437A - 按时间顺序排序的错位更新键-值存储系统 - Google Patents
按时间顺序排序的错位更新键-值存储系统 Download PDFInfo
- Publication number
- CN111684437A CN111684437A CN201980010935.9A CN201980010935A CN111684437A CN 111684437 A CN111684437 A CN 111684437A CN 201980010935 A CN201980010935 A CN 201980010935A CN 111684437 A CN111684437 A CN 111684437A
- Authority
- CN
- China
- Prior art keywords
- slot
- garbage collection
- victim
- operations
- collection transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000012545 processing Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 15
- 238000011084 recovery Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 5
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Abstract
一个实施例提供了一种方法,包括在存储器中存储键‑值储存区。执行错位操作,以在存在没有明确的二级索引的垃圾收集事务的情况下通过在存储层上对所述操作进行排序而维持所述操作的按时间顺序排序。
Description
技术领域
本发明总体涉及管理日志结构化的存储系统。特别地,本发明提供在垃圾收集期间管理故障。
背景技术
典型的日志结构化存储系统以时间顺序将记录数据存储在“日志”中。这些典型的系统允许基本的原语操作,例如插入、更新、删除、读取。数据的每次更新导致在“日志”的尾部插入一个新记录。每次删除导致在日志尾部插入一个墓碑对象。另外,后台垃圾收集过程压缩数据,回收不含有效数据的空间。
临时删除对象会导致空间碎片,因此导致较差的空间利用率。
因此,在本领域中需要解决上述问题。
发明内容
根据第一方面,本发明提供一种按时间顺序排序的错位更新的系统,该系统包括:存储键-值储存区和指令的存储器设备;以及处理器,其被配置为执行所述指令以:执行错位操作,所述错位操作被配置为在存在没有明确的二级索引的垃圾收集事务的情况下通过在存储层上对所述操作进行排序而维持所述操作的按时间顺序排序。
根据另一方面,本发明提供一种用于按时间顺序排序的错位更新的方法,该方法包括:在存储器中存储键-值储存区;以及执行错位操作,所述错位操作被配置为在存在没有明确的二级索引的垃圾收集事务的情况下通过在存储层上对所述操作进行排序而维持所述操作的按时间顺序排序。
从另一方面来看,本发明提供了一种用于按时间顺序排序的错位更新的计算机程序产品,该计算机程序产品包括计算机可读存储介质,其可由处理电路读取并且存储用于由处理电路执行以便执行用于执行本发明的步骤的方法的指令。
从另一方面来看,本发明提供了一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,包括用于当所述程序在计算机上运行时执行本发明的步骤的软件代码部分。
实施例涉及在键-值存储系统中按时间顺序排序的错位更新。一个实施例提供了一种方法,包括在存储器中存储键-值储存区。执行错位操作,以在存在没有明确的二级索引的垃圾收集事务的情况下通过在存储层上对所述操作进行排序而维持所述操作的按时间顺序排序。
参考以下说明、所附权利要求和附图,将理解本发明的这些和其它特征、方面和优点。
附图说明
现在将参考附图仅通过示例的方式描述本发明的实施例,在附图中:
图1示出了根据实施例的云计算环境;
图2示出了根据实施例的抽象模型层的集合;
图3是根据实施例的用于日志结构化存储系统中回顾性快照的网络体系结构;
图4示出了根据实施例的可以与图1的服务器和/或客户端相关联的代表性硬件环境;
图5示出根据实施例的用于按时间顺序排序的错位更新的示例性键-值存储系统;
图6示出了根据一个实施例的垃圾收集(GC)对象粒度的示例;
图7示出了根据一个实施例的时间顺序的GC中断的示例;
图8示出了根据一个实施例的按时间顺序的GC的示例;
图9A示出根据一个实施例的包括一个GC牺牲槽的槽的示例
图9B示出了根据一个实施例的包括一个GC目标槽的槽的示例;
图10A示出了根据实施例的在GC之前的目标槽和牺牲槽的示例初始状态;
图10B示出了根据实施例的在GC之后的目标槽的示例状态;以及
图11示出了根据一个实施例的用于键-值存储系统中按时间顺序排序的错位更新的过程的框图。
具体实施方式
出于说明的目的所呈现的对各种实施例的描述,不旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。本文所使用的术语的选择,是为了最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
预先理解,尽管本公开包括云计算的详细描述,但是本文中记载的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
一个或多个实施例涉及键-值存储系统中按时间顺序排序的错位更新(out-of-place updates)。一个实施例提供了一种方法,包括在存储器中存储一个键-值储存区(key-value store)。执行错位操作,以在存在没有明确的二级索引的垃圾收集事务的情况下通过在存储层上对所述操作进行排序而维持所述操作的按时间顺序排序。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机(VM)和服务)的共享池的方便的按需网络访问,这些可配置计算资源可以用最少的管理工作或与服务提供商的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助:云消费者可以单方面地按需自动地供应计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者的人类交互。
广域网接入:能力在网络上可用,并且通过促进由异构、薄或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
快速弹性:可以快速且弹性地提供能力,并且在一些情况下,自动地快速向外扩展以及快速释放以快速向内扩展。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动消费者账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。资源使用可以被监视、控制和报告,从而为所利用服务的提供者和消费者提供透明性。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力能够使用在云基础设施上运行的提供者的应用。应用程序可通过瘦客户机接口,诸如web浏览器(例如,基于web的电子邮件)从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至单独应用能力的底层云基础结构,可能的例外是有限的消费者专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础结构上的能力,所述消费者创建或获取的应用是使用由提供者支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消费者的能力能够提供处理、存储、网络和其它基本计算资源,其中消费者能够部署和运行任意软件,该软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使能数据和应用可移植性(例如,用于云之间的负载平衡的云突发传输)的标准化或私有技术绑定在一起。
云计算环境是面向集中于无状态、低耦合、模块性和语义互操作性的服务。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图1,示出了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,所述本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图2中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图2,示出了由云计算环境50(图1)提供的一组功能抽象层。应当预先理解,图2中所示的组件、层和功能旨在仅是说明性的,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户机75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪以及用于消耗这些资源的开帐单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行85提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及键-值存储系统中按时间顺序排序的错位更新处理96。如上所述,参考图2描述的所有前述示例仅是说明性的,并且本发明不限于这些示例。
应当理解,如本文所述的一个或多个实施例的所有功能通常可由处理系统300(图3)或自主云环境410(图4)执行,其可被有形地体现为硬件处理器并具有程序代码模块。然而,对于非实时处理的情况不必如此。相反,对于非实时处理,这里所叙述的功能可以由图2中所示的层60、70、80和90中的任何层来执行/实现和/或赋能。
重申,尽管本公开包括关于云计算的详细描述,但本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例可以用现在已知或以后开发的任何类型的集群计算环境来实现。图3示出了根据一个实施例的网络架构300。如图3所示,提供了多个远程网络302,包括第一远程网络304和第二远程网络306。网关301可耦合在远程网络302与邻近网络308之间。在本网络架构300的上下文中,网络304、306可以各自采用任何形式,包括但不限于LAN、诸如因特网的WAN、公共交换电话网络(PSTN)、内部电话网络等。
在使用中,网关301用作从远程网络302到邻近网络308的入口点。这样,网关301可以用作路由器和交换机,路由器能够引导到达网关301的给定数据分组,交换机为给定分组提供进出网关301的实际路径。进一步包括耦合到近端网络308的至少一个数据服务器314,其可经由网关301从远程网络302接入。应当注意,数据服务器314可以包括任何类型的计算设备/组件。多个用户设备316耦合到每个数据服务器314。这样的用户设备316可以包括台式计算机、膝上型计算机、手持式计算机、打印机和/或任何其他类型的包含逻辑的设备。应当注意,在一些实施例中,用户设备311也可以直接耦合到任何网络。
外围设备320或一系列外围设备320,例如传真机、打印机、扫描仪、硬盘驱动器、联网和/或本地存储单元或系统等,可以耦合到网络304、306、308中的一个或多个。应当注意,数据库和/或附加组件可以与耦合到网络304、306、308的任何类型的网络元件一起使用,或者集成到其中。在本说明书的上下文中,网络元件可以指网络的任何组件。
根据一些方法,本文描述的方法和系统可以利用和/或在虚拟系统和/或系统上实现,所述虚拟系统和/或系统仿真一个或多个其他系统,诸如仿真IBM z/OS环境的UNIX系统、虚拟地托管MICROSOFT WINDOWS环境的UNIX系统、仿真IBM z/OS环境的MICROSOFTWINDOWS系统等。在一些实施例中,可以通过使用VMWARE软件来实现这种虚拟化和/或仿真。
图4示出了根据一个实施例的与图3的用户设备416和/或服务器314相关联的代表性硬件系统400环境。在一个示例中,硬件配置包括具有诸如微处理器的中央处理单元410的工作站,以及经由系统总线412互连的多个其它单元。图4所示的工作站可以包括随机存取存储器(RAM)414、只读存储器(ROM)416、用于将诸如盘存储单元420的外围设备连接到总线412的I/O适配器418、用于将键盘424、鼠标426、扬声器428、麦克风432和/或诸如触摸屏、数字照相机(未示出)等的其它用户接口设备连接到总线412的用户接口适配器422、用于将工作站连接到通信网络435(例如,数据处理网络)的通信适配器434和用于将总线412连接到显示设备438的显示适配器436。
在一个示例中,工作站上可以驻留有操作系统,诸如MICROSOFT WINDOWS操作系统(OS)、MAC OS、OS等。在一个实施例中,系统400采用基于的文件系统。应当理解,除了所提及的那些之外,其他示例也可以在平台和操作系统上实现。这样的其它示例可包括使用XML、C和/或C++语言或其它编程语言以及面向对象的编程方法编写的操作系统。也可以使用已经变得越来越多地用于开发复杂应用的面向对象编程(OOP)。Microsoft和Windows是Microsoft(微软)公司在美国、其他国家或二者的商标。IBM和z/OS是国际商业机器公司在全世界的许多管辖区注册的商标。UNIX是开放团体(The OpenGroup)在美国和其它国家的注册商标。Java和所有基于Java的商标和标志是甲骨文(Oracle)公司和/或其分支机构的商标或注册商标。VMware是VMware公司或其子公司在美国和/或其它管辖区的注册商标或商标。
图5示出根据实施例的用于按照时间顺序排序的错位更新的示例键-值存储系统500。术语垃圾收集(GC)是指收回由日志中的过时的(staled)条目占用的“磁盘空间”。例如,当插入记录时,将条目添加到日志的末尾,当删除同一记录时,将墓碑添加到日志的末尾。墓碑是指由插入创建的磁盘上数据的原始位置。由原始插入的记录占用的磁盘空间可以被垃圾收集(假设系统不维护较旧版本)。过时的数据可能是已被删除或更新的记录的结果。因为不再需要在日志中维护较旧版本的数据,所以更新会导致数据过时。注意,在日志结构化储存区(log-structured store)中,每一个插入、更新或删除操作都会导致在日志的末尾插入一条记录。
对于用于小对象的日志结构化存储系统(例如日志结构化键-值储存区)来说,更新操作被作为新的写入(仅附加)来对待。应用编程接口(APIs)包括:PUT、GET和DELETE。PUTAPI将地址返回给调用者。DELETE API导致墓碑的插入。被删除的对象占用的空间被GC过程回收。对象大小很小(通常,数十个或数百个字节)。GC粒度大(以MB或GB计)。
在系统500中,对象标引服务(OIS)510执行PUT、GET和DELETE操作。在系统500中,对象标引服务(OIS)510执行PUT、GET和DELETE操作。在一个实施例中,PUT操作的格式是:PUT(key,value,<previous address>),其返回地址(address)。在一个实施例中,GET操作的格式是:GET(Address),其返回键-值(key-value)记录。在一个实施例中,DELETE操作的格式是:DELETE(address)。OIS 510的输出或返回值被输入到用于GC过程530的对象存储服务(OSS)520中。在一个实施例中,OIS 510和OSS520可以处于同一位置或者可以不处于同一位置。OIS 510和OSS 520即使处于同一位置,也可以是不同过程的一部分。在一个示例实施例中,将键公开给OSS 520。
在一个实施例中,GC过程530作为事务被执行。事务处理将信息处理分成单独的、不可分的称为事务的操作。每个事务必须作为一个完整单元成功或失败,并且永远不能仅仅部分完成。
图6示出了根据实施例的GC对象粒度的示例600。临时(Ad-hoc)删除会导致空间的碎片化和利用率低下。GC过程530(图5)粒度>>对象粒度。槽的GC过程530需要对活动对象进行重新定位。
回到图5,系统500以如下方式保持操作的时间顺序。在一个实施例中,按时间顺序排序使得能够按照在没有显式二级索引的情况下在储存区中插入/更新键的顺序,来迭代(iterate)键-值储存区。由于储存区是错位更新的,可以按时间顺序来执行所有的写入/更新。数据的按时间顺序排序,对于有效地支持诸如“change capture feed”(改变捕获馈送)之类的功能来说是重要的。例如,对于支持诸如“list all valid changes since”(列出自…以来所有的有效改变)的查询是重要的。这样的查询应当仅列出有效记录(即未删除记录)并按时间顺序列出它们。如果将仅附加(append-only)数据储存区作为日志来对待,则保持时间顺序对于故障恢复也是有用的。在支持删除(delete)/更新(update)操作并执行GC过程530以保留有效记录时,很难维护时间顺序。在一个示例中,一个问题是,对无效键-值对的常规GC处理将对数据重新排序,结果破坏了时间顺序。在一个实施例中,系统500提供一种在存在不保持二级索引的GC过程530的情况下保持键的时间顺序的机制。
在一个实施例中,系统500通过实现以下步骤来提供没有二级索引的按时间排序。系统500按照上层发出操作的顺序来执行写入、更新和删除。在一个实施例中,系统500通过在存储层按逻辑上递增的顺序(例如以日志结构化的顺序)执行操作来隐含地维护该信息。通常的GC处理将破坏这种隐含的排序。
图7示出了根据实施例的时间顺序的GC中断的示例700。如图所示,示例700包括索引710、磁盘上布局720(示出日志位置)、具有标记的孔的磁盘上布局730、以及在不按时间顺序的GC之后的日志位置740。该不按顺序的GC包括对第一槽(0-4)进行垃圾收集,而将位置1的有效内容写入位置11之后则导致不按时间顺序排序。这导致日志位置740具有带有键5、6和1(不按时间顺序)的位置10、11和12。
图8示出了根据一个实施例的按时间顺序的GC的示例800。如图所示,使用系统500(图5),在处理了按时间顺序的GC之后,日志位置840示出了包括按顺序的键1、5和6的日志位置0、1和2的结果,该按顺序的GC包括对第一槽(0-4)进行垃圾收集,并写入位置1处的有效内容以维持排序。内部排序包括维持从牺牲槽复制的键如在GC之前那样的相对顺序。外部排序包括维持从牺牲槽复制出来的键与在GC之前其它槽中的其余的键相比相同的相对顺序。
图9A示出了根据实施例的包括GC牺牲槽930(槽2)的槽的示例900。示例900包括槽0 910、槽1 920和槽2 930,槽2 930是GC牺牲槽。图9B示出了根据实施例的包括一个GC目标槽(槽51 940)的示例900。在该示例900中,将活动数据从GC牺牲槽(槽2 930)转移到GC目标槽(槽51 940)。在示例900所示的方法中,墓碑记录具有以下格式:<墓碑,键,先前地址>(<TOMBSTONE,key,prior address>)。先前地址(prior address)是指键的上一个有效地址。数据记录具有以下格式:“地址x”:<数据,键,值,先前地址(地址x-n)>(<DATA,key,value,prior address(“Address x-n”)>),其中x和n是正整数。当数据记录被转移时,随后的新记录被插入:<DATA,key,value,“Address x”>,<TOMBSTONE,key,“Address x-n”>。
图10A示出了根据实施例的在GC之前的目标槽(槽51 1030)和牺牲槽(槽3 1040)的示例1000初始状态。示例1000示出了槽1 1020、槽51 1030(目标槽)、槽3 1040(牺牲槽)和键-值索引1010。还示出了从槽3 1040位置1(k8)到槽1 1020位置4(k8)的反向指针1050。图10B示出了根据实施例的在GC之后的目标槽(槽51 1030)的示例1000状态。如图所示,键-值索引1010被修改为键-值索引1015,其示出了K8、K9和K10分别被修改为对应槽51:6、槽51:8和槽51:9。槽51 1030现在包括位于位置7(K8)的目标槽,其指向牺牲槽(槽3 1040,其现在不存在;其对于位置7、8和9来说是相同的)。另外,在GC失败(例如未完成事务)之后需要清除。反向指针(指向前一地址)1055从槽51 1030的位置7指向槽1 1020的位置4。
在一个实施例中,按时间顺序的GC处理包括以下步骤。(1)系统500(图5)选择牺牲槽(例如槽3 1040)。在一个实施例中,牺牲槽的选择基于的是系统“成本效益”(即处理时间、带宽、存储器使用等)分析、顺序的槽选择等。然后,(2)系统500估计牺牲槽中的活动数据的量。(3)然后识别目标槽(例如槽51 1030)。如果先前槽具有空闲容量,则将目标槽标识为牺牲槽的先前槽。否则,如果需要复制更多的有效内容,则系统500选择一个空闲槽作为目标槽(分配下一个逻辑槽标识符(ID)并将其插入到槽链中牺牲槽之前的位置)。(4)系统500然后在恢复日志中记录GC事务的开始。(5)然后,将有效内容从牺牲槽复制到目标槽。这包括,如果被复制的记录是更新(为使得原始插入保持无效并且不显现所需要的),则放置一个墓碑,其中该墓碑指向更新反向指针所指向的在牺牲槽中的位置。GC目标槽中的条目的反向指针应当指向牺牲槽。有效内容包括“活动数据记录”和“活动墓碑”。(6)接下来,系统500更新内存索引(in-memory index)(例如基于b+树的索引)以记录该键在目标槽中的新位置。(7)如果需要复制更多的有效内容,则系统500选择空闲槽,并将其插入槽链中牺牲槽之前的位置,并返回(3)。(8)系统500在恢复日志中记录GC事务的结束。
一个或多个实施例通过明确地确保垃圾收集器不对数据的相对位置重新排序来提供数据的按时间顺序排序。因此,系统500在GC期间按时间顺序存储数据而不重新排序。一个或多个实施例具有优于常规系统的优点,因为不需要二级索引,并且GC不需要关闭GC,这能改善对可用存储容量的有效使用。
图11示出了根据一个实施例的用于键-值存储系统中按时间顺序排序的错位更新的过程1100的框图。在一个实施例中,过程1100中的框1110包括在存储器中存储键-值储存区。由处理器执行错位操作,以便在没有显式二级索引的情况下在GC事务处理存在的情况下,通过在存储层上对操作进行排序而保持操作的按时间顺序排序。
在一个实施例中,在过程1100中,错位操作包括更新、删除和插入操作。在一个实施例中,过程1100还可以包括执行GC事务,以通过保持从牺牲槽复制出来的键的相对顺序与在垃圾收集事务之前至少一个目标槽中的相同,来维持所述操作的按时间顺序排序。
在一个实施例中,过程1100可以包括执行GC事务以保持从牺牲槽复制出来的键的相对顺序与在GC事务处理之前其他槽中的键相比是相同的。在一个实施例中,过程1100还可以包括估计一个牺牲槽中的活动数据的量,识别至少一个目标槽,在恢复日志中记录GC事务的开始,将有效内容从牺牲槽复制到该至少一个目标槽,如果被复制的记录是更新,则放置一个墓碑,以及更新内存索引以记录键在目标槽中的新位置。在一个实施例中,在过程1100中,墓碑指向更新反向指针所指向的牺牲槽中的位置,目标槽中的条目的反向指针指向牺牲槽,并且有效内容包括活动数据记录和活动墓碑。
在一个实施例中,处理1100还可以包括将GC事务的结束记录在恢复日志中。
如本领域技术人员将理解的,本发明的各方面可以被实现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例的形式,其在这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各方面可以采取在其上包含计算机可读程序代码的一个或多个计算机可读介质中包含的计算机程序产品的形式。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是,例如但不限于,电、磁、光、电磁、红外或半导体系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体的示例(非穷举列表)将包括以下:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或前述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序。
计算机可读信号介质可以包括例如在基带中或者作为载波的一部分传播的数据信号,其中传播的数据信号具有在其中体现的计算机可读程序代码。这种传播信号可以采取多种形式中的任何一种,包括但不限于电磁、光或其任何合适的组合。计算机可读信号介质可以是不是计算机可读存储介质并且可以传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序的任何计算机可读介质。
可以使用任何适当的介质来传输在计算机可读介质上包含的程序代码,所述介质包括但不限于无线、有线、光纤电缆、RF等或前述的任何适当组合。
用于执行本发明的各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++等的面向对象的编程语言以及诸如“C”编程语言或类似编程语言的常规过程编程语言。程序代码可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如使用因特网服务提供商通过因特网)。
参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。
这些计算机程序指令也可以存储在计算机可读介质中,其可以引导计算机、其他可编程数据处理装置或其他设备以特定方式运行,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。
计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个或多个框中指定的功能/动作的过程。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
权利要求中对单数元件的引用不是要表示“一个且仅一个”—除非明确地这样声明,而是表示“一个或多个”。当前已知或以后将为本领域普通技术人员所知的上述示例性实施例的元件的所有结构和功能等同物旨在被本申请的权利要求所包含。本文的权利要求要素不应根据美国法典(U.S.D)第35条第112款第六段的规定来解释,除非该要素是用短语“用于…的装置”"或“用于…的步骤”明确地陈述的。
本文所用的术语仅是为了描述特定实施例的目的,而不是要限制本发明。如本文所用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与如具体要求保护的其它要求保护的元件组合执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了本发明的描述,但是该描述不是穷举的或者将本发明限制为所公开的形式。在不背离本发明范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解本发明的具有各种修改的各种实施例,这些修改适合于所考虑的特定用途。
Claims (16)
1.一种按时间顺序排序的错位更新的系统,所述系统包括:
存储键-值储存区和指令的存储器设备;以及
处理器,其被配置为执行所述指令以:执行错位操作,所述错位操作被配置为在存在没有明确的二级索引的垃圾收集事务的情况下通过在存储层上对所述操作进行排序而维持所述操作的按时间顺序排序。
2.根据权利要求1所述的系统,其中,所述操作包括:更新、删除和插入操作。
3.根据权利要求2所述的系统,其中,所述处理器还被配置为执行所述指令以:
执行垃圾收集事务,以通过保持从牺牲槽复制出来的键的相对顺序与在垃圾收集事务之前至少一个目标槽中的相同,来维持所述操作的按时间顺序排序。
4.根据权利要求2所述的系统,其中,所述处理器还被配置为执行所述指令以:
执行垃圾收集事务以维持从牺牲槽复制出来的键与在垃圾收集事务处理之前其它槽中的键相比相同的相对顺序。
5.根据前述权利要求中任一项所述的系统,其中,所述处理器还被配置为执行所述指令以:
估计牺牲槽中的活动数据的量;
识别至少一个目标槽;
在恢复日志中记录垃圾收集事务的开始;
将有效内容从牺牲槽复制到所述至少一个目标槽;
如果被复制的记录是更新,则设置墓碑用以跟踪以前的版本;以及
更新内存索引以记录键在目标槽中的新位置。
6.根据权利要求5所述的系统,其中:
墓碑指向牺牲槽中更新反向指针所指向的位置;
目标槽中的其它条目的反向指针指向从牺牲槽转移到目标槽中的有效数据的牺牲槽;以及
有效内容包括活动数据记录和活动墓碑。
7.根据权利要求6所述的系统,其中,所述处理器还被配置为执行所述指令以:
在恢复日志中记录垃圾收集事务的结束。
8.一种用于按时间顺序排序的错位更新的方法,该方法包括:
在存储器中存储键-值储存区;以及
执行错位操作,所述错位操作被配置为在存在没有明确的二级索引的垃圾收集事务的情况下通过在存储层上对所述操作进行排序而维持所述操作的按时间顺序排序。
9.根据权利要求7所述的方法,其中所述操作包括:更新、删除和插入操作。
10.根据权利要求9所述的方法,还包括:
执行垃圾收集事务,以通过保持从牺牲槽复制出来的键的相对顺序与在垃圾收集事务之前至少一个目标槽中的相同,来维持所述操作的按时间顺序排序。
11.根据权利要求9所述的方法,还包括:
执行垃圾收集事务以维持从牺牲槽复制出来的键与在垃圾收集事务处理之前其它槽中的键相比相同的相对顺序。
12.根据权利要求8至11中任一项所述的方法,还包括:
估计牺牲槽中的活动数据的量;
识别至少一个目标槽;
在恢复日志中记录垃圾收集事务的开始;
将有效内容从牺牲槽复制到所述至少一个目标槽;
如果被复制的记录是更新,则设置墓碑用以跟踪以前的版本;以及
更新内存索引以记录键在目标槽中的新位置。
13.根据权利要求12所述的方法,其中:
墓碑指向牺牲槽中更新反向指针所指向的位置;
目标槽中的其它条目的反向指针指向从牺牲槽转移到目标槽中的有效数据的牺牲槽;以及
有效内容包括活动数据记录和活动墓碑。
14.根据权利要求13所述的方法,还包括:
在恢复日志中记录垃圾收集事务的结束。
15.一种用于按时间顺序排序的错位更新的计算机程序产品,所述计算机程序产品包括:
一种计算机可读存储介质,其可由处理电路读取并且存储用于由所述处理电路执行以执行根据权利要求8至14中任一项所述的方法的指令。
16.一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,包括当所述程序在计算机上运行时用于执行根据权利要求8至14中任一项所述的方法的软件代码部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/904,186 | 2018-02-23 | ||
US15/904,186 US10783073B2 (en) | 2018-02-23 | 2018-02-23 | Chronologically ordered out-of-place update key-value storage system |
PCT/IB2019/051325 WO2019162830A1 (en) | 2018-02-23 | 2019-02-19 | Chronologically ordered out-of-place update key-value storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111684437A true CN111684437A (zh) | 2020-09-18 |
CN111684437B CN111684437B (zh) | 2024-02-20 |
Family
ID=67683890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980010935.9A Active CN111684437B (zh) | 2018-02-23 | 2019-02-19 | 按时间顺序排序的错位更新键-值存储系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10783073B2 (zh) |
JP (1) | JP7228321B2 (zh) |
CN (1) | CN111684437B (zh) |
DE (1) | DE112019000402T5 (zh) |
GB (1) | GB2584374A (zh) |
WO (1) | WO2019162830A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022242716A1 (en) * | 2021-05-19 | 2022-11-24 | Huawei Cloud Computing Technologies Co., Ltd. | Compaction policies for append-only stores |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10642680B2 (en) * | 2018-02-23 | 2020-05-05 | International Business Machines Corporation | Chronologically ordered log-structured key-value store from failures during garbage collection |
CN113094292B (zh) * | 2020-01-09 | 2022-12-02 | 上海宝存信息科技有限公司 | 数据存储装置以及非挥发式存储器控制方法 |
US11704038B2 (en) * | 2021-04-12 | 2023-07-18 | EMC IP Holding Company LLC | Processing out of order writes in a log structured file system for improved garbage collection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130019000A1 (en) * | 2011-07-14 | 2013-01-17 | Mircea Markus | Multi-operational transactional access of in-memory data grids in a client-server environment |
US20160246830A1 (en) * | 2015-02-23 | 2016-08-25 | International Business Machines Corporation | Managing data in storage according to a log structure |
CN107636624A (zh) * | 2015-06-30 | 2018-01-26 | 国际商业机器公司 | 没有使用的特殊指令的垃圾收集 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5996054A (en) | 1996-09-12 | 1999-11-30 | Veritas Software Corp. | Efficient virtualized mapping space for log device data storage system |
US7200623B2 (en) | 1998-11-24 | 2007-04-03 | Oracle International Corp. | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US6728738B2 (en) | 2002-04-03 | 2004-04-27 | Sun Microsystems, Inc. | Fast lifetime analysis of objects in a garbage-collected system |
US7984180B2 (en) | 2005-10-20 | 2011-07-19 | Solarflare Communications, Inc. | Hashing algorithm for network receive filtering |
US7810085B2 (en) | 2005-12-07 | 2010-10-05 | Microsoft Corporation | Removal of unnecessary read-to-update upgrades in software transactional memory |
US20090210429A1 (en) | 2008-02-19 | 2009-08-20 | Yahoo! Inc. | System and method for asynchronous update of indexes in a distributed database |
US20100332240A1 (en) | 2009-06-24 | 2010-12-30 | Microsoft Corporation | Decentralized account digest using signed electronic receipts |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
US8412689B2 (en) * | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
US10558705B2 (en) | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
JP2013033345A (ja) | 2011-08-01 | 2013-02-14 | Internatl Business Mach Corp <Ibm> | トランザクション処理システム、方法及びプログラム |
GB2511222A (en) | 2011-09-30 | 2014-08-27 | Ibm | Transaction processing system, method and program |
CN103164345B (zh) | 2011-12-08 | 2016-04-27 | 光宝科技股份有限公司 | 固态存储装置遭遇断电后的数据存储方法 |
US9021421B1 (en) * | 2012-05-07 | 2015-04-28 | Google Inc. | Read and write barriers for flexible and efficient garbage collection |
US20140136575A1 (en) | 2012-11-10 | 2014-05-15 | Yuanyuan Zhao | Log-structured garbage collection |
US9400816B1 (en) | 2013-02-28 | 2016-07-26 | Google Inc. | System for indexing collections of structured objects that provides strong multiversioning semantics |
US9092238B2 (en) | 2013-03-15 | 2015-07-28 | Joyent, Inc. | Versioning schemes for compute-centric object stores |
US9519575B2 (en) | 2013-04-25 | 2016-12-13 | Sandisk Technologies Llc | Conditional iteration for a non-volatile device |
US8683262B1 (en) | 2013-06-21 | 2014-03-25 | Terracotta Inc. | Systems and/or methods for rapid recovery from write-ahead logs |
US8929146B1 (en) | 2013-07-26 | 2015-01-06 | Avalanche Technology, Inc. | Controller management of memory array of storage device using magnetic random access memory (MRAM) |
US9223843B1 (en) | 2013-12-02 | 2015-12-29 | Amazon Technologies, Inc. | Optimized log storage for asynchronous log updates |
US9268653B2 (en) | 2014-01-17 | 2016-02-23 | Netapp, Inc. | Extent metadata update logging and checkpointing |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
CN104063635B (zh) | 2014-07-02 | 2017-09-29 | 北京深思数盾科技股份有限公司 | 目标文件的保护方法及保护系统 |
US10242027B2 (en) | 2014-08-15 | 2019-03-26 | Hewlett-Packard Development Company, L.P. | Three phase commit for a distributed file system |
US9928264B2 (en) | 2014-10-19 | 2018-03-27 | Microsoft Technology Licensing, Llc | High performance transactions in database management systems |
CN105677297B (zh) | 2014-11-18 | 2018-05-04 | 龙芯中科技术有限公司 | 套锁实现方法及装置 |
US10083082B2 (en) | 2015-09-07 | 2018-09-25 | International Business Machines Corporation | Efficient index checkpointing in log-structured object stores |
US10552404B2 (en) | 2016-09-29 | 2020-02-04 | International Business Machines Corporation | Retrospective snapshots in log-structured storage systems |
US11210211B2 (en) * | 2017-08-21 | 2021-12-28 | Western Digital Technologies, Inc. | Key data store garbage collection and multipart object management |
-
2018
- 2018-02-23 US US15/904,186 patent/US10783073B2/en active Active
-
2019
- 2019-02-19 WO PCT/IB2019/051325 patent/WO2019162830A1/en active Application Filing
- 2019-02-19 JP JP2020543293A patent/JP7228321B2/ja active Active
- 2019-02-19 CN CN201980010935.9A patent/CN111684437B/zh active Active
- 2019-02-19 GB GB2013459.9A patent/GB2584374A/en not_active Withdrawn
- 2019-02-19 DE DE112019000402.6T patent/DE112019000402T5/de not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130019000A1 (en) * | 2011-07-14 | 2013-01-17 | Mircea Markus | Multi-operational transactional access of in-memory data grids in a client-server environment |
US20160246830A1 (en) * | 2015-02-23 | 2016-08-25 | International Business Machines Corporation | Managing data in storage according to a log structure |
CN107636624A (zh) * | 2015-06-30 | 2018-01-26 | 国际商业机器公司 | 没有使用的特殊指令的垃圾收集 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022242716A1 (en) * | 2021-05-19 | 2022-11-24 | Huawei Cloud Computing Technologies Co., Ltd. | Compaction policies for append-only stores |
US11681456B2 (en) | 2021-05-19 | 2023-06-20 | Huawei Cloud Computing Technologies Co., Ltd. | Compaction policies for append-only stores |
Also Published As
Publication number | Publication date |
---|---|
WO2019162830A1 (en) | 2019-08-29 |
GB202013459D0 (en) | 2020-10-14 |
US20190266081A1 (en) | 2019-08-29 |
JP7228321B2 (ja) | 2023-02-24 |
US10783073B2 (en) | 2020-09-22 |
DE112019000402T5 (de) | 2020-10-22 |
JP2021515299A (ja) | 2021-06-17 |
CN111684437B (zh) | 2024-02-20 |
GB2584374A (en) | 2020-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7221975B2 (ja) | マルチマスタ分散データ管理システムにおけるトランザクション処理 | |
CN111684437B (zh) | 按时间顺序排序的错位更新键-值存储系统 | |
US10127243B2 (en) | Fast recovery using self-describing replica files in a distributed storage system | |
US10657102B2 (en) | Storage space management in union mounted file systems | |
US11487727B2 (en) | Resolving versions in an append-only large-scale data store in distributed data management systems | |
WO2018083558A1 (en) | Storing and retrieving restricted datasets to and from a cloud network with non-restricted datasets | |
US20180189124A1 (en) | Rebuilding the namespace in a hierarchical union mounted file system | |
US11150981B2 (en) | Fast recovery from failures in a chronologically ordered log-structured key-value storage system | |
US10579587B2 (en) | Space management for a hierarchical set of file systems | |
US9904600B2 (en) | Generating initial copy in replication initialization | |
US10552404B2 (en) | Retrospective snapshots in log-structured storage systems | |
US10140054B2 (en) | Retrospective snapshots in log structured storage systems | |
US10592479B2 (en) | Space management for a hierarchical set of file systems | |
US20180189305A1 (en) | Global namespace for a hierarchical set of file systems | |
US11163636B2 (en) | Chronologically ordered log-structured key-value store from failures during garbage collection | |
CN115485677A (zh) | 在分布式数据存储环境中的安全数据复制 | |
US20230103888A1 (en) | Optimization of file system snapshot performance in hybrid storage deployments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |