CN113767390A - 用于分布式存储系统中的改变检测的属性分组 - Google Patents
用于分布式存储系统中的改变检测的属性分组 Download PDFInfo
- Publication number
- CN113767390A CN113767390A CN202080030959.3A CN202080030959A CN113767390A CN 113767390 A CN113767390 A CN 113767390A CN 202080030959 A CN202080030959 A CN 202080030959A CN 113767390 A CN113767390 A CN 113767390A
- Authority
- CN
- China
- Prior art keywords
- attributes
- attribute
- document
- group
- grouping
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- 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/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/93—Document management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/197—Version control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文公开了用于分布式存储系统中的改变检测的属性分组的技术。在一个实施例中,一种方法包括将文档的多个属性分组为单独地包括多个属性的子集的多个组。对于多个组中的每一个,基于组中属性的子集的值来生成组的哈希值。该方法还包括确定组的所生成的哈希值是否与分布式存储系统中文档的先前版本中的对应组的哈希值不同。响应于确定组的所生成的哈希值与先前版本中的对应组的没有不同,指示组中的属性的子集中的属性均没有改变的元数据被插入到文档的新版本中。
Description
背景技术
分布式存储系统通常包括路由器、交换机、网桥和其他网络设备,它们通过有线或无线网络链路将大量计算机服务器、网络存储设备和其他类型的计算设备互连起来。计算机服务器可以托管一个或多个虚拟机、容器或其他类型的虚拟化组件,以向用户提供各种计算和/或存储服务。例如,计算机服务器可以配置为提供数据存储和检索服务,其允许用户存储、编辑、检索或执行其他数据管理任务。
发明内容
提供本概述以简化形式介绍在下面的详细描述中进一步描述的一些的概念。本概述无意确定要求保护的主题的关键特征或基本特征,也不旨在用于限制要求保护的主题的范围。
当今的分布式存储系统通常按照分层架构进行布置,以便为大量用户提供可靠且可扩展的存储服务。分布式存储系统的每一层都可以依赖相应的计算系统来提供设计的服务。例如,分布式存储系统可以包括高度可扩展且能够存储大量数据的存储层。存储层通常可以包括一组后端服务器,其配置为便于用户的存储、检索和/或其他数据管理任务。这组后端服务器还可以提供用于执行各种数据分析或分析任务的计算资源。这样的分析任务的示例包括文档查看的聚合、修改信号的检测、趋势文档的计算等。这样的存储层的一个示例是由华盛顿州雷蒙德市的微软公司提供的Microsoft Outlook
虽然存储层适合于执行大量数据的存储和分析,但是存储层中使用的数据结构可能不适合提供对各个数据项的随机访问。例如,存储层可能无法独立于数据项在列表中的位置或列表的大小而以恒定时间访问列表中的数据项。此外,这种分布式存储系统的可扩展性通常是通过将存储的数据或对此类数据的索引拆分或“分片”到分区中来实现的。例如,在某些分布式存储系统中,存储层中数据项的主索引可以拆分为多个子索引。不是引用数据项,而是主索引可以引用子索引,而子索引又可以引用数据项。在这样的分布式存储系统中,当用户请求存储的数据项时,在存储层中执行多个操作(例如,扇出联合(fan-outfederation))来解析这些引用。执行多个操作可能会导致服务用户请求的高延时和计算负载。
一种用于提供对存储数据的快速随机访问的技术是将存储数据的子集(有时称为“高影响数据(high impact data)”)缓存在被配置成为高影响数据提供缓存服务的集中式存储库(centralized repository)中。例如,在存储层中运行的一组分析服务器和/或计算过程(在此称为“摄取处理器”)可以被配置为将所存储数据的子集作为高影响数据推送到集中式存储库中。推送到集中式存储库的高影响数据可以包括各种场景计算服务可能感兴趣的各种类别的存储数据。在一个示例中,在集中式存储库中缓存的针对存储层中存储的文档的高影响数据可以包括文档名称、文档扩展名(例如,“txt”)、上次更新日期/时间、文档的查看次数、对文档的修改次数、可以检索到文档的通用资源定位符(URL)和/或与文档相关的其他合适的信息。通过缓存高影响数据,用户可以容易地从集中式存储库中检索文档和/或其其他相关信息。
场景计算服务可以被配置为从集中式存储库检索缓存的高影响数据并对存储在存储层中的底层数据的改变做出反应以提供相应的用户体验。例如,在上面的文档示例中,搜索索引服务可能对用于更新搜索索引的标题、正文、附录或其他合适类型的文档内容的改变感兴趣。另一方面,文档元数据服务可能对用于更新对文档的查看/编辑的数量的文档的查看者列表和文档的最后修改的时间戳感兴趣。
在某些分布式存储系统中,一旦在存储的文档中检测到任何改变,就向所有场景计算服务发送一揽子通知(blanket notification)以供进一步处理。检测到的改变的示例可以包括对文档的属性的写操作。然而,这种一揽子通知会导致分布式存储系统中计算资源的浪费。首先,一揽子通知的传输可能涉及资源密集型通知调用(例如,超文本传输协议或“HTTP”请求或远程过程调用)。其次,不同的场景计算服务可能对文档不同属性的改变感兴趣。例如,在文档示例中,为更新搜索索引,搜索索引服务可能对文档查看者列表的改变或对文档的修改次数不感兴趣。另一方面,文档元数据服务可能对文档正文或标题的改变不感兴趣。因此,一揽子通知中指示的改变可能适合于一些场景计算服务,但与其他场景计算服务无关。尽管一揽子通知中指示的改变不相关,但所有场景计算服务都可能花费额外的计算、网络、输入/输出和/或其他合适类型的资源来确定一揽子通知中指示的改变是否与个人场景计算服务相关。例如,可能花费各种类型的资源来执行集中式存储库处的高影响数据的附加读取操作。这种读取操作可能导致托管集中式存储库的服务器上的高计算负载、计算机网络中的高网络带宽消耗和/或对分布式存储系统的性能和/或操作的其他负面影响。
所公开技术的若干实施例可以通过在分布式存储系统中实现文档属性的粒度改变检测来解决上述缺陷的至少一些方面。在某些实现方式中,分布式存储系统可以包括存储层,该存储层具有一个或多个后端服务器、一个或多个集中式存储库服务器、以及一个或多个场景计算服务器(它们通过计算机网络彼此可操作地耦合)。集中式存储库服务器可以被配置成为存储在存储层中的数据的子集提供集中式存储库和缓存服务。场景计算服务器可以被配置为响应于存储在后端存储服务器中的文档的某些属性的改变而提供各种类型的计算服务,例如上述的搜索索引服务和文档元数据服务。
后端服务器可以被配置为提供各种数据存储服务以促进存储、检索、修改、删除和/或其他合适类型的数据管理操作。后端服务器还可以被配置为提供摄取处理器,该摄取处理器被配置为分析在存储层处接收的以及要存储在存储层中的新的和/或更新的数据(new and/or updated data)。在某些实现方式中,摄取处理器可以被配置为从场景计算服务接收注册或其他合适类型的指示。注册单独地指示文档的一个或多个属性,相应的场景计算服务希望接收到所述一个或多个属性的改变的通知。这种注册可以作为列表、表格或其他合适的数据结构保存在数据存储区(data store)中。
在某些实施例中,集中式存储库可以包括改变检测器,该改变检测器被配置为对在摄取处理器处接收的数据项的一个或多个属性执行粒度改变检测。尽管下面将改变检测器描述为集中式存储库的一部分,但在其他实施例中,改变检测器也可以配置为摄取处理器的一部分、分布式存储系统中的独立计算服务或其他合适的配置。
使用文档为例,当在摄取处理器处接收到文档的新版本时,摄取处理器可以从文档中提取某些高影响数据并将提取的高影响数据写入集中式存储库。反过来,集中式存储库(或其组件)处的改变检测器可以被配置为将接收到的新版本中的文档的属性的各种值与存储在集中式存储库中的先前版本中的属性的各种值进行比较。例如,改变检测器可以比较文档的正文和/或标题以确定是否在正文和/或标题中检测到改变。在另一个示例中,改变检测器还可以将新版本中的文档的查看次数和/或修改次数与旧版本中的查看次数和/或修改次数进行比较。
响应于检测到属性中的至少一个的改变,改变检测器可以被配置为向摄取处理器提供关于检测到的改变的指示。作为响应,摄取处理器可以被配置为生成通知并将通知发送到那些已经注册为接收针对属性中的检测到的改变的通知的场景计算服务。例如,当检测到文档的正文和/或标题的改变时,摄取处理器可以被配置为向搜索索引服务而不是文档元数据服务发送通知。另一方面,当检测到查看次数或修改次数的改变时,摄取处理器可以被配置为向文档元数据服务而不是搜索索引服务发送通知。因此,可以减少摄取处理器发送的通知数量以及用于验证通知相关性的后续读取操作,从而使得在分布式存储系统降低计算负载、降低网络带宽消耗和/或降低其他资源的消耗。
在某些实施例中,检测哪一个或多个属性已经改变可以包括将哈希函数与文档的属性相关联并且在摄取处理器处执行相关联的哈希函数以促进确定相应的属性是否已经改变。例如,摄取处理器可以被配置为将与各个属性相关联的哈希函数应用于接收到的文档新版本中的属性的值以导出哈希值(在本文中称为“新哈希值”或Hnew)。然后,摄取处理器可以将生成的新哈希值作为高影响数据的一部分推送到中央存储库。
在接收到新的哈希值时,集中式存储库处的改变检测器可以被配置为将新的哈希值与存储在集中式存储库中的文档的相同属性的先前值(本文称为“先前的哈希值”或Hold)进行比较。如果新的哈希值与先前的哈希值不同,则改变检测器可以向摄取处理器指示检测到文档属性的改变。如果新的哈希值匹配或基本匹配(例如,大于90%匹配度)先前的哈希值,则改变检测器可以指示相应的属性没有改变。
在摄取处理器中执行哈希函数可以利用存储层的高可扩展性来降低存储层中的计算资源成为瓶颈的风险。此外,通过选择适合每个属性的哈希函数,如下文更详细描述的,可以进一步减少存储层处的计算资源的消耗并且导出的哈希值可以具有小的数据大小。产生的值的小数据大小可以导致集中式存储库中的低存储开销、低网络带宽消耗以及在确定属性是否已改变时进行高效的哈希比较。
所公开的技术的各方面还涉及选择合适的哈希函数以与存储的数据项(例如上述文档)的各个属性相关联。在某些实现方式中,多个不同的哈希函数可以与文档的相应属性静态关联。例如,返回输入值作为输出的身份函数可用于查看次数和文档修改次数。在另一个示例中,xxHash函数可以与文档的正文相关联。
在进一步的实现方式中,哈希函数与属性的关联可以是动态的,例如基于属性值的数据类型和/或大小。例如,身份函数可用于其值为整数或短字符串(例如,少于10个或其他合适的字符数)的属性。因此,查看次数和文档修改次数可以与身份函数相关联。对于不是整数或短字符串的值,其他哈希函数被配置为将属性值的数据映射到与值的数据大小不同的固定大小的哈希值。例如,Fowler-Noll-Vo(FNV)哈希函数可以与具有四到二十字节数据大小的值的属性相关联。xxHash64函数可以与具有大数据大小(例如,大于20个字节)的值的属性相关联。安全哈希启发式256(SHA256)函数可应用于当不能容忍相同数据的冲突时(例如当要检测的改变数量高于阈值时)的属性的值。例如,当几乎需要检测属性的每一个改变时,将SHA256应用于属性值可以产生256位哈希值(或其他阈值位哈希值),其产生冲突的风险要低得多。
在某些实现方式中,摄取处理器可以被配置为利用将哈希函数与属性的值大小范围相关联的配置文件。例如,具有小于或等于四个字节的值的属性可以与身份函数相关联,而具有五到二十个字节之间的值的属性可以与FNV哈希函数相关联。值大于二十字节的属性可能与xxHash64相关联。此外,在任何情况下都不能容忍针对其的冲突的属性可以与SHA256相关联。
在其他实现方式中,摄取处理器可以被配置为使用成本函数来呈现哈希函数的动态选择作为优化操作。不同的哈希函数具有不同的存储占用空间(例如,输出哈希值大小)、计算资源成本(例如,计算哈希值的计算成本)、冲突率和/或其他合适的特性。因此,优化操作可以定义为:对于属性,选择这样的哈希函数,其最小化处理器周期和存储开销,同时将冲突数量保持在阈值以下,并最小化必须读取以进行完整比较的属性数据总量。示例成本函数J(Hi)可以表示如下:
J(Hi)=WCollision*CRHi+WCPU*CPUHi+Wstorage*StOrageHi+WData*DataHi,
其中CRHi是冲突率,CPUHi是处理器周期,StorageHi是哈希值的存储大小,DataHi∈{PropertySize,StorageHi}并且W是与各个对应参数相关联的权重。
在分布式存储系统运行的同时,与上述参数关联的不同权重可能会发生改变。例如,可用的系统资源(例如,计算或存储)可能会发生改变,从而使计算资源变得丰富。因此,可以调整用于计算资源的权重,以导致为相同的属性选择与可用的系统资源改变之前不同的哈希函数。
所公开技术的附加方面涉及通过将关联在一起的属性分组并为该组属性而不是该组中的每个属性生成哈希值来执行改变检测。不受理论的束缚,认识到数据项(例如,文档)的某些属性经常一起改变。例如,查看次数经常随着对文档的修改次数而改变。因此,将属性组合成一个组并为该组生成哈希值可以允许快速确定该组中的任何属性是否已经改变。如果没有检测到该组的改变,则可以跳过对组中每个属性的完整比较,并且可以将元数据添加到新版本中进行相应的指示。如果检测到组的改变,则可以比较该组中的每个属性以查看哪一个或多个属性已经发生了改变。
根据所公开技术的附加方面,对属性进行分组还可以利用优化操作。如果不同属性之间改变的相关性用于对属性进行分组,则可以设置“分组相关性阈值”,使得针对属性和哈希比较要读取的数据量低于大小阈值和/或被最小化。改变的相关性可以包括这样的数据,其指示当第二属性改变时第一属性可能改变的概率(例如,作为百分比),反之亦然。可以通过属性的历史数据的统计分析或通过其他合适的方式来开发改变的相关性。在一些实施例中,如果属性的值已进行哈希运算,则可以使用组合操作(例如,左移位并执行按位异或)来导出组哈希值。然而,如果属性已经通过身份函数被传递,则可以对属性值的组合(称为组值)执行附加哈希操作以导出组哈希值。在其他实施例中,可以使用多个属性分组,其中一个属性可以是多个组的一部分。
一种用于生成属性分组的技术可以包括维护属性的协方差矩阵。协方差矩阵是这样一种矩阵,其在i,j位置的元素是随机向量的第i个元素和第j个元素之间的协方差(即联合变异性的度量)。协方差矩阵的计算可以简化,使得如果一个属性发生了改变,则该属性的值为1。如果该属性没有发生改变,则该属性的值为0。然后,可以使用聚类启发式来通过将属性Pi分配给现有集群(属性组)来构造分组,如果该属性与已经在集群中的属性组PCj中的一些(或所有)属性充分相关的话(即对应于属性对<Pi,PCj>的协方差矩阵中的值高于阈值Tc)。如果该属性不足够相关(即在协方差矩阵中没有属性Pi的值高于阈值Tc),则可以创建仅包含此属性的新的集群(即新的属性组)。另一个分组启发式可以包括依据聚类相似度函数确定“最接近”的聚类并将属性分配给最接近的聚类(即属性组)。无论使用哪种启发式创建属性分组,为了检测哪些属性已经改变而要读取和比较的数据量可以保持在阈值以下和/或被最小化。
在某些实施方式中,可以在分布式存储系统变得可操作之前计算属性分组,但也可以以离线批处理方式周期性地计算属性分组。在确定了属性分组时,位字段(其中每个位对应一个属性)可用于记录哪个属性已改变。例如,如果相应的属性没有发生改变,则可以将位设置为零。当相应的属性发生改变时,可以将相同的位设置为一。在进一步的实现方式中,可以以在线方式改变属性分组,从而更好地适应数据的时间改变。在进一步的实现方式中,单个属性可以被包括在多个不同的组中。这种包含可以允许随时检测改变(readychange detection)。例如,当检测到一组的改变而另一组中没有检测到时,可以确定两组中的一属性没有发生改变。
附图说明
图1是示出了根据所公开技术的实施例实现粒度改变检测的分布式存储系统的示意图。
图2A-2D是示出了根据所公开技术的实施例执行粒度改变检测的图1的分布式存储系统的某些硬件/软件组件的示意图。
图3A-3C是示出了根据所公开技术的实施例的在签名生成期间图2A-2D的签名组件的某些硬件/软件组件的示意图。
图4是示出了根据所公开技术的实施例实现属性分组的图2A-2D的签名组件的某些硬件/软件组件的示意图。
图5是示出根据所公开技术的实施例的属性的一个示例分组的维恩图(Venndiagram)。
图6A-6C是示出了根据所公开技术的实施例的分布式存储系统中的粒度改变检测的过程的流程图。
图7是适合于图1中分布式存储系统的某些组件的计算设备。
具体实施方式
下面描述了用于数据中心或其他合适的分布式存储系统中的粒度改变检测的系统、设备、组件、模块、例程、数据结构和过程的某些实施例。在以下描述中,包括组件的具体细节以提供对所公开技术的某些实施例的透彻理解。相关领域的技术人员还将理解,该技术可以具有附加实施例。该技术也可以在没有以下参考图1-7描述的实施例的若干细节的情况下实践。
如本文所用,术语“分布式存储系统”通常是指具有路由器、交换机、网桥和其他网络设备的互连计算机系统,路由器、交换机、网桥和其他网络设备通过有线或无线网络链接将大量计算机服务器、网络存储设备和其他类型的计算设备彼此互连和/或与外部网络(例如因特网)互连。各个服务器或存储节点可以包括一个或多个永久存储设备,例如硬盘驱动器、固态驱动器或其他合适的计算机可读存储介质。
此处还使用的“文档”通常是指包含描述和/或识别计算机文件的各种类型的数据和元数据的计算机文件。各种类型的数据和元数据在本文中被称为文档的“属性”。示例属性可以包括标题、内容正文、作者、通用资源定位符(URL)、查看次数、编辑次数和/或与文档相关的其他合适信息。每个属性都可以定义为一个包含相应值的参数。例如,作者属性可以有包含名称的值,例如“Nick Jones”。查看次数属性可以包括包含整数的值,例如“4”。
如本文所用,文档的“版本”通常是指文档的状态或形式。版本可以由版本号、编辑日期/时间、编辑器名称、保存的日期/时间和/或其他合适的属性来定义。“新版本”通常是指对文档的数据和/或元数据的任何方面具有至少一个改变的文档状态。例如,文档的新版本可以包括对文档内容的编辑或对文档的一个或多个属性(例如,查看次数)的改变。“先前版本”是文档的另一种状态,可以直接或间接地从中导出新版本。
此处还使用的“场景计算服务”通常是指通过计算机网络(例如因特网)提供的一个或多个计算资源,其被设计为提供设计的用户体验。示例场景计算服务包括软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。SaaS是一种软件分发技术,其中软件应用程序由云服务提供商托管在例如数据中心,并由用户通过计算机网络访问。PaaS通常是指无需下载或安装即可通过计算机网络递送操作系统和相关服务。IaaS通常是指用于支持存储装置、硬件、服务器、网络设备或其他组件的外包设备,所有这些都可通过计算机网络访问。
各种场景计算服务可以被配置为提供不同的用户体验。一个示例场景计算服务可以被配置为将文档的各种属性编译成搜索索引。在另一个示例中,另一个场景计算服务可以被配置为接收表示用户查看文档的信号,并且响应于接收到的信号,向其他用户提供电子消息以推荐查看相同文档。在进一步的示例中,场景计算服务可以被配置为提供其他合适的用户体验。
在某些分布式存储系统中,一旦检测到文档中的任何改变,就会向所有场景计算服务发送一揽子通知以进行进一步处理。然而,这种一揽子通知可能导致分布式存储系统中计算资源的浪费。首先,一揽子通知的传输可能涉及资源密集型通知调用(例如,HTTP请求或远程过程调用)。其次,不同的场景计算服务可能对文档不同属性的改变感兴趣。例如,为更新搜索索引,搜索索引服务可能对文档查看者列表的改变或对文档进行的修改次数不感兴趣。另一方面,文档元数据服务可能对文档正文或标题的改变不感兴趣。因此,一揽子通知中指示的改变可能适合于一些场景计算服务,但与其他场景计算服务无关。
尽管一揽子通知中指示的改变不相关,但所有场景计算服务都可以扩展额外的计算、网络、输入/输出和/或其他合适类型的资源以确定一揽子通知中指示的改变是否与各个场景计算服务相关。例如,可能会花费各种类型的资源来执行额外的读取操作。这种读取操作会导致高计算负载、计算机网络中的高网络带宽和/或对分布式存储系统的性能和/或操作的其他负面影响。
所公开技术的若干实施例可以通过在分布式存储系统中实现文档属性的粒度改变检测来解决上述缺陷的至少一些方面。在某些实现方式中,可以在分布式存储系统中实现改变检测器,以确定与同一文档的先前版本相比时,文档的新版本中哪一个或多个属性发生了改变。基于所确定的一个或多个属性,可以选择性地将通知发送到先前注册为接收一个或多个属性的改变的通知的场景计算服务。因此,可以避免对检测到的属性改变不感兴趣的场景计算服务的昂贵的HTTP请求和/或远程过程调用。此外,还可以避免额外的计算资源来确定通知中指示的改变是否实际上与场景计算服务相关。因此,与使用一揽子通知相比,分布式存储系统的计算负载、网络带宽和/或其他计算资源的消耗可以减少,如下面参考图1-7更详细地描述的。
图1是图示根据所公开技术的实施例实现粒度改变检测的计算环境100的示意图。如图1所示,计算环境100可以包括对应用户101的一个或多个客户端设备102和通过诸如因特网之类的计算机网络(未示出)互连到客户端设备102的分布式存储系统103。尽管图1中示出了计算环境100的特定组件,但在其他实施例中,计算环境100也可以包括附加的和/或不同的组件或布置。例如,在某些实施例中,计算环境100还可以包括其他合适配置中的附加网络存储设备、网络设备、主机和/或其他合适组件(未示出)。
客户端设备102均可以包括计算设备,该计算设备便于用户101经由计算机网络访问由分布式存储系统103提供的云存储服务。在一个实施例中,客户端设备102均可以包括台式计算机。在其他实施例中,客户端设备102还可以包括膝上型计算机、平板计算机、智能电话或其他合适的计算设备。尽管图1中出于说明目的示出了两个用户101和101’,但是在其他实施例中,计算环境100可以促进其他合适数量的用户101访问由计算环境100中的分布式存储系统103提供的云存储或其他类型的计算服务。
如图1所示,分布式存储系统103可以包括通过计算机网络107可操作地耦合的一个或多个前端服务器104、一个或多个后端服务器105、一个集中式存储库106和一个或多个场景服务器108。后端服务器105可以可操作地耦合到被配置为存储用户数据的网络存储装置112。在所示示例中,存储在网络存储装置112处的用户数据被示为文档110。在其他示例中,用户数据还可以包括图像文件、视频文件或其他合适类型的计算机文件。尽管在图1中示出了分布式存储系统103的特定组件,但是在其他实现方式中,分布式存储系统103还可以包括附加的和/或不同的组件。
计算机网络107可以包括任何合适类型的网络。例如,在一个实施例中,计算机网络107可以包括以太网或快速以太网网络,其具有路由器、交换机、负载平衡器、防火墙和/或实现融合以太网上的RDMA(RoCE)协议的其他合适的网络组件。在其他实施例中,计算机网络107还可以包括具有相应网络组件的InfiniBand网络。在进一步的实施例中,计算机网络107还可以包括上述和/或其他合适类型的计算机网络的组合。
前端服务器104可以被配置为通过客户端设备102与用户101交互。例如,前端服务器104可以被配置为在客户端设备102上提供用户界面(未示出)以允许相应的用户101上传、修改、检索存储在网络存储装置112中的文档110或对存储在网络存储装置112中的文档110执行其他合适的操作。在另一个示例中,前端服务器104还可以被配置为提供用户门户(未示出),其允许用户101设置保留、隐私、访问或其他合适类型的要对网络存储装置112中的文档110实施的策略。在某些实施例中,前端服务器104可以包括web服务器、安全服务器和/或其他合适类型的服务器。在其他实施例中,前端服务器104可以从分布式存储系统103中省略,而是由外部计算系统提供,例如云计算系统(未示出)。
后端服务器105可以被配置为提供各种数据存储服务以促进对网络存储装置112中的文档110的存储、检索、修改、删除和/或其他合适类型的数据管理操作。例如,后端服务器105可以被配置为将文档110和/或文档110的索引存储在分片(shard)中。后端服务器105还可以被配置为响应于来自例如用户101的适当查询来提供用于执行来自各种分片的数据的扇出联合的设施。在进一步的示例中,后端服务器105还可以被配置为提供用于执行重复减少、数据压缩、访问控制和/或其他合适操作的设施。
后端服务器105还可以被配置为提供摄取处理器107(图2A-2D中所示),其被配置为分析在网络存储装置112处接收并存储在网络存储装置112中的文档110的新的和/或更新的数据。在某些实现方式中,摄取处理器107可以被配置为从场景服务器108和/或对应的场景计算服务接收注册或其他合适类型的指示。注册可以单独地指示文档110的一个或多个属性,相应的场景服务器或场景计算服务想要接收所述属性的改变的通知。这样的注册可以作为网络存储装置112中的通知列表128(图2D所示)、表格或其他合适数据存储区中的其他合适数据结构来维护。
虽然后端服务器105可以适合于执行大量数据的存储和分析,但是后端服务器105和/或网络存储装置112中使用的数据结构可能不适合提供对各个数据项(例如文档110)的随机访问。例如,后端服务器105可能无法独立于文档110在列表中的位置或列表的大小而以恒定时间访问列表中的文档110。此外,当用户请求存储的文档时,后端服务器105可以执行多个操作(例如,扇出联合)以解析间接引用。执行多个操作可能会导致服务用户请求的高的延时和计算负载。
集中式存储库106可以被配置为通过向缓存在数据存储区114中的文档110的子集(有时称为“高影响数据”,如图1所示为“数据111”)提供缓存服务来提供对网络存储装置112中存储的文档110的快速随机访问。在某些实施例中,在后端服务器105中运行的摄取处理器107可以被配置为将文档110的存储数据的子集作为数据111推送到集中式存储库106中以存储在数据存储区114中。
推送到集中式存储库106的数据111可以包括各种场景服务器108和/或场景计算服务可能感兴趣的各种类别的存储数据。在一个示例中,对于存储在网络存储装置112中的文档110在集中式存储库106处缓存的数据111可以包括文档名称、文档扩展名(例如,“txt”)、最后更新的日期/时间、文档的查看次数、对文档的修改次数、可以检索到文档的通用资源定位符(URL),和/或与文档相关的其他合适的信息。通过缓存数据111,用户101可以容易地从集中式存储库106中检索文档的信息和/或其他相关信息。
场景服务器108可以被配置为从集中式存储库106检索缓存数据111并对存储在网络存储装置112中的文档110的底层数据的改变做出反应以提供相应的用户体验。例如,搜索索引服务可能对文档110的标题、正文、附录或其他合适类型的内容的改变感兴趣,以用于更新搜索索引(未示出)。另一方面,文档元数据服务可能对文档110的查看次数或查看者列表以及文档110的最后修改的时间戳感兴趣,以用于更新文档110的查看/编辑次数。响应于查看次数的改变,文档元数据服务可以被配置为向例如用户101’发送消息118以通知用户101’其他用户101已经查看和/或编辑了文档110。尽管场景服务器108在图1中被示为物理计算设备,但是在一些实现方式中,场景服务108的功能可以由执行合适指令的适合的服务器(例如,前端服务器104)作为相应的场景计算服务来提供。
在某些分布式存储系统中,一旦在存储的文档110中检测到任何改变,就将改变通知116发送到所有场景服务器108以用于进一步处理。检测到的改变的示例可以包括对文档110的属性的写操作。然而,这样的一揽子通知可能导致分布式存储系统103中计算资源的浪费。首先,改变通知116的传输可以涉及资源密集型通知调用(例如,超文本传输协议或“HTTP”请求或远程过程调用)。
其次,不同的场景服务器或场景计算服务可能对文档110的不同属性的改变感兴趣。例如,为更新搜索索引,搜索索引服务可能对文档110的查看者列表或者对文档110的修改次数的改变不感兴趣。另一方面,文档元数据服务可能对文档110的正文或标题的改变不感兴趣。因此,改变通知116中指示的改变可能适合于一些场景计算服务但与其他场景计算服务无关。尽管改变通知116中指示的改变不相关,但所有场景计算服务都可以扩展额外的计算、网络、输入/输出和/或其他合适类型的资源以确定改变通知116中指示的改变是否是与各个场景计算服务相关。例如,可以花费各种类型的资源来在集中式存储库106处执行数据111的附加读取操作。这样的读取操作可能导致托管集中式存储库106的服务器上的高计算负载、计算机网络107中的高网络带宽,和/或对分布式存储系统103的性能和/或操作的其他负面影响。
所公开技术的若干实施例可以通过在分布式存储系统103中实现文档属性的粒度改变检测来解决上述缺点的至少一些方面。在某些实现方式中,可以在集中式存储库106中实现改变检测器122以确定与同一文档110的先前版本相比,文档110的新版本中的哪一个或多个属性已经发生了改变。基于所确定的一个或多个属性,可以将改变通知116选择性地发送到服务器108,服务器108先前被注册为接收一个或多个属性改变的通知。因此,可以避免对于对检测到的属性改变不感兴趣的场景计算服务的昂贵HTTP请求和/或远程过程调用。此外,也可以避免用于确定改变通知116中指示的改变是否实际上与场景服务器108相关的额外的计算资源。因此,当与使用一揽子通知相比时,分布式存储系统103的计算负载、网络带宽和/或其他计算资源的消耗可以减少,如下面参照图2A-2D更详细地描述的。
图2A-2D是图示根据所公开技术的实施例执行粒度改变检测的图1的分布式存储系统103的某些硬件/软件组件的示意图。在图2A-2D和这里的其他图中,为了清楚起见省略了图1的计算环境100和分布式存储系统103的某些组件。例如,在图2A-2D中,为了便于说明,分布式存储系统103中省略了前端服务器104和计算机网络107。在图2A-2D和本文的其他图中,各个软件组件、对象、类、模块和例程可以是用C、C++、C#、Java和/或其他合适的编程语言编写为源代码的计算机程序、过程或进程。组件可以包括但不限于一个或多个模块、对象、类、例程、属性、进程、线程、可执行文件、库或其他组件。组件可以是源代码或二进制形式。组件可能包括编译前的源代码方面(例如,类、属性、过程、例程)、已编译的二进制单元(例如,库、可执行文件)或在运行时实例化和使用的工件(例如,对象、进程、线程)。
系统内的组件在系统内可以采用不同的形式。作为一个示例,包括第一组件、第二组件和第三组件的系统可以但不限于包含具有作为源代码中的属性的第一组件、作为二进制编译库的第二组件以及作为在运行时创建的线程的第三组件的系统。计算机程序、过程或进程可被编译成对象、中间或机器代码并被呈现以供个人计算机、网络服务器、膝上型计算机、智能电话和/或其他合适的计算设备的一个或多个处理器执行。
同样,组件可以包括硬件电路。本领域普通技术人员将认识到,硬件可以被认为是化石软件(fossilized software),而软件可以被认为是液化硬件(liquefied hardware)。仅举一个示例,组件中的软件指令可以烧录到可编程逻辑阵列电路中,或者可以设计为具有适当集成电路的硬件电路。同样,硬件可以由软件来模拟。源代码、中间代码和/或目标代码和相关联数据的各种实现方式可以存储在计算机存储器中,该计算机存储器包括只读存储器、随机存取存储器、磁盘存储介质、光存储介质、闪存设备和/或其他合适的计算机可读存储介质(不包括传播信号)。
如图2A所示,后端服务器105可以包括摄取处理器107,以用于处理经由前端服务器104(图1)从用户101的客户端设备102接收的文档110的新版本。文档110可以包括多个属性120。在图示的实施例中,摄取处理器107可以包括彼此可操作地耦合的接口组件130、签名组件132和通知组件134。在其他实施例中,摄取组件107还可以包括网络、安全、数据库或其他合适类型的组件。
接口组件130可以被配置为接收文档110的新版本并且将接收到的文档110提供给签名组件132以用于进一步处理。接口组件130还可以被配置为对网络存储装置112中的文档110进行存储、检索或执行其他合适的文件操作。例如,在所示实施例中,接口组件130可以被配置为将接收到的文档110新版本的副本作为与先前版本分开的文件存储在网络存储装置112中,或替换文档110的先前版本。
签名组件132可以被配置为生成对应于一个或多个属性120的签名121。在某些实施例中,属性120的签名121可以包括属性120的哈希值。例如,文档110的内容正文的签名121可以包括预设长度的随机字母数字串。在其他实施例中,属性120的签名可以包括属性120的值。例如,文档110的查看次数属性的值可以包括整数“4”。在进一步的示例中,签名121可以包括从文档110的各种属性120导出和/或与其对应的其他合适的值。
如图2A所示,在生成了签名121时,签名组件132可以指示接口组件130将从文档110的新版本中提取的数据111连同签名121一起传输到集中式存储库106以用于粒度改变检测。尽管这里将粒度改变检测的实施例描述为在集中式存储库106中实现,但在其他实施例中,这种粒度改变检测也可以在分布式存储系统103的后端服务器105或其他合适的服务器(未示出)中的一个或多个上实现。
如图2A所示,集中式存储库106可以包括彼此可操作地耦合的改变检测器122和改变指示器124。改变检测器122可以被配置为确定检测哪一个或多个属性已经发生了改变。在某些实施例中,改变检测器122可以被配置为将文档110的新版本的各个签名121与存储在数据存储区114中的先前版本的各个签名121进行比较。响应于确定新版本的签名121相同或基本相同(例如,90%以上相似),改变检测器122可以被配置为指示文档110的对应属性120没有改变。否则,改变检测器122可以被配置为指示相应的属性120已经发生了改变。如图2B所示,在迭代通过了所有签名121(图2A)时,改变指示器124可以被配置为将标识已经被改变的属性120列表的属性ID 123列表发送到在该后端服务器105处的摄取处理器107。
响应于接收到属性ID 123,摄取处理器107的通知组件134可以被配置为从网络存储装置112检索通知列表128。通知列表128可以包括指示哪一个或多个场景服务器108(和/或对应的场景计算服务)对文档110的特定属性120的改变感兴趣的数据。通知列表128可以通过从场景服务器108接收注册数据(未示出),通过分配默认值,或通过其他合适的技术来生成。基于检索到的通知列表128,通知组件134可以被配置为基于属性ID 123确定用于接收改变通知125的一个或多个场景服务器108。在所示示例中,在通知列表128中可以指示第一场景服务器108a对由属性ID 123之一标识的属性120的改变感兴趣。因此,改变通知116仅被发送到第一场景服务器108a但不发送到第二场景服务器108b和第三场景服务器108c。
如图2C所示,在接收到改变通知116时,第一场景服务器108a可以被配置为向用户101’提供消息118以例如将文档110的属性120的检测到的改变通知给用户101’或提供其他合适的用户体验。如图2D所示,当用户101提供对属性120’中的一个或多个有不同改变的文档110’的另一版本时,通知组件134可以被配置为,当检测到不同属性120’的改变时(如属性ID 123’所指示的那样),向第三场景服务器108c提供改变通知116’,而不是向第一场景服务器108a或第二场景服务器108b提供改变通知116’。因此,可以避免对一个或多个场景服务器108的资源密集型通知调用以及由这样的一个或多个场景服务器108进行的额外读取操作。
图3A-3C是图示根据所公开技术的实施例在签名生成期间图2A-2D的签名组件132的某些硬件/软件组件的示意图。如图3A所示,签名组件132可以包括彼此可操作地耦合的函数选择器142和签名生成器146。函数选择器142可以被配置为基于属性120的值来选择用于生成签名121的函数。如下文更详细描述的,函数选择器142可以被配置为以各种方式选择函数。签名生成器146可以被配置为将所选函数(例如,哈希函数)应用于属性120的值以生成签名121。
所公开技术的各方面涉及选择与文档110的各个属性120相关联的合适的函数,以便将后端服务器104(backed server)(图1)处的计算资源消耗维持在阈值以下或甚至最小化。在某些实施方式中,如图3A所示,多个不同的哈希函数可以被静态分配并与文档110的对应属性120相关联,如存储在网络存储装置112中的函数列表137所指示的。例如,返回输入值作为输出的身份函数可用于查看的次数或对文档的修改次数,因为计算这些值的哈希值的成本可能超过用于比较这些值的计算资源的节省。在另一示例中,xxHash函数可以与文档110的正文相关联,因为正文可能包括大量数据。
在进一步的实现方式中,哈希函数与属性120的关联可以是动态的,例如基于属性120的值的数据类型和/或大小或其他合适的函数标准138,如图3B所示。例如,函数选择器142可以被配置为确定属性120的值的数据类型和/或大小,并且根据函数标准138为属性120的身份函数分配是整数或短字符串(例如,小于十或其他适当的字符数量)的值。因此,查看次数和对文档的修改次数可以与身份函数相关联。在其他示例中,函数选择器142可以被配置为根据函数标准138将Fowler-Noll-Vo(FNV)哈希函数分配给具有四到二十字节数据大小的值的属性120。在进一步的示例中,该函数选择器142还可以被配置为根据函数标准138将xxHash64函数分配给具有大数据大小(例如,大于20字节)的值的属性120。在另外的示例中,函数选择器142可以被配置为将安全哈希启发式256(SHA256)函数分配给具有可能产生哈希值冲突的值的属性120以及当无法容忍此类冲突时。
在进一步的实现方式中,如图3C所示,函数选择器142可以被配置为使用成本函数139来将哈希函数的动态选择呈现为优化操作。不同的哈希函数可以具有不同的存储占用空间(例如,输出哈希值大小)、计算资源成本(例如,计算哈希值的成本)、冲突率和/或其他合适的特性。因此,优化操作可以定义为:对于属性120,选择最小化处理器周期和存储开销的哈希函数,同时将冲突数量保持在阈值以下,并最小化针对整个比较过程必须读取的属性数据总量。示例成本函数J(Hi)可以表示如下:
J(Hi)=WCollision*CRHi+WCPU*CPUHi+WStorage*StorageHi+WData*DataHi,
其中CRHi为冲突率,CPUHi为处理器周期,StorageHi为哈希值的存储大小,DataHi∈{PropertySize、Storagem}并且W是与各个对应参数相关联的权重。
在分布式存储系统103可操作的同时,与上述参数相关联的不同权重可能发生改变。例如,可用的系统资源会发生改变,从而使计算资源变得丰富。如这样,可以调整用于计算资源的权重以得到为相同的属性120选择与可用系统资源的改变之前不同的哈希函数。
图4是图示根据所公开技术的实施例实现属性分组的图2A-2D的签名组件的某些硬件/软件组件的示意图。如图4所示,签名组件132还可以包括分组模块140,分组模块140被配置成将文档110的一些属性120分组为一个集合,生成该集合的签名121,并允许在集中式存储库106(图2A)处的改变检测器122(图2A)高效地确定哪一个或多个属性120已经改变。
在某些实施方式中,分组组件140可以被配置为将相互关联的属性120分组并且为属性120的集合而不是该集合中的每个属性120生成签名121。不受理论束缚,认识到文档110的某些属性120经常一起改变。例如,查看次数经常随着对文档110的修改次数而改变。因此,将属性120组合成一个组或集合并为该集合生成哈希值可以允许快速确定是否集合中的任何属性120已经改变。例如,如果没有检测到集合的改变,则改变检测器122可以跳过集合中的每个属性120的完全比较。如果检测到集合的改变,则可以比较该集合中的每个属性120以查看属性120中的哪一个或多个已经基于函数列表137、函数标准138或成本函数139(如上文关于图3A-3C所述)发生了改变。
根据所公开技术的附加方面,对属性120进行分组还可以利用优化操作。如果不同属性120之间改变的相关性用于对属性120进行分组,则可以设置“分组相关性阈值”,使得要针对属性120读取的数据量和哈希比较被保持在大小阈值以下和/或被最小化。在一些实施例中,如果属性120的值已被哈希,则可以使用组合操作(例如,左移并执行按位异或)来生成组哈希值作为该组的签名121。然而,如果属性120已经通过身份函数被传递,则可以对属性值的组合执行额外的哈希操作以生成组哈希值。在其他实施例中,可以使用属性120的多个分组,其中一个属性120可以是多个组或集合的一部分。
一种用于生成属性分组的技术可以包括维护属性120的协方差矩阵(未示出)。可以简化协方差矩阵的计算,使得如果属性120已经改变,则属性120的值为1。如果属性120没有改变,则属性120的值为0。如果属性120是与已经在集群中的属性组PCj中的一些(或所有)属性120充分相关(即,与属性对<Pi,PCj>相对应的协方差矩阵中的值高于阈值Tc),则可以使用聚类启发式通过将属性120Pi分配给现有的集群(属性组)来构造分组。如果属性120不足够相关,即在协方差矩阵中没有属性Pi的值高于阈值Tc,则可以创建仅包含该属性的新集群(即新的属性组)。另一种分组启发式可以包括依据集群相似度函数确定“最接近的”集群,并将属性120分配给最接近的集群(即,属性组)。不管使用哪种启发式来创建属性分组,为了检测哪些属性120已经改变而要读取和比较的数据量可以保持在阈值以下和/或被最小化。
在某些实现方式中,可以在分布式存储系统103变得可操作之前计算属性分组,但也可以以离线批处理或其他合适的处理方式定期计算属性分组。在确定了属性分组时,每位对应一个属性120的位字段可用于记录组中的哪个属性120已经发生了改变。例如,如果相应属性120中没有发生改变,则可以将位设置为零。当相应的属性已经发生改变时,系统的位可设置为1。在进一步的实现方式中,可以在线方式改变属性分组,从而更好地适应数据的时间改变。
在进一步的实现方式中,单个属性120可以被包括在多个不同的属性组中。这种包含可以允许随时检测改变。例如,如图5所示,第一组150a可以包括表示为圆圈的四个属性120,而第二组150b也可以包括四个属性120’。第一和第二组150a和150b共享共同的属性120”。如此,当检测到第一组150a的改变但没有检测到第二组150b的改变时,可以确定第一组150a和第二组150b二者中的共享属性120”没有发生改变。
图6A-6C是示出根据所公开技术的实施例的分布式存储系统中的粒度改变检测过程的流程图。尽管下面在图1的计算环境100的上下文中描述了过程的实施例,但是在其他实施例中,过程也可以在具有附加和/或不同组件的其他计算环境中实现。
如图6A所示,过程200可以包括在阶段202处接收文档的新版本。在某些实施例中,文档的新版本可以具有存储在分布式存储系统103中的对应的先前版本(图1)。在其他实施例中,分布式存储系统103中可能不存在文档的先前版本。过程200然后可以包括在阶段204处比较接收的文档的新版本的各个属性。可以应用比较属性的各种技术。某些示例技术在上文参考图2A-2D描述以及在下文参考图6B描述。过程200还可以包括在阶段206处识别其值在接收到的文档新版本中已经改变的属性。在识别到其值已经改变的属性时,过程200可以继续向先前注册为接收关于属性的改变的通知的场景服务器或场景计算服务发送通知。
图6B图示了比较文档的各个属性的示例操作。如图6B所示,操作可以包括比较属性值210的签名(例如,哈希值),包括在阶段212处识别各个属性的值。操作可以可选地包括为每个属性选择函数以在阶段214处生成签名。上面参考图3A-3C描述了用于选择函数的各种示例技术。然后,操作可以包括将所选函数应用于相应属性的值以在阶段216处生成签名。基于生成的签名,操作可以包括在阶段218处检测属性中的一个或多个的改变。
图6C图示了通过将属性分组为集合来检测属性改变的示例操作。如图6C所示,操作可以包括在阶段222处将属性分组为集合。上面参考图4描述了用于将属性分组的示例技术。然后操作可以包括在阶段224处为每个集合生成组签名。对于每个集合,操作可以包括基于组签名确定是否已经检测到集合的改变的决策阶段224。响应于确定未检测到集合的改变,操作可以包括将集合中的所有属性标记为未改变。响应于确定已经检测到集合的改变,操作可以包括通过执行诸如上面参考图6B描述的那些操作来在阶段228处检测集合中的一个或多个属性的改变。
图7是适合于图1中计算环境100的某些组件的计算设备300。例如,计算设备300可以适合于图1的客户端设备102、前端服务器104、后端服务器105、集中式存储库106和场景服务器108。在非常基本的配置302中,计算设备300可以包括一个或多个处理器304和系统存储器306。存储器总线308可以用于处理器304和系统存储器306之间的通信。
取决于期望的配置,处理器304可以是任何类型的,包括但不限于微处理器(μR)、微控制器(μC)、数字信号处理器(DSP)或其任何组合。处理器304可以包括一级或多级缓存,例如一级高速缓存310和二级高速缓存312、处理器核心314和寄存器316。示例处理器核心314可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核心(DSP Core)或它们的任意组合。示例存储器控制器318也可以与处理器304一起使用,或者在一些实现方式中,存储器控制器318可以是处理器304的内部部分。
取决于所期望的配置,系统存储器306可以是任何类型的,包括但不限于易失性存储器(例如RAM)、非易失性存储器(例如ROM、闪存等)或其任何组合。系统存储器306可以包括操作系统320、一个或多个应用322和程序数据324。在图7中通过内部虚线内的那些组件来说明该基本配置302。
计算设备300可以具有附加特征或功能以及附加接口以促进基本配置302与任何其他设备和接口之间的通信。例如,总线/接口控制器330可用于通过存储接口总线334促进基本配置302和一个或多个数据存储设备332之间的通信。数据存储设备332可以是可移动存储设备336、不可移动存储设备338或其组合。可移动存储设备和不可移动存储设备的示例包括:磁盘设备(例如软盘驱动器和硬盘驱动器(HDD)),光盘驱动器(例如光盘(CD)驱动器或数字通用磁盘(DVD)驱动器),固态驱动器(SSD),以及磁带驱动器等等。示例计算机存储介质可以包括以用于存储信息(例如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。术语“计算机可读存储介质”或“计算机可读存储设备”不包括传播信号和通信介质。
系统存储器306、可移动存储设备336和不可移动存储设备338是计算机可读存储介质的示例。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能磁盘(DVD)或其他光存储、磁盒、磁带、磁盘存储或其他磁存储设备,或可用于存储所期望的信息并可由计算设备300访问的任何其他介质。任何此类计算机可读存储介质都可以是计算设备300的一部分。术语“计算机可读存储介质”不包括传播信号和通信介质。
计算设备300还可以包括用于促进从各种接口设备(例如,输出设备342、外围接口344和通信设备346)经由总线/接口控制器330到基本配置302的通信的接口总线340。示例的输出设备342包括图形处理单元348和音频处理单元350,其可以被配置为经由一个或多个A/V端口352与各种外部设备(例如显示器或扬声器)通信。示例外围接口344包括串行接口控制器354或并行接口控制器356,其可被配置为经由一个或多个I/O端口358与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其他外围设备(例如,打印机、扫描仪等)的外部设备通信。示例通信设备346包括网络控制器360,其可以被布置为促进经由一个或多个通信端口364在网络通信链路上与一个或多个其他计算设备362的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以由计算机可读指令、数据结构、程序模块或调制数据信号中的其他数据来体现,例如载波或其他传输机制,并且可以包括任何信息传递介质。“调制数据信号”可以是这样一种信号,其一个或多个特性被设置或改变(以在信号中编码信息的方式)。作为示例而非限制,通信介质可以包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(RF)、微波、红外(IR)和其他无线介质的无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质。
计算设备300可以实现为小外形规格便携式(或移动)电子设备的一部分,例如手机、个人数字助理(PDA)、个人媒体播放器设备、无线web手表设备、个人耳机设备、特定应用设备或包含上述任何功能的混合设备。计算设备300也可以被实现为包括膝上型计算机配置和非膝上型计算机配置二者的个人计算机。
从上文可以意识到,本公开的特定实施例已经在本文中出于说明的目的而描述,但是可以在不背离本公开的情况下进行各种修改。此外,一个实施例的许多元素可以与其他实施例组合,以附加于或代替其他实施例的元素。因此,本技术不受所附权利要求的限制。
Claims (10)
1.一种用于对存储在分布式存储系统中的文档进行改变检测的属性分组的方法,所述分布式存储系统具有经由计算机网络彼此互连的多个服务器,所述方法包括:
在所述服务器之一上接收代表存储在所述分布式存储系统中的文档的新版本的数据,所述文档的接收到的新版本具有多个属性,所述多个属性单独地具有描述或标识所述文档的值;以及
响应于接收到代表所述文档的所述新版本的所述数据,将所述多个属性分组为多个组,所述多个组单独地包括所述多个属性的子集;以及
对于所述多个组中的每一个,
基于所述组中属性子集的值来生成所述组的哈希值;
判断所述组的所生成的哈希值是否与所述分布式存储系统中的所述文档的先前版本中对应组的哈希值不同;以及
响应于确定所述组的所生成的哈希值与所述先前版本中的对应组的哈希值没有不同,将指示所述组中的所述属性子集中没有任何属性已经改变的元数据插入到所述文档的所述新版本中。
2.如权利要求1所述的方法,还包括:
响应于确定所述组的所生成的哈希值与所述先前版本中的对应组的哈希值不同,
确定是否所述组中的所述属性子集中的每个属性已经改变;以及
响应于确定所述属性子集中的一个属性已经改变,经由所述计算机网络向一个或多个计算服务发送通知,而不向未被注册为接收所述通知的其他计算服务发送所述通知,所述一个或多个计算服务先前被注册为接收关于所述属性子集中的所述一个属性的改变的通知。
3.如权利要求1所述的方法,其中,将所述多个属性进行分组包括:将所述多个属性分组为多个组,所述多个组单独地包括所述多个属性的子集,所述多个组不共享任何公共属性。
4.如权利要求1所述的方法,其中,将所述多个属性进行分组包括:将所述多个属性分组为多个组,所述多个组单独地包括所述多个属性的子集,所述多个组中的至少两个共享一个或多个属性。
5.如权利要求1所述的方法,其中,将所述多个属性进行分组包括:
识别所述属性中的一个属性与所述属性中的另一个属性之间的改变的相关性,所述改变的相关性包含指示以下可能性的数据:当所述属性中的所述另一个属性被改变时,所述属性中的所述一个属性被改变,反之亦然;
确定所述改变的相关性是否超过分组相关性阈值;以及
响应于确定所述改变的相关性超过所述分组相关性阈值,将所述属性中的所述一个属性和所述属性中的所述另一个属性分组为单个组。
6.如权利要求1所述的方法,其中:
所述属性子集中的每个属性包括对应的哈希值;以及
生成所述组的哈希值包括对所述属性子集的哈希值应用组合操作以导出所述组的哈希值。
7.如权利要求1所述的方法,其中:
所述属性子集中的至少一个属性不包括对应的哈希值;以及
生成所述组的哈希值包括:
将所述组中的所述属性子集的值组合成组值;以及
将哈希函数应用于所述组值以导出所述组的哈希值。
8.如权利要求1所述的方法,其中,将所述多个属性进行分组包括:
计算所述多个属性的协方差矩阵;以及
基于所述协方差矩阵,当所述属性中的一个属性与所述组中的一个组的至少一个属性的协方差高于阈值时,将所述属性中的所述一个分配给所述组中的一个组。
9.如权利要求1所述的方法,其中,将所述多个属性进行分组包括:
计算所述多个属性的协方差矩阵;以及
基于所述协方差矩阵,当所述属性中的一个属性与所述组中的一个组的至少一个属性的协方差不高于阈值时,将所述属性中的所述一个属性分配给新组。
10.一种用于对存储在分布式存储系统中的数据进行改变检测的属性分组的计算设备,所述分布式存储系统具有经由计算机网络彼此互连的多个服务器,所述计算设备包括:
处理器;以及
存储器,其具有能够由所述处理器执行以使所述计算设备执行根据权利要求1-9中的一项的过程的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/392,793 | 2019-04-24 | ||
US16/392,793 US11061936B2 (en) | 2019-04-24 | 2019-04-24 | Property grouping for change detection in distributed storage systems |
PCT/US2020/025625 WO2020219223A1 (en) | 2019-04-24 | 2020-03-30 | Property grouping for change detection in distributed storage systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113767390A true CN113767390A (zh) | 2021-12-07 |
Family
ID=71103409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080030959.3A Pending CN113767390A (zh) | 2019-04-24 | 2020-03-30 | 用于分布式存储系统中的改变检测的属性分组 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11061936B2 (zh) |
EP (1) | EP3959643B1 (zh) |
CN (1) | CN113767390A (zh) |
WO (1) | WO2020219223A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080265B2 (en) | 2019-04-24 | 2021-08-03 | Microsoft Technology Licensing, Llc | Dynamic hash function composition for change detection in distributed storage systems |
US11055274B2 (en) | 2019-04-24 | 2021-07-06 | Microsoft Technology Licensing, Llc | Granular change detection in distributed storage systems |
JP6587245B1 (ja) * | 2019-06-26 | 2019-10-09 | アガサ株式会社 | 申請書判定装置および申請書判定プログラム |
US11640381B2 (en) * | 2019-07-23 | 2023-05-02 | Arm Limited | System, device and/or process for hashing |
US20220180320A1 (en) * | 2020-12-04 | 2022-06-09 | Kinaxis Inc. | Rule-based systems and methods for customizing complex business solutions |
US11514088B2 (en) * | 2021-01-26 | 2022-11-29 | Microsoft Technology Licensing, Llc | Aliased data retrieval for key-value stores |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5898836A (en) | 1997-01-14 | 1999-04-27 | Netmind Services, Inc. | Change-detection tool indicating degree and location of change of internet documents by comparison of cyclic-redundancy-check(CRC) signatures |
US6393434B1 (en) | 1999-09-14 | 2002-05-21 | International Business Machines Corporation | Method and system for synchronizing data using fine-grained synchronization plans |
US6993522B2 (en) | 2001-06-27 | 2006-01-31 | Microsoft Corporation | System and method for resolving conflicts detected during a synchronization session |
TW579463B (en) | 2001-06-30 | 2004-03-11 | Ibm | System and method for a caching mechanism for a central synchronization server |
US7392267B2 (en) | 2002-12-04 | 2008-06-24 | International Business Machines Corporation | Annotation validity using partial checksums |
US7284021B2 (en) | 2004-06-28 | 2007-10-16 | Microsoft Corporation | Determining when a low fidelity property value has changed during a SYNC |
US7962585B2 (en) | 2005-08-15 | 2011-06-14 | Microsoft Corporation | Partial item change tracking and synchronization |
US20090006860A1 (en) | 2007-06-26 | 2009-01-01 | John Gordon Ross | Generating multiple seals for electronic data |
US7991740B2 (en) | 2008-03-04 | 2011-08-02 | Apple Inc. | Synchronization server process |
US9275368B1 (en) | 2012-09-25 | 2016-03-01 | Amazon Technologies, Inc. | Annotation mapping |
US20150127607A1 (en) | 2013-01-10 | 2015-05-07 | Unicom Systems, Inc. | Distributed data system with document management and access control |
US10402792B2 (en) * | 2015-08-13 | 2019-09-03 | The Toronto-Dominion Bank | Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers |
US10642796B2 (en) | 2017-07-18 | 2020-05-05 | International Business Machines Corporation | File metadata verification in a distributed file system |
US11080265B2 (en) | 2019-04-24 | 2021-08-03 | Microsoft Technology Licensing, Llc | Dynamic hash function composition for change detection in distributed storage systems |
US11055274B2 (en) | 2019-04-24 | 2021-07-06 | Microsoft Technology Licensing, Llc | Granular change detection in distributed storage systems |
-
2019
- 2019-04-24 US US16/392,793 patent/US11061936B2/en active Active
-
2020
- 2020-03-30 WO PCT/US2020/025625 patent/WO2020219223A1/en unknown
- 2020-03-30 CN CN202080030959.3A patent/CN113767390A/zh active Pending
- 2020-03-30 EP EP20733502.7A patent/EP3959643B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3959643B1 (en) | 2023-08-23 |
EP3959643A1 (en) | 2022-03-02 |
US11061936B2 (en) | 2021-07-13 |
WO2020219223A1 (en) | 2020-10-29 |
US20200342005A1 (en) | 2020-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11080265B2 (en) | Dynamic hash function composition for change detection in distributed storage systems | |
US11061936B2 (en) | Property grouping for change detection in distributed storage systems | |
US7797298B2 (en) | Serving cached query results based on a query portion | |
US10713589B1 (en) | Consistent sort-based record-level shuffling of machine learning data | |
US7792810B1 (en) | Surrogate hashing | |
US8019882B2 (en) | Content identification for peer-to-peer content retrieval | |
US20150161153A1 (en) | File versions within content addressable storage | |
US10795662B2 (en) | Scalable artifact distribution | |
US7814070B1 (en) | Surrogate hashing | |
JP2016515228A (ja) | 低レイテンシデータアクセス用のデータストリーム分割 | |
CN113728304A (zh) | 分布式存储系统中的粒度改变检测 | |
US20150161154A1 (en) | Files having unallocated portions within content addressable storage | |
US10909086B2 (en) | File lookup in a distributed file system | |
US7801868B1 (en) | Surrogate hashing | |
Ferraro Petrillo et al. | Analyzing big datasets of genomic sequences: fast and scalable collection of k-mer statistics | |
US11296867B2 (en) | Systems and methods for hash chain migration | |
US11030151B2 (en) | Constructing an inverted index | |
Jiang et al. | VESS: An unstructured data-oriented storage system for multi-disciplined virtual experiment platform | |
US10162626B2 (en) | Ordered cache tiering for program build files | |
Gulhane et al. | DDAS using Kerberos with Adaptive Huffman Coding to enhance data retrieval speed and security | |
Hermann et al. | Performance evaluation of meta-data transfer and storage in clusters |
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 |