CN104468665B - 数据分布式存储的实现方法和系统 - Google Patents
数据分布式存储的实现方法和系统 Download PDFInfo
- Publication number
- CN104468665B CN104468665B CN201310430886.9A CN201310430886A CN104468665B CN 104468665 B CN104468665 B CN 104468665B CN 201310430886 A CN201310430886 A CN 201310430886A CN 104468665 B CN104468665 B CN 104468665B
- Authority
- CN
- China
- Prior art keywords
- data
- memory block
- service
- storage
- data memory
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/35—Network arrangements, protocols or services for addressing or naming involving non-standard use of addresses for implementing network functionalities, e.g. coding subscription information within the address or functional addressing, i.e. assigning an address to a function
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据分布式存储的实现方法和系统。所述方法包括:获取业务触发的数据插入操作;根据所述业务的数据插入操作由存储资源占用信息得到所述业务所在存储服务器的网络地址,所述存储服务器与业务将是一对多的对应关系;由所述网络地址所在存储服务器得到存入所述待插入数据的数据内存块标识,并按照所述数据内存块标识将待插入数据存入相应的数据内存块。采用本发明能提高访问性能和存储资源的使用效率。
Description
技术领域
本发明涉及存储技术,特别是涉及一种数据分布式存储的实现方法和系统。
背景技术
随着分布式存储的发展,同一业务的数据大都分布存储于多台存储服务器中,例如CMEM(Cloud Memcache)存储系统,若需要在CMEM存储系统进行数据访问则需要访问多台的存储服务器,例如,对业务的数据进行批量操作,而访问多台服务器时的网络时延将大大限制了CMEM存储系统中的数据访问。
因此,为了避免此情况的发生,将采用组件方式的bitmap存储系统,一个业务的数据将独占一个存储服务器进行存储,以提高访问速度,但是,由于大多数业务所存储的数据均是标志位、时间戳等数据长度较小的数据,应用组件方式的bitmap存储系统所实现的业务数据存储将造成了系统资源的浪费。
发明内容
基于此,有必要提供一种能提高访问性能和存储资源的使用效率的数据分布式存储的实现方法。
此外,还有必要提供一种能提高访问性能和存储资源的使用效率的数据分布式存储的实现系统。
一种数据分布式存储的实现方法,包括如下步骤:
获取业务触发的数据插入操作;
根据所述业务的数据插入操作由存储资源占用信息得到所述业务所在存储服务器的网络地址,所述存储服务器与业务将是一对多的对应关系;
由所述网络地址所在存储服务器得到存入所述待插入数据的数据内存块标识,并按照所述数据内存块标识将待插入数据存入相应的数据内存块。
一种数据分布式存储的实现系统,其特征在于,包括:
数据插入操作获取模块,用于获取业务触发的数据插入操作;
地址获取模块,用于根据所述业务的数据插入操作由存储资源占用信息得到所述业务所在存储服务器的网络地址,所述存储服务器与业务将是一对多的对应关系;
存储模块,用于由所述网络地址所在存储服务器得存入所述待插入数据的数据内存块标识,并按照所述数据内存块标识将待插入数据存入相应数据内存块。
上述数据分布式存储的实现方法和系统,获取业务触发的数据插入操作,根据业务的数据插入操作由存储资源占用信息得到业务所在存储服务器的网络地址,该存储服务器与业务将是一对多的对应关系,由该存储服务器得到存入待插入数据的数据内存块标识,并按照数据内存块标识将待插入数据存入相应的数据内存块,以使得业务的数据存储于同一存储服务器的若干个数据内存块中,提高了数据存储的访问性能,存储服务器中空闲的数据内存块可用于其它业务的数据存储,有效提高了存储资源的使用效率。
附图说明
图1为一个实施例中数据分布式存储的实现方法的流程图;
图2为一个实施例中数据分布式存储的实现方法的运行环境示意图;
图3为图1中由网络地址所在存储服务器得到存入待插入数据的数据内存块标识的方法流程图;
图4为一个实施例中按照数据内存块标识将待插入数据存入相应的数据内存块的方法流程图;
图5为一个实施例中数据内存块的示意图;
图6为图5中空闲链表的示意图;
图7为图5中数据内存块的结构示意图;
图8为图3中按照存储模式从控制内存块中的路由信息查询得到存入待插入数据的数据内存块标识的方法流程图;
图9为一个实施例中全量存储模式中数据内存块的示意图;
图10为另一个实施例中按照数据内存块标识将待插入数据存入相应的数据内存块的方法流程图;
图11为另一个实施例中数据分布式存储的实现方法的流程图;
图12为另一个实施例中数据分布式存储的实现方法的流程图;
图13为一个实施例中数据分布式存储的实现系统的结构示意图;
图14为一个实施例中存储模块的结构示意图;
图15为另一个实施例中存储模块的结构示意图;
图16为图14中寻址单元的结构示意图;
图17为另一个实施例中存储模块的结构示意图;
图18为另一个实施例中数据分布式存储的实现系统的结构示意图;
图19为另一个实施例中数据分布式存储的实现系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,一种数据分布式存储的实现方法,包括如下步骤:
步骤S110,获取业务触发的数据插入操作。
本实施例中,请结合参阅图2,在某一业务的数据插入过程中,将用于进行数据存储的后台划分为应用层、控制层和存储层,其中,应用层将用于为后台的运行维护人员提供操作界面,即运行维护人员对业务的管理入口,控制层用于管理存储资源,并控制应用层中触发的操作的响应,存储层用于实现数据的存储和访问,将以若干个存储服务器为硬件载体实现。通过对后台的三层划分,为运行维护人员提供应用层,以使得运行维护人员只需要关注业务逻辑,而不需要关注如何实现数据的存储和访问,实现了自动化运营,提高了各种业务实现的便捷性,进而有效降低运行和维护的成本。
通过应用层、控制层和存储层所实现的数据分布式存储将用于实现若干个业务的运行,因此,若需要实现数据的插入,则应当在应用层所提供的操作界面中针对相应的业务触发数据插入操作,此时,根据该业务的数据插入操作可获知该业务所对应的业务标识、待插入数据以及待插入数据所对应的关键值,并将该业务所对应的业务标识、待插入数据以及待插入数据所对应的关键值由应用层传入控制层。
步骤S130,根据业务的数据插入操作由存储资源占用信息得到业务所在存储服务器的网络地址。
本实施例中,所述存储服务器与业务将是一对多的对应关系,即任一业务的数据均存储于同一存储服务器,并且该存储服务器将用于存储多个业务的数据。通过控制层根据业务标识查询存储资源占用信息为待插入数据分配存储层中的存储服务器,进而将待插入数据存储于分配的存储服务器中。
进一步的,由控制层依据存储资源占用信息所做的分配,使得同一业务的数据分布于同一存储服务器中,以使得后续的数据访问不需要对不同的存储服务器进行访问,进而不会受到网络延时的影响,特别是对于数据的批量操作而言,将避免了访问不同存储服务器来获取数据而造成的批量操作性能瓶颈。
控制层的存储资源占用信息用于将通过数据库的形式实现,将记录了业务以及存储服务器之间的对应关系,进而提供存储服务器的占用情况。
在一个实施例中,上述步骤S130包括:获取业务对应的业务标识,根据业务标识查询存储资源占用信息以得到业务所在存储服务器的网络地址。
本实施例中,存储资源占用信息被存储于控制层中,将被控制层用于控制存储资源的分配,因此,存储资源占用信息将记录了业务所在的存储服务器,即业务所在存储服务器的网络地址、存储层中存储服务器的内存分配情况以及存业务数量等信息,因此,根据触发数据插入操作的业务所对应的业务标识,可在存储资源占用信息中查询得到该业务标识所对应的存储服务器的网络地址。
步骤S150,由网络地址所在存储服务器得到存入待插入数据的数据内存块标识,并按照数据内存块标识将待插入数据存入相应的数据内存块。
本实施例中,存储服务器将采用共享内存的形式来实现数据的存储和访问,存储服务器的共享内存将包括控制内存块(控制cache)和数据内存块(数据cache),其中,控制内存块用于存储所在存储服务器的控制信息和统计信息,例如,存储模式、业务的路由信息、所在存储服务器中的业务数目、数据内存块的状态等,数据内存块用于实现业务数据的存储。存储服务器中通过控制内存块控制数据内存块中的数据存储和数据访问。
在优选的实施例中,每一存储服务器将部署了一个控制内存块和多个数据内存块。数据内存块的大小可为512k,控制内存块的大小可为512M。
存储服务器中业务所对应的数据将被存储于若干个数据内存块中,因此,根据业务标识在存储服务器中的控制内存块查询得到触发了数据插入操作的业务所在的数据内存块标识,进而根据该数据内存块标识实现待插入数据的存储。
由于存储服务器的数据内存块中每一数据节点中除了用于存储业务数据之外的其它控制字段的空间占用较少,进而在保证控制性能的前提下提高了存储资源的使用效率。
进一步的,存储服务器所应用的存储模式可以是索引存储模式或全量存储模式,在优选的实施例中,该存储模式将为索引存储模式,以保证存储资源的高使用效率。
例如,若存储服务器中的数据量还未达到一定规模,则优先选用索引存储模式,由于在索引存储模式之下,其控制字段只有12字节,数据内存块中数据条数可能有几亿,控制字节的精简会节省很多的存储空间,进而大为提高了存储资源的使用效率。
相应的,由于控制内存块中存储了业务的路由信息,进而使得对存储服务器所进行的数据访问可直接通过控制内存块中的路由信息实现,从而实现了海量用户对数据的快速访问。如图3所示,在一个实施例中,上述由网络地址所在存储服务器得到存入待插入数据的数据内存块标识的步骤包括:
步骤S151,于网络地址对应的存储服务器查询控制内存块以得到业务的存储模式。
本实施例中,存储服务器中的控制内存块将记录了存储服务器属性、存储模式、用于存储数据的内存大小,例如,该内存大小可为物理内存*4/3、存储服务器中的数据内存块数目、分配到存储服务器的业务数目、数据内存块的状态业务的路由信息和存储服务器的访问成功率、时延率统计信息等,在此不一一进行列举。控制内存块中的存储模式可为索引存储模式或全量存储模式,通过查询控制内存块中记录的信息即可得到。
步骤S152,按照存储模式从控制内存块中的路由信息查询得到存入待插入数据的数据内存块标识。
本实施例中,存储模式的不同将使得数据内存块中的内存结构也各不相同,因此,需要根据当前的存储模式由控制内存块中的路由信息查询得到存入待插入数据的数据内存块标识。
在一个实施例中,该存储模式为索引存储模式,上述步骤S152包括:
从待插入数据中提取关键值,将关键值对存储服务器中的虚拟节点数目取模得到余数,根据余数在控制内存块中的路由信息查询得到存储待插入数据的数据内存块标识。
本实施例中,索引存储模式之下数据内存块中的每条数据均是通过建立索引来实现数据寻址的。待插入数据将是〈bid,key,value〉的形式,其中,bid为业务标识,key为关键值,例如,该关键值可为使用该业务的用户标识,value为待插入数据。
从待插入数据中提取得到关键值key,将关键值key对存储服务器中的虚拟节点数目VNODE_NUM取模,即key%VNODE_NUM,进而根据所得到的余数在控制内存块的路由信息中查询得到数据内存块标识,该数据内存块标识所对应的数据内存块将用于对关键值所对应的数据进行存储。
如图4所示,上述按照数据内存块标识将待插入数据存入相应的数据内存块的步骤包括:
步骤S153a,获取数据内存块标识对应的数据内存块中的索引节点数量,将关键值对索引节点数量取模得到业务在数据内存块的索引节点位置。
本实施例中,在定位得到关键值所对应的数据内存块之后,将获取该数据内存块中的索引节点数量NodeNum,进而将关键值key对索引节点数量NodeNum取模,即key%NodeNum,即可得到该业务在数据内存块的索引节点位置。
在一个实施例中,索引存储模式下数据内存块的内存实现结构是以hash冲突链的方式实现的,如图5所示,数据内存块被划分成N个索引节点和N个数据节点,其中,N即为数据内存块中存储的业务数据条数。
索引节点用于存储数据节点的位置值,以将该索引节点作为数据节点的索引;数据节点用于存储业务的单条数据、对应的关键值以及下一个数据节点的位置值,即该数据节点指向下一数据节点的指针。
此外,如图6所示,数据内存块中还将设置了空闲链表,该空闲链表包括了若干个处于空闲状态的数据节点,以便于在数据内存块中存入新的数据。
相应的,在一个具体的实施例中,根据实现数据内存块的内存数据结构将得到数据内存块的结构,如图7所示。
其中,Node_Head即索引节点头信息,包括Bid、NodeNum、DataSize和Reserved等字段,Bid为使用了该数据内存块的业务标识,NodeNum为该数据内存块中的索引节点数量,DataSize为一条数据的长度,Reserved为保留字段,用于后续的功能扩展;Obj_Head为数据节点头信息,包括TotalObjNun、UsedObjNum、FreeHead和Reserved等字段,TotalObjNun为数据内存块中数据节点数量,UsedObjNum为已经使用的数据节点数目,FreeHead为空闲链表的链表头,Reserved为保留字段,用于后续的功能扩展;Node_Array即索引节点所对应的元素,共计N个元素,每一元素占用4个字节,用于保存数据节点的位置值;Obj_Data即数据节点所对应的元素,共N个元素,为链表形式,其中,NextObj为下一个数据节点的位置值,将占用4个字节;Uin为关键值,占用4个字节;ObjData为存储的数据。
由上可知,每条数据需要额外的三个字段,即NodeData、Uin和NextObj,共计12字节,因此,若数据内存块大小为512M,N将通过512/(12+单条数据的长度)计算得到。
步骤S154a,判断索引节点位置对应的索引节点中的位置值是否有效,若否,则进入步骤S155a,若是,则进入步骤S156a。
本实施例中,根据索引节点位置定位索引节点,读取索引节点中存储的位置值,判断该位置值是否有效,即判断该位置值是否为有效值,若否,则说明该数据内存块中未存储与该业务相关的数据,因此,直接插入数据即可,若是,则需要进一步查看数据内存块中存储的与该业务相关的数据中是否存在当前插入的数据。
步骤S155a,获取空闲的数据节点,将空闲的数据节点链接至索引节点,并存入待插入数据。
本实施例中,在判断到索引节点中的位置值是无效值时,说明该索引节点为空,并未与任一用于进行业务数据存储的数据节点进行链接,此时,将由空间链接中获取一空闲的数据节点,将空闲的数据节点链接至索引节点,索引节点中的位置值将是与链接的数据节点所对应的,以使得索引节点指向该数据节点,并存入待插入数据。
步骤S156a,根据位置值得到索引节点关联的冲突链表。
本实施例中,判断到索引节点中的位置值是有效值时,说明该索引节点为某一冲突链表的关索引,将根据该位置值得到链接的冲突链表。
步骤S157a,查询冲突链表中是否存在关键值对应的数据节点,若否,则进入步骤S155a,若是,则结束。
本实施例中,在冲突链表中遍历查询关键值,判断冲突链表中是否存在关键值所对应的节点,若是,则说明待插入数据已经存在于冲突链表中,不需要进行存储,若否,则将索引节点指向某一空闲的数据节点,以便于将待插入数据存入空闲的数据节点中。
进一步的,在索引存储模式之下,在对存储的数据进行访问的过程中,可以根据如上过程实现数据的查找,即,若查询冲突链表中存在着关键值所对应的数据节点,将从该关键值所对应的数据节点得到存储的数据,该数据即为查找的数据。
相应的,在进行数据内存块的分配之前,需要对数据内存块初始化,即对Node_Head部分、Obj_Head部分、Node_Array和Obj_Data进行初始化,其中,UsedObjNum初始化为0,Node_Array中的内容初始化为无效值,例如,将其初始化为全F,Obj_Data初始化为一个大链表,其中的Uin和ObjData初始化为0。
如图8所示,在一个实施例中,该存储模式为全量存储模式,上述步骤S152包括:
步骤S1521,从待插入数据中提取关键值,并从网络地址对应的存储服务器提取控制内存块中的数据条数和业务的起始数据内存块标识。
本实施例中,控制内存块中还将记录了存储服务器中存储的数据条数以及触发数据插入操作的业务所对应的起始数据内存块标识。因此,将从控制内存块中提取得到数据条数和业务的起始数据内存块标识。
全量存储模式中,数据内存块是以一个数组的形式存在的,其格式如图9所示,其中,Bid为使用了该数据内存块的业务标识,TotalObjNum为数据内存块中数据节点数量,Startkey为数据内存块中存储的第一条数据Data[0]的关键值,DataSize为一条数据的长度,Reserved为保留字段,用于后续的功能扩展,UsedObjNum为已经使用的数据节点数目。存储于该数据内存块的数据所对应的关键值将是连续的。在分配该数据内存块之前,将对其进行初始化,其中,UsedObjNum初始化为0,Data也将初始化为0。
步骤S1523,根据关键值、数据条数和起始数据内存块标识计算得到存储插入数据的数据内存标识。
本实施例中,将根据关键值、数据条数和起始数据内存块标识实现全量存储模式之下的寻址。对关键值key、数据条数RecordNum和起始数据内存块标识StartCacheID进行计算,即key/RecordNum+StartCacheID,进而根据计算得到的数值在控制内存块中的路由信息进行查询,以得到用于存储待插入数据的数据内存块标识。
如图10所示,在一个实施例中,上述按照数据内存块标识将待插入数据存入相应的数据内存块的步骤包括:
步骤S153b,从数据内存标识对应的数据内存块中获取存储的起始关键值,根据所述存储的起始关键值和关键值计算得到待插入数据对应的偏移量。
本实施例中,由于数据内存块中每一关键值所对应的数据是连续存储的,且关键值之间也是连续的,因此,获取数据内存块中的起始关键值,待插入数据所对应的关键值和起始关键值之间的差值即为待插入数据所对应的偏移量。
步骤S154b,按照偏移量将待插入数据存入数据内存块。
进一步的,在全量存储模式之下,在对存储的数据进行访问的过程中,可以根据如上过程实现数据的查找,即,通过控制内存块得到相应的偏移量,进而通过得到的偏移量即可查找得到所需要的数据,实现数据的快速访问。
如图11所示,在一个实施例中,上述步骤S110之前,该方法还包括:
步骤S210,获取触发的业务上线操作得到相应的业务上线信息。
本实施例中,通过一定的操作界面输入存储服务器标识、存储模式、业务名称、业务数据量估值等业务上线信息之后,将触发业务上线操作,此时,应用层将得到的业务上线信息传送至控制层。
步骤S230,根据业务上线信息查询存储资源占用信息为业务分配存储服务器,生成业务在存储服务器中的路由信息,并下发至存储服务器。
本实施例中,根据输入的业务上线信息分配存储服务器,将查询存储资源占用信息以得到存储服务器标识所对应的存储服务器的数据内存块占用情况,以根据业务上线信息中的业务数据量估值、存储模式进行内数据内存块的分配,以生成该业务的路由信息,并下发。
步骤S250,按照路由信息在分配的存储服务器中分配数据内存块,并路由信息更新至存储服务器中的控制内存块。
本实施例中,存储层将接收到控制层所下发的路由信息,进而按照路由信息进行数据内存块的分配,以在分配的数据内存块中存储业务数据,根据该业务数据的格式化数据内存块,并将路由信息和数据内存块的态度更新至控制内存块。
步骤S270,根据存储服务器和存储服务器中数据内存块的占用更新控制层中的存储资源占用信息。
本实施例中,存储层完成数据内存块的分配之后,将向控制层返回响应消息,此时,接收到响应消息的控制层将更新资源占用信息。
上述数据分布式存储的实现方法,使得业务上线的运营和维护成本大大降低,运行维护人员可通过一键操作即可完成业务上线,提高了业务上线的便捷性。
如图12所示,在另一个实施例中,上述步骤S270之后,该方法还包括:
步骤S310,获取业务触发的下线操作。
本实施例中,通过一定的操作界面输入待下线的业务标识即可触发业务的下线操作。
步骤S330,查询存储资源占用信息得到业务所在的存储服务器,并向存储服务器传送业务删除命令。
本实施例中,控制层根据下线操作得到待下线的业务标识,根据业务标识在存储资源占用信息中进行查询即可得到待下线的业务所在的存储服务器,进而向该存储服务器传送业务删除命令。
步骤S350,根据业务删除命令删除存储服务器中业务在控制内存块的信息,并相应删除业务在数据内存块中存入的数据。
本实施例中,根据业务删除命令刷新控制内存块中数据内存块的状态和路由信息,以将存储了下线业务数据的数据内存块的状态由已使用刷新为空闲,并清除该业务的路由信息。
步骤S370,根据存储服务器中控制内存块和数据内存块的删除更新控制层中的存储资源占用信息。
本实施例中,由于存储层中的存储服务器和存储服务器中的数据内存块发生了业务数据的删除,因此,也将相应更新控制层中的存储资源占用信息,以保证控制层的存储资源占用信息的准确性。
通过内存共享以及运行维护人员的快捷操作,使得各种业务能够快速上线,为新上线的业务分配存储资源,也能够对即将下线的业务快速回收为其分配的存储资源,运行维护人员只需要关注业务逻辑,而不需要关注数据的存储,提高了业务实现和稳定运行的可能性,进而保证了业务运行的可靠性。
如图13所示,在一个实施例中,一种数据分布式存储的实现系统,包括数据插入操作获取模块110、地址获取模块130和存储模块150。
数据插入操作获取模块110,用于获取业务触发的数据插入操作。
实施例中,在某一业务的数据插入过程中,将用于进行数据存储的后台划分为应用层、控制层和存储层,其中,应用层将用于为后台的运行维护人员提供操作界面,即运行维护人员对业务的管理入口,控制层用于管理存储资源,并控制应用层中触发的操作的响应,存储层用于实现数据的存储和访问,将以若干个存储服务器为硬件载体实现。通过对后台的三层划分,为运行维护人员提供应用层,以使得运行维护人员只需要关注业务逻辑,而不需要关注如何实现数据的存储和访问,实现了自动化运营,提高了各种业务实现的便捷性,进而有效降低运行和维护的成本。
通过应用层、控制层和存储层所实现的数据分布式存储将用于实现若干个业务的运行,因此,若需要实现数据的插入,则应当在应用层所提供的操作界面中针对相应的业务触发数据插入操作,此时,数据插入操作获取模块110根据该业务的数据插入操作可获知该业务所对应的业务标识、待插入数据以及待插入数据所对应的关键值,并将该业务所对应的业务标识、待插入数据以及待插入数据所对应的关键值由应用层传入控制层。
地址获取模块130,用于根据业务的数据插入操作由存储资源占用信息得到业务所在存储服务器的网络地址。
本实施例中,所述存储服务器与业务将是一对多的对应关系,即任一业务的数据均存储于同一存储服务器,并且该存储服务器将用于存储多个业务的数据。地址获取模块130通过控制层根据业务标识查询存储资源占用信息为待插入数据分配存储层中的存储服务器,进而将待插入数据存储于分配的存储服务器中。
进一步的,地址获取模块130由控制层依据存储资源占用信息所做的分配,使得同一业务的数据分布于同一存储服务器中,以使得后续的数据访问不需要对不同的存储服务器进行访问,进而不会受到网络延时的影响,特别是对于数据的批量操作而言,将避免了访问不同存储服务器来获取数据而造成的批量操作性能瓶颈。
控制层的存储资源占用信息用于将通过数据库的形式实现,将记录了业务以及存储服务器之间的对应关系,进而提供存储服务器的占用情况。
在一个实施例中,上述地址获取模块130还用于获取业务对应的业务标识,根据业务标识查询控制层的存储资源占用信息以得到业务所在存储服务器的网络地址。
本实施例中,存储资源占用信息被存储于控制层中,将被控制层用于控制存储资源的分配,因此,存储资源占用信息将记录了业务所在的存储服务器,即业务所在存储服务器的网络地址、存储层中存储服务器的内存分配情况以及存业务数量等信息,因此,地址获取模块130根据触发数据插入操作的业务所对应的业务标识,可在存储资源占用信息中查询得到该业务标识所对应的存储服务器的网络地址。
存储模块150,用于由网络地址所在存储服务器得存入待插入数据的数据内存块标识,并按照数据内存块标识将待插入数据存入相应数据内存块。
本实施例中,存储服务器将采用共享内存的形式来实现数据的存储和访问,存储服务器的共享内存将包括控制内存块(控制cache)和数据内存块(数据cache),其中,控制内存块用于存储所在存储服务器的控制信息和统计信息,例如,存储模式、业务的路由信息、所在存储服务器中的业务数目、数据内存块的状态等,数据内存块用于实现业务数据的存储。存储服务器中通过控制内存块控制数据内存块中的数据存储和数据访问。
在优选的实施例中,每一存储服务器将部署了一个控制内存块和多个数据内存块。数据内存块的大小可为512k,控制内存块的大小可为512M。
存储服务器中业务所对应的数据将被存储于若干个数据内存块中,因此,存储模块150根据业务标识在存储服务器中的控制内存块查询得到触发了数据插入操作的业务所在的数据内存块标识,进而根据该数据内存块标识实现待插入数据的存储。
由于存储服务器的数据内存块中每一数据节点中除了用于存储业务数据之外的其它控制字段的空间占用较少,进而在保证控制性能的前提下提高了存储资源的使用效率。
进一步的,存储服务器所应用的存储模式可以是索引存储模式或全量存储模式,在优选的实施例中,该存储模式将为索引存储模式,以保证存储资源的高使用效率。
例如,若存储服务器中的数据量还未达到一定规模,则优先选用索引存储模式,由于在索引存储模式之下,其控制字段只有12字节,数据内存块中数据条数可能有几亿,控制字节的精简会节省很多的存储空间,进而大为提高了存储资源的使用效率。相应的,由于控制内存块中存储了业务的路由信息,进而使得对存储服务器所进行的数据访问可直接通过控制内存块中的路由信息实现,从而实现了海量用户对数据的快速访问。
如图14所示,在一个实施例中,存储模块150包括模式查询单元151和寻址单元152。
模式查询单元151,用于于网络地址对应的存储服务器查询控制内存块以得到业务的存储模式。
本实施例中,存储服务器中的控制内存块将记录了存储服务器属性、存储模式、用于存储数据的内存大小,例如,该内存大小可为物理内存*4/3、存储服务器中的数据内存块数目、分配到存储服务器的业务数目、数据内存块的状态业务的路由信息和存储服务器的访问成功率、时延率统计信息等,在此不一一进行列举。控制内存块中的存储模式可为索引存储模式或全量存储模式,模式查询单元151通过查询控制内存块中记录的信息即可得到。
寻址单元152,用于按照存储模式从控制内存块中的路由信息查询得到存入待插入数据的数据内存块标识。
本实施例中,存储模式的不同将使得数据内存块中的内存结构也各不相同,因此,寻址单元152需要根据当前的存储模式由控制内存块中的路由信息查询得到存入待插入数据的数据内存块标识。
在一个实施例中,上述存储模式为索引存储模式,该寻址单元152还用于从待插入数据中提取关键值,将关键值对存储服务器中的虚拟节点数目取模得到余数,根据余数在控制内存块中的路由信息查询得到存储和待插入数据的数据内存块标识。
本实施例中,索引存储模式之下数据内存块中的每条数据均是通过建立索引来实现数据寻址的。待插入数据将是〈bid,key,value〉的形式,其中,bid为业务标识,key为关键值,例如,该关键值可为使用该业务的用户标识,value为待插入数据。
寻址单元152从待插入数据中提取得到关键值key,将关键值key对存储服务器中的虚拟节点数目VNODE_NUM取模,即key%VNODE_NUM,进而根据所得到的余数在控制内存块的路由信息中查询得到数据内存块标识,该数据内存块标识所对应的数据内存块将用于对关键值所对应的数据进行存储。
如图15所示,上述存储模块150还包括索引节点位置获取单元153a、有效性判断单元154a、第一数据存入单元155a、链表获取单元156a和链表查询单元157a。
索引节点位置获取单元153a,用于获取数据内存块标识对应的数据内存块中的索引节点数量,将关键值对索引节点数量取模得到业务在数据内存块的索引节点位置。
本实施例中,在定位得到关键值所对应的数据内存块之后,将获取该数据内存块中的索引节点数量NodeNum,进而将关键值key对索引节点数量NodeNum取模,即key%NodeNum,即可得到该业务在数据内存块的索引节点位置。
在一个实施例中,索引存储模式下数据内存块的内存实现结构是以hash冲突链的方式实现的,数据内存块被划分成N个索引节点和N个数据节点,其中,N即为数据内存块中存储的业务数据条数。
索引节点用于存储数据节点的位置值,以将该索引节点作为数据节点的索引;数据节点用于存储业务的单条数据、对应的关键值以及下一个数据节点的位置值,即该数据节点指向下一数据节点的指针。
此外,数据内存块中还将设置了空闲链表,该空闲链表包括了若干个处于空闲状态的数据节点,以便于在数据内存块中存入新的数据。
有效性判断单元154a,用于判断索引节点位置对应的索引节点中的位置值是否为有效值,若否,则通知第一数据存入单元155a,若是,则通知链表获取单元156a。
本实施例中,有效性判断单元154a根据索引节点位置定位索引节点,读取索引节点中存储的位置值,判断该位置值是否有效,即判断该位置值是否为有效值,若否,则说明该数据内存块中未存储与该业务相关的数据,因此,通知第一数据存入单元155a直接插入数据即可,若是,则需要通知链表获取单元156a进一步查看数据内存块中存储的与该业务相关的数据中是否存在当前插入的数据。
第一数据存入单元155a,用于获取空闲的数据节点,将空闲的数据节点至索引节点,并存入待插入数据。
本实施例中,在判断到索引节点中的位置值是无效值时,说明该索引节点为空,并未与任一用于进行业务数据存储的数据节点进行链接,此时,第一数据存入单元155a将由空间链接中获取一空闲的数据节点,将空闲的数据节点链接至索引节点,索引节点中的位置值将是与链接的数据节点所对应的,以使得索引节点指向该数据节点,并存入待插入数据。
链表获取单元156a,用于根据位置值得到索引节点关联的冲突链表。
本实施例中,判断到索引节点中的位置值是有效值时,说明该索引节点为某一冲突链表的关索引,链表获取单元156a将根据该位置值得到链接的冲突链表。
链表查询单元157a,用于查询冲突链表中是否存在所述关键值对应的数据节点,若否,则查询所述冲突链表中是否存在所述关键值对应的数据节点,若否,则通知第一数据存入单元155a。
本实施例中,在冲突链表中遍历查询关键值,判链表查询单元157a断冲突链表中是否存在关键值所对应的节点,若是,则说明待插入数据已经存在于冲突链表中,不需要进行存储,若否,则通知第一数据存入单元155a将索引节点指向某一空闲的数据节点,以便于将待插入数据存入空闲的数据节点中。
进一步的,在索引存储模式之下,在对存储的数据进行访问的过程中,可以根据如上过程实现数据的查找,即,若查询冲突链表中存在着关键值所对应的数据节点,将从该关键值所对应的数据节点得到存储的数据,该数据即为查找的数据。
相应的,在进行数据内存块的分配之前,需要对数据内存块初始化,即对Node_Head部分、Obj_Head部分、Node_Array和Obj_Data进行初始化,其中,UsedObjNum初始化为0,Node_Array中的内容初始化为无效值,例如,将其初始化为全F,Obj_Data初始化为一个大链表,其中的Uin和ObjData初始化为0。
如图16所示,在一个实施例中,该存储模式为全量存储模式,上述寻址单元152包括提取单元1521和运算单元1523。
提取单元1521,用于从待插入数据中提取关键值,并从网络地址对应的存储服务器提取控制内存块中的数据条数和业务的起始数据内存块标识。
本实施例中,控制内存块中还将记录了存储服务器中存储的数据条数以及触发数据插入操作的业务所对应的起始数据内存块标识。因此,提取单元1521将从控制内存块中提取得到数据条数和业务的起始数据内存块标识。全量存储模式中,数据内存块是以一个数组的形式存在的。
运算单元1523,用于根据关键值、数据条数和起始数据内存块标识计算得到存储插入数据的数据内存标识。
本实施例中,运算单元1523将根据关键值、数据条数和起始数据内存块标识实现全量存储模式之下的寻址。运算单元1523对关键值key、数据条数RecordNum和起始数据内存块标识StartCacheID进行计算,即key/RecordNum+StartCacheID,进而根据计算得到的数值在控制内存块中的路由信息进行查询,以得到用于存储待插入数据的数据内存块标识。
如图17所示,在一个实施例中,上述存储模块150还包括偏移量计算单元153b和第二数据存入单元154b。
偏移量计算单元153b,用于从数据内存标识对应的数据内存块中获取存储的起始关键值,根据存储的起始关键值和关键值计算得到所述待插入数据对应的偏移量。
本实施例中,由于数据内存块中每一关键值所对应的数据是连续存储的,且关键值之间也是连续的,因此,偏移量计算单元153b获取数据内存块中的起始关键值,待插入数据所对应的关键值和起始关键值之间的差值即为待插入数据所对应的偏移量。
第二数据存入单元154b,用于按照偏移量将待插入数据存入数据内存块。
进一步的,在全量存储模式之下,在对存储的数据进行访问的过程中,可以根据如上过程实现数据的查找,即,通过控制内存块得到相应的偏移量,进而通过得到的偏移量即可查找得到所需要的数据,实现数据的快速访问。
如图18所示,在一个实施例中,上述系统还包括业务上线操作获取模块210、存储服务器分配模块230、内存块分配模块250和占用信息更新模块270。
业务上线操作获取模块210,用于获取触发的业务上线操作得到相应的业务上线信息。
本实施例中,通过一定的操作界面输入存储服务器标识、存储模式、业务名称、业务数据量估值等业务上线信息之后,将触发业务上线操作,此时,业务上线操作获取模块210通过应用层将得到的业务上线信息传送至控制层。
存储服务器分配模块230,用于根据业务上线信息查询存储资源占用信息为业务分配存储服务器,生成业务在存储服务器中的路由信息,并下发至存储服务器。
本实施例中,存储服务器分配模块230根据输入的业务上线信息分配存储服务器,将查询存储资源占用信息以得到存储服务器标识所对应的存储服务器的数据内存块占用情况,以根据业务上线信息中的业务数据量估值、存储模式进行内数据内存块的分配,以生成该业务的路由信息,并下发。
内存块分配模块250,用于按照路由信息在分配的存储服务器中分配数据内存块,并将路由信息更新至存储服务器中的控制内存块。
本实施例中,内存块分配模块250通过存储层将接收到控制层所下发的路由信息,进而按照路由信息进行数据内存块的分配,以在分配的数据内存块中存储业务数据,根据该业务数据的格式化数据内存块,并将路由信息和数据内存块的态度更新至控制内存块。
占用信息更新模块270,用于根据存储服务器和存储服务器中数据内存块的占用更新控制层中的存储资源占用信息。
本实施例中,存储层完成数据内存块的分配之后,将向控制层返回响应消息,此时,占用信息更新模块270接收到响应消息的控制层将更新资源占用信息。
上述数据分布式存储的实现系统,使得业务上线的运营和维护成本大大降低,运行维护人员可通过一键操作即可完成业务上线,提高了业务上线的便捷性。
如图19所示,在一个实施例中,上述系统还包括下线操作获取模块310、服务器查询模块330、内存块删除模块350和删除更新模块370。
下线操作获取模块310,用于获取业务触发的下线操作。
本实施例中,通过一定的操作界面输入待下线的业务标识即可触发业务的下线操作。
服务器查询模块330,用于查询存储资源占用信息得到业务所在的存储服务器,并向存储服务器传送业务删除命令。
本实施例中,服务器查询模块330通过控制层根据下线操作得到待下线的业务标识,根据业务标识在存储资源占用信息中进行查询即可得到待下线的业务所在的存储服务器,进而向该存储服务器传送业务删除命令。
内存块删除模块350,用于根据业务删除命令删除存储服务器中业务在控制内存块的信息,并相应删除业务在数据内存块中存入的数据。
本实施例中,内存块删除模块350根据业务删除命令刷新控制内存块中数据内存块的状态和路由信息,以将存储了下线业务数据的数据内存块的状态由已使用刷新为空闲,并清除该业务的路由信息。
删除更新模块370,用于根据存储服务器中控制内存块和数据内存块的删除更新控制层中的存储资源占用信息。
本实施例中,由于存储层中的存储服务器和存储服务器中的数据内存块发生了业务数据的删除,因此,删除更新模块370也将相应更新控制层中的存储资源占用信息,以保证控制层的存储资源占用信息的准确性。
通过内存共享以及运行维护人员的快捷操作,使得各种业务能够快速上线,为新上线的业务分配存储资源,也能够对即将下线的业务快速回收为其分配的存储资源,运行维护人员只需要关注业务逻辑,而不需要关注数据的存储,提高了业务实现和稳定运行的可能性,进而保证了业务运行的可靠性。
上述数据分布式存储的实现方法和系统,获取应用层中业务触发的数据插入操作,根据业务的数据插入操作由存储资源占用信息得到业务所在存储服务器的网络地址,该存储服务器与业务将是一对多的对应关系,由该存储服务器得到存入待插入数据的数据内存块标识,并按照数据内存块标识将待插入数据存入相应的数据内存块,以使得业务的数据存储于同一存储服务器的若干个数据内存块中,提高了数据存储的访问性能,存储服务器中空闲的数据内存块可用于其它业务的数据存储,有效提高了存储资源的使用效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (20)
1.一种数据分布式存储的实现方法,包括如下步骤:
获取业务触发的数据插入操作;
根据所述业务的数据插入操作由存储资源占用信息得到所述业务所在存储服务器的网络地址;所述存储资源占用信息存储于控制层中用于控制存储资源的分配,记录了业务所在存储服务器的网络地址、存储层中各存储服务器的内存分配情况以及所存储的业务数量;所述存储服务器与业务将是一对多的对应关系;
通过所述网络地址所在存储服务器的控制内存块中查询业务的路由信息和存储模式;所述存储模式为索引存储模式或全量存储模式;
按照所述存储模式从所述路由信息中查找存入待插入数据的数据内存块标识,获取所述数据内存块标识对应的数据内存块中的索引节点数量,将关键值对所述索引节点数量取模得到业务在所述数据内存块的索引节点位置;当所述索引节点位置对应的索引节点中的位置值为有效值时,根据所述位置值得到所述索引节点关联的冲突链表,若在所述冲突链表中未查找与所述待插入数据中的关键词对应的数据节点时,按照所述数据内存块标识将待插入数据存入所述存储服务器相应的数据内存块中空闲的数据节点。
2.根据权利要求1所述的方法,其特征在于,所述获取业务触发的数据插入操作的步骤之前,所述方法还包括:
获取触发的业务上线操作得到相应的业务上线信息;
根据所述业务上线信息查询所述存储资源占用信息为所述业务分配存储服务器,生成所述业务在所述存储服务器中的路由信息,并下发至存储服务器;
按照所述路由信息在所述分配的存储服务器中分配数据内存块,并将所述路由信息更新至所述存储服务器中的控制内存块;
根据所述存储服务器和所述存储服务器中数据内存块的占用更新所述控制层中的存储资源占用信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述存储服务器和所述存储服务器中数据内存块的占用更新所述控制层中的存储资源占用信息之后,所述方法还包括:
获取业务触发的下线操作;
查询所述存储资源占用信息得到所述业务所在的存储服务器,并向所述存储服务器传送业务删除命令;
根据所述业务删除命令删除存储服务器中所述业务在控制内存块的信息,并相应删除所述业务在数据内存块中存入的数据;
根据所述存储服务器中控制内存块和数据内存块的删除更新所述存储资源占用信息。
4.根据权利要求1所述的方法,其特征在于,所述根据所述业务的插入操作由所述存储资源占用信息得到所述业务所在存储服务器的网络地址的步骤包括:
获取所述业务对应的业务标识,根据所述业务标识查询所述存储资源占用信息以得到所述业务所在存储服务器的网络地址。
5.根据权利要求4所述的方法,其特征在于,所述按照所述存储模式从所述路由信息中查找存入待插入数据的数据内存块标识的步骤包括:
按照当前的所述存储模式从所述控制内存块中的路由信息查询得到存入所述待插入数据的数据内存块标识。
6.根据权利要求5所述的方法,其特征在于,所述存储模式为索引存储模式,所述按照当前的所述存储模式从所述控制内存块中的路由信息查询得到存入所述待插入数据的数据内存块标识的步骤包括:
从所述待插入数据中提取关键值,将所述关键值对所述存储服务器中的虚拟节点数目取模得到余数,根据所述余数在所述控制内存块中的路由信息查询得到存储所述待插入数据的数据内存块标识。
7.根据权利要求6所述的方法,其特征在于,所述根据所述数据内存块标识对应数据内存块中的索引节点数量确定索引节点位置的步骤包括:
获取所述数据内存块标识对应的数据内存块中的索引节点数量,将所述关键值对所述索引节点数量取模得到所述业务在所述数据内存块的索引节点位置;
所述方法还包括:判断索引节点位置对应的索引节点中的位置值是否为有效值,若否,则
获取空闲的数据节点,将所述空闲的数据节点链接至所述索引节点,并存入所述待插入数据。
8.根据权利要求7所述的方法,其特征在于,所述若在所述冲突链表中未查找与所述待插入数据中的关键词对应的数据节点时,按照所述数据内存块标识将待插入数据存入所述服务器相应的数据内存块中空闲的数据节点的步骤还包括:
判断到索引节点位置对应的索引节点中的位置值为有效值,则根据所述位置值得到所述索引节点关联的冲突链表;
查询所述冲突链表中是否存在所述关键值对应的数据节点,若否,则获取空闲的数据节点,将所述空闲的数据节点至所述索引节点,并存入所述待插入数据。
9.根据权利要求5所述的方法,其特征在于,所述存储模式为全量存储模式,所述按照所述存储模式从所述控制内存块中的路由信息查询得到存入所述待插入数据的数据内存块标识的步骤包括:
从所述待插入数据中提取关键值,并从所述网络地址对应的存储服务器提取控制内存块中的数据条数和所述业务的起始数据内存块标识;
根据所述关键值、数据条数和起始数据内存块标识计算得到存储所述插入数据的数据内存标识。
10.根据权利要求9所述的方法,其特征在于,所述按照所述数据内存块标识将待插入数据存入所述服务器相应的数据内存块的步骤包括:
从所述数据内存标识对应的数据内存块中获取存储的起始关键值,根据所述存储的起始关键值和所述关键值计算得到所述待插入数据对应的偏移量;
按照所述偏移量将所述待插入数据存入所述数据内存块。
11.一种数据分布式存储的实现系统,其特征在于,包括:
数据插入操作获取模块,用于获取业务触发的数据插入操作;
地址获取模块,用于根据所述业务的数据插入操作由存储资源占用信息得到所述业务所在存储服务器的网络地址;所述存储资源占用信息存储于控制层中用于控制存储资源的分配,记录了业务所在存储服务器的网络地址、存储层中各存储服务器的内存分配情况以及所存储的业务数量;所述存储服务器与业务将是一对多的对应关系;
存储模块,用于通过所述网络地址所在存储服务器的控制内存块中查询业务的路由信息和存储模式;所述存储模式为索引存储模式或全量存储模式;按照所述存储模式从所述路由信息中查找存入待插入数据的数据内存块标识,获取所述数据内存块标识对应的数据内存块中的索引节点数量,将关键值对所述索引节点数量取模得到业务在所述数据内存块的索引节点位置;当所述索引节点位置对应的索引节点中的位置值为有效值时,根据所述位置值得到所述索引节点关联的冲突链表,若在所述冲突链表中未查找与所述待插入数据中的关键词对应的数据节点时,按照所述数据内存块标识将待插入数据存入所述存储服务器相应数据内存块中空闲的数据节点。
12.根据权利要求11所述的系统,其特征在于,所述系统还包括:
业务上线操作获取模块,用于获取触发的业务上线操作得到相应的业务上线信息;
存储服务器分配模块,用于根据所述业务上线信息查询所述存储资源占用信息为所述业务分配存储服务器,生成所述业务在所述存储服务器中的路由信息,并下发至存储服务器;
内存块分配模块,用于按照所述路由信息在所述分配的存储服务器中分配数据内存块,并将所述路由信息更新至所述存储服务器中的控制内存块;
占用信息更新模块,用于根据所述存储服务器和所述存储服务器中数据内存块的占用更新所述控制层中的存储资源占用信息。
13.根据权利要求12所述的系统,其特征在于,所述系统还包括:
下线操作获取模块,用于获取业务触发的下线操作;
服务器查询模块,用于查询所述存储资源占用信息得到所述业务所在的存储服务器,并向所述存储服务器传送业务删除命令;
内存块删除模块,用于根据所述业务删除命令删除存储服务器中所述业务在控制内存块的信息,并相应删除所述业务在数据内存块中存入的数据;
删除更新模块,用于根据所述存储服务器中控制内存块和数据内存块的删除更新所述存储资源占用信息。
14.根据权利要求11所述的系统,其特征在于,所述地址获取模块还用于获取所述业务对应的业务标识,根据所述业务标识查询所述存储资源占用信息以得到所述业务所在存储服务器的网络地址。
15.根据权利要求14所述的系统,其特征在于,所述存储模块包括
寻址单元,用于按照当前的所述存储模式从所述控制内存块中的路由信息查询得到存入所述待插入数据的数据内存块标识。
16.根据权利要求15所述的系统,其特征在于,所述存储模式为索引存储模式,所述寻址单元还用于从所述待插入数据中提取关键值,将所述关键值对所述存储服务器中的虚拟节点数目取模得到余数,根据所述余数在所述控制内存块中的路由信息查询得到存储和所述待插入数据的数据内存块标识。
17.根据权利要求16所述的系统,其特征在于,所述存储模块还包括:
索引节点位置获取单元,用于获取所述数据内存块标识对应的数据内存块中的索引节点数量,将所述关键值对所述索引节点数量取模得到所述业务在所述数据内存块的索引节点位置;
有效性判断单元,用于判断索引节点位置对应的索引节点中的位置值是否为有效值,若否,则通知第一数据存入单元;
所述第一数据存入单元用于获取空闲的数据节点,将所述空闲的数据节点链接至所述索引节点,并存入所述待插入数据。
18.根据权利要求17所述的系统,其特征在于,所述存储模块还包括:
链表获取单元,用于判断到索引节点位置对应的索引节点中的位置值为有效值,则根据所述位置值得到所述索引节点关联的冲突链表;
链表查询单元,用于查询所述冲突链表中是否存在所述关键值对应的数据节点,若否,则查询所述冲突链表中是否存在所述关键值对应的数据节点,若否,则通知所述第一数据存入单元。
19.根据权利要求15所述的系统,其特征在于,所述存储模式为全量存储模式,所述寻址单元包括:
提取单元,用于从所述待插入数据中提取关键值,并从所述网络地址对应的存储服务器提取控制内存块中的数据条数和所述业务的起始数据内存块标识;
运算单元,用于根据所述关键值、数据条数和起始数据内存块标识计算得到存储所述插入数据的数据内存标识。
20.根据权利要求19所述的系统,其特征在于,所述存储模块还包括:
偏移量计算单元,用于从所述数据内存标识对应的数据内存块中获取存储的起始关键值,根据所述存储的起始关键值和所述关键值计算得到所述待插入数据对应的偏移量;
第二数据存入单元,用于按照所述偏移量将所述待插入数据存入所述数据内存块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310430886.9A CN104468665B (zh) | 2013-09-18 | 2013-09-18 | 数据分布式存储的实现方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310430886.9A CN104468665B (zh) | 2013-09-18 | 2013-09-18 | 数据分布式存储的实现方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104468665A CN104468665A (zh) | 2015-03-25 |
CN104468665B true CN104468665B (zh) | 2020-05-29 |
Family
ID=52914031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310430886.9A Active CN104468665B (zh) | 2013-09-18 | 2013-09-18 | 数据分布式存储的实现方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104468665B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107948229B (zh) * | 2016-10-13 | 2021-04-13 | 腾讯科技(深圳)有限公司 | 分布式存储的方法、装置及系统 |
CN110196818B (zh) * | 2018-02-27 | 2021-07-16 | 华为技术有限公司 | 缓存数据的方法、缓存设备和存储系统 |
CN110399098B (zh) * | 2019-06-25 | 2021-09-14 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
CN111881317B (zh) * | 2020-07-31 | 2021-08-20 | 北京达佳互联信息技术有限公司 | 基于键值系统的数据存储方法、装置、电子设备及介质 |
CN113886087A (zh) * | 2021-10-19 | 2022-01-04 | 深圳市领创星通科技有限公司 | 一种应用内存管理方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101505472A (zh) * | 2008-02-05 | 2009-08-12 | 华为技术有限公司 | 一种用户数据服务器系统和装置 |
CN101504670A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 数据操作方法、系统、客户端和数据服务器 |
CN101626563A (zh) * | 2008-07-08 | 2010-01-13 | 中国移动通信集团公司 | 一种通信网络中的数据存储系统及信息处理方法 |
US8046560B1 (en) * | 2004-10-22 | 2011-10-25 | Emc Corporation | Serial number based storage device allocation |
CN103164410A (zh) * | 2011-12-09 | 2013-06-19 | 深圳市腾讯计算机系统有限公司 | 一种文件存储及操作的方法,存储设备和系统 |
CN103176907A (zh) * | 2011-12-22 | 2013-06-26 | 北京新媒传信科技有限公司 | 一种内存管理的方法和系统 |
-
2013
- 2013-09-18 CN CN201310430886.9A patent/CN104468665B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8046560B1 (en) * | 2004-10-22 | 2011-10-25 | Emc Corporation | Serial number based storage device allocation |
CN101505472A (zh) * | 2008-02-05 | 2009-08-12 | 华为技术有限公司 | 一种用户数据服务器系统和装置 |
CN101626563A (zh) * | 2008-07-08 | 2010-01-13 | 中国移动通信集团公司 | 一种通信网络中的数据存储系统及信息处理方法 |
CN101504670A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 数据操作方法、系统、客户端和数据服务器 |
CN103164410A (zh) * | 2011-12-09 | 2013-06-19 | 深圳市腾讯计算机系统有限公司 | 一种文件存储及操作的方法,存储设备和系统 |
CN103176907A (zh) * | 2011-12-22 | 2013-06-26 | 北京新媒传信科技有限公司 | 一种内存管理的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104468665A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104468665B (zh) | 数据分布式存储的实现方法和系统 | |
CN107888657A (zh) | 低延迟分布式存储系统 | |
CN100543687C (zh) | 一种多核系统的资源管理方法和控制核 | |
CN102446139B (zh) | 一种数据存储方法及装置 | |
CN104731799B (zh) | 内存数据库管理装置 | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
CN105426408A (zh) | 一种多索引的数据处理方法及装置 | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN111177017B (zh) | 一种内存分配方法及装置 | |
JP2019087039A (ja) | タスク管理システム、タスク管理方法、及びタスク管理プログラム | |
CN111597148A (zh) | 用于分布式文件系统的分布式元数据管理方法 | |
CN113515545A (zh) | 数据查询方法、装置、系统、电子设备以及存储介质 | |
CN111782134A (zh) | 数据处理方法、装置、系统和计算机可读存储介质 | |
CN110245129B (zh) | 一种分布式全局数据去重方法和装置 | |
CN106713250A (zh) | 基于分布式系统的数据访问方法和装置 | |
CN107992270B (zh) | 一种多控存储系统全局共享缓存的方法及装置 | |
CN103294609B (zh) | 信息处理装置和存储器管理方法 | |
CN107493309B (zh) | 一种分布式系统中的文件写入方法及装置 | |
CN114238518A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN107659626B (zh) | 面向临时元数据的分离存储方法 | |
CN106549983B (zh) | 一种数据库的访问方法及终端、服务器 | |
JP2004527820A (ja) | コンピュータ予約システムにおけるデータの処理及びアクセス方法、並びにその方法を実施するためのシステム | |
CN111008071A (zh) | 任务调度系统、方法和服务器 | |
CN109165101A (zh) | 基于Redis的内存服务器设计方法 | |
CN113010373A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20201010 Address after: Room 2012, building 12, 13, 15, fangmaoyuan (phase II), 1177 Huanhu Road, Tianding street, Yuelu District, Changsha City, Hunan Province Patentee after: Tencent cloud computing (Changsha) Co., Ltd Address before: Shenzhen Futian District City, Guangdong province 518000 Zhenxing Road, SEG Science Park 2 East Room 403 Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |