专利名称:一种新型的并发内存数据组织与访问方法
一种新型的并发内存数据组织与访问方法本发明涉及数据处理技术领域,具体的说是一种新型的并发内存数据组织与访问方法,主要应用于对数据组织、访问有一定效率要求的内存数据访问场景。数据的存储与访问,是各类计算机应用中最为普遍的需求,随着内存容量的不断提升,越来越多的数据被加载到内存中,系统通过读写内存的方式来调整、设置数据状态,如何组织内存数据,使其能够满足高效并发访问的要求,在数据的并发访问过程中仍能够保证数据读写的事务一致性,同时该组织结构还具有一定的普适性,使得该组织形式能够满足不同应用场景的数据访问、定位需求,已成为多数应用系统共同面临的问题之一。以证券行业为例,各种业务运行于后台主机之上,对于不同的应用,分别对应着不 同的状态数据,业务在实时运行过程中,需要根据不同的输入,或查询、或修改各类状态数据,这类数据如何存储,一般有两种方法方法一,利用现有数据库,将数据存放在数据库中,通过数据库对数据进行增、删、改操作。该方法的好处在于,操作接口简单、统一,通过现有的标准SQL语言可以进行;缺点是,实时响应能力较低;应用系统需要与某一数据库绑定在一起,数据库庞大、冗余、耗费资源,同时应用系统仅仅利用了数据库所有功能中的很小一部分;方法二,将整体数据存放于内存中使用内存数据库管理数据或自行管理。前者需在现有系统的基础上额外构建完整的第三方内存数据库软件,显然对于数据访问模型较为简单的场景,第三方内存数据库方案显得过于复杂,成本也较高,后者的实现多数情况下又都是各自业务根据自身特点组织数据,不同数据按照不同的方式进行组织,各数据之间没有通用的结构,不方便扩展。基于以上认识,在内存中构建一套简洁、完整的通用型内存数据组织结构及访问方法则显得十分必要,该方法需在满足各业务对不同数据进行增、删、改以及数据读写事务完整性要求的同时,又保留现有内存数据访问高效的特点, 该类通用性内存数据组织与访问方法至少需满足一下三方面要求(I)读写事务完整性,在对数据进行读写操作时,必须确保数据结果的完整性,数据完整性是指在对数据进行并发访问时,数据的读写之间不存在读操作的结果为写操作修改数据时的中间过程结果;(2)并发闻效性,能为使用者提供闻效率的并发访问响应;(3)灵活性,能提供不同维度的数据组织和访问方式。目前现有的多数内存数据组织及访问方法中,为满足数据访问的读写事务完整性,主要通过以下几种手段来实现(I)访问排队,在数据访问的前端设置“排队机”,在数据访问请求进入到实际数据处理模块之前,由排队机进行“序列化”操作,经排队过的数据访问请求依次进入数据处理模块并获得访问结果,通过序列化确保两次操作不存在冲突的可能。
(2)操作系统级锁机制并发控制,基于操作系统提供的并发控制机制一锁机制,在操作系统层面对各进程数据访问进行调度控制,从而避免访问冲突情况的发生。以上两种处理方式都有效解决了数据并发访问完整性的问题,但无论是访问排队,还是锁并发控制都为整个数据访问带来了过多的额外资源开销,这类手段不利于整体并发访问性能的提升。另一方面,为满足数据访问的灵活性,在已有的内存数据组织及访问方法中引入了多维索引、非唯一索引的方法,将数据与多维索引进行同时映射,使得可以从不同维度访问同一数据;为同一索引键值的数据构建非唯一索引,使得同一键值的不同数据可以并存并被访问。
但现有的技术方法并未结合两类索引方法提供完整支持,有些方法只提供了单一的非唯一索引检索方法,并未支持实际的多维索引;有些方法提供了多维索引,但在多维索引的数据访问及操作上存在不足,有些方法并未对多维索引的添加、删除更新进行完整支持,仅支持了其中的添加、更新功能;有些方法仅考虑了正常情况下各种索引的构建、删除逻辑,并未周全考虑在数据访问过程中如修改操作出现意外终止,而导致内存数据局部不一致场景下的合理处理方法;有些方法,在提供多维索引的同时却并未解决在不降低并发性能的基础上确保读写事务完整性的问题,总之存在缺陷。本发明的目的在于解决上述技术问题,提供一种在一写多读前提下可满足不同应用场景的数据访问、定位需求的并发内存数据组织形式及访问方法,并实现高效并发访问的同时保持数据读写的事务一致性。为实现上述目的,设计一种新型的并发内存数据组织与访问方法,其特征在于一种灵活的内存数据组织形式,能有效降低一写多读情况下的并发访问冲突,提供两类数据访问方式Key-Value的精确索引方式及Key-ValueList的集合索引方式,根据需求访问各实体中的任何一个属性,同时支持多维索引,单一实体可通过不同索引进行检索,整个内存数据采用分块组织的方式进行管理,各内存块分别存放不同级别、不同类型的管理信息,数据的访问依靠各内存区的逻辑进行串联控制,该数据访问方法操作如下a.创建数据存储空间,根据预定的配置信息在内存空间中创建完整的存储实体,既包括实际数据存放区域,又包括为提供各项索引功能而必须的控制区域;b.将数据实体添加到数据存储空间,同时为该数据实体设定对应的每一维索引的索引键(Key),并构建索引键到数据实体的映射关系,为支持多维索引的Key-Value/ValueList访问作基础;c.完成数据实体添加后,通过不同维度索引对数据进行访问,可通过Key-Value精确访问的方式定位某一数据,并对该数据进行读取、更新、删除操作;可以通过Key-ValueList集合访问的方式定位某一数据链表,并从该链表的某一“点”开始向后遍历访问,并对对应的数据进行读取、更新、删除操作;d.当有其他进程也需要访问同一块内存数据,执行“附着”操作,将该共享内存接入到本地内存空间,即可通过Key-Value/ValueList的方式访问数据;e.并发访问时,一个数据的更新会在其完成数据提交后真正生效,之后的对于该数据的读取访问都将读到更新后的数据,生效过程是原子的,通过这一原子操作有效保证数据一致性。将数据实体添加到数据存储空间,该步骤实际分为索引区索引键添加,数据区数据值添加以及键值关系构建三部分,对于多维索引来说,添加数据的同时需要保证所有维度的索引能够同时映射到同一数据实体,因此在实际的数据添加时,会首先选取一个“总控区”位置,将数据实体与该总控区位置对应起来,之后,将各维索引键值“安插”到各自“索引区”的合理位置,并建立各索引键与“总控区”位置的一一对应关联关系,从而确保各维索弓I与数据实体的关联关系构建完成。数据实体的操作过程,主要是通过索引区,首先定位到“总控区”位置,基于该位置去访问实际的数据实体,对于数据的读取操作,直接将对应的数据返回给调用者;而对于更新操作,主要基于多版本的概念,更新不在原有数据上进行,而是新增一个副本,当更新数据完成在副本的写入后,再将“数据指针”指向新的版本;对于删除操作,分为索引删除和数据删除两部分,对于索引删除操作,将把所有维度索引一同删除,在删除索引的时候,索引对应的数据实体不被删除。删除索引,将释放对应的空间,以备后续重复使用,对于数据删除,会将删除的空间“隔离”开来,外界不可再次访问该部分内容,但是实际数据不做“抹除”操作,数据空间不被重复利用。添加多维索引操作中,索引添加的最后步骤是为多维索引共同指向的“总控区”槽位设置标志位,表明该槽位已被占用,只有“总控区”槽位设置标识位,对应索引槽位才是有效索引,该设置过程是原子的,在读操作与索引添加操作同时发生时,当该标志位未被设置,则读操作读不到任何索引;当该标志已为设置,则读操作可以访问到对应的索引。添加数据操作中,在数据添加完成时,会将“总控区”槽位“指向”添加的数据,表明数据添加成功,该过程同样是原子的,当读操作与数据添加操作同时进行,“指向”未能形 成,读操作读不到数据,“指向”已形成,则可以读到完整数据,数据完整性不被破坏。更新数据操作中,写操作并不会破坏原有的数据,只是将更新的数据写入另一块内存空间,在此之后将“总控区”槽位指向新的数据,而这个“指向”过程是原子的,因此,当读操作与更新操作同时进行,一种情况是读操作在“指向”改变前完成数据读取,则读到更新前的数据,整个数据是完整的;另一种情况是读操作在“指向”该表后进行数据读取,则读到更新后的数据,读取的数据仍然是完整的。删除索引操作中,索引对应的数据并未被删除,实际上是在多维索引指向的“总控区”槽位打上“已删除”标记,对“总控区”槽位打标志过程是原子的,当读操作与删除操作同时进行,当删除操作的打标记过程已完成,则读操作无法访问到实际索引,也就不会访问到对应的数据,因此数据完整性不被破坏;当删除操作的打标记过程在读操作定位索引之后完成,由于实际的数据并未删除,因此读操作可以读到完整的数据,数据完整性也没有被破坏。删除数据操作中,实际的数据并未被删除,而是将“总控区”槽位与数据的“联系”打断,而打断“联系”的过程是原子的,读操作与删除操作同时进行时,当读操作在打断联系之前完成,则可以读到数据,且数据是完整的,当读操作在打断“联系”之后完成,则不会读到任何数据。本发明与现有技术相比,以数据完整性和并发访问高效性为前提,对内存数据结构进行灵活设计、组织,在不使用系统级并发控制机制的前提下,提高了证券行业计算机超大容量数据访问速度性能,具体的说具有以下有益效用(I)在不采用锁机制的情况下确保了数据访问完整性,支持一写多读场景的并发数据访问,在对数据进行读取操作的同时,可对数据进行修改,两方面操作互不干扰,保证并发访问数据一致性,提高了访问效率;(2)提供了高效的数据检索模型,即多维索引支持,一个数据实体可由不同索引进行检索,使得数据访问更加灵活,提供Key-Value精确索引模式,从关键字检索对应数据实体的精确访问;提供Key-ValueList集合索引模式,从关键字检索对应数据实体集合的访问,可支持单一实体上的多维索引,可通过不同维度索引检索到同一实体;(3)提供了统一的内存数据存放、管理方式,即分区存放各类信息,将实际数据区和索引控制管理区合理分离,单独组织;不同用户可共同操作同一块数据,数据组织具有一 定的逻辑性,可有效提高数据访问速度;(4)可以制定配置信息,灵活的将不同数据存放其中,具有较好的适应性;(5)具有容错能力,在操作异常终止的情况下仍能确保数据一致性,不需要第三方干预。图I为创建共享数据时内存操作根据参数信息构建出区域示意图;图2为实施例中实际添加第一组数据后内存数据组织结构图;图3为实施例中依次加入第二组至第五组数据实例后的内存数据组织结构图;图4为实施例中加入第六组数据后的内存数据组织结构图;图5为实施例中更新后的数据内存组织结构图;图6为实施例中删除第二组数据属性2后的内存数据组织结构图;图7为实施例中删除索引后的内存数据组织结构图;为了使本发明的目的原理及设计方案清楚明了,现结合附图
及实施例对本发明作进一步阐述,其中涉及的方法对本领域技术人员来说是可以实现的。本发明设计的技术方案所要解决的关键问题是提出一种内存数据组织和访问方式,使得数据访问既不冲突,又高效,且数据读写事务完整性得到有效保障,有效降低资源消耗,提升并发访问能力。提供了两类数据访问方式(I) Key-Value的精确索引方式,Key不重复,每一个Key对应一个实体,该实体具有多个属性(属性个数可配置),根据需求可访问其中任何一个属性;(2) Key-ValueList的集合索引方式,Key允许重复,重复Key的多个实体被串联为一个集合,集合中的每个实体具有多个属性(属性个数可配置),根据需求可访问各实体中的任何一个属性。同时支持多维索引,单一实体可通过不同索引进行检索,为达到通用、高效管理数据的目的,整个内存数据采用分块组织的方式进行管理,各内存块分别存放不同级别、不同类型的管理信息。数据的访问依靠各内存区的逻辑进行串联控制。
在对数据的整体操作中,所有应用对于数据的访问都大致可以抽象成六大类型创建、添加、读取、修改、删除、遍历,为了支持上述应用对数据访问的需求,特别提供了以上六类访问接口。实施例我们选取日常生活中最常见的场景作为实施的用例,假设整个数据有三维索弓丨,其中A、B两维是支持Key-Value精确访问模式的索弓丨,另外一维索引C是支持Key-ValueList集合访问模式的索引,三维索引代表的含义分别为A=员工号;B=手机号;C=姓名,每个索引对应的数据实体包括三个属性a=性别;b=年龄;c=学历,获得的数据实例如表I所示表I初始数据
权利要求
1.一种新型的并发内存数据组织与访问方法,其特征在于在内存数据组织形式提供两类数据访问方式Key-Value的精确索引方式及Key-ValueList的集合索引方式,根据需求访问各实体中的任何一个属性,同时支持多维索引,单一实体可通过不同索引进行检索,整个内存数据采用分块组织的方式进行管理,各内存块分别存放不同级别、不同类型的管理信息,数据的访问依靠各内存区的逻辑进行串联控制,该数据访问方法操作如下 a.创建数据存储空间,根据预定的配置信息在内存空间中创建完整的存储实体,既包括实际数据存放区域,又包括为提供各项索引功能而必须的控制区域; b.将数据实体添加到数据存储空间,同时为该数据实体设定对应的每一维索引的索引键(Key),并构建索引键到数据实体的映射关系,为支持多维索引的Key-Value/ValueList访问作基础; c.完成数据实体添加后,通过不同维度索引对数据进行访问,可通过Key-Value精确访问的方式定位某一数据,并对该数据进行读取、更新、删除操作;可以通过Key-ValueList集合访问的方式定位某一数据链表,并从该链表的某一“点”开始向后遍历访问,并对对应的数据进行读取、更新、删除操作; d.当有其他进程也需要访问同一块内存数据,执行“附着”操作,将该共享内存接入到本地内存空间,即可通过Key-Value/ValueList的方式访问数据; e.并发访问时,一个数据的更新会在其完成数据提交后真正生效,之后的对于该数据的读取访问都将读到更新后的数据,生效过程是原子的,通过这一原子操作有效保证数据一致性。
2.如权利要求I所述的一种新型的并发内存数据组织与访问方法,其特征在于将数据实体添加到数据存储空间,该步骤实际分为索引区索引键添加,数据区数据值添加以及键值关系构建三部分,对于多维索引来说,添加数据的同时需要保证所有维度的索引能够同时映射到同一数据实体,因此在实际的数据添加时,会首先选取一个“总控区”位置,将数据实体与该总控区位置对应起来,之后,将各维索引键值“安插”到各自“索引区”的合理位置,并建立各索引键与“总控区”位置的一一对应关联关系,从而确保各维索引与数据实体的关联关系构建完成。
3.如权利要求I或2所述的一种新型的并发内存数据组织与访问方法,其特征在于数据实体的操作过程,主要是通过索引区,首先定位到“总控区”位置,基于该位置去访问实际的数据实体,对于数据的读取操作,直接将对应的数据返回给调用者;而对于更新操作,主要基于多版本的概念,更新不在原有数据上进行,而是新增一个副本,当更新数据完成在副本的写入后,再将“数据指针”指向新的版本;对于删除操作,分为索引删除和数据删除两部分,对于索引删除操作,将把所有维度索引一同删除,在删除索引的时候,索引对应的数据实体不被删除;删除索引,将释放对应的空间,以备后续重复使用,对于数据删除,会将删除的空间“隔离”开来,外界不可再次访问该部分内容,但是实际数据不做“抹除”操作,数据空间不被重复利用。
4.如权利要求I所述的一种新型的并发内存数据组织与访问方法,其特征在于添加多维索引操作中,索引添加的最后步骤是为多维索引共同指向的“总控区”位置设置标志位,表明该槽位已被占用,只有“总控区”槽位设置标识位,对应索引槽位才是有效索引,该设置过程是原子的,在读操作与索引添加操作同时发生时,当该标志位未被设置,则读操作读不到任何索引;当该标志已为设置,则读操作可以访问到对应的索引。
5.如权利要求I所述的一种新型的并发内存数据组织与访问方法,其特征在于添加数据操作中,在数据添加完成时,会将“总控区”槽位“指向”添加的数据,表明数据添加成功,该过程同样是原子的,当读操作与数据添加操作同时进行,“指向”未能形成,读操作读不到数据,“指向”已形成,则可以读到完整数据,数据完整性不被破坏。
6.如权利要求I所述的一种新型的并发内存数据组织与访问方法,其特征在于更新数据操作中,写操作并不会破坏原有的数据,只是将更新的数据写入另一块内存空间,在此之后将“总控区”槽位指向新的数据,而这个“指向”过程是原子的,因此,当读操作与更新操作同时进行,一种情况是读操作在“指向”改变前完成数据读取,则读到更新前的数据,整个数据是完整的;另一种情况是读操作在“指向”该表后进行数据读取,则读到更新后的数据,读取的数据仍然是完整的。
7.如权利要求I所述的一种新型的并发内存数据组织与访问方法,其特征在于删除索引操作中,索引对应的数据并未被删除,实际上是在多维索引指向的“总控区”槽位打上“已删除”标记,对“总控区”槽位打标志过程是原子的,当读操作与删除操作同时进行,当删除操作的打标记过程已完成,则读操作无法访问到实际索引,也就不会访问到对应的数据,因此数据完整性不被破坏;当删除操作的打标记过程在读操作定位索引之后完成,由于实际的数据并未删除,因此读操作可以读到完整的数据,数据完整性也没有被破坏。
8.如权利要求I所述的一种新型的并发内存数据组织与访问方法,其特征在于删除数据操作中,实际的数据并未被删除,而是将“总控区”槽位与数据的“联系”打断,而打断“联系”的过程是原子的,读操作与删除操作同时进行时,当读操作在打断联系之前完成,则可以读到数据,且数据是完整的,当读操作在打断“联系”之后完成,则不会读到任何数据。
全文摘要
本发明涉及数据处理技术领域,具体的说是一种新型的并发内存数据组织与访问方法,其特征在于内存数据组织形式提供两类数据访问方式Key-Value的精确索引方式及Key-ValueList的集合索引方式,根据需求访问各实体中的任何一个属性,同时支持多维索引,单一实体可通过不同索引进行检索,整个内存数据采用分块组织的方式进行管理,各内存块分别存放不同级别、不同类型的管理信息,数据的访问依靠各内存区的逻辑进行串联控制,本发明与现有技术相比,以数据完整性和并发访问高效性为前提,对内存数据结构进行灵活设计、组织,提供了高效的数据检索模型,支持一写多读场景的并发数据访问,数据读写事务完整性得到有效保障,有效降低资源消耗,提升并发访问能力。
文档编号G06F17/30GK102880704SQ20121036254
公开日2013年1月16日 申请日期2012年9月25日 优先权日2012年9月25日
发明者陈雷, 武剑锋, 王泊, 蒋卫, 黄寅飞, 林志高, 郑刚, 陆素源, 白硕 申请人:上海证券交易所