CN107273483B - 稀疏数据的访问方法及*** - Google Patents

稀疏数据的访问方法及*** Download PDF

Info

Publication number
CN107273483B
CN107273483B CN201710439233.5A CN201710439233A CN107273483B CN 107273483 B CN107273483 B CN 107273483B CN 201710439233 A CN201710439233 A CN 201710439233A CN 107273483 B CN107273483 B CN 107273483B
Authority
CN
China
Prior art keywords
sparse
data
column
querying condition
access
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.)
Active
Application number
CN201710439233.5A
Other languages
English (en)
Other versions
CN107273483A (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.)
Guizhou Jingjie Information Technology Co Ltd
Original Assignee
Guizhou Jingjie Information Technology Co 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 Guizhou Jingjie Information Technology Co Ltd filed Critical Guizhou Jingjie Information Technology Co Ltd
Priority to CN201710439233.5A priority Critical patent/CN107273483B/zh
Publication of CN107273483A publication Critical patent/CN107273483A/zh
Application granted granted Critical
Publication of CN107273483B publication Critical patent/CN107273483B/zh
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/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

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

Abstract

本发明提供了一种稀疏数据的访问方法及***,方法为:在数据库中对数据建立事实表时,创建稀疏矩阵,稀疏矩阵由多个稀疏列组成;在稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列,并将被标记的稀疏列作为主键的第一列;获取查询条件,根据查询条件在事实表中进行稀疏列的查询:当查询条件中对应的稀疏列为有效数据,将查询条件中对应的稀疏列作为限定查询条件;当查询条件中对应的稀疏列为无效数据,重新返回步骤S1;根据查询条件和限定查询条件,实现查询条件中对应的稀疏列所对应数据的访问。本发明采用了对稀疏列进行标记的方式,并且不需要二级索引,直接使用基本表,可以在持续数据输入的情况下,高效地对数据进行过滤读取。

Description

