CN112912868A - 用于批量移除数据库中的记录的系统和方法 - Google Patents

用于批量移除数据库中的记录的系统和方法 Download PDF

Info

Publication number
CN112912868A
CN112912868A CN201980051061.1A CN201980051061A CN112912868A CN 112912868 A CN112912868 A CN 112912868A CN 201980051061 A CN201980051061 A CN 201980051061A CN 112912868 A CN112912868 A CN 112912868A
Authority
CN
China
Prior art keywords
storage system
records
range
manifest
tombstone
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
Application number
CN201980051061.1A
Other languages
English (en)
Other versions
CN112912868B (zh
Inventor
T·方哈内尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Salesforce Inc
Original Assignee
Salesforce com Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Salesforce com Inc filed Critical Salesforce com Inc
Publication of CN112912868A publication Critical patent/CN112912868A/zh
Application granted granted Critical
Publication of CN112912868B publication Critical patent/CN112912868B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • G06F16/2386Bulk updating operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种在将数据从内存存储写到区的合并操作期间删除基于日志结构合并(LSM)树的存储系统中的多个记录的方法,包括:接收删除多个记录的命令;将范围墓碑插入该存储系统的内存存储组件,该范围墓碑指示要删除的多个记录;至少部分地基于该多个记录是否连续超过预定阈值量,来选择一个或多个延迟删除过程;基于所选择的延迟删除过程,来修改该存储系统的清单;以及,执行合并操作,其中,至少部分地基于该延迟删除过程,在转储清除操作期间不将该多个记录写到该区。

Description

用于批量移除数据库中的记录的系统和方法
背景技术
数据结构是对数据的组织整理,提供与存储在其中的数据进行交互的各种方式。可为各种目的设计数据结构,例如,为了促进对数据的有效搜索(例如,在二进制搜索树中),为了实现对稀疏数据的有效存储(例如,使用链接列表),或为了提供对可搜索数据的有效存储(例如,使用B树)。
利用键值范式的数据结构接受键值对,并被配置成响应对键的查询。键值数据结构可以包括诸如词典的结构(例如,映射表、散列表等),其中,键被存储在链接(或包含)相应值的列表中。虽然这些结构在内存中(例如,在主内存或系统状态内存中,而不是在存储中)是有用的,但是这些结构在永续性存储(例如,在磁盘上)中的存储表示可能是低效的。因此,已经引入了一类基于日志的存储结构。其一项示例是日志结构的合并树(LSM树)。
除了包括可变内存驻留式内存层之外,LSM树数据库可以由一个或多个磁盘驻留式不可变层(“区(extent)”)组成。当从LSM树读取时,读取器可读取并合并来自所有层的结果。在索引新记录时,将对应的索引条目添加到可变存储驻留式层。
LSM树数据库中的事务被存储为给定记录的不可变版本。已经存储在系统上的记录的内容的不可变版本可以保持不变,直到从系统中删除(如果发生的话)该内容。即,所接收的事务可以创建待存储在系统中的记录的内容的新版本,而不是改变记录的内容。因此,可以使多个版本的记录(例如,具有不同内容的记录)具有除事务标识符(例如,可以包括事务编号的事务标识符)之外的相同键。
附图说明
附图被并入说明书,构成说明书的一部分,提供对所公开的主题的进一步了解。附图还示出了所公开的主题的实施例,并且与详细描述一起,用于解释所公开的主题的实施例的原理。只示出了对所公开主题和其各种实施方式达成基本了解所必需的信息,而未做出要更加详细地示出结构细节的尝试。
图1示出了根据所公开主题的实现方式的示例性数据库系统。
图2示出了根据所公开的主题的实现方式的应用于清单中的区引用集的键范围分割。
图3示出了根据所公开的主题的实现方式的应用于清单中的区引用集的推迟删除。
图4示出了根据所公开的主题的实现方式的计算机。
图5示出了根据所公开的主题的实现方式的网络配置。
具体实施方式
参考附图描述本公开的各个方面或特征,其中相同的参考标号始终用于指代相同的元件。在本说明书中,记载了许多细节以提供对本公开的透彻理解。然而,应理解,可在没有这些具体细节的情况下,或用其他方法、组件、材料等来试试所公开内容的某些方面。在其他实例中,以框图形式示出了公知的结构和设备以便于描述本公开。
所公开的方法和技术可以应用于各种不同的数据库结构。所公开的主题不限于单一类型的架构,而是出于说明性目的,以下论述将描述使用具有键范围多租户的日志结构合并(LSM)树的实现方式。LSM树能够用不可变的数据版本来描述数据改变。键范围多租户允许动态绑定到服务器,并可用于使每个租户的数据保持分离。
在基于LSM树的数据库中删除单个记录是通过写入删除标记(以下称为“墓碑(tombstone)”)来完成的。然而,对于由例如可导致大量记录被删除的DROP TABLE命令或DROP INDEX命令引起的批量删除或大量删除,为每个记录写入删除标记是低效的机制。理想地,从用户的观点来看,这样的命令应该是常量时间操作,而不是线性的或者取决于基础表或索引的大小。
所公开的实施例通过引入“范围墓碑(range tombstone)”的概念来解决任意大量记录的批量删除的技术问题。范围墓碑是记录,这类记录用于标记待删除的多个记录,例如,指定表中的所有记录,或与指定租户相关联的所有记录。可以通过例如标志(flag)或特殊头位(header bit),将记录标记为“范围墓碑”记录。否则,可赋予范围墓碑记录以常规记录的属性,将其作为常规记录对待。例如,可以用执行DROP的事务的事务标识符(XID)来标记它,并且当事务提交时用适当的事务编号(XCN)来对它加盖印戳。可以为由DROP命令生效的每个键范围创建一个范围墓碑。
范围墓碑可用于实现批量/大量删除的至少两种不同机制,在此称为“键范围分割”和“推迟删除”。这两种机制通过推迟需要完成的实际工作来向最终用户提供常量时间的反馈。但它们的表现特征不同,这使得它们适用于可能在数据库系统中发生的不同类型的批量或大量删除。
图1示出了示例性系统100,可以通过实现所公开的用于大量移除记录的范围墓碑来改进示例性系统100。数据的不可变版本存储在系统100上的“区”中。“区”是指可用于存储数据的存储介质内通常连续的存储区域。如下面将描述的,“区引用”可以用作对存储在物理存储中的物理范围的逻辑引用,并且可以用于将对物理存储的访问虚拟化为存储中的一个或多个“层级”,通过该层级,数据作为数据库维护和优化过程的一部分随时间迁移。
系统100可在单个计算设备或多个连接的计算设备上操作。例如,系统100可以在膝上型计算机、台式计算机、单个服务器、服务器集群、服务器场或分布式服务器系统上实现,或者可以实现为虚拟计算设备或系统,或者物理和虚拟系统的任何合适的组合。为了简单起见,在图1中没有示出数据库管理系统的各种部分,例如处理器、操作系统和其他组件。
系统100可以是计算系统和网络基础设施的一部分,或者可以连接到单独的计算系统和网络基础设施,包括更大的服务器网络,其可以包括类似于系统100的其他服务器系统。在一些实现方式中,系统100可以是图6所示的计算机600、中央组件700和/或第二计算机800,和/或图7所示的数据库系统1200a至1200d中的一个或多个。
系统100包括访问层105、虚拟化层115和物理存储层127。访问层105可以包括一个或多个服务器111、112、113,服务器111、112、113为租户提供平台,以在其上主存应用程序和数据库,并用作用户与系统100交互的主接口。访问层105还可以包括数据库存储引擎110,数据库存储引擎110可以处理跨服务器111、112、113的负载平衡,并且可以接受并处理来自图6所示的计算设备(例如,计算机600和/或第二计算机800)的对系统100的查询。例如,数据库存储引擎110可以从租户组织接收查询并处理该查询,以将命令发送到虚拟化层115。数据库存储引擎110可以是服务器系统100上用于接收对数据库系统的查询,并检索与所接收的查询相关的数据的任何合适的硬软件组合。
虚拟化层115虚拟化租户数据,以向每个租户提供诸如定制数据库等系统服务,这些系统服务允许租户仅访问租户自己的数据,即使可能有来自多个租户的数据存储在系统100中。虚拟化层可以包括区引用集120(清单组件)和内存存储125。在一些实现方式中,清单和内存存储125可以存储在图6所示的中央组件700和/或图7所示的数据库系统1200a至1200d中。
在数据被记录到永久物理存储层127中的区之前,内存存储125存储数据的初始版本。即,诸如插入新记录或插入墓碑的数据事务发生在内存存储125层级。随着时间的推移,为了优化内存存储125的使用,转储清除操作将数据从内存存储125传送到物理存储层级127中的顶部层级区130,并且合并操作在区130之间传送数据,作为数据库维护操作的一部分。因此,在虚拟化方面,可以说较新的数据驻留在树的“顶部”附近或数据库的“较上层”处,而较旧的数据驻留在树的“底部”附近或数据库的“较低层”处。然而,应当理解,该术语仅用作概念化的辅助,而不一定对数据在数据库中相对于彼此的实际物理位置有任何影响。
清单包含区引用集120,区引用集120可以使用来自租户数据的元数据来定义区130在持续物理内存127中的位置(即,租户数据作为区130的一部分的存储位置)。元数据可以包括:例如,定义哪些键在区内可见的键范围、指示区130中的记录/墓碑的事务顺序的事务编号(本文称为“XCN”),以及将区与给定租户相关联的租户标识符(ID)数据。
虚拟化层115可以从数据库存储引擎110接收查询,并且通过检查数据的最近版本是否在内存存储125中,或者通过参考区引用集120,检查数据的最近版本是否已经被转储清除到物理存储层127中的区130,来找到所请求的数据。例如,可以从与至少一个租户相关联的数据库系统的授权用户接收查询。如果数据已经被转储清除到物理存储127,则虚拟化层115可以基于清单区引用集120中的元数据来定位所请求的数据。即,虚拟化层115可从区130检索该查询所请求的数据,并可将该数据返回给数据库存储引擎110,数据库存储引擎110可将该数据提供给例如将该查询发送到数据库系统的计算设备。
持续物理存储层127可包括不可变数据存储设备且可实现为:例如,半导体内存、固态硬盘(SSD)、机械硬盘、光学内存、光学存储设备或任何其他合适的物理数据存储介质或以上某种组合。物理存储层127可以实现包含租户数据的不可变版本的区130。物理存储层127还可以包括目录135,以存储清单的过去版本,管理区130的标识和寿命,以及跟踪数据容量以管理硬件,比如,可以存储该区的存储设备和服务器。
由于持续物理存储127中的数据是不可变的,因此当系统100执行数据事务以修改所存储的数据时,系统100创建新版本的数据并将其插入到内存存储125中,而不是改变/删除已经存储的数据的内容。在转储清除操作中,数据从内存存储125汇集到物理存储127。因此,本文公开的键值数据的多个版本(例如,每个版本具有不同的内容)可以具有相同的键。此外,通过使用递增顺序事务编号(XCN)来标记每个事务,系统100可以在多个数据版本的相同键之间进行区分。例如,记录的较后版本将具有比记录的先前版本更高的XCN,并且两个记录将具有相同的键,但是可能具有不同的内容值。
当系统100执行需要读出数据的操作时,系统100可以执行按照XCN先后排序的搜索。在扫描期间,当遇到墓碑时,系统100可以忽略具有与墓碑相同的键和比墓碑低的XCN的任何先前记录。即,即使键值对的一个或多个失效版本驻留在区130内的较旧位置,系统也将起到类似于删除对应值的作用。类似地,当遇到范围墓碑时,所公开的系统100忽视墓碑键范围中的记录。所公开的系统100将改为基于下面将讨论的各种因素来选择并执行延迟的大量/批量删除过程。
如前所述,所公开的实施例利用本文将称之为“键范围分割”和“推迟删除”的过程,作为延迟的大量/批量删除过程。这些过程使得通过推迟需要完成的实际删除工作,来向最终用户提供常量时间反馈。然而,这两个过程的表现特性不同,使得每个过程适用于可能发生的不同类型的批量删除情境。
数据库大量删除情境可以出现在对各种数据定义语言(DDL)命令的执行中,该各种DDL命令比如有:DROP TABLE、DROP INDEX、DROP TEANT和DROP DATABASE。这些对象删除类命令通常需要执行两个主要任务:1)更新清单120中的元数据以进行必要的模式改变,以及2)释放由所删除对象在区130中占用的存储。
在所公开的实施例中,系统100通过在接收到DDL命令时更新清单120来立即处理第一任务。当提交对清单120的元数据更新时,所删除对象变得不可访问。第二个任务,即,延迟删除所删除对象在区130中占据的实际记录,并延迟释放所删除对象在区130中占据的存储空间。在下次转储清除内存存储125(即,LSM树的内存内组件)之前,不能重新创建具有与所删除对象相同标识(即,表和索引的相同物理关系ID、数据库的相同数据库编号、租户的相同租户ID)的新对象。
由于系统100数据库中数据的集群特性,几乎所有上述对象类型的存储空间的释放通常遵循两种不同存储模式中的一种:批量删除连续键范围中的记录,或批量删除多个不连续键范围中的记录。例如,如果目标表是未租借的,则DROP TABLE会影响连续的键范围,但是如果目标表是多租户表,则DROP TABLE会影响许多不连续的键范围。类似地,如果索引在未租借表上或者是多租户表上的跨租户索引,则DROP INDEX影响邻接键范围,但是如果索引是租户集群型的,则DROP INDEX影响许多不邻接键范围。DROP TENANT通常影响连续的键范围。如果数据库不包含任何租户,则DROP TENANT通常影响连续的键范围,并且可以影响在数据库中注册的每一个租户的一个另外的独立键范围。
在大部分是相邻键范围的情况下,本文公开的键范围分割过程对于去除相邻键范围是有利的。在键范围分割中,通过更新清单120来执行记录的批量删除,使得从清单120中去除墓碑键范围。这是通过在将记录从内存125传送到物理存储区130的转储清除操作期间创建新清单来完成的。由转储清除操作所创建的新版本的清单可以将新的引用添加到正是由转储清除操作所创建的存储区中,并且还可以在LSM树的所有层级上修改覆盖原始键范围的任何现有区引用。
在创建新清单时,如果现有区引用完全落入一个墓碑键范围内,则移除现有区引用,或者如果现有区引用与墓碑键范围的一个或多个边界重叠,则递归地修改现有区引用。该递归操作执行以下步骤:1)如果区引用的下边界/上边界落在墓碑键范围内,则用该边界创建新引用,进行调整以使其落在墓碑键范围的上边界/下边界上,或者2)如果区引用完全覆盖墓碑键范围,该引用被分割成两个新的区引用,一个的上边界与墓碑键范围的下边界匹配,另一个的下边界与墓碑键范围的上边界匹配。
图2示出了所公开的应用于清单200中的区引用集210的键范围分割。区1被定义为具有键范围(0,10),区2被定义为具有键范围(11,20),区3被定义为具有键范围(21,30)。第一DROP命令导致插入覆盖键范围(5,13)的第一范围墓碑220。由于范围墓碑220的上边界落在区1的(0,10)键范围内,并且下边界落在区2的(11,20)键范围内,因此转储清除操作创建将范围墓碑键范围分割出的新区。因此,新的区4被定义为具有键范围(0,4),且区5被定义为具有键范围(14,20)。
第二DROP命令导致插入覆盖键范围(24,26)的第二范围墓碑230。在这种情况下,由于区3的区引用完全覆盖了范围墓碑230的键范围,因此区3被分成两个新的区:区6(21,23)和区7(27,30)。区7的上边界与墓碑键范围的下边界匹配,且区6的下边界与墓碑键范围的上边界匹配。
因此,所公开的键范围分割使得墓碑化键范围中的任何记录在LSM树中不可访问,因为清单不再包含该键范围的任何条目。这些记录所占用的存储空间可以在以后被回收,例如,当合并操作重写分割边界周围的键范围,并且最终仍然保持被墓碑化键范围的物理记录的原始区失效时。
虽然键范围分割对于邻接的键范围是有利的,但是在要求大量DROP DDL的情况下,可能由于在清单中重复包含新区引用而使清单的大小膨胀,而导致过度分割。清单中的大量区引用会减慢需要操纵区引用集的过程,例如合并或转储清除操作。
当需要在充分不连续的键范围上发生大量删除时,如本文所公开的推迟删除可能是有利的。推迟删除是指,通过用指示哪些对象被删除同时保持现有区引用不变的附加数据来注释清单,而进行的记录的批量删除。该注释处理可以在转储清除操作期间执行。
由转储清除操作创建的新版本清单包括:在LSM树的内存内组件中找到范围墓碑的任何对象的标识符,以及该对象何时被删除的日志流相关时间戳。LSM树的持续物理存储中的后续扫描,可以根据被删除对象的列表来限定记录,从而有效地筛选出属于太旧而无法被当前扫描看到的对象的记录。
图3示出了所公开的应用于清单300中的区引用集310的推迟删除过程。该区引用集包括为租户A、B和C标记的数据,每个租户拥有表T1、T2、T3和T4中的数据。删除表T1的DROP TABLE命令插入标识要删除的表T1的范围墓碑。转储清除操作用标识要删除的表T1的数据来注释清单300,而不修改区引用集310。对区引用集310所映射的数据的后续扫描,将首先检查注释330,以确定所读取的数据是否已被标记为要推迟删除。被读取为与表T1相关联的任何数据不会被输出。
因此,所公开的推迟删除过程不会立即隐藏被删除的键范围中的记录。低层级存储扫描仍然可以看到并找到删除的记录,但是只要继续存在,就会阻止这些记录返回到执行引擎(或客户端)。实际的存储空间回收类似于在普通墓碑和键范围分割过程中的回收。当合并遇到包含被删除对象的记录的键范围时,将跳过这些记录,并且不会将其重写到新的区。
所公开的键范围分割和推迟删除方法在某些方面是类似的。例如,它们都通过删除/修改获准访问所删除对象所必需的元数据,来立即有效地隐藏与所删除对象相对应的所有记录。这两个过程都会阻止创建具有与最近删除的对象相匹配的标识的新对象,直到至少一次转储清除操作发生。
至于这两个过程影响清单的方式、以及当它们遇到对应于所删除对象的键范围时执行后续合并的效率程度,它们在这两方面是不同的。所公开的键范围分割过程为每个墓碑化键范围的存储清单增加了开销。开销可能导致清单膨胀,这又可能不利地影响查询以及后续重写清单的操作的表现(原因在于清单大小增加,相对应地,处理时间增加)。然而,键范围分割提供了当合并操作遇到被删除的键范围时保持高效的优点。合并操作不需要逐个读取所删除的键范围中的记录,就能确定记录是否被删除。
所公开的推迟删除过程消除了存储清单中的开销,从而保持查询高效,并确保对存储清单的重写保持快速。然而,延迟删除可能负面地影响遇到被删除的键范围时合并操作的表现,因为合并操作将仍然需要逐个读取所删除的键范围中的每个记录。
删除包括多个记录的数据库对象的最有效的方式取决于许多因素,比如,受影响的键范围的数目,以及在那些键范围内的记录的数目。所公开的键范围分割方法,在受影响的键范围较宽,并且每个键范围包含相对大量的记录时,得到最佳运用。所公开的推迟删除方法,在应用于影响大量相对较小、不连续的、所含记录非常少的键范围的操作时,得到最佳应用。
所公开的系统100可以使用试探法来确定使用哪个延迟删除过程。例如,在一个实施例中,推迟删除可用于影响租户集群型对象(即,多租户表或租户集群型的索引)的所有DROP操作,而键范围分割可由所有其他DROP操作使用。在另一个实施例中,系统可以基于多个记录是否连续超过预定阈值量来选择延迟删除过程。
当前公开的主题的实现方式可以在各种组件和网络体系结构中实现,并与之一起使用。图4是适于实现本公开主题的实现方式的示例性计算机600。计算机600可以是多个计算机的网络中的单个计算机。如图4所示,计算机600可以与中央或分布式组件700(例如,服务器、云服务器、数据库、集群、应用服务器等)通信。中央组件700可与诸如第二计算机800等可包括存储设备810的一个或多个其他计算机通信。第二计算机800可以是服务器、云服务器等。存储810可以使用任何合适的易失性和非易失性物理存储介质的任何合适的组合,包括例如机械硬盘、固态硬盘、光介质、闪存、磁带驱动器、寄存器和随机存取内存等,或其任何组合。
诸如上述记录的数据,可以使用任何合适的文件系统或存储方案或层级,以任何合适的格式,存储在例如存储810中。例如,存储810可使用如上所述的具有多个层级的日志结构合并(LSM)树来存储数据。此外,如果图4和图5所示的系统是多租户系统,则可以针对租户的数据库的每个实例,将存储组织成单独的日志结构合并树。或者,可以将特定服务器或系统上的所有记录的内容存储在单个日志结构合并树中,在这种情况下,可以使用与记录的版本相关联的唯一租户标识符来区分每个租户的数据。可以将较新的事务存储在树的最高层或顶层,并可以将较旧的事务存储在树的较低层。或者,每一记录的最近事务或版本可存储在树的最高层,而先前版本或先前事务存储在树的较低层。
可以针对每个计算机隔离向中央组件700获得的信息和/或从中央组件700获得的信息,使得计算机600可以不与计算机800共享信息。可替代地或另外地,计算机600可以直接与第二计算机800通信。
计算机(例如,用户计算机、企业计算机等)600包括将计算机600的主要组件互连的总线610,主要组件比如有:中央处理器640;内存670,通常是RAM,但也可以包括ROM、闪存RAM等;输入/输出控制器680;用户显示器620,比如,经由显示适配器的显示器或触摸屏;用户输入接口660,可以包括一个或多个控制器和相关联的用户输入或设备,例如,键盘、鼠标、WiFi/蜂窝无线电设备、触摸屏、麦克风/扬声器等,并且可以紧密地联接到输入/输出控制器680;固定存储630,比如,硬盘驱动器、闪存、光纤通道网络、SAN设备、SCSI设备等;以及可移动介质组件650,可操作来控制和接收光盘、闪存驱动器等。
总线610允许中央处理器640和内存670之间的数据通信,内存670可以包括只读内存(ROM)或闪存(未示出)和随机存取内存(RAM)(未示出),如前所述。RAM可以包括加载操作系统和应用程序的主内存。ROM或闪存可以包含基本输入输出系统(BIOS)等代码,基本输入输出系统(BIOS)控制基本硬件操作,例如,与外围组件的交互。驻留在计算机600中的应用程序可以存储在计算机可读介质上,并经由计算机可读介质访问,计算机可读介质比如有硬盘驱动器(例如,固定存储630)、光学驱动器、软盘或其他存储介质650。
固定存储630可以与计算机600是一体的,或者可以是分开的并通过其他接口来访问。网络接口690可提供经由电话链路到远程服务器的直接连接、经由互联网服务提供商(ISP)到互联网的直接连接,或经由存在点(POP)或其他技术、经由到互联网的直接网络链路,到远程服务器的直接连接。网络接口690可以使用无线技术,包括数字蜂窝电话连接、蜂窝数字分组数据(CDPD)连接、数字卫星数据连接等,来提供这样的连接。例如,网络接口690可以使计算机能够经由一个或多个局域网、广域网或其他网络与其他计算机通信,如图5所示。
许多其他设备或组件(未示出)可以以类似的方式连接(例如,数据高速缓存系统、应用服务器、通信网络交换机、防火墙设备、认证和/或授权服务器、计算机和/或网络安全系统等)。相反,图4中所示的所有组件不必都得存在才能实施本公开。这些组件可以按照与所示不同的方式互连。实施本发明的代码可存储在计算机可读存储介质中,例如,存储在内存670、固定存储630、可移除介质650中的一者或一者以上中,或存储在远程存储位置。
图5示出了根据所公开的主题的实现方式的示例性网络布置。在由云1202表示的网络中的不同节点处的四个单独的数据库系统1200a至d,通过网络链路1204彼此通信,并与用户(未示出)通信。数据库系统1200中的每一个可以是可操作的,从而主存数据库的多个实例,其中每个实例仅可由与特定租户相关联的用户访问。每个数据库系统可以与存储区域网络(未示出)一起构成计算机集群,与防火墙一起构成负载平衡器和备份服务器、其他安全系统和认证系统。在系统1200中的任一个处的一些实例,可以是活动或生产实例,其处理并提交从用户或从计算元件(未示出)接收的事务,该计算原件用于摄取并提供要在实例中存储的数据。
该数据库系统,例如1200c,可以包括至少一个存储设备,比如如图4所示。例如,该存储可包括内存670、固定存储630、可移动介质650、包括在中央组件700和/或第二计算机800中的存储设备,和/或与数据库系统1200a至1200d中的一个或多个相关联的一个或多个存储设备。
在一些实现中,图4和图5中所示的一个或多个服务器可使用LSM树数据结构将数据存储在至少一个存储设备(例如,与中央组件700、第二计算机800和/或数据库系统1200a至1200d相关联的存储设备)的不可变存储中。
所公开的主题的系统和方法可以用于单租户和/或多租户系统。多租户系统可允许各种租户(其可以是,例如,用户、用户组,或组织)通过可在各种租户之间共享的服务器系统上的软件工具或实例,来访问服务器系统上的其自己的记录。每个租户的记录内容可以是该租户的数据库的一部分。多个租户的记录内容可以全部存储在同一服务器系统内,但是每个租户只能访问属于该租户或由该租户创建的记录内容。这可以允许服务器系统实现多租户,而不必例如在单独的服务器或服务器系统上单独地存储每个租户的记录内容。租户的数据库可以是例如关系数据库、分级数据库或任何其他合适的数据库类型。存储在服务器系统上的所有记录可以按照任何合适的结构,包括例如LSM树,来进行存储。
此外,多租户系统可以在分布遍及网络的服务器系统上具有各种租户实例,在每个节点处具有计算系统。每个租户的活动或生产数据库实例,可以在一个特定计算机系统上处理其事务。用于处理该实例的事务的计算系统,还可以为其他租户处理其他实例的事务。
根据对计算机内存内的数据的操作的图示或符号表示,来呈现详细描述的一些部分。数据处理领域的技术人员通常使用这些图示、描述和表示来最有效地将其工作的实质传达给本领域的其他技术人员。计算机实现的过程在本文中并且通常被认为是导致期望结果的自一致的步骤序列。这些步骤是需要对物理量执行物理操纵的步骤。通常,尽管不是必须的,这些物理量采用能够被存储、传输、组合、比较和以其他方式操作的电信号或磁信号的形式。已证明将这些信号称为位、值、元素、符号、字符、术语、数字等有时是方便的,主要是为了通用的原因。
然而,应当记住,所有这些和类似的术语与适当的物理量相关联,并且仅仅是应用于这些物理量的便捷化标记。除非另外明确说明,否则从以上论述中显而易见的是,应了解,在整个说明中,使用例如“写入”、“读取”、“接收”、“传输”、“修改”、“发送”等术语的论述,指的是计算机系统或类似电子计算设备的行为和过程,该行为和过程将表示为计算机系统的寄存器和内存内的物理(例如,电)量的数据操纵并转换为其他数据,该其他数据被类似地表示为计算机系统内存或寄存器或其他此类信息存储、传输或显示设备内的物理量。
更为通常的是,当前所公开的主题的各种实现方式可以包括计算机实现的过程和用于实施这些过程的装置,或以计算机实现的过程和用于实施这些过程的装置的形式来实现。实现方式还可以以计算机程序产品的形式来实现,该计算机程序产品具有计算机程序代码,该计算机程序代码包含非瞬态和/或有形介质中实现的指令,这些介质例如是软盘、CD-ROM、机械硬盘、USB(通用串行总线)驱动器,或任何其他机器可读存储介质,其中,当该计算机程序代码被加载到计算机中并由计算机执行时,计算机成为用于实施所公开的主题的实现方式的装置。实现方式还可以以计算机程序代码的形式来实现,例如,无论是存储在存储介质中,加载到计算机中和/或由计算机执行,还是在一些传输介质上传输,比如,通过电线或电缆、通过光纤,或经由电磁辐射传输,其中,当计算机程序代码被加载到计算机中并由计算机执行时,计算机成为用于实施所公开的主题的实现方式的装置。当在通用微处理器上实施时,计算机程序代码段配置微处理器,以创建特定的逻辑电路。在一些配置中,存储在计算机可读存储介质上的一组计算机可读指令可由通用处理器实施,可将该通用处理器或含有该通用处理器的设备变换成被配置成实施或实行该指令的专用设备。可使用可包括处理器的硬件来实施实现方式,该处理器例如是通用微处理器和/或专用集成电路(ASIC),该专用集成电路在硬件和/或固件中实施根据所公开主题的实现方式的技术的全部或部分。处理器可以耦合到内存,例如RAM、ROM、闪存、硬盘或能够存储电子信息的任何其他设备。内存可以存储适于由处理器执行从而实行根据所公开的主题的实现方式的技术的指令。
出于说明的目的,已经参考具体实现方式进行了前文的描述。然而,上述说明性讨论并非旨在是穷尽性的或将所公开的主题的实现方式限于所公开的精确形式。鉴于上述教示,许多修改和变化是可能的。选择和描述这些实现方式是为了解释所公开的主题的实现方式的原理及其实际应用,从而使本领域的其他技术人员能够利用那些实现方式以及带有各种修改的各种实现方式,这些修改可能适合于所设想的特定用途。

