CN106874343B - 一种时序数据库的数据删除方法及系统 - Google Patents
一种时序数据库的数据删除方法及系统 Download PDFInfo
- Publication number
- CN106874343B CN106874343B CN201611211435.6A CN201611211435A CN106874343B CN 106874343 B CN106874343 B CN 106874343B CN 201611211435 A CN201611211435 A CN 201611211435A CN 106874343 B CN106874343 B CN 106874343B
- Authority
- CN
- China
- Prior art keywords
- data
- group
- instance
- time sequence
- deleting
- 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.)
- Active
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/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/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
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种时序数据库的数据删除方法及系统,方法包括步骤:将多个时序数据库构建为一个组;将所有的组统一管理;以组为单元进行删除。需要对时序数据库进行删除时,以组为单元进行删除,因为一个组由多个时序数据库构建而成,同组的实例有的在执行删除,有的实例为正常的实例,用户此时查询正在执行删除任务的组时可以通过其他未执行删除的实例获取正常的结果,可以使得现有的时序数据库可以正常而快速的执行删除任务,当用户的删除数据量特别大时,也不会影响用户的正常查询数据的请求,并且保证了用户在整个过程获取的数据都是正确且一致的。
Description
技术领域
本发明涉及数据库领域,更具体的说,涉及一种时序数据库的数据删除方法及系统。
背景技术
随着云计算技术的发展,用户对计算资源使用的便捷性要求越来越高,与此同时就更希望能实时的对用户数据进行分析,于是专门针对这种时间维度追加的结构化数据库,即时序数据库应运而生。
时序数据库因为数据以时间维度追加,故而可以根据这个特性压缩存储,但是一旦用户想要删除就需要对这些数据解压缩,同时为了确保数据的一致性及安全,在进行实际删除的过程会阻止数据的写入和查询。删除数据是一个很普遍的需求,用户在写错或者不用某些数据时,为了节省资源,就会删除。但是现有的删除会阻塞用户的正常请求,导致服务不可用。同时有些服务会因为有数据在写入导致删除任务特别慢。
发明内容
本发明所要解决的技术问题是提供一种执行删除任务同时保证数据一致、保证用户数据不丢失的时序数据库的数据删除方法及系统。
本发明的目的是通过以下技术方案来实现的:
一种时序数据库的数据删除方法,包括步骤:
将多个时序数据库构建为一个组;
将所有的组统一管理;
以组为单元进行删除。
进一步的,将多个时序数据库构建为一个组包括:
同组的时序数据库实例部署在不同的服务器上、同组的时序数据库实例网络访问速度相当、同组的时序数据库实例磁盘存储空间相当和同组的时序数据库实例各自保存一份完整的用户数据中的至少一项。
有利于数据的安全和调用,有利于资源的合理分配和充分应用,提高整体的反应速度。
进一步的,以组为单元进行删除包括:
拆分删除涉及的组;
查看删除涉及的一个组的所有实例的读写状态;
根据实例的读写状态对一个组的每个实例执行删除任务。
开始删除后,第一步就是将用户数据分解为涉及的组,对于每个组,查看是否所有实例都在可读可写状态,若否,则等待一段时间再次尝试,若是,则开始依次对每个实例执行删除任务。减小工作量,不需要对整个数据进行处理,仅对需要删除的组进行处理。
进一步的,删除任务包括:
找到尚未执行删除任务的实例;
记录起始的数据标记;
删除数据开始,并将实例变为不可读不可写状态;
删除数据完毕,并记录下结束的数据标记,同时将实例变为可写不可读状态;
恢复从起始的数据标记到结束的数据标记期间的所有请求数据,同时接收写入请求;
当数据恢复完毕后,将实例变为可读可写状态。
找到尚未执行删除任务的实例,然后记录下起始的数据标记startOffset,然后开始执行删除,直到删除完毕,记录下结束的数据标记endOffset,然后开始恢复从startOffset到endOffset这期间的所有用户请求数据,同时正常接收用户的写入请求,但是不支持用户的查询。当数据恢复完毕后,实例变为可读可写,继续下一个实例的删除。当所有的实例都删除完毕时,就结束删除任务。
进一步的,拆分删除涉及的组包括多个组,并发式的同时对该多个组执行删除任务。
并发式的处理速度更快效率更高。
进一步的,根据实例的读写状态对一个组的每个实例执行删除任务包括:
同组所有实例都是可读可写状态才开始删除任务。
防止误操作,保证了一致性。
进一步的,根据实例的读写状态对一个组的每个实例执行删除任务包括:
同组的所有实例中,同一时刻只允许一个实例执行删除任务。
防止误操作,保证了一致性。
进一步的,根据实例的读写状态对一个组的每个实例执行删除任务包括:
该组包括可读可写的实例。
可以正常的写入到同组的其他可读可写的实例;也可以正常的从同组的任意一个可读可写的实例查询数据。
进一步的,当数据恢复完毕后,将实例变为可读可写状态还包括:
设置一个外部的消息队列,存储处于删除状态时的用户请求。
用户的数据写入到所有可读可写实例成功后,还要再写入一个外部的消息队列,这些都成功后才反馈给用户成功。当正在删除的实例删除完毕后,标记为可写不可读,此时不立即开始下一个实例的删除,而是通过之前记录在外部消息队列的记录,将这段时间的用户请求,补写到这个刚刚完成删除任务的实例,当补写完成后,这个实例恢复可读可写状态,此时开始下一个实例的删除;当同组的所有实例都完成删除任务后,该组的删除任务正式完成。
进一步的,该方法还包括:
以组为单元进行数据写入和查询。
正常情况下的以组为单元的数据写入和查询;状态处于删除状态时的以组为单元的数据写入和查询,数据一致性较好。
进一步的,将所有的组统一管理包括:
不同的用户对应不同的组或共享同一个组、一个用户对应一个或多个组、每个组之间的删除互不影响中的至少一项。
不同的用户可以用不同的组也可以共享同一个组;一个用户可以有一个或多个组;每个组之间的删除互不影响。不同的用户可以用不同的组也可以共享同一个组;一个用户可以有一个或多个组;每个组之间的删除互不影响。管理数据更加方便。
进一步的,以组为单元进行数据写入和查询包括:根据时序数据库状态将同组的所有实例都写入成功才反馈成功和/或任选一个实例进行查询获得数据即反馈。
本发明的另一优选方案,一种时序数据库的删除系统,包括:
组调度模块,用于将多个不同的时序数据库实例组合成多个组并统一管理;
删除任务执行模块,用于以组为单元进行删除。
进一步的,该系统还包括:
多个服务器,用于提供取网络传输速率相当、磁盘剩余空间相当的时序数据库实例组成一个组。
进一步的,该系统还包括:
元数据管理模块,用于记录用户数据与时序数据库实例的对应关系,并且记录时序数据库的状态,同时对要删除的数据进行标记,保证无法对已经删除的数据进行再操作;根据写入请求获得请求对应的时序数据库实例信息,然后写入状态为可写的时序数据库实例中;根据查询请求从状态为可读的时序数据库实例中获取数据。
进一步的,该系统还包括:
用户请求处理模块,用于通过查看元数据管理模块,获取用户数据与时序数据库对应关系,并到对应组写入或查询数据。
进一步的,该系统还包括:
消息队列模块,用于存储处于删除状态的用户请求。
进一步的,该系统还包括:
数据恢复模块,用于恢复处于删除状态的时序数据库实例所错过的写入数据。
本发明由于多个时序数据库构建为一个组;将所有的组统一管理;以组为单元进行删除。需要对时序数据库进行删除时,以组为单元进行删除,因为一个组由多个时序数据库构建而成,同组的实例有的在执行删除,有的实例为正常的实例,用户此时查询正在执行删除任务的组时可以通过其他未执行删除的实例获取正常的结果,可以使得现有的时序数据库可以正常而快速的执行删除任务,当用户的删除数据量特别大时,也不会影响用户的正常查询数据的请求,并且保证了用户在整个过程获取的数据都是正确且一致的,一个组一个组的进行删除,互不影响,不会影响其他组的正常写入和查询,在保证服务可用、保证数据一致、保证用户数据安全不丢失的情况下,完成用户的删除部分指定数据的任务,同时做到了不同用户互相隔离,互不影响。
附图说明
图1是本发明实施例的一种时序数据库的数据删除方法示意图;
图2是本发明实施例的删除过程流程图;
图3是本发明实施例的删除状态转换图;
图4是本发明实施例的删除过程的数据流图。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备或客户端包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等
需要说明的是,所述用户设备、客户端、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图和较佳的实施例对本发明作进一步说明。
如图1所示,一种时序数据库的数据删除方法,包括步骤:
S1:将多个时序数据库构建为一个组;
S2:将所有的组统一管理;
S3:以组为单元进行删除。
由于多个时序数据库构建为一个组;将所有的组统一管理;以组为单元进行删除。需要对时序数据库进行删除时,以组为单元进行删除,因为一个组由多个时序数据库构建而成,同组的实例有的在执行删除,有的实例为正常的实例,用户此时查询正在执行删除任务的组时可以通过其他未执行删除的实例获取正常的结果,可以使得现有的时序数据库可以正常而快速的执行删除任务,当用户的删除数据量特别大时,也不会影响用户的正常查询数据的请求,并且保证了用户在整个过程获取的数据都是正确且一致的,一个组一个组的进行删除,互不影响,不会影响其他组的正常写入和查询,在保证服务可用、保证数据一致、保证用户数据安全不丢失的情况下,完成用户的删除部分指定数据的任务,同时做到了不同用户互相隔离,互不影响。
其中,将多个时序数据库构建为一个组包括:
同组的时序数据库实例部署在不同的服务器上、同组的时序数据库实例网络访问速度相当、同组的时序数据库实例磁盘存储空间相当和同组的时序数据库实例各自保存一份完整的用户数据中的至少一项。将同组的多个时序数据库实例部署在不同的服务器上;为同组的实例选择网络访问速度相当的实例构建为同一个组;为同组的实例选择磁盘存储空间相当的实例构建为同一个组;同组的时序数据库实例各自保存一份完整的用户数据。有利于数据的安全和调用,有利于资源的合理分配和充分应用,提高整体的反应速度。
其中,以组为单元进行删除包括:
拆分删除涉及的组;
查看删除涉及的一个组的所有实例的读写状态;
根据实例的读写状态对一个组的每个实例执行删除任务。
开始删除后,第一步就是将用户数据分解为涉及的组,对于每个组,查看是否所有实例都在可读可写状态,若否,则等待一段时间再次尝试,若是,则开始依次对每个实例执行删除任务。减小工作量,不需要对整个数据进行处理,仅对需要删除的组进行处理。
其中,删除任务包括:
找到尚未执行删除任务的实例;
记录起始的数据标记startOffset;
删除数据开始,并将实例变为不可读不可写状态;
删除数据完毕,并记录下结束的数据标记endOffset,同时将实例变为可写不可读状态;
恢复从startOffset到endOffset期间的所有请求数据,同时接收写入请求;
当数据恢复完毕后,将实例变为可读可写状态。
找到尚未执行删除任务的实例,然后记录下起始的数据标记startOffset,然后开始执行删除,直到删除完毕,记录下结束的数据标记endOffset,然后开始恢复从startOffset到endOffset这期间的所有用户请求数据,同时正常接收用户的写入请求,但是不支持用户的查询。当数据恢复完毕后,实例变为可读可写,继续下一个实例的删除。当所有的实例都删除完毕时,就结束删除任务。
其中,拆分删除涉及的组包括多个组,并发式的同时对该多个组执行删除任务。并发式的处理速度更快效率更高。
其中,根据实例的读写状态对一个组的每个实例执行删除任务包括:同组所有实例都是可读可写状态才开始删除任务。防止误操作,保证了一致性。
其中,根据实例的读写状态对一个组的每个实例执行删除任务包括:同组的所有实例中,同一时刻只允许一个实例执行删除任务。防止误操作,保证了一致性。
其中,根据实例的读写状态对一个组的每个实例执行删除任务包括:该组包括可读可写的实例。可以正常的写入到同组的其他可读可写的实例;也可以正常的从同组的任意一个可读可写的实例查询数据。
其中,当数据恢复完毕后,将实例变为可读可写状态还包括:设置一个外部的消息队列,存储处于删除状态时的用户请求。
用户的数据写入到所有可读可写实例成功后,还要再写入一个外部的消息队列,这些都成功后才反馈给用户成功。当正在删除的实例删除完毕后,标记为可写不可读,此时不立即开始下一个实例的删除,而是通过之前记录在外部消息队列的记录,将这段时间的用户请求,补写到这个刚刚完成删除任务的实例,当补写完成后,这个实例恢复可读可写状态,此时开始下一个实例的删除;当同组的所有实例都完成删除任务后,该组的删除任务正式完成。
其中,该方法还包括:以组为单元进行数据写入和查询。正常情况下的以组为单元的数据写入和查询;状态处于删除状态时的以组为单元的数据写入和查询,数据一致性较好。
其中,将所有的组统一管理包括:
不同的用户对应不同的组或共享同一个组、一个用户对应一个或多个组、每个组之间的删除互不影响中的至少一项。管理数据更加方便。
其中,以组为单元进行数据写入和查询包括:根据时序数据库状态将同组的所有实例都写入成功才反馈成功和/或任选一个实例进行查询获得数据即反馈。
其中,该方法还包括组状态处于删除状态时的以组为单元的数据写入和查询,具体包括:
记录用户发起删除请求时涉及的组,并发式的同时对多个组开始执行删除;
对于同组的实例,必须确保所有实例都是正常(正常的标记为:可读可写)的才能开始删除;
同组的所有实例中,同一时刻只允许有一个在删除,开始删除的实例被标记为不可读不可写;
用户可以正常的写入到同组的其他可读可写的实例;
用户可以正常的从同组的任意一个可读可写的实例查询数据;
用户的数据写入到所有可读可写实例成功后,还要再写入一个外部的消息队列,这些都成功后才反馈给用户成功;
用户的数据不写入到不可写状态的实例;
用户的数据不能从不可读状态的实例查询;
当正在删除的实例删除完毕后,标记为可写不可读,此时不立即开始下一个实例的删除,而是通过之前记录在外部消息队列的记录,将这段时间的用户请求,补写到这个刚刚完成删除任务的实例,当补写完成后,这个实例恢复可读可写状态,此时开始下一个实例的删除;
当同组的所有实例都完成删除任务后,该组的删除任务正式完成。
本实施例的有益效果:
通过本实施例的时序数据库删除方法,可以使得现有的时序数据库可以正常而快速的执行删除任务,当用户的删除数据量特别大时,也不会影响用户的正常写入和查询数据的请求,并且保证了用户在整个过程获取的数据都是正确且一致的;
因为每个用户的写入和查询都是以组为单元执行,同组的实例最多有一个在执行删除,而其他实例均为正常的实例,用户此时查询正在执行删除任务的组时可以获取正常的结果;
通过在元数据中记录用户对数据的删除标记,即便实际数据删除需要很长的时间,用户也不会可以再次读取或者写入已经删除的数据表,以此保证了一致性;
因为给不同用户分配了不同的实例组,用户之间互不影响。
本实施例提出了集群化实例的方法来处理删除的需求,以达到服务高可用且删除任务可以正常完成的目标。
具体的,一种构建实例集群去完成删除任务的方法,以influxdb这款开源时序数据库软件为例,一个具体但非限制性的实施方案,可以分为如下几个步骤:
包括:将多个时序数据库构建为一个组,将所有的组统一管理起来为用户分配资源,以组为单元处理用户的数据写入和查询请求,以组为单元处理用户的删除请求。
首先需要将多个influxdb部署在多个不同的服务器上,然后获取不同服务器上influxdb的IP、端口、磁盘剩余空间、网络访问延迟这些信息,将数值上最相近的几个构建为一个组,用户写入的数据,同组的每个实例都保存完整的一份。
根据状态的不同,给influxdb实例做一些状态标记,正常情况下是可读可写,当influxdb实例开始执行删除时,变为不可读不可写,当influxdb删除完毕后,变为可写不可读,然后开始恢复删除时间段里面的数据,同时在此时也会正常接收用户的写点,最终恢复完毕后,变为可读可写。
用户的数据不写入到不可写状态的实例;用户的数据不能从不可读状态的实例查询。
正常情况下的以组为单元的数据写入和查询,同组的所有实例都写入成功才反馈给用户成功,用户查询时则任选一个进行查询获得数据即可反馈给用户。
组状态处于删除状态时的数据写入和查询,则首先需要拆分用户删除涉及的组,然后并行的对多个组去执行,用户查询时则挑选可读状态的influxdb实例。
用户的数据写入到所有可读可写实例成功后,还要再写入一个外部的消息队列,这些都成功后才反馈给用户成功。
当正在删除的实例删除完毕后,标记为可写不可读,此时不立即开始下一个实例的删除,而是通过之前记录在外部消息队列的记录,将这段时间的用户请求,补写到这个刚刚完成删除任务的实例,当补写完成后,这个实例恢复可读可写状态,此时开始下一个实例的删除;当同组的所有实例都完成删除任务后,该组的删除任务正式完成。
如图2所示,表述了整个删除过程的流程。开始删除后,第一步就是将用户数据分解为涉及的组,对于每个组,查看是否所有实例都在可读可写状态,若否,则等待一段时间再次尝试,若是,则开始依次对每个实例执行删除。找到尚未执行删除任务的实例,然后记录下起始的数据标记startOffset,然后开始执行删除,直到删除完毕,记录下结束的数据标记endOffset,然后开始恢复从startOffset到endOffset这期间的所有用户请求数据,同时正常接收用户的写入请求,但是不支持用户的查询。当数据恢复完毕后,实例变为可读可写,继续下一个实例的删除。当所有的实例都删除完毕时,就结束删除任务。
如图3所示,表述了删除时单个实例读写状态的变化,初始时状态为可读可写,删除开始时状态变为不可读不可写,此时标记startOffset,删除完毕后,状态变为可写不可读,标记endOffset,然后开始补写数据,补写完毕后,重新变为可读可写。
如图4所示,用户的请求到达时,先经过用户请求处理模块,该模块负责接收用户的http请求,然后通过元数据管理模块,根据元数据处理用户请求是否合法。
对应的实际数据在删除过程中,元数据模块会标记用户数据已经删除,通过元数据管理模块后,在组调度模块查找分配给对应用户的组。
若请求是正常的读写请求,且发往的是正常的实例组,则不需要经过特殊处理,按照正常的写入和查询进行操作即可。
当用户的正常读写请求,发往的是在执行删除任务的实例组时,除了按照influxdb读写状态进行正常的读写以外,还要额外的写入一个消息队列进行标记和记录。
当删除完毕后,数据恢复模块根据消息队列模块中的记录,对实例组中错过的消息进行恢复。
当用户请求为删除请求时,则发往删除任务的执行模块,根据删除涉及的实例组进行拆分,然后对于每个组,执行图2的过程。
本发明的另一优选实施例,一种时序数据库的删除系统,包括:
组调度模块,用于将多个不同的时序数据库实例组合成多个组并统一管理;用于将不同的时序数据库实例组合成多个组并分配给用户;
删除任务执行模块,用于以组为单元进行删除。用于实际接收并执行用户的删除任务;
该系统还包括:
多个服务器,用于提供取网络传输速率相当、磁盘剩余空间相当的时序数据库实例组成一个组。
该系统还包括:
元数据管理模块,用于记录用户数据与时序数据库实例的对应关系,并且记录时序数据库的状态,同时对要删除的数据进行标记,保证无法对已经删除的数据进行再操作;根据写入请求获得请求对应的时序数据库实例信息,然后写入状态为可写的时序数据库实例中;根据查询请求从状态为可读的时序数据库实例中获取数据。
该系统还包括:
用户请求处理模块,用于通过查看元数据管理模块,获取用户数据与时序数据库对应关系,并到对应组写入或查询数据。
该系统还包括:
消息队列模块,用于存储处于删除状态的用户请求。
该系统还包括:
数据恢复模块,用于恢复处于删除状态的时序数据库实例所错过的写入数据。
本发明的再一优选实施例,一种时序数据库的删除系统,包括:
组调度模块,用于将不同的时序数据库实例组合成多个组并分配给用户,该模块用于从多个不同的服务器上选取网络传输速率相当、磁盘剩余空间相当的时序数据库实例,组成一个组。根据用户的申请,为用户分配一个组;
元数据管理模块,用于记录用户数据与时序数据库实例的对应关系,并且记录时序数据库的状态,同时对用户要删除的数据进行标记,保证用户无法对已经删除的数据进行再操作,当用户写入请求到达时,首先从元数据管理模块获得请求对应的时序数据库实例信息,然后写入状态为可写的时序数据库实例中;当用户的查询请求到达时,从状态为可读的时序数据库实例中获取数据;
用户请求处理模块,用于通过查看元数据管理模块,获取用户数据与时序数据库对应关系,并到对应组写入或查询数据;
删除任务执行模块,用于实际接收并执行用户的删除任务,在执行任务之前,从元数据管理模块查看用户要删除的数据涉及的实例组,然后再把删除任务分解到各个组分别并行的执行;当组中所有实例的状态均为可读可写时才开始执行删除任务,当删除任务执行完成之前,会不断的间歇性检查组的状态,直到所有实例均被删除完毕;当删除任务开始执行后,分别对每个实例依次执行删除,每个实例删除完毕后,变为可写不可读状态,此时不立即开始下一个实例的删除,而是调用数据恢复模块进行数据恢复,知道数据恢复完成,实例状态变为可读可写,此时开始同组的下一个实例的删除,当所有实例删除完毕时,整个组才算彻底删除完毕,当所有组均删除完毕时,删除任务才算执行完毕;
消息队列模块,用于存储处于删除状态的用户请求,例如可以使用开源的消息队列模块kafka完成;
数据恢复模块,用于恢复处于删除状态的时序数据库实例所错过的用户写入数据;当某个实例开始执行删除任务,状态变为不可写时,标记一个起始的消息位置startOffset,表示用户从该消息位置开始的数据都错过了,当实例执行删除完毕,状态变为可写不可读时,标记一个结束的消息位置endOffset,表示用户从该位置结束的消息错过了,之后的实例则可以正常结束处理;当endOffset标记完毕后,数据恢复模块开始从消息队列中获取[startOffset,endOffset)这个区间的数据,并把这个区间的数据处理至时序数据库实例中,处理完毕后,时序数据库实例标记为可读可写。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (17)
1.一种时序数据库的数据删除方法,其特征在于,包括步骤:
将多个时序数据库构建为一个组;
将所有的组统一管理;
以组为单元进行删除,包括:
拆分删除涉及的组;
查看删除涉及的一个组的所有实例的读写状态;
根据实例的读写状态对一个组的每个实例执行删除任务。
2.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,将多个时序数据库构建为一个组包括:
同组的时序数据库实例部署在不同的服务器上、同组的时序数据库实例网络访问速度相当、同组的时序数据库实例磁盘存储空间相当和同组的时序数据库实例各自保存一份完整的用户数据中的至少一项。
3.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,删除任务包括:
找到尚未执行删除任务的实例;
记录起始的数据标记;
删除数据开始,并将实例变为不可读不可写状态;
删除数据完毕,并记录下结束的数据标记,同时将实例变为可写不可读状态;
恢复从起始的数据标记到结束的数据标记期间的所有请求数据,同时接收写入请求;
当数据恢复完毕后,将实例变为可读可写状态。
4.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,
拆分删除涉及的组包括多个组,并发式的同时对该多个组执行删除任务。
5.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,根据实例的读写状态对一个组的每个实例执行删除任务包括:
同组所有实例都是可读可写状态才开始删除任务。
6.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,根据实例的读写状态对一个组的每个实例执行删除任务包括:
同组的所有实例中,同一时刻只允许一个实例执行删除任务。
7.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,根据实例的读写状态对一个组的每个实例执行删除任务包括:
该组包括可读可写的实例。
8.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,当数据恢复完毕后,将实例变为可读可写状态还包括:
设置一个外部的消息队列,存储处于删除状态时的用户请求。
9.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,还包括:
以组为单元进行数据写入和查询。
10.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,将所有的组统一管理包括:
不同的用户对应不同的组或共享同一个组、一个用户对应一个或多个组、每个组之间的删除互不影响中的至少一项。
11.如权利要求1所述的一种时序数据库的数据删除方法,其特征在于,以组为单元进行数据写入和查询包括:
根据时序数据库状态将同组的所有实例都写入成功才反馈成功和/或任选一个实例进行查询获得数据即反馈。
12.一种时序数据库的删除系统,其特征在于,包括:
组调度模块,用于将多个不同的时序数据库实例组合成多个组并统一管理;
删除任务执行模块,用于以组为单元进行删除。
13.如权利要求12所述的一种时序数据库的删除系统,其特征在于,还包括:
多个服务器,用于提供取网络传输速率相当、磁盘剩余空间相当的时序数据库实例组成一个组。
14.如权利要求12所述的一种时序数据库的删除系统,其特征在于,还包括:
元数据管理模块,用于记录用户数据与时序数据库实例的对应关系,并且记录时序数据库的状态,同时对要删除的数据进行标记,保证无法对已经删除的数据进行再操作;根据写入请求获得请求对应的时序数据库实例信息,然后写入状态为可写的时序数据库实例中;根据查询请求从状态为可读的时序数据库实例中获取数据。
15.如权利要求14所述的一种时序数据库的删除系统,其特征在于,还包括:
用户请求处理模块,用于通过查看元数据管理模块,获取用户数据与时序数据库对应关系,并到对应组写入或查询数据。
16.如权利要求12所述的一种时序数据库的删除系统,其特征在于,还包括:
消息队列模块,用于存储处于删除状态的用户请求。
17.如权利要求12所述的一种时序数据库的删除系统,其特征在于,还包括:
数据恢复模块,用于恢复处于删除状态的时序数据库实例所错过的写入数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611211435.6A CN106874343B (zh) | 2016-12-24 | 2016-12-24 | 一种时序数据库的数据删除方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611211435.6A CN106874343B (zh) | 2016-12-24 | 2016-12-24 | 一种时序数据库的数据删除方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874343A CN106874343A (zh) | 2017-06-20 |
CN106874343B true CN106874343B (zh) | 2020-07-14 |
Family
ID=59164011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611211435.6A Active CN106874343B (zh) | 2016-12-24 | 2016-12-24 | 一种时序数据库的数据删除方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874343B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287199B (zh) * | 2019-07-01 | 2021-11-16 | 联想(北京)有限公司 | 一种数据库的处理方法及电子设备 |
CN111382142B (zh) * | 2020-03-04 | 2023-06-20 | 海南金盘智能科技股份有限公司 | 数据库的操作方法、服务器和计算机存储介质 |
CN111597149B (zh) * | 2020-04-27 | 2023-03-31 | 五八有限公司 | 一种数据库的数据清理方法及装置 |
US11940991B2 (en) | 2021-03-22 | 2024-03-26 | International Business Machines Corporation | Data holes in a time series database |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100665268B1 (ko) * | 2004-10-29 | 2007-01-04 | 한국전력공사 | 지능형 에이전트를 탑재한 전자식 전력량계 |
CN101251803A (zh) * | 2008-03-11 | 2008-08-27 | 浪潮电子信息产业股份有限公司 | Oracle RAC自动添加删除结点的方法 |
CN101471810A (zh) * | 2007-12-28 | 2009-07-01 | 华为技术有限公司 | 一种在集群环境下实现任务的方法、装置及系统 |
CN103546571A (zh) * | 2013-10-29 | 2014-01-29 | 北京华胜天成科技股份有限公司 | 一种平台即服务实现方法及装置 |
CN103780417A (zh) * | 2012-10-23 | 2014-05-07 | 上海盛大网络发展有限公司 | 一种基于云硬盘的数据库故障转移方法及装置 |
-
2016
- 2016-12-24 CN CN201611211435.6A patent/CN106874343B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100665268B1 (ko) * | 2004-10-29 | 2007-01-04 | 한국전력공사 | 지능형 에이전트를 탑재한 전자식 전력량계 |
CN101471810A (zh) * | 2007-12-28 | 2009-07-01 | 华为技术有限公司 | 一种在集群环境下实现任务的方法、装置及系统 |
CN101251803A (zh) * | 2008-03-11 | 2008-08-27 | 浪潮电子信息产业股份有限公司 | Oracle RAC自动添加删除结点的方法 |
CN103780417A (zh) * | 2012-10-23 | 2014-05-07 | 上海盛大网络发展有限公司 | 一种基于云硬盘的数据库故障转移方法及装置 |
CN103546571A (zh) * | 2013-10-29 | 2014-01-29 | 北京华胜天成科技股份有限公司 | 一种平台即服务实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106874343A (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102072726B1 (ko) | 데이터베이스로의 미들-티어 트랜잭션 로그들의 인라인 위임을 지원하는 시스템들 및 방법들 | |
CN110309218B (zh) | 一种数据交换系统和数据写入方法 | |
US20180113771A1 (en) | Transaction consistency query support for replicated data from recovery log to external data stores | |
US7716181B2 (en) | Methods, apparatus and computer programs for data replication comprising a batch of descriptions of data changes | |
JP5387757B2 (ja) | 並列データ処理システム、並列データ処理方法及びプログラム | |
CN106874343B (zh) | 一种时序数据库的数据删除方法及系统 | |
US9507841B2 (en) | Consistent backup of a distributed database system | |
US20180285216A1 (en) | Virtual Machine Recovery Method and Virtual Machine Management Device | |
CN110019469B (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
US20210081358A1 (en) | Background dataset maintenance | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
EP2825958A1 (en) | Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls | |
WO2022095366A1 (zh) | 基于Redis的数据读取方法、装置、设备及可读存储介质 | |
CN104657158A (zh) | 一种业务系统中业务处理的方法和装置 | |
CN103197987A (zh) | 一种数据备份的方法、数据恢复的方法及系统 | |
CN104793981A (zh) | 一种虚拟机集群的在线快照管理方法及装置 | |
US20150220517A1 (en) | Efficient conflict resolution among stateless processes | |
CN106815318B (zh) | 一种时序数据库的集群化方法及系统 | |
CN106407385B (zh) | 数据管理方法、设备和系统 | |
CN109753245B (zh) | 一种多磁盘负载均衡异步读写调度方法及装置 | |
CN108376104B (zh) | 节点调度方法及装置、计算机可读存储介质 | |
CN116893932A (zh) | 一种基于云平台工作流的资源定时快照与备份实现方法 | |
CN114003585A (zh) | 一种数据处理的方法、装置和存储介质 | |
CN116521651A (zh) | 数据跨库迁移方法及装置 | |
WO2016018447A1 (en) | File creation |
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 |