稀疏数据的访问方法及***
技术领域
本发明涉及数据访问技术领域,尤其涉及稀疏数据的访问方法及***。
背景技术
日志文件广泛应用于各种服务中,如网页服务器,数据库和应用服务器。日志用来记录不同类型的信息,这些信息拥有不同的重要性等级。日志可以用于调试和排错。通常情况下,日志文件集中保存在网络文件***中,但也可以分散保存(每个服务器包含应用程序自身运行所产生的日志)。能够从各种日志中有效地提取有用信息对于开发/调试应用,以及确保生产环境的正确运行,都是一项十分重要的任务。然而日志通常是文本文件,因此搜索和分析日志就很困难并且要花费高昂的代价。首先要将日志文件存储到数据库的结构化或半结构化的表里。再通过查询数据库,运用复杂的算法来进行模式识别、统计分析或机器学习,从而获取所需要的信息。
目前现有日志分析***中,都采用反数据库范式的设计。和传统的数据库***的三范式设计不同,日志表被设计为单表,以便保证日志的加载速度。因为日志随时随地产生,且数据巨大,需要不间断地加载到分析***中,如果采用第三范式的设计方法,将影响加载数据。而采用单表则有比较好的加载性能,因为不需要更新和管理多张相互关联的表,但这样做的代价就是会导致表非常巨大。因此现有日志分析***,对日志信息并没有采用特殊的存储和访问方法。而日志的有用信息是相当稀疏的,导致对日志的检索非常低效。
一般情况下,在海量的日志信息中,只有很少的日志条目含有有用信息。例如,跟踪网页服务器流量的日志,其中只有极小一部分含有恶意软件行为相关的信息,或者含有其他特定网页搜索行为的相关日志条目。相对所有的网页流量而言,这些恶意软件和网页搜索行为是极少的(我们称之为稀疏数据),但他们仍然具有重要的意义(因为这些极有可能就是客户要对某些案例做分析或查询所需要的信息)。第二个例子是,设想下SQL查询数据库的相关日志。数据库里一张表的一列记录了每条SQL语句的相关日志,比如SQL错误信息。如果这条SQL执行成功则记为null,否则存储出错信息。由于大多数SQL语句会执行成功,并不会有相关错误信息,这个列的数据就会是稀疏的(几乎都是NULL),但SQL出现错误的语义价值肯定是很高的,因为这些信息正是用户所关注的。
通过上述两种情况,可以看到,稀疏数据列含有相当重要的语义信息,以它们作为查询条件的语句肯定是100%存在的。目前主流数据库均支持二级索引,但传统上基于BTree的二级索引无法高效地支持稀疏检索。
现有技术中,对于这个问题的对策是,在这个稀疏列上创建二级索引。然而当表非常大而且数据流入速率非常高时,索引不是一个好的解决方法,因为索引的更新会降低数据流人速率。但如果没有索引或其它措施,以稀疏数据为过滤条件对含有日志信息的表执行的查询,将会进行全表扫描(或仅受限于日期范围的扫描),进而导致非常慢的访问速度。
因此,现有技术中的缺陷是,对于稀疏数据的访问,通过在稀疏列上创建二级索引的方式实现数据的访问,由于索引的更新会降低数据流人速率,以稀疏数据为过滤条件对含有日志信息的表执行查询时,将会进行全表扫描,导致访问速度非常慢。
发明内容
针对上述技术问题,本发明提供一种稀疏数据的访问方法及***,采用了对稀疏列进行标记的方式,并且不需要二级索引,直接使用基本表,可以在持续数据输入的情况下,高效地对数据进行过滤读取。
为解决上述技术问题,本发明提供的技术方案是:
第一方面,本发明提供一种稀疏数据的访问方法,包括:
步骤S1,在数据库中对数据建立事实表时,创建稀疏矩阵,所述稀疏矩阵由多个稀疏列组成;
步骤S2,在所述稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列,并将所述被标记的稀疏列作为主键的第一列;
步骤S3,获取查询条件,根据所述查询条件在所述事实表中进行稀疏列的查询:
当所述查询条件中对应的稀疏列为有效数据,将所述查询条件中对应的稀疏列作为限定查询条件;
当所述查询条件中对应的稀疏列为无效数据,重新返回所述步骤S1;
步骤S4,根据所述查询条件和所述限定查询条件,实现所述查询条件中对应的稀疏列所对应数据的访问。
本发明提供的稀疏数据的访问方法,其技术方案为:在数据库中对数据建立事实表时,创建稀疏矩阵,所述稀疏矩阵由多个稀疏列组成;在所述稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列,并将所述被标记的稀疏列作为主键的第一列;获取查询条件,根据所述查询条件在所述事实表中进行稀疏列的查询:当所述查询条件中对应的稀疏列为有效数据,将所述查询条件中对应的稀疏列作为限定查询条件;当所述查询条件中对应的稀疏列为无效数据,重新返回所述步骤S1;根据所述查询条件和所述限定查询条件,实现所述查询条件中对应的稀疏列所对应数据的访问。
本发明提供的稀疏数据的访问方法,采用了对稀疏列进行标记的方式,并且不需要二级索引,直接使用基本表,可以在持续数据输入的情况下,高效地对数据进行过滤读取。
进一步地,在所述数据库中进行数据访问的过程中,通过固定大小的值为null的数据类型保存所述被标记的稀疏列,所述被标记的稀疏列对应的固定类型的值不大于null值。
进一步地,在所述数据库中进行数据访问的过程中,通过可变长度字符串数据类型保存固定类型的值大于所述null值的数据。
进一步地,所述步骤S3中,当所述查询条件中对应的稀疏列不包含所述被标记的稀疏列时,通过编译器给出警告提示。
第二方面,本发明提供了一种稀疏数据的访问***,包括:
稀疏矩阵创建模块,用于在数据库中对数据建立事实表时,创建稀疏矩阵,所述稀疏矩阵由多个稀疏列组成;
稀疏列标记模块,用于在所述稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列,并将所述被标记的稀疏列作为主键的第一列;
稀疏列查询模块,用于获取查询条件,根据所述查询条件在所述事实表中进行稀疏列的查询:
当所述查询条件中对应的稀疏列为有效数据,将所述查询条件中对应的稀疏列作为限定查询条件;
当所述查询条件中对应的稀疏列为无效数据,重新返回所述稀疏矩阵创建模块;
稀疏数据访问模块,用于根据所述查询条件和所述限定查询条件,实现所述查询条件中对应的稀疏列所对应数据的访问。
本发明提供的稀疏数据的访问***,其技术方案为:通过稀疏矩阵创建模块,在数据库中对数据建立事实表时,创建稀疏矩阵,所述稀疏矩阵由多个稀疏列组成;通过稀疏列标记模块,在所述稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列,并将所述被标记的稀疏列作为主键的第一列;通过稀疏列查询模块,用于获取查询条件,根据所述查询条件在所述事实表中进行稀疏列的查询:当所述查询条件中对应的稀疏列为有效数据,将所述查询条件中对应的稀疏列作为限定查询条件;当所述查询条件中对应的稀疏列为无效数据,重新返回所述稀疏矩阵创建模块;通过稀疏数据访问模块,根据所述查询条件和所述限定查询条件,实现所述查询条件中对应的稀疏列所对应数据的访问。
本发明提供的稀疏数据的访问***,采用了对稀疏列进行标记的方式,并且不需要二级索引,直接使用基本表,可以在持续数据输入的情况下,高效地对数据进行过滤读取。
进一步地,还包括数据存储模块,用于在所述数据库中进行数据访问的过程中,通过固定大小的值为null的数据类型保存所述被标记的稀疏列,所述被标记的稀疏列对应的固定类型的值不大于null值。
进一步地,所述数据存储模块,用于在所述数据库中进行数据访问的过程中,通过可变长度字符串数据类型保存固定类型的值大于所述null值的数据。
进一步地,所述稀疏列查询模块中,当所述查询条件中对应的稀疏列不包含所述被标记的稀疏列时,通过编译器给出警告提示。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。
图1示出了本发明实施例所提供的一种稀疏数据的访问方法的流程图;
图2示出了本发明实施例所提供的一种稀疏数据的访问***的示意图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。
实施例一
图1示出了本发明实施例所提供的一种稀疏数据的访问方法的流程图;如图1所示,实施例一提供的一种稀疏数据的访问方法,包括:
步骤S1,在数据库中对数据建立事实表时,创建稀疏矩阵,稀疏矩阵由多个稀疏列组成;
步骤S2,在稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列_HAS_SPARSE_DATA_CHAR(1),并将被标记的稀疏列作为主键的第一列;如果定义了_SALT_和_DIVISION_BY_则放在它们之后。
本实施例中,假设数据存储时是按主键(或由多列组成的主键)来排序的,而且数据库具备像Trafodion MDAM(多维访问方法)的特性。关于这一特性的大体描述如下:
假设表T有4列:A,B,C,D,主键由两列(A,B)组成,MDAM将保证对于如下查询:
SELECT*FROM T WHERE B=3;
如果列A中数据的基数cardinality不是特别高的话,生成的查询条件会在B=3的行对A的所有可能的值做随机访问,而不是进行全表扫描,因为A并不是查询条件。这在没有MDAM时,是会进行全表扫描的。将被标记的稀疏列作为主键的第一列,可在数据访问时,首先对主键的第一列进行访问,加快了的访问速度。
需要说明的是,本方法并不一定需要数据库具备像MDAM这样的特性。例如,如果存储层使用的是ORC格式,则本方法可以充分利用其谓语下推和列数据有序的特性。
步骤S3,获取查询条件,根据查询条件在事实表中进行稀疏列的查询:
当查询条件中对应的稀疏列为有效数据,即查询条件中对应的稀疏列中的数据有效,不是not null,换句话说,查询条件中包含被标记的稀疏列时,将查询条件中对应的稀疏列作为限定查询条件;
当查询条件中对应的稀疏列为无效数据,即查询条件中对应的稀疏列中没有有效数据,换句话说,查询条件中不包含被标记的稀疏列时,重新返回步骤S1;
步骤S4,根据查询条件和限定查询条件,实现查询条件中对应的稀疏列所对应数据的访问。
本发明提供的稀疏数据的访问方法,其技术方案为:在数据库中对数据建立事实表时,创建稀疏矩阵,稀疏矩阵由多个稀疏列组成;在稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列,并将被标记的稀疏列作为主键的第一列;获取查询条件,根据查询条件在事实表中进行稀疏列的查询:当查询条件中对应的稀疏列为有效数据,将查询条件中对应的稀疏列作为限定查询条件;当查询条件中对应的稀疏列为无效数据,重新返回步骤S1;根据查询条件和限定查询条件,实现查询条件中对应的稀疏列所对应数据的访问。
本发明提供的稀疏数据的访问方法,采用了对稀疏列进行标记的方式,并且不需要二级索引,直接使用基本表,可以在持续数据输入的情况下,高效地对数据进行过滤读取。
其中,步骤S3,具体为:
当输入的一行数据,即查询条件中对应的稀疏列数据,当该数据在稀疏列上的值是有效数据(not null),则将这一行的_HAS_SPARSE_DATA_设为‘T’,否则设为‘F’;即查询条件中对应的稀疏列为被标记的稀疏列时,限定查询条件为“T”,否则为“F”。
需要说明的是,采用这种方式,只需要T/F两种取值,这样可以保证_HAS_SPARSE_DATA_的基数cardinality始终为2。而不需要用特殊的编码技术,比如比特位图等技术来表示表的哪一列有值,仅仅用T表示某个稀疏列上有值即可。采用特殊编码往往会适得其反,因为会增加此列的基数(cardinality)从而影响MDAM多维存取存储器。另外,采用比特位图这类位运算,无法转换为范围表达式,而采用T/F两种布尔值的表示方法已经足够,可以根据数据是否存在稀疏列上有值进行不同的分区。
通过上述限定查询条件的设置,当查询语句的条件中包含被标记的稀疏列时,自动在查询条件中加入AND_HAS_SPARSE_DATA_=‘T’。此时数据库仅访问_HAS_SPARSE_DATA_=‘T’的行,也就是稀疏列中包含有效数据的行,无需进行多行扫描,因此可以快速响应,对并行处理和查询整个数据集的要求相当低。
优选地,在数据库中进行数据访问的过程中,通过固定大小的值为null的数据类型保存被标记的稀疏列,被标记的稀疏列对应的固定类型的值不大于null值。
使用固定大小的值可为null的数据类型来保存稀疏数据,而不使用VARCHAR可变长度字符串这种数据类型。
例如。对于TIMESTAMP(6)类型,稀疏数据依然占用7字节,因为TIMESTAMP(6)在数据库中占有固定大小的空间,7字节。然而空的VARCHAR并不占用字节。在数据库中,行的大小与扫描表的性能息息相关,所以固定大小的稀疏数据可以被转换为字符串,VARCHAR,然后再转换回来。对于稀疏数据,这样可以大量节省存储空间,并提高访问的效率。
优选地,在数据库中进行数据访问的过程中,通过可变长度字符串数据类型保存固定类型的值大于null值的数据。
而对于数据的固定类型的大小大于null VARCHAR,即固定大小的值可为null的数据类型,则后台程序将底层存储类型改为VARCHAR。
优选地,步骤S3中,当查询条件中对应的稀疏列不包含被标记的稀疏列时,通过编译器给出警告提示。
通过编译器给出的警告提示,可及时提醒用户。
优选地,本实施例中的稀疏数据的访问方法的设计和实现如果完全由应用程序实现会非常繁琐。于是我们将上面的操作写到DBMS后台,让这些操作对使用者透明。
第二方面,图2示出了本发明实施例所提供的一种稀疏数据的访问***的示意图,参见图2,本实施例提供了一种稀疏数据的访问***10,包括:
稀疏矩阵创建模块101,用于在数据库中对数据建立事实表时,创建稀疏矩阵,稀疏矩阵由多个稀疏列组成;
稀疏列标记模块102,用于在稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列_HAS_SPARSE_DATA_CHAR(1),并将被标记的稀疏列作为主键的第一列;如果定义了_SALT_和_DIVISION_BY_则放在它们之后。
本实施例中,假设数据存储时是按主键(或由多列组成的主键)来排序的,而且数据库具备像Trafodion MDAM(多维访问方法)的特性。关于这一特性的大体描述如下:
假设表T有4列:A,B,C,D,主键由两列(A,B)组成,MDAM将保证对于如下查询:
SELECT*FROM T WHERE B=3;
如果列A中数据的基数cardinality不是特别高的话,生成的查询条件会在B=3的行对A的所有可能的值做随机访问,而不是进行全表扫描,因为A并不是查询条件。这在没有MDAM时,是会进行全表扫描的。将被标记的稀疏列作为主键的第一列,可在数据访问时,首先对主键的第一列进行访问,加快了的访问速度。
需要说明的是,本方法并不一定需要数据库具备像MDAM这样的特性。例如,如果存储层使用的是ORC格式,则本方法可以充分利用其谓语下推和列数据有序的特性。
稀疏列查询模块103,用于获取查询条件,根据查询条件在事实表中进行稀疏列的查询:
当查询条件中对应的稀疏列为有效数据,即查询条件中对应的稀疏列中的数据有效,不是not null,将查询条件中对应的稀疏列作为限定查询条件;
当查询条件中对应的稀疏列为无效数据,即查询条件中对应的稀疏列中没有有效数据,重新返回稀疏矩阵创建模块;
稀疏数据访问模块104,用于根据查询条件和限定查询条件,实现查询条件中对应的稀疏列所对应数据的访问。
本发明提供的稀疏数据的访问***10,其技术方案为:通过稀疏矩阵创建模块101,在数据库中对数据建立事实表时,创建稀疏矩阵,稀疏矩阵由多个稀疏列组成;通过稀疏列标记模块102,在稀疏矩阵中至少对一个稀疏列进行标记,得到被标记的稀疏列,并将被标记的稀疏列作为主键的第一列;通过稀疏列查询模块103,用于获取查询条件,根据查询条件在事实表中进行稀疏列的查询:当查询条件中对应的稀疏列为被标记的稀疏列,将被标记的稀疏列作为限定查询条件;当查询条件中对应的稀疏列不包含被标记的稀疏列,重新返回稀疏矩阵创建模块;通过稀疏数据访问模块104,根据查询条件和限定查询条件,实现查询条件中对应的稀疏列所对应数据的访问。
本发明提供的稀疏数据的访问***10,采用了对稀疏列进行标记的方式,并且不需要二级索引,直接使用基本表,可以在持续数据输入的情况下,高效地对数据进行过滤读取。
其中,步骤S3,具体为:
当输入的一行数据,即查询条件中对应的稀疏列数据,当该数据在稀疏列上的值是有效数据(not null),则将这一行的_HAS_SPARSE_DATA_设为‘T’,否则设为‘F’;即查询条件中对应的稀疏列为被标记的稀疏列时,限定查询条件为“T”,否则为“F”。
需要说明的是,采用这种方式,只需要T/F两种取值,这样可以保证_HAS_SPARSE_DATA_的基数cardinality始终为2。而不需要用特殊的编码技术,比如比特位图等技术来表示表的哪一列有值,仅仅用T表示某个稀疏列上有值即可。采用特殊编码往往会适得其反,因为会增加此列的基数(cardinality)从而影响MDAM多维存取存储器。另外,采用比特位图这类位运算,无法转换为范围表达式,而采用T/F两种布尔值的表示方法已经足够,可以根据数据是否存在稀疏列上有值进行不同的分区。
通过上述限定查询条件的设置,当查询语句的条件中包含被标记的稀疏列时,自动在查询条件中加入AND_HAS_SPARSE_DATA_=‘T’。此时数据库仅访问_HAS_SPARSE_DATA_=‘T’的行,也就是稀疏列中包含有效数据的行,无需进行多行扫描,因此可以快速响应,对并行处理和查询整个数据集的要求相当低。
优选地,还包括数据存储模块,用于在数据库中进行数据访问的过程中,通过固定大小的值为null的数据类型保存被标记的稀疏列,被标记的稀疏列对应的固定类型的值不大于null值。
使用固定大小的值可为null的数据类型来保存稀疏数据,而不使用VARCHAR可变长度字符串这种数据类型。
例如:对于TIMESTAMP(6)类型,稀疏数据依然占用7字节,因为TIMESTAMP(6)在数据库中占有固定大小的空间,7字节。然而空的VARCHAR并不占用字节。在数据库中,行的大小与扫描表的性能息息相关,所以固定大小的稀疏数据可以被转换为字符串,VARCHAR,然后再转换回来。对于稀疏数据,这样可以大量节省存储空间,并提高访问的效率。
优选地,数据存储模块,用于在数据库中进行数据访问的过程中,通过可变长度字符串数据类型保存固定类型的值大于null值的数据。
而对于数据的固定类型的大小大于null VARCHAR,即固定大小的值可为null的数据类型,则后台程序将底层存储类型改为VARCHAR。
优选地,稀疏列查询模块103中,当查询条件中对应的稀疏列不包含被标记的稀疏列时,通过编译器给出警告提示。
通过编译器给出的警告提示,可及时提醒用户。
优选地,本实施例中的稀疏数据的访问方法的设计和实现如果完全由应用程序实现会非常繁琐。于是我们将上面的操作写到DBMS后台,让这些操作对使用者透明。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