Claims (20)

1.一种在将数据从内存存储写到区的合并操作期间删除基于日志结构合并(LSM)树的存储系统中的记录的计算机实现的方法,包括:
接收删除多个记录的命令;
将范围墓碑插入所述存储系统的内存存储组件,所述范围墓碑指示待删除的所述多个记录;
至少部分地基于所述多个记录是否连续超过预定阈值量,来选择一个或多个延迟删除过程;
基于所选择的延迟删除过程,修改所述存储系统的清单;并且
执行所述合并操作,其中,至少部分地基于所述延迟删除过程,在转储清除操作期间不将所述多个记录写入所述区。
2.根据权利要求1所述的方法,其中,所述多个记录包括表,并且基于所述表中的每个记录共有的前缀标识符来识别所述记录。
3.根据权利要求1或2所述的方法,其中,为由所述命令生效的每个键范围插入一个范围墓碑。
4.根据权利要求1至3中任一项所述的方法,其中,当所述多个记录是连续的时,所述延迟删除过程是键范围分割过程,所述键范围分割过程包括:
更新所述存储系统的所述清单,以从所述清单中移除对应于所述多个记录的键范围。
5.根据权利要求1至4中任一项所述的方法,其中,更新所述清单包括修改一个或多个区引用,所述一个或多个区引用定义所述存储系统中的区中的键范围。
6.根据权利要求1至5中任一项所述的方法,其中,在所述合并操作之前,从所述存储系统读取数据的操作不扫描所移除的键范围中的记录。
7.根据权利要求1至6中任一项所述的方法,其中,当所述多个记录不连续时,所述延迟删除过程是推迟删除过程,所述推迟删除过程包括:
用指示从所述存储系统删除的对象以及所述对象从所述存储系统被删除的时间的数据,来注释所述存储系统的所述清单,
其中,所述注释不修改所述存储系统中的区引用。
8.根据权利要求1至7中任一项所述的方法,其中,所述对象是所述存储系统中的表。
9.根据权利要求1至8中任一项所述的方法,其中,在所述合并操作之前,从所述存储系统读取数据的操作绕过与所述表共享ID前缀的被扫描记录。
10.一种存储系统,包括:
至少一个内存,所述至少一个内存存储计算机可执行指令;
数据库,所述数据库存储多个记录;和
至少一个处理器,其中,所述至少一个处理器被配置成访问所述至少一个内存并执行所述计算机可执行指令,从而:
接收删除多个记录的命令;
将范围墓碑插入所述存储系统的内存存储组件,所述范围墓碑指示待删除的所述多个记录;
基于所述多个记录是否连续超过预定阈值量,来选择延迟删除过程。
基于所选择的延迟删除过程,来修改所述存储系统的清单;并且
执行所述合并操作,其中,至少部分地基于所述延迟删除过程,在所述转储清除操作期间不将所述多个记录写入所述区。
11.根据权利要求10所述的存储系统,其中,所述多个记录全部在表格中,并且基于所述表格中的每个记录共有的前缀标识符来识别所述记录。
12.根据权利要求10或11所述的存储系统,其中,所述处理器被配置成为由所述命令生效的每个键范围插入一个范围墓碑。
13.根据权利要求10至12中任一项所述的存储系统,其中,当所述多个记录是连续的时,所述延迟删除过程是键范围分割过程,所述键范围分割过程包括:
更新所述存储系统的所述清单,以从所述清单中移除对应于所述多个记录的键范围。
14.根据权利要求10至13中任一项所述的存储系统,其中,更新所述清单包括修改一个或多个区引用,所述一个或多个区引用定义所述存储系统中的区中的键范围。
15.根据权利要求10至14中任一项所述的存储系统,其中,在所述合并操作之前,从所述存储系统读取数据的操作不扫描所移除的键范围中的记录。
16.根据权利要求10至15中任一项所述的存储系统,其中,当所述多个记录是不连续的时,所述延迟删除过程是推迟删除过程,所述推迟删除过程包括:
用指示从所述存储系统删除的对象以及所述对象从所述存储系统被删除的时间的数据,来注释所述存储系统的所述清单,
其中,所述注释不影响所述存储系统中的区引用。
17.根据权利要求10至16中任一项所述的存储系统,其中,所述对象是所述存储系统中的表。
18.根据权利要求10至17中任一项所述的存储系统,其中,在所述合并操作之前,从所述存储系统读取数据的操作绕过与所述表共享ID前缀的被扫描记录。
19.一种在将数据从内存存储写到区的合并操作期间删除基于日志结构合并(LSM)树的存储系统中的记录的计算机实现的方法,包括:
接收删除多个记录的命令;
将范围墓碑插入所述存储系统的内存存储组件,所述范围墓碑指示待删除的所述多个记录;
更新所述存储系统的清单,以从所述清单中移除对应于所述多个记录的键范围;并且
执行所述合并操作,其中,至少部分地基于更新后的所述清单,在所述转储清除操作期间不将所述多个记录写入到所述区。
20.一种在将数据从内存存储写到区的合并操作期间删除基于日志结构合并(LSM)树的存储系统中的记录的计算机实现的方法,包括:
接收删除多个记录的命令;
将范围墓碑插入所述存储系统的内存存储组件,所述范围墓碑指示待删除的所述多个记录;
用指示从所述存储系统删除的对象以及所述对象从所述存储系统被删除的时间的数据,来注释所述存储系统的清单,其中,所述注释不影响所述存储系统中的区引用;并且
执行所述合并操作,其中,至少部分地基于注释后的所述清单,在所述转储清除操作期间不将所述多个记录写入到所述区。
CN201980051061.1A 2018-09-24 2019-09-24 用于批量移除数据库中的记录的系统和方法 Active CN112912868B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/140,523 US10963454B2 (en) 2018-09-24 2018-09-24 System and method for bulk removal of records in a database
US16/140,523 2018-09-24
PCT/US2019/052733 WO2020068856A1 (en) 2018-09-24 2019-09-24 System and method for bulk removal of records in a database

