[发明专利]多属性列的存储、检索方法和装置以及电子设备有效
申请号: | 201811004784.X | 申请日: | 2018-08-30 |
公开(公告)号: | CN110874358B | 公开(公告)日: | 2023-05-05 |
发明(设计)人: | 王联辉;潘岳;郑博文;张包峰;张清伟;张浩然 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 广州铸智知识产权代理有限公司 44886 | 代理人: | 徐瑞红 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 属性 存储 检索 方法 装置 以及 电子设备 | ||
本发明实施例提供了一种多属性列的存储、检索方法和装置以及电子设备。该存储方法包括:将多属性列中每一次写入的至少一个数据对,按写入顺序排成一行,每个所述数据对由一个属性及其对应的属性值组成;将所述多属性列中至少一次写入的至少一行数据对,按列组成数个子列;为每个所述子列建立索引;存储所述子列。本发明实施例将多属性列中的属性及属性值按列组成子列,通过为各子列建立索引并存储,能够克服现有技术的缺陷,与第一种存储方式相比,便于数据检索时提高检索效率及速度;与第二种存储方式相比,尤其适用于属性数目不固定的多属性列,并且针对属性稀疏的情况,能够提高存储空间的利用率,避免存储资源浪费。
技术领域
本发明涉及数据库技术领域,尤其涉及一种多属性列的存储、检索方法和装置以及电子设备。
背景技术
在面向列式存储(Column Store)中,当某一列数据具有多个不同属性的属性值(例如,某个学生的成绩包括:数学90、语文80、英语90等,其中,数学、语文、英语为成绩列的不同属性,其对应的属性值分别为90、80、90)时,则将该列定义为多属性列。
在现有技术中,针对多属性列,一般有两种存储方式:第一种存储方式是,将多属性列中的所有数据作为一列进行存储,这种存储方式在存储数据时比较灵活,也能够更好地利用存储空间;第二种存储方式是,将多属性列中属于同一个属性的数据(属性值)单独存储为一列,这种存储方式在数据检索时较为方便。
发明人在实现本发明的过程中,发现现有技术至少存在如下问题:若按照第一种存储方式进行存储,在对多属性列进行检索时,需要扫描整个列的所有属性记录,从而使得检索时间增大,降低了检索效率;而对于第二种存储方式,在存储方面仅适用于多属性列中的属性数目(即,多属性列的列数目)固定的情形,如果不断变化的表数据中某多属性列中的属性数目不固定,则无法预先设置列的存储结构,从而无法存储数据,另一方面,如果多属性列中的某个或某些属性比较稀疏(即,该属性所对应的属性值的个数较少),则,单独为该属性设置的存储空间的利用率较低,从而造成了存储资源浪费。
发明内容
本发明实施例提供一种多属性列的存储、检索方法和装置以及电子设备,以解决现有技术中多属性列的存储结构固定、存储空间利用率低以及检索效率低的缺陷。
为达到上述目的,本发明实施例提供了一种多属性列的存储方法,包括:
将多属性列中每一次写入的至少一个数据对,按写入顺序排成一行,每个所述数据对由一个属性及其对应的属性值组成;
将所述多属性列中至少一次写入的至少一行数据对,按列组成数个子列,所述子列包括由所述属性组成的属性子列和由与所述属性对应的所述属性值组成的属性值子列;
为每个所述子列建立索引;
存储所述子列。
本发明实施例还提供了一种针对上述存储方法所存储的多属性列的检索方法,包括:
读取所述多属性列中各子列的索引;
在所述属性子列及对应的所述属性值子列的索引中,获取符合检索条件的行标识;
根据获取到的所述行标识,读取所述行标识所标识的数据。
本发明实施例还提供了一种多属性列的存储装置,包括:
排序模块,用于将多属性列中每一次写入的至少一个数据对,按写入顺序排成一行,每个所述数据对由一个属性及其对应的属性值组成;
子列形成模块,用于将所述多属性列中至少一次写入的至少一行数据对,按列组成数个子列,所述子列包括由所述属性组成的属性子列和由与所述属性对应的所述属性值组成的属性值子列;
索引建立模块,用于为每个所述子列建立索引;
存储模块,用于存储所述子列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811004784.X/2.html,转载请声明来源钻瓜专利网。