Claims (8)

1.一种稀疏数据的访问方法,其特征在于,包括:
步骤S1,在数据库中对数据建立事实表时,创建稀疏矩阵,所述稀疏矩阵由多个稀疏列组成;
步骤S2,对所述稀疏矩阵中稀疏列进行标记,得到被标记的稀疏列,并将所述被标记的稀疏列作为主键的第一列;
步骤S3,获取查询条件,根据所述查询条件在所述事实表中进行稀疏列的查询:
当所述查询条件中对应的稀疏列为有效数据,将所述查询条件中对应的稀疏列作为限定查询条件;
当所述查询条件中对应的稀疏列为无效数据,重新返回所述步骤S1;
步骤S4,根据所述查询条件和所述限定查询条件,实现所述查询条件中对应的稀疏列所对应数据的访问。
2.根据权利要求1所述的稀疏数据的访问方法,其特征在于,
在所述数据库中进行数据访问的过程中,通过固定大小的值为null的数据类型保存所述被标记的稀疏列,所述被标记的稀疏列对应的固定类型的值不大于null值。
3.根据权利要求2所述的稀疏数据的访问方法,其特征在于,
在所述数据库中进行数据访问的过程中,通过可变长度字符串数据类型保存固定类型的值大于所述null值的数据。
4.根据权利要求1所述的稀疏数据的访问方法,其特征在于,
所述步骤S3中,当所述查询条件中对应的稀疏列不包含所述被标记的稀疏列时,通过编译器给出警告提示。
5.稀疏数据的访问***,其特征在于,包括:
稀疏矩阵创建模块,用于在数据库中对数据建立事实表时,创建稀疏矩阵,所述稀疏矩阵由多个稀疏列组成;
稀疏列标记模块,用于对所述稀疏矩阵中稀疏列进行标记,得到被标记的稀疏列,并将所述被标记的稀疏列作为主键的第一列;
稀疏列查询模块,用于获取查询条件,根据所述查询条件在所述事实表中进行稀疏列的查询:
当所述查询条件中对应的稀疏列为有效数据,将所述查询条件中对应的稀疏列作为限定查询条件;
当所述查询条件中对应的稀疏列为无效数据,重新返回所述稀疏矩阵创建模块;
稀疏数据访问模块,用于根据所述查询条件和所述限定查询条件,实现所述查询条件中对应的稀疏列所对应数据的访问。
6.根据权利要求5所述的稀疏数据的访问***,其特征在于,
还包括数据存储模块,用于在所述数据库中进行数据访问的过程中,通过固定大小的值为null的数据类型保存所述被标记的稀疏列,所述被标记的稀疏列对应的固定类型的值不大于null值。
7.根据权利要求6所述的稀疏数据的访问***,其特征在于,
所述数据存储模块,用于在所述数据库中进行数据访问的过程中,通过可变长度字符串数据类型保存固定类型的值大于所述null值的数据。
8.根据权利要求5所述的稀疏数据的访问***,其特征在于,
所述稀疏列查询模块中,当所述查询条件中对应的稀疏列不包含所述被标记的稀疏列时,通过编译器给出警告提示。
CN201710439233.5A 2017-06-06 2017-06-06 稀疏数据的访问方法及*** Active CN107273483B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710439233.5A CN107273483B (zh) 2017-06-06 2017-06-06 稀疏数据的访问方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710439233.5A CN107273483B (zh) 2017-06-06 2017-06-06 稀疏数据的访问方法及***