Publications (2)

Publication Number Publication Date
CN112912868A true CN112912868A (zh) 2021-06-04
CN112912868B CN112912868B (zh) 2024-06-28

Family

ID=68165797

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980051061.1A Active CN112912868B (zh) 2018-09-24 2019-09-24 用于批量移除数据库中的记录的系统和方法

Country Status (5)

Country Link
US (1) US10963454B2 (zh)
EP (1) EP3814930B1 (zh)
JP (1) JP7507142B2 (zh)
CN (1) CN112912868B (zh)
WO (1) WO2020068856A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112740198A (zh) * 2018-09-24 2021-04-30 易享信息技术有限公司 用于在数据库中提早移除墓碑记录的系统和方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132457B2 (en) 2019-03-21 2021-09-28 Microsoft Technology Licensing, Llc Editing using secure temporary session-based permission model in a file storage system
US11321294B2 (en) 2019-09-09 2022-05-03 Salesforce.Com, Inc. Database index repair
US11314728B1 (en) * 2019-11-25 2022-04-26 Amazon Technologies, Inc. Range deletes on a distributed database
US11762913B2 (en) * 2019-12-31 2023-09-19 Micron Technology, Inc. Cursor seek operations using deleted record spans
CN111596864A (zh) * 2020-05-22 2020-08-28 柏科数据技术(深圳)股份有限公司 一种数据延时删除的方法、装置、服务器及存储介质
US12013831B2 (en) 2021-01-29 2024-06-18 Salesforce, Inc. Index for multi-level data structures
US12019610B2 (en) * 2021-08-27 2024-06-25 Salesforce, Inc. Mechanisms for truncating tenant data
CN113836113A (zh) * 2021-09-26 2021-12-24 北京金山云网络技术有限公司 一种ddl操作同步方法、装置及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041594A1 (en) * 2004-08-18 2006-02-23 International Business Machines Corporation Delayed deletion of extended attributes
CN102024015A (zh) * 2009-09-18 2011-04-20 软件股份公司 用于批量删除数据库系统的数据记录的方法
EP2660735A1 (en) * 2012-04-30 2013-11-06 Sap Ag Deleting records in a multi-level storage architecture
US20140047040A1 (en) * 2012-08-08 2014-02-13 Kestutis Patiejunas Data storage application programming interface
CN105989195A (zh) * 2015-03-23 2016-10-05 国际商业机器公司 用于处理数据库数据的方法和系统
US20170315740A1 (en) * 2016-04-29 2017-11-02 Netapp, Inc. Technique for pacing and balancing processing of internal and external i/o requests in a storage system
US20170357687A1 (en) * 2016-06-08 2017-12-14 Brian J. Bulkowski Methods and systems of managing deletes in a database node of a nosql database
US20180260407A1 (en) * 2017-03-07 2018-09-13 Salesforce.Com, Inc. Predicate based data deletion

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100601610B1 (ko) * 1999-04-27 2006-07-14 삼성전자주식회사 데이터 열의 임시 삭제방법, 탐색방법, 복원방법, 영구 삭제방법과 임시 삭제에 의해 분리된 데이터 열들을 복원하기 위한부가 정보를 저장하는 기록 매체
JP3858648B2 (ja) * 2001-09-12 2006-12-20 日本電気株式会社 データ格納領域管理方法および装置
US20040019589A1 (en) * 2002-07-25 2004-01-29 Basrur Rajesh G. Driver for mapping standard database queries and commands to markup language documents
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US8788788B2 (en) * 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US9400816B1 (en) * 2013-02-28 2016-07-26 Google Inc. System for indexing collections of structured objects that provides strong multiversioning semantics
US9904538B2 (en) 2015-08-24 2018-02-27 International Business Machines Corporation Maintenance of multi-tenant software programs
US10496283B2 (en) * 2016-01-22 2019-12-03 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system
JP6181247B1 (ja) * 2016-07-01 2017-08-16 株式会社東芝 データベース管理装置、データベース管理方法、およびデータベース管理プログラム
US10241896B2 (en) 2016-11-08 2019-03-26 Salesforce, Inc. Formation and manipulation of test data in a database system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041594A1 (en) * 2004-08-18 2006-02-23 International Business Machines Corporation Delayed deletion of extended attributes
CN102024015A (zh) * 2009-09-18 2011-04-20 软件股份公司 用于批量删除数据库系统的数据记录的方法
EP2660735A1 (en) * 2012-04-30 2013-11-06 Sap Ag Deleting records in a multi-level storage architecture
US20140047040A1 (en) * 2012-08-08 2014-02-13 Kestutis Patiejunas Data storage application programming interface
CN105989195A (zh) * 2015-03-23 2016-10-05 国际商业机器公司 用于处理数据库数据的方法和系统
US20170315740A1 (en) * 2016-04-29 2017-11-02 Netapp, Inc. Technique for pacing and balancing processing of internal and external i/o requests in a storage system
US20170357687A1 (en) * 2016-06-08 2017-12-14 Brian J. Bulkowski Methods and systems of managing deletes in a database node of a nosql database
US20180260407A1 (en) * 2017-03-07 2018-09-13 Salesforce.Com, Inc. Predicate based data deletion

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TIMO LILJA等: "Online Bulk Deletion", 2007 IEEE 23RD INTERNATIONAL CONFERENCE ON DATA ENGINEERING, pages 956 - 965 *
王洋洋;韦皓诚;柴云鹏;: "基于SSD-SMR混合存储的LSM树键值存储系统的性能优化", 计算机科学, no. 07, pages 67 - 71 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112740198A (zh) * 2018-09-24 2021-04-30 易享信息技术有限公司 用于在数据库中提早移除墓碑记录的系统和方法
CN112740198B (zh) * 2018-09-24 2024-09-03 硕动力公司 用于在数据库中提早移除墓碑记录的系统和方法

