CN115168319A - 一种数据库系统、数据处理方法及电子设备 - Google Patents
一种数据库系统、数据处理方法及电子设备 Download PDFInfo
- Publication number
- CN115168319A CN115168319A CN202210588280.7A CN202210588280A CN115168319A CN 115168319 A CN115168319 A CN 115168319A CN 202210588280 A CN202210588280 A CN 202210588280A CN 115168319 A CN115168319 A CN 115168319A
- Authority
- CN
- China
- Prior art keywords
- data
- column
- field
- query
- processing module
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据库系统、数据处理方法及电子设备,所述数据库系统包括:包括存储模块和处理模块,所述处理模块与所述存储模块相连;所述处理模块用于根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;所述存储模块用于将数据表的每列数据分段压缩保存。所述方法应用于上述数据库系统。本发明实施例提供的数据库系统、数据处理方法及电子设备,能够在单台电子设备上实现大数据的存储,降低了大数据存储的成本。
Description
技术领域
本发明涉及大数据技术领域,具体涉及一种数据库系统、数据处理方法及电子设备。
背景技术
随着信息技术、互联网技术和物联网技术的迅速发展,各行业数据的产出呈指数上升趋势,数据的规模日益庞大。
数据大规模和高维度等特点对传统的数据库系统提出了较高的技术挑战。例如,对于传统的关系型数据库,如MySQL,Oracle,SQL Server等,均为典型的行表设计。这些数据库以数据行为单位来组织和存储数据,再通过索引表提高查询的速度。这种数据库设计的优势是方便在较高实时性要求下进行数据的插入、删除和修改等操作,局限是每行数据规模的限制使得数据表的列数受限,仅适用于维度较低的数据。为了解决传统关系型数据库难以有效存储高维大数据的缺陷,出现基于分布式存储的列表设计的NoSQL数据库系统,例如BigTable,HBase等,这些新型数据库系统均需建立在大规模分布式存储集群上,往往需要几十甚至数千个计算节点才能达到理想的效果,而建立这样大规模的计算集群需要极高的购置与维护成本,难以在数量众多的中小企业和科研机构所面对的日常使用场景中得到推广应用。此外,这些数据库系统由于使用分布式存储,查询往往具有较高的延时,难以适用于对实时性要求较高的应用场景。
发明内容
针对现有技术中的问题,本发明实施例提供一种数据库系统、数据处理方法及电子设备,能够至少部分地解决现有技术中存在的问题。
第一方面,本发明提出一种数据库系统,包括存储模块和处理模块,其中:
所述处理模块与所述存储模块相连;
所述处理模块用于根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;
所述存储模块用于将数据表的每列数据分段压缩保存。
进一步地,所述存储模块包括第一级存储单元、第二级存储单元和第三级存储单元,所述处理模块分别与所述第一级存储单元、第二级存储单元和第三级存储单元相连,其中:
所述第一级存储单元用于采用冗余机制存储数据表;
所述第二级存储单元用于缓存第一级存储单元存储的数据;
所述第三级存储单元用于缓存第二级存储单元存储的数据。
进一步地,本发明实施例提供的数据库系统还包括通信模块,所述通信模块与所述处理模块相连。
第二方面,本发明提出一种基于上述任一实施例所述的数据库系统的数据处理方法,包括:
处理模块获取待存储数据,所述待存储数据包括数据表;
所述处理模块根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;
所述处理模块将分段压缩后的每列数据存储到存储模块。
进一步地,所述根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩包括:
获取所述数据表的每列数据对应的访问频率;
根据所述数据表的每列数据对应的访问频率获得对应的压缩算法;
根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩。
进一步地,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
若判断获知所述列数据对应的分段数据长度小于第一预设值,则基于所述第一预设值对所述列数据进行分段,获得所述列数据对应的各段数据以及分段数量;
根据所述列数据对应的压缩算法采用分段数量的线程并行对所述列数据对应的各段数据进行压缩。
进一步地,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
若判断获知所述列数据对应的分段数据长度大于等于第一预设值且小于第二预设值,则基于所述分段数据长度对所述列数据进行分段,获得所述列数据对应的各段数据;
根据所述列数据对应的压缩算法采用处理器线程数量的线程并行对所述列数据对应的各段数据进行压缩。
进一步地,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
若判断获知所述列数据对应的分段数据长度大于等于第二预设值,则基于所述第二预设值对所述列数据进行分段,获得所述列数据对应的各段数据;
根据所述列数据对应的压缩算法采用处理器线程数量的线程并行对所述列数据对应的各段数据进行压缩。
进一步地,本发明实施例提供的数据处理方法,还包括:
所述处理模块若判断获知所述数据表中的列数据对应的数据类型为预设类型,则对所述列数据进行去重获得去重后的列数据;
所述处理模块对去重后的列数据按照字符串长度进行哈希散列,获得去重后的列数据中每个字符串数据对应的散列值;
所述处理模块根据去重后的列数据中每个字符串数据对应的散列值进行分组,获得多个字符串组;其中,每个字符串组包括的各个字符串数据具有相同的字符串长度且对应相同的散列值;
所述处理模块对每个字符串组包括的字符串数据进行排序,获得每个排序字符串组;
所述处理模块根据去重后的列数据对应的索引值、各个排序字符串组以及各自对应的散列值,生成列数据的索引表;其中,去重后的列数据对应的索引值是预先获得的。
进一步地,本发明实施例提供的数据处理方法,还包括:
所述处理模块根据去重后的列数据对应的索引值替换对应的列数据,获得列数据对应的查询列数据;
所述处理模块根据列数据对应的压缩算法对列数据对应的查询列数据进行分段压缩,获得列数据对应的查询列数据的各段压缩数据。第三方面,本发明还提出一种基于上述任一实施例所述的数据库系统的数据处理方法,包括:
处理模块从查询输入队列获取一个查询请求,所述查询请求包括数据表标识、至少一个字段以及查询关键词;
所述处理模块根据所述数据表标识以及所述至少一个字段,从存储模块查询获得所述至少一个字段中每个字段对应的各段压缩数据;其中,每个字段对应数据表的一列数据;
所述处理模块根据所述至少一个字段中每个字段对应的压缩算法对每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据;
所述处理模块根据所述查询关键词以及所述至少一个字段中每个字段对应的解压数据,获得查询结果。
进一步地,所述根据所述至少一个字段中每个字段对应的压缩算法对所述至少一个字段中每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据包括:
若判断获知所述字段对应的列数据的分段数量大于处理器线程数量,则根据所述字段对应的列数据对应的压缩算法采用处理器线程数量的线程并行对所述字段对应的列数据的进行解压;
若判断获知所述字段对应的列数据的分段数量小于等于所述处理器线程数量,则根据所述字段对应的列数据对应的压缩算法采用所述字段对应的列数据的分段数量的线程并行对所述字段对应的列数据的进行解压。
进一步地,本发明实施例提供的数据处理方法还包括:
所述处理模块若判断获知所述字段对应的数据类型为预设类型,则根据所述字段获得所述字段对应的列数据的索引表;
对所述查询关键词按照字符串长度进行哈希散列,获得所述查询关键词对应的散列值;
所述处理模块根据所述查询关键词对应的散列值以及所述字段对应的列数据的索引表,获得所述查询关键词对应的索引值;
所述处理模块根据所述查询关键词对应的索引值以及所述字段对应的列数据对应的查询列数据,获得所述查询关键词对应的查询结果。
进一步地,在根据所述查询关键词对应的索引值以及所述字段对应的列数据对应的查询列数据,获得所述查询关键词对应的查询结果之前,还包括:
所述处理模块根据所述字段对应压缩算法对所述字段对应的列数据对应的查询列数据的各段压缩数据进行解压缩,获得所述字段对应的列数据对应的查询列数据。
进一步地,本发明实施例提供的数据处理方法还包括:
所述处理模块获取各个客户端发送的查询请求;
所述处理模块根据各个查询请求的接收时间先后顺序,将各个查询请求放入查询输入队列。
第四方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述数据处理方法的步骤。
第五方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述数据处理方法的步骤。
本发明实施例提供的数据库系统、数据处理方法及电子设备,包括存储模块和处理模块,处理模块与存储模块相连,处理模块用于根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩,存储模块用于将数据表的每列数据分段压缩保存,能够在单台电子设备上实现大数据的存储,降低了大数据存储的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明第一实施例提供的数据库系统的结构示意图。
图2是本发明第二实施例提供的数据库系统的结构示意图。
图3是本发明第三实施例提供的数据库系统的结构示意图。
图4是本发明第四实施例提供的数据处理方法的流程示意图。
图5是本发明第五实施例提供的数据处理方法的流程示意图。
图6是本发明第六实施例提供的数据处理方法的流程示意图。
图7是本发明第七实施例提供的数据处理方法的流程示意图。
图8是本发明第八实施例提供的数据处理方法的流程示意图。
图9是本发明第九实施例提供的数据处理方法的流程示意图。
图10是本发明第十实施例提供的数据处理方法的流程示意图。
图11是本发明第十一实施例提供的数据处理方法的流程示意图。
图12是本发明第十二实施例提供的数据处理方法的流程示意图。
图13是本发明第十三实施例提供的数据处理方法的流程示意图。
图14是本发明第十四实施例提供的数据处理方法的流程示意图。
图15是本发明第十五实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
传统的关系式数据库系统采用按行存储的方式进行数据的组织,每行分为若干个列(域),其数量有限制,每行可存储的数据总量亦有限制。这一类数据库系统针对较小规模(行数较少)、较低维度(列数较少)的数据表可以方便地进行插入和删除等实时修改操作,但难以处理行数高达数百万甚至数亿,列数高达数万甚至数百万的数据表。一方面,由于每行所能存储的数据规模有限,难以直接存储维度较高的数据。虽然可以采用按数据维度分割为若干数据表的方式存储高维数据,但会带来一次查询需要操作多个数据表的问题,使得查询效率大大降低。另一方面,当数据规模较大,数据表的行数较多时,关系式数据库的查询时间成本过高,尤其是针对变长字符串的查询速度过慢,无法在用户可容忍的时间量度内完成大规模数据库的常规查询。
针对传统的关系型数据库存在的上述问题,本申请提出数据库的数据组织方式是按列成表,按列成表即数据表以列为单位进行存储,将大规模高维度数据的每一列数据根据处理器线程数分段压缩存储,实现在一台电子设备上对高维度数据的高密度高可靠性存储;并通过分级存储以满足对数据进行快速访问的需求。其中,电子设备包括但不限于台式机、服务器、笔记本电脑等。
图1是本发明第一实施例提供的数据库系统的结构示意图,如图1所示,本发明实施例提供的数据库系统,包括存储模块1和处理模块2,其中:
处理模块1与存储模块2相连;
处理模块1用于根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;
存储模块2用于将数据表的每列数据分段压缩保存。
具体地,数据表中各列数据的访问频率的初始值是预设的,后续可以根据实际的访问情况进行更新。对于访问频率较高的列数据,可以采用压缩率相对较低但压缩和解压时间较短的压缩算法,比如lz4,zstd等快速压缩算法。对于访问频率较低的列数据,可以采用压缩率相对较高但压缩和解压时间较长的压缩算法,如zlib,bzip2,lzma等压缩算法。通常大部分列数据使用频率较低,仅有少数列数据频繁使用。因此通过上述融合使用多种不同的压缩算法来压缩存储访问频率不同的各列数据,不仅达到了较高的平均压缩率,节省存储空间,又能够满足了快速数据访问的使用需求。处理模块1对列数据的具体分段压缩处理过程,详见下文所述,此处不进行赘述。其中,访问频率与压缩算法的对应关系是预设的,例如,当访问频率大于频率阈值,说明列数据的访问频率较高,可以采用lz4,zstd等快速压缩算法;当访问频率小于等于频率阈值,说明列数据的访问频率较低,可以采用zlib,bzip2,lzma等压缩算法。
本发明实施例提供的数据库系统,包括存储模块和处理模块,处理模块与存储模块相连,处理模块用于根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩,存储模块用于将数据表的每列数据分段压缩保存,能够在单台电子设备上实现大数据的存储,降低了大数据存储的成本。此外,能够通过不同的压缩算法对不同访问频率的数据进行压缩,在保证数据存储的情况下提高数据的访问效率。
图2是本发明第二实施例提供的数据库系统的结构示意图,如图2所示,在上述各实施例的基础上,进一步地,存储模块1包括第一级存储单元11、第二级存储单元12和第三级存储单元13,处理模块2分别与第一级存储单元11、第二级存储单元12和第三级存储单元13相连,其中:
第一级存储单元11用于采用冗余机制存储数据表;
第二级存储单元12用于缓存第一级存储单元存储的数据;
第三级存储单元13用于缓存第二级存储单元存储的数据。
具体地,第一级存储单元11可以采用机械硬盘,存储所有的数据表。可以采用多块大容量机械硬盘构建磁盘阵列,通过灵活的磁盘冗余机制确保在多块磁盘同时发生故障的情况下数据不丢失且仍能进行正常的读写操作。磁盘冗余的级别根据数据可靠性的要求进行选择。使用的磁盘冗余级别可以包括RAID10,RAID50,RAID60或与之等价的级别。当电子设备的机械硬盘数量较少时,比如8块,可以使用RAID10模式,即将硬盘两块一组做成RAID1(镜像),再将各镜像后的磁盘组做成RAID0。当电子设备的机械硬盘数量较多时,比如60块,可以使用RAID60模式,例如将60块硬盘10块一组做成RAID6(两块冗余),再将得到的磁盘组做成RAID0,这样保证每一组有两块硬盘发生故障时,数据不丢失,数据访问可照常进行。也可以使用RAID50模式,例如将60块硬盘5块一组做成RAID5(一块冗余),再将得到的磁盘组做成RAID0,这样保证每一组有一块硬盘发生故障时,数据不丢失。使用冗余机制存储数据,提高了数据存储的可靠性,能够在部分磁盘的损坏情况下正常进行读写操作。
第二级存储单元12可以采用固态硬盘,对第一级存储单元11存储的数据表中访问频率较高的列数据和/或近期访问的列数据进行缓存。固态硬盘采用高速非易失性内存主机控制器接口规范(NVME),使得对数据不仅具有极高的顺序访问速度,而且具有极高的随机访问性能。例如,使用支持PCIE-3.0x8或更高带宽标准的超高速NVME固态硬盘。其中,数据表中访问频率较高的列数据根据实际需要进行设置,本发明实施例不做限定。
例如,当数据表的列数据的访问频率大于第一缓存阈值时,确定列数据的访问频率较高,可以缓存到第二级存储单元12。近期访问的列数据根据实际需要进行设置,本发明实施例不做限定。例如,将当前时间之前一周内被访问过的列数据作为近期访问的列数据,可以缓存到第二级存储单元12。
第三级存储单元13可以采用电子设备的内存,对第二级存储单元存储的数据进行缓存,使得对数据的访问能够以内存的速度进行,以提高数据的访问效率。第三级存储单元13的容量根据实际需要进行设置,本发明实施例不做限定。例如采用大于等于512GB的内存。
通过第一级存储单元11、第二级存储单元12和第三级存储单元13对数据进行三级存储,在保证数据访问可靠性的前提下提高了对数据访问速度。使用多级存储技术,与机械硬盘相比访问速度可提升30倍以上,随机访问性能可提升1千倍以上。
图3是本发明第三实施例提供的数据库系统的结构示意图,如图3所示,在上述各实施例的基础上,进一步地,本发明实施例提供的数据库系统还包括通信模块3,通信模块3与处理模块1相连。
通信模块3能够实现数据库系统与客户端以及其他设备的通信。
通信模块3可以基于Thrift框架实现。能够提供多语言跨平台的远程调用接口,实现数据库系统的远程访问和跨平台调用。根据标准SQL结构化查询语句规范对远程调用接口间封装,使得数据库系统内部的接口能够完成对标准关系式数据库语句的语义解析并进行相关查询任务。此外,为了保证与客户端的通信,对数据远程访问与查询结果传输进行了接口和传输格式规范化。
针对数据库系统使用过程中灵活多变的需求,本发明实施例提供的数据库系统的通讯模块具有远程访问、跨平台调用、多语言编程、结构化查询等特点,以达到数据库系统服务端与客户端的分离,满足多种使用场景的目的。首先,本申请的数据库系统使用远程过程调用机制,在客户端中使用通用的通讯协议、调用机制、编程规范访问运行于服务器上的数据库。其次,本申请的数据库系统基于成熟的远程过程调用标准库实现跨运行平台的支持,使得客户端能够运行于多种操作系统上。再有,远程过程调用标准库的使用还使得客户端能够以多种编程语言实现,从而大大降低了数据库使用的门槛。最后,本申请的数据库系统的访问遵循SQL结构化查询语言设计规范,使得对数据库的查询能够以开发者熟悉的结构化查询语句来书写,从而使用户获得与书写传统关系式数据库查询语句相似的体验,降低数据库系统的使用难度。
图4是本发明第四实施例提供的数据处理方法的流程示意图,如图4所示,本发明实施例提供的数据处理方法,能够应用于上述任一实施例所述的数据库系统的数据处理方法,包括:
S401、处理模块获取待存储数据,所述待存储数据包括数据表;
具体地,处理模块可以获取到待存储数据,所述待存储数据包括数据表,数据表包括各个字段对应的列数据。在本发明实施例中,数据表示按列成表的数据组织形式,数据表以列为单位进行存储,这与传统关系式数据库所采用的按行存储方式正好相反。采用按列存储的优势包括:(1)进行查询时仅需处理查询语句相关的列数据,而不用访问整个数据行,因此大大降低了磁盘访问的次数,提高了数据访问效率;(2)由于每列数据是同一种类型的,对列数据进行查询等操作时,数据处理效率高。
例如,所述处理模块可以通过通信模块接收远程发送的待存储数据。所述处理模块也可以在本地通过外设接口从移动存储设备中获得待存储数据。
S402、所述处理模块根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;
具体地,对于数据表的每列数据,所述处理模块获取每列数据的访问频率,然后根据每列数据的访问频率获得对应的压缩算法,再根据压缩算法对每列数据进行分段压缩,获得每列数据的压缩数据。其中,访问频率与压缩算法的对应关系是预设的,所述压缩算法根据实际需要进行选择,本发明实施例不做限定。
S403、所述处理模块将分段压缩后的每列数据存储到存储模块。
具体地,所述处理模块将分段压缩后的每列数据存储到存储模块,以供后续进行访问和查询。
本发明实施例提供的数据处理方法,处理模块获取待存储数据,所述待存储数据包括数据表;处理模块根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩,处理模块将分段压缩后的每列数据存储到存储模块,由于采用按列成表的数据组织形式以及分段压缩的方式存储数据,能够在单台电子设备上实现大数据的存储,降低了大数据存储的成本。此外,采用按列成表的数据组织形式还能够提高高维数据的访问效率,适用于对实时性要求较高的应用场景。
图5是本发明第五实施例提供的数据处理方法的流程示意图,如图5所示,在上述各实施例的基础上,进一步地,所述根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩包括:
S501、获取所述数据表的每列数据对应的访问频率;
具体地,数据表的每列数据都有对应的访问频率,所述处理模块可以获取每列数据对应的访问频率。其中,访问频率的初始值根据实际需要进行设置,本发明实施例不做限定。
例如,每列数据对应一个字段,将每列数据对应的访问频率与字段对应存储。根据列数据对应的字段查询字段对应的访问频率,将查询获得的访问频率作为列数据对应的访问频率。
例如,可以设置列数据对应的访问频率的初始值为0,后续每访问一次列数据,列数据的访问次数加1。计算预设时间段内列数据的访问次数与预设时间段的商值,对列数据对应的访问频率进行更新。
如果根据经验数据表中的列数据会访问的比较频繁,可以为列数据对应的访问频率的初始值设置一个较大的数值,使该列数据在后续分段压缩时采用压缩率相对较低但压缩和解压时间较短的压缩算法,以提高该列数据访问效率。
S502、根据所述数据表的每列数据对应的访问频率获得对应的压缩算法;
具体地,所述处理模块可以根据数据表的每列数据对应的访问频率获得每列数据对应的压缩算法。
例如,设置频率阈值,若列数据对应的访问频率大于频率阈值,那么对应的压缩算法为lz4或zstd压缩算法。若列数据对应的访问频率小于等于频率阈值,那么对应的压缩算法为zlib、bzip2或者lzm压缩算法。其中,频率阈值根据实际需要进行设置,本发明实施例不做限定。
S503、根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩。
具体地,对于所述数据表的每列数据,所述处理模块在获得列数据对应的压缩算法之后,可以根据列数据对应的压缩算法对列数据进行分段压缩,分段压缩即将列数据分为若干段进行压缩,可以并行对列数据的各段数据进行压缩,以提高数据压缩效率。
可理解的是,对于存储模块存储的数据表,可以对数据表中列数据对应的访问频率进行更新,如果基于更新后的列数据对应的访问频率获得的压缩算法发生变化,那么可以根据重新获得的压缩算法对列数据重新进行分段压缩。比如,列数据对应的访问频率在更新前大于频率阈值,说明列数据的访问频率较高的数据,而列数据对应的访问频率在更新后小于频率阈值,说明列数据变成访问频率较低的数据,那么可以根据更新后的访问频率获得的压缩算法重新对列数据进行分段压缩。
图6是本发明第六实施例提供的数据处理方法的流程示意图,如图6所示,在上述各实施例的基础上,进一步地,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
S601、根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
具体地,所述处理模块可以根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度。其中,处理器线程数量是已知的。
例如,本发明实施例提供的数据库系统在一台双路服务器上实现,双路服务器拥有256核512线程,那么处理器线程数量为512。如果数据表的一列数据具有512000行数据,那么该列数据的数据长度为512000,对应的分段数据长度为512000/512=1000。
S602、若判断获知所述列数据对应的分段数据长度小于第一预设值,则基于所述第一预设值对所述列数据进行分段,获得所述列数据对应的各段数据以及分段数量;
具体地,所述处理模块将所述列数据对应的分段数据长度与第一预设值进行比较,如果所述列数据对应的分段数据长度小于第一预设值,那么会基于所述第一预设值对所述列数据进行分段,可以获得所述列数据的各段数据以及分段数量。其中,所述第一预设值根据实际经验进行设置,本发明实施例不做限定。所述第一预设值是考虑使用多线程并行处理数据不造成资源浪费设置的,当分段数据长度小于第一预设值时,以分段数据长度对列数据进行分段,并采用多线程并行处理,会导致资源浪费。
例如,列数据的数据长度为512000,第一预设值为2000,那么基于第一预设值2000对上述列数据进行分段,可以获得的分段数量为512000/2000=256,可以将该列数据平均分为256段,该列数据的第1行至第256行数据为第1段数据,第257行至512行数据为第2段数据,第513行至768行数据为第3段数据,以此类推,共256段数据。
S603、根据所述列数据对应的压缩算法采用分段数量的线程并行对所述列数据对应的各段数据进行压缩。
具体地,由于分段数量会小于处理器线程数量,所述处理模块会为所述列数据的每段数据分配一个线程,基于所述列数据对应的压缩算法对各段数据并行进行压缩处理,以提高数据的压缩效率。
图7是本发明第七实施例提供的数据处理方法的流程示意图,如图7所示,在上述各实施例的基础上,进一步地,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
S701、根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
具体地,所述处理模块可以根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度。其中,处理器线程数量是已知的。
S702、若判断获知所述列数据对应的分段数据长度大于等于第一预设值且小于第二预设值,则基于所述分段数据长度对所述列数据进行分段,获得所述列数据对应的各段数据;
具体地,所述处理模块将所述列数据对应的分段数据长度分别与第一预设值和第二预设值进行比较,如果所述列数据对应的分段数据长度大于等于第一预设值且小于第二预设值,那么会基于所述列数据对应的分段数据长度对所述列数据进行分段,可以获得所述列数据的各段数据。其中,第二预设值根据实际经验进行设置,本发明实施例不做限定。所述第二预设值是考虑使用多线程并行处理数据不造成计算机资源不足而引发的系统崩溃设置的,当分段数据长度大于等于第二预设值时,以分段数据长度对列数据进行分段,并采用多线程并行处理,容易导致系统由于资源不足而崩溃。
S703、根据所述列数据对应的压缩算法采用处理器线程数量的线程并行对所述列数据对应的各段数据进行压缩。
具体地,所述处理模块会为所述列数据的每段数据分配一个线程,需要使用处理器线程数量的线程,基于所述列数据对应的压缩算法对各段数据并行进行压缩处理,以提高数据的压缩效率。
图8是本发明第八实施例提供的数据处理方法的流程示意图,如图8所示,在上述各实施例的基础上,进一步地,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
S801、根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
具体地,所述处理模块可以根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度。其中,处理器线程数量是已知的。
S802、若判断获知所述列数据对应的分段数据长度大于等于第二预设值,则基于所述第二预设值对所述列数据进行分段,获得所述列数据对应的各段数据;
具体地,所述处理模块将所述列数据对应的分段数据长度与第二预设值进行比较,如果所述列数据对应的分段数据长度大于等于第二预设值,那么会基于所述第二预设值对所述列数据进行分段,可以获得所述列数据的各段数据。
S803、根据所述列数据对应的压缩算法采用处理器线程数量的线程并行对所述列数据对应的各段数据进行压缩。
具体地,所述处理模块会为所述列数据的每段数据分配一个线程,需要使用处理器线程数量的线程,基于所述列数据对应的压缩算法对各段数据并行进行压缩处理,以提高数据的压缩效率。
图9是本发明第九实施例提供的数据处理方法的流程示意图,如图9所示,在上述各实施例的基础上,进一步地,本发明实施例提供的数据处理方法还包括:
S901、所述处理模块若判断获知所述数据表中的列数据对应的数据类型为预设类型,则对所述列数据进行去重获得去重后的列数据;
具体地,所述处理模块获取所述数据表中的列数据对应的数据类型,如果所述列数据对应的数据类型为预设类型,那么所述处理模块会将所述列数据包括的各行数据进行相互比较,对于相同的数据只保留一个,去除重复的数据,获得去重后的列数据。其中,预设类型是预设的,为字符类型等非定长数据类型,根据实际需要进行设置,本发明实施例不做限定。
S902、所述处理模块对去重后的列数据按照字符串长度进行哈希散列,获得去重后的列数据中每个字符串数据对应的散列值;
具体地,去重后的列数据的每行数据都可以视为一个字符串,对去重后的列数据的每行数据按照字符串长度进行哈希散列,可以获得去重后的列数据中每个字符串数据对应的散列值。
S903、所述处理模块根据去重后的列数据中每个字符串数据对应的散列值进行分组,获得多个字符串组;其中,每个字符串组包括的各个字符串数据具有相同的字符串长度且对应相同的散列值;
具体地,由于具有相同长度的字符串在进行哈希散列之后,获得散列值是相等的,可以根据去重后的列数据中各个字符串数据对应的散列值进行字符串数据分组,将具有相同散列值的字符串数据分为一组,构成一个字符串组,可以获得多个字符串组。
S904、所述处理模块对每个字符串组包括的字符串数据进行排序,获得每个排序字符串组;
具体地,所述处理模块对每个字符串组包括的字符串数据进行排序,获得每个排序字符串组。对字符串组包括的各个字符串数据排序是为了使各个字符串数据能够有序排列,以便于后续查询时能够提高效率。
例如,可以根据预设根据对字符串数据进行排序,所述预设规则根据实际需要进行设置,本发明实施例不做限定。比如预设规则为按照字典序对字符串数据进行排序。
S905、所述处理模块根据去重后的列数据对应的索引值、各个排序字符串组以及各自对应的散列值,生成列数据的索引表;其中,去重后的列数据对应的索引值是预先获得的。
具体地,所述处理模块会去重后的列数据对应的索引值、各个排序字符串组以及各自对应的散列值,生成列数据的索引表。在列数据的索引表中,每个排序字符串组具有唯一对应的散列值,去重后的列数据的每个字串数据具有唯一对应的索引值。其中,去重后的列数据对应的索引值是预先获得的,去重后的列数据中每个字符串数据唯一对应一个索引值。去重后的列数据对应的索引值根据实际需要进行设置,本发明实施例不做限定。
图10是本发明第十实施例提供的数据处理方法的流程示意图,如图10所示,在上述各实施例的基础上,进一步地,本发明实施例提供的数据处理方法还包括:
S1001、所述处理模块根据去重后的列数据对应的索引值替换对应的列数据,获得列数据对应的查询列数据;
具体地,所述处理模块将去重后的列数据对应的原始列数据中的每个字符串数据替换为每个字符串数据对应的索引值,获得列数据对应的查询列数据。
S1002、所述处理模块根据列数据对应的压缩算法对列数据对应的查询列数据进行分段压缩,获得列数据对应的查询列数据的各段压缩数据。
具体地,可以采用列数据对应的压缩算法对列数据对应的查询列数据进行分段压缩,获得列数据对应的查询列数据的各段压缩数据。其中,本步骤的具体实现过程与步骤S503类似,此处不进行赘述。
图11是本发明第十一实施例提供的数据处理方法的流程示意图,如图11所示,.本发明实施例提供的数据处理方法,能够应用于上述任一实施例所述的数据库系统的数据处理方法,包括:
S1101、处理模块从查询输入队列获取一个查询请求,所述查询请求包括数据表标识、至少一个字段以及查询关键词;
具体地,处理模块可以从查询输入队列中获取一个查询请求,所述查询请求包括数据表标识、至少一个字段以及查询关键词。其中,数据表标识与数据表一一对应,字段为数据表包括的字段,每段字段对应一列数据,所述查询关键词根据实际需要进行设置,本发明实施例不做限定。查询输入队列是预先获得的。
S1102、所述处理模块根据所述数据表标识以及所述至少一个字段,从存储模块查询获得所述至少一个字段中每个字段对应的各段压缩数据;其中,每个字段对应数据表的一列数据;
具体地,所述处理模块根据数据表标识从存储模块存储的数据表中查询获得对应的数据表,并根据所述至少一个字段中的每个字段从查询获得数据表中获得每个字段对应的列数据,每个字段对应的列数据为分段压缩数据。
S1103、根据所述至少一个字段中每个字段对应的压缩算法对每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据;
具体地,每个字段对应的列数据所对应的压缩算法,作为每个字段对应的压缩算法。所述处理模块可以根据所述至少一个字段中每个字段对应的压缩算法对每个字段对应的列数据的各段压缩数据进行解压缩,可以获得所述至少一个字段中每个字段对应的解压数据,即每段字段对应列数据在分段压缩前的数据。
S1104、所述处理模块根据所述查询关键词以及所述至少一个字段中每个字段对应的解压数据,获得查询结果。
具体地,所述处理模块会根据所述查询关键词在所述少一个字段中每个字段对应的解压数据进行数据查询,获得查询结果。
其中,可以为各段压缩数据对应的解压数据分别分配一个线程,进行查询关键词的查询,实现多线程并行处理查询任务。为了解决线程并发操作时的同步问题,查询请求对应的查询任务与查询结果的合并线程之间通过一条输出管道相连接,该管道设计为一个队列,其输入端与每一个查询线程相连,输出端则仅与查询结果合并线程相连,查询线程即上述查询请求对应的查询任务的各个子查询子任务对应的线程。管道中的数据使用信号量和条件数等线程同步机制进行保护。一旦有查询结果从查询线程输出,查询结果合并线程即可立即自动执行合并任务,最终将多个查询线程产生的结果合并为总的查询结果。
图12是本发明第十二实施例提供的数据处理方法的流程示意图,如图12所示,在上述各实施例的基础上,进一步地,所述根据所述至少一个字段中每个字段对应的压缩算法对所述至少一个字段中每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据包括:
S1201、若判断获知所述字段对应的列数据的分段数量大于处理器线程数量,则根据所述字段对应的列数据对应的压缩算法采用处理器线程数量的线程并行对所述字段对应的列数据的进行解压;
具体地,所述处理模块将所述字段对应的列数据的分段数量与处理器线程数量进行比较,如果所述字段对应的列数据的分段数量大于所述处理器线程数量,那么所述处理模块会为所述处理器线程数量的线程逐一分配解压的分段数据,基于所述字段对应的列数据对应的压缩算法对各段数据并行进行解压处理,在出现空闲进程之后,为空闲进程分配未处理的分段数据,直到所述字段对应的列数据解压完成。
S1202、若判断获知所述字段对应的列数据的分段数量小于等于所述处理器线程数量,则根据所述字段对应的列数据对应的压缩算法采用所述字段对应的列数据的分段数量的线程并行对所述字段对应的列数据的进行解压。
具体地,所述处理模块将所述字段对应的列数据的分段数量与处理器线程数量进行比较,如果所述字段对应的列数据的分段数量小于等于所述处理器线程数量,那么所述处理模块会为所述字段对应的列数据的各段压缩数据逐一分配线程,基于所述字段对应的列数据对应的压缩算法对各段数据并行进行解压处理。
图13是本发明第十三实施例提供的数据处理方法的流程示意图,如图13所示,在上述各实施例的基础上,进一步地,本发明实施例提供的数据处理方法还包括:
S1301、所述处理模块若判断获知所述字段对应的数据类型为预设类型,则根据所述字段获得所述字段对应的列数据的索引表;
具体地,所述处理模块获取所述字段对应的列数据对应的数据类型,如果所述列数据对应的数据类型为预设类型,那么会根据所述字段获得所述字段对应的列数据的索引表。其中,所述字段对应的列数据的索引表是预先获得并与所述字段对应存储的。
S1302、所述处理模块对所述查询关键词按照字符串长度进行哈希散列,获得所述查询关键词对应的散列值;
具体地,所述查询关键词为字符串数据,所述处理模块对所述查询关键词的字符串长度按照所述查询关键词的字符串长度进行哈希散列,可以获得所述查询关键词对应的散列值。
S1303、所述处理模块根据所述查询关键词对应的散列值以及所述字段对应的列数据的索引表,获得所述查询关键词对应的索引值;
具体地,所述处理模块根据所述查询关键词对应的散列值,从所述字段对应的列数据的索引表中查询对应的排序字符串组,然后采用二分法等查找算法从所述查询关键词对应的排序字符串组中的查找与所述查询关键词相同的字符串数据,如果存在与所述查询关键词相同的字符串数据,那么将该字符串数据对应的索引值作为所述查询关键词对应的索引值。
可理解的是,如果没能找到所述查询关键词对应的索引值,说明所述字段对应的列数据中不存在与所述查询关键词匹配的数据。
1304、所述处理模块根据所述查询关键词对应的索引值以及所述字段对应的列数据对应的查询列数据,获得所述查询关键词对应的查询结果。
具体地,所述处理模块根据所述查询关键词对应的索引值在所述字段对应的列数据对应的查询列数据中进行数据查询,获得所述查询关键词对应的查询结果。其中,所述字段对应的列数据对应的查询列数据是预先存储的。
在进行数据查询时,查询关键词先根据列数据的索引表获得索引值,再与查询列数据中的索引值进行对比,将字符串的比较转化为索引值的比较,大大加速了字符串这类可变长度数据的查询速度。
在上述各实施例的基础上,进一步地,在根据所述查询关键词对应的索引值以及所述字段对应的列数据对应的查询列数据,获得所述查询关键词对应的查询结果之前,还包括:
根据所述字段对应压缩算法对所述字段对应的列数据对应的查询列数据的各段压缩数据进行解压缩,获得所述字段对应的列数据对应的查询列数据。
具体地,为了节约存储空间,可以对列数据对应的查询列数据进行分段压缩存储。当需要使用列数据对应的查询列数据时,需要进行解压。所述处理模块所述字段对应压缩算法对所述字段对应的列数据对应的查询列数据的各段压缩数据进行解压缩,可以获得所述字段对应的列数据对应的查询列数据。
图14是本发明第十四实施例提供的数据处理方法的流程示意图,如图14所示,在上述各实施例的基础上,进一步地,本发明实施例提供的数据处理方法还包括:
S1401、所述处理模块获取各个客户端发送的查询请求;
具体地,各个客户端可以向数据库系统发送查询请求,所述处理模块可以通过通信模块接收到各个客户端发送的查询请求。其中,所述查询请求包括数据表标识、字段以及查询关键词等信息,根据实际需要进行设置,本发明实施例不做限定。
S1402、所述处理模块根据各个查询请求的接收时间先后顺序,将各个查询请求放入查询输入队列。
具体地,所述处理模块在接收每个查询请求的时候,可以记录接收时间。所述处理模块可以根据各个查询请求的接收时间,按照接收时间的先后顺序将各个查询请求放入到查询输入队列。后续,所述处理模块会按照先进先出的方式逐个处理查询请求。
图15是本发明第十五实施例提供的电子设备的实体结构示意图,如图15所示,该电子设备可以包括:处理器(processor)1501、通信接口(Communications Interface)1502、存储器(memory)1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。处理器1501可以调用存储器1503中的逻辑指令,以执行如下方法:获取待存储数据,所述待存储数据包括数据表;根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;将分段压缩后的每列数据存储到存储模块。或者
从查询输入队列获取一个查询请求,所述查询请求包括数据表标识、至少一个字段以及查询关键词;根据所述数据表标识以及所述至少一个字段,从存储模块查询获得所述至少一个字段中每个字段对应的各段压缩数据;其中,每个字段对应数据表的一列数据;根据所述至少一个字段中每个字段对应的压缩算法对每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据;根据所述查询关键词以及所述至少一个字段中每个字段对应的解压数据,获得查询结果。
此外,上述的存储器1503中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取待存储数据,所述待存储数据包括数据表;根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;将分段压缩后的每列数据存储到存储模块。或者
从查询输入队列获取一个查询请求,所述查询请求包括数据表标识、至少一个字段以及查询关键词;根据所述数据表标识以及所述至少一个字段,从存储模块查询获得所述至少一个字段中每个字段对应的各段压缩数据;其中,每个字段对应数据表的一列数据;根据所述至少一个字段中每个字段对应的压缩算法对每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据;根据所述查询关键词以及所述至少一个字段中每个字段对应的解压数据,获得查询结果。
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取待存储数据,所述待存储数据包括数据表;根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;将分段压缩后的每列数据存储到存储模块。或者
从查询输入队列获取一个查询请求,所述查询请求包括数据表标识、至少一个字段以及查询关键词;根据所述数据表标识以及所述至少一个字段,从存储模块查询获得所述至少一个字段中每个字段对应的各段压缩数据;其中,每个字段对应数据表的一列数据;根据所述至少一个字段中每个字段对应的压缩算法对每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据;根据所述查询关键词以及所述至少一个字段中每个字段对应的解压数据,获得查询结果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (17)
1.一种数据库系统,其特征在于,包括存储模块和处理模块,其中:
所述处理模块与所述存储模块相连;
所述处理模块用于根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;
所述存储模块用于将数据表的每列数据分段压缩保存。
2.根据权利要求1所述的数据库系统,其特征在于,所述存储模块包括第一级存储单元、第二级存储单元和第三级存储单元,所述处理模块分别与所述第一级存储单元、第二级存储单元和第三级存储单元相连,其中:
所述第一级存储单元用于采用冗余机制存储数据表;
所述第二级存储单元用于缓存第一级存储单元存储的数据;
所述第三级存储单元用于缓存第二级存储单元存储的数据。
3.根据权利要求1或2所述的数据库系统,其特征在于,还包括通信模块,所述通信模块与所述处理模块相连。
4.一种基于权利要求1至3任一项所述的数据库系统的数据处理方法,其特征在于,包括:
处理模块获取待存储数据,所述待存储数据包括数据表;
所述处理模块根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩;其中,访问频率与压缩算法的对应关系是预设的;
所述处理模块将分段压缩后的每列数据存储到存储模块。
5.根据权利要求4所述的数据处理方法,其特征在于,所述根据数据表的每列数据的访问频率,选择对应的压缩算法对每列数据进行分段压缩包括:
获取所述数据表的每列数据对应的访问频率;
根据所述数据表的每列数据对应的访问频率获得对应的压缩算法;
根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩。
6.根据权利要求5所述的数据处理方法,其特征在于,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
若判断获知所述列数据对应的分段数据长度小于第一预设值,则基于所述第一预设值对所述列数据进行分段,获得所述列数据对应的各段数据以及分段数量;
根据所述列数据对应的压缩算法采用分段数量的线程并行对所述列数据对应的各段数据进行压缩。
7.根据权利要求5所述的数据处理方法,其特征在于,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
若判断获知所述列数据对应的分段数据长度大于等于第一预设值且小于第二预设值,则基于所述分段数据长度对所述列数据进行分段,获得所述列数据对应的各段数据;
根据所述列数据对应的压缩算法采用处理器线程数量的线程并行对所述列数据对应的各段数据进行压缩。
8.根据权利要求5所述的数据处理方法,其特征在于,所述根据所述数据表的每列数据对应的压缩算法对所述数据表的每列数据进行分段压缩包括:
根据所述列数据的数据长度以及处理器线程数量,获得所述列数据对应的分段数据长度;
若判断获知所述列数据对应的分段数据长度大于等于第二预设值,则基于所述第二预设值对所述列数据进行分段,获得所述列数据对应的各段数据;
根据所述列数据对应的压缩算法采用处理器线程数量的线程并行对所述列数据对应的各段数据进行压缩。
9.根据权利要求4所述的数据处理方法,其特征在于,还包括:
所述处理模块若判断获知所述数据表中的列数据对应的数据类型为预设类型,则对所述列数据进行去重获得去重后的列数据;
所述处理模块对去重后的列数据按照字符串长度进行哈希散列,获得去重后的列数据中每个字符串数据对应的散列值;
所述处理模块根据去重后的列数据中每个字符串数据对应的散列值进行分组,获得多个字符串组;其中,每个字符串组包括的各个字符串数据具有相同的字符串长度且对应相同的散列值;
所述处理模块对每个字符串组包括的字符串数据进行排序,获得每个排序字符串组;
所述处理模块根据去重后的列数据对应的索引值、各个排序字符串组以及各自对应的散列值,生成列数据的索引表;其中,去重后的列数据对应的索引值是预先获得的。
10.根据权利要求9所述的数据处理方法,其特征在于,还包括:
所述处理模块根据去重后的列数据对应的索引值替换对应的列数据,获得列数据对应的查询列数据;
所述处理模块根据列数据对应的压缩算法对列数据对应的查询列数据进行分段压缩,获得列数据对应的查询列数据的各段压缩数据。
11.一种基于权利要求1至3任一项所述的数据库系统的数据处理方法,其特征在于,包括:
处理模块从查询输入队列获取一个查询请求,所述查询请求包括数据表标识、至少一个字段以及查询关键词;
所述处理模块根据所述数据表标识以及所述至少一个字段,从存储模块查询获得所述至少一个字段中每个字段对应的各段压缩数据;其中,每个字段对应数据表的一列数据;
所述处理模块根据所述至少一个字段中每个字段对应的压缩算法对每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据;
所述处理模块根据所述查询关键词以及所述至少一个字段中每个字段对应的解压数据,获得查询结果。
12.根据权利要求11所述的数据处理方法,其特征在于,所述根据所述至少一个字段中每个字段对应的压缩算法对所述至少一个字段中每个字段对应的列数据的各段压缩数据进行解压缩,获得所述至少一个字段中每个字段对应的解压数据包括:
若判断获知所述字段对应的列数据的分段数量大于处理器线程数量,则根据所述字段对应的列数据对应的压缩算法采用处理器线程数量的线程并行对所述字段对应的列数据的进行解压;
若判断获知所述字段对应的列数据的分段数量小于等于所述处理器线程数量,则根据所述字段对应的列数据对应的压缩算法采用所述字段对应的列数据的分段数量的线程并行对所述字段对应的列数据的进行解压。
13.根据权利要求11所述的数据处理方法,其特征在于,还包括:
所述处理模块若判断获知所述字段对应的数据类型为预设类型,则根据所述字段获得所述字段对应的列数据的索引表;
对所述查询关键词按照字符串长度进行哈希散列,获得所述查询关键词对应的散列值;
所述处理模块根据所述查询关键词对应的散列值以及所述字段对应的列数据的索引表,获得所述查询关键词对应的索引值;
所述处理模块根据所述查询关键词对应的索引值以及所述字段对应的列数据对应的查询列数据,获得所述查询关键词对应的查询结果。
14.根据权利要求13所述的数据处理方法,其特征在于,在根据所述查询关键词对应的索引值以及所述字段对应的列数据对应的查询列数据,获得所述查询关键词对应的查询结果之前,还包括:
所述处理模块根据所述字段对应压缩算法对所述字段对应的列数据对应的查询列数据的各段压缩数据进行解压缩,获得所述字段对应的列数据对应的查询列数据。
15.根据权利要求11至14任一项所述的数据处理方法,其特征在于,还包括:
所述处理模块获取各个客户端发送的查询请求;
所述处理模块根据各个查询请求的接收时间先后顺序,将各个查询请求放入查询输入队列。
16.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求4至15任一项所述方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求4至15任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210588280.7A CN115168319A (zh) | 2022-05-27 | 2022-05-27 | 一种数据库系统、数据处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210588280.7A CN115168319A (zh) | 2022-05-27 | 2022-05-27 | 一种数据库系统、数据处理方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115168319A true CN115168319A (zh) | 2022-10-11 |
Family
ID=83482610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210588280.7A Pending CN115168319A (zh) | 2022-05-27 | 2022-05-27 | 一种数据库系统、数据处理方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115168319A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117289872A (zh) * | 2023-10-10 | 2023-12-26 | 北京三博脑科医院有限公司 | 一种计算机大数据存储系统 |
US20240012799A1 (en) * | 2022-07-05 | 2024-01-11 | Sap Se | Compression service using fpga compression |
-
2022
- 2022-05-27 CN CN202210588280.7A patent/CN115168319A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240012799A1 (en) * | 2022-07-05 | 2024-01-11 | Sap Se | Compression service using fpga compression |
US11995058B2 (en) * | 2022-07-05 | 2024-05-28 | Sap Se | Compression service using FPGA compression |
CN117289872A (zh) * | 2023-10-10 | 2023-12-26 | 北京三博脑科医院有限公司 | 一种计算机大数据存储系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI676903B (zh) | 藉由從駐存在內容相關篩中之主要資料元件取得資料的資料之無損縮減 | |
US20180011861A1 (en) | Managing storage of individually accessible data units | |
US10726016B2 (en) | In-memory column-level multi-versioned global dictionary for in-memory databases | |
US10289714B2 (en) | Compression of serialized B-tree data | |
CN115168319A (zh) | 一种数据库系统、数据处理方法及电子设备 | |
JP6847079B2 (ja) | 最適なソートキーの圧縮およびインデックスの再構築 | |
TW201902224A (zh) | 藉由使用主要資料篩的資料無損縮減及對於已經使用主要資料篩來無損地縮減的資料進行多維度搜索和內容關聯的檢索 | |
US11288275B2 (en) | Technique for fast join processing of dictionary encoded key columns in relational database systems | |
CN111083933B (zh) | 数据存储及获取方法和装置 | |
CN111611250A (zh) | 数据存储设备、数据查询方法、装置、服务器及存储介质 | |
TWI709047B (zh) | 對其已使用主要資料篩而被無損減少的資料履行多維搜尋、內容相關擷取、及關鍵字為基的搜尋和擷取 | |
Lu et al. | TridentKV: A read-optimized LSM-tree based KV store via adaptive indexing and space-efficient partitioning | |
CN114610708A (zh) | 一种向量数据处理方法及装置、电子设备及存储介质 | |
EP2881870B1 (en) | Data compression method | |
US11520763B2 (en) | Automated optimization for in-memory data structures of column store databases | |
Carter et al. | Nanosecond indexing of graph data with hash maps and VLists | |
Dong et al. | Record-aware compression for big textual data analysis acceleration | |
US20130173564A1 (en) | System and method for data compression using multiple encoding tables | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN106776772B (zh) | 一种数据检索的方法及装置 | |
CN111767287A (zh) | 数据导入方法、装置、设备及计算机存储介质 | |
US20240168929A1 (en) | Optimizing storage of data in row-oriented data storages | |
US11734282B1 (en) | Methods and systems for performing a vectorized delete in a distributed database system | |
US20230394017A1 (en) | Systems and methods for column store indices | |
Dong et al. | Record-aware two-level compression for big textual data analysis acceleration |
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 |