CN110059090A - 一种位图索引的写入/转储/合并/查询方法和装置 - Google Patents

一种位图索引的写入/转储/合并/查询方法和装置 Download PDF

Info

Publication number
CN110059090A
CN110059090A CN201910321209.0A CN201910321209A CN110059090A CN 110059090 A CN110059090 A CN 110059090A CN 201910321209 A CN201910321209 A CN 201910321209A CN 110059090 A CN110059090 A CN 110059090A
Authority
CN
China
Prior art keywords
bitmap index
sstable
bitmap
memtable
major 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.)
Granted
Application number
CN201910321209.0A
Other languages
English (en)
Other versions
CN110059090B (zh
Inventor
谢振江
赵裕众
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910321209.0A priority Critical patent/CN110059090B/zh
Publication of CN110059090A publication Critical patent/CN110059090A/zh
Priority to PCT/CN2020/071872 priority patent/WO2020211492A1/zh
Priority to US16/818,476 priority patent/US10909101B2/en
Application granted granted Critical
Publication of CN110059090B publication Critical patent/CN110059090B/zh
Priority to US17/164,761 priority patent/US11086835B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种位图索引的写入/转储/合并/查询方法和装置,其中,位图索引的写入包括:根据更新数据,确定位图索引Memtable的更新行;对所述位图索引Memtable的更新行添加行锁;根据所述更新数据,更新所述位图索引Memtable的更新行中的数据。

Description

一种位图索引的写入/转储/合并/查询方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种位图索引的写入/转储/合并/查询方法和装置。
背景技术
位图索引,是一种基于位图建立的数据库索引,适用于有大量重复值的列查询。在实际应用场景中,随着数据库中存储的数据不断更新,为了适应查询的需求,位图索引也需要随之更新。
目前,在对位图索引进行更新时,会把更新行所在的数据块整体加锁。通常数据块包含成百上千行的数据,更新位图索引中单行会导致整个数据块的其他不相关行被锁住,导致无法对该数据块中的其他行进行更新。
因此,现有的方法并发更新性能低。
发明内容
鉴于此,本发明实施例提供了一种位图索引的写入/转储/合并/查询方法和装置,能够提高并发更新性能。
第一方面,本发明实施例提供了一种位图索引的写入方法,包括:
根据更新数据,确定位图索引Memtable的更新行;
对所述位图索引Memtable的更新行添加行锁;
根据所述更新数据,更新所述位图索引Memtable的更新行中的数据。
第二方面,本发明实施例提供了一种位图索引的转储方法,包括:
根据更新数据,确定位图索引Memtable的更新行;
对所述位图索引Memtable的更新行添加行锁;
根据所述更新数据,更新所述位图索引Memtable的更新行中的数据;
释放所述位图索引Memtable的更新行的行锁;
将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中。
第三方面,本发明实施例提供了一种位图索引的合并方法,包括:
根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
对所述位图索引Memtable的更新行和所述主表Memtable的更新行添加行锁;
根据所述更新数据,更新所述位图索引Memtable的更新行中的数据和所述主表Memtable的更新行中的数据;
释放所述位图索引Memtable的更新行的行锁和所述主表Memtable的更新行的行锁;
将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,将所述主表Memtable中的数据写入新的主表转储SSTable中;
根据所述新的主表转储SSTable,确定位图索引基线SSTable中的数据。
第四方面,本发明实施例提供了一种位图索引的查询方法,包括:
根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
对所述位图索引Memtable的更新行和所述主表Memtable的更新行添加行锁;
根据所述更新数据,更新所述位图索引Memtable的更新行中的数据和所述主表Memtable的更新行中的数据;
释放所述位图索引Memtable的更新行的行锁和所述主表Memtable的更新行的行锁;
将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,将所述主表Memtable中的数据写入新的主表转储SSTable中;
将所述新的主表转储SSTable中的数据写入新的主表基线SSTable中;
根据所述新的主表基线SSTable,确定位图索引基线SSTable中的数据;其中,所述位图索引Memtable、所述新的位图索引转储SSTable和所述位图索引基线SSTable构成一个位图索引;
根据查询条件,在一个或多个所述位图索引中进行查询,得到查询结果。
第五方面,本发明实施例提供了一种位图索引的写入装置,包括:
确定单元,用于根据更新数据,确定位图索引Memtable的更新行;
加锁单元,用于对所述位图索引Memtable的更新行添加行锁;
更新单元,用于根据所述更新数据,更新所述位图索引Memtable的更新行中的数据。
第六方面,本发明实施例提供了一种位图索引的转储装置,包括:
确定单元,用于根据更新数据,确定位图索引Memtable的更新行;
加锁单元,用于对所述位图索引Memtable的更新行添加行锁;
更新单元,用于根据所述更新数据,更新所述位图索引Memtable的更新行中的数据;
释放单元,用于释放所述位图索引Memtable的更新行的行锁;
转储单元,用于将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中。
第七方面,本发明实施例提供了一种位图索引的合并装置,包括:
确定单元,用于根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
加锁单元,用于对所述位图索引Memtable的更新行和所述主表Memtable的更新行添加行锁;
更新单元,用于根据所述更新数据,更新所述位图索引Memtable的更新行中的数据和所述主表Memtable的更新行中的数据;
释放单元,用于释放所述位图索引Memtable的更新行的行锁和所述主表Memtable的更新行的行锁;
转储单元,用于将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,将所述主表Memtable中的数据写入新的主表转储SSTable中;
合并单元,用于根据所述新的主表转储SSTable,确定位图索引基线SSTable中的数据。
第八方面,本发明实施例提供了一种位图索引的查询装置,包括:
确定单元,用于根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
加锁单元,用于对所述位图索引Memtable的更新行和所述主表Memtable的更新行添加行锁;
更新单元,用于根据所述更新数据,更新所述位图索引Memtable的更新行中的数据和所述主表Memtable的更新行中的数据;
释放单元,用于释放所述位图索引Memtable的更新行的行锁和所述主表Memtable的更新行的行锁;
转储单元,用于将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,将所述主表Memtable中的数据写入新的主表转储SSTable中;
合并单元,用于将所述新的主表转储SSTable中的数据写入新的主表基线SSTable中;根据所述新的主表基线SSTable,确定位图索引基线SSTable中的数据;其中,所述位图索引Memtable、所述新的位图索引转储SSTable和所述位图索引基线SSTable构成一个位图索引;
查询单元,用于根据查询条件,在一个或多个所述位图索引中进行查询,得到查询结果。
本发明实施例采用的上述至少一个技术方案能够达到以下有益效果:该方法在位图索引的更新过程中,对位图索引Memtable的更新行添加行锁,实现行级加锁。因此,该方法能够减小加锁范围,避免锁住更新行所在的数据块,进而提高位图索引的并发更新性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种位图索引的写入方法的流程图;
图2是本发明一个实施例提供的一种位图索引Memtable的结构示意图;
图3是本发明一个实施例提供的一种位图索引的转储方法的流程图;
图4是本发明一个实施例提供的一种位图索引的合并方法的流程图;
图5是本发明一个实施例提供的一种主表的结构示意图;
图6是本发明一个实施例提供的一种位图索引的结构示意图;
图7是本发明一个实施例提供的一种位图索引的查询方法的流程图;
图8是本发明一个实施例提供的一种位图索引的写入装置的结构示意图;
图9是本发明一个实施例提供的一种位图索引的转储装置的结构示意图;
图10是本发明一个实施例提供的一种位图索引的合并装置的结构示意图;
图11是本发明一个实施例提供的一种位图索引的查询装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种位图索引的写入方法,该方法可以包括以下步骤:
步骤101:根据更新数据,确定位图索引Memtable的更新行。
位图索引Memtable和主表Memtable为能够实现行级加锁的存储结构,例如,B+树、Bw树等。可以根据更新数据的主表主键列和索引列(即索引表主键列)确定位图索引Memtable的更新行,并为其添加行锁。
步骤102:对位图索引Memtable的更新行添加行锁。
步骤103:根据更新数据,更新位图索引Memtable的更新行中的数据。
步骤103具体包括:确定更新数据的主表主键列的列值和索引列的列值;将更新数据的主表主键列的列值和索引列的列值,写入位图索引Memtable的更新行中。
位图索引Memtable中每行存储的是索引列和主表主键列的列值,并按照这些列值排序。如图2所示,是一种B+树结构的位图索引Memtable,内部包含多个节点,其中叶子节点存储行数据。
例如,主表字段为(a,b),a是主表主键列,b是索引列(即以b列建立位图索引)。参考图6,位图索引Memtable的存储顺序为(b,a),图中i代表插入,d代表删除。
在实际应用场景中,位图索引的写入过程可以通过事务的执行实现,具体为:开启事务,步骤101-步骤103,提交事务。其中,在提交事务后,即数据更新完成后,还包括:释放位图索引Memtable的更新行的行锁。
该方法在位图索引的更新过程中,对位图索引Memtable的更新行添加行锁,实现行级加锁。因此,该方法能够减小加锁范围,避免锁住更新行所在的数据块,进而提高位图索引的并发更新性能。
主表的写入方法与位图索引的写入方法类似,主表的写入方法包括:
a1:根据更新数据,确定主表Memtable的更新行。
a2:对主表Memtable的更新行添加行锁。
a3:根据更新数据,更新主表Memtable的更新行中的数据。
与位图索引Memtable不同的是,主表Memtable中存储更新数据的所有列的列值。并且,在主表Memtable中,数据的存储顺序为(a,b),参考图5所示。
需要说明的是,为了保证主表与位图索引中数据的一致性,主表或位图索引在写入的过程中,主表和位图索引都需要加行锁,但是加锁之后,可以先向主表中写入数据,也可以先向位图索引中写入数据,还可以同时向主表和位图索引中写入数据,在主表和位图索引的数据写入都完成后,再释放主表和位图索引添加的行锁。
在此情况下,步骤102具体包括:对位图索引Memtable的更新行和主表Memtable的更新行添加行锁。下述步骤302与步骤102类似,此处不再赘述。
类似地,a2具体包括:对位图索引Memtable的更新行和主表Memtable的更新行添加行锁。下述c2与a2类似,此处不再赘述。
对应于加锁,解锁也存在相同的处理过程。
下述步骤304具体包括:释放位图索引Memtable的更新行的行锁和主表Memtable的更新行的行锁;
下述c4具体包括:释放位图索引Memtable的更新行的行锁和主表Memtable的更新行的行锁。如图3所示,本发明实施例提供了一种位图索引的转储方法,包括:
步骤301:根据更新数据,确定位图索引Memtable的更新行。
步骤302:对位图索引Memtable的更新行添加行锁。
步骤303:根据更新数据,更新位图索引Memtable的更新行中的数据。
步骤301-步骤303同上述步骤101-步骤103,此处不再赘述。
步骤304:释放位图索引Memtable的更新行的行锁。
在写入过程完成后,释放相关的行锁,以接触对资源的占用。
步骤305:将位图索引Memtable中的数据写入新的位图索引转储SSTable中。
新的位图索引转储SSTable由一个或多个宏块组成,每个宏块中包含位图索引字段部分或全部数据,数据一旦写入就不再更新。
新的位图索引转储SSTable的存储顺序为(b,a),具体请参考图6。
宏块中包含一行或多行已排序的数据,每个宏块的存储的数据量可以预先配置,例如,宏块的大小为2M。宏块持久化在磁盘上,是SSTable的基本组成单位。其中,SSTable包括转储SSTable和基线SSTable(主表、位图索引)。
步骤305具体包括:
b1:冻结位图索引Memtable。
在对位图索引Memtable中的数据转储至新的位图索引转储SSTable之前,需要冻结位图索引Memtable,以禁止新的数据写入到该位图索引Memtable。
b2:按照新的位图索引转储SSTable的宏块格式,将冻结的位图索引Memtable中的数据写入新的位图索引转储SSTable中。
在不存在旧的位图索引转储SSTable时,直接将按照新的位图索引转储SSTable的宏块格式,将冻结的位图索引Memtable中的数据写入新的位图索引转储SSTable中。
在存在旧的位图索引转储SSTable时,b2具体包括:
b21:根据索引列和主表主键列,合并旧的位图索引转储SSTable和冻结的位图索引Memtable的行。
按照主表主键列和索引列迭代旧的位图索引转储SSTable和冻结的位图索引Memtable的行,合并相同的行。
b22:按照新的位图索引转储SSTable的宏块格式,将合并后的数据写入新的位图索引转储SSTable中。
在b2之后,解除对位图索引Memtable的冻结。
为了避免影响其他更新数据的写入,在b1之后,b2之前还可以包括:创建新的位图索引Memtable。
主表的转储方法与位图索引的转储方法类似,主表的转储方法包括:
cl:根据更新数据,确定主表Memtable的更新行。
c2:对主表Memtable的更新行添加行锁。
c3:根据更新数据,更新主表Memtable的更新行中的数据。
c4:释放主表Memtable的更新行的行锁。
c5:将主表Memtable中的数据写入新的主表转储SSTable中。
新的主表转储SSTable由一个或多个宏块组成,每个宏块中包含主表字段部分或全部数据,数据一旦写入就不再更新。新的主表转储SSTable的存储顺序为(a,b),具体请参考图5。
c5具体包括:
c51:冻结主表Memtable。
c52:按照新的主表转储SSTable的宏块格式,将冻结的主表Memtable中的数据写入新的主表转储SSTable中。
c52具体包括:
c521:根据索引列和主表主键列,合并旧的主表转储SSTable和冻结的主表Memtable的行。
c522:按照新的主表转储SSTable的宏块格式,将合并后的数据写入新的主表转储SSTable中。
如图4所示,本发明实施例提供了一种位图索引的合并方法,包括:
步骤401:根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行。
步骤402:对位图索引Memtable的更新行和主表Memtable的更新行添加行锁。
步骤403:根据更新数据,更新位图索引Memtable的更新行中的数据和主表Memtable的更新行中的数据。
步骤404:释放位图索引Memtable的更新行的行锁和主表Memtable的更新行的行锁。
步骤405:将位图索引Memtable中的数据写入新的位图索引转储SSTable中,将主表Memtable中的数据写入新的主表转储SSTable中。
步骤401-步骤405为主表的转储及位图索引的转储,此处不再赘述。
步骤406:根据新的主表转储SSTable,确定位图索引基线SSTable中的数据。
步骤406具体包括:
d1:按照新的主表基线SSTable的宏块格式,将新的主表转储SSTable中的数据写入新的主表基线SSTable中。
d2:根据新的主表基线SSTable,生成位图索引基线SSTable的位图。
即根据新的主表基线SSTable的索引列的列值,生成与新的主表基线SSTable的索引列的列值相对应的位图。
位图索引基线SSTable中以位图的格式存储数据。参考图5和图6,列b有三个不同的列值,分别为1、2和3,每个不同的列值会生成相应的位图,每个位图的第n位为1,则说明第n行列b的值为该位图代表的值。以b=3的位图为例,第6、7行为1,则说明主表的第6行和第7行列b的值皆为3。
d3:按照位图索引基线SSTable的宏块格式,将位图索引基线SSTable的位图写入位图索引基线SSTable中。
d1具体包括:
d11:根据索引列和主表主键列,合并旧的主表基线SSTable和新的主表转储SSTable的行。
d12:按照新的主表基线SSTable的宏块格式,将合并后的数据写入新的主表基线SSTable中。
位图索引基线SSTable由一个或多个宏块组成,每个宏块包含位图索引字段部分或全部数据,数据一旦写入就不再更新。
新的主表基线SSTable由一个或多个宏块组成,每个宏块包含主表字段部分或全部数据,数据一旦写入就不再更新。
如图7所示,本发明实施例提供了一种位图索引的查询方法,包括:
步骤701:根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行。
步骤702:对位图索引Memtable的更新行和主表Memtable的更新行添加行锁。
步骤703:根据更新数据,更新位图索引Memtable的更新行中的数据和主表Memtable的更新行中的数据。
步骤704:释放位图索引Memtable的更新行的行锁和主表Memtable的更新行的行锁。
步骤705:将位图索引Memtable中的数据写入新的位图索引转储SSTable中,将主表Memtable中的数据写入新的主表转储SSTable中。
步骤706:将新的主表转储SSTable中的数据写入新的主表基线SSTable中。
步骤707:根据新的主表基线SSTable,确定位图索引基线SSTable中的数据;其中,位图索引Memtable、新的位图索引转储SSTable和位图索引基线SSTable构成一个位图索引。
参考图6,位图索引由位图索引Memtable、新的位图索引转储SSTable和位图索引基线SSTable构成。主表由主表Memtable、新的主表转储SSTable和新的主表基线SSTable构成。通过一张主表可以建立多个位图索引,每个位图索引对应不同的索引列。
步骤708:根据查询条件,在一个或多个位图索引中进行查询,得到查询结果。
查询结果可能由主表Memtable、新的主表转储SSTable和新的主表基线SSTable任意一个或多个中的数据构成。因此,在实际应用场景中,需要对相应的位图索引Memtable、新的位图索引转储SSTable和位图索引基线SSTable分别进行查询。
查询过程可以被划分为两种情况,一种是查询单列,另一种是查询多列。每一种情况又分别对应两种应用场景,一种应用场景是存在增量数据,位图索引Memtable和新的位图索引转储SSTable中的数据为增量数据,当存在增量数据时,需要在位图索引Memtable和/或新的位图索引转储SSTable中进行查询;另一种场景是不存在增量数据,如果不存在增量数据,则不需要查询位图索引Memtable和新的位图索引转储SSTable。
在本发明实施例中,为了加快查询速度,该方法还包括:划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围。
由于不同的分片主键范围可能对应不同的应用场景,因此通过将主键范围划分成不同的分片主键范围,能够对不同分片主键范围的查询进行区分,对于不存在增量数据的分片主键范围,无需在位图索引Memtable和所述新的位图索引转储SSTable中进行查询,能够提高查询速度。在实际应用场景中,可以根据主表基线SSTable的宏块范围,划分所述新的主表基线SSTable的主键列的列值,例如,宏块1的主键列的列值的范围为1-7,宏块1的主键列的列值的范围为8-14,则分片主键范围1为1-7,分片主键范围2为8-14。
例如,主键列的列值的范围为1-10,分片主键范围1为(小于1),分片主键范围2为(1-5),分片主键范围3为(6-10),分片主键范围4为(大于10)。分片主键范围1和分片主键范围4的存在是防止查询过程中遗漏位图索引Memtable或新的位图索引转储SSTable中的数据。
以下将根据划分得到的分片主键范围对上述两种情况进行详细说明。
情况1:查询单列。
所述根据查询条件,在一个所述位图索引中进行查询,得到查询结果,包括:
el:当所述位图索引Memtable和所述新的位图索引转储SSTable中不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图。
根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图,具体包括:
e11:在所述位图索引基线SSTable的当前分片主键范围内,确定满足所述查询条件的索引列的列值对应的位图。
e12:对满足所述查询条件的索引列的列值对应的位图进行按位或运算,得到所述第一基线SSTable结果位图。
由于不同的分片主键范围的查询过程相同,以下实施例仅以一个分片主键范围的查询为例
参考图6,假设查询条件为b≤2,则满足查询条件的索引列的列值为1和2。列值1对应的位图为11001001,列值2对应的位图为00110000。
列值1对应的位图与列值2对应的位图进行按位或运算,得到第一基线SSTable结果位图为11111001。
e2:根据所述第一基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第一基线SSTable结果行集合;其中,所述第一基线SSTable结果行集合为所述当前分片主键范围的第一最终结果行集合。
在新的主表基线SSTable中查询基线SSTable结果位图中标记为1的行,得到第一基线SSTable结果行集合。
e3:当所述位图索引Memtable或所述新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图。
e4:根据所述查询条件,在所述新的位图索引转储SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一转储SSTable结果行集合。
e5:根据所述查询条件,在所述位图索引Memtable的当前分片主键范围内查询,得到所述当前分片主键范围的第一Memtable结果行集合。
e6:根据所述第一基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第一基线SSTable结果行集合。
e7:确定所述第一基线SSTable结果行集合、所述第一转储SSTable结果行集合和所述第一Memtable结果行集合的并集,得到所述当前分片主键范围的第一最终结果行集合。
由于第一基线SSTable结果行集合、第一转储SSTable结果行集合和第一Memtable结果行集合都是按照主表主键列有序排列,因此,可以通过依次迭代各个集合的行进行归并得到第一最终结果行集合。
e8:确定所述查询结果为各个所述分片主键范围的第一最终结果行集合的并集。
其中,e1-e2对应于分片主键范围内不存在增量数据的应用场景,e3-e7对应于分片主键范围内存在增量数据的应用场景,而e8是将各个分片主键范围的结果合并,得到最终的查询结果。
e3与e1类似,此处不再赘述。
e4具体包括:
e41:在所述新的位图索引转储SSTable的当前分片主键范围内,确定满足所述查询条件的行集合。
根据索引列在新的位图索引转储SSTable中进行二分查找,得到满足查询条件的行集合。根据行的标记不同,对满足查询条件的行集合中的行分别进行处理。其中,e42为标记为删除的行的处理过程,e43为标记为插入的行的处理过程。
e42:若满足所述查询条件的行集合中的当前行标记为删除,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,删除所述当前分片主键范围的基线SSTable结果位图中所述当前行对应的位,否则,从所述行集合中删除所述当前行。
如果新的主表基线SSTable不存在当前行,说明该行在转储中插入后又删除了,则将从行集合中删除当前行。
e43:若满足所述查询条件的行集合中的当前行标记为插入,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,从所述行集合中删除所述当前行,否则,不做任何处理。
如果新的主表基线SSTable不存在当前行,则不做任何处理。
e44:更新后的满足所述查询条件的行集合为所述第一转储SSTable结果行集合。
当满足查询条件的行集合中的所有行均完成e42或e43时,行集合中剩下的行构成第一转储SSTable结果行集合。
e5具体包括:
e51:在所述位图索引Memtable的当前分片主键范围内,确定满足所述查询条件的行集合。
按照索引列在位图索引Memtable(例如,B+树)中进行查找,得到满足条件的行集合。与e2相似,根据行集合中的行的标记对各个行进行处理。
e52:若满足所述查询条件的行集合中的当前行标记为删除,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,删除所述基线SSTable结果位图中所述当前行对应的位,否则,从所述行集合中删除所述当前行。
如果新的主表基线SSTable不存在当前行,则说明该行在转储中插入后又删除了,则从行集合中删除当前行。
e53:若满足所述查询条件的行集合中的当前行标记为插入,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,从所述行集合中删除所述当前行。
如果新的主表基线SSTable不存在当前行,则不做任何处理。
e54:更新后的满足所述查询条件的行集合为所述第一Memtable结果行集合。
当满足查询条件的行集合中的所有行均完成e52或e53时,行集合中剩下的行构成Memtable结果行集合。
上述对单列查询的说明,同样适用于下述查询多列的情况。
情况2:查询多列。
根据查询条件的不同,情况2又可以进一步分为多列取并集和多列取交集两种情况。以查询两列为例,两列取并集的查询条件可以为a≥3或b>5,两列取交集的查询条件可以为a≥3且b>5。
与查询单列相似的是,查询多列也可以通过划分得到的分片主键范围进行查询。此时,该方法还包括:划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围。
(1)当所述查询条件为各个所述位图索引的索引列的交集时,
所述根据查询条件,在多个所述位图索引中进行查询,得到查询结果,包括:
f1:当各个所述位图索引的位图索引Memtable和新的位图索引转储SSTable中均不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在各个所述位图索引的位图索引基线SSTable的当前分片主键范围内查询,得到各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图。
f2:对各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图进行按位与运算,得到所述当前分片主键范围的第二基线SSTable结果位图。
f3:根据所述第二基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第二基线SSTable结果行集合;其中,所述第二基线SSTable结果行集合为所述当前分片主键范围的第二最终结果行集合。
f4:当任一所述位图索引的位图索引Memtable和新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,确定各个所述位图索引的当前分片主键范围的第一最终结果行集合。
f5:确定所述当前分片主键范围的第二最终结果行集合为各个所述位图索引的当前分片主键范围的第一最终结果行集合的交集。
f6:确定所述查询结果为各个所述分片主键范围的第二最终结果行集合的并集。
其中,f1-f3对应于分片主键范围内不存在增量数据的应用场景,f4-f5对应于分片主键范围内存在增量数据的应用场景,而f6是将各个分片主键范围的结果合并,得到最终的查询结果。
(2)取并集
该方法还包括:划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围。
当所述查询条件为各个所述位图索引的索引列的并集时,
所述根据查询条件,在多个所述位图索引中进行查询,得到查询结果,包括:
g1:当各个所述位图索引的位图索引Memtable和新的位图索引转储SSTable中均不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在各个所述位图索引的位图索引基线SSTable的当前分片主键范围内查询,得到各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图。
g2:对各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图进行按位或运算,得到所述当前分片主键范围的第三基线SSTable结果位图。
g3:根据所述第三基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第三基线SSTable结果行集合;其中,所述第三基线SSTable结果行集合为所述当前分片主键范围的第三最终结果行集合。
g4:当任一所述位图索引的位图索引Memtable和新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,确定各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图、各个所述位图索引的当前分片主键范围的第一转储SSTable结果行集合和各个所述位图索引的当前分片主键范围的第一Memtable结果行集合。
g5:对各个所述位图索引的当前分片主键范围的基线SSTable结果位图进行按位或运算,得到所述当前分片主键范围的第三基线SSTable结果位图。
g6:确定当前位图索引的当前分片主键范围的第一转储SSTable结果行集合和所述当前位图索引的当前分片主键范围的第一Memtable结果行集合的并集,得到所述当前位图索引的当前分片主键范围的增量数据结果行集合。
将各个所述位图索引作为当前位图索引执行g6。
g7:确定各个所述位图索引的当前分片主键范围的增量数据结果行集合的并集,得到所述当前分片主键范围的增量数据结果行集合。
g8:根据所述第三基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第三基线SSTable结果行集合。
g9:确定所述当前分片主键范围的增量数据结果行集合与所述当前分片主键范围的第三基线SSTable结果行集合的并集,得到所述当前分片主键范围的第三最终结果行集合。
g10:确定所述查询结果为各个所述分片主键范围的第三最终结果行集合的并集。
其中,g1-g3对应于分片主键范围内不存在增量数据的应用场景,g4-g9对应于分片主键范围内存在增量数据的应用场景,而g10是将各个分片主键范围的结果合并,得到最终的查询结果。
在查询多列,多列取交集或并集的过程中,对于不存在增量数据的分片主键范围,可以直接通过位图进行按位或运算/按位与计算,与使用结果行集合进行取并集或交集相比,其查询速度更快。
需要说明的是,在实际应用场景中还可以不区分应用场景,在查询的过程中依次查询位图索引的基线SSTable、转储SSTable和Memtable。例如,在查询多列的过程中,且查询条件为各个所述位图索引的索引列的并集时,还可以确定各个所述位图索引的当前分片主键范围的第一最终结果行集合,各个所述位图索引的当前分片主键范围的第一最终结果行集合的并集为当前分片主键范围的查询结果,各个分片主键范围的查询结果的并集为多列查询的查询结果。
如图8所示,一种位图索引的写入装置,包括:
确定单元801,用于根据更新数据,确定位图索引Memtable的更新行;
加锁单元802,用于对位图索引Memtable的更新行添加行锁;
更新单元803,用于根据更新数据,更新位图索引Memtable的更新行中的数据。
在本发明的一个实施例中,更新单元803,用于确定更新数据的主表主键列的列值和索引列的列值;将更新数据的主表主键列的列值和索引列的列值,写入位图索引Memtable的更新行中。
如图9所示,本发明实施例提供了一种位图索引的转储装置,包括:
确定单元901,用于根据更新数据,确定位图索引Memtable的更新行;
加锁单元902,用于对位图索引Memtable的更新行添加行锁;
更新单元903,用于根据更新数据,更新位图索引Memtable的更新行中的数据;
释放单元904,用于释放位图索引Memtable的更新行的行锁;
转储单元905,用于将位图索引Memtable中的数据写入新的位图索引转储SSTable中。
在本发明的一个实施例中,转储单元905,用于冻结位图索引Memtable;按照新的位图索引转储SSTable的宏块格式,将冻结的位图索引Memtable中的数据写入新的位图索引转储SSTable中。
在本发明的一个实施例中,转储单元905,用于根据索引列和主表主键列,合并旧的位图索引转储SSTable和冻结的位图索引Memtable的行;按照新的位图索引转储SSTable的宏块格式,将合并后的数据写入新的位图索引转储SSTable中。
如图10所示,本发明提供了一种位图索引的合并装置,包括:
确定单元1001,用于根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
加锁单元1002,用于对位图索引Memtable的更新行和主表Memtable的更新行添加行锁;
更新单元1003,用于根据更新数据,更新位图索引Memtable的更新行中的数据和主表Memtable的更新行中的数据;
释放单元1004,用于释放位图索引Memtable的更新行的行锁和主表Memtable的更新行的行锁;
转储单元1005,用于将位图索引Memtable中的数据写入新的位图索引转储SSTable中,将主表Memtable中的数据写入新的主表转储SSTable中;
合并单元1006,用于根据新的主表转储SSTable,确定位图索引基线SSTable中的数据。
在本发明的一个实施例中,合并单元1006,用于按照新的主表基线SSTable的宏块格式,将新的主表转储SSTable中的数据写入新的主表基线SSTable中;根据新的主表基线SSTable,生成位图索引基线SSTable的位图;按照位图索引基线SSTable的宏块格式,将位图索引基线SSTable的位图写入位图索引基线SSTable中。
在本发明的一个实施例中,合并单元1006,用于根据索引列和主表主键列,合并旧的主表基线SSTable和新的主表转储SSTable的行;按照新的主表基线SSTable的宏块格式,将合并后的数据写入新的主表基线SSTable中。
如图11,本发明实施例提供了一种位图索引的查询装置,包括:
确定单元1101,用于根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
加锁单元1102,用于对位图索引Memtable的更新行和主表Memtable的更新行添加行锁;
更新单元1103,用于根据更新数据,更新位图索引Memtable的更新行中的数据和主表Memtable的更新行中的数据;
释放单元1104,用于释放位图索引Memtable的更新行的行锁和主表Memtable的更新行的行锁;
转储单元1105,用于将位图索引Memtable中的数据写入新的位图索引转储SSTable中,将主表Memtable中的数据写入新的主表转储SSTable中;
合并单元1106,用于将新的主表转储SSTable中的数据写入新的主表基线SSTable中;根据新的主表基线SSTable,确定位图索引基线SSTable中的数据;其中,位图索引Memtable、新的位图索引转储SSTable和位图索引基线SSTable构成一个位图索引;
查询单元1107,用于根据查询条件,在一个或多个位图索引中进行查询,得到查询结果。
在本发明的一个实施例中,该装置还包括:划分单元,用于划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
所述查询单元1107,用于当所述位图索引Memtable和所述新的位图索引转储SSTable中不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图;根据所述第一基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第一基线SSTable结果行集合;其中,所述第一基线SSTable结果行集合为所述当前分片主键范围的第一最终结果行集合;
当所述位图索引Memtable或所述新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图;根据所述查询条件,在所述新的位图索引转储SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一转储SSTable结果行集合;根据所述查询条件,在所述位图索引Memtable的当前分片主键范围内查询,得到所述当前分片主键范围的第一Memtable结果行集合;根据所述第一基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第一基线SSTable结果行集合;确定所述第一基线SSTable结果行集合、所述第一转储SSTable结果行集合和所述第一Memtable结果行集合的并集,得到所述当前分片主键范围的第一最终结果行集合;
确定所述查询结果为各个所述分片主键范围的第一最终结果行集合的并集。
在本发明的一个实施例中,所述查询单元1107,用于在所述位图索引基线SSTable的当前分片主键范围内,确定满足所述查询条件的索引列的列值对应的位图;对满足所述查询条件的索引列的列值对应的位图进行按位或运算,得到所述第一基线SSTable结果位图。
在本发明的一个实施例中,所述查询单元1107,用于在所述新的位图索引转储SSTable的当前分片主键范围内,确定满足所述查询条件的行集合;若满足所述查询条件的行集合中的当前行标记为删除,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,删除所述当前分片主键范围的基线SSTable结果位图中所述当前行对应的位,否则,从所述行集合中删除所述当前行;若满足所述查询条件的行集合中的当前行标记为插入,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,从所述行集合中删除所述当前行;更新后的满足所述查询条件的行集合为所述第一转储SSTable结果行集合。
在本发明的一个实施例中,所述查询单元1107,用于在所述位图索引Memtable的当前分片主键范围内,确定满足所述查询条件的行集合;若满足所述查询条件的行集合中的当前行标记为删除,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,删除所述基线SSTable结果位图中所述当前行对应的位,否则,从所述行集合中删除所述当前行;若满足所述查询条件的行集合中的当前行标记为插入,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,从所述行集合中删除所述当前行;更新后的满足所述查询条件的行集合为所述第一Memtable结果行集合。
在本发明的一个实施例中,该装置还包括:划分单元,用于划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
所述查询单元1107,用于当所述查询条件为各个所述位图索引的索引列的交集、各个所述位图索引的位图索引Memtable和新的位图索引转储SSTable中均不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在各个所述位图索引的位图索引基线SSTable的当前分片主键范围内查询,得到各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图;对各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图进行按位与运算,得到所述当前分片主键范围的第二基线SSTable结果位图;根据所述第二基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第二基线SSTable结果行集合;其中,所述第二基线SSTable结果行集合为所述当前分片主键范围的第二最终结果行集合;
当任一所述位图索引的位图索引Memtable和新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,确定各个所述位图索引的当前分片主键范围的第一最终结果行集合;确定所述当前分片主键范围的第二最终结果行集合为各个所述位图索引的当前分片主键范围的第一最终结果行集合的交集;
确定所述查询结果为各个所述分片主键范围的第二最终结果行集合的并集。
在本发明的一个实施例中,该装置还包括:划分单元,用于划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
所述查询单元1107,用于当所述查询条件为各个所述位图索引的索引列的并集、各个所述位图索引的位图索引Memtable和新的位图索引转储SSTable中均不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在各个所述位图索引的位图索引基线SSTable的当前分片主键范围内查询,得到各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图;对各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图进行按位或运算,得到所述当前分片主键范围的第三基线SSTable结果位图;根据所述第三基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第三基线SSTable结果行集合;其中,所述第三基线SSTable结果行集合为所述当前分片主键范围的第三最终结果行集合;
当任一所述位图索引的位图索引Memtable和新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,确定各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图、各个所述位图索引的当前分片主键范围的第一转储SSTable结果行集合和各个所述位图索引的当前分片主键范围的第一Memtable结果行集合;对各个所述位图索引的当前分片主键范围的基线SSTable结果位图进行按位或运算,得到所述当前分片主键范围的第三基线SSTable结果位图;确定当前位图索引的当前分片主键范围的第一转储SSTable结果行集合和所述当前位图索引的当前分片主键范围的第一Memtable结果行集合的并集,得到所述当前位图索引的当前分片主键范围的增量数据结果行集合;确定各个所述位图索引的当前分片主键范围的增量数据结果行集合的并集,得到所述当前分片主键范围的增量数据结果行集合;根据所述第三基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第三基线SSTable结果行集合;确定所述当前分片主键范围的增量数据结果行集合与所述当前分片主键范围的第三基线SSTable结果行集合的并集,得到所述当前分片主键范围的第三最终结果行集合;
确定所述查询结果为各个所述分片主键范围的第三最终结果行集合的并集。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (30)

1.一种位图索引的写入方法,包括:
根据更新数据,确定位图索引Memtable的更新行;
对所述位图索引Memtable的更新行添加行锁;
根据所述更新数据,更新所述位图索引Memtable的更新行中的数据。
2.如权利要求1所述的位图索引的写入方法,
所述根据所述更新数据,更新所述位图索引Memtable的更新行中的数据,包括:
确定所述更新数据的主表主键列的列值和索引列的列值;
将所述更新数据的主表主键列的列值和索引列的列值,写入所述位图索引Memtable的更新行中。
3.一种位图索引的转储方法,包括:
根据更新数据,确定位图索引Memtable的更新行;
对所述位图索引Memtable的更新行添加行锁;
根据所述更新数据,更新所述位图索引Memtable的更新行中的数据;
释放所述位图索引Memtable的更新行的行锁;
将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中。
4.如权利要求3所述的位图索引的转储方法,
所述将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,包括:
冻结所述位图索引Memtable;
按照所述新的位图索引转储SSTable的宏块格式,将冻结的所述位图索引Memtable中的数据写入所述新的位图索引转储SSTable中。
5.如权利要求4所述的位图索引的转储方法,
所述按照所述新的位图索引转储SSTable的宏块格式,将冻结的所述位图索引Memtable中的数据写入所述新的位图索引转储SSTable中,包括:
根据索引列和主表主键列,合并旧的位图索引转储SSTable和冻结的所述位图索引Memtable的行;
按照所述新的位图索引转储SSTable的宏块格式,将合并后的数据写入所述新的位图索引转储SSTable中。
6.一种位图索引的合并方法,包括:
根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
对所述位图索引Memtable的更新行和所述主表Memtable的更新行添加行锁;
根据所述更新数据,更新所述位图索引Memtable的更新行中的数据和所述主表Memtable的更新行中的数据;
释放所述位图索引Memtable的更新行的行锁和所述主表Memtable的更新行的行锁;
将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,将所述主表Memtable中的数据写入新的主表转储SSTable中;
根据所述新的主表转储SSTable,确定位图索引基线SSTable中的数据。
7.如权利要求6所述的位图索引的合并方法,
所述根据所述新的主表转储SSTable,确定位图索引基线SSTable中的数据,包括:
按照新的主表基线SSTable的宏块格式,将所述新的主表转储SSTable中的数据写入所述新的主表基线SSTable中;
根据所述新的主表基线SSTable,生成所述位图索引基线SSTable的位图;
按照所述位图索引基线SSTable的宏块格式,将所述位图索引基线SSTable的位图写入所述位图索引基线SSTable中。
8.如权利要求7所述的位图索引的合并方法,
所述按照新的主表基线SSTable的宏块格式,将所述新的主表转储SSTable中的数据写入所述新的主表基线SSTable,包括:
根据索引列和主表主键列,合并旧的主表基线SSTable和所述新的主表转储SSTable的行;
按照所述新的主表基线SSTable的宏块格式,将合并后的数据写入所述新的主表基线SSTable中。
9.一种位图索引的查询方法,包括:
根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
对所述位图索引Memtable的更新行和所述主表Memtable的更新行添加行锁;
根据所述更新数据,更新所述位图索引Memtable的更新行中的数据和所述主表Memtable的更新行中的数据;
释放所述位图索引Memtable的更新行的行锁和所述主表Memtable的更新行的行锁;
将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,将所述主表Memtable中的数据写入新的主表转储SSTable中;
将所述新的主表转储SSTable中的数据写入新的主表基线SSTable中;
根据所述新的主表基线SSTable,确定位图索引基线SSTable中的数据;其中,所述位图索引Memtable、所述新的位图索引转储SSTable和所述位图索引基线SSTable构成一个位图索引;
根据查询条件,在一个或多个所述位图索引中进行查询,得到查询结果。
10.如权利要求9所述的位图索引的查询方法,进一步包括:
划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
所述根据查询条件,在一个所述位图索引中进行查询,得到查询结果,包括:
当所述位图索引Memtable和所述新的位图索引转储SSTable中不存在处于所述当前分片主键范围内的数据时,
根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图;
根据所述第一基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第一基线SSTable结果行集合;其中,所述第一基线SSTable结果行集合为所述当前分片主键范围的第一最终结果行集合;
当所述位图索引Memtable或所述新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,
根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图;
根据所述查询条件,在所述新的位图索引转储SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一转储SSTable结果行集合;
根据所述查询条件,在所述位图索引Memtable的当前分片主键范围内查询,得到所述当前分片主键范围的第一Memtable结果行集合;
根据所述第一基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第一基线SSTable结果行集合;
确定所述第一基线SSTable结果行集合、所述第一转储SSTable结果行集合和所述第一Memtable结果行集合的并集,得到所述当前分片主键范围的第一最终结果行集合;
确定所述查询结果为各个所述分片主键范围的第一最终结果行集合的并集。
11.如权利要求10所述的位图索引的查询方法,
所述根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图,包括:
在所述位图索引基线SSTable的当前分片主键范围内,确定满足所述查询条件的索引列的列值对应的位图;
对满足所述查询条件的索引列的列值对应的位图进行按位或运算,得到所述第一基线SSTable结果位图。
12.如权利要求10所述的位图索引的查询方法,
所述根据所述查询条件,在所述新的位图索引转储SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一转储SSTable结果行集合,包括:
在所述新的位图索引转储SSTable的当前分片主键范围内,确定满足所述查询条件的行集合;
若满足所述查询条件的行集合中的当前行标记为删除,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,删除所述当前分片主键范围的基线SSTable结果位图中所述当前行对应的位,否则,从所述行集合中删除所述当前行;
若满足所述查询条件的行集合中的当前行标记为插入,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,从所述行集合中删除所述当前行;
更新后的满足所述查询条件的行集合为所述第一转储SSTable结果行集合。
13.如权利要求10-12中任一所述的位图索引的查询方法,
所述根据所述查询条件,在所述位图索引Memtable的当前分片主键范围内查询,得到所述当前分片主键范围的第一Memtable结果行集合,包括:
在所述位图索引Memtable的当前分片主键范围内,确定满足所述查询条件的行集合;
若满足所述查询条件的行集合中的当前行标记为删除,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,删除所述基线SSTable结果位图中所述当前行对应的位,否则,从所述行集合中删除所述当前行;
若满足所述查询条件的行集合中的当前行标记为插入,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,从所述行集合中删除所述当前行;
更新后的满足所述查询条件的行集合为所述第一Memtable结果行集合。
14.如权利要求9所述的位图索引的查询方法,进一步包括:
划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
当所述查询条件为各个所述位图索引的索引列的交集时,
所述根据查询条件,在多个所述位图索引中进行查询,得到查询结果,包括:
当各个所述位图索引的位图索引Memtable和新的位图索引转储SSTable中均不存在处于所述当前分片主键范围内的数据时,
根据所述查询条件,在各个所述位图索引的位图索引基线SSTable的当前分片主键范围内查询,得到各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图;
对各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图进行按位与运算,得到所述当前分片主键范围的第二基线SSTable结果位图;
根据所述第二基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第二基线SSTable结果行集合;其中,所述第二基线SSTable结果行集合为所述当前分片主键范围的第二最终结果行集合;
当任一所述位图索引的位图索引Memtable和新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,确定各个所述位图索引的当前分片主键范围的第一最终结果行集合;
确定所述当前分片主键范围的第二最终结果行集合为各个所述位图索引的当前分片主键范围的第一最终结果行集合的交集;
确定所述查询结果为各个所述分片主键范围的第二最终结果行集合的并集。
15.如权利要求9所述的位图索引的查询方法,进一步包括:
划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
当所述查询条件为各个所述位图索引的索引列的并集时,
所述根据查询条件,在多个所述位图索引中进行查询,得到查询结果,包括:
当各个所述位图索引的位图索引Memtable和新的位图索引转储SSTable中均不存在处于所述当前分片主键范围内的数据时,
根据所述查询条件,在各个所述位图索引的位图索引基线SSTable的当前分片主键范围内查询,得到各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图;
对各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图进行按位或运算,得到所述当前分片主键范围的第三基线SSTable结果位图;
根据所述第三基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第三基线SSTable结果行集合;其中,所述第三基线SSTable结果行集合为所述当前分片主键范围的第三最终结果行集合;
当任一所述位图索引的位图索引Memtable和新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,确定各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图、各个所述位图索引的当前分片主键范围的第一转储SSTable结果行集合和各个所述位图索引的当前分片主键范围的第一Memtable结果行集合;
对各个所述位图索引的当前分片主键范围的基线SSTable结果位图进行按位或运算,得到所述当前分片主键范围的第三基线SSTable结果位图;
确定当前位图索引的当前分片主键范围的第一转储SSTable结果行集合和所述当前位图索引的当前分片主键范围的第一Memtable结果行集合的并集,得到所述当前位图索引的当前分片主键范围的增量数据结果行集合;
确定各个所述位图索引的当前分片主键范围的增量数据结果行集合的并集,得到所述当前分片主键范围的增量数据结果行集合;
根据所述第三基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第三基线SSTable结果行集合;
确定所述当前分片主键范围的增量数据结果行集合与所述当前分片主键范围的第三基线SSTable结果行集合的并集,得到所述当前分片主键范围的第三最终结果行集合;
确定所述查询结果为各个所述分片主键范围的第三最终结果行集合的并集。
16.一种位图索引的写入装置,包括:
确定单元,用于根据更新数据,确定位图索引Memtable的更新行;
加锁单元,用于对所述位图索引Memtable的更新行添加行锁;
更新单元,用于根据所述更新数据,更新所述位图索引Memtable的更新行中的数据。
17.如权利要求16所述的位图索引的写入装置,
所述更新单元,用于确定所述更新数据的主表主键列的列值和索引列的列值;将所述更新数据的主表主键列的列值和索引列的列值,写入所述位图索引Memtable的更新行中。
18.一种位图索引的转储装置,包括:
确定单元,用于根据更新数据,确定位图索引Memtable的更新行;
加锁单元,用于对所述位图索引Memtable的更新行添加行锁;
更新单元,用于根据所述更新数据,更新所述位图索引Memtable的更新行中的数据;
释放单元,用于释放所述位图索引Memtable的更新行的行锁;
转储单元,用于将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中。
19.如权利要求18所述的位图索引的转储装置,
所述转储单元,用于冻结所述位图索引Memtable;按照所述新的位图索引转储SSTable的宏块格式,将冻结的所述位图索引Memtable中的数据写入所述新的位图索引转储SSTable中。
20.如权利要求19所述的位图索引的转储装置,
所述转储单元,用于根据索引列和主表主键列,合并旧的位图索引转储SSTable和冻结的所述位图索引Memtable的行;按照所述新的位图索引转储SSTable的宏块格式,将合并后的数据写入所述新的位图索引转储SSTable中。
21.一种位图索引的合并装置,包括:
确定单元,用于根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
加锁单元,用于对所述位图索引Memtable的更新行和所述主表Memtable的更新行添加行锁;
更新单元,用于根据所述更新数据,更新所述位图索引Memtable的更新行中的数据和所述主表Memtable的更新行中的数据;
释放单元,用于释放所述位图索引Memtable的更新行的行锁和所述主表Memtable的更新行的行锁;
转储单元,用于将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,将所述主表Memtable中的数据写入新的主表转储SSTable中;
合并单元,用于根据所述新的主表转储SSTable,确定位图索引基线SSTable中的数据。
22.如权利要求21所述的位图索引的合并装置,
所述合并单元,用于按照新的主表基线SSTable的宏块格式,将所述新的主表转储SSTable中的数据写入所述新的主表基线SSTable中;根据所述新的主表基线SSTable,生成所述位图索引基线SSTable的位图;按照所述位图索引基线SSTable的宏块格式,将所述位图索引基线SSTable的位图写入所述位图索引基线SSTable中。
23.如权利要求22所述的位图索引的合并装置,
所述合并单元,用于根据索引列和主表主键列,合并旧的主表基线SSTable和所述新的主表转储SSTable的行;按照所述新的主表基线SSTable的宏块格式,将合并后的数据写入所述新的主表基线SSTable中。
24.一种位图索引的查询装置,包括:
确定单元,用于根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;
加锁单元,用于对所述位图索引Memtable的更新行和所述主表Memtable的更新行添加行锁;
更新单元,用于根据所述更新数据,更新所述位图索引Memtable的更新行中的数据和所述主表Memtable的更新行中的数据;
释放单元,用于释放所述位图索引Memtable的更新行的行锁和所述主表Memtable的更新行的行锁;
转储单元,用于将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中,将所述主表Memtable中的数据写入新的主表转储SSTable中;
合并单元,用于将所述新的主表转储SSTable中的数据写入新的主表基线SSTable中;根据所述新的主表基线SSTable,确定位图索引基线SSTable中的数据;其中,所述位图索引Memtable、所述新的位图索引转储SSTable和所述位图索引基线SSTable构成一个位图索引;
查询单元,用于根据查询条件,在一个或多个所述位图索引中进行查询,得到查询结果。
25.如权利要求24所述的位图索引的查询装置,进一步包括:
划分单元,用于划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
所述查询单元,用于当所述位图索引Memtable和所述新的位图索引转储SSTable中不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图;根据所述第一基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第一基线SSTable结果行集合;其中,所述第一基线SSTable结果行集合为所述当前分片主键范围的第一最终结果行集合;
当所述位图索引Memtable或所述新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在所述位图索引基线SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一基线SSTable结果位图;根据所述查询条件,在所述新的位图索引转储SSTable的当前分片主键范围内查询,得到所述当前分片主键范围的第一转储SSTable结果行集合;根据所述查询条件,在所述位图索引Memtable的当前分片主键范围内查询,得到所述当前分片主键范围的第一Memtable结果行集合;根据所述第一基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第一基线SSTable结果行集合;确定所述第一基线SSTable结果行集合、所述第一转储SSTable结果行集合和所述第一Memtable结果行集合的并集,得到所述当前分片主键范围的第一最终结果行集合;
确定所述查询结果为各个所述分片主键范围的第一最终结果行集合的并集。
26.如权利要求25所述的位图索引的查询装置,
所述查询单元,用于在所述位图索引基线SSTable的当前分片主键范围内,确定满足所述查询条件的索引列的列值对应的位图;对满足所述查询条件的索引列的列值对应的位图进行按位或运算,得到所述第一基线SSTable结果位图。
27.如权利要求25所述的位图索引的查询装置,
所述查询单元,用于在所述新的位图索引转储SSTable的当前分片主键范围内,确定满足所述查询条件的行集合;若满足所述查询条件的行集合中的当前行标记为删除,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,删除所述当前分片主键范围的基线SSTable结果位图中所述当前行对应的位,否则,从所述行集合中删除所述当前行;若满足所述查询条件的行集合中的当前行标记为插入,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,从所述行集合中删除所述当前行;更新后的满足所述查询条件的行集合为所述第一转储SSTable结果行集合。
28.如权利要求25-27中任一所述的位图索引的查询装置,
所述查询单元,用于在所述位图索引Memtable的当前分片主键范围内,确定满足所述查询条件的行集合;若满足所述查询条件的行集合中的当前行标记为删除,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,删除所述基线SSTable结果位图中所述当前行对应的位,否则,从所述行集合中删除所述当前行;若满足所述查询条件的行集合中的当前行标记为插入,则查询所述新的主表基线SSTable是否存在所述当前行,如果是,从所述行集合中删除所述当前行;更新后的满足所述查询条件的行集合为所述第一Memtable结果行集合。
29.如权利要求24所述的位图索引的查询装置,进一步包括:
划分单元,用于划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
所述查询单元,用于当所述查询条件为各个所述位图索引的索引列的交集、各个所述位图索引的位图索引Memtable和新的位图索引转储SSTable中均不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在各个所述位图索引的位图索引基线SSTable的当前分片主键范围内查询,得到各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图;对各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图进行按位与运算,得到所述当前分片主键范围的第二基线SSTable结果位图;根据所述第二基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第二基线SSTable结果行集合;其中,所述第二基线SSTable结果行集合为所述当前分片主键范围的第二最终结果行集合;
当任一所述位图索引的位图索引Memtable和新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,确定各个所述位图索引的当前分片主键范围的第一最终结果行集合;确定所述当前分片主键范围的第二最终结果行集合为各个所述位图索引的当前分片主键范围的第一最终结果行集合的交集;
确定所述查询结果为各个所述分片主键范围的第二最终结果行集合的并集。
30.如权利要求24所述的位图索引的查询装置,进一步包括:
划分单元,用于划分所述新的主表基线SSTable的主键列的列值,得到至少两个分片主键范围;
所述查询单元,用于当所述查询条件为各个所述位图索引的索引列的并集、各个所述位图索引的位图索引Memtable和新的位图索引转储SSTable中均不存在处于所述当前分片主键范围内的数据时,根据所述查询条件,在各个所述位图索引的位图索引基线SSTable的当前分片主键范围内查询,得到各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图;对各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图进行按位或运算,得到所述当前分片主键范围的第三基线SSTable结果位图;根据所述第三基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第三基线SSTable结果行集合;其中,所述第三基线SSTable结果行集合为所述当前分片主键范围的第三最终结果行集合;
当任一所述位图索引的位图索引Memtable和新的位图索引转储SSTable中存在处于所述当前分片主键范围内的数据时,根据所述查询条件,确定各个所述位图索引的当前分片主键范围的第一基线SSTable结果位图、各个所述位图索引的当前分片主键范围的第一转储SSTable结果行集合和各个所述位图索引的当前分片主键范围的第一Memtable结果行集合;对各个所述位图索引的当前分片主键范围的基线SSTable结果位图进行按位或运算,得到所述当前分片主键范围的第三基线SSTable结果位图;确定当前位图索引的当前分片主键范围的第一转储SSTable结果行集合和所述当前位图索引的当前分片主键范围的第一Memtable结果行集合的并集,得到所述当前位图索引的当前分片主键范围的增量数据结果行集合;确定各个所述位图索引的当前分片主键范围的增量数据结果行集合的并集,得到所述当前分片主键范围的增量数据结果行集合;根据所述第三基线SSTable结果位图,查询所述新的主表基线SSTable,得到所述当前分片主键范围的第三基线SSTable结果行集合;确定所述当前分片主键范围的增量数据结果行集合与所述当前分片主键范围的第三基线SSTable结果行集合的并集,得到所述当前分片主键范围的第三最终结果行集合;
确定所述查询结果为各个所述分片主键范围的第三最终结果行集合的并集。
CN201910321209.0A 2019-04-19 2019-04-19 一种位图索引的写入/转储/合并/查询方法和装置 Active CN110059090B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910321209.0A CN110059090B (zh) 2019-04-19 2019-04-19 一种位图索引的写入/转储/合并/查询方法和装置
PCT/CN2020/071872 WO2020211492A1 (zh) 2019-04-19 2020-01-14 一种位图索引的写入/转储/合并/查询方法和装置
US16/818,476 US10909101B2 (en) 2019-04-19 2020-03-13 Updating and querying a bitmap index
US17/164,761 US11086835B2 (en) 2019-04-19 2021-02-01 Updating and querying a bitmap index

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910321209.0A CN110059090B (zh) 2019-04-19 2019-04-19 一种位图索引的写入/转储/合并/查询方法和装置

Publications (2)

Publication Number Publication Date
CN110059090A true CN110059090A (zh) 2019-07-26
CN110059090B CN110059090B (zh) 2020-11-03

Family

ID=67319949

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910321209.0A Active CN110059090B (zh) 2019-04-19 2019-04-19 一种位图索引的写入/转储/合并/查询方法和装置

Country Status (2)

Country Link
CN (1) CN110059090B (zh)
WO (1) WO2020211492A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704453A (zh) * 2019-10-15 2020-01-17 腾讯音乐娱乐科技(深圳)有限公司 一种数据查询方法、装置、存储介质及电子设备
CN110727685A (zh) * 2019-10-09 2020-01-24 苏州浪潮智能科技有限公司 一种基于Cassandra数据库的数据压缩方法、设备以及存储介质
WO2020211492A1 (zh) * 2019-04-19 2020-10-22 创新先进技术有限公司 一种位图索引的写入/转储/合并/查询方法和装置
US10909101B2 (en) 2019-04-19 2021-02-02 Advanced New Technologies Co., Ltd. Updating and querying a bitmap index
CN114253950A (zh) * 2022-02-28 2022-03-29 北京奥星贝斯科技有限公司 管理数据库的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266662B1 (en) * 1997-02-28 2001-07-24 Oracle Corporation Bitmap segmentation
CN103678556A (zh) * 2013-12-06 2014-03-26 华为技术有限公司 列式数据库处理的方法和处理设备
CN103714090A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 多索引数据库事务处理方法及数据库
CN104065636A (zh) * 2013-07-02 2014-09-24 腾讯科技(深圳)有限公司 数据处理方法和系统
CN104866608A (zh) * 2015-06-05 2015-08-26 中国人民大学 一种数据仓库中基于连接索引的查询优化方法
CN106874437A (zh) * 2017-02-04 2017-06-20 中国人民大学 面向数据库一体机的内存数据仓库行列存储转换实现方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703787B2 (en) * 2014-03-25 2017-07-11 Yokogawa Electric Corporation Data storage management apparatus and data storage management method
CN109165259B (zh) * 2018-08-27 2021-12-21 深圳市大迈科技有限公司 基于网络附属存储的索引表更新方法、处理器及存储装置
CN110059090B (zh) * 2019-04-19 2020-11-03 创新先进技术有限公司 一种位图索引的写入/转储/合并/查询方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266662B1 (en) * 1997-02-28 2001-07-24 Oracle Corporation Bitmap segmentation
CN103714090A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 多索引数据库事务处理方法及数据库
CN104065636A (zh) * 2013-07-02 2014-09-24 腾讯科技(深圳)有限公司 数据处理方法和系统
CN103678556A (zh) * 2013-12-06 2014-03-26 华为技术有限公司 列式数据库处理的方法和处理设备
CN104866608A (zh) * 2015-06-05 2015-08-26 中国人民大学 一种数据仓库中基于连接索引的查询优化方法
CN106874437A (zh) * 2017-02-04 2017-06-20 中国人民大学 面向数据库一体机的内存数据仓库行列存储转换实现方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020211492A1 (zh) * 2019-04-19 2020-10-22 创新先进技术有限公司 一种位图索引的写入/转储/合并/查询方法和装置
US10909101B2 (en) 2019-04-19 2021-02-02 Advanced New Technologies Co., Ltd. Updating and querying a bitmap index
CN110727685A (zh) * 2019-10-09 2020-01-24 苏州浪潮智能科技有限公司 一种基于Cassandra数据库的数据压缩方法、设备以及存储介质
CN110727685B (zh) * 2019-10-09 2022-04-22 苏州浪潮智能科技有限公司 一种基于Cassandra数据库的数据压缩方法、设备以及存储介质
CN110704453A (zh) * 2019-10-15 2020-01-17 腾讯音乐娱乐科技(深圳)有限公司 一种数据查询方法、装置、存储介质及电子设备
CN114253950A (zh) * 2022-02-28 2022-03-29 北京奥星贝斯科技有限公司 管理数据库的方法和装置

Also Published As

Publication number Publication date
CN110059090B (zh) 2020-11-03
WO2020211492A1 (zh) 2020-10-22

Similar Documents

Publication Publication Date Title
CN110059090A (zh) 一种位图索引的写入/转储/合并/查询方法和装置
KR102125177B1 (ko) 블록체인 기반 데이터 처리 방법 및 장치
CN110096528A (zh) 一种分布式系统中生成序列的方法、装置及系统
CN107402824A (zh) 一种数据处理的方法及装置
JP2020510892A (ja) ブロックチェーンベースのデータ処理方法および装置
CN107622080B (zh) 一种数据处理方法及设备
CN109033127A (zh) 一种同步数据校验方法、装置以及设备
CN107016039A (zh) 数据库写入的方法和数据库系统
CN111158650B (zh) 报表模板、报表的生成方法、装置
CN108536613A (zh) 数据清理方法、装置、及服务器
CN108959330A (zh) 一种数据库的处理、数据查询方法及设备
CN107369192B (zh) 一种连接关系处理方法及装置
CN116341642A (zh) 一种数据处理的方法、装置、存储介质及电子设备
CN115311399A (zh) 图像渲染方法、装置、电子设备以及存储介质
CN110083602A (zh) 一种基于hive表的数据存储及数据处理的方法及装置
CN115563116A (zh) 一种数据库表扫描方法、装置以及设备
CN110019975A (zh) 随机游走、基于集群的随机游走方法、装置以及设备
CN109614388A (zh) 一种预算扣减方法和装置
CN110032565A (zh) 一种生成统计信息的方法、系统以及电子设备
CN107645541B (zh) 数据存储方法、装置及服务器
CN110502551A (zh) 数据读写方法、系统及架构组件
CN115098271B (zh) 一种多线程数据处理方法、装置、设备及介质
CN107196711B (zh) 信号传输的方法及装置
CN109753351A (zh) 一种限时任务处理方法、装置、设备及介质
CN117171401B (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
TA01 Transfer of patent application right

Effective date of registration: 20200929

Address after: 27 Hospital Road, George Town, Grand Cayman ky1-9008

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: 27 Hospital Road, George Town, Grand Cayman ky1-9008

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200929

Address after: 27 Hospital Road, George Town, Grand Cayman ky1-9008

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20210129

Address after: 801-10, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: Ant financial (Hangzhou) Network Technology Co.,Ltd.

Address before: 27 Hospital Road, George Town, Grand Cayman ky1-9008

Patentee before: Innovative advanced technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210908

Address after: 100020 unit 02, 901, floor 9, unit 1, building 1, No.1, East Third Ring Middle Road, Chaoyang District, Beijing

Patentee after: Beijing Aoxing Beisi Technology Co.,Ltd.

Address before: 801-10, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province 310000

Patentee before: Ant financial (Hangzhou) Network Technology Co.,Ltd.

TR01 Transfer of patent right