Also Published As

Publication number Publication date
US10963454B2 (en) 2021-03-30
JP2022500723A (ja) 2022-01-04
US20200097558A1 (en) 2020-03-26
WO2020068856A1 (en) 2020-04-02
EP3814930B1 (en) 2023-11-01
JP7507142B2 (ja) 2024-06-27
EP3814930A1 (en) 2021-05-05
CN112912868B (zh) 2024-06-28

Similar Documents

Publication Publication Date Title
CN112912868B (zh) 用于批量移除数据库中的记录的系统和方法
CN112740198B (zh) 用于在数据库中提早移除墓碑记录的系统和方法
US11797498B2 (en) Systems and methods of database tenant migration
US10754835B2 (en) High-efficiency deduplication module of a database-management system
US9710501B2 (en) Enhanced performance for large versioned databases
US7228299B1 (en) System and method for performing file lookups based on tags
US9342528B2 (en) Method and apparatus for tiered storage
KR102264119B1 (ko) CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치
US9430503B1 (en) Coalescing transactional same-block writes for virtual block maps
CN110799961A (zh) 在数据库中创建和删除租户的系统和方法
US9696919B1 (en) Source/copy reference tracking with block pointer sets
US11520818B2 (en) Method, apparatus and computer program product for managing metadata of storage object
US20240119037A1 (en) Techniques for adaptive independent compression of key and non-key portions of database rows in index organized tables (iots)
CN117076413B (zh) 一种支持多协议互通的对象多版本存储系统

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
CB02 Change of applicant information

Address after: California, USA

Applicant after: Shuo Power Co.

Address before: California, USA

Applicant before: SALESFORCE.COM, Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant