CN102880704A - 一种新型的并发内存数据组织与访问方法 - Google Patents
一种新型的并发内存数据组织与访问方法 Download PDFInfo
- Publication number
- CN102880704A CN102880704A CN201210362541XA CN201210362541A CN102880704A CN 102880704 A CN102880704 A CN 102880704A CN 201210362541X A CN201210362541X A CN 201210362541XA CN 201210362541 A CN201210362541 A CN 201210362541A CN 102880704 A CN102880704 A CN 102880704A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- access
- read
- key
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据处理技术领域,具体的说是一种新型的并发内存数据组织与访问方法,其特征在于内存数据组织形式提供两类数据访问方式:Key-Value的精确索引方式及Key-ValueList的集合索引方式,根据需求访问各实体中的任何一个属性,同时支持多维索引,单一实体可通过不同索引进行检索,整个内存数据采用分块组织的方式进行管理,各内存块分别存放不同级别、不同类型的管理信息,数据的访问依靠各内存区的逻辑进行串联控制,本发明与现有技术相比,以数据完整性和并发访问高效性为前提,对内存数据结构进行灵活设计、组织,提供了高效的数据检索模型,支持一写多读场景的并发数据访问,数据读写事务完整性得到有效保障,有效降低资源消耗,提升并发访问能力。
Description
[技术领域]
本发明涉及数据处理技术领域,具体的说是一种新型的并发内存数据组织与访问方法,主要应用于对数据组织、访问有一定效率要求的内存数据访问场景。
[背景技术]
数据的存储与访问,是各类计算机应用中最为普遍的需求,随着内存容量的不断提升,越来越多的数据被加载到内存中,系统通过读写内存的方式来调整、设置数据状态,如何组织内存数据,使其能够满足高效并发访问的要求,在数据的并发访问过程中仍能够保证数据读写的事务一致性,同时该组织结构还具有一定的普适性,使得该组织形式能够满足不同应用场景的数据访问、定位需求,已成为多数应用系统共同面临的问题之一。
以证券行业为例,各种业务运行于后台主机之上,对于不同的应用,分别对应着不同的状态数据,业务在实时运行过程中,需要根据不同的输入,或查询、或修改各类状态数据,这类数据如何存储,一般有两种方法:
方法一,利用现有数据库,将数据存放在数据库中,通过数据库对数据进行增、删、改操作。该方法的好处在于,操作接口简单、统一,通过现有的标准SQL语言可以进行;缺点是,实时响应能力较低;应用系统需要与某一数据库绑定在一起,数据库庞大、冗余、耗费资源,同时应用系统仅仅利用了数据库所有功能中的很小一部分;
方法二,将整体数据存放于内存中使用内存数据库管理数据或自行管理。前者需在现有系统的基础上额外构建完整的第三方内存数据库软件,显然对于数据访问模型较为简单的场景,第三方内存数据库方案显得过于复杂,成本也较高,后者的实现多数情况下又都是各自业务根据自身特点组织数据,不同数据按照不同的方式进行组织,各数据之间没有通用的结构,不方便扩展。
基于以上认识,在内存中构建一套简洁、完整的通用型内存数据组织结构及访问方法则显得十分必要,该方法需在满足各业务对不同数据进行增、删、改以及数据读写事务完整性要求的同时,又保留现有内存数据访问高效的特点, 该类通用性内存数据组织与访问方法至少需满足一下三方面要求:
(1)读写事务完整性,在对数据进行读写操作时,必须确保数据结果的完整性,数据完整性是指在对数据进行并发访问时,数据的读写之间不存在读操作的结果为写操作修改数据时的中间过程结果;
(2)并发高效性,能为使用者提供高效率的并发访问响应;
(3)灵活性,能提供不同维度的数据组织和访问方式。
目前现有的多数内存数据组织及访问方法中,为满足数据访问的读写事务完整性,主要通过以下几种手段来实现:
(1)访问排队,在数据访问的前端设置“排队机”,在数据访问请求进入到实际数据处理模块之前,由排队机进行“序列化”操作,经排队过的数据访问请求依次进入数据处理模块并获得访问结果,通过序列化确保两次操作不存在冲突的可能。
(2)操作系统级锁机制并发控制,基于操作系统提供的并发控制机制—锁机制,在操作系统层面对各进程数据访问进行调度控制,从而避免访问冲突情况的发生。
以上两种处理方式都有效解决了数据并发访问完整性的问题,但无论是访问排队,还是锁并发控制都为整个数据访问带来了过多的额外资源开销,这类手段不利于整体并发访问性能的提升。
另一方面,为满足数据访问的灵活性,在已有的内存数据组织及访问方法中引入了多维索引、非唯一索引的方法,将数据与多维索引进行同时映射,使得可以从不同维度访问同一数据;为同一索引键值的数据构建非唯一索引,使得同一键值的不同数据可以并存并被访问。
但现有的技术方法并未结合两类索引方法提供完整支持,有些方法只提供了单一的非唯一索引检索方法,并未支持实际的多维索引;有些方法提供了多维索引,但在多维索引的数据访问及操作上存在不足,有些方法并未对多维索引的添加、删除更新进行完整支持,仅支持了其中的添加、更新功能;有些方法仅考虑了正常情况下各种索引的构建、删除逻辑,并未周全考虑在数据访问过程中如修改操作出现意外终止,而导致内存数据局部不一致场景下的合理处理方法;有些方法,在提供多维索引的同时却并未解决在不降低并发性能的基础上确保读写事务完整性的问题,总之存在缺陷。
[发明内容]
本发明的目的在于解决上述技术问题,提供一种在一写多读前提下可满足不同应用场景的数据访问、定位需求的并发内存数据组织形式及访问方法,并实现高效并发访问的同时保持数据读写的事务一致性。
为实现上述目的,设计一种新型的并发内存数据组织与访问方法,其特征在于一种灵活的内存数据组织形式,能有效降低一写多读情况下的并发访问冲突,提供两类数据访问方式: Key-Value的精确索引方式及Key-ValueList的集合索引方式,根据需求访问各实体中的任何一个属性,同时支持多维索引,单一实体可通过不同索引进行检索,整个内存数据采用分块组织的方式进行管理,各内存块分别存放不同级别、不同类型的管理信息,数据的访问依靠各内存区的逻辑进行串联控制,该数据访问方法操作如下:
a.创建数据存储空间,根据预定的配置信息在内存空间中创建完整的存储实体,既包括实际数据存放区域,又包括为提供各项索引功能而必须的控制区域;
b.将数据实体添加到数据存储空间,同时为该数据实体设定对应的每一维索引的索引键(Key),并构建索引键到数据实体的映射关系,为支持多维索引的Key-Value/ValueList访问作基础;
c.完成数据实体添加后,通过不同维度索引对数据进行访问,可通过Key-Value精确访问的方式定位某一数据,并对该数据进行读取、更新、删除操作;可以通过Key-ValueList集合访问的方式定位某一数据链表,并从该链表的某一“点”开始向后遍历访问,并对对应的数据进行读取、更新、删除操作;
d.当有其他进程也需要访问同一块内存数据,执行“附着”操作,将该共享内存接入到本地内存空间,即可通过Key-Value/ValueList的方式访问数据;
e.并发访问时,一个数据的更新会在其完成数据提交后真正生效,之后的对于该数据的读取访问都将读到更新后的数据,生效过程是原子的,通过这一原子操作有效保证数据一致性。
将数据实体添加到数据存储空间,该步骤实际分为索引区索引键添加,数据区数据值添加以及键值关系构建三部分,对于多维索引来说,添加数据的同时需要保证所有维度的索引能够同时映射到同一数据实体,因此在实际的数据添加时,会首先选取一个“总控区”位置,将数据实体与该总控区位置对应起来,之后,将各维索引键值“安插”到各自“索引区”的合理位置,并建立各索引键与“总控区”位置的一一对应关联关系,从而确保各维索引与数据实体的关联关系构建完成。
数据实体的操作过程,主要是通过索引区,首先定位到“总控区”位置,基于该位置去访问实际的数据实体,对于数据的读取操作,直接将对应的数据返回给调用者;而对于更新操作,主要基于多版本的概念,更新不在原有数据上进行,而是新增一个副本,当更新数据完成在副本的写入后,再将“数据指针”指向新的版本;对于删除操作,分为索引删除和数据删除两部分,对于索引删除操作,将把所有维度索引一同删除,在删除索引的时候,索引对应的数据实体不被删除。删除索引,将释放对应的空间,以备后续重复使用,对于数据删除,会将删除的空间“隔离”开来,外界不可再次访问该部分内容,但是实际数据不做“抹除”操作,数据空间不被重复利用。
添加多维索引操作中,索引添加的最后步骤是为多维索引共同指向的“总控区”槽位设置标志位,表明该槽位已被占用,只有“总控区”槽位设置标识位,对应索引槽位才是有效索引,该设置过程是原子的,在读操作与索引添加操作同时发生时,当该标志位未被设置,则读操作读不到任何索引;当该标志已为设置,则读操作可以访问到对应的索引。
添加数据操作中,在数据添加完成时,会将“总控区”槽位“指向”添加的数据,表明数据添加成功,该过程同样是原子的,当读操作与数据添加操作同时进行,“指向”未能形成,读操作读不到数据,“指向”已形成,则可以读到完整数据,数据完整性不被破坏。
更新数据操作中,写操作并不会破坏原有的数据,只是将更新的数据写入另一块内存空间,在此之后将“总控区”槽位指向新的数据,而这个“指向”过程是原子的,因此,当读操作与更新操作同时进行,一种情况是读操作在“指向”改变前完成数据读取,则读到更新前的数据,整个数据是完整的;另一种情况是读操作在“指向”该表后进行数据读取,则读到更新后的数据,读取的数据仍然是完整的。
删除索引操作中,索引对应的数据并未被删除,实际上是在多维索引指向的“总控区”槽位打上“已删除”标记,对“总控区”槽位打标志过程是原子的,当读操作与删除操作同时进行,当删除操作的打标记过程已完成,则读操作无法访问到实际索引,也就不会访问到对应的数据,因此数据完整性不被破坏;当删除操作的打标记过程在读操作定位索引之后完成,由于实际的数据并未删除,因此读操作可以读到完整的数据,数据完整性也没有被破坏。
删除数据操作中,实际的数据并未被删除,而是将“总控区”槽位与数据的“联系”打断,而打断“联系”的过程是原子的,读操作与删除操作同时进行时,当读操作在打断联系之前完成,则可以读到数据,且数据是完整的,当读操作在打断“联系”之后完成,则不会读到任何数据。
本发明与现有技术相比,以数据完整性和并发访问高效性为前提,对内存数据结构进行灵活设计、组织,在不使用系统级并发控制机制的前提下,提高了证券行业计算机超大容量数据访问速度性能,具体的说具有以下有益效用:
(1)在不采用锁机制的情况下确保了数据访问完整性,支持一写多读场景的并发数据访问,在对数据进行读取操作的同时,可对数据进行修改,两方面操作互不干扰,保证并发访问数据一致性,提高了访问效率;
(2)提供了高效的数据检索模型,即多维索引支持,一个数据实体可由不同索引进行检索,使得数据访问更加灵活,提供Key-Value精确索引模式,从关键字检索对应数据实体的精确访问;提供Key-ValueList集合索引模式,从关键字检索对应数据实体集合的访问,可支持单一实体上的多维索引,可通过不同维度索引检索到同一实体;
(3)提供了统一的内存数据存放、管理方式,即分区存放各类信息,将实际数据区和索引控制管理区合理分离,单独组织;不同用户可共同操作同一块数据,数据组织具有一定的逻辑性,可有效提高数据访问速度;
(4)可以制定配置信息,灵活的将不同数据存放其中,具有较好的适应性;
(5)具有容错能力,在操作异常终止的情况下仍能确保数据一致性,不需要第三方干预。
[附图说明]
图1为创建共享数据时内存操作根据参数信息构建出区域示意图;
图2为实施例中实际添加第一组数据后内存数据组织结构图;
图3为实施例中依次加入第二组至第五组数据实例后的内存数据组织结构图;
图4为实施例中加入第六组数据后的内存数据组织结构图;
图5为实施例中更新后的数据内存组织结构图;
图6为实施例中删除第二组数据属性2后的内存数据组织结构图;
图7为实施例中删除索引后的内存数据组织结构图;
[具体实施方式]
为了使本发明的目的原理及设计方案清楚明了,现结合附图及实施例对本发明作进一步阐述,其中涉及的方法对本领域技术人员来说是可以实现的。
本发明设计的技术方案所要解决的关键问题是提出一种内存数据组织和访问方式,使得数据访问既不冲突,又高效,且数据读写事务完整性得到有效保障,有效降低资源消耗,提升并发访问能力。
提供了两类数据访问方式:
(1)Key-Value的精确索引方式,Key不重复,每一个Key对应一个实体,该实体具有多个属性(属性个数可配置),根据需求可访问其中任何一个属性;
(2)Key-ValueList的集合索引方式,Key允许重复,重复Key的多个实体被串联为一个集合,集合中的每个实体具有多个属性(属性个数可配置),根据需求可访问各实体中的任何一个属性。同时支持多维索引,单一实体可通过不同索引进行检索,为达到通用、高效管理数据的目的,整个内存数据采用分块组织的方式进行管理,各内存块分别存放不同级别、不同类型的管理信息。数据的访问依靠各内存区的逻辑进行串联控制。
在对数据的整体操作中,所有应用对于数据的访问都大致可以抽象成六大类型:创建、添加、读取、修改、删除、遍历,为了支持上述应用对数据访问的需求,特别提供了以上六类访问接口。
实施例
我们选取日常生活中最常见的场景作为实施的用例,假设整个数据有三维索引,其中A、B两维是支持Key-Value精确访问模式的索引,另外一维索引C是支持Key-ValueList集合访问模式的索引,三维索引代表的含义分别为:A=员工号;B=手机号;C=姓名,每个索引对应的数据实体包括三个属性:a=性别;b=年龄;c=学历,获得的数据实例如表1所示:
表1 初始数据
维度 | 属性 |
[001, 13812344556, 张三] | [男,23,本科] |
[002, 13900012345, 李四] | [男,25,硕士] |
[003, 18900054321, 王乙] | [女,27,博士] |
[004, 18577798765, 周丽] | [女,26,硕士] |
[005, 13145688888, 李乐] | [女, 21, 本科] |
[006, 13666612345, 李乐] | [男,28,硕士] |
首先根据以上数据进行数据空间创建和数据添加过程:
当使用者执行创建共享数据内存操作时,整个内存将根据参数信息构建出如图1所示的六个区域,各区域的功能及内容如下:
(1)内存信息区(MemInfo):记录内存中各区的配置信息以及各区域内元素的信息,在后续其他进程访问该内存空间时,通过读取MemInfo中的内容,就能定位各区域的位置,并对各区域内元素进行操作;
(2)访问权限区(ImagePriv):记录进程对该部分内存数据的访问权限信息,主要包括添加、读取、更新、删除四类权限。权限信息内容在创建时就写入这一区域;
(3)索引区(Index):索引区负责索引数据的组织,根据配置的不同,会创建若干索引子区,每个索引子区对应一维索引。每一个索引子区大致包括:索引槽位区(IndexSlot)和索引槽状态区(KeyStatus)。对于支持Key-ValueList集合访问类型的索引,除索引槽位区和索引槽状态区以外还有二级索引槽位区和二级索引槽位状态区;
(4)总控区(Contrl):作为多维索引与数据实体时间的桥梁,记录了对应的数据实体在属性区的位置,同时记录了该实体对应的索引在各自索引区的位置,每一个总控区槽位包括槽位区和槽位状态区两部分;
(5)属性区(Prpt):负责记录对应的属性在数据区的位置,从而支持数据实体不同属性的单独添加及删除;
(6)数据区(Data):负责存放实际的数据值。
在数据内存区域构建完成之后,则进行实际的数据添加操作:
先加入第一组数据实例,如图2所示整个数据写入操作可分为5个阶段:
(1)在插入数据前,首先会通过访问权限区的信息确认调用者有执行插入数据的权限。
(2)之后在各索引子区,根据传入的三个索引键确定各自在索引子区中的位置,并将各索引槽位标记成已占用。对于支持集合访问的索引3,还将把对应的二级槽位状态设置成已占用。
(3)在总控区找到下一个可用槽位,首先建立该槽位与各索引之间的关系,并将总控区的该槽位标记为已占用。
(4)之后在属性区找到下一个可用槽位,建立属性槽位与总控槽位之间的映射关系,
(5)将数据实体的不同属性值写入数据区,之后建立属性区与数据区各属性值之间的映射关系
同样的方法依次加入第二组至第五组数据实例后,整个数据组织结构如图3所示;由于索引3是支持Key-ValueList集合访问类型的索引,因此在加入第六组数据实例时,索引3的数据组织方式有所变化,加入第六组数据实例后的内存数据组织形式大致如图4所示,具体的说在添加第六组数据
[006, 13666612345, 李乐]-[男,28,硕士]时,索引3仅仅是在二级索引区新占用了一个槽位,用于与总控区进行关联映射,两个“李乐”被串联在一个关键字上,从而确保Key-ValueList集合访问功能的实现。
当有数据更新时,原有数据不会被抹除,而在数据区选取一块可用空间,将新数据写入到空闲数据区,之后调整属性区中对应属性值的记录位置,使其指向新的数据,以修改第二组数据为例[002, 13900012345, 李四]-[男,25,硕士]的第二个属性值,将年龄从25岁调整为24岁,修改过程为:
(1)通过精确访问索引检索到该数据实体对应的属性值;
(2)从数据区空闲位置找到一块可用空间,将更新数据写入其中;
(3)调整属性区的记录位置值,将其设定为新内容的具体位置;
经调整后的数据内存组织如图5所示,第二组数据的属性2已经更新为24,对应的属性区指针已经从原来的指向数据区的25所在位置改变成指向新的数据区24所在的位置。
当删除数据实体的某一属性,进行这类删除操作,需要定位到对应数据实体在属性区的位置,此后将对应的属性指向值抹去。以删除第二组数据的属性2为例,删除该数据实体属性2后的内存数据组织形式如图6所示,主要的调整就是将对应属性2在属性区中的位置指针值抹去,属性实际值仍然保留在数据区,不做任何操作。
当根据某一维索引将整个数据实体删除时,该类删除过程分为以下几步:
(1)通过索引定位到数据实体对应的总控区槽位,将对应槽位的状态修改成“已删除”;
(2)依靠总控区槽位中的信息,反向定位数据实体在每一维索引上的位置,将各维索引上该实体对应的位置设置成“已删除”。
删除索引后的内存数据组织形式如图7所示,实际上对于属性区和数据区并没有进行任何操作,属性区和数据区的内容仍然保留原样,删除操作主要将总控区和索引区的槽位状态进行了变更,当有读取数据操作时,会首先通过索引进行检索,首先会判断对应的索引区槽位状态是否正确,如果索引区状态正确,则进一步查看对应总控区槽位状态是否正确,当总控区槽位状态也正常时,则去读取数据内容,整个内存数据空间,索引区槽位是会复用的,而总控区、属性区、数据区槽位都不会被复用。
当多用户同时进行一写多读操作时,本发明主要通过以下手段确保各用户之间互不干扰的定位数据并获取数据值:
(1)各索引子区和总控区均有状态标识位。用于标识当前该槽位是状态(已被占用或者未被使用),当数据实体被写入时,所有索引子区和总控区对应槽位的状态将被标记成已被占用,当整个数据实体被删除时,对应的所有索引子区和总控区的槽位将被重新标记为已删除使用,当有读写同时发生时,写者在进行数据实体写入之前,需要确保不是所有索引子区和总控区的槽位表明为已被占用,如果均被标明为已被占用,则说明之前已写入该实体,本次写入为重复写入;读者在进行数据实体读取之前,需要确保所有索引子区和总控区的槽位均以表明为已被占用,如果有某个槽位未被表明已占用,说明对应实体并未正确写入本内存中,视本次读取操作无效。
(2)总控区、属性区、数据区槽位不复用。当对数据属性进行删除或者更新时,对应的数据区槽位不复用;当对数据实体进行整体删除时,属性区、总控区槽位不复用。这样做可以确保在删除操作与读取操作同时发生时,如果在读取该数据实体的过程中正好有另外一用户删除该实体或者更新对应属性,读者还是可以通过槽位信息访问到实际的原数据值,当然在删除操作整个完成之后的读取操作将不会读到对应的数据实体。
以上即本发明涉及的方法所使用的各种情形,相信经过上述分类叙述,可使本发明内容更易理解。
Claims (8)
1.一种新型的并发内存数据组织与访问方法,其特征在于在内存数据组织形式提供两类数据访问方式: Key-Value的精确索引方式及Key-ValueList的集合索引方式,根据需求访问各实体中的任何一个属性,同时支持多维索引,单一实体可通过不同索引进行检索,整个内存数据采用分块组织的方式进行管理,各内存块分别存放不同级别、不同类型的管理信息,数据的访问依靠各内存区的逻辑进行串联控制,该数据访问方法操作如下:
a.创建数据存储空间,根据预定的配置信息在内存空间中创建完整的存储实体,既包括实际数据存放区域,又包括为提供各项索引功能而必须的控制区域;
b.将数据实体添加到数据存储空间,同时为该数据实体设定对应的每一维索引的索引键(Key),并构建索引键到数据实体的映射关系,为支持多维索引的Key-Value/ValueList访问作基础;
c.完成数据实体添加后,通过不同维度索引对数据进行访问,可通过Key-Value精确访问的方式定位某一数据,并对该数据进行读取、更新、删除操作;可以通过Key-ValueList集合访问的方式定位某一数据链表,并从该链表的某一“点”开始向后遍历访问,并对对应的数据进行读取、更新、删除操作;
d.当有其他进程也需要访问同一块内存数据,执行“附着”操作,将该共享内存接入到本地内存空间,即可通过Key-Value/ValueList的方式访问数据;
e.并发访问时,一个数据的更新会在其完成数据提交后真正生效,之后的对于该数据的读取访问都将读到更新后的数据,生效过程是原子的,通过这一原子操作有效保证数据一致性。
2.如权利要求1所述的一种新型的并发内存数据组织与访问方法,其特征在于将数据实体添加到数据存储空间,该步骤实际分为索引区索引键添加,数据区数据值添加以及键值关系构建三部分,对于多维索引来说,添加数据的同时需要保证所有维度的索引能够同时映射到同一数据实体,因此在实际的数据添加时,会首先选取一个“总控区”位置,将数据实体与该总控区位置对应起来,之后,将各维索引键值“安插”到各自“索引区”的合理位置,并建立各索引键与“总控区”位置的一一对应关联关系,从而确保各维索引与数据实体的关联关系构建完成。
3.如权利要求1或2所述的一种新型的并发内存数据组织与访问方法,其特征在于数据实体的操作过程,主要是通过索引区,首先定位到“总控区”位置,基于该位置去访问实际的数据实体,对于数据的读取操作,直接将对应的数据返回给调用者;而对于更新操作,主要基于多版本的概念,更新不在原有数据上进行,而是新增一个副本,当更新数据完成在副本的写入后,再将“数据指针”指向新的版本;对于删除操作,分为索引删除和数据删除两部分,对于索引删除操作,将把所有维度索引一同删除,在删除索引的时候,索引对应的数据实体不被删除;删除索引,将释放对应的空间,以备后续重复使用,对于数据删除,会将删除的空间“隔离”开来,外界不可再次访问该部分内容,但是实际数据不做“抹除”操作,数据空间不被重复利用。
4.如权利要求1所述的一种新型的并发内存数据组织与访问方法,其特征在于添加多维索引操作中,索引添加的最后步骤是为多维索引共同指向的“总控区”位置设置标志位,表明该槽位已被占用,只有“总控区”槽位设置标识位,对应索引槽位才是有效索引,该设置过程是原子的,在读操作与索引添加操作同时发生时,当该标志位未被设置,则读操作读不到任何索引;当该标志已为设置,则读操作可以访问到对应的索引。
5.如权利要求1所述的一种新型的并发内存数据组织与访问方法,其特征在于添加数据操作中,在数据添加完成时,会将“总控区”槽位“指向”添加的数据,表明数据添加成功,该过程同样是原子的,当读操作与数据添加操作同时进行,“指向”未能形成,读操作读不到数据,“指向”已形成,则可以读到完整数据,数据完整性不被破坏。
6.如权利要求1所述的一种新型的并发内存数据组织与访问方法,其特征在于更新数据操作中,写操作并不会破坏原有的数据,只是将更新的数据写入另一块内存空间,在此之后将“总控区”槽位指向新的数据,而这个“指向”过程是原子的,因此,当读操作与更新操作同时进行,一种情况是读操作在“指向”改变前完成数据读取,则读到更新前的数据,整个数据是完整的;另一种情况是读操作在“指向”该表后进行数据读取,则读到更新后的数据,读取的数据仍然是完整的。
7.如权利要求1所述的一种新型的并发内存数据组织与访问方法,其特征在于删除索引操作中,索引对应的数据并未被删除,实际上是在多维索引指向的“总控区”槽位打上“已删除”标记,对“总控区”槽位打标志过程是原子的,当读操作与删除操作同时进行,当删除操作的打标记过程已完成,则读操作无法访问到实际索引,也就不会访问到对应的数据,因此数据完整性不被破坏;当删除操作的打标记过程在读操作定位索引之后完成,由于实际的数据并未删除,因此读操作可以读到完整的数据,数据完整性也没有被破坏。
8.如权利要求1所述的一种新型的并发内存数据组织与访问方法,其特征在于删除数据操作中,实际的数据并未被删除,而是将“总控区”槽位与数据的“联系”打断,而打断“联系”的过程是原子的,读操作与删除操作同时进行时,当读操作在打断联系之前完成,则可以读到数据,且数据是完整的,当读操作在打断“联系”之后完成,则不会读到任何数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210362541XA CN102880704A (zh) | 2012-09-25 | 2012-09-25 | 一种新型的并发内存数据组织与访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210362541XA CN102880704A (zh) | 2012-09-25 | 2012-09-25 | 一种新型的并发内存数据组织与访问方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102880704A true CN102880704A (zh) | 2013-01-16 |
Family
ID=47482030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210362541XA Pending CN102880704A (zh) | 2012-09-25 | 2012-09-25 | 一种新型的并发内存数据组织与访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102880704A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103647669A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种保证分布式数据处理一致性的系统及方法 |
CN104268013A (zh) * | 2014-10-17 | 2015-01-07 | 中国人民解放军国防科学技术大学 | 一种快速的全系统模拟器确定性回放方法 |
CN105787360A (zh) * | 2016-03-02 | 2016-07-20 | 杭州字节信息技术有限公司 | 一种嵌入式系统内存安全访问控制的技术实现方法 |
CN106471478A (zh) * | 2014-06-24 | 2017-03-01 | Arm 有限公司 | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 |
CN108228479A (zh) * | 2018-01-29 | 2018-06-29 | 深圳市泰比特科技有限公司 | 一种嵌入式flash数据存储方法及系统 |
CN109144962A (zh) * | 2018-08-31 | 2019-01-04 | 北京诚志重科海图科技有限公司 | 一种数据存储方法、查询方法、存储装置及查询装置 |
CN110275906A (zh) * | 2019-06-06 | 2019-09-24 | 深圳证券通信有限公司 | 一种做市行情库的分发方法 |
WO2019228568A3 (en) * | 2019-09-12 | 2020-07-09 | Alibaba Group Holding Limited | Log-structured storage systems |
CN111858679A (zh) * | 2020-07-29 | 2020-10-30 | 武汉修齐科技有限公司 | 一种数据缓存方法、缓存系统及查询方法 |
CN112817530A (zh) * | 2021-01-22 | 2021-05-18 | 万得信息技术股份有限公司 | 一种多线程安全高效读写有序数据的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN101127045A (zh) * | 2007-09-25 | 2008-02-20 | 中兴通讯股份有限公司 | 数据库可重复读实现方法、装置及数据库管理系统 |
CN101315628A (zh) * | 2007-06-01 | 2008-12-03 | 华为技术有限公司 | 内存数据库系统及实现内存数据库的方法和装置 |
CN102122285A (zh) * | 2010-01-11 | 2011-07-13 | 卓望数码技术(深圳)有限公司 | 一种数据缓存系统和数据查询方法 |
CN102158345A (zh) * | 2010-06-23 | 2011-08-17 | 青岛海信传媒网络技术有限公司 | 一种数据管理方法、装置和系统 |
-
2012
- 2012-09-25 CN CN201210362541XA patent/CN102880704A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN101315628A (zh) * | 2007-06-01 | 2008-12-03 | 华为技术有限公司 | 内存数据库系统及实现内存数据库的方法和装置 |
CN101127045A (zh) * | 2007-09-25 | 2008-02-20 | 中兴通讯股份有限公司 | 数据库可重复读实现方法、装置及数据库管理系统 |
CN102122285A (zh) * | 2010-01-11 | 2011-07-13 | 卓望数码技术(深圳)有限公司 | 一种数据缓存系统和数据查询方法 |
CN102158345A (zh) * | 2010-06-23 | 2011-08-17 | 青岛海信传媒网络技术有限公司 | 一种数据管理方法、装置和系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103647669B (zh) * | 2013-12-16 | 2017-04-05 | 上海证券交易所 | 一种保证分布式数据处理一致性的系统及方法 |
CN103647669A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种保证分布式数据处理一致性的系统及方法 |
CN106471478B (zh) * | 2014-06-24 | 2020-10-30 | Arm 有限公司 | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 |
CN106471478A (zh) * | 2014-06-24 | 2017-03-01 | Arm 有限公司 | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 |
CN104268013A (zh) * | 2014-10-17 | 2015-01-07 | 中国人民解放军国防科学技术大学 | 一种快速的全系统模拟器确定性回放方法 |
CN104268013B (zh) * | 2014-10-17 | 2017-05-17 | 中国人民解放军国防科学技术大学 | 一种快速的全系统模拟器确定性回放方法 |
CN105787360A (zh) * | 2016-03-02 | 2016-07-20 | 杭州字节信息技术有限公司 | 一种嵌入式系统内存安全访问控制的技术实现方法 |
CN108228479A (zh) * | 2018-01-29 | 2018-06-29 | 深圳市泰比特科技有限公司 | 一种嵌入式flash数据存储方法及系统 |
CN109144962A (zh) * | 2018-08-31 | 2019-01-04 | 北京诚志重科海图科技有限公司 | 一种数据存储方法、查询方法、存储装置及查询装置 |
CN110275906A (zh) * | 2019-06-06 | 2019-09-24 | 深圳证券通信有限公司 | 一种做市行情库的分发方法 |
CN110275906B (zh) * | 2019-06-06 | 2023-04-18 | 深圳证券通信有限公司 | 一种做市行情库的分发方法 |
WO2019228568A3 (en) * | 2019-09-12 | 2020-07-09 | Alibaba Group Holding Limited | Log-structured storage systems |
US11423015B2 (en) | 2019-09-12 | 2022-08-23 | Advanced New Technologies Co., Ltd. | Log-structured storage systems |
CN111858679A (zh) * | 2020-07-29 | 2020-10-30 | 武汉修齐科技有限公司 | 一种数据缓存方法、缓存系统及查询方法 |
CN112817530A (zh) * | 2021-01-22 | 2021-05-18 | 万得信息技术股份有限公司 | 一种多线程安全高效读写有序数据的方法 |
CN112817530B (zh) * | 2021-01-22 | 2024-06-07 | 万得信息技术股份有限公司 | 一种多线程安全高效读写有序数据的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102880704A (zh) | 一种新型的并发内存数据组织与访问方法 | |
CN1746893B (zh) | 事务文件系统 | |
US4864497A (en) | Method of integrating software application programs using an attributive data model database | |
US7698319B2 (en) | Database system management method, database system, database device, and backup program | |
US7685127B2 (en) | Database access system, method of accessing a database, and method of designing a database access system | |
CN102054034A (zh) | 企业信息系统的业务基础数据持久化实现方法 | |
CN105408895A (zh) | 用于多个访问方法的无锁存、日志结构化的存储 | |
CN101268439A (zh) | 数据库片段克隆和管理 | |
CN109906448A (zh) | 使用单独的逻辑时间戳服务促进可插拔数据库上的操作 | |
WO2017101505A1 (zh) | 一种基于PostgreSQL块存储设备的迁移方法 | |
Narang | Database management systems | |
CN104021145A (zh) | 一种混合业务并发访问的方法和装置 | |
CN103106286A (zh) | 元数据的管理方法和装置 | |
Moss et al. | Managing persistent data with Mneme: Designing a reliable, shared object interface | |
US20230409545A1 (en) | Version control interface supporting time travel access of a data lake | |
WO2017101478A1 (zh) | 一种PostgreSQL块存储设备读写模块 | |
CA2526045C (en) | Complex data access | |
KR20110046118A (ko) | 적응적 로깅 장치 및 방법 | |
US7194486B2 (en) | Method and system for data processing with data replication for the same | |
Gupta et al. | Introduction to database management system | |
US9639538B2 (en) | Embedding archived data in a data source | |
WO2017101477A1 (zh) | 一种PostgreSQL块 | |
CN100369038C (zh) | 一种实时数据库事务操作的实现方法 | |
JP3769775B2 (ja) | 分散リンク情報維持方法 | |
Herbst | Long-term database support for EXPRESS data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130116 |