CN107918612B - 键值存储系统数据结构的实现方法和装置 - Google Patents
键值存储系统数据结构的实现方法和装置 Download PDFInfo
- Publication number
- CN107918612B CN107918612B CN201610879174.9A CN201610879174A CN107918612B CN 107918612 B CN107918612 B CN 107918612B CN 201610879174 A CN201610879174 A CN 201610879174A CN 107918612 B CN107918612 B CN 107918612B
- Authority
- CN
- China
- Prior art keywords
- block
- size
- type
- character string
- stored
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种键值存储系统数据结构的实现方法和装置。所述方法包括:获取数据、数据的大小和数据结构类型;每次配置固定大小的区块;根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号;根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中。上述键值存储系统数据结构的实现方法和装置,以固定大小的区块进行配置,将存储数据的区块通过链表或树形结构关联起来,使得数据存储更加紧凑,极大减少了管理的内存开销,提高了内存使用率。
Description
技术领域
本发明涉及数据存储领域,特别是涉及一种键值存储系统数据结构的实现方法和装置。
背景技术
键值存储系统是指以key(键)-value(值)方式存储的数据存储系统,例如redis是一个高性能的key-value数据库。原生redis数据库通常采用私有内存存储数据,每个字符串元素和数据结构节点单独申请内存。由于采用私有内存存储和管理数据,使得原生redis的内存碎片问题比较严重,内存使用率很低。
发明内容
基于此,有必要针对原生键值存储系统中内存使用率低的问题,提供一种键值存储系统数据结构的实现方法和装置,能提高内存使用率。
一种键值存储系统数据结构的实现方法,包括:
获取数据、数据的大小和数据结构类型;
每次配置固定大小的区块;
根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号;
根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中。
一种键值存储系统数据结构的实现装置,包括:
数据获取模块,用于获取数据、数据的大小和数据结构类型;
配置模块,用于每次配置固定大小的区块;
存储模块,用于根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号;
添加模块,用于根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中。
上述键值存储系统数据结构的实现方法和装置,通过获取数据、数据大小和数据结构类型,配置固定大小的区块,根据数据大小将数据存储在配置的区块内,根据数据结构类型将配置的区块添加到区块链表结构或树形结构中,区块包括头部,在头部中记录了区块链表中的前趋区块和后继区块的编号,将存储数据的区块通过链表或树形结构关联起来,以固定大小的区块进行配置,使得数据存储更加紧凑,极大减少了管理的内存开销,提高了内存使用率。
附图说明
图1为一个实施例中键值存储系统数据结构的实现方法的应用环境示意图;
图2为一个实施例中电子设备的内部结构示意图;
图3为一个实施例中键值存储系统数据结构的实现方法的流程图;
图4为字符串类型的数据存储在区块链表的示意图;
图5为链表数据结构类型存储数据的示意图;
图6为插入元素的流程示意图;
图7为删除元素的流程示意图;
图8为哈希值类型的数据存储示意图;
图9为字符串集合类型的数据存储示意图;
图10为排序字符串集合类型的数据存储示意图;
图11为一个实施例中键值存储系统数据结构的实现装置的结构框图;
图12为另一个实施例中键值存储系统数据结构的实现装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一判断模块称为第二判断模块,且类似地,可将第二判断模块称为第一判断模块。第一判断模块和第二判断模块两者都是判断模块,但其不是同一判断模块。
图1为一个实施例中键值存储系统数据结构的实现方法的应用环境示意图。如图1所示,该应用环境包括存储设备等。该键值存储系统数据结构的实现方法可在存储设备上实现,主要用于在共享内存或磁盘等非私有内存的存储空间上实现键值存储系统数据结构。该存储设备可为各种存储数据的设备,如磁盘、U盘、存储卡等。
图2为一个实施例中电子设备的内部结构示意图。如图2所示,该电子设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,电子设备的非易失性存储介质存储有操作系统,还包括一种键值存储系统数据结构的实现装置,该键值存储系统数据结构的实现装置用于实现一种键值存储系统数据结构的实现方法。该处理器用于提供计算和控制能力,支撑整个电子设备的运行。电子设备中的内存储器为非易失性存储介质中的键值存储系统数据结构的实现装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种键值存储系统数据结构的实现方法。该电子设备可以是带存储设备的手机、平板电脑或者个人数字助理或穿戴式设备或磁盘或硬盘或个人计算机等。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图3为一个实施例中键值存储系统数据结构的实现方法的流程图。如图3所示,一种键值存储系统数据结构的实现方法,运行于图1的存储设备上,包括:
步骤302,获取数据、数据的大小和数据结构类型。
本实施例中,数据是指需要存储的数据。数据可为从网络中获取或通过设备采集的。数据的大小可为任意大小,如1字节、1KB(千字节)等。数据结构类型可为string(字符串类型)、list(链表类型)、hash(哈希值类型)、set(字符串集合类型)、zset(排序字符串集合类型)。
该键值存储系统可为redis等。
步骤304,每次配置固定大小的区块。
本实施例中,每次申请新的区块时,配置的区块大小是相同的,且为固定大小,例如固定大小为128字节、256字节等,不限于此。
步骤306,根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋区块和后继区块的编号。
本实施例中,将数据的大小与区块的大小进行比较,若数据的大小小于或等于区块的大小,可将数据直接存储在该区块内;若数据的大小大于区块的大小,则将数据拆分出与区块大小相等的部分数据存储在该区块内,然后再配置新的区块,再将剩余的数据拆分出与区块大小相等的部分数据存储在新的区块中,依此类推,直到将数据全部存储在配置的全部区块内。
每个区块包括头部Head。头部用于记录区块链表和区块属性的管理信息。区块链表是指由配置的固定大小的区块block构成的链表。管理信息可包括区块属于数据的一个节点、存储的部分数据的长度、在区块链表中的前趋和后继区块的编号等一种或多种。区块链表中的前趋区块是指某一区块链接到的前一个区块。区块链表中的后继区块是指某一区块链接到的后一个区块。区块编号是指用于唯一标识区块的字符串,例如001、002等。
步骤308,根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中。
在一个区块链表结构或树形结构中存在一个区块用于记录元数据(Meta data),元数据可包括创建时间、最后修改时间、总长度、耗费区块block数量等。
将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中包括:获取配置的区块的编号,将所述区块的编号添加到前一区块的头部中,将该区块作为前一区块的后继区块,以及将前一区块的编号记录在该区块的头部中,将前一区块作为该区块的前趋区块。
区块链表结构是指将配置的区块以链表形式关联起来形成的结构。以区块为节点的树形结构是指将配置的区块以平衡树形式关联起来形成的结构。平衡树是指一颗空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树。平衡二叉树常用算法有红黑树、AVL、Treap、伸展树、SBT(Size Balanced Tree)等。
上述键值存储系统数据结构的实现方法,通过获取数据、数据大小和数据结构类型,配置固定大小的区块,根据数据大小将数据存储在配置的区块内,根据数据结构类型将配置的区块添加到区块链表结构或树形结构中,区块包括头部,在头部中记录了区块链表中的前趋区块和后继区块的编号,将存储数据的区块通过链表或树形结构关联起来,以固定大小的区块进行配置,使得数据存储更加紧凑,极大减少了管理的内存开销,提高了内存使用率。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为字符串string类型或链表类型list,则根据所述字符串string类型或链表类型list将配置的区块添加在以区块为节点的区块链表结构;若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset,则根据哈希值类型hash或字符串集合类型set或排序字符串集合类型zset将配置的各区块添加在以区块为节点的树形结构。
本实施例中,(1)数据结构类型为字符串类型string。
具体地,获取字符串的大小,将字符串的大小与区块大小进行比较,若字符串的大小小于或等于区块大小,则将该字符串存储在该区块中。若字符串的大小大于区块大小,则将字符串以区块大小为单位拆成多段,根据字符串大小配置足够数量的区块,并通过区块的头部将区块链接为链表结构,再将字符串的多段存储在多个区块内。
图4为字符串类型的数据存储在区块链表的示意图。如图4所示,数据库db(database)中字符串数据结构类型的第一个区块存储有Meta data(元数据)和Stringpart 1,第二区块包括头部Head和存储有String part 2,第三区块包括头部Head和存储有String part 3。Meta data中存储有任意元数据,包括创建时间、最后修改时间、总长度、耗费区块数量等。Head中记录区块链表和区块属性的管理信息,该管理信息可包括区块属于字符串的一个节点、存储的part的长度、在区块链表中的前趋区块和后继区块的编号等。
(2)数据结构类型为链表类型List。
具体地,将链表的元素存储在区块链表中,每个区块存储若干元素,每个元素的string可放在当前区块,或只放一个索引,将字符串记录在外部的区块链表中。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若数据结构类型为链表List类型,获取所述数据结构类型中元素的字符串的大小;判断所述元素的字符串的大小是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串存储在所述当前要存储的区块内,若否,则获取所述元素的字符串的索引大小,判断所述元素的字符串的索引是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串的索引存储在所述当前要存储的区块内,并将所述元素的字符串存储在所述索引对应的外部区块链表中。
具体地,例如,当前区块的空间大小为100字节,去掉list节点的头部Head后剩余80字节空间,若一个元素的字符串string的大小比80字节短,则可直接存储在当前区块中,否则将将该元素的字符串的索引存储在当前区块中,将元素的字符串存储在外部区块链表中。外部区块链表是指在链表数据结构类型的区块节点外的区块构成的区块链表,用于存储一个字符串string的区块链表。
进一步的,将所述元素的字符串存储在所述索引对应的外部区块链表中包括:判断元素的字符串大小是否小于或等于外部区块的大小,若是,则将该元素的字符串存储在外部区块中,若否,则将元素的字符串按照外部区块的大小拆成多段,配置对应数量的外部区块,对应数量的外部区块关联起来构成外部区块链表,将元素的字符串存储在对应数量的外部区块链表中。
图5为链表数据结构类型存储数据的示意图。如图5所示,数据库db(database)中链表数据结构类型的第一个区块存储有Meta data(元数据)和List Object,第二区块包括头部Head和存储有Elem 1、Elem 2…,第三区块包括头部Head和存储有Elem i、Elem i+1…。Meta data中存储有任意元数据,包括创建时间、最后修改时间、总长度、耗费区块数量等。Head中记录区块链表和区块属性的管理信息,该管理信息可包括区块属于字符串的一个节点、存储的part的长度、在区块链表中的前趋区块和后继区块的编号等。第二区块中存储的第一个元素Elem 1是一个足够短的字符串,比如“abc”,加上一个长度管理,采用明文+冒号表示长度,则元素的字符串为“3:abc”共5个字节,能够存储在第二区块中,不需要做外部链接索引。第二个元素Elem 2非常长,有几百字节,不可能存储在第二区块中,则用外部区块链表存储,在链表数据类型的区块节点中存储第二个元素的字符串的索引,即带方框的Elem 2。在外部区块链表存储该第二个元素的字符串。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:获取数据访问请求;根据所述数据访问请求从区块链表中定位到对应的区块,遍历所述区块得到所需的数据。
在一个实施例中,当一个区块block中插入元素而导致数据存储不下时,将区块中的数据分裂,存储到其他的区块中。
如图6所示,上述键值存储系统数据结构的实现方法还包括:
步骤602,获取要插入的元素、第一目标区块和在所述第一目标区块内的插入位置。
步骤604,判断所述要插入的元素的大小是否超过所述第一目标区块的剩余空间大小。
步骤606,若所述要插入的元素的大小超过所述第一目标区块的剩余空间大小,则将所述要插入的元素存储在所述第一目标区块内的插入位置处,并将所述第一目标区块内的插入位置处的后续元素向所述插入位置处的后续位置移动,配置新的固定大小的区块,将所述后续位置中超过所述第一目标区块的元素存储在所述新的区块内。
例如,假设一个区块A存放了“abc”、“def”和“ghi”三个字符串,若需要在“def”和“ghi”中插入一个“123”字符串,插入后区块A已满,无法存储“ghi”,则配置一个新的空闲区块B,和原有区块A分别存放“abc”、“def”和“123”,“ghi”。
在一个实施例中,当一个区块因为删除元素而空出多余空间时,检查该区块的前趋和后继区块,进行合并。
如图7所示,上述键值存储系统数据结构的实现方法还包括:
步骤702,获取删除元素指令,所述删除元素指令中包括指定元素及所述指定元素所处的第二目标区块。
步骤704,根据所述删除元素指令从所述第二目标区块中删除所述指定元素。
步骤706,判断所述第二目标区块的后继区块中元素的字符串的大小是否小于或等于所述第二目标区块的剩余空间大小,若是,执行步骤708,若否,执行步骤710。
步骤708,将所述第二目标区块的后继区块中元素的字符串合并到所述第二目标区块中。
步骤710,不作处理。
通过删除元素后,将删除元素的区块与其后继区块内的数据合并成一个区块,可以释放一个区块空间,避免浪费。
(3)数据结构类型为哈希值类型hash。
利用平衡树来组织各区块,每个区块内部可存储多个键值对。在平衡树中,key-value(键值)对的分布是按key的内容有序排列,比如一个元素的key是abc,则必定在另一个key为def的元素之前。
图8为哈希值类型的数据存储示意图。如图8所示,数据库db(database)中哈希值数据结构类型的第一个区块存储有Meta data(元数据)和Hash Object。第二区块包括Head和存储有Key M Value M、Key N Value N。第二区块链接到第三区块和第四区块。第三区块包括Head和存储有Key G Value G、Key H Value H。第三区别链接到第五区块和第六区块。第五区块包括Head和存储有Key D Value D、Key F Value F。第六区块包括Head和存储有Key J Value J、Key K Value K。第四区块包括Head和存储有Key X Value X。第四区块链接到第七区块。第七区块包括Head和存储有Key Z Value Z。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为哈希值类型hash,获取所述数据结构类型中元素的字符串的大小;判断所述元素的字符串的大小是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串存储在所述当前要存储的区块内,若否,则获取所述元素的字符串的索引大小,判断所述元素的字符串的索引是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串的索引存储在所述当前要存储的区块内,并将所述元素的字符串存储在所述索引对应的外部区块链表中。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为哈希值类型hash,获取要插入的元素、第一目标区块和在所述第一目标区块内的插入位置;判断所述要插入的元素的大小是否超过所述第一目标区块的剩余空间大小;若所述要插入的元素的大小超过所述第一目标区块的剩余空间大小,则将所述要插入的元素存储在所述第一目标区块内的插入位置处,并将所述第一目标区块内的插入位置处的后续元素向所述插入位置处的后续位置移动,配置新的固定大小的区块,将所述后续位置中超过所述第一目标区块的元素存储在所述新的区块内。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为哈希值类型hash,获取删除元素指令,所述删除元素指令中包括指定元素及所述指定元素所处的第二目标区块;根据所述删除元素指令从所述第二目标区块中删除所述指定元素;判断所述第二目标区块的后继区块中元素的字符串的大小是否小于或等于所述第二目标区块的剩余空间大小,若是,则将所述第二目标区块的后继区块中元素的字符串合并到所述第二目标区块中。
在插入元素或删除元素时,采用平衡树算法查找区块的前趋和后继区块。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:获取数据访问请求;根据所述数据访问请求从树形结构中定位到对应的区块,遍历所述区块得到所需的数据。
具体地,通过平衡树算法定位到对应的区块。
(4)数据结构类型为字符串集合类型set。
利用平衡树来组织各区块,每个区块内部包括key。
图9为字符串集合类型的数据存储示意图。如图9所示,数据库db(database)中字符串集合数据结构类型的第一个区块存储有Meta data(元数据)和set Object。第二区块包括Head和存储有Key M、Key N。第二区块链接到第三区块和第四区块。第三区块包括Head和存储有Key G、Key H。第三区别链接到第五区块和第六区块。第五区块包括Head和存储有Key D、Key F。第六区块包括Head和存储有Key J、Key K。第四区块包括Head和存储有KeyX。第四区块链接到第七区块。第七区块包括Head和存储有Key Z。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为字符串集合类型set,获取所述数据结构类型中元素的字符串的大小;判断所述元素的字符串的大小是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串存储在所述当前要存储的区块内,若否,则获取所述元素的字符串的索引大小,判断所述元素的字符串的索引是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串的索引存储在所述当前要存储的区块内,并将所述元素的字符串存储在所述索引对应的外部区块链表中。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为字符串集合类型set,获取要插入的元素、第一目标区块和在所述第一目标区块内的插入位置;判断所述要插入的元素的大小是否超过所述第一目标区块的剩余空间大小;若所述要插入的元素的大小超过所述第一目标区块的剩余空间大小,则将所述要插入的元素存储在所述第一目标区块内的插入位置处,并将所述第一目标区块内的插入位置处的后续元素向所述插入位置处的后续位置移动,配置新的固定大小的区块,将所述后续位置中超过所述第一目标区块的元素存储在所述新的区块内。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为字符串集合set类型,获取删除元素指令,所述删除元素指令中包括指定元素及所述指定元素所处的第二目标区块;根据所述删除元素指令从所述第二目标区块中删除所述指定元素;判断所述第二目标区块的后继区块中元素的字符串的大小是否小于或等于所述第二目标区块的剩余空间大小,若是,则将所述第二目标区块的后继区块中元素的字符串合并到所述第二目标区块中。
在插入元素或删除元素时,采用平衡树算法查找区块的前趋和后继区块。
(5)数据结构类型为排序字符串集合类型zset。
具体地,每个zset包括两部分,一个是数据集合,结构同set,另一个是根据score的排序,采用平衡树实现。
图10为排序字符串集合类型的数据存储示意图。如图10所示,数据库db(database)中排序字符串集合数据结构类型的第一个区块存储有Meta data(元数据)和Zset Object。第二区块包括Head和存储有Score M、Elem M、Score N、Elem N。第二区块链接到第三区块和第四区块。第三区块包括Head和存储有Score G、Elem G、Score H、Elem H。第三区别链接到第五区块和第六区块。第五区块包括Head和存储有Score D、Elem D、ScoreF、Elem F。第六区块包括Head和存储有Score J、Elem J、Score K、Elem K。第四区块包括Head和存储有Score X、Elem X。第四区块链接到第七区块。第七区块包括Head和存储有Score Z、Elem Z。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为排序字符串集合类型zset,获取所述数据结构类型中元素的字符串的大小;判断所述元素的字符串的大小是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串存储在所述当前要存储的区块内,若否,则获取所述元素的字符串的索引大小,判断所述元素的字符串的索引是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串的索引存储在所述当前要存储的区块内,并将所述元素的字符串存储在所述索引对应的外部区块链表中。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为排序字符串集合类型zset,获取要插入的元素、第一目标区块和在所述第一目标区块内的插入位置;判断所述要插入的元素的大小是否超过所述第一目标区块的剩余空间大小;若所述要插入的元素的大小超过所述第一目标区块的剩余空间大小,则将所述要插入的元素存储在所述第一目标区块内的插入位置处,并将所述第一目标区块内的插入位置处的后续元素向所述插入位置处的后续位置移动,配置新的固定大小的区块,将所述后续位置中超过所述第一目标区块的元素存储在所述新的区块内。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为排序字符串集合类型zset,获取删除元素指令,所述删除元素指令中包括指定元素及所述指定元素所处的第二目标区块;根据所述删除元素指令从所述第二目标区块中删除所述指定元素;判断所述第二目标区块的后继区块中元素的字符串的大小是否小于或等于所述第二目标区块的剩余空间大小,若是,则将所述第二目标区块的后继区块中元素的字符串合并到所述第二目标区块中。
在插入元素或删除元素时,采用平衡树算法查找区块的前趋和后继区块。
在一个实施例中,上述键值存储系统数据结构的实现方法还包括:若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,获取树形结构的各区块中的键的哈希值,根据所述键的哈希值将所述键分成多份,将每份的键采用独立的平衡树进行存储;获取键的查询指令;根据所述查询指令从独立的平衡树中查找所述键。
因将键分成了N份,每一份采用独立的平衡树进行存储,查找一个键key的工作量是先计算在哪颗树,然后在该树中查找,由于每棵树的数据量只有整体的1/N,所以速度会提升。其中,N为自然数。
需要说明的是,相对于原生的redis,通过本发明的键值存储系统数据结构的实现方法,可将数据紧凑的存储,极大减少了数据管理的内存开销,同时,由于支持固定大小内存申请释放的管理方式,可以方便地在共享内存、磁盘等非私有内存的存储空间上实现redis数据结构。
图11为一个实施例中键值存储系统数据结构的实现装置的结构框图。如图11所示,一种键值存储系统数据结构的实现装置1100,包括数据获取模块1102、配置模块1104、存储模块1106和添加模块1108。其中:
数据获取模块1102用于获取数据、数据的大小和数据结构类型。
配置模块1104用于每次配置固定大小的区块。
存储模块1106用于根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号。
添加模块1108用于根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中。
上述键值存储系统数据结构的实现装置,通过获取数据、数据大小和数据结构类型,配置固定大小的区块,根据数据大小将数据存储在配置的区块内,根据数据结构类型将配置的区块添加到区块链表结构或树形结构中,区块包括头部,在头部中记录了区块链表中的前趋区块和后继区块的编号,将存储数据的区块通过链表或树形结构关联起来,以固定大小的区块进行配置,使得数据存储更加紧凑,极大减少了管理的内存开销,提高了内存使用率。
在一个实施例中,添加模块1108还用于若所述数据结构类型为字符串string类型或链表类型list,则根据所述字符串string类型或链表类型list将配置的区块添加在以区块为节点的区块链表结构;以及
若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset,则根据哈希值类型hash或字符串集合类型set或排序字符串集合类型zset将配置的各区块添加在以区块为节点的树形结构。
图12为另一个实施例中键值存储系统数据结构的实现装置的结构框图。如图12所示,一种键值存储系统数据结构的实现装置1200,包括数据获取模块1202、配置模块1204、存储模块1206、添加模块1208、大小获取模块1210、第一判断模块1212、插入元素获取模块1214、第二判断模块1216、删除指令获取模块1218、删除模块1220、第三判断模块1222、合并模块1224、分类模块1226、查询模块1228和查找模块1230。其中:
大小获取模块1210用于若所述数据结构类型为链表类型list或哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,则获取所述数据结构类型中元素的字符串的大小。
第一判断模块1212用于判断所述元素的字符串的大小是否小于或等于当前要存储的区块的剩余空间大小,若是,则所述存储模块1206还用于将所述元素的字符串存储在所述当前要存储的区块内,若否,则所述大小获取模块1210还用于获取所述元素的字符串的索引大小,所述第一判断模块1212还用于判断所述元素的字符串的索引是否小于或等于当前要存储的区块的剩余空间大小,若是,则所述存储模块1206还用于将所述元素的字符串的索引存储在所述当前要存储的区块内,并将所述元素的字符串存储在所述索引对应的外部区块链表中。
插入元素获取模块1214用于获取要插入的元素、第一目标区块和在所述第一目标区块内的插入位置。
第二判断模块1216用于判断所述要插入的元素的大小是否超过所述第一目标区块的剩余空间大小。
存储模块1206还用于若所述要插入的元素的大小超过所述第一目标区块的剩余空间大小,则将所述要插入的元素存储在所述第一目标区块内的插入位置处,并将所述第一目标区块内的插入位置处的后续元素向所述插入位置处的后续位置移动,配置新的固定大小的区块,将所述后续位置中超过所述第一目标区块的元素存储在所述新的区块内。
删除指令获取模块1218用于获取删除元素指令,所述删除元素指令中包括指定元素及所述指定元素所处的第二目标区块。
删除模块1220用于根据所述删除元素指令从所述第二目标区块中删除所述指定元素。
第三判断模块1222用于判断所述第二目标区块的后继区块中元素的字符串的大小是否小于或等于所述第二目标区块的剩余空间大小。
合并模块1224用于当所述第二目标区块的后继区块中元素的字符串的大小小于或等于所述第二目标区块的剩余空间大小时,将所述第二目标区块的后继区块中元素的字符串合并到所述第二目标区块中。
分类模块1226用于若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,获取树形结构的各区块中的键的哈希值,根据所述键的哈希值将所述键分成多份,将每份的键采用独立的平衡树进行存储。
查询模块1228用于获取键的查询指令。
查找模块1230用于根据所述查询指令从独立的平衡树中查找所述键。
在其他实施例中,一种键值存储系统数据结构的实现装置,可包括数据获取模块1202、配置模块1204、存储模块1206、添加模块1208、大小获取模块1210、第一判断模块1212、插入元素获取模块1214、第二判断模块1216、删除指令获取模块1218、删除模块1220、第三判断模块1222、合并模块1224、分类模块1226、查询模块1228和查找模块1230中任意可能的组合,不限于所列举的实施例。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种键值存储系统数据结构的实现方法,包括:
获取数据、数据的大小和数据结构类型;
每次配置固定大小的区块;
根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号;
根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中;
获取删除元素指令,所述删除元素指令中包括指定元素及所述指定元素所处的第二目标区块;
根据所述删除元素指令从所述第二目标区块中删除所述指定元素;
当所述第二目标区块的后继区块中元素的字符串的大小小于或等于所述第二目标区块的剩余空间大小时,将所述第二目标区块的后继区块中元素的字符串合并到所述第二目标区块中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述数据结构类型为字符串string类型或链表类型list,则根据所述字符串string类型或链表类型list将配置的区块添加在以区块为节点的区块链表结构;
若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset,则根据哈希值类型hash或字符串集合类型set或排序字符串集合类型zset将配置的各区块添加在以区块为节点的树形结构。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述数据结构类型为链表类型list或哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,则获取所述数据结构类型中元素的字符串的大小;
判断所述元素的字符串的大小是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串存储在所述当前要存储的区块内,若否,则获取所述元素的字符串的索引大小,判断所述元素的字符串的索引是否小于或等于当前要存储的区块的剩余空间大小,若是,则将所述元素的字符串的索引存储在所述当前要存储的区块内,并将所述元素的字符串存储在所述索引对应的外部区块链表中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取要插入的元素、第一目标区块和在所述第一目标区块内的插入位置;
判断所述要插入的元素的大小是否超过所述第一目标区块的剩余空间大小;
若所述要插入的元素的大小超过所述第一目标区块的剩余空间大小,则将所述要插入的元素存储在所述第一目标区块内的插入位置处,并将所述第一目标区块内的插入位置处的后续元素向所述插入位置处的后续位置移动,配置新的固定大小的区块,将所述后续位置中超过所述第一目标区块的元素存储在所述新的区块内。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述删除元素指令从所述第二目标区块中删除所述指定元素后,判断所述第二目标区块的后继区块中元素的字符串的大小是否小于或等于所述第二目标区块的剩余空间大小。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,获取树形结构的各区块中的键的哈希值,根据所述键的哈希值将所述键分成多份,将每份的键采用独立的平衡树进行存储;
获取键的查询指令;
根据所述查询指令从独立的平衡树中查找所述键。
7.一种键值存储系统数据结构的实现装置,其特征在于,包括:
数据获取模块,用于获取数据、数据的大小和数据结构类型;
配置模块,用于每次配置固定大小的区块;
存储模块,用于根据所述数据的大小将所述数据存储在所述区块内,所述区块包括头部,所述头部用于记录区块链表和区块属性的管理信息,所述管理信息包括在所述区块链表中的前趋和后继区块的编号;
添加模块,用于根据所述数据结构类型将配置的区块添加在以区块为节点的区块链表结构中或以区块为节点的树形结构中;
删除指令获取模块,用于获取删除元素指令,所述删除元素指令中包括指定元素及所述指定元素所处的第二目标区块;
删除模块,用于根据所述删除元素指令从所述第二目标区块中删除所述指定元素;
合并模块,用于当所述第二目标区块的后继区块中元素的字符串的大小小于或等于所述第二目标区块的剩余空间大小时,将所述第二目标区块的后继区块中元素的字符串合并到所述第二目标区块中。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
所述添加模块还用于若所述数据结构类型为字符串string类型或链表类型list,则根据所述字符串string类型或链表类型list将配置的区块添加在以区块为节点的区块链表结构;以及
若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset,则根据哈希值类型hash或字符串集合类型set或排序字符串集合类型zset将配置的各区块添加在以区块为节点的树形结构。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
大小获取模块,用于若所述数据结构类型为链表类型list或哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,则获取所述数据结构类型中元素的字符串的大小;
第一判断模块,用于判断所述元素的字符串的大小是否小于或等于当前要存储的区块的剩余空间大小,若是,则所述存储模块还用于将所述元素的字符串存储在所述当前要存储的区块内,若否,则所述大小获取模块还用于获取所述元素的字符串的索引大小,所述第一判断模块还用于判断所述元素的字符串的索引是否小于或等于当前要存储的区块的剩余空间大小,若是,则所述存储模块还用于将所述元素的字符串的索引存储在所述当前要存储的区块内,并将所述元素的字符串存储在所述索引对应的外部区块链表中。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
插入元素获取模块,用于获取要插入的元素、第一目标区块和在所述第一目标区块内的插入位置;
第二判断模块,用于判断所述要插入的元素的大小是否超过所述第一目标区块的剩余空间大小;
所述存储模块还用于若所述要插入的元素的大小超过所述第一目标区块的剩余空间大小,则将所述要插入的元素存储在所述第一目标区块内的插入位置处,并将所述第一目标区块内的插入位置处的后续元素向所述插入位置处的后续位置移动,配置新的固定大小的区块,将所述后续位置中超过所述第一目标区块的元素存储在所述新的区块内。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第三判断模块,用于判断所述第二目标区块的后继区块中元素的字符串的大小是否小于或等于所述第二目标区块的剩余空间大小。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
分类模块,用于若所述数据结构类型为哈希值类型hash或字符串集合类型set或排序字符串集合类型zset时,获取树形结构的各区块中的键的哈希值,根据所述键的哈希值将所述键分成多份,将每份的键采用独立的平衡树进行存储;
查询模块,用于获取键的查询指令;
查找模块,用于根据所述查询指令从独立的平衡树中查找所述键。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610879174.9A CN107918612B (zh) | 2016-10-08 | 2016-10-08 | 键值存储系统数据结构的实现方法和装置 |
PCT/CN2017/104515 WO2018064962A1 (zh) | 2016-10-08 | 2017-09-29 | 数据存储方法、电子设备和计算机非易失性存储介质 |
US16/025,562 US10642515B2 (en) | 2016-10-08 | 2018-07-02 | Data storage method, electronic device, and computer non-volatile storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610879174.9A CN107918612B (zh) | 2016-10-08 | 2016-10-08 | 键值存储系统数据结构的实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107918612A CN107918612A (zh) | 2018-04-17 |
CN107918612B true CN107918612B (zh) | 2019-03-05 |
Family
ID=61830782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610879174.9A Active CN107918612B (zh) | 2016-10-08 | 2016-10-08 | 键值存储系统数据结构的实现方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10642515B2 (zh) |
CN (1) | CN107918612B (zh) |
WO (1) | WO2018064962A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108737534B (zh) * | 2018-05-11 | 2021-08-24 | 北京奇虎科技有限公司 | 一种基于区块链的数据传输方法、装置、区块链系统 |
CN109460406B (zh) * | 2018-10-15 | 2021-03-23 | 咪咕文化科技有限公司 | 一种数据处理方法及装置 |
CN109493045B (zh) * | 2018-11-12 | 2020-03-31 | 河海大学 | 一种基于区块链的农产品追溯信息存储方法 |
CN109684335B (zh) * | 2018-12-26 | 2021-04-02 | 百度在线网络技术(北京)有限公司 | 基于键值对的数据结构实现方法、装置、设备和存储介质 |
CN109871365A (zh) * | 2019-01-15 | 2019-06-11 | 苏州链读文化传媒有限公司 | 一种分布式文件系统 |
CN109756573B (zh) * | 2019-01-15 | 2022-02-08 | 苏州链读文化传媒有限公司 | 一种基于区块链的文件系统 |
CN110557277A (zh) * | 2019-07-25 | 2019-12-10 | 北京清红微谷技术开发有限责任公司 | 区块链系统中查找两个区块最近公共祖先的方法和系统 |
CN111181819B (zh) * | 2019-12-25 | 2022-03-08 | 交控科技股份有限公司 | 一种基于链表结构的接收多字节数据帧的串口通讯方法 |
US11762913B2 (en) * | 2019-12-31 | 2023-09-19 | Micron Technology, Inc. | Cursor seek operations using deleted record spans |
CN111352863B (zh) * | 2020-03-10 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、设备及存储介质 |
CN113407107B (zh) * | 2020-03-16 | 2023-03-24 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法、装置及设备 |
US20220129505A1 (en) * | 2020-10-27 | 2022-04-28 | Seagate Technology Llc | Object storage data storage approaches |
CN112329068A (zh) * | 2020-11-27 | 2021-02-05 | 北京百度网讯科技有限公司 | 隐私数据存储方法、构建方法、装置、设备及介质 |
US11960483B1 (en) | 2021-09-16 | 2024-04-16 | Wells Fargo Bank, N.A. | Constant time data structure for single and distributed networks |
CN116303586B (zh) * | 2022-12-09 | 2024-01-30 | 中电云计算技术有限公司 | 一种基于多级b+tree的元数据缓存淘汰方法 |
US20240248624A1 (en) * | 2023-01-24 | 2024-07-25 | VMware LLC | Tiered memory data structures and algorithms for dynamic searching via treaps |
CN116893787B (zh) * | 2023-09-06 | 2023-12-05 | 四川易利数字城市科技有限公司 | 一种基于区块链大数据应用的磁盘存储方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936864A (zh) * | 2005-09-22 | 2007-03-28 | 康佳集团股份有限公司 | 不定长记录的数据组织方法 |
CN105573828A (zh) * | 2015-12-17 | 2016-05-11 | 布比(北京)网络技术有限公司 | 一种操作处理方法及装置 |
CN105741095A (zh) * | 2016-01-29 | 2016-07-06 | 彭军红 | 一种区块链动态压缩存取方法 |
AU2016101183A4 (en) * | 2016-07-20 | 2016-09-22 | Platform Secured Pty Ltd | Network System Innovation Method using blockchain identity based single and multi facial, voice and other bio recognition encryption protocols from existing binary packets to blockchain blocks where the actual member/ user in the blockchain becomes the fully encrypted and shielded block |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5873078A (en) * | 1996-07-19 | 1999-02-16 | Bay Networks, Inc. | Radix tree search logic |
US6073076A (en) * | 1998-03-27 | 2000-06-06 | Navigation Technologies Corporation | Memory management for navigation system |
US7281034B1 (en) * | 2000-01-24 | 2007-10-09 | Friskit, Inc. | System and method for media playback over a network using links that contain control signals and commands |
US7809918B1 (en) * | 2005-07-22 | 2010-10-05 | American Megatrends, Inc. | Method, apparatus, and computer-readable medium for providing physical memory management functions |
US8041677B2 (en) * | 2005-10-12 | 2011-10-18 | Datacastle Corporation | Method and system for data backup |
US20080127043A1 (en) * | 2006-08-30 | 2008-05-29 | Yuanyuan Zhou | Automatic Extraction of Programming Rules |
CN101276334B (zh) * | 2007-03-29 | 2011-04-06 | 上海新跃仪表厂 | 一种快速检索数据的链表实现方法 |
US20100030994A1 (en) * | 2008-08-01 | 2010-02-04 | Guzman Luis F | Methods, systems, and computer readable media for memory allocation and deallocation |
US20120254277A1 (en) * | 2011-03-28 | 2012-10-04 | Patty Peichen Ho | Aggregating information of distributed jobs |
US9141596B2 (en) * | 2012-05-02 | 2015-09-22 | Google Inc. | System and method for processing markup language templates from partial input data |
US9582524B1 (en) * | 2012-06-19 | 2017-02-28 | Amazon Technologies, Inc. | Transformative migration of static data |
CN103678160B (zh) * | 2012-08-30 | 2017-12-05 | 腾讯科技(深圳)有限公司 | 一种存储数据的方法和装置 |
CN103870259A (zh) * | 2012-12-14 | 2014-06-18 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
US9342566B2 (en) * | 2013-01-17 | 2016-05-17 | Sap Se | Systems and methods for searching data structures of a database |
US9977802B2 (en) * | 2013-11-21 | 2018-05-22 | Sap Se | Large string access and storage |
CN103593477A (zh) | 2013-11-29 | 2014-02-19 | 华为技术有限公司 | 一种哈希数据库的配置方法和装置 |
US9449116B2 (en) * | 2014-02-28 | 2016-09-20 | Red Hat Israel, Ltd. | Online radix tree compression with key sequence skip |
CA3005157A1 (en) * | 2014-11-14 | 2016-05-19 | Hector Jose Maximiliano Ponzone | Unified option trading system |
US11226940B2 (en) * | 2015-03-16 | 2022-01-18 | Oracle International Corporation | Adapting data for changes to data attributes |
US9910842B2 (en) * | 2015-08-12 | 2018-03-06 | Captricity, Inc. | Interactively predicting fields in a form |
US10565222B2 (en) * | 2016-09-15 | 2020-02-18 | Oracle International Corporation | Techniques for facilitating the joining of datasets |
-
2016
- 2016-10-08 CN CN201610879174.9A patent/CN107918612B/zh active Active
-
2017
- 2017-09-29 WO PCT/CN2017/104515 patent/WO2018064962A1/zh active Application Filing
-
2018
- 2018-07-02 US US16/025,562 patent/US10642515B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936864A (zh) * | 2005-09-22 | 2007-03-28 | 康佳集团股份有限公司 | 不定长记录的数据组织方法 |
CN105573828A (zh) * | 2015-12-17 | 2016-05-11 | 布比(北京)网络技术有限公司 | 一种操作处理方法及装置 |
CN105741095A (zh) * | 2016-01-29 | 2016-07-06 | 彭军红 | 一种区块链动态压缩存取方法 |
AU2016101183A4 (en) * | 2016-07-20 | 2016-09-22 | Platform Secured Pty Ltd | Network System Innovation Method using blockchain identity based single and multi facial, voice and other bio recognition encryption protocols from existing binary packets to blockchain blocks where the actual member/ user in the blockchain becomes the fully encrypted and shielded block |
Also Published As
Publication number | Publication date |
---|---|
WO2018064962A1 (zh) | 2018-04-12 |
US20180307428A1 (en) | 2018-10-25 |
US10642515B2 (en) | 2020-05-05 |
CN107918612A (zh) | 2018-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107918612B (zh) | 键值存储系统数据结构的实现方法和装置 | |
US9047301B2 (en) | Method for optimizing the memory usage and performance of data deduplication storage systems | |
US9047330B2 (en) | Index compression in databases | |
CN104881481B (zh) | 一种存取海量时间序列数据的方法及装置 | |
US8255398B2 (en) | Compression of sorted value indexes using common prefixes | |
CN103473239B (zh) | 一种非关系型数据库数据更新方法和装置 | |
CN108804510A (zh) | 键值文件系统 | |
CN103282899B (zh) | 文件系统中数据的存储方法、访问方法及装置 | |
CN103023982B (zh) | 一种云存储客户端的低延迟元数据访问方法 | |
CN103279532B (zh) | 多集合元素去重并标识所属集合的过滤系统及其方法 | |
US20100325181A1 (en) | Catalog that stores file system metadata in an optimized manner | |
CN102024019B (zh) | 一种分布式文件系统中基于后缀树的目录组织方法 | |
CN104424219B (zh) | 一种数据文件的管理方法及装置 | |
JP2005302038A (ja) | Bツリー中の連続キーの名前を変更する方法およびシステム | |
US20130117273A1 (en) | Forensic index method and apparatus by distributed processing | |
JP2017504924A (ja) | ファイルシステムのコンテンツベースの編成 | |
CN102184211A (zh) | 文件系统和检索、写入、修改或删除文件的方法与装置 | |
CN101983376A (zh) | 访问装置、信息记录装置、信息记录系统、文件管理方法和程序 | |
CN109189772A (zh) | 用于无文件系统存储介质的文件管理方法及系统 | |
CN107609027A (zh) | 设置文件防删除标志位和防止误删除文件的方法及装置 | |
CN104035993A (zh) | 电子书的存储检索方法、电子书管理系统、阅读系统 | |
CN107679182A (zh) | 一种目录配置方法及装置 | |
TWI397060B (zh) | 物件導向儲存裝置之磁碟配置方法 | |
CN111104377A (zh) | 文件管理的方法、电子设备和计算机可读存储介质 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210922 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |