CN105095393A - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN105095393A CN105095393A CN201510385749.7A CN201510385749A CN105095393A CN 105095393 A CN105095393 A CN 105095393A CN 201510385749 A CN201510385749 A CN 201510385749A CN 105095393 A CN105095393 A CN 105095393A
- Authority
- CN
- China
- Prior art keywords
- submeter
- current
- table name
- write
- index record
- 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/23—Updating
- G06F16/2358—Change logging, detection, and notification
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储方法,以分表的形式存储数据,所述方法还包括:检测当前分表所写入的数据量;判断所述当前分表所写入的数据量是否超出分表阈值;当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中。本发明还同时公开了一种数据存储装置。采用本发明的技术方案,解决了现有技术中当进行大数据量存储时数据库系统的持久化写入性能下降的问题,进而也提升了数据库系统的统计查询性能。
Description
技术领域
本发明涉及数据库系统领域,尤其涉及一种数据存储方法及装置。
背景技术
随着大量移动终端用户进行空中固件升级(FOTA,FirmwareOverTheAir)升级,FOTA系统产生的数据也随之大量生产,并持久化存储到数据库(如MongoDB数据库)中,当数据库的单表写入的数据量达到千万级别时,持久化写入的性能急剧下降,从而严重影响FOTA系统在大用户量下的持续运行的稳定性,同时,查询相应升级数据耗时也随之急剧上升,严重影响升级数据的统计查询功能。
发明内容
有鉴于此,本发明的主要目的在于提供一种数据存储方法及装置,能解决现有技术中当进行大数据量存储时数据库系统的持久化写入性能下降的问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种数据存储方法,以分表的形式存储数据,所述方法还包括:
检测当前分表所写入的数据量;
判断所述当前分表所写入的数据量是否超出分表阈值;
当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中。
上述方案中,优选地,所述生成新的分表,包括:
生成新的分表的表名;
更新分表索引表中的关于所述当前分表的索引记录,并初步生成关于所述新的分表的索引记录;
其中,在分表索引表结构中,至少包含下述信息:
当前分表表名、开始写入时间、结束写入时间、当前分表数据量、前一分表表名、生成时间。
上述方案中,优选地,所述检测当前分表所写入的数据量之前,所述方法还包括:
进行初始化操作。
上述方案中,优选地,所述进行初始化操作,包括:
动态配置分表阈值;
查找是否存在分表索引表;
如果不存在,创建分表索引表;
如果存在,在分表索引表中查找是否有满足预设条件的索引记录;
当有满足预设条件的第一索引记录时,获取第一索引记录中的当前分表表名、开始写入时间、结束写入时间和前一分表表名,并分别设置到当前分表表名变量、当前分表开始写入时间变量、当前分表结束写入时间变量和前一分表表名变量中;查找是否有当前分表表名为前一分表表名的第二索引记录,如果有,获取第二索引记录的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,触发写数据监测操作,如果没有,触发写数据监测操作;
当没有满足预设条件的第一索引记录时,生成新的分表的表名;查找是否有生成时间离当前时点最近的第三索引记录,如果有,获取第三索引记录中的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,将所述当前分表表名设置为新生成的索引记录的前一分表表名,触发写数据监测操作;如果没有,触发写数据监测操作。
上述方案中,优选地,所述创建分表索引表,包括:
生成首个分表的表名;
将所述首个分表的表名设置为首个索引记录的当前分表表名中,触发写数据监测操作。
本发明还提供了一种数据存储装置,所述装置包括:
监测单元,用于检测当前分表所写入的数据量;
判断单元,用于判断所述当前分表所写入的数据量是否超出分表阈值;
处理单元,用于当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中。
上述方案中,优选地,所述处理单元,还用于:
生成新的分表的表名;
更新分表索引表中的关于所述当前分表的索引记录,并初步生成关于所述新的分表的索引记录;
其中,在分表索引表结构中,至少包含下述信息:
当前分表表名、开始写入时间、结束写入时间、当前分表数据量、前一分表表名、生成时间。
上述方案中,优选地,所述装置还包括:
初始化单元,用于进行初始化操作。
上述方案中,优选地,所述初始化单元,包括:
配置子单元,用于动态配置分表阈值;
查找子单元,用于查找是否存在分表索引表;
第一初始化子单元,用于当不存在分表索引表时,创建分表索引表;
第二初始化子单元,用于:
当存在分表索引表时,在分表索引表中查找是否有满足预设条件的索引记录;
当有满足预设条件的第一索引记录时,获取第一索引记录中的当前分表表名、开始写入时间、结束写入时间和前一分表表名,并分别设置到当前分表表名变量、当前分表开始写入时间变量、当前分表结束写入时间变量和前一分表表名变量中;查找是否有当前分表表名为前一分表表名的第二索引记录,如果有,获取第二索引记录的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,触发所述监测单元执行写数据监测操作,如果没有,触发所述监测单元执行写数据监测操作;
当没有满足预设条件的第一索引记录时,生成新的分表的表名;查找是否有生成时间离当前时点最近的第三索引记录,如果有,获取第三索引记录中的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,将所述当前分表表名设置为新生成的索引记录的前一分表表名,触发所述监测单元执行写数据监测操作;如果没有,触发所述监测单元执行写数据监测操作。
上述方案中,优选地,所述第一初始化子单元,还用于:
生成首个分表的表名;
将所述首个分表的表名设置为首个索引记录的当前分表表名中,并触发所述监测单元执行写数据监测操作。
本发明所提供的数据存储方法及装置,检测当前分表所写入的数据量;判断所述当前分表所写入的数据量是否超出分表阈值;当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中;如此,解决了现有技术中当进行大数据量存储时数据库系统的持久化写入性能下降的问题,进而也提升数据库系统的统计查询性能。
附图说明
图1为本发明实施例提供的数据存储方法的实现流程示意图;
图2为本发明实施例提供的分表索引表的结构示意图;
图3为本发明实施例提供的FOTA系统分表存储数据的流程示意图;
图4为本发明实施例提供的数据存储装置的结构示意图一;
图5为本发明实施例提供的数据存储装置的结构示意图二。
具体实施方式
为了能够更加详尽地了解本发明的特点与技术内容,下面结合附图对本发明的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。
实施例一
图1为本发明实施例提供的数据存储方法的实现流程示意图,所述数据存储方法可应用于数据库系统中,数据库系统以分表的形式存储数据,如图1所示,所述数据存储方法主要包括以下步骤:
步骤101:检测当前分表所写入的数据量。
优选地,所述检测当前分表所写入的数据量,可以包括:
周期性检测当前分表所写入的数据量。
这里,所述周期可以根据实际情况进行设定。
优选地,所述周期可以以小时为单位、或以分钟为单位、或以秒为单位、或以毫秒为单位等。
步骤102:判断所述当前分表所写入的数据量是否超出分表阈值。
这里,所述分表阈值用于表示每一个分表允许存储的最大数据量。
优选地,可以根据系统负载情况配置分表阈值。
具体地,可以由管理员来配置分表阈值,也可以由数据库系统根据实际运行情况自适应配置分表阈值。
这里,可以为管理员提供一个能够配置分表阈值的UI界面,以由管理员来配置分表阈值。
当然,所述UI界面可以是支持触摸输入的界面。当支持触摸输入时,管理员可通过用手指或触摸笔等触摸形式来配置分表阈值;当不支持触摸输入时,可通过对相关按键的操作来配置分表阈值。
具体地,一旦确定分表阈值之后,立即生效。
步骤103:当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中。
优选地,所述生成新的分表,可以包括:
生成新的分表的表名;
更新分表索引表中的关于所述当前分表的索引记录,并初步生成关于所述新的分表的索引记录。
图2示出了分表索引表的结构示意图,如图2所示,在分表索引表结构中,至少包含下述信息:
当前分表表名、开始写入时间、结束写入时间、当前分表数据量、前一分表表名、生成时间。
这里,所述生成时间可以是生成所述当前分表表名的时间。
这里,所述更新分表索引表中的关于所述当前分表的索引记录,可以包括:
在所述关于所述当前分表的索引记录中,将结束写入时间、所写入的数据量分别填写到结束写入时间属性、当前分表数据量属性中。
这里,所述初步生成关于所述新的分表的索引记录,可以包括:
在关于所述新的分表的索引记录中,可以将所述新的分表的表名填写到当前分表表名属性中,并将所述当前分表的表名填写到前一分表表名属性中。
本实施例中,可以设置7个变量,即:当前分表表名变量、开始写入时间变量、结束写入时间变量、当前分表数据量变量、前一分表表名变量、前一分表开始写入时间变量、前一分表结束写入时间变量;适时在所述7个变量中存储与所述变量相关的数据,根据所述7个变量更新分表索引表中的索引记录。
优选地,当写入数据量大于分表阈值时,生成新的分表,可以包括:
步骤103a:将当前分表的当前分表表名保存到前一分表表名变量,并将当前分表的开始写入时间和结束写入时间分别保存到前一分表的开始写入时间变量和结束写入时间变量,并清空所述当前分表的开始写入时间和结束写入时间;
步骤103b:生成新的分表表名,将所述新的分表表名设置到当前分表表名变量中;
其中,所述新的分表表名可以由主表名、时间戳组成。
这里,所述主表名需要区分于数据库中已经存在的分表的名称;所述时间戳可以是指当前生成新的分表表名的时间,如,xx年xx月xx日xx时xx分xx秒。
步骤103c:将前一分表的开始写入时间和结束写入时间、以及前一分表的数据量,更新到分表索引表中分表名为所述前一分表表名变量的索引记录中;
步骤103d:将新生成的分表表名设置到新的索引记录的当前分表表名属性中,并将前一分表表名变量设置到所述新的索引记录的前一分表表名属性中,将所述新的索引记录保存到分表索引表中。
举例来说,假设分表阈值为300,数据库中已存储有分表1、分表2、分表3;假设开始写入数据时,分表3中的数据量为160,即未超过300;待写入140个数据后,已达到300;此时,需要生成新的分表,如分表4,将待写入的数据写入分表4中;当分表4的数据量超过300时,生成新的分表,如分表5,以此类推,将数据以分表的形式在数据库中进行存储。
上述方案中,优选地,所述检测当前分表所写入的数据量之前,所述方法还可以包括:
进行初始化操作。
上述方案中,优选地,所述进行初始化操作,可以包括:
动态配置分表阈值;
查找是否存在分表索引表;
如果不存在,创建分表索引表;
如果存在,在分表索引表中查找是否有满足预设条件的索引记录;
当有满足预设条件的第一索引记录时,获取第一索引记录中的当前分表表名、开始写入时间、结束写入时间和前一分表表名,并分别设置到当前分表表名变量、当前分表开始写入时间变量、当前分表结束写入时间变量和前一分表表名变量中;查找是否有当前分表表名为前一分表表名的第二索引记录,如果有,获取第二索引记录的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,触发写数据监测操作,如果没有,触发写数据监测操作;
当没有满足预设条件的第一索引记录时,生成新的分表的表名;查找是否有生成时间离当前时点最近的第三索引记录,如果有,获取第三索引记录中的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,将所述当前分表表名设置为新生成的索引记录的前一分表表名,触发写数据监测操作;如果没有,触发写数据监测操作。
优选地,所述预设条件可以为:当前数据量小于分表阈值、且最离现在十点最近的索引记录。
本实施例中,动态配置分表阈值,实现了根据系统当前的写入性能压力动态调整分表的大小,从而达到写入性能与分表数量的平衡。
上述触发写数据监测操作,相当于触发步骤101。
优选地,所述创建分表索引表,可以包括:
生成首个分表的表名;
将所述首个分表的表名设置为首个索引记录的当前分表表名中,触发写数据监测操作。
这里,当数据库系统中尚未存在分表索引表时,创建分表索引表,那么,所述分表索引表中的首个索引记录的当前分表表名是系统生成首个分表的表名。
需要说明的是,对于首个索引记录来说,并不存在前一分表;因此,首个索引记录的前一分表表名可以用特殊标识表示,其中,所述特殊标识是能够被数据库系统识别的标识。
本实施例中,所述数据存储方法尤其适用于存入数据量较大的数据库系统,如FOTA系统。
在本发明实施例中,对数据进行分表存储;检测当前分表所写入的数据量;判断所述当前分表所写入的数据量是否超出分表阈值;当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中;如此,解决了现有技术中当进行大数据量存储时数据库系统的持久化写入性能下降的问题,进而也提升了数据库系统的统计查询性能。采用本实施例所述技术方案,保证了在存储海量数据时数据库持久化写入性能的平稳性,从而保障了数据库系统在大用户量下持续运行的稳定性。具体的,在数据库系统运行时,能动态配置分表阈值,实现了根据系统当前的写入性能压力动态调整分表的大小,从而达到写入性能与分表数量的平衡;进一步地,通过分表索引表机制,有效缩小查询的数据范围和数据量,提升升级数据的统计查询性能。
实施例二
下面以FOTA系统为例,进一步说明本发明所述数据存储方法。
图3为本发明实施例提供的FOTA系统分表存储数据的流程示意图,如图3所示,该流程主要包括以下步骤:
步骤300:配置分表阈值,启动异步存储中间件。
这里,所述分表阈值是指每一个分表的数据量阈值。
步骤301:判断是否存在分表索引表,如果存在,执行步骤303;如果不存在,执行步骤302。
具体地,所述分表索引表中可以包含多条索引记录,每一条索引记录用于表征一个分表的相关信息。
步骤302:创建分表索引表,然后,执行步骤307。
步骤303:查询所述分表索引表,然后,执行步骤304。
这里,所述离现在时点最近的一个索引记录,是指离现在时间点最近的一个索引记录。
步骤304:判断是否存在符合预设条件的索引记录,如果存在,执行步骤305;如果不存在,执行步骤307。
具体地,所述预设条件,是指当前数据量小于分表阈值且离现在时点最近。
步骤305:获取所述索引记录中的当前分表表名、开始写入时间、结束写入时间和前一分表表名,然后执行步骤306。
具体地,可以将所述当前分表表名、所述开始写入时间、所述结束写入时间和所述前一分表表名分别写入到相应的变量中,即分别写入到当前分表表名变量、当前分表开始写入时间变量、当前分表结束写入时间变量和前一分表表名变量中。
步骤306:查找当前分表表名为所述前一分表表名的索引记录,然后执行步骤310。
步骤307:生成新的分表的表名,然后执行步骤308。
其中,所述分表表名=主表名+时间戳。
这里,所述主表名是指区分于所述分表索引表中已经存在的分表表名的名字。
这里,所述时间戳可以是指当前生成新的分表表名的时间。
步骤308:获取生成时间离当前时点最近的一个索引记录,然后执行步骤309。
步骤309:判断是否存在满足第二预设条件的索引记录,如果存在,执行步骤311;如果不存在,执行步骤312。
这里,所述第二预设条件是指生成时间离当前时点最近。
步骤310:判断是否存在满足第三预设条件的索引记录,如果存在,执行步骤311;如果不存在,执行步骤312。
这里,所述第三预设条件是当前分表表名为所述前一分表表名。
步骤311:获取该索引记录的开始写入时间和结束写入时间,并设置到相应变量,然后执行步骤312。
具体地,相对于步骤309,“该索引记录”是指满足第二预设条件的索引记录;相对于步骤310,“该索引记录”是指满足第三预设条件的索引记录。
步骤312:启动独立监控线程每隔一段时间检测当前分表写入的数据量,然后执行步骤313。
这里,所述时间可以根据实际情况进行设定,例如,每个一段时间为每隔5分钟。
步骤313:判断当前分表的写入数据量是否超出分表阈值,如果是,执行步骤314。
步骤314:将当前分表表名保存到前一分表表名变量,当前开始写入时间和当前结束写入时间保存到前一分表开始写入时间和前一分表结束写入时间变量,并清空当前开始时间和当前结束时间,然后执行步骤315。
步骤315:生成新的分表的表名,将该分表名设置到当前分表表名变量中,然后执行步骤316;
步骤316:将前一分表开始写入时间和前一分表结束写入时间以及前一分表的数据量,更新到分表索引表中当前分表表名为前一分表表名变量的索引记录中,然后执行步骤317;
步骤317:将新生成的分表表名设置到新的索引记录的当前分表表名属性中,并将前一分表表名变量设置到新的索引记录的前一分表表名属性中,将新的索引记录保存到分表索引表中。
本实施例中,所述步骤301~步骤317的执行主体可以是数据存储装置,也可以是具有所述数据存储装置的FOTA系统。
采用本实施例所述技术方案,保证了在存储海量数据时数据库持久化写入性能的平稳性,从而保障了数据库系统在大用户量下持续运行的稳定性。具体的,在数据库系统运行时,能动态配置分表阈值,实现了根据系统当前的写入性能压力动态调整分表的大小,从而达到写入性能与分表数量的平衡;进一步地,通过分表索引表机制,可有效缩小查询的数据范围和数据量,进而提升升级数据的统计查询性能。
实施例三
图4为本发明实施例提供的数据存储装置的结构示意图一,如图4所示,该装置包括监测单元41、判断单元42和处理单元43;其中,
所述监测单元41,用于检测当前分表所写入的数据量;
所述判断单元42,用于判断所述当前分表所写入的数据量是否超出分表阈值;
所述处理单元43,用于当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中。
优选地,所述处理单元43,还用于:
生成新的分表的表名;
更新分表索引表中的关于所述当前分表的索引记录,并初步生成关于所述新的分表的索引记录;
其中,在分表索引表结构中,至少包含下述信息:
当前分表表名、开始写入时间、结束写入时间、当前分表数据量、前一分表表名、生成时间。
具体地,所述分表索引表结构示意图可参见图2。
这里,上述数据存储装置可设置于数据库系统中,如FOTA系统中。
本领域技术人员应当理解,图4中所示的数据存储装置中的各处理单元的实现功能,可参照前述数据存储方法的相关描述而理解。本领域技术人员应当理解,图4所示的数据存储装置中各处理单元,可通过运行于处理器上的程序而实现,也可通过具体地逻辑电路而实现。
实施例四
图5为本发明实施例提供的数据存储装置的结构示意图二,如图5所示,该装置包括监测单元41、判断单元42、处理单元43和初始化单元44;其中,
所述监测单元41,用于检测当前分表所写入的数据量;
所述判断单元42,用于判断所述当前分表所写入的数据量是否超出分表阈值;
所述处理单元43,用于当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中;
所述初始化单元44,用于进行初始化操作。
优选地,所述处理单元43,还用于:
生成新的分表的表名;
更新分表索引表中的关于所述当前分表的索引记录,并初步生成关于所述新的分表的索引记录;
其中,在分表索引表结构中,至少包含下述信息:
当前分表表名、开始写入时间、结束写入时间、当前分表数据量、前一分表表名、生成时间。
具体地,所述分表索引表结构示意图可参见图2。
优选地,所述初始化单元44,包括:
配置子单元441,用于动态配置分表阈值;
查找子单元442,用于查找是否存在分表索引表;
第一初始化子单元443,用于当不存在分表索引表时,创建分表索引表;
第二初始化子单元444,用于:
当存在分表索引表时,在分表索引表中查找是否有满足预设条件的索引记录;
当有满足预设条件的第一索引记录时,获取第一索引记录中的当前分表表名、开始写入时间、结束写入时间和前一分表表名,并分别设置到当前分表表名变量、当前分表开始写入时间变量、当前分表结束写入时间变量和前一分表表名变量中;查找是否有当前分表表名为前一分表表名的第二索引记录,如果有,获取第二索引记录的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,触发所述监测单元41执行写数据监测操作,如果没有,触发所述监测单元41执行写数据监测操作;
当没有满足预设条件的第一索引记录时,生成新的分表的表名;查找是否有生成时间离当前时点最近的第三索引记录,如果有,获取第三索引记录中的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,将所述当前分表表名设置为新生成的索引记录的前一分表表名,触发所述监测单元41执行写数据监测操作;如果没有,触发所述监测单元41执行写数据监测操作。
优选地,所述第一初始化子单元443,还用于:
生成首个分表的表名;
将所述首个分表的表名设置为首个索引记录的当前分表表名中,并触发所述监测单元41执行写数据监测操作。
这里,上述数据存储装置可设置于数据库系统,如FOTA系统中。
本领域技术人员应当理解,图4中所示的数据存储装置中的各处理单元的实现功能,可参照前述数据存储方法的相关描述而理解。本领域技术人员应当理解,图4所示的数据存储装置中各处理单元,可通过运行于处理器上的程序而实现,也可通过具体地逻辑电路而实现。
以上各实施例所述的数据存储装置中的监测单元41、判断单元42、处理单元43、初始化单元44、以及初始化单元44的配置子单元441、查找子单元442、第一初始化子单元443和第二初始化子单元444,在实际应用中均可由所述数据存储装置或所述数据存储装置所属系统中的中央处理器(CPU,CentralProcessingUnit)、数字信号处理器(DSP,DigitalSignalProcessor)或可编程门阵列(FPGA,FieldProgrammableGateArray)等实现。
采用本发明所述数据存储装置,解决了现有技术中当进行大数据量存储时数据库系统的持久化写入性能下降的问题,进而也提升数据库系统的统计查询性能。具体地,保证了在存储海量数据时数据库持久化写入性能的平稳性,从而保障了数据库系统在大用户量下持续运行的稳定性。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据存储方法,其特征在于,以分表的形式存储数据,所述方法还包括:
检测当前分表所写入的数据量;
判断所述当前分表所写入的数据量是否超出分表阈值;
当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中。
2.根据权利要求1所述的方法,其特征在于,所述生成新的分表,包括:
生成新的分表的表名;
更新分表索引表中的关于所述当前分表的索引记录,并初步生成关于所述新的分表的索引记录;
其中,在分表索引表结构中,至少包含下述信息:
当前分表表名、开始写入时间、结束写入时间、当前分表数据量、前一分表表名、生成时间。
3.根据权利要求1所述的方法,其特征在于,所述检测当前分表所写入的数据量之前,所述方法还包括:
进行初始化操作。
4.根据权利要求3所述的方法,其特征在于,所述进行初始化操作,包括:
动态配置分表阈值;
查找是否存在分表索引表;
如果不存在,创建分表索引表;
如果存在,在分表索引表中查找是否有满足预设条件的索引记录;
当有满足预设条件的第一索引记录时,获取第一索引记录中的当前分表表名、开始写入时间、结束写入时间和前一分表表名,并分别设置到当前分表表名变量、当前分表开始写入时间变量、当前分表结束写入时间变量和前一分表表名变量中;查找是否有当前分表表名为前一分表表名的第二索引记录,如果有,获取第二索引记录的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,触发写数据监测操作,如果没有,触发写数据监测操作;
当没有满足预设条件的第一索引记录时,生成新的分表的表名;查找是否有生成时间离当前时点最近的第三索引记录,如果有,获取第三索引记录中的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,将所述当前分表表名设置为新生成的索引记录的前一分表表名,触发写数据监测操作;如果没有,触发写数据监测操作。
5.根据权利要求4所述的方法,其特征在于,所述创建分表索引表,包括:
生成首个分表的表名;
将所述首个分表的表名设置为首个索引记录的当前分表表名中,触发写数据监测操作。
6.一种数据存储装置,其特征在于,所述装置包括:
监测单元,用于检测当前分表所写入的数据量;
判断单元,用于判断所述当前分表所写入的数据量是否超出分表阈值;
处理单元,用于当所述当前分表所写入的数据量超出分表阈值时,生成新的分表,并将待写入的数据写入所述新的分表中。
7.根据权利要求6所述的装置,其特征在于,所述处理单元,还用于:
生成新的分表的表名;
更新分表索引表中的关于所述当前分表的索引记录,并初步生成关于所述新的分表的索引记录;
其中,在分表索引表结构中,至少包含下述信息:
当前分表表名、开始写入时间、结束写入时间、当前分表数据量、前一分表表名、生成时间。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
初始化单元,用于进行初始化操作。
9.根据权利要求8所述的装置,其特征在于,所述初始化单元,包括:
配置子单元,用于动态配置分表阈值;
查找子单元,用于查找是否存在分表索引表;
第一初始化子单元,用于当不存在分表索引表时,创建分表索引表;
第二初始化子单元,用于:
当存在分表索引表时,在分表索引表中查找是否有满足预设条件的索引记录;
当有满足预设条件的第一索引记录时,获取第一索引记录中的当前分表表名、开始写入时间、结束写入时间和前一分表表名,并分别设置到当前分表表名变量、当前分表开始写入时间变量、当前分表结束写入时间变量和前一分表表名变量中;查找是否有当前分表表名为前一分表表名的第二索引记录,如果有,获取第二索引记录的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,触发所述监测单元执行写数据监测操作,如果没有,触发所述监测单元执行写数据监测操作;
当没有满足预设条件的第一索引记录时,生成新的分表的表名;查找是否有生成时间离当前时点最近的第三索引记录,如果有,获取第三索引记录中的开始写入时间和结束写入时间,并设置到前一分表开始写入时间变量和前一分表结束写入时间变量中,将所述当前分表表名设置为新生成的索引记录的前一分表表名,触发所述监测单元执行写数据监测操作;如果没有,触发所述监测单元执行写数据监测操作。
10.根据权利要求9所述的装置,其特征在于,所述第一初始化子单元,还用于:
生成首个分表的表名;
将所述首个分表的表名设置为首个索引记录的当前分表表名中,并触发所述监测单元执行写数据监测操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510385749.7A CN105095393B (zh) | 2015-06-30 | 2015-06-30 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510385749.7A CN105095393B (zh) | 2015-06-30 | 2015-06-30 | 一种数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095393A true CN105095393A (zh) | 2015-11-25 |
CN105095393B CN105095393B (zh) | 2018-11-16 |
Family
ID=54575830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510385749.7A Active CN105095393B (zh) | 2015-06-30 | 2015-06-30 | 一种数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095393B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681547A (zh) * | 2015-12-31 | 2016-06-15 | 努比亚技术有限公司 | 中间件实例管理装置和方法 |
CN106202524A (zh) * | 2016-07-22 | 2016-12-07 | 努比亚技术有限公司 | 数据库及其分表装置和方法 |
CN106294046A (zh) * | 2016-08-19 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种数据库实时写入数据测试存储系统丢失数据的方法 |
CN106959951A (zh) * | 2016-01-08 | 2017-07-18 | 北京国双科技有限公司 | 数据库的处理方法和装置 |
CN107657014A (zh) * | 2017-09-26 | 2018-02-02 | 上海斐讯数据通信技术有限公司 | 一种大容量数据表的动态分表方法及系统 |
CN107818115A (zh) * | 2016-09-14 | 2018-03-20 | 苏宁云商集团股份有限公司 | 一种处理数据表的方法及装置 |
CN107958041A (zh) * | 2017-11-23 | 2018-04-24 | 杭州电魂网络科技股份有限公司 | 数据存储方法、装置、服务器及可读存储介质 |
CN108062314A (zh) * | 2016-11-07 | 2018-05-22 | 北京京东尚科信息技术有限公司 | 动态分表数据处理方法和装置 |
CN108073584A (zh) * | 2016-11-08 | 2018-05-25 | 北京国双科技有限公司 | 一种数据处理方法及服务器 |
CN108108434A (zh) * | 2017-12-19 | 2018-06-01 | 福建中金在线信息科技有限公司 | 一种管理数据库的方法及装置 |
CN108228828A (zh) * | 2018-01-02 | 2018-06-29 | 北京思空科技有限公司 | 数据表处理方法及装置 |
CN110019436A (zh) * | 2017-07-14 | 2019-07-16 | 北京国双科技有限公司 | 数据导入\导出方法和装置、数据表处理方法和装置 |
CN110046161A (zh) * | 2019-03-18 | 2019-07-23 | 平安普惠企业管理有限公司 | 数据写入方法及装置、存储介质、电子设备 |
CN112017021A (zh) * | 2020-09-02 | 2020-12-01 | 四川长虹电器股份有限公司 | 一种自动查验发票真伪的方法 |
CN112162981A (zh) * | 2020-09-08 | 2021-01-01 | 杭州涂鸦信息技术有限公司 | 一种自适应的路由分库分表方法及系统 |
CN112527809A (zh) * | 2020-12-10 | 2021-03-19 | 盛立金融软件开发(杭州)有限公司 | 一种数据库数据写入方法、装置、设备及存储介质 |
CN113656401A (zh) * | 2021-07-09 | 2021-11-16 | 山东齐鲁数通科技有限公司 | 基于PostgreSql数据平均分表方法、装置、设备及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154206A1 (en) * | 2002-02-08 | 2003-08-14 | Sanyo Electric Co., Ltd. | File data storage management method, file data storage device, program executing processing for storing file data, and storage medium |
CN101150483A (zh) * | 2007-11-02 | 2008-03-26 | 华为技术有限公司 | 路由表调整方法、路由查询方法和装置及路由表存储装置 |
CN101207513A (zh) * | 2006-12-22 | 2008-06-25 | 中兴通讯股份有限公司 | 保存历史数据的方法及装置 |
CN101697152A (zh) * | 2009-10-23 | 2010-04-21 | 金蝶软件(中国)有限公司 | 一种数据库存储系统及其数据的拆分方法和装置 |
CN101894348A (zh) * | 2010-07-20 | 2010-11-24 | 中兴通讯股份有限公司 | 一种自扩展的联机交易系统及其实现方法 |
CN102033882A (zh) * | 2009-09-25 | 2011-04-27 | 中兴通讯股份有限公司 | 一种性能数据的存储方法及系统 |
CN102682044A (zh) * | 2011-04-14 | 2012-09-19 | 天脉聚源(北京)传媒科技有限公司 | 一种对php mysql数据库进行分表的方法 |
CN102867071A (zh) * | 2012-10-19 | 2013-01-09 | 烽火通信科技股份有限公司 | 一种网管海量历史数据管理方法 |
CN103810212A (zh) * | 2012-11-14 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 一种数据库索引的自动创建方法及系统 |
-
2015
- 2015-06-30 CN CN201510385749.7A patent/CN105095393B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154206A1 (en) * | 2002-02-08 | 2003-08-14 | Sanyo Electric Co., Ltd. | File data storage management method, file data storage device, program executing processing for storing file data, and storage medium |
CN101207513A (zh) * | 2006-12-22 | 2008-06-25 | 中兴通讯股份有限公司 | 保存历史数据的方法及装置 |
CN101150483A (zh) * | 2007-11-02 | 2008-03-26 | 华为技术有限公司 | 路由表调整方法、路由查询方法和装置及路由表存储装置 |
CN102033882A (zh) * | 2009-09-25 | 2011-04-27 | 中兴通讯股份有限公司 | 一种性能数据的存储方法及系统 |
CN101697152A (zh) * | 2009-10-23 | 2010-04-21 | 金蝶软件(中国)有限公司 | 一种数据库存储系统及其数据的拆分方法和装置 |
CN101894348A (zh) * | 2010-07-20 | 2010-11-24 | 中兴通讯股份有限公司 | 一种自扩展的联机交易系统及其实现方法 |
CN102682044A (zh) * | 2011-04-14 | 2012-09-19 | 天脉聚源(北京)传媒科技有限公司 | 一种对php mysql数据库进行分表的方法 |
CN102867071A (zh) * | 2012-10-19 | 2013-01-09 | 烽火通信科技股份有限公司 | 一种网管海量历史数据管理方法 |
CN103810212A (zh) * | 2012-11-14 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 一种数据库索引的自动创建方法及系统 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681547B (zh) * | 2015-12-31 | 2019-07-19 | 努比亚技术有限公司 | 中间件实例管理装置和方法 |
CN105681547A (zh) * | 2015-12-31 | 2016-06-15 | 努比亚技术有限公司 | 中间件实例管理装置和方法 |
CN106959951A (zh) * | 2016-01-08 | 2017-07-18 | 北京国双科技有限公司 | 数据库的处理方法和装置 |
CN106202524A (zh) * | 2016-07-22 | 2016-12-07 | 努比亚技术有限公司 | 数据库及其分表装置和方法 |
CN106294046A (zh) * | 2016-08-19 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种数据库实时写入数据测试存储系统丢失数据的方法 |
CN107818115B (zh) * | 2016-09-14 | 2022-04-26 | 南京星云数字技术有限公司 | 一种处理数据表的方法及装置 |
CN107818115A (zh) * | 2016-09-14 | 2018-03-20 | 苏宁云商集团股份有限公司 | 一种处理数据表的方法及装置 |
CN108062314A (zh) * | 2016-11-07 | 2018-05-22 | 北京京东尚科信息技术有限公司 | 动态分表数据处理方法和装置 |
CN108062314B (zh) * | 2016-11-07 | 2021-09-14 | 北京京东尚科信息技术有限公司 | 动态分表数据处理方法和装置 |
CN108073584B (zh) * | 2016-11-08 | 2021-11-30 | 北京国双科技有限公司 | 一种数据处理方法及服务器 |
CN108073584A (zh) * | 2016-11-08 | 2018-05-25 | 北京国双科技有限公司 | 一种数据处理方法及服务器 |
CN110019436B (zh) * | 2017-07-14 | 2021-04-09 | 北京国双科技有限公司 | 数据导入\导出方法和装置、数据表处理方法和装置 |
CN110019436A (zh) * | 2017-07-14 | 2019-07-16 | 北京国双科技有限公司 | 数据导入\导出方法和装置、数据表处理方法和装置 |
CN107657014A (zh) * | 2017-09-26 | 2018-02-02 | 上海斐讯数据通信技术有限公司 | 一种大容量数据表的动态分表方法及系统 |
CN107958041B (zh) * | 2017-11-23 | 2020-07-31 | 杭州电魂网络科技股份有限公司 | 数据存储方法、装置、服务器及可读存储介质 |
CN107958041A (zh) * | 2017-11-23 | 2018-04-24 | 杭州电魂网络科技股份有限公司 | 数据存储方法、装置、服务器及可读存储介质 |
CN108108434A (zh) * | 2017-12-19 | 2018-06-01 | 福建中金在线信息科技有限公司 | 一种管理数据库的方法及装置 |
CN108228828A (zh) * | 2018-01-02 | 2018-06-29 | 北京思空科技有限公司 | 数据表处理方法及装置 |
CN110046161A (zh) * | 2019-03-18 | 2019-07-23 | 平安普惠企业管理有限公司 | 数据写入方法及装置、存储介质、电子设备 |
CN112017021A (zh) * | 2020-09-02 | 2020-12-01 | 四川长虹电器股份有限公司 | 一种自动查验发票真伪的方法 |
CN112162981A (zh) * | 2020-09-08 | 2021-01-01 | 杭州涂鸦信息技术有限公司 | 一种自适应的路由分库分表方法及系统 |
CN112527809A (zh) * | 2020-12-10 | 2021-03-19 | 盛立金融软件开发(杭州)有限公司 | 一种数据库数据写入方法、装置、设备及存储介质 |
CN112527809B (zh) * | 2020-12-10 | 2023-10-27 | 盛立安元科技(杭州)股份有限公司 | 一种数据库数据写入方法、装置、设备及存储介质 |
CN113656401A (zh) * | 2021-07-09 | 2021-11-16 | 山东齐鲁数通科技有限公司 | 基于PostgreSql数据平均分表方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105095393B (zh) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095393A (zh) | 一种数据存储方法及装置 | |
KR102311032B1 (ko) | 데이터베이스 동기화 | |
JP6716727B2 (ja) | ストリーミングデータ分散処理方法及び装置 | |
CN105447139B (zh) | 一种数据采集统计方法及其系统、终端、服务设备 | |
CN103678494A (zh) | 客户端同步服务端数据的方法及装置 | |
CN107133309B (zh) | 流程实例的存储、查询方法及装置、存储介质及电子设备 | |
CN103379129A (zh) | 一种数据同步方法、服务器及分布式系统 | |
CN107577697B (zh) | 一种数据处理方法、装置及设备 | |
CN111177165B (zh) | 数据一致性检测的方法、装置及设备 | |
CN102750629B (zh) | 日程关联方法及装置 | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
KR20130123482A (ko) | 데이터 동기화를 위한 타임 스탬프 관리 방법 및 그 단말 | |
CN104169902A (zh) | 同步本地和远程数据 | |
CN105022815A (zh) | 信息拦截方法及装置 | |
CN104219639A (zh) | 一种显示短信记录的方法和装置 | |
CN111782728A (zh) | 一种数据同步方法、装置、电子设备及介质 | |
CN112764663A (zh) | 云存储空间的空间管理方法、装置和系统、电子设备以及计算机可读存储介质 | |
CN105681252A (zh) | 一种基于客户端侧数据的处理方法及装置 | |
CN104348905A (zh) | 一种离线推送消息的方法及装置 | |
CN109039695B (zh) | 业务故障处理方法、装置及设备 | |
CN110851398A (zh) | 垃圾数据的回收处理方法、装置及电子设备 | |
CN115858668A (zh) | 分布式事务处理方法、装置、电子装置及存储介质 | |
CN114138615A (zh) | 一种业务告警处理方法、装置、设备及存储介质 | |
CN108037950A (zh) | 一种信息删除方法、装置、电子设备及可读存储介质 | |
CN114239510A (zh) | 业务信息的处理方法、装置、存储介质和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |