CN116982034A - 分片数据库中的数据的软删除 - Google Patents
分片数据库中的数据的软删除 Download PDFInfo
- Publication number
- CN116982034A CN116982034A CN202280020334.8A CN202280020334A CN116982034A CN 116982034 A CN116982034 A CN 116982034A CN 202280020334 A CN202280020334 A CN 202280020334A CN 116982034 A CN116982034 A CN 116982034A
- Authority
- CN
- China
- Prior art keywords
- document
- soft
- query
- computer
- shard
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 107
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000004590 computer program Methods 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 90
- 230000008569 process Effects 0.000 claims description 77
- 238000003860 storage Methods 0.000 claims description 45
- 238000012217 deletion Methods 0.000 claims description 20
- 230000037430 deletion Effects 0.000 claims description 20
- 230000014759 maintenance of location Effects 0.000 claims description 14
- 238000005192 partition Methods 0.000 claims description 10
- 238000011084 recovery Methods 0.000 claims description 8
- 239000012634 fragment Substances 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 32
- 230000015654 memory Effects 0.000 description 31
- 230000006870 function Effects 0.000 description 16
- 238000010926 purge Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/328—Management therefor
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种用于分片数据库的方法、系统和计算机程序产品。方法包括接收从分片数据库的主分片中删除指定文档的请求。方法还包括将软删除文档插入到软删除分片,其中软删除文档标识指定文档,指定文档保留在主分片中。方法还包括从客户端应用接收查询,其中指定文档满足该查询。方法还包括阻止指定文档响应于查询而被返回,同时与指定文档相关联的软删除文档保持在软删除分片中。
Description
技术领域
本发明一般地涉及用于分片(sharded)数据库的方法、系统和计算机程序产品。更具体地,本发明涉及用于软删除分片数据库中的数据的方法、系统和计算机程序产品。
背景技术
现代数据库系统提供了快速信息存储、搜索和检索能力。然而,数字内容的量以指数速率增长,并且需要大量的存储系统来存储和管理内容。因此,现代数据库通常与收集、更新、分析或报告大数据集的计算机应用交互或是其一部分。
在这些数据集如此大并且对其访问的需求如此高以至于达到单个服务器的性能或存储阈值的情况下,数据可分布在多个服务器上以提供附加的性能和存储能力。这种分布式数据库系统中的每个段被称为“分片(shard)”。可根据被设计为分配用户负载并优化数据库系统的性能的策略来分配各个分片的功能。以这种方式分配或“分片”数据库可以克服性能和存储限制。
发明内容
说明性实施例提供了对分片数据库中的数据的软删除。实施例包括接收从分片数据库的主分片中删除指定文档的请求。实施例还包括将软删除文档插入到软删除分片,其中软删除文档标识保留在主分片中的指定文档。实施例还包括从客户端应用接收查询,其中指定文档满足该查询。实施例还包括阻止指定文档响应于查询而被返回,同时与指定文档相关联的软删除文档保持在软删除分片中。这个方面的其它实施例包括对应的计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序,每个被配置为执行实施例的动作。该实施例允许在没有对主分片的任何写入或删除动作并且没有对主分片的索引的任何改变的情况下对主要数据进行软删除和恢复,从而消除这样的耗时的过程,导致比先前的用于NoSQL数据库的软删除过程显著的性能改进。
在另一实施例中,实施例还包括接收将指定文档恢复到分片数据库的恢复请求,并且响应于恢复请求将指定文档恢复到分片数据库,其中恢复包括从软删除分片移除软删除文档。因此,实施例允许响应于恢复请求而恢复软删除的数据,从而为已经习惯于具有撤销或恢复数据的能力的终端用户提供预期的功能并避免昂贵的数据丢失。
在另一实施例中,实施例还包括检测从接收删除指定文档的请求以来经过的时间量达到规定的保留期(retention period),并且执行用于从分片数据库中清除指定文档的硬删除过程。因此,实施例允许一段时间来恢复数据,并且在该段时间之后永久地移除这些数据,以防止不需要的数据消耗数据库资源。
实施例包括计算机可用程序产品。计算机可用程序产品包括计算机可读存储介质和存储在存储介质上的程序指令。
实施例包括计算机系统。计算机系统包括处理器、计算机可读存储器、计算机可读存储介质以及存储在存储介质上以供处理器经由存储器执行的程序指令。
附图说明
在所附权利要求中阐述了被认为是本发明的特性的新颖特征。然而,通过参考以下结合附图对说明性实施例的详细描述,可最好地理解本发明本身及其优选使用模式、进一步的目的和优点,其中:
图1描绘了可实现说明性实施例的数据处理系统的网络的框图;
图2描绘了可实现说明性实施例的数据处理系统的框图;
图3描绘了根据说明性实施例的示例分片系统的框图;
图4描绘了根据说明性实施例的分片数据库的框图;
图5描绘了根据说明性实施例的分片数据库的框图;
图6描绘了根据说明性实施例的示例分片数据库的框图;
图7描绘了根据说明性实施例的示例分片数据库的框图;
图8描绘了根据说明性实施例的示例分片数据库的框图;
图9描绘了根据说明性实施例的示例分片数据库的框图;
图10描绘了根据说明性实施例的SDS索引建立过程的时间线进程的框图;
图11描绘了根据说明性实施例的用于软删除分片数据库中的数据的示例过程的流程图;
图12A描绘了根据说明性实施例的用于软删除分片数据库中的数据的示例过程的流程图的第一部分;以及
图12B描绘了根据说明性实施例的用于软删除分片数据库中的数据的示例过程的流程图的第二部分。
具体实施方式
现代数据库包括跨平台面向文档的NoSQL(不仅是结构化查询语言)数据库。这种数据库避开传统的基于表的关系数据库结构以有利于分片。当活跃增长的数据库在单个服务器上运行时,其将最终达到服务器可提供的计算资源的极限。这些极限包括用于存储数据的容量限制以及用于处理查询和其它数据库命令的处理限制。
分片涉及将数据分成存储在分开的服务器上的两个或更多个数据子集。这样的数据子集在本文中被称为“主分片”或“主要数据分片”。这种分布式架构可以支持具有非常大的数据集和高吞吐量操作的部署。因此,分片有助于实现用于在相应服务器上的多个主分片中存储大量数据的可缩放设置。
分片数据库还可以包括数据复制机制,其中数据库创建保持相同数据的每个分片的拷贝集。在副本集中的任何时间点,仅一个分片充当主分片,所有其他副本分片是次要分片。所有写和读操作都转到主分片,然后被均匀地(如果需要)分配到集合中的其他次要分片。
尽管分片在可扩展性方面提供了优点,但是问题在于,从主分片添加或删除数据是相对耗时的过程,这不利地影响数据库性能。当数据被添加到主分片或从主分片删除时,必须重建主要索引以更新索引记录来反映该改变。索引被用于访问数据库,并且大型数据库可能需要若干大型索引,这些大型索引需要被维护以高效地访问数据库。当数据库改变时,通常需要维护或更新索引。这种重新索引可能花费很长时间,并且使得直到完成索引更新前索引不能用于查询。
过去在分片数据库中实现软删除过程的尝试使这个问题复杂化。当数据被软删除时,数据不可用于选择或使用,但是可以使用数据库或服务器的普通和可用功能来恢复。相反,在没有软删除的情况下,数据总是被硬删除,这意味着在没有额外努力(其可能有效或无效)的情况下数据永久性地消失并且不能被恢复。
数据丢失可能是非常昂贵的,并且对于已经习惯于具有撤销或恢复数据的能力的终端用户来说是令人沮丧的。因此,软删除功能的实现对于防止数据丢失以及向用户提供期望的功能是重要的。然而,软删除功能的实现是系统专用的实践,其对某些类型的系统提出了独特的挑战,而对其他类型的系统则不成问题。例如,过去在面向文档的NoSQL数据库中实现软删除功能的努力负面地影响了数据库性能。其原因在于,过去的软删除过程涉及将标志或其它此类数据写入到主分片以将“软删除的”数据标记为不可用,并且当“软删除的”数据被清除时,“软删除的”数据和标志两者都被删除;另外,对于这些写入和删除操作中的每一个,对分片索引执行索引更新操作。然而,在时间和处理方面对于数据库执行写入、删除和索引更新操作是昂贵的。因此,这些过去类型的软删除技术存在一个技术问题,即它们需要若干额外的操作,这些操作是昂贵的,并且为了可恢复数据的益处而需要降低的性能的不期望的折衷。
为了解决这些技术问题,所公开的实施例引入了附加分片(被称为软删除分片(SDS)),其存储引用软删除主要数据的软删除文档(SDD)。与无论主分片数据的状态如何都保持来自主分片的数据的副本的次要分片不同,SDS仅存储与已被软删除但尚未被清除的主分片文档相关联的文档。在此期间,所引用的主文档保持在主分片中,除非并且直到其被清除,即,硬删除。如果软删除数据被恢复而不是被清除,则恢复涉及从SDS中删除相关的SDD。这允许主数据的软删除和恢复,而无需主分片上的任何写入或删除动作,并且无需对主分片的索引的任何改变。消除这些耗时的过程导致比先前用于NoSQL数据库的软删除过程显著的性能改进。
具有软删除的分片数据库应用的说明性实施例接收从分片数据库的主分片中删除指定文档的请求,并且作为响应,将标识指定文档的SDD插入SDS中,将指定文档留在主分片中。此后,如果应用从客户端应用接收查询,使得指定文档满足查询,则应用阻止指定文档与查询结果一起返回,只要与指定文档相关联的SDD保留在SDS中。
在说明性实施例中,数据库应用对NoSQL数据库执行操作。实施例包括宽范围的技术和架构(包含NoSQL)中的任一种。例如,在一些实施例中,NoSQL数据库是面向文档的数据库或文档存储,其以文档的形式存储数据,其中每个文档具有唯一标识符(UID),即向数据提供一定程度的结构的某种元数据,该数据可以根据各种已知数据格式中的任一种来格式化。并且文档数据以任何期望的格式存储。在一些实施例中,多个数据库服务器共同提供NoSQL数据库的服务。因此,在一些实施例中,NoSQL数据库包括非关系且主要是分布式的数据库系统,其允许对极高容量、完全不同的数据类型的快速、特别组织和分析。在一些实施例中,NoSQL数据库包括被称为云数据库、非关系数据库、大数据数据库和/或用于NoSQL数据库的无数其它术语的数据库。
SDD的实施例可以以各种不同方式中的任何方式来引用指定文档。例如,在一些实施例中,SDD通过包括指定文档的唯一标识符(UID)来标识该指定文档。可替换地或附加地,在一些实施例中,SDD包括指向指定文档的指针。
在一些实施例中,如果应用从客户端应用接收查询,则数据库应用针对主数据分片执行查询并且针对SDS执行查询。应用通过检测从针对SDS的查询返回SDD来识别来自主分片的查询结果将包括被软删除的文档。应用可通过评估SDD来标识被软删除的文档。每个SDD从主分片标识唯一的软删除文档,因此应用使用该信息来从主分片返回的查询结果中定位软删除文档。例如,在一些实施例中,SDD包括主分片中软删除文档的UID,并且应用通过在查询结果中定位具有从针对SDS的查询返回的SDD的UID的文档来从查询结果中定位软删除文档。在应用在查询结果中定位到软删除的文档后,应用从查询结果中移除该软删除的文档。由于查询结果不包括来自主分片的软删除文档,因此查询结果通过排除软删除文档而如所期望的呈现。
在说明性实施例中,应用建立索引或多个SDS索引,以便于对SDS的查询。在一些实施例中,索引包括将密钥与对应SDD的位置相关联。在一些实施例中,数据库应用为主分片建立一个或多个索引。
取决于实现特定的考虑,存在可以由应用使用的许多不同类型的索引。例如,对于非结构化数据或人类语言数据,可使用具有将文本团块转换成索引条目的语言分析器的全文本索引。对于地理空间或地理时间数据,可以在多维空间中索引点、多边形和其它形状。在一些实施例中,应用建立一个或多个SDS索引,以匹配针对主分片存在的索引的数量和类型。这允许对SDS的查询与对主分片的查询一致。
在说明性实施例中,当应用执行针对SDS的查询时,应用首先检查SDS索引的状态以确定SDS索引是完整的还是非完整的。如果应用确定SDS的索引是完整的,则应用使用SDS索引执行SDS的查询。否则,如果应用确定SDS的索引是非完整的,则应用使用全表扫描(full table scan)来执行SDS的查询。
在说明性实施例中,在主分片中的文档被软删除后,其保持被软删除并且在规定的保留期内可被恢复。在一些实施例中,该规定的保留期是由用户设置的时段。应用周期性地检查软删除文档被软删除的时间量等于或大于规定的保留期。在软删除文档被软删除达规定的保留期后,应用从主分片清除软删除文档。在一些实施例中,应用通过对指定文档执行硬删除过程来从分片数据库清除软删除文档。在一些这样的实施例中,硬删除过程包括从分片数据库的主分片中删除指定文档,随后更新主分片的索引,随后更新SDS的软删除索引,随后删除标识指定文档的SDD。
为了描述的清楚起见,并且不暗示对其的任何限制,使用一些示例配置来描述说明性实施例。根据本公开,本领域的普通技术人员能够构思出用于实现所述目的所述构造的许多变更、适应和修改,并且这些都被认为在示例性实施例的范围内。
此外,在附图和说明性实施例中使用了数据处理环境的简化图。在实际计算环境中,可能存在未在此示出或描述的附加结构或组件,或者与所示出的结构或组件不同但用于与在此描述的功能类似的结构或组件,而不脱离说明性实施例的范围。
此外,仅作为示例,关于具体的实际或假设的组件来描述说明性实施例。由各种说明性实施例描述的步骤可以适于提供对由例如机器学习分类器模型做出的决定的解释。
这些和其它类似的人为因素的任何特定表现形式不是要限制本发明。可以在示例性实施例的范围内选择这些和其它类似产物的任何适当表现。
本公开中的示例仅用于清楚描述,而不是限制于说明性实施例。本文列出的任何优点仅是示例,并且不旨在限制说明性实施例。通过特定的说明性实施例可以实现附加的或不同的优点。此外,特定说明性实施例可具有上文所列优点中的一些、全部或不具有上文所列优点。
此外,可以针对任何类型的数据、数据源或通过数据网络对数据源的访问来实现说明性实施例。在本发明的范围内,任何类型的数据存储设备可以在本地在数据处理系统处或通过数据网络向本发明的实施例提供数据。在使用移动设备描述实施例的情况下,在说明性实施例的范围内,适于与移动设备一起使用的任何类型的数据存储设备可以在移动设备处本地地或者通过数据网络向这样的实施例提供数据。
使用特定代码、对比解释、计算机可读存储介质、高级特征、历史数据、设计、架构、协议、布局、示意图和工具来描述说明性实施例,这些仅作为示例,而不是对说明性实施例的限制。此外,为了描述的清楚,在一些实例中使用特定软件、工具和数据处理环境仅作为示例来描述说明性实施例。说明性实施例可以结合其他相当或类似目的结构、系统、应用或架构来使用。例如,在本发明的范围内,其他相当移动设备、结构、系统、应用或其架构可以与本发明的这种实施例结合使用。说明性实施例可以以硬件、软件或其组合来实现。
本公开中的示例仅用于清楚描述,而不是限制于说明性实施例。从本公开可以想到附加的数据、操作、动作、任务、活动和操纵,并且在说明性实施例的范围内可以设想这些附加的数据、操作、动作、任务、活动和操纵。
本文列出的任何优点仅是示例,并且不旨在限制说明性实施例。通过特定的说明性实施例可以实现附加的或不同的优点。此外,特定说明性实施例可具有上文所列优点中的一些、全部或不具有上文所列优点。
参考附图,并且特别参考图1和2,这些附图是其中可以实现说明性实施例的数据处理环境的示例图。图1和图2仅仅是示例,并不旨在断言或暗示关于其中可以实现不同实施例的环境的任何限制。特定实现可以基于以下描述对所描绘的环境进行许多修改。
图1描绘了其中可以实现说明性实施例的数据处理系统的网络的框图。数据处理环境100是其中可以实现说明性实施例的计算机网络。数据处理环境100包括网络102。网络102是用于在数据处理环境100内连接在一起的各种设备和计算机之间提供通信链路的介质。网络102可包括诸如有线、无线通信链路或光纤电缆的连接。
客户端或服务器仅是连接到网络102的某些数据处理系统的示例角色,并且不旨在排除这些数据处理系统的其他配置或角色。数据处理系统104耦合到网络102。软件应用可以在数据处理环境100中的任何数据处理系统上执行。被描述为在图1中的处理系统104中执行的任何软件应用可被配置为以类似的方式在另一数据处理系统中执行。在图1中的数据处理系统104中存储或产生的任何数据或信息可被配置为以类似的方式在另一数据处理系统中存储或产生。诸如数据处理系统104的数据处理系统可包含数据,并且可具有在其上执行计算处理的软件应用或软件工具。在实施例中,数据处理系统104包括存储器124,其包括可被配置为实现本文描述的根据一个或多个实施例的一个或多个数据处理器功能的应用105A。
服务器106与存储单元108一起耦合到网络102。存储单元108包括数据库109,其被配置为存储如本文关于各种实施例所描述的数据,例如图像数据和属性数据。服务器106是常规的数据处理系统。在实施例中,服务器106包括流处理应用105B的处理元件,其可被配置为实现本文描述的根据一个或多个实施例的处理器功能中的一个或多个。
客户端110、112和114也耦合到网络102。诸如服务器106或客户端110、112或114的常规数据处理系统可包含数据,并可具有在其上执行常规计算过程的软件应用或软件工具。
仅作为示例,而不暗示对这样的架构的任何限制,图1描绘了可在实施例的示例实现中使用的某些组件。例如,服务器106和客户端110、112、114被描绘为服务器,而客户端仅作为示例,并不暗示对客户端-服务器架构的限制。作为另一示例,实施例可以分布在若干数据处理系统和如图所示的数据网络上,而另一实施例可以在说明性实施例的范围内的单个数据处理系统上实现。常规数据处理系统106、110、112和114还表示适于实现实施例的集群、分区和其它配置中的示例节点。
设备132是本文描述的常规计算设备的示例。例如,设备132可采取智能电话、平板计算机、膝上型计算机、固定或便携式形式的客户端110、可穿戴计算设备或任何其他合适的设备的形式。在实施例中,设备132向服务器106发送请求以由流处理应用105B执行一个或多个数据处理任务,诸如发起本文描述的过程。被描述为在图1中的另一常规数据处理系统中执行的任何软件应用可被配置为以类似的方式在设备132中执行。在图1中的另一常规数据处理系统中存储或产生的任何数据或信息可以被配置为以类似的方式在设备132中存储或产生。
服务器106、存储单元108、数据处理系统104、客户端110、112和114以及设备132可以使用有线连接、无线通信协议或其他合适的数据连接耦合到网络102。客户端110、112和114可以是例如个人计算机或网络计算机。
在所描述的示例中,服务器106可以向客户端110、112和114提供数据,例如引导文件、操作系统映像和应用。在该示例中,客户端110、112和114可以是服务器106的客户端。客户端110、112、114或其某种组合可以包括它们自己的数据、引导文件、操作系统映像和应用。数据处理环境100可包括未示出的附加服务器、客户端和其他设备。
在所描绘的示例中,存储器124可以向处理器122提供数据,诸如引导文件、操作系统映像和应用。处理器122可以包括其自己的数据、引导文件、操作系统映像和应用。数据处理环境100可包括未示出的附加存储器、处理器和其他设备。
在所描述的示例中,数据处理环境100可以是因特网。网络102可以表示使用传输控制协议/网际协议(TCP/IP)和其它协议来彼此通信的网络和网关的集合。在因特网的核心是主节点或主机计算机之间的数据通信链路的主干,包括路由数据和消息的数千个商业、政府、教育和其它计算机系统。当然,数据处理环境100也可以实现为许多不同类型的网络,例如内联网、局域网(LAN)或广域网(WAN)。图1旨在作为示例,而不是作为对不同说明性实施例的架构限制。
除了其他用途之外,数据处理环境100可用于实现其中可以实现示例性实施例的客户端-服务器环境。客户端-服务器环境使得软件应用和数据能够分布在网络上,以使得应用通过使用常规客户端数据处理系统和常规服务器数据处理系统之间的交互性来工作。数据处理环境100还可采用面向服务的架构,其中分布在网络上的可互操作的软件组件可以被打包在一起作为一致的业务应用。数据处理环境100还可采取云的形式,并且采用服务递送的云计算模型以实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。
参考图2,该图描绘了可以实现说明性实施例的数据处理系统的框图。数据处理系统200是常规计算机的示例,诸如图1中的数据处理系统104、服务器106或客户端110、112和114,或者另一类型的设备,实现这些过程的计算机可用程序代码或指令可以位于其中。
数据处理系统200还代表常规数据处理系统或其中的配置,例如图1中的常规数据处理系统132,其中可以放置实现示例性实施例的过程的计算机可用程序代码或指令。数据处理系统200仅作为示例被描述为计算机,而不限于此。在不脱离本文描述的数据处理系统200的操作和功能的一般描述的情况下,以其他设备(诸如图1中的设备132)的形式的实现可以诸如通过添加触摸接口来修改数据处理系统200,并且甚至从数据处理系统200中去除某些描绘的组件。
在所描述的示例中,数据处理系统200采用集线器架构,包括北桥和存储器控制器集线器(NB/MCH)202以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208和图形处理器210耦合到北桥和存储器控制器集线器(NB/MCH)202。处理单元206可包含一个或多个处理器,并且可使用一个或多个异构处理器系统来实现。处理单元206可以是多核处理器。在某些实现中,图形处理器210可以通过加速图形端口(AGP)耦合到NB/MCH 202。
在所描绘的示例中,局域网(LAN)适配器212耦合到南桥和I/O控制器集线器(SB/ICH)204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)和其它端口232、以及PCI/PCIe设备234通过总线238耦合到南桥和I/O控制器集线器204。硬盘驱动器(HDD)或固态驱动器(SSD)226和CD-ROM 230通过总线240耦合到南桥和I/O控制器集线器204。PCI/PCIe设备234可包括例如以太网适配器、附加卡和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM 224可以是例如闪存二进制输入/输出系统(BIOS)。硬盘驱动器226和CD-ROM 230可使用例如集成驱动电子(IDE)、串行高级技术附件(SATA)接口或诸如外部SATA(eSATA)和微SATA(mSATA)的变体。超级I/O(SIO)设备236可以通过总线238耦合到南桥和I/O控制器集线器(SB/ICH)204。
存储器(例如主存储器208、ROM 224或闪存(未示出))是计算机可用存储设备的一些示例。硬盘驱动器或固态驱动器226、CD-ROM 230和其它类似的可用设备是包括计算机可用存储介质的计算机可用存储设备的一些示例。
操作系统在处理单元206上运行。操作系统协调并提供对图2中的数据处理系统200内的各种组件的控制。操作系统可以是用于任何类型的计算平台的商业上可用的操作系统,包括但不限于服务器系统、个人计算机和移动设备。面向对象或其它类型的编程系统可以与操作系统一起操作,并且提供从在数据处理系统200上执行的程序或应用对操作系统的调用。
用于操作系统、面向对象的编程系统以及应用或程序(诸如图1中的应用105)的指令位于存储设备上,诸如以硬盘驱动器226上的代码226A的形式,并且可以被加载到一个或多个存储器(诸如主存储器208)中的至少一个中,以便由处理单元206执行。说明性实施例的过程可以由处理单元206使用计算机实现的指令来执行,该指令可以位于存储器中,例如主存储器208、只读存储器224,或者位于一个或多个外围设备中。
此外,在一种情况下,可通过网络201A从远程系统201B下载代码226A,其中类似的代码201C存储在存储设备201D上。在另一种情况下,代码226A可通过网络201A下载到远程系统201B,其中下载的代码201C存储在存储设备201D上。
图1-2中的硬件可根据实现而变化。除了图1-2中描述的硬件之外,或者作为其替代,可以使用其它内部硬件或外围设备,诸如闪存、等效的非易失性存储器或光盘驱动器等。
在一些说明性示例中,数据处理系统200可以是个人数字助理(PDA),其通常配置有闪存以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。总线系统可包括一个或多个总线,例如系统总线、I/O总线和PCI总线。当然,总线系统可使用任何类型的通信结构或架构来实现,该通信结构或架构提供在附接到该结构或架构的不同组件或设备之间的数据传输。
通信单元可包括一个或多个用于发送和接收数据的设备,例如调制解调器或网络适配器。存储器可以是例如主存储器208或缓存,诸如在北桥和存储器控制器集线器202中找到的缓存。处理单元可包括一个或多个处理器或CPU。
图1-2中所描绘的示例和上述示例并非旨在暗示架构限制。例如,数据处理系统200除了采取移动或可穿戴设备的形式之外,还可以是平板计算机、膝上型计算机或电话设备。
在将计算机或数据处理系统描述为虚拟机、虚拟设备或虚拟组件的情况下,虚拟机、虚拟设备或虚拟组件使用数据处理系统200中所描绘的一些或所有组件的虚拟化表现来以数据处理系统200的方式操作。例如,在虚拟机、虚拟设备或虚拟组件中,处理单元206被表现为主机数据处理系统中可用的所有或一些数量的硬件处理单元206的虚拟化实例,主存储器208被表现为主机数据处理系统中可用的主存储器208的所有或一些部分的虚拟化实例,并且盘226被表现为主机数据处理系统中可用的盘226的所有或一些部分的虚拟化实例。在这种情况下,由数据处理系统200表示主机数据处理系统。
参考图3,该图描绘了根据说明性实施例的示例分片系统300的框图。在所示的实施例中,分片系统300包括分片数据库302,其中一个或多个客户端应用322可访问分布在多个主数据库分片312、314、316和318之间的数据项。在实施例中,分片数据库302是图1的数据库109的示例,并且客户端应用322是图1的应用105A/105B的示例。
分片系统300包括客户端应用322和主数据库分片312、314、316和318。系统300中的客户端应用322和主数据库分片312、314、316和318的数量可以变化。在一些实施例中,主数据库分片312、314、316和318中的每一个是不需要知道系统300内的任何其他分片的单独且独立的数据库。在一些这样的实施例中,例如,主数据库分片312、314、316和318中的每一个包括单独的数据库服务器和关系数据库。在一些实施例中,存在两个或更多个客户端应用322,其在独立于客户端322中的另一个操作的单独计算系统上。在一些此类实施例中,客户端322中的每一个执行利用散列函数的软件程序的单独实例,以便基于特定数据项的主密钥来计算主数据库分片312、314、316和318中特定数据项被存储或将被存储在其上的特定分片的标识。在一些实施例中,这样的数据项是具有用于相似属性集的不同值的单独记录。
通常,为了执行与已经存储在主数据库分片312、314、316和318中的特定一个上的数据项相关的操作,客户端应用322通过向数据库302发出数据库命令来执行与数据项相关的一个或多个指令。例如,该指令可包括由一个或多个主查询引擎308处理的查询命令或由删除管理器304处理的删除命令。在一些实施例中,数据库302包括针对每个主数据库分片312-318的主查询引擎308。说明性实施例还允许由恢复管理器324处理的恢复命令,该恢复命令允许在删除数据的指定时间段内恢复被删除的数据。
根据本发明的实施例,数据库302能够恢复删除的数据,因为软删除分片(SDS)320被包括在系统300中,并且存储适应从主数据库分片312、314、316和318删除的文档的软删除状态的软删除文档。在指定的时间段之后,作为用于清除被删除的数据的硬删除过程的一部分,清除管理器306从SDS 320中移除软删除文档。在指定的时间段期间,SDS查询引擎310执行与由(多个)主查询引擎308执行的对主数据库分片312、314、316和318的每个查询相对应的SDS 320的查询。如果SDS查询引擎310在SDS 320中找到文档,因为针对主数据库分片312、314、316和318的集合以及SDS 320执行相同的查询,并且因为SDS 320中的文档本质上是来自主数据库分片312、314、316和318的被软删除的文档的副本或对被软删除的文档的引用,这意味着如果查询与来自SDS 320的文档匹配,则相同的查询也将与来自主数据库分片312、314、316和318的被软删除的文档匹配。因此,数据库302从主分片查询结果中移除作为查询结果返回的由SDS 320文档标识的查询结果。因为不期望在查询结果中包括被删除的文档,所以该动作从搜索结果中移除软删除的文档。
参考图4,该图描绘了根据说明性实施例的分片数据库400的框图。在实施例中,分片数据库400是图3的数据库302或图1的数据库109的示例。
在所示实施例中,数据库400包括删除管理器402、清除管理器404、查询减法器406、查询管理器408、主数据库分片410、412和414、SDS 416、索引管理器418、索引引擎420、422和424、索引同步器426、SDS索引428、430和432、查询聚集器434、主查询引擎436、438和440、SDS查询引擎442和恢复管理器444。在一些实施例中,本文描述的功能分布在多个系统中,多个系统可包括基于软件和/或硬件的系统(例如专用集成电路(ASIC)、计算机程序或智能电话应用)的组合。在实施例中,删除管理器402是删除管理器304的示例,清除管理器404是清除管理器306的示例,主数据库分片410、412和414是主数据库分片312、314、316和318的示例,SDS 416是SDS 320的示例,主查询引擎436、438和440是主查询引擎308的示例,SDS查询引擎442是SDS查询引擎310的示例,并且恢复管理器444是恢复管理器324的示例。
在所示的实施例中,索引管理器418通过调用相应的索引引擎420、422和424来将索引请求分派到不同的主分片410、412和414。索引引擎420、422和424执行索引请求。针对每个主分片410、412和414示出了一个索引引擎420、422和424,而替代实施例针对每个主分片包括多个索引引擎。在一些这样的实施例中,数据库400建立主分片410、412和414的一个或多个索引。取决于实现特定的考虑,存在可以由应用使用的许多不同类型的索引。例如,对于非结构化数据或人类语言数据,可使用具有将文本团块转换成索引条目的语言分析器的全文本索引。对于地理空间或地理时间数据,可以在多维空间中索引点、多边形和其它形状。在一些这样的实施例中,数据库400包括用于相应索引类型的不同类型的索引引擎。
在一些实施例中,索引同步器426异步地构建和更新用于SDS 416的一个或多个SDS索引428、430和432,以匹配针对主分片410、412和414中的每一个存在的索引的数量和类型。这允许对SDS 416的查询与对主分片410、412和414的查询一致。
在一些实施例中,如果查询管理器408从客户端应用接收查询,则查询管理器408指示主查询引擎436、438和440针对主数据分片410、412和414执行查询,并且还指示SDS查询引擎442针对SDS 416执行查询。查询聚集器434从主查询引擎436、438和440中的每一个接收查询结果,并执行结果聚集以将结果组合成聚集结果集。
查询减法器406接收SDS查询引擎442所找到的任何查询结果。查询减法器406通过检测SDD已从针对SDS 416的查询返回来识别来自主分片410、412和414的聚集结果集包括被软删除的文档。查询减法器406能够通过对SDD求值来从聚集结果集中的文档中识别被软删除的文档。每个SDD从主分片410、412和414中识别唯一的软删除文档,因此查询减法器406使用该信息来从聚集结果集中定位软删除文档。
例如,在一些实施例中,SDD包括主分片410、412和414中的软删除文档的UID,并且查询减法器406通过在查询结果中定位具有从针对SDS 416的查询返回的SDD的UID的文档来从聚集结果集中定位软删除文档。在查询减法器406定位到查询结果中的软删除文档后,查询减法器406从查询结果集中移除该软删除文档。由于查询结果集不包括来自主分片410、412和414的软删除文档,因此通过排除软删除文档,查询结果集如所期望的呈现。清除管理器:对主分片和软删除分片中的主数据和索引进行硬删除。
在说明性实施例中,在主分片410、412和414中的文档被软删除后,其保持被软删除并且可用于由恢复管理器444在规定的保留期内恢复。在一些实施例中,该规定的保留期是由用户设置的时间段。应用周期性地检查被软删除的时间量等于或大于规定的保留期的软删除文档。在软删除文档被软删除达规定的保留期后,清除管理器404从主分片410、412和414清除软删除文档。在一些实施例中,清除管理器404通过对来自分片数据库400的指定文档执行硬删除过程来清除软删除文档。在一些这样的实施例中,硬删除过程包括从分片数据库400的主分片410、412或414删除指定文档,随后由主分片410、412和414的索引引擎420、422和424更新索引,随后更新SDS 416的软删除索引428、430和432,随后删除标识指定文档的SDD。
参考图5,该图描绘了根据说明性实施例的分片数据库500的框图。在实施例中,分片数据库500是图4的分片数据库400、图3的数据库302或图1的数据库109的示例。
在所示实施例中,数据库500包括主分片502-516和SDS 518。主分片502-516各自包括相等数量的可寻址数据存储。在所示实施例中,主分片502-516中的每一个包括0x1F地址,然而该量可以变化。期望在跨主要数据分片502-516的数据分布方面保持平衡。其原因之一是如果分片变得不平衡(例如,主分片502接近容量而主分片504接近空),则RAM和磁盘空间在一个主分片上利用不足而在另一个主分片上利用过度。一些实施例试图将主要索引连同最近使用的数据一起保存在RAM中以加速性能。在不平衡的情况下,用于过载分片的RAM开始从RAM逐出数据集项或甚至索引。因此,期望在主分片502-516之间保持平衡的数据级别。
另一方面,SDS 518在独特的环境下存储数据(仅软删除数据)。因此,在一些实施例中,数据库500包括分片平衡以在主分片502-516上均匀地分布数据,但是从平衡中排除SDS 518。类似地,在一些实施例中,分片502-516包括主要和次要数据分片(例如,在次要分片用于数据复制的情况下)。在一些这样的实施例中,执行分片平衡以在主分片和次分片502-516上均匀地分配数据,但从分片平衡中排除SDS 518。
参考图6,该图描绘了根据说明性实施例的示例分片数据库600的框图。更具体地,图6示出了分片数据库600中的文档删除命令(DOCB)的效果。在特定实施例中,分片数据库600是图5的分片数据库500、图4的分片数据库400、图3的数据库302或图1的数据库109的示例。
在所示的实施例中,分片数据库600包括三个主分片:数据库分片A(DBSA)602、数据库分片B(DBSB)604和数据库分片C(DBSC)606。分片数据库600接收删除命令以删除DBSB604中的DOCB。这在图6中通过示出具有删除线的文档DOCB来指示,删除线指示作为删除命令的结果,DOCB被软删除。然而,DBSB 604中DOCB的删除线仅是象征性的,并且用于说明目的,因为DBSB 604中的实际文档DOCB不被删除或恢复命令改变。同样,作为删除命令的结果,DOCB的SDD被添加到SDS 608。接着,更新SDS索引以反映添加到SDS 608的DOCB的SDD。当DOCB处于软删除状态时,如果查询管理器610接收DOCB满足的查询,则将该DOCB作为查询结果与其他查询结果一起返回。然而,由于SDS 608中存在DOCB的SDD,因此去除DOCB同时仍在预结果中。因此,最终结果612排除软删除文档DOCB。
参考图7,该图描绘了根据说明性实施例的示例分片数据库700的框图。更具体地说,图7示出了用于先前软删除文档(DOCB)的恢复命令的效果。在特定实施例中,分片数据库700是图5的分片数据库500、图4的分片数据库400、图3的数据库302或图1的数据库109的示例。
在所示的实施例中,分片数据库700包括三个主分片:数据库分片A(DBSA)702、数据库分片B(DBSB)704和数据库分片C(DBSC)706。在DBSB 704中,文档DOCB被示出为具有断开的删除线,指示DOCB在先前被软删除之后被恢复。然而,DBSB 704中的DOCB的删除线仅是用于说明目的的符号,因为删除或恢复命令不改变DBSB 704 3中的实际文档DOCB。相反,由恢复命令引起的实际改变是针对SDS 708。作为恢复命令的结果,去除DOCB SDD和DOCB SDD的SDS索引。因此,对查询管理器710的返回DOCB的未来查询将在预结果和最终结果中包括DOCB。
参考图8,该图描绘了根据说明性实施例的示例分片数据库800的框图。更具体地,图8示出了分片数据库800中的软删除文档(DOCB)的查询命令的效果。在特定实施例中,分片数据库800是图5的分片数据库500、图4的分片数据库400、图3的数据库302或图1的数据库109的示例。
在所示的实施例中,分片数据库800包括三个主分片:数据库分片A(DBSA)802、数据库分片B(DBSB)804和数据库分片C(DBSC)806。在DBSB 804中,示出文档DOCB具有删除线,其指示DOCB被软删除。然而,DBSB 804中的DOCB的删除线仅是用于说明目的符号,因为删除或恢复命令不改变DBSB 804中的实际文档DOCB。因此,SDS 808包括DOCB的SDD,而DOCB处于软删除状态。当查询管理器810接收DOCB满足的查询时,DOCB作为查询结果与其他查询结果一起返回。然而,由于SDS 808中存在DOCB的SDD,因此DOCB被去除同时仍在预结果中。因此,最终结果812排除了软删除文档DOCB。
参考图9,该图描绘了根据说明性实施例的示例分片数据库900的框图。更具体地,图9示出了对先前软删除文档(DOCB)的硬删除或清除动作的效果。在特定实施例中,分片数据库900是图5的分片数据库500、图4的分片数据库400、图3的数据库302或图1的数据库109的示例。
在所示的实施例中,分片数据库900包括三个主分片:数据库分片A(DBSA)902、数据库分片B(DBSB)904和数据库分片C(DBSC)906。在DBSB 904中,文档DOCB被示出为带有删除线,指示清除管理器910在自DOCB被软删除起经过了规定的保留周期之后永久删除DOCB。接下来,清除管理器910更新主分片的索引以移除对DOCB.FIELD5的引用。接下来,清除管理器910更新SDS 908的软删除索引。最后,清除管理器910从SDS 908删除标识被清除的文档DOCB的SDD。
参考图10,该图描绘了根据说明性实施例的SDS索引建立过程的时间线进程的框图。在特定实施例中,图10中所示的过程由索引同步器1010(作为图4的索引同步器426的示例)执行。
在说明性实施例中,索引同步器1010在从T1跨越到T4的时间段上构建多个SDS索引1012、1014和1016以支持SDS的查询的高效执行。如果SDS索引1012、1014和1016没有完成(即,在T4之前),则数据库必须执行全表扫描,即,扫描SDS中的每个文档以选择匹配查询语句的SDD。如果SDS索引1012、1014和1016完成(即,在T4之后),则数据库使用索引1012、1014和1016来限制它将检查以选择匹配查询语句的SDD的数量。
在一些实施例中,索引同步器1010建立用于SDS的多个索引,其中每个索引是不同的索引类型。在所示的实施例中,索引同步器1010异步地构建索引1012、1014、1016。在时间T1开始,从索引状态1002,索引同步器1010构建SDS索引1012,其在时间T2完成到完成索引状态1004。在时间T2,从索引状态1004,索引同步器1010构建SDS索引1014,其在时间T3完成到完成索引状态1006。在时间T3,从索引状态1006,索引同步器1010构建SDS索引1016,其在时间T4完成到完成索引状态1008。在一些实施例中,索引同步器1010构建SDS索引1012、1014和1016以匹配针对主分片存在的索引的数量和类型。这允许对SDS的查询与对主分片的查询一致。
参考图11,该图描绘了根据说明性实施例的用于软删除分片数据库中的数据的示例过程1100的流程图。在一些实施例中,数据库302、分片数据库400、分片数据库500、分片数据库600、分片数据库700、分片数据库800或分片数据库900执行过程1100。
在实施例中,在框1102,过程接收从分片数据库的主分片删除指定文档的请求。接下来,在框1104,过程将软删除文档插入到软删除分片,其中软删除文档标识指定文档,其保留在主分片中。接下来,在框1106,过程从客户端应用接收第一查询,其中指定文档满足第一查询。接下来,在框1108,过程阻止响应于第一查询返回指定文档,而与指定文档相关联的软删除文档保留在软删除分片中。
参考图12A和12B,这些图描绘了根据说明性实施例的用于分片数据库中的数据的软删除的示例过程1200的流程图。在一些实施例中,数据库302、分片数据库400、分片数据库500、分片数据库600、分片数据库700、分片数据库800或分片数据库900执行过程1200。
在实施例中,在框1202,过程检查传入的数据库命令。接下来,在框1204,如果过程接收删除命令,则过程继续到框1206;如果过程接收恢复命令,则过程继续到框1210;如果过程接收查询命令,则过程继续到框1212;如果过程没有接收到命令,则过程继续到框1226。
如果过程接收删除命令,则在框1206,过程在软删除分片中创建标识由删除命令指定的文档的新的软删除文档。接下来,在框1209,过程更新软删除分片序列以反映新添加的软删除文档。
如果过程接收恢复命令,则在框1210,过程从软删除分片删除标识恢复请求中指定的文档的软删除文档。接下来,在框1208,过程更新软删除分片序列以反映新移除的软删除文档。
如果过程接收查询命令,则在框1212,过程在主分片中执行查询并聚集查询结果。接下来,在框1214,过程确定是否存在可用于软删除分片的完整索引;如果是,则过程继续到框1216,否则过程继续到框1218。在框1216,如果过程确定完整索引可用于SDS,则过程使用SDS索引在SDS中执行查询。另一方面,在框1218,如果过程确定完整索引不可用于SDS,则过程使用全表扫描在SDS中执行查询。在框1220,过程确定在框1216或框1218的查询是否返回结果。如果是,则过程继续到框1222;否则,过程继续到框1224。在框1222,由于针对主分片和SDS执行相同的查询,并且由于SDS中的文档实质上是来自被软删除的主分片的文档的副本,因此如果查询匹配来自SDS的文档,则查询也将匹配来自被软删除的主分片的文档。因此,在框1222,过程从聚集的主分片查询结果中移除由SDS文档标识的、作为查询结果返回的查询结果。该动作从搜索结果中移除软删除的文档,因为不期望在查询结果中包括被删除的文档。接下来,在框1224,过程通过返回所聚集的主分片查询结果(缺少由于SDS匹配而移除的任何结果)来响应该查询。
如果过程没有接收到命令,则在框1226,过程检查对于SDS文档中的任何一个的保留期是否已经期满。如果是,则过程继续以对每个保留期过期的SDS文档执行框1228、1230、1232和1234。在实施例中,执行框1228、1230、1232和1234等同于从分片数据库硬删除文档。在框1228,过程从主分片删除由过期的SDS文档标识的文档。接下来,在框1230,过程更新主分片的索引以反映从主分片删除文档。接下来,在框1232,过程更新SDS索引以反映过期SDS文档的删除。最后,在框1234,过程删除过期的SDS文档。
以下定义和缩写用于解释权利要求和说明书。如本文所用,术语“包含”、“包括”、“具有”、“含有”或其任何其它变型旨在涵盖非排他性的包括。例如,包括一系列元素的组合物、混合物、过程、方法、制品或装置不一定仅限于那些元素,而是可以包括未明确列出的或此类组合物、混合物、过程、方法、制品或装置固有的其他元素。
另外,术语“说明性”在本文中用于表示“充当实例、示例或说明”。在此描述为“说明性”的任何实施例或设计不一定被解释为比其它实施例或设计更优选或有利。术语“至少一个”和“一个或多个”被理解为包括大于或等于一的任何整数,即一、二、三、四等。术语“多个”应理解为包括大于或等于二的任何整数,即二、三、四、五等。术语“连接”可以包括间接“连接”和直接“连接”。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以包括或者可以不包括该特定特征、结构或特性。此外,这些短语不一定是指相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,认为结合其它实施例来影响这种特征、结构或特性是在本领域技术人员的知识范围内的,而不管是否明确描述。
术语“约”、“基本上”、“大约”及其变体旨在包括与基于提交本申请时可用的设备的特定量的测量相关联的误差度。例如,“约”可以包括给定值的±8%或5%或2%的范围。
出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所描述的实施例。
出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所描述的实施例。
因此,在说明性实施例中提供了一种计算机实现的方法、系统或装置以及计算机程序产品,用于管理在线社区的参与以及其他相关特征、功能或操作。在关于一种类型的设备描述实施例或其一部分的情况下,计算机实现的方法、系统或装置、计算机程序产品或其一部分被适配或配置成与该类型的设备的适当且可比较的表现一起使用。
在实施例被描述为在应用中实现的情况下,在说明性实施例的范围内,可以设想在软件即服务(SaaS)模型中的应用的递送。在SaaS模型中,通过在云基础设施中执行应用,向用户提供实现实施例的应用的能力。用户可以通过诸如web浏览器(例如,基于web的电子邮件)或其他轻量客户端应用的瘦客户端接口使用各种客户端设备来访问应用。用户不管理或控制底层云基础设施,包括网络、服务器、操作系统或云基础设施的存储。在一些情况下,用户甚至可能不管理或控制SaaS应用的能力。在一些其它情况下,应用的SaaS实施机制可允许有限的用户特定应用配置设定的可能例外。
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实现中,框中所注明的功能可不按图中所注明的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
本发明的实施例还可以作为与客户公司、非盈利组织、政府实体、内部组织结构等的服务约定的一部分来交付。这些实施例的方面可以包括配置计算机系统以执行,以及部署实现本文描述的方法中的一些或全部的软件、硬件和web服务。这些实施例的方面还可以包括分析客户的操作、响应于分析创建推荐、构建实现推荐的部分的系统、将系统集成到现有过程和基础设施中、计量系统的使用、向系统的用户分配费用以及为系统的使用计费。尽管已经通过分别陈述它们各自的优点描述了本发明的上述实施例,但是本发明不限于其特定组合。相反,根据本发明的预期部署,这些实施例还可以以任何方式和数量组合,而不会失去其有益效果。
Claims (20)
1.一种计算机实现的方法,包括:
接收从分片数据库的主分片中删除指定文档的请求;
将软删除文档插入到软删除分片,其中,所述软删除文档标识所述指定文档,所述指定文档保留在所述主分片中;
从客户端应用接收查询,其中,所述指定文档满足所述查询;以及
阻止所述指定文档响应于所述查询而被返回,同时与所述指定文档相关联的所述软删除文档保留在所述软删除分片中。
2.根据权利要求1所述的计算机实现的方法,其中,所述分片数据库是NoSQL数据库。
3.根据权利要求1所述的计算机实现的方法,还包括:
接收将所述指定文档恢复到所述分片数据库的恢复请求;以及
响应于所述恢复请求,将所述指定文档恢复到所述分片数据库,其中,所述恢复包括从所述软删除分片移除所述软删除文档。
4.根据权利要求1所述的计算机实现的方法,其中,所述软删除文档包括所述指定文档的唯一标识符(UID)和引用所述指定文档的指针。
5.根据权利要求4所述的计算机实现的方法,还包括:
针对主数据分片执行所述查询。
6.根据权利要求5所述的计算机实现的方法,还包括:
针对所述软删除分片执行所述查询;以及
通过检测从针对所述软删除分片的查询返回的所述软删除文档匹配从针对所述主数据分片的查询返回的所述指定文档来识别软删除的搜索结果。
7.根据权利要求6所述的计算机实现的方法,其中,识别所述软删除的搜索结果包括:
检测从针对所述软删除分片的查询返回的所述软删除文档的UID与从针对所述主数据分片的查询返回的所述指定文档的UID匹配。
8.根据权利要求6所述的计算机实现的方法,还包括:
响应于识别所述软删除的搜索结果,移除从针对所述主数据分片的查询中返回的所述指定文档。
9.根据权利要求5所述的计算机实现的方法,还包括:
响应于将所述软删除文档插入到所述软删除分片,建立所述软删除文档的所述软删除分片的软删除索引。
10.根据权利要求9所述的计算机实现的方法,还包括:
响应于接收所述查询,确定所述软删除索引是不完整的;以及
响应于确定所述软删除索引是不完整的,使用全表扫描来针对所述软删除分片执行所述查询。
11.根据权利要求10所述的计算机实现的方法,还包括:
响应于接收所述查询,确定所述软删除索引是完整的;以及
响应于确定所述软删除索引是完整的,使用所述软删除索引针对所述软删除分片执行所述查询。
12.根据权利要求1所述的计算机实现的方法,还包括:
检测从接收删除所述指定文档的所述请求经过的时间量达到规定的保留期;以及
执行硬删除过程以从所述分片数据库中清除所述指定文档。
13.根据权利要求12所述的计算机实现的方法,其中,所述硬删除过程包括:
从所述分片数据库的所述主分片中删除所述指定文档;
更新所述主分片的索引以反映从所述主分片删除所述指定文档;
更新所述软删除分片的软删除索引以反映从所述软删除分片中删除所述软删除文档;以及
从所述软删除分片中删除所述软删除文档。
14.一种计算机程序产品,包括一个或多个计算机可读存储介质以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令能够由处理器执行以使所述处理器执行操作,所述操作包括:
接收从分片数据库的主分片中删除指定文档的请求;
将软删除文档插入到软删除分片,其中,所述软删除文档标识所述指定文档,所述指定文档保留在所述主分片中;
从客户端应用接收查询,其中,所述指定文档满足所述查询;以及
阻止所述指定文档响应于所述查询而被返回,同时与所述指定文档相关联的所述软删除文档保留在所述软删除分片中。
15.根据权利要求14所述的计算机程序产品,其中,所存储的程序指令被存储在数据处理系统中的计算机可读存储设备中,并且其中,通过网络从远程数据处理系统传输所存储的程序指令。
16.根据权利要求14所述的计算机程序产品,其中,所存储的程序指令被存储在服务器数据处理系统中的计算机可读存储设备中,并且其中,所存储的程序指令响应于请求通过网络下载到远程数据处理系统以用于与所述远程数据处理系统相关联的计算机可读存储设备中,还包括:
用于计量与所述请求相关联的所述程序指令的使用的程序指令;以及
用于基于所计量的使用来生成账单的程序指令。
17.根据权利要求14所述的计算机程序产品,还包括:
接收将所述指定文档恢复到所述分片数据库的恢复请求;以及
响应于所述恢复请求,将所述指定文档恢复到所述分片数据库,其中,所述恢复包括从所述软删除分片移除所述软删除文档。
18.根据权利要求14所述的计算机程序产品,还包括:
针对主数据分片执行所述查询;
针对所述软删除分片执行所述查询;以及
通过检测从针对所述软删除分片的查询返回的所述软删除文档匹配从针对所述主数据分片的查询返回的所述指定文档来识别软删除的搜索结果。
19.一种计算机系统,包括处理器和一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令能够由所述处理器执行以使所述处理器执行操作,所述操作包括:
接收从分片数据库的主分片中删除指定文档的请求;
将软删除文档插入到软删除分片,其中,所述软删除文档标识所述指定文档,所述指定文档保留在所述主分片中;
从客户端应用接收查询,其中,所述指定文档满足所述查询;以及
阻止所述指定文档响应于所述查询而被返回,同时与所述指定文档相关联的所述软删除文档保留在所述软删除分片中。
20.根据权利要求19所述的计算机系统,还包括:
接收将所述指定文档恢复到所述分片数据库的恢复请求;以及
响应于所述恢复请求,将所述指定文档恢复到所述分片数据库,其中,所述恢复包括从所述软删除分片移除所述软删除文档。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/198,802 | 2021-03-11 | ||
US17/198,802 US11829394B2 (en) | 2021-03-11 | 2021-03-11 | Soft deletion of data in sharded databases |
PCT/CN2022/074562 WO2022188573A1 (en) | 2021-03-11 | 2022-01-28 | Soft deletion of data in sharded databases |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116982034A true CN116982034A (zh) | 2023-10-31 |
Family
ID=83194785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280020334.8A Pending CN116982034A (zh) | 2021-03-11 | 2022-01-28 | 分片数据库中的数据的软删除 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11829394B2 (zh) |
JP (1) | JP2024509198A (zh) |
CN (1) | CN116982034A (zh) |
WO (1) | WO2022188573A1 (zh) |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101610276A (zh) | 2008-06-16 | 2009-12-23 | 华为技术有限公司 | 数据软删除、恢复和同步方法及终端和系统 |
US8762340B2 (en) | 2010-05-14 | 2014-06-24 | Salesforce.Com, Inc. | Methods and systems for backing up a search index in a multi-tenant database environment |
US9069788B2 (en) * | 2011-07-01 | 2015-06-30 | Salesforce.Com, Inc. | Truncating data associated with objects in a multi-tenant database |
US9135269B2 (en) * | 2011-12-07 | 2015-09-15 | Egnyte, Inc. | System and method of implementing an object storage infrastructure for cloud-based services |
US10860604B1 (en) * | 2014-12-10 | 2020-12-08 | Amazon Technologies, Inc. | Scalable tracking for database udpates according to a secondary index |
US20170364558A1 (en) * | 2016-06-21 | 2017-12-21 | Columbus Technology LLC | System and methods for processing large scale data |
US20180285369A1 (en) | 2017-03-29 | 2018-10-04 | Amazon Technologies, Inc. | Manifest generation for data transfers |
US10585915B2 (en) * | 2017-10-25 | 2020-03-10 | International Business Machines Corporation | Database sharding |
US10983950B2 (en) * | 2017-11-10 | 2021-04-20 | Palantir Technologies Inc. | Approaches for managing data retention lifecycle |
US11461270B2 (en) | 2018-10-31 | 2022-10-04 | Elasticsearch B.V. | Shard splitting |
US11294938B2 (en) | 2019-01-03 | 2022-04-05 | International Business Machines Corporation | Generalized distributed framework for parallel search and retrieval of unstructured and structured patient data across zones with hierarchical ranking |
US10924587B1 (en) * | 2019-05-01 | 2021-02-16 | Amazon Technologies, Inc. | Live migration for highly available data stores |
US11042447B2 (en) * | 2019-09-27 | 2021-06-22 | International Business Machines Corporation | Retention rule compliance of record deletion based on deletion log |
US11595488B2 (en) * | 2019-10-07 | 2023-02-28 | Oracle International Corporation | Systems and methods for securely using cloud services on on-premises data |
US20210149865A1 (en) * | 2019-11-18 | 2021-05-20 | International Business Machines Corporation | SEAMLESSLY MIGRATING DATA AND INDEX IN DISTRIBUTED NoSQL DATABASE SYSTEMS |
US11321007B2 (en) * | 2020-07-29 | 2022-05-03 | International Business Machines Corporation | Deletion of volumes in data storage systems |
US11829630B2 (en) * | 2020-10-23 | 2023-11-28 | EMC IP Holding Company LLC | Synthetically providing multiple types of granular delete operations for a cloud-based object storage |
US11308058B1 (en) * | 2021-01-04 | 2022-04-19 | International Business Machines Corporation | Building and using combined multi-type sub-indices to search NoSQL databases |
-
2021
- 2021-03-11 US US17/198,802 patent/US11829394B2/en active Active
-
2022
- 2022-01-28 CN CN202280020334.8A patent/CN116982034A/zh active Pending
- 2022-01-28 JP JP2023553603A patent/JP2024509198A/ja active Pending
- 2022-01-28 WO PCT/CN2022/074562 patent/WO2022188573A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
JP2024509198A (ja) | 2024-02-29 |
WO2022188573A1 (en) | 2022-09-15 |
US20220292120A1 (en) | 2022-09-15 |
US11829394B2 (en) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645183B1 (en) | User interface for correlation of virtual machine information and storage information | |
US11481542B2 (en) | Summarization and processing of email on a client computing device based on content contribution to an email thread using weighting techniques | |
CN111801661B (zh) | 多主机分布式数据管理系统中的事务操作 | |
US8510499B1 (en) | Solid state drive caching using memory structures to determine a storage space replacement candidate | |
US10725976B2 (en) | Fast recovery using self-describing replica files in a distributed storage system | |
US8364716B2 (en) | Methods and apparatus for incrementally computing similarity of data sources | |
US11977532B2 (en) | Log record identification using aggregated log indexes | |
US10956499B2 (en) | Efficient property graph storage for streaming/multi-versioning graphs | |
US11487727B2 (en) | Resolving versions in an append-only large-scale data store in distributed data management systems | |
US20200278988A1 (en) | Merging search indexes of a search service | |
US10599626B2 (en) | Organization for efficient data analytics | |
US10884649B2 (en) | Tape drive data reclamation | |
CN111684779B (zh) | 分层存储管理系统中的数据迁移 | |
US20230153300A1 (en) | Building cross table index in relational database | |
CN116982034A (zh) | 分片数据库中的数据的软删除 | |
US11860835B1 (en) | Efficient drop column requests in a non-relational data store | |
WO2017122313A1 (ja) | オブジェクト履歴として表示される情報をクライアントに提供する計算機システム及び計算機 | |
JP2022053542A (ja) | コンピュータシステム、コンピュータプログラムおよびコンピュータ実装方法(ワークロード駆動によるデータベース再編成) | |
WO2024107195A1 (en) | Hadoop distributed file system (hdfs) express bulk file deletion |
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 |