首页> 中国专利> 一种基于列式SQL数据库管理系统的时间序列数据库管理系统的设计方法

一种基于列式SQL数据库管理系统的时间序列数据库管理系统的设计方法

摘要

本发明提出了一种基于列式sql数据库管理系统上设计而成的时间序列数据库管理系统的设计方法,该方法首先支持列式sql数据的存储管理,之后再提出一种timetable,专门存储管理时间数据,实现了对时间序列数据这种特殊数据的管理查询。

著录项

  • 公开/公告号CN114840518A

    专利类型发明专利

  • 公开/公告日2022-08-02

    原文格式PDF

  • 申请/专利权人 天津询达数据科技有限公司;

    申请/专利号CN202110139259.4

  • 发明设计人 不公告发明人;

    申请日2021-02-02

  • 分类号G06F16/22(2019.01);G06F16/2458(2019.01);G06F21/62(2013.01);G06F21/60(2013.01);

  • 代理机构

  • 代理人

  • 地址 301899 天津市宝坻区中关村大道与西环北路交口中关村科技城展示中心262室

  • 入库时间 2023-06-19 16:12:48

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-06-20

    发明专利申请公布后的撤回 IPC(主分类):G06F16/22 专利申请号:2021101392594 申请公布日:20220802

    发明专利申请公布后的撤回

  • 2022-08-19

    实质审查的生效 IPC(主分类):G06F16/22 专利申请号:2021101392594 申请日:20210202

    实质审查的生效

  • 2022-08-02

    公开

    发明专利申请公布

说明书

技术领域

该领域主要属于数据库设计,主要包含时间序列这种特殊数据的存储查询。

背景技术

该数据库是基于列式SQL数据库进行开发设计的,包含的背景技术主要是SOCKET编程,客户端服务器编程等。

发明内容

该数据库管理系统的设计方法将SQL请求转变成一个对象,QueryContent, 再通过传递该对象,实现整个数据查询流程的高效传递,从而实现了数据库管理系统的功能。

该系统分为客户端和服务器,它们之间使用SOCKET进行通信,服务器这边首先接收到客户端的SQL请求,然后它会打开一个文本,从该文本中读取SQL请求的内容,然后通过分析该SQL请求的内容,生成一个对象,QueryContent, 然后将该对象作为一个参数,传递下去,直到本次查询终结。

该系统创建的数据表格包含两种,一种的普通的Table,另一种是TimeTable,其中TimeTable是专门用于存储时间序列数据的。

QueryContent作为本系统的核心参数传递者,它包含所有的查询有关的信息,一般说来,包含如下信息,string 格式的query_type, int 格式的query_type_code,string格式的config_home,一个CreateTable, 一个CreateTimeTable,一个InsertTable,一个SelectTable,一个DropTable, 一个DropTimeTable,一个DeleteTable,一个UpdateTable,一个CreateDatabase, 一个DropDatabase, 一个UseDatabase。除去string格式和int格式的,剩下的都是新的类,用于保存SQL请求参数的。其中CreateTable主要包含string格式的table_name,int格式的size, map的create_list。其中table_name为表格的名称,size为创建表格参数的个数,create_list为参数的具体内容。CreateTimeTable主要包含string格式的table_name,int格式的size, map的create_list, string格式的time_stamp。其中table_name为表格的名称,size为创建表格参数的个数,create_list为参数的具体内容,time_stamp为时间戳。InsertTable主要包含string格式的table_name,int格式的size,map的insert_list。SelectTable主要包含string格式的table_name, int格式的size,map的select_list。DropTable主要包含string格式的table_name, int格式的size。DropTimeTable主要包含string格式的table_name, int格式的size。DeleteTable主要包含string格式的table_name,int格式的size。UpdateTable主要包含string格式的table_name, int 格式的size。CreateDatabase主要包含string格式的database_name,DropDatabase主要包含string格式的database_name,UseDatabase主要包含string格式的database_name。一次SQL请求语句的分析,可以将该QueryContent的相关参数填满。并且配置好query_type_code。该query_type_code包含不同的类别,主要包含如下种类:CS_SELECT_TABLE, CS_SELECT_TABLE_ALL, CS_CREATE_TABLE, CS_CREATE_TIME_TABLE, CS_INSERT_TABLE, CS_UPDATE_TABLE, CS_DROP_TABLE, CS_DROP_TIME_TABLE, CS_DELETE_TABLE, CS_CREATE_DATABASE, CS_DROP_DATABASE, CS_USE_DATABASE, CS_SHOW_DATABASE,根据不同的类别,服务器执行不同的行为,CS_SELECT_TABLE主要执行selecttable的行为,CS_SELECT_TABLE_ALL主要执行select *的行为,CS_CREATE_TABLE主要执行create table的行为,CS_CREATE_TIME_TABLE主要执行create time table的行为,CS_INSERT_TABLE主要执行insert 的行为,CS_UPDATE_TABLE主要执行update table的行为,CS_DROP_TABLE主要执行drop table的行为,CS_DROP_TIME_TABLE主要执行drop timetable的行为,CS_DELETE_TABLE主要执行delete table的行为,CS_CREATE_DATABASE主要执行do create database的行为,CS_DROP_DATABASE主要执行drop database的行为,CS_USE_DATABASE主要执行use database的行为,CS_SHOW_DATABASE主要执行show database的行为。

