CN110178128A - 使用优化的位图表示来管理大规模关联集 - Google Patents
使用优化的位图表示来管理大规模关联集 Download PDFInfo
- Publication number
- CN110178128A CN110178128A CN201880006890.3A CN201880006890A CN110178128A CN 110178128 A CN110178128 A CN 110178128A CN 201880006890 A CN201880006890 A CN 201880006890A CN 110178128 A CN110178128 A CN 110178128A
- Authority
- CN
- China
- Prior art keywords
- entity
- section
- identifier
- data
- inquiry
- 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
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
处理数据集的数据库查询包括将整数空间中的唯一标识符分配给数据内的每个实体,并创建一个或多个实体集,每个实体集属于数据内的相应实体。然后,在磁盘上为每个实体集生成表示,其中每个表示包含并适合于对应集内的实体的唯一标识符的范围,并指示该对应集内的实体的存在。最后,基于每个实体集的表示来处理查询以检索满足查询的数据,其中该表示为关联和解离操作提供恒定时间,该操作是仅附加操作,在查询时具有延迟合并以及自动过滤已删除和重复的实体。
Description
技术领域
本发明涉及关联和解离数据集,更具体地,涉及利用位图表示来管理关联和解离数据集。
背景技术
企业内容管理中的常见问题是将大量的第一类型实体与一个或多个第二类型实体相关联。例如,在法律领域,公司或组织通常需要将大量文档(例如电子邮件、报告、通知、备忘录等)与大量人员(例如员工、承包商、经理等)或一个或更多其他实体(例如法律事务、审计、组织单位等)相关联。
关联集是两个实体之间的一对多或多对多关系。例如,员工发送和接收电子邮件可以建模为员工与文档之间的关联。这里,与一个员工关联的所有文档集可以被视为关联集。一封电子邮件的所有发件人和收件人的集合也可以被视为关联集。如果公司涉及某种诉讼,并且被要求出示与一组员工(或诉讼中的“利益相关者”)相关的所有文档,生成所需文件集要求对关联进行建模和持久化,以便快速准确地检索所需文档。
一旦关联集变得非常大就会变得非常难以管理,具有数十万员工和数亿文档的大公司通常是这样的情况。因此,对于大公司而言,文档、法律事务、保管人、通知等的数量可能非常大,并且它们之间关联的数量可能更大。存储和查询这些关联集是现代企业中的难题,并且需要能够正确且有效地大规模执行的解决方案。
在典型的解决方案中,第一标识号用于表示实体,而第二标识号可用于跟踪其与其他实体的每个关联。例如,电子邮件和雇员之间的关联可以被建模为电子邮件的ID和雇员的ID之间的关系。但是这可能导致非常大量的关系,导致在发现过程的各个阶段期间需要存储、管理、检索和查询的大量关系对象。管理、存储、检索和查询这些大型关系对象可能非常昂贵。对于拥有数万名员工和数百万文档的大型公司或组织,关联集的规模变得非常大。如果采用传统方法,这些大型关联集的持久性可能会占用大量存储空间。
除了存储成本之外,在创建和管理这些关联所花费的时间方面也存在成本。如果使用事务完成关联的创建,则在实现期间需要保持的锁可能使系统不可用于可能需要同时发生的其他操作(例如,从关联集添加或移除实体)。
另外,与存储大关联集的问题直接相关的是从众多其他关联集中检索感兴趣的关联的问题。要查询n元关联,可能需要二进制关联集的n路连接(join)。这需要快速、灵活和可扩展的解决方案。
传统数据库存储使用链接表来表示和查询实体之间的关联。以这种方式存储、索引和查询关联不是最佳的,并且可能导致涉及关联的用户查询的响应时间长,尤其是在同时创建和管理关联的情况下。如果提供了事务性保证,则在创建或删除操作发生时,大部分数据库可能无法使用,这可能使整个系统在很长时间内即使对于只读查询也无法使用,例如几小时甚至几天。
例如,面临诉讼的公司通常需要收集与案件相关的数据。这通常需要创建案例、关联大量(相关)文档并将这些文档(可能是数百万个)文档置于保留状态。在同一事务中,还可能需要将大量保管人与案件相关联。以可在发生错误时回滚系统的方式管理此类事务可能非常具有挑战性。同样,如果案件需要删除,同一事务可能涉及将大量文件和保管人与案件分离并释放任何保留。要在保证事务语义的同时有效地这样做是很困难的。
如果文档的寿命超过其法定时效(例如,取决于联邦法律、州法律、当地市政法律、公司政策等),则可以创建、修改甚至删除关联。因此,管理这些关联集需要能够随着时间的推移处理这些更改,而不会显着降低查询性能。
发明内容
根据本发明的一个实施例,处理数据集的数据库查询包括将整数空间中的唯一标识符分配给数据内的每个实体,并创建一个或多个实体集,每个实体集属于数据内的相应实体。此外,在磁盘上为每个实体集生成表示,其中每个表示包含并适合于对应集内的实体的唯一标识符的范围,并指示该对应集内的实体的存在。基于每个实体集的表示来处理查询以检索满足查询的数据,其中该表示为关联和解离操作提供恒定时间,该操作是仅附加操作,在查询时具有延迟合并以及自动过滤已删除和重复的实体。本发明的实施例还包括用于以与上述基本相同的方式处理数据集的数据库查询的系统和计算机程序产品。
根据本发明实施例,实体表示来自人、文档、事件和对象的组中的一个或多个实例。本发明实施例的至少一个实体集可包括与特定实体相关联的实体和/或与特定实体分离的实体。此外,本发明实施例的实体集包括具有重复实体标识符的包含非唯一实体的多集,其中重复实体标识符保留在该实体集的物理表示中,并且查询请求该集或多集表示。本发明实施例规定,实体集区段的每个实体标识符的元数据可以与该区段一起作为有效载荷内联存储。
本发明实施例将由实体标识符表示的实体集划分为多个区段,其中每个区段的内容和每个区段的元数据存储在单独的数据对象中。此外,每个区段是指示关联的插入类型和指示解离的删除类型之一,并且区段大小基于请求大小、压缩类型和运行时优化。另外,多个区段按时间顺序排序并用于通过合并、插入和删除区段来生成该实体集的内容。本发明实施例同时对多个区段执行操作。此外,当处理查询时,本发明实施例评估对多个区段的查询并组合来自每个评估区段的结果。
附图说明
通常,各个图中的相同参考标号用于表示相同的部件。
图1示出了可以体现本发明总体构思的示例环境。
图2是表示根据本发明的实施例的数据的关联组的示意图。
图3A是根据本发明实施例的在关联集中添加关联实体的新区段的创建的过程流程图。
图3B是根据本发明实施例的在关联集中添加解离实体的新区段的创建的过程流程图。
图4是根据本发明实施例的用于合并关联集的区段的背景合并功能的过程流程图。
图5A是根据本发明实施例的用于检索关联集的实体的检索或查询功能的过程流程图。
图5B是根据本发明实施例的用于检索关联集的特定实体的检索或查询功能的过程流程图。
图6A-6M是示出根据本发明实施例的检索关联集的一系列示意图。
在整个本公开中,相同的附图标记用于标识相同的元件。
具体实施方式
本文提出了用于处理数据集的数据库查询的技术,包括数据的关联和解离集。通常,本文提供的技术分配并表示具有唯一整数的数据集的每个实体。根据本文提供的技术,每个实体被分配给一系列关联集,其中每个关联集被表示为整数空间上的位图,覆盖可能属于关联集的实体标识符的范围。阻塞结构用于将每个关联集划分为一系列块或区段,其中基于区段实体的标识符如何在整数空间中分布来存储每个段。具有大量关联实体(即,密集区段)的区段可以使用物理位图来存储,而具有少量关联实体的区段(即,更稀疏且具有更少标识符的区段)可以以其他方式存储(例如,存储实际实体标识符)。
这些技术为导航和检索系统数据集的关联集的实体的创建了更有效且更省时的方式。此外,这里提供的技术创建了可扩展的大型关联集的存储。与传统链接表数据库存储相比,本文提供的技术提供了存储和检索关联集的更便宜的方法。此外,这里提供的技术使得能够快速检索关联集。最后,这里提供的技术允许区段的操作(例如,创建、删除、移动、合并、查询等)同时发生而不必锁定整个关联集,这提高了存储系统的整体吞吐量、性能和功能。
用于本发明实施例的示例计算环境在图2中示出。具体地,计算环境包括一个或多个服务器系统10以及一个或多个客户端系统20。服务器系统10和客户端系统20可以彼此远离并通过网络30进行通信。网络可以由任何网络、任何合适的通信媒体(例如,广域网(WAN)、局域网(LAN)、因特网、内联网等)实现。或者,服务器系统10和客户端系统20可以彼此是本地的,并且经由任何适当的本地通信介质(例如,局域网(LAN)、硬连线、无线链路、内联网等)进行通信。
服务器系统10可以由优选地配备有显示器或监视器、基座(例如,包括至少一个CPU或处理器12、一个或多个存储器16、内部或外部网络接口或通信设备14(例如,调制解调器、网卡等))和/或可选的输入设备(例如,键盘、鼠标或其他输入设备)以及任何商业上可获得的和定制的软件(例如,服务器/通信软件、数据库管理模块18等)的任何常规或其他计算机系统来实现。
客户端系统20可以优选地配备有至少一个CPU或处理器12、一个或多个存储器16、内部或外部网络接口或通信设备14(例如,收发器、网卡等)和/或可选的输入或输出设备(例如,键盘、鼠标或其他输入设备、显示器等)。客户端系统20还可以包括用于特定设备执行设备操作的任何商业可用或定制软件和/或硬件模块(例如,应用程序、浏览器、通信软件、数据库查询模块22等)。客户端系统20可以与服务器系统10通信,以处理数据集的数据库查询。
数据库查询模块22使客户端系统20的用户能够向服务器系统10提交对服务器系统10在数据库17上存储的数据集的请求或查询。服务器系统10包括数据库管理模块18,用于构建并管理系统数据集的关联集的数据库17。一个或多个数据库17可以存储各种类型的信息(例如,关联集、数据集的每个实体的实体标识或标识符、关联集的元数据等)。数据库17可以由任何传统存储单元实现,对服务器系统10和客户端系统20可以是本地或远程,并且可以经由任何适当的通信介质(例如,局域网(LAN)、广域网(WAN)、因特网、硬连线、无线链接、内联网等))进行通信。客户端系统20可以呈现图形用户界面(例如,GUI等)或其他类型的界面(例如,命令行提示、菜单屏幕等)以将数据库查询发送到服务器系统10,并且可以提供各种类型的信息,包括关联集的实体。
数据库管理模块18被配置为建模和跟踪关联集(例如,系统实体的关联和解离)。数据库管理模块18可以为系统的每个实体分配一个唯一整数,用作标识密钥、标识符或标识。数据库管理模块18可以使用任何大小的整数。然而,在本发明的一个示例实施例中,可以将一个唯一64位整数分配给系统数据集的每个实体。数据集的实体包括但不限于文档、人员、系统对象和系统问题。例如,文档包括但不限于系统的电子邮件、报告、通知、备忘录等。系统人员包括但不限于拥有和操作系统的公司的员工、承包商和经理。系统事项包括但不限于拥有和操作系统的公司的法律事务、审计和组织单位。
一旦数据库管理模块18为系统的每个实体分配标识符,数据库管理模块18就构建彼此共享相同类型的关系或关联的实体组的关联集。例如,员工发送和接收邮件可以建模为员工与文档之间的关联。根据该示例,与特定员工相关联的所有文档可以被分组在一起并且用作一个关联集。此外,电子邮件的发件人和收件人也可以组合在一起并且作为另一个关联集。数据库管理模块18可以将每个关联集表示为整数空间上的位图,该整数空间覆盖可以属于关联集的实体标识符的范围。例如,与拥有和操作系统的组织的法律事务相关联的系统的一组人员可以表示为法律事务标识符和人员位图之间的关系,其中为与法律事务相关联的每个人设置比特。在本发明的一个实施例中,并且如下面进一步示出和解释的,关联集可以由阻塞结构划分,其中关联集被划分或分割为多个块或区段。当服务器系统10从客户端系统20接收数据库查询时,这为由服务器系统10的数据库管理模块18设置的每个关联集提供了更快的访问和可扩展性。
模块18、22可以包括一个或多个模块或单元,以执行下面描述的本发明实施例的各种功能。各种模块(例如,数据库管理模块18、数据库查询模块22等)可以通过任何数量的软件和/或硬件模块或单元的任何组合来实现,并且可以驻留在服务器系统10和/或客户端系统20的存储器30内,用于由处理器12执行。
现在参考图2,示出了存储在数据库17中的关联集100的示例的示意图。如图所示,每个关联集100包括一组表。所示的关联集100的表示包括三个区段110,120,130。尽管图2中示出的示例实施例包括三个区段110,120,130,但是关联集100的其他实施例可以与任何数量的区段一起存储。区段110,120,130中的每一个分别包括五个实体112(1)-112(5)、122(1)-122(5)、132(1)-132(5)。如图所示,区段110包括被分配了标识符1的第一实体112(1),被分配了标识符4的第二实体112(2),被分配了标识符6的第三实体112(3),被分配了标识符7的第四实体112(4)和被分配标识符10的第五实体112(5)。区段120包括被分配标识符13的第一实体122(1),被分配标识符24的第二实体122(2),被分配标识符26的第三实体122(3),被分配标识符29的第四实体122(4),被分配标识符40的第五实体122(5)。最后,区段130包括被分配标识符47的第一实体132(1),被分配标识符62的第二实体132(2),被分配标识符71的第三实体132(3),被分配标识符80的第四实体132(4),被分配标识符92的第五实体132(5)。每个关联集100的区段110,120,130包含五个实体,其他关联集的实施例包含可以包括包含多于或少于五个实体的区段。
图2的关联集100的示例实施例示出了关联集100包括区段头表140和段数据表150。区段数据表150存储每个区段110,120,130的内容(即,每个区段的实体)。区段头表140存储关于区段110,120,130的元数据。在一些实施例中,对于每个区段110,120,130,区段头表140包括实体的起始ID、实体的结束ID、压缩类型、基数和区段的状态。在区段头表140中,每个区段110,120,130分别表示为不同的行114,124,134。此外,区段头表140的行114,124,134可以与区段数据表150它们各自的行116,126,136对齐。区段数据表150的第一行116存储第一区段110的实体112(1)-112(5)的标识符。区段数据表150的第二行126存储第二区段120的实体122(1)-122(5)的标识符,区段数据表150的第三行136存储实体132(1)-132(5)的标识符。
在其他实施例中,如果需要存储额外元数据,除了参与实体112(1)-112(5),122(1)-122(5),132(1)-132(5)的标识符之外,关联集100还可以包括其他元数据。对于元数据尺寸小的实例(即,实体与关联集100的关联日期,何时实体彼此关联的时间等),元数据可以与关联集用有效负载内联存储。内联元数据与数据位于同一位置以避免从磁盘上的其他位置(例如,输入/输出)检索它们的额外开销。例如,当文档与应用程序中的文件夹相关联,并且应用程序想要记录每个文档与文件夹相关联时,可以在关联集100中的有效负载中存储每个文档与文件夹关联的日期和/或时间。这使得能够快速评估关联日期的查询,因为不需要额外的磁盘搜索。
相反,当附加元数据很大时,附加元数据可以共同存储在关联100的并行区段中。大元数据的示例包括当应用程序涉及法律事务并且保管人允许评论或描述与法律事务和保管人之间的每个关联一起存储。在该示例中,将大文本字段存储为有效载荷将使得关联集太麻烦且成本高。因此,附加的大元数据可以存储为单独的并行区段。
另外,当关联集100相对较小时,关联集100可能不需要单独的表来存储关联实体。因此,实体及其整个关联集(包括任何小元数据)都可以存储在单个表中。小关联集100的示例可以是与每个电子邮件相关联的发件人和收件人,因为这些关联集100通常是小的且不可变的。
当需要在单个关联集100中存储相同实体标识符的多个实例时,可以存在另外类型的关联集100。通常,关联集100包括不同实体集112(1)-112(5),122(1)-122(5),132(1)-132(5)(即,没有实体出现超过一次)。当实体多次参与关系并且其参与的基数具有重要性并且需要被捕获时,相同实体标识符的多个实例可以存储在关联集100中。例如,可以将保留(hold)放置在关联集的一个或多个文档上,其中如果上存在至少一个保留请求则不能删除该文档。表示保留的文档集的关联集100可以具有单个文档的多个实例(即,实体的标识符的多个实例),如果它包括在多于一个保留请求中的话。在另一个实施例中,作为在关联集100中存储单个标识符的多次出现的替代,引用计数可以与需要存储多个实例的每个标识符相关联。对于保留的文档的关联集100的示例,对于所请求的每个保留,可以递增该保持关联集中的标识符的引用计数,并将其放置在分配了标识符的特定文档上。此外,如果释放保留,则可以递减引用计数。仅当引用计数达到零值时才可以移除实体标识符。
现在参考图3A和3B,过程流程图200,300描绘了用于构建或管理关联集100的操作(例如,数据库管理模块18的操作)。关联集100的每个区段110,120,130可以表示要与关联集100关联或解离的系列实体。当关联区段充当与实体相关联的实体标识符的列表(例如,添加到关联集)时,解离集捕获与实体分离的实体标识符(即,与实体曾经相关联然后分离的实体标识符;将从关联集中删除的实体标识符)。例如,如果从系统中删除实体,则也必须删除它所有的关联(即,必须从关联集中将各个实体解离)。关联区段可以被标记为关联、“INSERT”或“NEW”,而解离区段可以被标记为解离或“DELETE”。因此,不需要移除关联集100中的任何区段,并且关联集100的每个区段110,120,130作为已经基于区段110,120,130如何被标记的方式从关联集100添加或删除的实体的列表或分类帐进行操作。在一个示例性实施例中,可以使用位掩码或布隆过滤器来表示解离区段。在另一示例实施例中,如下面进一步详细描述的,可以使用优先级队列来实现解离区段,其中关联集100的区段110,120,130的优先级由反向时间顺序确定(即:区段越新(无论是关联区段还是解离区段),该区段的优先级越高)。
此外,关联集100的区段110,120,130可以固定为一定量的实体。对于图1中所示的关联集100的示例实施例,区段110,120,130限于五个实体。然而,其他关联集合100可以包含包括任意数量的集合实体的区段。此外,可以为区段110,120,130分配状态。区段110,120,130的状态包括但不限于“NEW”、“DELETE”、“MERGED”、“IN PROGRESS”和“LOCK”。这些状态可以在下面进一步详述。
如图3A所示,数据库管理模块18最初在步骤210收集并输入要与关联集相关联的实体的实体标识符。在步骤220,数据库管理模块18为关联集100创建新的区段,并将实体标识符添加到新的区段,直到添加到区段的实体标识符的量达到最大。此外,数据库管理模块18可以在将实体标识符添加到区段之前将实体标识符排序(即,按时间顺序)以添加到关联集。此外,添加实体标识符的每个新的区段将被分配“NEW”状态。在添加到区段的实体标识符已经达到最大之后,在步骤230,数据库管理模块18确定在步骤210接收的所有实体标识符是否已经与关联集相关联。如果在步骤230,数据库管理模块18确定在步骤210接收的所有实体标识符尚未与关联集相关联,则数据库管理模块18返回到步骤220以创建另外的区段并将剩余的实体标识符添加到区段。然而,如果在步骤230,数据库管理模块18确定在步骤210接收的所有实体都已与关联集相关联,则数据库管理模块18在步骤240停止向关联区段添加实体标识符并停止将关联区段添加到关联集。
如图3B所示,数据库管理模块18最初在步骤310收集并输入要与关联集解离的实体的实体标识符。在步骤320,数据库管理模块18为关联集创建新的区段,并将实体标识符添加到新的区段,直到添加到区段的实体标识符的量达到最大。此外,数据库管理模块18可以在将实体标识符添加到区段之前将实体标识符排序(即,以数字顺序)以添加到关联集。此外,添加实体标识符的每个新的区段将被分配“DELETE”状态。在添加到区段的实体标识符已经达到最大之后,在步骤330,数据库管理模块18确定在步骤310接收的所有实体标识符是否已经与关联集解离。如果在步骤330,数据库管理模块18确定在步骤310接收的所有实体标识符尚未与关联集解离,则数据库管理模块18返回到步骤320以创建新新的区段并将剩余的实体标识符添加到区段。然而,如果在步骤330,数据库管理模块18确定在步骤310接收的所有实体已经与关联集解离,则数据库管理模块18在步骤340停止向解离区段添加实体标识符并停止将解离区段添加到关联集。
在一些示例实施例中,来自系统的已删除实体可能已经成为众多关联的一部分,这使得删除对于传统关联集结构而言是非常昂贵的操作(即,批量删除)。本发明实施例使得删除的实体标识符能够被添加到单个集,例如全局删除集,而不是分别要求来自每个关联集的每个被删除的实体标识符。无论何时查询或以其他方式检索关联,都会使用全局删除集的实体对结果或输出进行后过滤,以便从查询结果中正确排除它们。这使得解离比传统方法更有效地扩展。
虽然添加到关联区段或解离区段的实体标识符不需要按时间顺序排列(但实体标识符需要在关联区段或解离区段内以数字顺序排列),关联区段或解离区段在关联集100中按时间顺序排序。可以利用称为后台合并线程的后台进程由数据库管理模块18异步地将周期性地解离区段应用于关联集100。后台合并线程以优化存储和查询性能的方式对齐关联集100的区段110,120,130。后台合并线程使数据库管理模块18在合并区段110,120,130的同时执行多个任务(即,计算和高速缓存区段大小),以摊销成本并提高系统性能。
图4示出了数据库管理模块18执行关联集的多个区段的后台合并器400所采取的步骤的过程流程图。后台合并过程400合并用状态“NEW”、“DELETE”和“MERGED”标记的关联集的区段。当执行后台合并过程400时,区段被标记为“IN PROGRESS”,如下所述。后台合并过程400通过移除重复的实体标识符并将如前所述的全局删除集应用于被合并的区段来优化关联集的区段。后台合并过程400是无锁的,这意味着当数据库管理模块18对关联集的全部或部分区段执行后台合并过程400时,仍然可以查询关联集。
如图4所示,数据库管理模块18最初在步骤405检索存储在数据库17中的所有关联集。在步骤410,数据库管理模块18读取或分析在步骤405接收的关联集列表中的下一个关联集。当最初读取关联集列表时,下一个关联集将是在步骤405检索的第一个关联集。在步骤415,数据库管理模块18确定在步骤410读取的关联集是否需要合并。如果关联集包含标记为“NEW”或“DELETE”状态的任何区段,则关联集可能需要合并。
如果在步骤415,数据库管理模块18确定需要合并关联集,则在步骤420,数据库管理模块18检索关联集中用状态“NEW”、“DELETE”和“MERGED”标记的所有区段。在步骤425,数据库管理模块18然后为关联集创建新的区段,其中新的区段用“IN PROGRESS”状态标记。在步骤430,数据库管理模块18将在步骤420检索的区段的实体标识符添加到在步骤425创建的新的IN PROGRESS区段。在稍后将解离区段添加到关联集的作为关联区段和解离区段的一部分的任何实体标识符,不会添加到IN PROGRESS区段。在步骤430将实体标识符添加到IN PROGRESS区段,直到IN PROGRESS区段已达到其最大实体标识符数。在步骤435,数据库管理模块18确定是否仍有步骤420的待合并区段的任何更多实体标识符。如果在步骤435,数据库管理模块18确定仍存在需要合并的实体标识符,数据库管理模块18返回到步骤425以创建新的IN PROGRESS区段,以向其添加剩余的实体标识符。
然而,如果在步骤435,数据库管理模块18确定已经合并了所有实体标识符,则在步骤440,数据库管理模块18将所有IN PROGRESS区段的状态从“IN PROGRESS”改变为“MERGED”。在步骤440,数据库管理模块18然后删除或移除先前从关联集中用状态“NEW”、“DELETE”和“MERGED”标记的所有区段。
然后,在步骤450,数据库管理模块18确定是否要合并任何更多的关联集。如果在步骤450,数据库管理模块18确定需要合并更多关联集,则数据库管理模块18返回到步骤410以读取检索到的关联集列表中的下一个关联集。然而,如果在步骤450,数据库管理模块18确定不再需要合并关联集,则数据库管理模块18结束后台合并过程400。
现在参考图5A和5B,示出了由数据库管理模块18为数据库17查询关联集所采取的步骤500的过程流程图。如先前所解释和说明的,关联集100的每个区段110,120,130是整数的排序列表,用作实体的实体标识符。在一些实施例中,客户端系统20可以通过数据库查询模块22向服务器系统10发送对关联集的查询。在其他实施例中,服务器系统10可以在不从客户端系统20接收查询请求的情况下查询数据库17。在这些实施例的任一个中,服务器系统10经由数据库管理模块18查询数据库17。
如图5A所示,数据库管理模块18最初在步骤510输入或从客户端系统20接收要从数据库17检索的关联集的标识符或标识。在步骤520,数据库管理模块18检索在步骤510中识别的关联集中的下一个实体标识符。当数据库管理模块18首先尝试检索关联集的实体标识符时,接收的实体标识符是关联集的第一实体标识符。然而,数据库管理模块18从关联集中检索实体标识符的随后尝试返回下一个实体标识符。在步骤530,数据库管理模块18确定是否需要从在步骤510中识别和检索的关联集中检索任何更多实体标识符。如果数据库管理模块18确定需要检索更多实体标识符,则数据库管理模块18返回步骤520以从关联集中检索下一个实体标识符。然而,如果在步骤530,数据库管理模块18确定已从关联集中检索到所有实体标识符,则查询步骤500由数据库管理模块18结束。如果由客户端系统20接收到查询,数据库管理模块18可以将检索到的实体标识符发送到发起查询的客户端系统。
图5B描绘了图5A中描绘的查询过程500的步骤520的更详细的过程流程图。更具体地,图5B描绘了用于从关联集中检索下一个实体标识符的过程流程图。在步骤550,数据库管理模块18以反向时间顺序排列关联集的所有区段(即,标记有“NEW”、“DELETE”和“MERGED”状态的区段)。因此,如先前所解释的,关联集的区段按照从添加到关联集的最新区段到添加到关联集的最久区段的顺序排序。在步骤555,数据库管理模块18使用关联集的每个区段的第一实体标识符来实现优先级队列。更具体地,数据库管理模块18构建每个区段的第一实体标识符的堆,其中时间顺序是优先级。然后,在步骤560,数据库管理模块18从区段中移除设置在堆顶部的实体标识符。堆顶部的这个被移除的实体标识符是“顶部”实体标识符。在步骤565,数据库管理模块18对区段执行堆化过程,其中数据库管理模块18在从堆及其相关联的区段移除顶部实体标识符之后使用每个区段的第一实体标识符重构堆。
在步骤570,数据库管理模块18确定移除的“顶部”实体标识符是否来自解离区段(即,标记为“DELETE”状态的区段)。如果在步骤570,数据库管理模块18确定“顶部”实体标识符来自已删除或已解离的区段,则数据库管理模块18在步骤575从区段中删除堆中的“下一个”实体标识符。该“下一个”实体标识符可以来自与“顶部”实体标识符相同的区段,或者可以来自该关联集的任何其他区段。一旦“下一个”实体标识符已从区段中移除,则数据库管理模块18在步骤580对关联集的区段执行另一个堆化过程。因此,数据库管理模块18使用每个区段的第一实体标识符来重构堆。在步骤585,数据库管理模块18验证“下一个”实体标识符不等于“顶部”实体标识符。如果数据库管理模块18在步骤585确定“下一个”实体标识符等于“顶部”实体标识符,则数据库管理模块18返回到步骤575以从堆中移除下一个实体标识符。这是因为,当“顶部”实体标识符等于“下一个”实体标识符,并且“顶部”实体标识符来自最近添加到关联集合100的解离区段而不是添加的“下一个”实体标识符,由该下一个实体标识符表示的实体已从关联集中解除。因此,不应从关联集输出该下一个实体标识符。
然而,如果数据库管理模块18在步骤585确定“下一个”实体标识符不等于“顶部”实体标识符,则数据库管理模块18在步骤590设置“下一个”实体标识符作为“顶部”实体标识符。然后,数据库管理模块18返回到步骤570,以确定新的“顶部”实体标识符是否来自解离区段(即,标记有“DELETE”状态的段)。
如果在步骤570,数据库管理模块18确定“顶部”实体标识符不是来自删除的区段,则数据库管理模块18在步骤595输出“顶部”实体区段的值。
转到图6A-6M,是向数据库17如图5A和5B的过程流程图所示的查询关联集100的过程的示例实施例。在示例实施例中,关联集600包括六个段610,620,630,640,650,660。第一区段610包括区段头信息612和区段数据信息614。如区段头信息612和区段数据信息614所提供的,第一区段610包括与关联集600相关联的实体标识符2,4,10,23和30。第二区段620包括区段头信息622和区段数据信息624。如区段头信息622和区段数据信息624所提供的,第二区段620包括与关联集600相关联的实体标识符1,34和50。第三区段630包括区段头信息632和区段数据信息634。如区段头信息632和区段数据信息634所提供的,第三区段630包括与关联集600相关联的实体标识符4,11,34和56。第四区段640包括区段头信息642和区段数据信息644。如区段头信息642和区段数据信息644所提供的,第四区段640包括实体标识符2,11和35。第五区段650包括区段头信息652和区段数据信息654。然而,第五区段650不包括任何实体标识符,但是将实体标识符10和11与关联集600分离,因为区段头信息652捕获包含的实体标识符。最后,第六区段660包括区段头信息662和区段数据信息664。然而,第六区段660不包括任何实体标识符,但是将实体标识符10与关联集600相关联,因为区段头信息662捕获包含的实体标识符。
如图6A-6M进一步所示,第六区段660是最近添加到关联集600的区段,而第一区段610是首先要添加到关联集600的第一区段。此外,每个区段610,620,630,640,650,660还分别包括顶部实体标识符618,628,638,648,658,668。关联集600的每个区段610,620,630,640,650,660的顶部实体标识符618,628,638,648,658,668是相应区段610,620,630,640,650,660的第一实体标识符,其中实体标识符的时间顺序是优先级。换句话说,关联集600的每个区段610,620,630,640,650,660的顶部实体标识符618,628,638,648,658,668是每个区段610,620,630,640,650,660的实体标识符的最低值。
如图6B所示,当数据库管理模块18执行如图5B所示的步骤560,565,570和595时,对于关联集600,第二区段620的实体标识符"1"被输出670作为关联集600的第一实体标识符。因为实体标识符"1"是每个区段610,620,630,640,650的最低实体标识符,实体标识符"1"是堆的“顶部”实体标识符(即,每个区段610,620,630,640,650,660的每个顶部实体标识符618,628,638,648,658,668的组)。此外,数据库管理模块18将确定实体标识符"1"不是来自解离或DELETE区段(即,区段640,650),因此将输出实体标识符"1"。
如图6C所示,一旦数据库管理模块18在实体标识符"1"被移除并输出670之后执行堆处理,输出670实体标识符"34"用作第二区段620的顶部实体标识符628因为它是第二区段620的下一个时间顺序实体标识符。
此外,当数据库管理模块18移除堆的顶部实体标识符时,存在两个实体标识符"2";一个来自第四区段640,一个来自第一区段610。因为第四区段640比第一区段610更晚添加,所以来自第四区段640的实体标识符"2"优先于来自第一区段610的实体标识符"2"。当数据库管理模块18从第四区段640评估实体标识符"2"时,数据库管理模块18确定来自第四区段640的实体标识符"2"来自DELETE区段(即图5B的步骤570)。在随后的图5B所示过程的步骤575,580和585中,数据库管理模块18将确定下一个实体标识符是来自第一区段610的实体标识符"2"。因为来自第一区段610的实体标识符"2"等于来自第四区段640实体标识符"2",并且因为来自第四区段640的实体标识符"2"来自如图6C所示的比第一区段610更晚发生的DELETE区段640,数据库管理模块18将确定将不输出670实体标识符"2"。
然而,如图6D所示,当数据库管理模块18执行第三次迭代,并从堆中移除下一个实体标识符时(图5B的步骤575),数据库管理模块18将从第一区段610和第三区段630输出实体标识符"4"。在图6D,在第三次迭代中,实体标识符"4"用作第一区段610和第三区段630的顶部实体标识符618,638。因为实体标识符"4"来自第一区段610和第三区段630,并且因为第一区段610和第三区段630都是关联区段,数据库管理模块18在迭代3输出670实体标识符"4"。
转到图6E,当数据库管理模块18在关联集600上运行图5B过程的第四次迭代,并且移除堆顶部的实体标识符时,存在三个实体标识符"10";一个来自第一区段610,一个来自第五区段650,一个来自第六区段660。如图所示,第五区段650是DELETE区段,但是第一区段和第六区段610,660是关联区段(INSERT区段)。因为第六区段660比第一区段610和第五区段650更晚添加,所以来自第六区段660的实体标识符"10"优先于来自第一区段610的实体标识符"10"。当数据库管理模块18评估来自第六区段660的实体标识符"10"时,数据库管理模块18确定来自第六区段660的实体标识符"10"不是来自DELETE区段(即,图5B的步骤570)。因为第六区段660不是DELETE区段,所以数据库管理模块18在迭代4将输出670实体标识符"10"。
如图6F所示,当数据库管理模块18在关联集600上运行图5B过程的第五次迭代,并且移除堆顶部的实体标识符时,存在三个实体标识符"11";一个来自第三区段630,一个来自第四区段640,一个来自第五区段650。如图所示,第四区段和第五区段640,650是DELETE区段,第三区段630是关联区段。因为第五区段650和第四区段640都比第三区段630更晚地添加到关联集600,所以来自第五区段650的实体标识符"11"优先于来自第四区段640或来自第三区段630的实体标识符"11"。因此,当数据库管理模块18评估来自第五区段650的实体标识符"11"时,数据库管理模块18确定来自第五区段的实体标识符"11"来自DELETE区段(即,图5B的步骤570)。因为第五区段650来自DELETE区段,所以数据库管理模块18在迭代5将在图5B的以下步骤575,580和585中确定下一个实体标识符是来自第四区段640和第三区段630的的实体标识符"11"。因为来自第三区段和第四区段630,640的实体标识符"11"等于实体来自第五区段650的实体标识符"11",并且因为如图6F所示,来自第五区段650的实体标识符"11"来自比第三区段或第四区段630,640更晚发生的DELETE区段640,数据库管理模块18将确定将不输出670实体标识符"11"。
数据库管理模块18将继续重复图5B所示过程的步骤575,580和585(即,从堆中移除下一个实体标识符,堆化,并将“下一个”实体标识符与“顶部”实体标识符进行比较等),直到数据库管理模块18发现下一个实体标识符不等于来自第五区段650的实体标识符"11"。如图6G所示,在评估不应输出实体标识符"11"之后,并且在执行堆化(例如,图5B的步骤580)之后,数据库管理模块18在图5B的步骤575中确定堆中的下一个实体标识符将是来自第一区段610的实体标识符"23"。因为实体标识符"23"仅在第一区段610中找到,并且因为第一区段610不是来自在DELETE区段,数据库管理模块18接下来输出670实体标识符"23"。
转到图6H,当数据库管理模块18在关联集600上运行图5B过程的第七次迭代,并且移除堆顶部的实体标识符时,数据库管理模块18将输出670来自第一区段610的实体标识符"30"。如图所示和先前说明的,第一区段610不是DELETE区段,因此,当数据库管理模块18评估来自第一区段610的实体标识符"30"时,数据库管理模块18确定来自第一区段610的实体标识符"30"不是来自DELETE区段(即图5B的步骤570),并输出670实体标识符"30"。
类似地,如图6I所示,当数据库管理模块18在关联集600上运行图5B过程的第八次迭代,并且移除堆顶部的实体标识符时,数据库管理模块18将发现第二区段和第三区段620,630都包括实体标识符"34"。如图所示,第三区段630比第二区段620更晚地被添加到关联集600,并且优先于第二区段620。此外,第二区段和第三区段620,630都是关联区段。因此,当数据库管理模块18评估来自第三区段630的实体标识符"34"时,数据库管理模块18确定来自第三区段630的实体标识符"34"不是来自DELETE区段(即,图5B的步骤570),并输出670实体标识符"34"。
转到图6J,一旦数据库管理模块18在已经移除并输出实体标识符"34"之后执行堆化处理,则来自第二区段、第三区段和第四区段620,630,640的实体标识符"50"、"56"和"35"分别是堆中剩余的实体标识符。因为来自第四区段640的实体标识符"35"将位于堆顶部,所以数据库管理模块18从要评估的堆中从第四区段640移除实体标识符"35"。当数据库管理模块18评估来自第四区段640的实体标识符"35"时,数据库管理模块18确定来自第四区段640的实体标识符"35"来自DELETE区段(即,图5B的步骤570),因此不能输出670。
在图5B所示过程的步骤575,580和585中,数据库管理模块18将如图6K所示确定下一个实体标识符是来自第二区段620的实体标识符"50"。因为来自第二区段620的实体标识符"50"不等于来自第四区段640的实体标识符"35",数据库管理模块18将“顶部”实体标识符设置为来自第二区段620的实体标识符"50"。然后在图5B所示过程的步骤570,数据库管理模块18评估来自第二区段620的实体标识符"50"是否来自DELETE区段。因为第二区段620是关联区段而不是DELETE区段,所以数据库管理模块18输出670实体标识符"50"。
最后,如图6L中所示,当数据库管理模块18在关联集600上运行图5B过程的第十一次迭代,并且移除堆顶部的实体标识符时,数据库管理模块18将输出670来自第三区段630的实体标识符"56"。如图所示,实体标识符"56"是唯一要评估的实体标识符。此外,第三区段630不是DELETE区段,因此,当数据库管理模块18评估来自第三区段630的实体标识符"56"时,数据库管理模块18确定来自第三区段630的实体标识符"56"不是来自DELETE区段(即,图5B的步骤570),并且输出670实体标识符"56"。
图6M示出了当数据库管理模块18查询图6A-6M所示的关联集600时的最终输出670。当查询关联集600时,实体标识符输出670为"1","4","10","23","30","34","50"和"56"。
客户端系统20可以通过数据库查询模块22请求服务器系统10的数据库管理模块18以出于各种原因查询数据库17。例如,数据库17可以包含为诉讼事项保留的文档的关联集,因此,当确定给定文档是否处于保留状态时,可以查询关联集以检查给定文档是否在他们之中。在另一示例中,可以查询关联集以确定与给定案例、事务或项目有多少文档关联。对于此示例,如果已合并关联集的所有关联和解离区段,则集合中实体数量的简单计数提供查询的答案,其中将完整区段的数量乘以区段大小会加速计算。在另一示例中,可以查询关联集以确定在给定日期之前将哪些文档添加到给定案例。对于此示例,如果关联日期作为有效负载而不是单独的表存储在关联表中,则可以快速有效地回答查询。查询可以首先检索关联集中的所有文档,然后可以基于添加文档的日期对这些文档进行后过滤。在又一个示例中,可以查询关联集以确定哪个文档由给定的一组保管人中的一个或多个拥有。在该示例中,如果数据被建模为包含所有所有者(例如,保管人)的关联集的文档,则可以通过扫描每个文档并在文档所有的所有者和查询中的保管人的关联集之间执行关联集交集操作来完成查询。
由于具有与关联区段和解离区段两者的关联集,因此不需要修改任何关联集的区段。关联集的每个区段都是不可变的,这允许诸如创建、删除、移动、合并和查询区段之类的操作同时发生,而不必为任何一个操作锁定整个关联集。由于图2中所示的区段数据表150中的每一行表示关联集100的一个区段,事务锁的范围通常只是一行,而不是整个表。例如,当使用链接表方法时,大小为100,000的关联集将要求对涉及关联的任何操作锁定整个链接表(即,100,000行)。然而,当使用本发明实施例时,如果关联集的区段仅表示5,000个实体标识符,则在进行操作时仅需要锁定一行(即,约5,000个实体标识符)。因此,涉及其他区段中的实体标识符的关联的其他操作可以在没有任何并发问题的情况下同时发生。
此外,在一些本发明实施例中,当需要读取关联集的区段时,将其从磁盘加载,解压缩并缓存在存储器中以加速后续访问。弱引用用于将这些区段存储在存储器中,因此如果存储器利用率高,则可以丢弃这些区段(例如,通过垃圾收集器)以释放用于其他线程的存储器。虽然这可能导致在下一次需要区段时必须重新加载区段(例如,从磁盘),但是该方法可以改善系统的整体可扩展性。
本文提供的技术具有许多优点。作为一个示例,该技术使得能够以快速、有效且成本有效的方式查询关联集。此外,这里提供的技术提供了一种系统,该系统能够以有效和快速的方式建模和跟踪大的关联集。这个新系统消除了与其他传统关联集相关的成本,例如链接表关联集。该系统还能够修改关联集的实体,而不需要在修改期间锁定和不使用整个关联集。通常,本文提供的技术解决了必然植根于计算机技术的技术和经济问题,特别是数据库内的关联集的存储。
应当理解,上面描述的和附图中示出的实施例仅表示实现用于处理数据集的数据库查询的实施例的许多方式中的一些,尤其是关联数据集。
本发明实施例的环境可以包括任何数量的计算机或其他处理系统(例如,客户端或最终用户系统、服务器系统等)和以任何期望的方式排列的数据库或其他存储库,其中存在本发明的实施例可以应用于任何期望类型的计算环境(例如,云计算、客户端-服务器、网络计算,大型机、独立系统等)。本发明实施例采用的计算机或其他处理系统可以由任何数量的任何个人或其他类型的计算机或处理系统(例如,台式机、膝上型计算机、PDA、移动设备等)实现,并且可以包括任何商业可用的操作系统以及商业可用和定制软件的任何组合(例如,浏览器软件、通信软件、服务器软件、数据库管理模块18、数据库查询模块22等)。这些系统可以包括任何类型的监视器和输入设备(例如,键盘、鼠标、语音识别等)以输入和/或查看信息。
应当理解,本发明实施例的软件(例如,数据库管理模块18、数据库查询模块22等)可以以任何期望的计算机语言实现,并且可以由本领域普通技术人员开发。计算机领域基于说明书中包含的功能描述和附图中所示的流程图。此外,本文对执行各种功能的软件的任何引用通常是指在软件控制下执行那些功能的计算机系统或处理器。或者,本发明实施例的计算机系统可以由任何类型的硬件和/或其他处理电路实现。
计算机或其他处理系统的各种功能可以以任何数量的软件和/或硬件模块或单元、处理或计算机系统和/或电路之间的任何方式分布,其中可以处置计算机或处理系统。彼此本地或远程地通过任何合适的通信介质(例如,LAN、WAN、内联网、因特网、硬连线、调制解调器连接、无线等)进行通信。例如,本发明实施例的功能可以以各种方式分布在各种最终用户/客户端和服务器系统和/或任何其他中间处理设备中。可以以实现本文描述的功能的任何方式修改上面描述的和流程图中示出的软件和/或算法。另外,流程图或描述中的功能可以以实现期望操作的任何顺序执行。
本发明实施例的软件(例如,数据库管理模块18、数据库查询模块22等)可以在非暂时性计算机可用介质(例如,磁性或光学介质、磁光介质、固定或便携式程序产品装置或设备的软盘、CD-ROM、DVD、存储器设备等,用于与网络或其他通信介质连接的独立系统或系统。
通信网络可以由任何数量的任何类型的通信网络(例如,LAN、WAN、因特网、内联网、VPN等)实现。本发明实施例的计算机或其他处理系统可以包括任何传统或其他通信设备,以通过任何传统或其他协议在网络上通信。计算机或其他处理系统可以利用任何类型的连接(例如,有线、无线等)来访问网络。本地通信媒体可以由任何合适的通信媒体(例如,局域网(LAN)、硬连线、无线链路、内联网等)实现。
系统可以使用任何数量的任何常规或其他数据库,数据存储或存储结构(例如,文件、数据库、数据结构、数据或其他存储库等)来存储信息(例如,关联集、关联区段、解离区段,实体标识符、元数据等)。数据库系统可以由任何数量的任何常规或其他数据库,数据存储或存储结构(例如,文件、数据库、数据结构、数据或其他存储库等)来实现,以存储信息(例如,关联集、关联区段、解离区段、实体标识符、元数据等)。数据库系统可以包括在服务器和/或客户端系统内或耦合到服数据库系统和/或存储结构可以远离计算机或其他处理系统或者本地计算机或其他处理系统,并且可以存储任何期望的数据(例如,关联集、关联区段、解离区段、实体标识符、元数据等)。
本发明实施例可以使用任何类型的任何类型的用户界面(例如,图形用户界面(GUI)、命令行、提示等)来获得或提供信息(例如,关联集的实体标识符、实体标识符被添加到关联集的日期、实体标识符被添加到关联集的日期等等),其中界面可以包括以任何方式排列的任何信息。界面可以包括任何数量的任何类型的输入或致动机构(例如,按钮、图标、字段、框、链接等),其设置在任何位置以输入/显示信息并通过任何合适的输入设备启动期望的动作(例如,鼠标、键盘、触摸屏等)。界面屏幕可以包括任何合适的致动器(例如,链接、标签等),以便以任何方式在屏幕之间导航。
这里使用的术语仅用于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”“包含”、“具有”等等,指定所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或组的存在或添加。
以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于结合具体要求保护的其他要求保护的元件执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对本发明的描述,但是并不旨在穷举或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使本领域普通技术人员能够理解本发明的各种实施例,其具有适合于预期的特定用途的各种修改。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (24)
1.一种处理数据集的数据库查询的方法,包括:
将整数空间中的唯一标识符分配给数据内的每个实体,并创建一个或多个实体集,每个实体属于数据内的对应实体;
在磁盘上为每个实体集生成表示,其中每个表示包含并适合于对应集内的实体的唯一标识符的范围,并指示该对应集内的实体的存在;和
基于每个实体集的表示处理查询以检索满足查询的数据,其中该表示为关联和解离操作提供恒定时间,该操作是仅附加操作,在查询时具有延迟合并以及自动过滤已删除和重复的实体。
2.如权利要求1所述的方法,其中至少一个实体集包括与特定实体关联的实体。
3.如权利要求1所述的方法,其中至少一个实体集包括与特定实体分离的实体。
4.如权利要求1所述的方法,其中,实体表示来自人、文档、事件和对象的组中的一个或多个实例。
5.如权利要求1所述的方法,其中,实体集的每一个被划分为多个实体标识符的区段,并且实体集区段的实体标识符的元数据与该区段一起作为有效载荷存储。
6.如权利要求1所述的方法,还包括:
将由实体标识符表示的实体集划分成多个区段,其中每个区段的内容和每个区段的元数据存储在单独的数据对象中,其中每个区段是用于指示关联的插入类型和指示解离的删除类型之一,并且区段大小基于请求大小、压缩类型和运行时优化,并且其中多个区段按时间顺序排序并用于通过合并、插入和删除区段来生成实体集的内容;和
同时对多个区段执行操作。
7.如权利要求6所述的方法,其中处理查询还包括:
评估对多个区段的查询并组合来自每个评估区段的结果。
8.如权利要求1所述的方法,其中实体集包括具有重复实体标识符的包含非唯一实体的多集,其中重复实体标识符保留在该实体集的物理表示中,并且查询请求该集或多集表示。
9.一种用于处理数据集的数据库查询的系统,包括:
处理器配置为:
将整数空间中的唯一标识符分配给数据内的每个实体,并创建一个或多个实体集,每个实体属于数据内的对应实体;
在磁盘上为每个实体集生成表示,其中每个表示包含并适合于对应集内的实体的唯一标识符的范围,并指示该对应集内的实体的存在;和
基于每个实体集的表示处理查询以检索满足查询的数据,其中该表示为关联和解离操作提供恒定时间,该操作是仅附加操作,在查询时具有延迟合并以及自动过滤已删除和重复的实体。
10.如权利要求9所述的系统,其中至少一个实体集包括与特定实体关联的实体。
11.如权利要求9所述的系统,其中至少一个实体集包括与特定实体分离的实体。
12.如权利要求9所述的系统,其中,实体表示来自人、文档、事件和对象的组中的一个或多个实例。
13.如权利要求9所述的系统,其中,实体集的每一个被划分为多个实体标识符的区段,并且实体集区段的实体标识符的元数据与该区段一起作为有效载荷存储。
14.如权利要求9所述的系统,其中,所述处理器还被配置为:
将由实体标识符表示的实体集划分成多个区段,其中每个区段的内容和每个区段的元数据存储在单独的数据对象中,其中每个区段是用于指示关联的插入类型和指示解离的删除类型之一,并且区段大小基于请求大小、压缩类型和运行时优化,并且其中多个区段按时间顺序排序并用于通过合并、插入和删除区段来生成实体集的内容;和
同时对多个区段执行操作。
15.如权利要求14所述的系统,其中处理查询还包括:
评估对多个区段的查询并组合来自每个评估区段的结果。
16.如权利要求9所述的系统,其中实体集包括具有重复实体标识符的包含非唯一实体的多集,其中重复实体标识符保留在该实体集的物理表示中,并且查询请求该集或多集表示。
17.一种用于处理数据集的数据库查询的计算机程序产品,该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有与其一起实现的程序指令,该程序指令可由处理器执行以使处理器:
将整数空间中的唯一标识符分配给数据内的每个实体,并创建一个或多个实体集,每个实体属于数据内的对应实体;
在磁盘上为每个实体集生成表示,其中每个表示包含并适合于对应集内的实体的唯一标识符的范围,并指示该对应集内的实体的存在;和
基于每个实体集的表示处理查询以检索满足查询的数据,其中该表示为关联和解离操作提供恒定时间,该操作是仅附加操作,在查询时具有延迟合并以及自动过滤已删除和重复的实体。
18.根据权利要求17所述的计算机程序产品,其中至少一个实体集包括与特定实体关联的实体。
19.根据权利要求17所述的计算机程序产品,其中至少一个实体集包括与特定实体分离的实体。
20.根据权利要求17所述的计算机程序产品,其中,实体表示来自人、文档、事件和对象的组中的一个或多个实例。
21.根据权利要求17所述的计算机程序产品,其中,实体集的每一个被划分为多个实体标识符的区段,并且实体集区段的实体标识符的元数据与该区段一起作为有效载荷存储。
22.根据权利要求17所述的计算机程序产品,还包括:
将由实体标识符表示的实体集划分成多个区段,其中每个区段的内容和每个区段的元数据存储在单独的数据对象中,其中每个区段是用于指示关联的插入类型和指示解离的删除类型之一,并且区段大小基于请求大小、压缩类型和运行时优化,并且其中多个区段按时间顺序排序并用于通过合并、插入和删除区段来生成实体集的内容;和
同时对多个区段执行操作。
23.根据权利要求22所述的计算机程序产品,其中处理查询还包括:
评估对多个区段的查询并组合来自每个评估区段的结果。
24.根据权利要求17所述的计算机程序产品,其中实体集包括具有重复实体标识符的包含非唯一实体的多集,其中重复实体标识符保留在该实体集的物理表示中,并且查询请求该集或多集表示。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/459,372 US10452631B2 (en) | 2017-03-15 | 2017-03-15 | Managing large scale association sets using optimized bit map representations |
US15/459,372 | 2017-03-15 | ||
PCT/IB2018/051028 WO2018167584A1 (en) | 2017-03-15 | 2018-02-20 | Managing large scale association sets using optimized bit map representations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110178128A true CN110178128A (zh) | 2019-08-27 |
CN110178128B CN110178128B (zh) | 2023-05-12 |
Family
ID=63519295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880006890.3A Active CN110178128B (zh) | 2017-03-15 | 2018-02-20 | 使用优化的位图表示来管理大规模关联集 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10452631B2 (zh) |
JP (1) | JP7030831B2 (zh) |
CN (1) | CN110178128B (zh) |
DE (1) | DE112018000456T5 (zh) |
GB (1) | GB2574537A (zh) |
WO (1) | WO2018167584A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114286988A (zh) * | 2019-09-24 | 2022-04-05 | 国际商业机器公司 | 处理数据库系统的数据 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452631B2 (en) | 2017-03-15 | 2019-10-22 | International Business Machines Corporation | Managing large scale association sets using optimized bit map representations |
US11050766B2 (en) * | 2018-10-31 | 2021-06-29 | EMC IP Holding Company LLC | Generating unique virtual process identifiers for use in network security mechanisms |
CN111488340B (zh) * | 2019-01-29 | 2023-09-12 | 菜鸟智能物流控股有限公司 | 数据处理方法、装置及电子设备 |
CN110162543A (zh) * | 2019-05-29 | 2019-08-23 | 北京奇艺世纪科技有限公司 | 一种信息查询方法及装置 |
KR102177064B1 (ko) * | 2019-11-18 | 2020-11-10 | 재단법인대구경북과학기술원 | 다항 조인 연산자를 이용한 쿼리 처리 방법 및 그 장치 |
US20230196882A1 (en) * | 2021-12-17 | 2023-06-22 | Amtote International, Inc. | Virtual sports league |
CN115062075A (zh) * | 2022-06-21 | 2022-09-16 | 成都秦川物联网科技股份有限公司 | 基于时序数据处理的工业物联网及其控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1647076A (zh) * | 2002-03-28 | 2005-07-27 | 莱恩生物科学有限公司 | 查询关系数据库的方法和设备 |
CN102609444A (zh) * | 2010-11-08 | 2012-07-25 | 微软公司 | 呈现与实体相关联的动作和提供商 |
CN105009116A (zh) * | 2012-12-31 | 2015-10-28 | 谷歌公司 | 使用内容识别作为用于搜索的上下文 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790848A (en) * | 1995-02-03 | 1998-08-04 | Dex Information Systems, Inc. | Method and apparatus for data access and update in a shared file environment |
EP1101176A1 (en) | 1998-08-04 | 2001-05-23 | Enfish Technology, Inc. | Method and apparatus for a physical storage architecture having an improved information storage and retrieval system for a shared file environment |
JP2002157227A (ja) | 2000-11-20 | 2002-05-31 | Sony Corp | 情報処理装置、コンテンツ情報更新方法、およびコンテンツ情報更新プログラムを記録した記録媒体 |
US8577908B2 (en) | 2003-03-20 | 2013-11-05 | International Business Machines Corporation | Automatic lock management in an abstract database |
US20070150489A1 (en) | 2005-12-22 | 2007-06-28 | International Business Machines Corporation | Method of representing continuum of data as a rolling column within a relational model |
US9275129B2 (en) | 2006-01-23 | 2016-03-01 | Symantec Corporation | Methods and systems to efficiently find similar and near-duplicate emails and files |
US7840575B2 (en) * | 2006-05-19 | 2010-11-23 | Oracle International Corporation | Evaluating event-generated data using append-only tables |
US7765215B2 (en) * | 2006-08-22 | 2010-07-27 | International Business Machines Corporation | System and method for providing a trustworthy inverted index to enable searching of records |
US8396838B2 (en) | 2007-10-17 | 2013-03-12 | Commvault Systems, Inc. | Legal compliance, electronic discovery and electronic document handling of online and offline copies of data |
JP5392253B2 (ja) | 2008-05-30 | 2014-01-22 | 日本電気株式会社 | データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム |
US8484211B2 (en) | 2008-07-02 | 2013-07-09 | Lexisnexis Risk Solutions Fl Inc. | Batch entity representation identification using field match templates |
US8762333B2 (en) * | 2009-07-08 | 2014-06-24 | Pivotal Software, Inc. | Apparatus and method for read optimized bulk data storage |
WO2012048158A1 (en) | 2010-10-06 | 2012-04-12 | Planet Data Solutions | System and method for indexing electronic discovery data |
WO2013157099A1 (ja) | 2012-04-18 | 2013-10-24 | 株式会社Murakumo | データベースの管理方法、データベースシステム、及び、プログラム |
US10095807B2 (en) * | 2015-04-28 | 2018-10-09 | Microsoft Technology Licensing, Llc | Linked data processor for database storage |
US10621388B2 (en) * | 2016-07-20 | 2020-04-14 | Sap Se | Automatic delta query support for backend databases |
US10452631B2 (en) | 2017-03-15 | 2019-10-22 | International Business Machines Corporation | Managing large scale association sets using optimized bit map representations |
-
2017
- 2017-03-15 US US15/459,372 patent/US10452631B2/en not_active Expired - Fee Related
-
2018
- 2018-02-20 DE DE112018000456.2T patent/DE112018000456T5/de active Pending
- 2018-02-20 WO PCT/IB2018/051028 patent/WO2018167584A1/en active Application Filing
- 2018-02-20 JP JP2019548553A patent/JP7030831B2/ja active Active
- 2018-02-20 CN CN201880006890.3A patent/CN110178128B/zh active Active
- 2018-02-20 GB GB1913189.5A patent/GB2574537A/en not_active Withdrawn
-
2019
- 2019-07-29 US US16/524,309 patent/US11372831B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1647076A (zh) * | 2002-03-28 | 2005-07-27 | 莱恩生物科学有限公司 | 查询关系数据库的方法和设备 |
CN102609444A (zh) * | 2010-11-08 | 2012-07-25 | 微软公司 | 呈现与实体相关联的动作和提供商 |
CN105009116A (zh) * | 2012-12-31 | 2015-10-28 | 谷歌公司 | 使用内容识别作为用于搜索的上下文 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114286988A (zh) * | 2019-09-24 | 2022-04-05 | 国际商业机器公司 | 处理数据库系统的数据 |
Also Published As
Publication number | Publication date |
---|---|
US10452631B2 (en) | 2019-10-22 |
US11372831B2 (en) | 2022-06-28 |
WO2018167584A1 (en) | 2018-09-20 |
GB2574537A (en) | 2019-12-11 |
GB201913189D0 (en) | 2019-10-30 |
CN110178128B (zh) | 2023-05-12 |
US20190354514A1 (en) | 2019-11-21 |
DE112018000456T5 (de) | 2019-10-02 |
JP7030831B2 (ja) | 2022-03-07 |
US20180268009A1 (en) | 2018-09-20 |
JP2020514899A (ja) | 2020-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110178128A (zh) | 使用优化的位图表示来管理大规模关联集 | |
CN110300963B (zh) | 大规模数据储存库中的数据管理系统 | |
CN110168515B (zh) | 用于分析数据关系以支持查询执行的系统 | |
KR100745442B1 (ko) | 멀티미디어 컨텐츠 관리 객체 표현 방법, 멀티미디어 컨텐츠 관리 시스템의 관리 방법, 컴퓨터 판독 가능 기록 매체, 멀티미디어 데이터 객체 아이템의 관리 및 전송 시스템 및 멀티미디어 컨텐츠 관리 시스템의 파퓰레이트 방법 | |
US8676859B2 (en) | Method and system for analyzing data stored in a database | |
CN107622103A (zh) | 管理数据查询 | |
CN107003935A (zh) | 优化数据库去重 | |
CN1347529A (zh) | 数据仓库环境下使信息可视化的方法 | |
Lněnička | AHP model for the big data analytics platform selection | |
US10679230B2 (en) | Associative memory-based project management system | |
CN112667735A (zh) | 一种基于大数据的可视化模型建立分析系统和方法 | |
Kahn | A method for describing information required by the database design process | |
Biplob et al. | Comparison of different extraction transformation and loading tools for data warehousing | |
US10606866B1 (en) | Framework for exposing network activities | |
Taleghani | Executive information systems development lifecycle | |
AU2012244271A1 (en) | Associative memory-based project management system | |
Yedilkhan et al. | Performance Analysis of Scaling NoSQL vs SQL: A Comparative Study of MongoDB, Cassandra, and PostgreSQL | |
Yan et al. | A framework for business process model repositories | |
Shikhli et al. | Data Acquisition Model for Analyzing Schedule Delays Using KDD: Knowledge Discovery and Datamining | |
Roessing et al. | A Comparative Analysis of Smart Cities Frameworks based on Data Lifecycle Requirements. | |
Ali et al. | A Systematic review of ontology-based approach and decision-making (DM) to improve public service delivery (PSD) | |
CN105453086A (zh) | 从一个或多个数据存储位置获得用户特定关注数据的概念利用 | |
Assunção et al. | A multi-objective solution for retrieving class diagrams | |
CN104636433B (zh) | 基于统一维度建模的电力信息系统数据管理系统及其方法 | |
Trung | Database performance evaluation and applications of data science for IoT platform analysis |
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 |