Publications (2)

Publication Number Publication Date
CN107273483A CN107273483A (zh) 2017-10-20
CN107273483B true CN107273483B (zh) 2019-11-05

Family

ID=60066141

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710439233.5A Active CN107273483B (zh) 2017-06-06 2017-06-06 稀疏数据的访问方法及***

Country Status (1)

Country Link
CN (1) CN107273483B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111444165B (zh) * 2019-01-16 2022-12-02 苏宁易购集团股份有限公司 用于电商平台的会员数据圈选方法及***
CN115658730B (zh) * 2022-09-20 2024-02-13 中国科学院自动化研究所 稀疏数据的查询方法、装置、设备和计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609490A (zh) * 2012-01-20 2012-07-25 东华大学 一种面向列存储dwms的b+树索引方法
CN105868388A (zh) * 2016-04-14 2016-08-17 中国人民大学 一种基于fpga的内存olap查询优化方法
CN106462633A (zh) * 2014-06-19 2017-02-22 微软技术许可有限责任公司 将相关的稀疏数据高效存储在搜索索引中

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527462B1 (en) * 2012-02-09 2013-09-03 Microsoft Corporation Database point-in-time restore and as-of query

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609490A (zh) * 2012-01-20 2012-07-25 东华大学 一种面向列存储dwms的b+树索引方法
CN106462633A (zh) * 2014-06-19 2017-02-22 微软技术许可有限责任公司 将相关的稀疏数据高效存储在搜索索引中
CN105868388A (zh) * 2016-04-14 2016-08-17 中国人民大学 一种基于fpga的内存olap查询优化方法

