用于分布式键-值存储系统的数据存储、管理和查询方法及系统的制作方法

文档序号:6435682阅读:279来源:国知局

专利名称::用于分布式键-值存储系统的数据存储、管理和查询方法及系统的制作方法
技术领域
:本发明属于信息安全领域,尤其涉及在分布式键-值(KEY-VALUE)文本数据存储系统中的数据存储、管理与查询机制。
背景技术
:目前电子商务,系统运行日志,web应用等都积累了大量的文本类数据,其规模巨大,即使是小型企业也收集了上TB的数据量,对于这种大数据集的应用背景,传统的数据库已经无法适用。目前针对该类场景,成功的解决方案是利用分布式KEY-VALUE型NO-SQL数据库通过建立列存结构,结合压缩、分块等技术提高数据的压缩效率和存储规模。由于文本数据类型简单直观,易于在异构的集群系统中迁移,目前典型大规模分布式海量数据存储系统中直接采用文本类型数据作为底层的存储数据源。典型的分布式NO-SQL数据库如Google的Bigtable,Apache的Hbase以及Yahoo的PNUTS等,都直接保存文本类型的数据源,建立列存储结构并在此基础上进一步实现分布式海量数据存储管理系统。在文本类数据存储系统中对文本数据按照字典序排序存储,可以快速定位到满足条件的记录位置,然后返回该条记录或从该记录开始按序返回其后的所有记录,由于避免了大量的随机读取操作带来的开销,精确查询和区间查询在文本类数据存储管理系统中具有很高的查询效率。但是在文本类数据存储系统中,对于非字符型数据,比如整数(INTEGER)类型等,按照文本的字典序排序后存储顺序与数值顺序不一致,在数据检索时无法发挥出文本类数据存储系统的批量检索优势。而且现有的文本类数据存储管理系统对外仅能提供精确查找、区间查找两种方法。通过KEY查找VALUE,即在KEY=Kl条件下,查找对应的VALUE;通过KEY查找一个区间的VALUE,即在Kl<KEY<K2范围内查找所有的VALUE。可见,这种基于列存的分布式文本存储系统对于复杂查询的应用场景不再适用,无法实现结构化数据的多属性检索、数值类统计、分析等操作。这一局限降低了文本类分布式数据库在大数据集、结构化数据中应用范围。
发明内容因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于分布式KEY-VALUE数据存储系统的数据存储、管理和查询方法,支持多字段属性、多数据类型的结构化数据存储与查询。本发明的目的是通过以下技术方案实现的根据本发明的一个方面,本发明提供了一种用于分布式KEY-VALUE数据存储系统的数据存储方法,该方法包括步骤1)根据不同的数据类型的转换方式将数据转换为相应的字符串,以使转换后的字符串以字典序排序后的顺序与转换前的数据的数值顺序相一致;步骤2~)将步骤1)得到的字符串按字典序排序存储。上述数据存储方法中,所述数据类型包括数值类型、文本类型、存储点分十进制的IP地址的数据类型,存储时间的数据类型。上述数据存储方法中,所述数值类型的转换方式为将数值类型的数据通过左填充0的方式转换为定长的数字字符串。上述数据存储方法中,所述存储时间的数据类型的转换方式为将该类型的数据转换为“年月日时分秒”格式的长度为14的字符串,其中“年”为4个字符长度,其余为2个字符长度。上述数据存储方法中,所述存储点分十进制的IP地址的数据类型的转换方式为首先,将该类型的数据从“a.b.c.d”的格式按如下计算公式转换为整数aXk3+bXk2+cXk1+d,其中k为大于255的自然数;然后将经公式计算后得到的整数以左填充0的方式转换为定长的字符串。上述数据存储方法中,所述文本类型的转换方式为直接将该类型的数据保存为字符串。根据本发明的又一个方面,本发明提供了一种用于采用上述数据存储方法的分布式KEY-VALUE数据存储系统的数据查询方法,所述方法包括接收用户输入的检索条件,并根据不同的数据类型的转换方式将检索条件中的数据转换为相应的字符串;基于所述字符串,通过KEY-VALUE数据存储系统提供的精确查询和/或区间查找,定位具体的存储位置,并返回查询结果;根据所述不同的数据类型的转换方式对查询结果进行逆运算以得到相应类型的数据。根据本发明的又一个方面,本发明提供了一种用于分布式KEY-VALUE数据存储系统的结构化数据管理方法,所述方法包括步骤101,以记录的单位来加载数据;所述记录的格式是由表格限定的,表格的基本信息保存在表格元数据中,所述表格基本信息包括表名,多个字段名及其相应的数据类型,所述记录包括表格中的所有字段;步骤102,将每个η个记录保存为一个数据文件,对于记录的每个字段,根据表格元数据中的保存的相应的数据类型信息采用上述的数据存储方法进行存储;其中,不同字段对应的内容分别保存到同一文件的不同位置,采用块内索引标识在同一个文件中多个字段在该文件中保存的偏移位置,所述块内索引由指示数据在文件内的存储位置指针构成,在每个数据文件后部以追加的方式保存块内索引。上述结构化数据管理方法中,所述数据文件存储于分布式的存储介质中,数据文件之间以B+树进行索引。上述结构化数据管理方法中,还包括查询的步骤,所述查询的步骤包括以下步骤根据表格元数据中的保存的信息判断用户输入的检索条件是否合法;如果合法,则基于表格元数据中的保存的字段的数据类型信息,根据不同的数据类型的转换方式将检索条件中的数据转换为相应的字符串;基于所述字符串,通过KEY-VALUE数据存储系统提供的精确查询和/或区间查找,定位具体的存储位置,并返回符合条件的记录;根据所述不同的数据类型的转换方式对记录的每个字段进行逆运算以得到相应类型的数据。根据本发明的又一个方面,本发明提供了一种分布式KEY-VALUE数据存储系统,所述系统包括用于根据不同的数据类型的转换方式将数据转换为相应的字符串的装置,所述经转换后得到的字符串以字典序排序后的顺序与转换前的数据的数值顺序相一致;用于将经转换得到的字符串按字典序排序存储的装置。上述数据存储系统中,所述数据类型包括数值类型、文本类型、存储点分十进制的IP地址的数据类型,存储时间的数据类型。上述数据存储系统中,所述数值类型的转换方式为将数值类型的数据通过左填充0的方式转换为定长的数字字符串。所述存储时间的数据类型的转换方式为将该类型的数据转换为“年月日时分秒”格式的长度为14的字符串,其中“年”为4个字符长度,其余为2个字符长度。所述文本类型的转换方式为直接将该类型的数据保存为字符串。上述数据存储系统中,所述存储点分十进制的IP地址的数据类型的转换方式为首先,将该类型的数据从“a.b.c.d”的格式按如下计算公式转换为整数aXk3+bXk2+cXk1+d,其中k为大于255的自然数;然后将经公式计算后得到的整数以左填充0的方式转换为定长的字符串。上述数据存储系统中,还包括数据查询装置,其用于根据不同的数据类型的转换方式将检索条件中的数据转换为相应的字符串,以及用于通过KEY-VALUE数据存储系统提供的精确查询和/或区间查找,定位具体的存储位置,并返回查询结果。上述数据存储系统中,还包括用于以记录的单位来加载数据的装置;所述记录的格式是由表格限定的,表格的基本信息保存在表格元数据中,所述表格基本信息包括表名,多个字段名及其相应的数据类型,所述记录包括表格中的所有字段;用于将每个η个记录保存为一个数据文件,对于记录的每个字段,根据表格元数据中的保存的相应的数据类型信息采用上述的数据存储方法进行存储的装置;其中,不同字段对应的内容分别保存到同一文件的不同位置,采用块内索引标识在同一个文件中多个字段在该文件中保存的偏移位置,所述块内索引由指示数据在文件内的存储位置指针构成,在每个数据文件后部以追加的方式保存块内索引。其中所述数据文件存储于分布式的存储介质中,数据文件之间以B+树进行索引。与现有技术相比,本发明的优点在于本发明在数据存储时进行数据格式转换,保证数据值的排序与文本存储字典序一致;在数据检索时,对检索条件中的数值进行相同的转化。在充分利用文本数据存储、检索优势基础上,通过对数据的转换,支持复杂数据类型的存储与检索,包括多字段属性查询、多数据类型查询以及数值统计分析等复杂的数据查询方法;实现多种数据类型管理的功能。该方法可充分发挥分布式文本数据管理系统的潜力、挖掘海量数据的潜在价值,对外提供更丰富的数据查询方法。以下参照附图对本发明实施例作进一步说明,其中图1为根据本发明实施例的符合表格定义的多个记录的示意图;图2为根据本发明实施例的用于分布式KEY-VALUE数据存储系统的结构化数据管理方法的流程示意图;图3为根据本发明实施例的数据加载和转换的流程示意图;图4为根据本发明实施例的数据存储和索引的架构示意图;图5为根据本发明实施例的用于分布式KEY-VALUE数据存储系统的结构化数据查询方法流程图;图6为根据本发明实施例的分布式KEY-VALUE数据存储系统的架构示意图。具体实施例方式为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在一个实施例中,提供了一种用于分布式KEY-VALUE数据存储系统的数据存储方法。该方法在存储数据之前,先根据不同的数据类型分别将数据转换为有序的字符串,然后将其保存到分布式KEY-VALUE数据存储系统中,经转换后的得到的字符串以字典序排序后的存储顺序与转换前的数值顺序相一致,以便支持对复杂数据类型如INTEGER(整数),以及用户自定义的数据类型的存储和检索,例如用于存储IP地址的IPFIELD类型。在本实施例中采用的数据类型包括数值类型,IPFIELD(IP地址字段),文本类型(TEXT),TIMESTAMP(时间戳)。更具体地,对于数值类型的数据,以INTEGER(整数)为例,需要支持大于,小于等数学比较操作,数值类统计分析操作,如求和操作SUM,取平均值操作AVG等。在本实施例中,以最大字符个数为10的十进制数字字符串来表示INTEGER类型数据,其所代表的整数范围是(0-9999999999),当输入的数字字符个数小于10时,左填充0占满长度为10的字符串。比如数字1000转换的结果字符串为“0000001000”。在其他实施例中,可以根据用户需求或系统配置,将整数类型的数据转换为其他长度的数字字符串。也可以根据用户需求或系统配置,将实数、小数等数值类型的数据通过左填充0的方式来转换为定长的数字字符串οIPFIELD类型用于存储点分十进制的IPV4地址数据,是根据网络数据流等应用场景而设置的一种数据类型。IPFIELD数据类型的检索规则是检索精确的IP地址或检索一个区间内的IP地址。首先,将该类型的数据从“a.b.c.d”的格式按如下计算公式转换为整数^XP+bXf+cXki+d,其中k为大于255的自然数;然后所得到的整数以左填充0的方式转换为定长的数字字符串。比如10.0.0.1,其可以转换为整数167772161,计算方法为10X256"3+0X256"2+0X256"1+1=167772161。然后对167772161做整数存储,按照上述整数的转换规则左侧补充0,生成的字符串为“0167772161”。TEXT类型数据直接保留输入的文本内容即可。利用现有文本类数据存储系统的检索接口可直接支持文本类的查询操作,例如实现精确查找,前缀匹配查找等。TIMESTAMP类型记录以秒为单位的时间戳信息,支持时间戳的精确查找和时间区间查找操作。其数据格式是“年月日时分秒”的数字字符串,比如当前时间是“2011年7月28日205418”,则保存的字符串格式是“201107^2(^418”,从而将TIMESTAMP类型存储成定长的字符串,在文本存储系统中可以实现按照字典序排序存储。根据不同的数据类型分别将数据转换为有序的字符串后,将其保存到分布式KEY-VALUE数据存储系统中。这样可以克服在现有文本类数据存储系统中对于非字符型数据按照文本的字典序排序后存储顺序与数值顺序不一致的问题,从而在数据检索时充分发挥出文本类数据存储系统的检索优势。例如,对于TIMESTAMP类型的检索条件和TEXT类型的检索条件,可以直接根据文本类数据存储系统提供的精确查找,区间查找方法进行检索。对于INTEGER类型字段,由于在上文所述的存储INTEGER类型数据时都要进行左补零填充以转换为有序字符串,那么在数据查询时针对查询条件中的INTEGER类型的数值进行相同的转化工作,然后再利用文本数据存储系统的精确查询,定位于具体的存储位置,并返回查询结果。对于特殊的统计操作,比如SUM,AVG等聚合函数,把返回的结果集根据目标字符串格式转化为对应的数值后进行相关的统计操作。IPFIELD类型数据主要支持IP地址类的精确查询,子网查询(指查询特定网段内的IP地址)等等。类似地,在开始检索之前,要如上文所述的转换步骤对检索条件中的IPFIELD字段进行转换。比如查询在192.16.18.1到192.16.18.255网段内的所有IP地址,可以转为检索整数区间[3222278657,3222278911]内的满足条件的整数。在又一个实施例中,还提供了一种用于分布式KEY-VALUE数据存储系统的结构化数据管理方法。在该实施例中,采用了面向结构化数据的管理方式,数据的管理和存储均是以记录为单位来进行的。其中,记录的格式可以由表格进行限定,例如,可以通过定义表格,把多个KEY-VALUE型数据整合成用户自定义的记录。表格的基本信息和辅助信息保存在表格元数据中。表格基本信息包括表名,字段名,字段类型等信息,这些信息在对输入的数据进行规范,转化和封装时使用。辅助信息是为了加速结构化数据的查询操作,记录的信息包括记录总数,每个字段当前最大,最小值等。每个表格可以包括多条记录,每条记录包含表格所定义的所有字段,每个字段可以有数据,也可以为空,当为空时使用‘MULL’关键字标示,也就是说当进行数据处理时遇到‘MULL’关键字时,不做处理或不显示,表示该字段内没有内容。在本实施例汇总,表格基本信息是用户调用创建表格命令时创建并保存的。典型的创建表格的命令例如CREATETABLEDNS_TABLE(DOMAINTEXT,VALUEIPFIELD,COUNTINTEGER,TIMETIMESTAMP)。其中CREATETABLE是创建表格的命令,DNS_TABLE是用户定义的表格名称。上述命令的含义为创建一个表名为DNS_TABLE的表格,包括字段DOMAIN,其数据类型为TEXT;字段VALUE,其数据类型IPFIELD;字段COUNT,其数据类型为INTEGER;字段TIME,其数据类型为TIMESTAMP。其中DOMAIN存放域名信息,如‘www.xx.com’;VALUE为域名对应的IP地址数据,如‘192.16.18.10’,C0UNT为一段时间内被访问的次数,采用整数计数单位,TIME为本条记录产生的时间戳信息,以秒为单位。如图1所示,例如,“www.xx.com,192.16.18.10,10,20110628101010”、“www.yy.com,192.16.18.8,1,20110628101011”均是符合所定义的表格结构的完整的记录。应理解,用户根据自己的需要,可以定义其他的类型的表格,比如定义一个存储学生信息的表格;如CREATETABLESTUDENT_INF0(NAMETEXT,AGEINTEGER,CLASSTEXT);其中,定义的表格名称为STUDENT_INF0,表格中有三个字段,分别为学生名字(ΝΑΜΕ),ΤΕΧΤ类型;学生年龄(AGE),INTEGER类型以及学生班级(CLASS),TEXT类型。表格元数据在创建表格时生成,会一直保存,直到删除表格时删除。在表格创建后,对表格所有的操作都会根据表格元数据执行。在数据加载时需要根据在表格元数据中保存的关于表格的基本信息中的数据类型对输入的每个字段进行判断,比如对于一个字段,如果其在表格基本信息记录为INTEGER,但是输入了字符串’aa’表示不符合类型,做出错处理,返回输入错误提示。在数据检索时也要根据在表格元数据中保存的表格基本信息和辅助信息对检索条件中提供的数值进行转化与判断。应指出,上述表结构仅起示例而不是限制的作用,具体的表结构可以由用户根据需求而设置的,可以包括用户所需的多个字段。另外,在数据加载过程中,每个表格的一些常用辅助信息,比如总的记录数目,最大、最小时间戳等信息也会定期保存到表格元数据中,加速后期的检索过程。图2所示的是用于分布式KEY-VALUE数据存储系统的结构化数据管理方法的流程示意图。该结构化数据管理方法主要包括以下步骤步骤1,以记录为单位加载数据,并按上文接收的方法进行格式转换。图3所示的是数据加载和转换的流程示意图。其中,数据加载是指读取原始数据,根据表格元数据将其封装成记录。以记录为单位可以逐条导入数据,也可以使用数据文件批量导入数据,多条记录之间使用’\n’分割,多个字段之间使用分隔符“,”分割。然后,针对每条记录包含各个字段的内容,根据表格元数据中保存的表格基本信息,进行类型判断,不符合表格结构中定义的数据类型,报告错误并返回;符合定义类型的记录,根据上文所述的方法进行数据格式的转换。数据加载命令例如INSERTINTODNS_TABLEVALUES('www.google,com','192.16.18.10','10','20110628101010');上述命令的含义为向DNS_TABLE表格加载一条具有四个字段的记录,字段之间使用‘,’分割。依照上文所述的方法分别对该记录的各个字段的数据进行格式转换,例如对于INGERTER类型的数据“10”,将其左侧补充0,生成的相应的有序字符串“0000000010”。步骤2,数据存储。图4所示的是数据存储和索引的示意图。其中,对于记录的每个字段,将经过转换后的字段值按照字典序排序存储,不同字段对应的内容分别保存到文件的不同位置,为了在同一个文件中区分多个字段实际在文件中保存的偏移位置,引入块内索引进行标识,块内索引是由指示数据在文件内的存储位置指针构成。在每个数据文件后部以追加的方式保存块内索引。例如图4所示的块内〈DOMAINPointer〉,其指针指向以字典序排列的DOMAIN字段的第一个字段值〈www.google,com,RecordD0块内索引的大小使用固定长度的数据块存储,便于一次性加载到内存中进行数据检索,例如可以是4K大小。另外,还可以在存储节点上对数据文件采用gzip压缩算法进行数据压缩,由于相同或相近字段的数据值是相邻存储,并进行字典序排序,因此引入压缩技术后会显著提高数据的存储效率。与现有技术相比,本实施例的块内索引为结构化的记录数据建立文件内索引,加快用户自定义的表格的结构化数据查询,其它的KEY-VALUE型数据库建立的是KEY-VALUE型块内索引,支持KEY-VALUE型数据查询,而不支持结构化数据的查询。此外,在本实施例中以记录为单位的数据管理方法既可以加速结构化数据的查询过程,也可以利用其它的KEY-VALUE型数据库作为底层的数据存储系统,利用其提供的检索接口,结合上文所描述的表格元数据进行数据的封装、转换对用户实现结构化数据的管理。当存储的数据量较少时,在单机环境下可以实现对应的数据管理功能。但是随着保存时间的延长,系统存储的数据量会逐渐增大,比如TB甚至PB量级时,远远超出单机的处理能力,因此还需要将数据进行分布式的存储。在本实施例中,采用了定长数据块分割方法,采用200万记录作为分隔的阈值,当记录数目达到200万时通过上述方法拼接成一个新的文件。以文件为单位将数据进行分布存储。同时为了加速数据的检索过程,采用了分布式索引与集中式索引相结合的索引机制,在数据文件之间建立,统一索引各个分布存放的数据文件,该索引统一存放;而在每个数据文件内部使用上文所述的块内字段索引,加速每个数据块内部数据具体记录数据的检索过程。如图4所示,在多个数据文件之间,建立分布式B+Tree索引进行统一的组织。分布式B+Tree的每个叶节点是具体的数据文件。由于在日志类数据,流数据等应用场合,时间是主要的检索标志,还可以默认采用时间作为文件分割的标准,即把一定时间间隔内加载的记录作为一个数据文件进行存储,同时基于时间属性来建立分布式B+Tree。图5描述了用于分布式KEY-VALUE数据存储系统的数据查询方法的流程示意图。该方法基于表格元数据,按照上文所介绍的方法对用户输入的检索条件中提供的数据项进行格式转换,将其转换为以上文所介绍的方法在存储系统中实际存储的数据形式;根据转换后的检索条件,检索系统存储的数据文件;在返回结果集进行展示之前,根据数据转换规则把结果集进行逆运算,转换为用户理解的表达方式。该方法通过对数据的转换,支持复杂数据类型的存储与检索,包括精确查询,区间查询,模糊查询,数值统计,分组排序、多字段属性查询、多数据类型查询等复杂的数据查询方法。下面对该方法进行更详细的讨论。在该实施例中,例如,用户可以用SQL语言来描述查询条件。接收到用户输入的查询条件后,需要对其进行解析,提取出对应的查询条件和相关的数据值,根据表格元数据来判断数据值是否合法,如果合法,则将查询条件中涉及的数据进行格式转换。以DNS_TABLE为例,多字段属性的检索是指针对表格中多个字段设置检索条件,如检索域名为www.google,com,一段时间内解析次数大于10,并且时间在2011年06月观日10时10分10秒到2011年06月29日10时10分10秒内的DNS访问记录;可以表示为SELECT*FR0MDNS_TABLEWHEREDOMAIN='www.google,com'ANDCOUNT>10ANDTIME=[20110628101010T020110629101010];其中,对于TIME字段的TIMESTAMP类型的查询条件和DOMAIN字段的TEXT类型的查询条件,可以直接根据文本类数据存储系统提供的精确查找,区间查找方法进行检索。对于INTEGER类型字段,由于在上文所述的存储INTEGER类型数据时都要进行左补零填充以转换为有序字符串,那么在数据查询时针对查询条件中的INTEGER类型的数值进行相同的转化工作,然后再利用文本数据存储系统的精确查询,定位于具体的存储位置,并返回查询结果。对于特殊的统计操作,比如SUM,AVG等聚合函数,把返回的结果集根据目标字符串格式转化为对应的数值后进行相关的统计操作。再例如,查询IP地址在192.16.18.1到192.16.18.255网段内访问次数小于100的记录,并对结果集根据COUNT做降序排列,可以使用如下查询条件SELECT*FR0MDNS_TABLEWHEREVALUE=[192.16.18.1T0192.16.18.255]ANDCOUNT<1000RDERBYCOUNTDESC;其中在开始检索之前,要如上文所述的转换步骤对IPFIELD字段进行转换。比如将[192.16.18.ITO192.16.18.255]转换为检索整数区间[3222278657,3222278911]内的满足条件的记录。在又一个实施例中,还提供了一种分布式KEY-VALUE数据存储系统。图6所示的分布式KEY-VALUE数据存储系统的一个实施例的示意图。如图6所示,该系统包括数据导入装置M,数据导出装置N,输入数据类型转换及加载装置A,元数据管理装置B,数据检索及输出数据类型转换装置C,数据存储与管理装置D以及分布式存储介质管理装置E。其中,数据导入装置M读取由用户程序或数据文件加载的原始数据源,以记录为单位逐条导入。每条记录包含多个字段,每个字段可以有数据,也可以为空,当为空时使用‘MULL’关键字标示。数据导入装置M也可以使用数据文件批量导入数据。此时多条记录之间使用’\n’分割,多个字段之间使用分隔符“,”分割。输入数据类型转换及加载装置A,接收由数据导入装置M读取的数据源。针对每条记录包含各个字段的内容,根据元数据管理装置C中的表格元数据信息,进行类型判断,如果不符合表格结构中定义的数据类型,报告错误并返回;如果符合定义类型的记录,根据定义的数据类型和上文介绍的不同数据类型的转换方式,进行数据格式转换。经过转换后的记录通过数据存储与管理装置D加载到分布式存储环境中。元数据管理装置B定义并保存表格的基本信息,包括表名,字段名,字段类型等元数据信息。输入数据类型转换及加载装置A对加载的数据源进行转换时会根据元数据管理装置B内保存的元数据信息进行相应的转换。数据检索及输出数据类型转换装置C在进行数据转化时也会使用装置B内保存的元数据对用户输入的检索条件中提供的数据项进行判断、转化。数据检索及输出数据类型转换装置C接收用户提供的检索条件,对检索条件中提供的数据,根据上文介绍的不同数据类型的转换方式,转换成底层存储系统中保存的数据格式后调用数据存储与管理装置D的数据检索接口进行数据查询操作,并接收、汇总数据存储与管理装置D返回的查询结果集,必要时进行相关的转化工作。数据存储与管理装置D管理分布式存储的文本数据,针对大量文本数据建立分布式数据存储与管理规则。基本方法是通过对数据进行分块、分布存储,每个数据块是一个基本的存储单位。为了加速检索过程,引入数据文件级别的集中索引与每个文件内部的块内独立索引,通过集中索引与分布索引相结合的方法,支持文本数据的快速查询操作。分布式存储介质管理装置E提供硬件存储资源,在大规模海量数据存储系统中,可以使用分布式文件系统,如HDFS等实现硬件资源的整合。使系统具备数据写入、读出以及在线扩容等基本功能,必要时提供副本管理,数据容灾等功能。数据导出装置N,接收由数据检索及输出数据类型转换装置C返回的查询结果数据集,进行数据格式的封装,转换成用户自定义且可识别的数据格式。检索的结果集通常在界面上直接展示或导出到指定位置的文件或目录中。该系统可以部署于分布式环境中,每个装置运行于独立的服务器设备上,数据导入装置M和数据导出装置N是面向用户的接口部分,分布式存储介质管理装置E可以使用目前的分布式文件系统或集群文件系统等实现。虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。权利要求1.一种用于分布式KEY-VALUE数据存储系统的数据存储方法,所述方法包括步骤1)根据不同的数据类型的转换方式将数据转换为相应的字符串,以使转换后的字符串以字典序排序后的顺序与转换前的数据的数值顺序相一致;步骤幻将步骤1)得到的字符串按字典序排序存储。2.根据权利要求1所述的数据存储方法,所述数据类型包括数值类型、文本类型、存储点分十进制的IP地址的数据类型,存储时间的数据类型。3.根据权利要求2所述的数据存储方法,所述数值类型的转换方式为将数值类型的数据通过左填充0的方式转换为定长的数字字符串。4.根据权利要求2所述的数据管理方法,所述存储时间的数据类型的转换方式为将该类型的数据转换为“年月日时分秒”格式的长度为14的字符串,其中“年”为4个字符长度,其余为2个字符长度。5.根据权利要求2所述的数据管理方法,所述存储点分十进制的IP地址的数据类型的转换方式为首先,将该类型的数据从“a.b.c.d”的格式按如下计算公式转换为整数aXk3+bXk2+cXk1+d,其中k为大于255的自然数;然后将经公式计算后得到的整数以左填充0的方式转换为定长的字符串。6.根据权利要求2所述的数据存储方法,所述文本类型的转换方式为直接将该类型的数据保存为字符串。7.一种用于采用如上述任一权利要求所述的数据存储方法的分布式KEY-VALUE数据存储系统的数据查询方法,所述方法包括接收用户输入的检索条件;根据不同的数据类型的转换方式将检索条件中的数据转换为相应的字符串;基于所述字符串,通过KEY-VALUE数据存储系统提供的精确查询和/或区间查找,定位具体的存储位置,并返回查询结果;根据所述不同的数据类型的转换方式对查询结果进行逆运算以得到相应类型的数据。8.一种用于分布式KEY-VALUE数据存储系统的结构化数据管理方法,所述方法包括步骤101,以记录的单位来加载数据;所述记录的格式是由表格限定的,表格的基本信息保存在表格元数据中,所述表格基本信息包括表名,多个字段名及其相应的数据类型,所述记录包括表格中的所有字段;步骤102,将每个η个记录保存为一个数据文件,对于记录的每个字段,根据表格元数据中的保存的相应的数据类型信息采用如权利要求1-6所述的数据存储方法进行存储;其中,不同字段对应的内容分别保存到同一文件的不同位置,采用块内索引标识在同一个文件中多个字段在该文件中保存的偏移位置,所述块内索引由指示数据在文件内的存储位置指针构成,在每个数据文件后部以追加的方式保存块内索引。9.根据权利要求8所述的结构化数据管理方法,其中所述数据文件存储于分布式的存储介质中,数据文件之间以B+树进行索引。10.根据权利要求8所述的结构化数据管理方法,还包括查询的步骤,所述查询的步骤包括以下步骤根据表格元数据中的保存的信息判断用户输入的检索条件是否合法;如果合法,则基于表格元数据中的保存的字段的数据类型信息,根据不同的数据类型的转换方式将检索条件中的数据转换为相应的字符串;基于所述字符串,通过KEY-VALUE数据存储系统提供的精确查询和/或区间查找,定位具体的存储位置,并返回符合条件的记录;根据所述不同的数据类型的转换方式对记录的每个字段进行逆运算以得到相应类型的数据。11.一种分布式KEY-VALUE数据存储系统,所述系统包括用于根据不同的数据类型的转换方式将数据转换为相应的字符串的装置,所述经转换后得到的字符串以字典序排序后的顺序与转换前的数据的数值顺序相一致;用于将经转换得到的字符串按字典序排序存储的装置。12.根据权利要求11所述的数据存储系统,其中,所述数据类型包括数值类型、文本类型、存储点分十进制的IP地址的数据类型,存储时间的数据类型。13.根据权利要求12所述的数据存储系统,所述数值类型的转换方式为将数值类型的数据通过左填充0的方式转换为定长的数字字符串。14.根据权利要求12所述的数据存储系统,所述存储时间的数据类型的转换方式为将该类型的数据转换为“年月日时分秒”格式的长度为14的字符串,其中“年”为4个字符长度,其余为2个字符长度。15.根据权利要求12所述的数据存储系统,所述存储点分十进制的IP地址的数据类型的转换方式为首先,将该类型的数据从“a.b.c.d”的格式按如下计算公式转换为整数aXk3+bXk2+cXk1+d,其中k为大于255的自然数;然后将经公式计算后得到的整数以左填充0的方式转换为定长的字符串。16.根据权利要求12所述的数据存储系统,所述文本类型的转换方式为直接将该类型的数据保存为字符串。17.根据权利要求12所述的数据存储系统,还包括数据查询装置,其用于根据不同的数据类型的转换方式将检索条件中的数据转换为相应的字符串,以及用于通过KEY=VALUE数据存储系统提供的精确查询和/或区间查找,定位具体的存储位置,并返回查询结18.根据权利要求11所述的数据存储系统,还包括用于以记录的单位来加载数据的装置;所述记录的格式是由表格限定的,表格的基本信息保存在表格元数据中,所述表格基本信息包括表名,多个字段名及其相应的数据类型,所述记录包括表格中的所有字段;用于将每个η个记录保存为一个数据文件,对于记录的每个字段,根据表格元数据中的保存的相应的数据类型信息采用如权利要求1-6所述的数据存储方法进行存储的装置;其中,不同字段对应的内容分别保存到同一文件的不同位置,采用块内索引标识在同一个文件中多个字段在该文件中保存的偏移位置,所述块内索引由指示数据在文件内的存储位置指针构成,在每个数据文件后部以追加的方式保存块内索引。19.根据权利要求18所述的数据存储系统,其中所述数据文件存储于分布式的存储介质中,数据文件之间以B+树进行索引。全文摘要本发明提供用于分布式KEY-VALUE数据存储系统的数据存储、管理方法及系统。在存储数据之前,先根据不同的数据类型分别数据转换为有序的字符串,然后将其保存到分布式KEY-VALUE数据存储系统中,经转换后的得到的字符串以字典序排序后的存储顺序与转换前的数值顺序相一致。在数据检索时,对检索条件中的数值进行相同的转化。支持复杂数据类型的存储与检索,包括多字段属性查询、多数据类型查询以及数值统计分析等复杂的数据查询方法。文档编号G06F17/30GK102332030SQ20111031492公开日2012年1月25日申请日期2011年10月17日优先权日2011年10月17日发明者云晓春,吴广君,安丰春,王树鹏,郝丽珍申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1