起见可以省略这样的设备的一些细节(例如,处理器、存储器、数据存储、显示器)。一个或者多个任务或者功能归功于的诸如处理器或者存储器的组件可以是临时地被配置为执行特定任务或者功能的通用组件,或者可以是被制造为执行任务或者功能的专用组件。在此使用的术语“处理器”指一个或者多个电子电路、设备、芯片、处理内核和/或被配置为处理数据和/或计算机程序代码的其他组件。
[0080]在此详细描述中所描述的数据结构和程序代码典型地存储在非瞬态计算机可读存储媒介上,其可以是可以存储代码和/或数据来用于由计算机系统使用的任何设备或者媒介。非瞬态计算机可读存储媒介包括但不限于,易失性存储器、非易失性存储器、电的、磁的、以及光学存储设备,诸如硬盘驱动、磁带、CD(压缩盘)以及DVD(数字多功能盘或者数字视频盘)、固态驱动、和/或现在已知或者将在未来开发的其他非易失性计算机可读媒介。
[0081]在详细的描述中所描述的方法和过程可以体现为代码和/或数据,如上所述该代码和/或数据可以存储在非瞬态计算机可读存储媒介中。当处理器或者计算机系统读取并执行该代码、并且操作存储在媒介上的数据时,处理器或者计算机系统执行体现为代码和数据结构并存储在媒介中的方法和过程。
[0082]此外,可以将方法和过程编程进硬件模块中,诸如但不限于,专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)和现在已知的或者将来开发的其他可编程逻辑设备。这样的硬件模块在被激活时,它执行包含于模块内的方法和过程。
[0083]仅为了说明和描述的目的已经呈现了前述实施例。它们不旨在穷尽或者限制本公开于所公开的形式。因此,许多修改和变型对于本领域的技术人员将是明显的。由所附权利要求而非前述公开来定义范围。
【主权项】
1.一种确保在包括多个存储引擎的分布式数据存储系统中导出数据的一致性的方法,所述方法包括: 在管理主数据的第一存储引擎处: 执行写入由键标识的所述主数据的一部分的请求;以及 传输执行的所述写入的结果至管理与所述键相关联的导出数据的第二存储引擎;以及 在所述第二存储引擎处: 接收包括所述键的执行的所述写入的所述结果; 尝试更新与所述键相关联的所述导出数据; 如果所述更新尝试失败,则在失败的更新的集合中记录所述键;以及如果所述更新尝试成功,则如果存在包括所述键的记录的所述失败的更新的集合则清除包括所述键的记录的所述失败的更新的集合。2.根据权利要求1所述的方法,进一步包括: 在所述第一存储引擎处,向主数据改变的流写入执行的所述写入的所述结果,其中所述结果包括所述键、对于所述键的值和执行的所述写入的序列号;以及在所述第二存储引擎处, 从所述主数据改变的流接收第一条目,所述第一条目包括第一键和第一序列号;以及 如果所述失败的更新的集合包括包含所述第一键和所述第一序列号的记录,则: 更新与所述第一键相关联的导出数据;以及 清除包括所述第一键的记录的所述失败的更新的集合。3.根据权利要求1或2所述的方法,其中在所述失败的更新的集合中记录所述键包括: 如果所述失败的更新的集合包括包含所述键的较早记录,则使用所述序列号改写所述较早记录的较早序列号;以及 如果所述失败的更新的集合不包括包含所述键的较早记录,则向所述失败的更新的集合写入包括执行的所述写入的所述结果的记录。4.根据任一前述权利要求所述的方法,其中在所述失败的更新的集合中,对所述导出数据的失败的更新的每个记录包括对所述主数据的相应执行的写入的所述结果。5.根据任一前述权利要求所述的方法,其中写入结果的序列号是逻辑时间戳。6.根据任一前述权利要求所述的方法,其中: 所述第一存储弓I擎和所述第二存储弓I擎彼此远离。7.根据任一前述权利要求所述的方法,其中: 所述第一存储引擎是数据库;以及 所述第二存储引擎是文件系统。8.根据任一前述权利要求所述的方法,其中所述主数据和所述导出数据是专业的社交联网系统的一部分。9.一种用于确保导出数据的一致性的系统,包括: 主数据存储引擎,所述主数据存储引擎管理主数据并且包括: 至少一个处理器;以及 存储指令的第一非瞬态计算机可读媒介,所述指令在由所述至少一个处理器执行时致使所述主数据存储引擎: 执行写入由键标识的所述主数据的一部分的请求;以及 传输执行的所述写入的结果至导出数据存储引擎;以及 所述导出数据存储引擎,所述导出数据存储引擎管理所述导出数据并且包括: 一个或者多个处理器;以及 存储指令的第二非瞬态计算机可读媒介,所述指令在由所述一个或者多个处理器执行时,致使所述导出数据存储引擎: 接收包括所述键的执行的所述写入的所述结果; 尝试更新与所述键相关联的所述导出数据; 如果所述更新尝试失败,则在失败的更新的集合中记录所述键;以及如果所述更新尝试成功,则如果存在包括所述键的记录的所述失败的更新的集合则清除包括所述键的记录的所述失败的更新的集合。10.根据权利要求9所述的系统,其中: 所述第一非瞬态计算机可读媒介进一步存储指令,所述指令在由所述至少一个处理器执行时,致使所述主数据存储引擎: 向主数据改变的流写入执行的所述写入的所述结果,其中所述结果包括所述键、对于所述键的值和执行的所述写入的序列号;以及 所述第二非瞬态计算机可读媒介进一步存储指令,所述指令在由所述一个或者多个处理器执行时,致使所述导出数据存储引擎: 从所述主数据改变的流接收第一条目,所述第一条目包括第一键和第一序列号;以及 如果所述失败的更新的集合包括包含所述第一键和所述第一序列号的记录,则: 更新与所述第一键相关联的导出数据;以及 清除包括所述第一键的记录的所述失败的更新的集合。11.根据权利要求9或10所述的系统,其中在所述失败的更新的集合中记录所述键包括: 如果所述失败的更新的集合包括包含所述键的较早记录,则使用所述序列号改写所述较早记录的较早序列号;以及 如果所述失败的更新的集合不包括包含所述键的较早记录,则向所述失败的更新的集合写入包括执行的所述写入的所述结果的记录。12.根据权利要求9至11中的任一权利要求所述的系统,其中在所述失败的更新的集合中,对所述导出数据的失败的更新的每个记录包括对所述主数据的相应执行的写入的所述结果。13.根据权利要求9至12中的任一权利要求所述的系统,其中写入结果的序列号是逻辑时间戳。14.根据权利要求9至13中的任一权利要求所述的系统,其中: 所述主数据存储弓I擎和所述导出数据存储弓I擎彼此远离。15.根据权利要求9至14中的任一权利要求所述的系统,其中: 所述主数据存储引擎是数据库;以及 所述导出数据存储引擎是文件系统。16.根据权利要求9至15中的任一权利要求所述的系统,其中所述主数据和所述导出数据是专业的社交联网系统的一部分。17.一种用于确保分布式数据存储系统内导出数据的一致性的装置,包括: 存储在线应用的主数据的第一物理存储设备; 存储所述在线应用的导出数据的第二物理存储设备; 一个或者多个处理器; 包括指令的导出数据更新逻辑,所述指令在由所述一个或者多个处理器执行时,致使所述装置: 基于对由第一键标识的所述主数据的一部分的执行的写入的结果尝试更新存储的所述导出数据; 其中所述结果包括所述第一键、对于所述键的第一值和所述执行的写入的第一序列号; 包括指令的失败的更新逻辑,所述指令在由所述一个或者多个处理器执行时,致使所述装置:如果对更新存储的所述导出数据的所述尝试失败,则将所述结果写入失败的更新的集合;以及 包括指令的改变捕获逻辑,所述指令在由所述一个或者多个处理器执行时,致使所述装置: 从主数据改变的流提取主数据改变,所述提取的主数据改变包括键和序列号;以及如果所述键匹配所述第一键并且所述序列号匹配所述第一序列号,则调用所述导出数据更新逻辑。18.根据权利要求17所述的装置,其中所述导出数据更新逻辑进一步包括指令,所述指令在由所述一个或者多个处理器执行时,致使所述装置: 如果对更新存储的所述导出数据的所述尝试成功,则从所述失败的更新的集合清除包括所述第一键的任何记录。
【专利摘要】本发明涉及确保分布式存储系统中导出数据的一致性。具体地,提供了用于确保分布式数据存储系统中与主数据相关的导出数据的一致性的系统、方法和装置。主数据和导出数据存储在数据存储系统的单独的组件上,和/或由数据存储系统的单独的组件(诸如不同的存储引擎)管理。如在写入请求中所指定的主数据被写入和被更新,其可以是在主存储引擎所主导的查询。主数据写入的结果被直接传送至导出存储引擎。如果对导出数据的更新失败,做出记录;如果更新成功,清除对相同数据的任何记录的失败的写入。导出存储引擎还经由影响主数据的事件的改变捕获流接收写入结果,并且可以使用写入结果的这些拷贝来修复失败的更新,并且从失败的写入记录中清除失败。
【IPC分类】G06F17/30
【公开号】CN105320722
【申请号】CN201510092962
【发明人】孙韵, A·塞巴斯蒂安, M·莫森扎德
【申请人】邻客音公司
【公开日】2016年2月10日
【申请日】2015年3月2日
【公告号】EP2977917A1, US20160026673, WO2016014115A1