Also Published As

Publication number Publication date
CN107273483A (zh) 2017-10-20

Similar Documents

Publication Publication Date Title
US11263211B2 (en) Data partitioning and ordering
Zhang et al. Bed-tree: an all-purpose index structure for string similarity search based on edit distance
US8108411B2 (en) Methods and systems for merging data sets
Wang et al. Scalable mining of large disk-based graph databases
Borodin et al. Optimization of memory operations in generalized search trees of PostgreSQL
Shi et al. Benchmarking cloud-based data management systems
CN106776929A (zh) 一种信息检索的方法及装置
WO2018097846A1 (en) Edge store designs for graph databases
CN105955984A (zh) 基于爬虫模式的网络数据搜索方法
CN106909554A (zh) 一种数据库文本表数据的加载方法及装置
CN107273483B (zh) 稀疏数据的访问方法及***
Chopade et al. MongoDB indexing for performance improvement
Thacker et al. Performance of elasticsearch in cloud environment with ngram and non-ngram indexing
Wang et al. Rencoder: A space-time efficient range filter with local encoder
Bigerl et al. Hashing the hypertrie: space-and time-efficient indexing for SPARQL in tensors
Iser et al. A problem meta-data library for research in SAT
US11144580B1 (en) Columnar storage and processing of unstructured data
Bidoit et al. Evaluating queries and updates on big xml documents
Finis et al. Order indexes: supporting highly dynamic hierarchical data in relational main-memory database systems
Adamanskiy et al. EJDB-Embedded JSON database engine
Kharade et al. Selection of small index to reduce the number of pages for improving efficiency
Ali Klaib Clustering-based Labelling Scheme-A Hybrid Approach for Efficient Querying and Updating XML Documents
Aljarallah Comparative study of database modeling approaches
Punia et al. Implementing Information System Using MongoDB and Redis
Schönig PostgreSQL Administration Essentials

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
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method and system for accessing sparse data

Effective date of registration: 20200115

Granted publication date: 20191105

Pledgee: Baiyun branch of Guiyang Bank Co.,Ltd.

Pledgor: GUIZHOU ESGYN INFORMATION TECHNOLOGY CO.,LTD.

Registration number: Y2020520000004

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20221031

Granted publication date: 20191105

Pledgee: Baiyun branch of Guiyang Bank Co.,Ltd.

Pledgor: GUIZHOU ESGYN INFORMATION TECHNOLOGY CO.,LTD.

Registration number: Y2020520000004