CN111522820A - 数据存储结构、存储检索方法、系统、设备及存储介质 - Google Patents
数据存储结构、存储检索方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN111522820A CN111522820A CN202010337079.2A CN202010337079A CN111522820A CN 111522820 A CN111522820 A CN 111522820A CN 202010337079 A CN202010337079 A CN 202010337079A CN 111522820 A CN111522820 A CN 111522820A
- Authority
- CN
- China
- Prior art keywords
- data
- library
- storage
- column
- unique index
- 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
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000013500 data storage Methods 0.000 title claims abstract description 39
- 238000013507 mapping Methods 0.000 claims abstract description 63
- 238000004590 computer program Methods 0.000 claims description 14
- 238000013329 compounding Methods 0.000 claims description 4
- 230000003287 optical effect Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000013307 optical fiber Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/2455—Query execution
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了数据存储结构、存储检索方法、系统、设备及存储介质,数据存储结构按照存储顺序依次包括:所有数据类型的映射占用字节总长度的字节和各数据类型映射占用的字节构成的Head部分,以及各数据类型的实际数据占用的字节构成的Value部分;定义每一数据类型的映射位置序号,以及定义每一数据类型映射占用的字节长度;以及按照各数据类型的映射位置序号顺序,依次存储各数据类型的实际数据。存储的方法包括:每次向主库插入数据时,建立Head部分与Value部分的数据存储结构,同时主库key值自增序号,以及建立对应关系;主库key值以B+树方式存储。本发明在不改变数据结构关系的前提下,完善了数据在存储和检索方面的问题。
Description
技术领域
本发明涉及计算机和互联网存储技术领域,特别涉及数据存储结构、存储检索方法、系统、设备及存储介质。
背景技术
KV存储是最近几年数据存储业务不需要结构化存储但需要比关系型数据库更高性能的存储、检索数据方式而广泛采用的。
Bolt是以B+树建立的Key值索引的KV数据库,并支持关系型数据库表空间类似的桶空间逻辑,其中以Key值建立B+树字节排序,可支持范围查询、Key值字节序大小查询、但是Bolt仅支持简单的KV存储,不支持结构化的数据存储要求,如果我们仅存储一行有结构联系的多字段数据,一般做法需要对每个字段建立key-value数据对,但是无法保证这种结构化数据之间的关系。
综上,目前将结构化数据存储为KV格式,是将结构化的数据每个字段拆分为独立的K、V值,将结构化数据之间的关系拆分为没有联系的独立字段存储,根据业务逻辑维护数据之间的关系,不仅会带来数据检索的多次请求(每次检索一个字段,在业务层合并成结构化数据)、业务层维护数据结构化关系,造成业务逻辑复杂化。
发明内容
本发明实施例提供了数据存储结构、存储检索方法、系统、设备及存储介质,用以解决现有的结构化数据存储在KV数据库中无法保持结构性的问题。
第一部分,本发明实施例的一种数据存储结构,按照存储顺序依次包括:所有数据类型的映射占用字节总长度的字节和各数据类型的映射占用的字节构成的Head部分,以及各数据类型的实际数据占用的字节构成的Value部分;其中,定义每一所述数据类型的映射位置序号,以及定义每一所述数据类型的映射占用的字节长度;以及,按照所述各数据类型的映射位置序号顺序,依次存储各数据类型的实际数据。
第二部分,本发明实施例的一种结构化存储转为KV存储的方法,包括:每次向主库插入数据时,建立本发明任意实施例所述的数据存储结构,同时主库key值自增序号,以及建立本列数据的Head部分、Value部分与当前主库key值的对应关系,以构建主库;所述的主库key值以B+树方式存储。
优选的,构建唯一索引库,其中所述主库中的某一列数据是唯一数值时,为该列数据建立唯一索引,将该列数据对应的主库key值作为该列数据在唯一索引库中的Value部分,同时唯一索引库key值自增序号,以及建立唯一索引库中本列Value部分与当前唯一索引库key值的对应关系;所述唯一索引库key值以B+树方式存储。
优选的,构建非唯一索引库,其中所述主库中的某一列数据是非唯一数值时,为该列数据建立非唯一索引,将该列数据对应的主库key值作为该列数据在非唯一索引库中的Value部分,同时非唯一索引库key值自增序号并复合该列数据对应的主库key值作为当前非唯一索引库key值,以及建立非唯一索引库中本列Value部分与当前非唯一索引库key值的对应关系;所述非唯一索引库key值以B+树方式存储。
第三部分,本发明实施例的一种结构化存储转为KV存储的检索方法,包括:每次从主库中检索本发明任意实施例所述的存储结构的数据时,根据主库key值检索出对应列的数据;根据实际需要检索数据的数据类型,获取该数据类型的映射位置序号;则实际需要检索的数据为偏移Head部分的字节,再偏移所述获取的映射位置序号之前序号对应的实际数据占用的字节之和,然后读取所述获取的映射位置序号对应的实际数据占用的字节。
第四部分,本发明实施例的一种结构化存储转为KV存储的系统,包括:建立数据存储结构的模块,用于每次向主库插入数据时,建立本发明任意实施例所述的数据存储结构;主库key值自增序号模块,用于在每次向主库插入数据时,使主库key值自增序号;建立对应关系模块,用于建立本列数据的Head部分、Value部分与当前主库key值的对应关系;主库存储模块,用于存储所述建立对应关系模块建立的对应关系,以及本列数据的Head部分、Value部分和当前主库key值,以构建主库;主库key值存储模块,用于以B+树方式存储所述的主库key值。
优选的,还包括:唯一索引库,用于在所述主库中的某一列数据是唯一数值时,为该列数据建立唯一索引,将该列数据对应的主库key值作为该列数据在唯一索引库中的Value部分,同时唯一索引库key值自增序号,以及建立唯一索引库中本列Value部分与当前唯一索引库key值的对应关系;所述唯一索引库key值以B+树方式存储。
优选的,还包括:非唯一索引库,用于在所述主库中的某一列数据是非唯一数值时,为该列数据建立非唯一索引,将该列数据对应的主库key值作为该列数据在非唯一索引库中的Value部分,同时非唯一索引库key值自增序号并复合该列数据对应的主库key值作为当前非唯一索引库key值,以及建立非唯一索引库中本列Value部分与当前非唯一索引库key值的对应关系;所述非唯一索引库key值以B+树方式存储。
第五部分,本发明实施例的一种计算机设备,包括:存储器、处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明任意实施例所述的结构化存储转为KV存储的方法。
第六部分,本发明实施例的一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明任意实施例所述的结构化存储转为KV存储的方法。
第七部分,本发明实施例的一种结构化存储转为KV存储的检索系统,包括:主库key值检索模块,用于每次从主库中检索本发明任意实施例所述的存储结构的数据时,根据主库key值检索出对应列的数据;映射位置序号获取模块,用于根据实际需要检索数据的数据类型,获取该数据类型的映射位置序号;实际数据检索模块,用于检索实际需要的数据,其中实际需要检索的数据为偏移Head部分的字节,再偏移所述获取的映射位置序号之前序号对应的实际数据占用的字节之和,然后读取所述获取的映射位置序号对应的实际数据占用的字节。
第八部分,本发明实施例的一种计算机设备,包括:存储器、处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明任意实施例所述的结构化存储转为KV存储的检索方法。
第九部分,本发明的一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明任意实施例所述的结构化存储转为KV存储的检索方法。
本发明的实施例基于关系型数据库的结构化数据导入KV存储解决方案,在不改变数据结构关系的前提下,完善数据在存储和检索方面的问题,提升应用在以KV存储格式情况下不改变其数据结构化关系。
附图说明
图1是本发明实施例1的数据存储结构示意图;
图2是本发明实施例2的结构化存储转为KV存储的方法流程图;
图3是本发明实施例2的主库中每一条数据的KV存储结构示意图;
图4是本发明实施例3的结构化存储转为KV存储的方法流程图;
图5是本发明实施例3的包括主库、唯一索引库、非唯一索引库的数据KV存储结构示意图;
图6是本发明实施例4的结构化存储转为KV存储的检索方法流程图;
图7是本发明实施例5的结构化存储转为KV存储的系统结构示意图;
图8是本发明实施例6的计算机设备结构示意图;
图9是本发明实施例8的结构化存储转为KV存储的检索系统结构示意图;
图10是本发明实施例9的计算机设备结构示意图。
具体实施方式
发明人经研究发现,关系型数据库是作为通用可存储结构化的数据独立运行程序,对需要检索的数据建立索引、加快查询,可对多个结果集进行合并、过滤操作,但关系型数据库需要执行SQL解析、SQL执行计划、网络传输数据等开销,所以执行效率较低、同时并发读写有限,同时部署、运维、数据库优化需要人为干预;而采用带有关系型数据库的索引可检索结构化数据的KV存储数据库,可方便将关系型数据库的数据快速在KV数据库中建立类似相同结构、同时可提升存储、检索、高并发读写性能,不需要部署、运维、优化等人为干预。为此提出一种可建多索引的KV存储方式的方案解决业务层面有结构联系的多字段存储方案,实现数据的快速检索和写入,提升业务效率。主要构思是解决结构化数据存储在KV数据库中保持结构性问题,对多列有结构关系的数据行,采用整行序列化作为value值存储,并将其中需要检索的数据列建立key值,且可建立多个这样的索引Key值映射到一个序列化value值上;Key可以是唯一索引和非唯一索引,且value值只存储一份;且非唯一索引不因检索相同数据而彼此覆盖。以下通过实施例详细说明。
实施例1、本实施例的一种数据存储结构,按照存储顺序依次包括:所有数据类型的映射占用字节总长度的字节和各数据类型映射占用的字节构成的Head部分,以及各数据类型的实际数据占用的字节构成的Value部分;其中,定义每一数据类型的映射位置序号,以及定义每一数据类型映射占用的字节长度;以及,按照各数据类型的映射位置序号顺序,依次存储各数据类型的实际数据。
在具体实现中,参见图1所示,先定义数据类型映射,包括:定义每一数据类型的映射位置序号和每一数据类型映射占用的字节长度。例如:
int64值计算机中实际占用8字节,映射为1且存储占用1字节;
float64值计算机中实际占用8字节,映射为2且存储占用1字节;
byte值计算机中实际占用1字节,映射为3且存储占用1字节;
string映射为4且占用1字节,紧跟其后N字节为其次类型长度,存储数值可变、等等数据类型。
对计算机基本数据类型定义映射之后,在本实施例的数据存储结构的第1个字节定义为所有数据类型的映射占用字节总长度的字节,例如meta-length,其中meta-length=1(int64类型)+1(float64类型)+1(byte类型)+1(string类型)+N(string类型值长度),第1个字节之后的若干个字节是按照映射位置序号,依次存储各个数据类型映射,上述两部分构成head部分,即head索引部分;再往后的字节按照各数据类型的映射位置序号顺序,依次存储对应数据类型的实际数据,构成Value部分,即value实际数值部分。参见图1中例如100是作为int64类型存储的,是第一个value存储的数据,1.254是作为value的第二个存储数据,以此类推。
本实施例的技术方案提供了一种创新的数据存储结构,使整行序列化作为value值存储,并提供了相应的head索引部分,基于此,无需将结构化的数据每个字段拆分为独立的K、V值,无需将结构化数据之间的关系拆分为没有联系的独立字段存储,为后续构建数据库和检索建立了基础。
实施例2、本实施例的结构化存储转为KV存储的方法,采用实施例1的数据存储结构,参见图2所示,包括下列步骤:
步骤110、向主库插入数据。
步骤120、建立Head部分与Value部分的数据存储结构,同时主库key值自增序号。
每次向主库插入数据时,为该数据自动建立Head部分与Value部分的数据存储结构,同时主库Key值存储自增序列,可以从1开始,每存一条数据自增1。
步骤130、建立本列数据的Head部分、Value部分与当前主库key值的对应关系,以构建主库。
其中,主库中每一条数据的KV存储结构,参见图3所示,最终形成主库。KV存储数据库:是指Key-Value数据库,是一种以键值对存储数据的一种数据库,可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。
步骤140、主库key值以B+树方式存储。
B+树是一种类似树型的数据结构,B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树元素自底向上插入,因为所有的叶子节点在树中都在相同的高度,且叶子节点存储多个KV数据,父节点记录其K值的取值范围。
本实施例的结构化存储转为KV存储的方法中,实际多列值存储value部分,根据其meta-length读取不同数据类型以及其长度,则value开头偏移其meta-length+所有数值长度则达到head字段开头,反序列化(字节流恢复为对象的过程)后就可以读到所有映射到value之后的索引数据。
实施例3、本实施例的结构化存储转为KV存储的方法,采用实施例1的数据存储结构,参见图4所示,包括下列步骤:
步骤210、向主库插入数据。
步骤220、建立Head部分与Value部分的数据存储结构,同时主库key值自增序号。
每次向主库插入数据时,为该数据自动建立Head部分与Value部分的数据存储结构,同时主库Key值存储自增序列,可以从1开始,每存一条数据自增1。
步骤230、建立本列数据的Head部分、Value部分与当前主库key值的对应关系,以构建主库。
步骤240、主库key值以B+树方式存储。
进一步,区分某一列数据是否是唯一数值,将数据分为唯一数值和非唯一数值,进而包括步骤:
步骤250、构建唯一索引库。
主库中的某一列数据是唯一数值时,为该列数据建立唯一索引,将该列数据对应的主库key值作为该列数据在唯一索引库中的Value部分,同时唯一索引库key值自增序号,以及建立唯一索引库中本列Value部分与当前唯一索引库key值的对应关系;唯一索引库key值以B+树方式存储。
步骤260、构建非唯一索引库。
主库中的某一列数据是非唯一数值时,为该列数据建立非唯一索引,将该列数据对应的主库key值作为该列数据在非唯一索引库中的Value部分,同时非唯一索引库key值自增序号并复合该列数据对应的主库key值作为当前非唯一索引库key值(防止非唯一key值覆盖),以及建立非唯一索引库中本列Value部分与当前非唯一索引库key值的对应关系;非唯一索引库key值以B+树方式存储。
参见图5所示,本实施例中包括主库、唯一索引库、非唯一索引库的数据KV存储结构,最终形成完整的结构化存储转为KV存储的方法。
本实施例的结构化存储转为KV存储的方法中,实际多列值存储value部分,根据其meta-length读取不同数据类型以及其长度,则value开头偏移其meta-length+所有数值长度则达到head字段开头,反序列化(字节流恢复为对象的过程)后就可以读到所有映射到value之后的索引数据(包括唯一和非唯一索引)。
实施例4、本实施例的结构化存储转为KV存储的检索方法,采用实施例1的数据存储结构,参见图6所示,包括下列步骤:
步骤310、每次从主库中检索数据时,根据主库key值检索出对应列的数据。
步骤320、根据实际需要检索数据的类型,获取该数据类型的映射位置序号。
步骤330、检索实际需要的数据。
实际需要检索的数据为偏移Head部分的字节,再偏移获取的映射位置序号之前序号对应的实际数据占用的字节之和,然后读取所述获取的映射位置序号对应的实际数据占用的字节。
例如:参见图1所示,实际需要检索int64这一列数据,那么映射位置序号为1。int64这一列数据的位置在偏移meta-length+各数据类型映射占用的字节,再偏移获取的映射位置序号之前序号对应的实际数据占用的字节之和,由于本实施例中int64数据的映射位置序号为1,因此其之前没有其它实际数据占用的字节,即偏移Head部分的字节,紧接着读取8个字节就是int64的值;同理,检索float64时,偏移Head部分的字节,再偏移8个字节(int64数据存储占用的字节),读取8字节就是float64的值。
进一步的,假如key值为唯一索引,则检索唯一索引库,找到主库自增序号,再根据自增序号值,找到主库中的value数据,正如存储时,知道其存储的位置序号,则可以方便的偏移字节数获取需要的数据。
假如key值为非唯一索引,则检索非唯一索引库,找到所有匹配的非唯一索引,再根据这些非唯一索引的values找到所有主库中的自增序列值,再根据主库自增序列值找到其value数据,正如存储时,知道其存储的位置序号,则可以方便的偏移字节数获取需要的数据。
假如删除数据时,不管是根据唯一索引还是非唯一索引或者主表自增序列值找到value数据,根据其上的方法偏移,反序列化获取所有的索引,再根据索引,如果有唯一索引,则根据唯一找到唯一索引库直接以唯一索引为key进行删除,如果有非唯一索引,则找到非唯一索引库,直接+主库自增序列值合并作为key值,在非唯一索引库中根据此合并key值直接删除。
本实施例中实际多列值存储value部分,根据其meta-length读取不同数据类型以及其长度,则value开头偏移其meta-length+所有数值长度则达到head字段开头,反序列化(字节流恢复为对象的过程)后就可以读到所有映射到value之后的索引数据(包括唯一和非唯一索引)。并且其B+树可以很好支持范围查询,快速检索数据。
实施例5、本实施例的结构化存储转为KV存储的系统,采用实施例1的数据存储结构,参见图7所示,包括:主库410,主库410中包括:建立数据存储结构的模块411、主库key值自增序号模块412、建立对应关系模块413、主库存储模块414、主库key值存储模块415,还包括:唯一索引库420、非唯一索引库430。
建立数据存储结构的模块411,用于每次向主库插入数据时,建立如上述的Head部分与Value部分的数据存储结构。
主库key值自增序号模块412,用于在每次向主库插入数据时,使主库key值自增序号。
建立对应关系模块413,用于建立本列数据的Head部分、Value部分与当前主库key值的对应关系。
主库存储模块414,用于存储所述建立对应关系模块建立的对应关系,以及本列数据的Head部分、Value部分和当前主库key值,以构建主库410。
主库key值存储模块415,用于以B+树方式存储所述的主库key值。
唯一索引库420,用于在所述主库中的某一列数据是唯一数值时,为该列数据建立唯一索引,将该列数据对应的主库key值作为该列数据在唯一索引库中的Value部分,同时唯一索引库key值自增序号,以及建立唯一索引库中本列Value部分与当前唯一索引库key值的对应关系;所述唯一索引库key值以B+树方式存储。
非唯一索引库430,用于在所述主库中的某一列数据是非唯一数值时,为该列数据建立非唯一索引,将该列数据对应的主库key值作为该列数据在非唯一索引库中的Value部分,同时非唯一索引库key值自增序号并复合该列数据对应的主库key值作为当前非唯一索引库key值,以及建立非唯一索引库中本列Value部分与当前非唯一索引库key值的对应关系;所述非唯一索引库key值以B+树方式存储。
本实施例的结构化存储转为KV存储的系统中,实际多列值存储value部分,根据其meta-length读取不同数据类型以及其长度,则value开头偏移其meta-length+所有数值长度则达到head字段开头,反序列化(字节流恢复为对象的过程)后就可以读到所有映射到value之后的索引数据(包括唯一和非唯一索引)。
实施例6、本实施例的计算机设备,参见图8所示,显示的计算机设备500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机设备500以通用计算设备的形式表现。计算机设备500的组件可以包括但不限于:一个或者多个处理器或者处理单元501,系统存储器502,连接不同系统组件(包括系统存储器502和处理单元501)的总线503。
总线503表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备500典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备500访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器502可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)504和/或高速缓存505。计算机设备500可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统506可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线503相连。系统存储器502可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块507的程序/实用工具508,可以存储在例如系统存储器502中,这样的程序模块507包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块507通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备500也可以与一个显示器510或多个外部设备509(例如键盘、指向设备、等)通信,还可与一个或者多个使得用户能与该计算机设备500交互的设备通信,和/或与使得该计算机设备500能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口511进行。并且,计算机设备500还可以通过网络适配器512与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网通信。如图8所示,网络适配器512通过总线503与计算机设备500的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元501通过运行存储在系统存储器502中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的结构化存储转为KV存储的方法,包括:每次向主库插入数据时,建立Head部分与Value部分的数据存储结构,同时主库key值自增序号,以及建立本列数据的Head部分、Value部分与当前主库key值的对应关系,以构建主库;所述的主库key值以B+树方式存储。
实施例7、本实施例的包含计算机可执行指令的存储介质,其内部存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的结构化存储转为KV存储的方法,包括:每次向主库插入数据时,建立Head部分与Value部分的数据存储结构,同时主库key值自增序号,以及建立本列数据的Head部分、Value部分与当前主库key值的对应关系,以构建主库;所述的主库key值以B+树方式存储。
本实施例的包含计算机可执行指令的存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
实施例8、本实施例的一种结构化存储转为KV存储的检索系统,采用实施例1的数据存储结构,参见图9所示,包括:主库key值检索模块610、映射位置序号获取模块620、实际数据检索模块630。
主库key值检索模块610,用于每次从主库中检索数据时,根据主库key值检索出对应列的数据。
映射位置序号获取模块620,用于根据实际需要检索数据的类型,获取该数据类型的映射位置序号。
实际数据检索模块630,用于检索实际需要的数据,其中实际需要检索的数据为偏移Head部分的字节,再偏移所述获取的映射位置序号之前序号对应的实际数据占用的字节之和,然后读取所述获取的映射位置序号对应的实际数据占用的字节。
进一步的,假如key值为唯一索引,则检索唯一索引库,找到主库自增序号,再根据自增序号值,找到主库中的value数据,正如存储时,知道其存储的位置序号,则可以方便的偏移字节数获取需要的数据。
假如key值为非唯一索引,则检索非唯一索引库,找到所有匹配的非唯一索引,再根据这些非唯一索引的values找到所有主库中的自增序列值,再根据主库自增序列值找到其value数据,正如存储时,知道其存储的位置序号,则可以方便的偏移字节数获取需要的数据。
假如删除数据时,不管是根据唯一索引还是非唯一索引或者主表自增序列值找到value数据,根据其上的方法偏移,反序列化获取所有的索引,再根据索引,如果有唯一索引,则根据唯一找到唯一索引库直接以唯一索引为key进行删除,如果有非唯一索引,则找到非唯一索引库,直接+主库自增序列值合并作为key值,在非唯一索引库中根据此合并key值直接删除。
本实施例中实际多列值存储value部分,根据其meta-length读取不同数据类型以及其长度,则value开头偏移其meta-length+所有数值长度则达到head字段开头,反序列化(字节流恢复为对象的过程)后就可以读到所有映射到value之后的索引数据(包括唯一和非唯一索引)。并且其B+树可以很好支持范围查询,快速检索数据。
实施例9、本实施例的计算机设备,参见图10所示,显示的计算机设备700仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,计算机设备700以通用计算设备的形式表现。计算机设备700的组件可以包括但不限于:一个或者多个处理器或者处理单元701,系统存储器702,连接不同系统组件(包括系统存储器702和处理单元701)的总线703。
总线703表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备700典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备700访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器702可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)704和/或高速缓存705。计算机设备700可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统706可以用于读写不可移动的、非易失性磁介质(图10未显示,通常称为“硬盘驱动器”)。尽管图10中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线703相连。系统存储器702可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块707的程序/实用工具708,可以存储在例如系统存储器702中,这样的程序模块707包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块707通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备700也可以与一个显示器710或多个外部设备709(例如键盘、指向设备、等)通信,还可与一个或者多个使得用户能与该计算机设备700交互的设备通信,和/或与使得该计算机设备700能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口711进行。并且,计算机设备700还可以通过网络适配器712与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网通信。如图10所示,网络适配器712通过总线703与计算机设备700的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元701通过运行存储在系统存储器702中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的结构化存储转为KV存储的检索方法,包括:每次从主库中检索数据时,根据主库key值检索出对应列的数据;根据实际需要检索数据的类型,获取该数据类型的映射位置序号;则实际需要检索的数据为偏移Head部分的字节,再偏移所述获取的映射位置序号之前序号对应的实际数据占用的字节之和,然后读取所述获取的映射位置序号对应的实际数据占用的字节。
实施例10、本实施例的包含计算机可执行指令的存储介质,其内部存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的结构化存储转为KV存储的检索方法,包括:每次从主库中检索数据时,根据主库key值检索出对应列的数据;根据实际需要检索数据的类型,获取该数据类型的映射位置序号;则实际需要检索的数据为偏移Head部分的字节,再偏移所述获取的映射位置序号之前序号对应的实际数据占用的字节之和,然后读取所述获取的映射位置序号对应的实际数据占用的字节。
本实施例的包含计算机可执行指令的存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种数据存储结构,其特征在于,按照存储顺序依次包括:所有数据类型的映射占用字节总长度的字节和各数据类型的映射占用的字节构成的Head部分,以及各数据类型的实际数据占用的字节构成的Value部分;
其中,定义每一所述数据类型的映射位置序号,以及定义每一所述数据类型的映射占用的字节长度;以及,按照所述各数据类型的映射位置序号顺序,依次存储各数据类型的实际数据。
2.一种结构化存储转为KV存储的方法,其特征在于,包括:
每次向主库插入数据时,建立如权利要求1所述的数据存储结构,同时主库key值自增序号,以及建立本列数据的Head部分、Value部分与当前主库key值的对应关系,以构建主库;
所述的主库key值以B+树方式存储。
3.如权利要求2所述的结构化存储转为KV存储的方法,其特征在于,构建唯一索引库,其中所述主库中的某一列数据是唯一数值时,为该列数据建立唯一索引,将该列数据对应的主库key值作为该列数据在唯一索引库中的Value部分,同时唯一索引库key值自增序号,以及建立唯一索引库中本列Value部分与当前唯一索引库key值的对应关系;
所述唯一索引库key值以B+树方式存储。
4.如权利要求2所述的结构化存储转为KV存储的方法,其特征在于,构建非唯一索引库,其中所述主库中的某一列数据是非唯一数值时,为该列数据建立非唯一索引,将该列数据对应的主库key值作为该列数据在非唯一索引库中的Value部分,同时非唯一索引库key值自增序号并复合该列数据对应的主库key值作为当前非唯一索引库key值,以及建立非唯一索引库中本列Value部分与当前非唯一索引库key值的对应关系;
所述非唯一索引库key值以B+树方式存储。
5.一种结构化存储转为KV存储的检索方法,其特征在于,包括:
每次从主库中检索如权利要求1所述存储结构的数据时,根据主库key值检索出对应列的数据;
根据实际需要检索数据的数据类型,获取该数据类型的映射位置序号;
则实际需要检索的数据为偏移Head部分的字节,再偏移所述获取的映射位置序号之前序号对应的实际数据占用的字节之和,然后读取所述获取的映射位置序号对应的实际数据占用的字节。
6.一种结构化存储转为KV存储的系统,其特征在于,包括:
建立数据存储结构的模块,用于每次向主库插入数据时,建立如权利要求1所述的数据存储结构;
主库key值自增序号模块,用于在每次向主库插入数据时,使主库key值自增序号;
建立对应关系模块,用于建立本列数据的Head部分、Value部分与当前主库key值的对应关系;
主库存储模块,用于存储所述建立对应关系模块建立的对应关系,以及本列数据的Head部分、Value部分和当前主库key值,以构建主库;
主库key值存储模块,用于以B+树方式存储所述的主库key值。
7.如权利要求6所述的结构化存储转为KV存储的系统,其特征在于,还包括:唯一索引库,用于在所述主库中的某一列数据是唯一数值时,为该列数据建立唯一索引,将该列数据对应的主库key值作为该列数据在唯一索引库中的Value部分,同时唯一索引库key值自增序号,以及建立唯一索引库中本列Value部分与当前唯一索引库key值的对应关系;所述唯一索引库key值以B+树方式存储。
8.如权利要求6所述的结构化存储转为KV存储的系统,其特征在于,还包括:非唯一索引库,用于在所述主库中的某一列数据是非唯一数值时,为该列数据建立非唯一索引,将该列数据对应的主库key值作为该列数据在非唯一索引库中的Value部分,同时非唯一索引库key值自增序号并复合该列数据对应的主库key值作为当前非唯一索引库key值,以及建立非唯一索引库中本列Value部分与当前非唯一索引库key值的对应关系;所述非唯一索引库key值以B+树方式存储。
9.一种计算机设备,包括:存储器、处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求2-4任一项所述的结构化存储转为KV存储的方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求2-4任一项所述的结构化存储转为KV存储的方法。
11.一种结构化存储转为KV存储的检索系统,其特征在于,包括:
主库key值检索模块,用于每次从主库中检索如权利要求1所述存储结构的数据时,根据主库key值检索出对应列的数据;
映射位置序号获取模块,用于根据实际需要检索数据的数据类型,获取该数据类型的映射位置序号;
实际数据检索模块,用于检索实际需要的数据,其中实际需要检索的数据为偏移Head部分的字节,再偏移所述获取的映射位置序号之前序号对应的实际数据占用的字节之和,然后读取所述获取的映射位置序号对应的实际数据占用的字节。
12.一种计算机设备,包括:存储器、处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求5所述的结构化存储转为KV存储的检索方法。
13.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求5所述的结构化存储转为KV存储的检索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010337079.2A CN111522820A (zh) | 2020-04-26 | 2020-04-26 | 数据存储结构、存储检索方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010337079.2A CN111522820A (zh) | 2020-04-26 | 2020-04-26 | 数据存储结构、存储检索方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111522820A true CN111522820A (zh) | 2020-08-11 |
Family
ID=71904479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010337079.2A Pending CN111522820A (zh) | 2020-04-26 | 2020-04-26 | 数据存储结构、存储检索方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522820A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836055A (zh) * | 2021-09-24 | 2021-12-24 | 展讯通信(天津)有限公司 | 一种设备节点配置方法、装置和电子设备 |
CN117149100A (zh) * | 2023-11-01 | 2023-12-01 | 恒生电子股份有限公司 | 数据存储方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070711A1 (en) * | 2014-09-10 | 2016-03-10 | International Business Machines Corporation | Outputting map-reduce jobs to an archive file |
CN108984598A (zh) * | 2018-05-31 | 2018-12-11 | 中国地质大学(武汉) | 一种关系型地质数据库与NoSQL的融合方法及系统 |
CN110334156A (zh) * | 2019-07-10 | 2019-10-15 | 北京启迪区块链科技发展有限公司 | 一种数据库同步方法、装置、服务器和存储介质 |
CN110362549A (zh) * | 2019-06-17 | 2019-10-22 | 平安普惠企业管理有限公司 | 日志存储检索方法、电子装置及计算机设备 |
-
2020
- 2020-04-26 CN CN202010337079.2A patent/CN111522820A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070711A1 (en) * | 2014-09-10 | 2016-03-10 | International Business Machines Corporation | Outputting map-reduce jobs to an archive file |
CN108984598A (zh) * | 2018-05-31 | 2018-12-11 | 中国地质大学(武汉) | 一种关系型地质数据库与NoSQL的融合方法及系统 |
CN110362549A (zh) * | 2019-06-17 | 2019-10-22 | 平安普惠企业管理有限公司 | 日志存储检索方法、电子装置及计算机设备 |
CN110334156A (zh) * | 2019-07-10 | 2019-10-15 | 北京启迪区块链科技发展有限公司 | 一种数据库同步方法、装置、服务器和存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836055A (zh) * | 2021-09-24 | 2021-12-24 | 展讯通信(天津)有限公司 | 一种设备节点配置方法、装置和电子设备 |
CN113836055B (zh) * | 2021-09-24 | 2023-10-17 | 展讯通信(天津)有限公司 | 一种设备节点配置方法、装置和电子设备 |
CN117149100A (zh) * | 2023-11-01 | 2023-12-01 | 恒生电子股份有限公司 | 数据存储方法及装置 |
CN117149100B (zh) * | 2023-11-01 | 2024-04-23 | 恒生电子股份有限公司 | 数据存储方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11899641B2 (en) | Trie-based indices for databases | |
CN106202207B (zh) | 一种基于HBase-ORM的索引及检索系统 | |
CA2388515C (en) | System for managing rdbm fragmentations | |
US20070198591A1 (en) | Partition by growth table space | |
JP3914662B2 (ja) | データベース処理方法及び実施装置並びにその処理プログラムを記憶した媒体 | |
CN111241203B (zh) | Hive数据仓库同步方法、系统、设备及存储介质 | |
CN103577440A (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN111241108A (zh) | 基于键值对kv系统的索引方法、装置、电子设备和介质 | |
US8312050B2 (en) | Avoiding database related joins with specialized index structures | |
CN111522820A (zh) | 数据存储结构、存储检索方法、系统、设备及存储介质 | |
US20180075074A1 (en) | Apparatus and method to correct index tree data added to existing index tree data | |
US6826563B1 (en) | Supporting bitmap indexes on primary B+tree like structures | |
CN107273443B (zh) | 一种基于大数据模型元数据的混合索引方法 | |
CN111984745A (zh) | 数据库字段动态扩展方法、装置、设备及存储介质 | |
CN111666302A (zh) | 用户排名的查询方法、装置、设备及存储介质 | |
CN111897837A (zh) | 数据查询方法、装置、设备和介质 | |
CN113779286B (zh) | 管理图数据的方法及装置 | |
CN112000666B (zh) | 一种面向列的数据库管理系统 | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
CN108984720B (zh) | 基于列存储的数据查询方法、装置、服务器及存储介质 | |
KR20220099745A (ko) | 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치 | |
CN115827653B (zh) | 一种用于htap和海量数据的纯列式更新方法及装置 | |
CN112069185B (zh) | 索引构建方法、装置、电子设备和介质 | |
CN115905259B (zh) | 一种支持行级并发控制的纯列式更新方法及装置 | |
JP2003030040A (ja) | オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200811 |