该数据加密主要指在存储引擎层面的加密,包含二层数据加密。

第一层加密是指,将SQL请求中的创建数据库和表格的名称进行加密,即将其进行名称到数字的转化,我们使用哈希表来存储该对应关系,举个例子,我们需要创建名称为School的数据库,在该数据库中创建名称为Students, Driver的表格,我们先建立一个数据库名称的对面关系表格,里面主要是数据库名称的对应关系,比如map[‘school’] = 1,将school对应到1, 我们将其保存下来,称之为config.dat, 同时对于该数据库,我们生成哈希表,用于存储该数据库中表格名称的对应关系,比如,map[‘students’] = 1, map[‘driver’] = 2, 我们将其保存下来,命名为Set1.dat。这样,我们形成了表格名称的对应关系,students对应到1, driver对应到2,这样,我们有了第一层的加密,将数据库名称和表格名称转化成数字。我们将对应表格的数据文件保存为数据库序列+表格序列的形式,比如,该例子中school数据库中students表格中的数据信息,保存形式为Set1_dat_1_data.dat,其中Set1代表school数据库,dat_1代表students表格。对于时间表格,我们支持按一定时间间隔进行存储,比如,按天进行分段存储,我们有一个hashmap,该哈希表存储不同的时间戳及其对应的序列,比如map[‘2021-02-01’] = 1, map[‘2021-02-02’] = 2, 代表这两个时间段的数据分别存在不同的数据中,比如,该例子中school数据库中students表格中2021-02-01时间段的数据信息,保存形式为Set1_dat_1_1_data.dat,其中Set1代表school数据库,dat_1代表students表格,dat_1_1代表2021-02-01这天的数据。

第二层加密是指,将存储的数据文本进行加密,当我们创建了数据库,生成了表格的数据文件,数据文件分为类型文件和数据文件,我们对这两类文件都进行加密,使之明文不可见。具体的加密算法可以有不同的算法,只要使之明文不可见就行了。举个例子,我们将所有的数据文件进行按字母读取,然后对每个读取的字节加1,这样,然后生成新的数据文件,新的数据文件明文看不懂,旧的数据文件删除,从而达到数据文件保密的目的。

有了加密,也有对应的解密过程,对于第一层的加密,当服务器有需要读取相关数据库的数据或者相关数据表格的数据的读取修改的需求时,服务器先调用相关的哈希表,通过输入相关的数据库的名称和表格的名称,来找到相对应的数字,从而读取到相应的数据文件,比如,服务器要查找school里面所有的表格名称,先从config.dat中读取整个哈希表,输入school的名称,得到1,这样服务器就能知道去 Set1.dat查找相关的信息,类似的,如果要找students中的相关信息,则先从Set1.dat中读取整个哈希表,输入students的名称,得到1,这样,服务器就知道去Set1_dat_1_data.dat中读取相关的数据,然后对其进行操作,比如读取 ,删除等。如果要都时间戳中的数据,从Set1_dat_1.dat中读取哈希表,得到相关的时间戳,比如2020-02-01是时间戳为1,服务器就知道去Set1_dat_1_1_data.dat中读取相应的数据。

该列式SQL数据库主要说明数据存储查询的方法,相对于行式样存储,本系统是列式,比如,行式数据存储为,第一行,“1,tom1,”,第二行,”2 , tom2”等。在列式存储中为第一行,”1,2”, 第二行,“tom1, tom2”,相对应的,在读取的时候,会根据情况进行变化,列式的在读取完一行之后,根据SQL查找信息,找到相关信息,比如第一行的第二个,等等。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号