【技术实现步骤摘要】
一种位图索引的写入/转储/合并/查询方法和装置
本专利技术涉及计算机
,特别涉及一种位图索引的写入/转储/合并/查询方法和装置。
技术介绍
位图索引,是一种基于位图建立的数据库索引,适用于有大量重复值的列查询。在实际应用场景中,随着数据库中存储的数据不断更新,为了适应查询的需求,位图索引也需要随之更新。目前,在对位图索引进行更新时,会把更新行所在的数据块整体加锁。通常数据块包含成百上千行的数据,更新位图索引中单行会导致整个数据块的其他不相关行被锁住,导致无法对该数据块中的其他行进行更新。因此,现有的方法并发更新性能低。
技术实现思路
鉴于此,本专利技术实施例提供了一种位图索引的写入/转储/合并/查询方法和装置,能够提高并发更新性能。第一方面,本专利技术实施例提供了一种位图索引的写入方法,包括:根据更新数据,确定位图索引Memtable的更新行;对所述位图索引Memtable的更新行添加行锁;根据所述更新数据,更新所述位图索引Memtable的更新行中的数据。第二方面,本专利技术实施例提供了一种位图索引的转储方法,包括:根据更新数据,确定位图索引Memtable的更新行;对所述位图索引Memtable的更新行添加行锁;根据所述更新数据,更新所述位图索引Memtable的更新行中的数据;释放所述位图索引Memtable的更新行的行锁;将所述位图索引Memtable中的数据写入新的位图索引转储SSTable中。第三方面,本专利技术实施例提供了一种位图索引的合并方法,包括:根据更新数据,确定位图索引Memtable的更新行和主表Memtable的更新行;对所述位 ...
【技术保护点】
1.一种位图索引的写入方法,包括:根据更新数据,确定位图索引Memtable的更新行;对所述位图索引Memtable的更新行添加行锁;根据所述更新数据,更新所述位图索引Memtable的更新行中的数据。
【技术特征摘要】
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结果位图,查询所述新的主...
【专利技术属性】
技术研发人员:谢振江,赵裕众,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。