CN110597846A - 一种ksql处理方法和装置 - Google Patents

一种ksql处理方法和装置 Download PDF

Info

Publication number
CN110597846A
CN110597846A CN201910884471.6A CN201910884471A CN110597846A CN 110597846 A CN110597846 A CN 110597846A CN 201910884471 A CN201910884471 A CN 201910884471A CN 110597846 A CN110597846 A CN 110597846A
Authority
CN
China
Prior art keywords
sql
ksql
sql statement
button
command line
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.)
Granted
Application number
CN201910884471.6A
Other languages
English (en)
Other versions
CN110597846B (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.)
Golden Melon Seed Technology Development (beijing) Co Ltd
Original Assignee
Golden Melon Seed Technology Development (beijing) 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 Golden Melon Seed Technology Development (beijing) Co Ltd filed Critical Golden Melon Seed Technology Development (beijing) Co Ltd
Priority to CN201910884471.6A priority Critical patent/CN110597846B/zh
Publication of CN110597846A publication Critical patent/CN110597846A/zh
Application granted granted Critical
Publication of CN110597846B publication Critical patent/CN110597846B/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/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
    • 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/242Query formulation
    • G06F16/2433Query languages
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种KSQL处理方法和装置,其中,该方法包括:当检测到用户输入SQL语句的结束符时,KSQL编辑器在SQL语句的结束符所在命令行的下方命令行中插入SQL语句的SQL运行按钮;当检测到用户触发SQL运行按钮时,基于SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句;运行确定出的SQL语句。通过本发明实施例提供的KSQL处理方法和装置,通过SQL运行按钮,使用户在一个KSQL编辑器内可以逐一触发输入到该KSQL编辑器中的多个程序或者SQL语句,并查看该多个程序或者SQL语句的运行结果,操作简单方便。

Description

一种KSQL处理方法和装置
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种KSQL处理方法和装置。
背景技术
目前,Kafka结构化查询语言(Kafka Structured Query Language,KSQL)作为一种SQL语言,是面向Apache Kafka的一种数据流SQL引擎。KSQL降低了数据流处理这个领域的准入门槛,为使用Kafka处理数据的用户提供了一种具有交互界面的KSQL编辑器。用户可以在KSQL编辑器提供的交互界面中编写SQL语句并运行所编写的SQL语句。
相关技术中,单个KSQL编辑器中只能对单个程序或者SQL语句进行运行。
如果需要运行多个SQL语句或者程序,就需要用户分别打开多个KSQL编辑器,并分别在打开的每个KSQL编辑器中输入一个SQL语句或者程序,才能运行多个SQL语句或者程序,操作比较繁琐。
发明内容
为解决上述问题,本发明实施例的目的在于提供一种KSQL处理方法和装置。
第一方面,本发明实施例提供了一种KSQL处理方法,包括:
当检测到用户输入结构化查询语言SQL语句的结束符时,KSQL编辑器在所述SQL语句的结束符所在命令行的下方命令行中插入所述SQL语句的SQL运行按钮;
当检测到用户触发所述SQL运行按钮时,基于所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句;
运行确定出的SQL语句。
第二方面,本发明实施例还提供了一种KSQL处理装置,包括:
插入模块,用于当检测到用户输入结构化查询语言SQL语句的结束符时,在所述SQL语句的结束符所在命令行的下方命令行中插入所述SQL语句的SQL运行按钮;
确定模块,用于当检测到用户触发所述SQL运行按钮时,基于所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句;
运行模块,用于运行确定出的SQL语句。
第三方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述第一方面所述的方法的步骤。
第四方面,本发明实施例还提供了一种KSQL处理装置,所述KSQL处理装置包括有存储器,处理器以及一个或者一个以上的程序,其中所述一个或者一个以上程序存储于所述存储器中,且经配置以由所述处理器执行上述第一方面所述的方法的步骤。
本发明实施例上述第一方面至第四方面提供的方案中,在检测到用户输入SQL语句的结束符时,KSQL编辑器在SQL语句的结束符所在命令行的下方命令行中插入SQL语句的SQL运行按钮,并当检测到用户触发SQL运行按钮时,基于SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句,从而对用户输入到KSQL编辑器中的SQL语句进行运行,与相关技术中单个KSQL编辑器中只能对单个程序或者SQL语句进行运行的方式相比,无需打开多个KSQL编辑器,用户就可以在一个KSQL编辑器中输入多个程序或者SQL语句,KSQL编辑器就会自动对用户输入的多个程序或者SQL语句进行检测,并在用户输入的每个程序或者SQL语句下面插入SQL运行按钮,通过SQL运行按钮,用户在一个KSQL编辑器内可以逐一触发输入到该KSQL编辑器中的多个程序或者SQL语句,并查看该多个程序或者SQL语句的运行结果,操作简单方便。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种可应用于本发明实施例中的服务器的结构框图;
图2示出了本发明实施例1所提供的KSQL处理方法的流程图;
图3示出了本发明实施例1所提供的KSQL处理方法中,一种输入有SQL语句的KSQL编辑器的交互界面示意图;
图4示出了本发明实施例所提供的一种KSQL处理装置的结构示意图;
图5示出了本发明实施例所提供的另一种KSQL处理装置的结构示意图。
具体实施方式
目前,KSQL作为一种SQL语言,是面向Apache Kafka的一种数据流SQL引擎。KSQL降低了数据流处理这个领域的准入门槛,为使用Kafka处理数据的用户提供了一种具有交互界面的KSQL编辑器。所述KSQL编辑器也称KSQL Editor,是基于开源组件codemirror开发的一个基于网页的KSQL编辑器。用户可以在KSQL编辑器提供的交互界面中编写SQL语句并运行所编写的SQL语句。相关技术中,单个KSQL编辑器中只能对单个程序或者SQL语句进行运行。如果需要运行多个SQL语句或者程序,就需要用户分别打开多个KSQL编辑器,并分别在打开的每个KSQL编辑器中输入一个SQL语句或者程序,才能运行多个SQL语句或者程序,操作比较繁琐。
基于此,本申请提出一种KSQL处理方法和装置,在当检测到用户输入SQL语句的结束符时,KSQL编辑器在SQL语句的结束符所在命令行的下方命令行中插入SQL语句的SQL运行按钮,并当检测到用户触发SQL运行按钮时,基于SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句,从而对用户输入到KSQL编辑器中的SQL语句进行运行,无需打开多个KSQL编辑器,通过触发在每条SQL语句下的SQL运行按钮,用户就可以在一个KSQL编辑器内逐一触发输入到该KSQL编辑器中的多个程序或者SQL语句,并查看该多个程序或者SQL语句的运行结果,操作简单方便。
图1示出了一种可应用于本发明实施例中的上述服务器的结构框图。如图1所示,服务器200包括:存储器201、处理器202以及网络模块203。
存储器201可用于存储软件程序以及模块,如本发明实施例中的KSQL处理方法和装置对应的程序指令/模块,处理器202通过运行存储在存储器201内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现本发明实施例中的KSQL处理方法。存储器201可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。进一步地,上述软件程序以及模块还可包括:操作系统221以及服务模块222。其中操作系统221,例如可为LINUX、UNIX、WINDOWS,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通讯,从而提供其他软件组件的运行环境。服务模块222运行在操作系统221的基础上,并通过操作系统221的网络服务监听来自网络的请求,根据请求完成相应的数据处理,并返回处理结果给客户端。也就是说,服务模块222用于向客户端提供网络服务。
网络模块203用于接收以及发送网络信号。上述网络信号可包括无线信号或者有线信号。
可以理解,图1所示的结构仅为示意,服务器200还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。另外,本发明实施例中的服务器还可以包括多个具体不同功能的服务器。
所述KSQL编辑器,可以安装在上述的服务器中。
所述服务器中还设置有与所述KSQL编辑器连接的KSQL服务器(KSQL Server)和Kafka。
所述KSQL编辑器,用于将用户输入的SQL语句发送给KSQL服务器,并接收KSQL服务器返回的SQL语句的运行结果,并将KSQL服务器返回的SQL语句的运行结果展示给用户查看。
所述KSQL服务器,用于接收KSQL编辑器发送的SQL语句并运行,然后将SQL语句的运行结果返回给KSQL编辑器。
所述Kafka,是设置在服务器中的文件系统,用于存储日志。
所述KSQL编辑器,通过与所述Kafka交互,可以获取到所述Kafka中存储的日志以及日志名称。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请做进一步详细的说明。
实施例1
本实施例提出一种KSQL处理方法,执行主体是上述的KSQL编辑器。
参见图2所示的一种KSQL处理方法的流程图,本实施例提出的一种KSQL处理方法,可以包括以下具体步骤:
步骤100、当检测到用户输入SQL语句的结束符时,KSQL编辑器在所述SQL语句的结束符所在命令行的下方命令行中插入所述SQL语句的SQL运行按钮。
在上述步骤100中,用户除了输入SQL语句外,还可以输入KSQL编辑器能够运行的程序。
KSQL编辑器在用户输入SQL语句的时候进行实时检测,当检测到了键盘的输入事件“input”事件也即是“onchange”事件时,KSQL编辑器会接收到用户当前通过键盘输入的键值和字符串;KSQL编辑器会实时的检测用户输入的键值和字符串是否是SQL语句的结束符,当检测到SQL语句的结束符时,确定当前的SQL语句已经结束输入。
在一个实施方式中,SQL语句的结束符可以是:分号。当然,SQL语句的结束符也可以设置成其他的标点符号,这里不再一一赘述。
在检测到用户输入SQL语句的结束符后,KSQL编辑器会获取SQL语句的结束符所在命令行的行号信息,然后在SQL语句的结束符所在命令行的下方命令行插入一个SQL运行按钮。
比如:用户在KSQL编辑器中的第22命令行输入了SQL语句的结束符,那么KSQL编辑器就会在作为第22命令行的下方命令行的第23命令行以及第23命令行后面的命令行中插入一个SQL运行按钮。
为了插入SQL运行按钮,需要工作人员在KSQL编辑器构建一个超级文本标记语言(HyperText Markup Language,HTML)元素的分割(DIVision,DIV)块,这个DIV块必须包含按钮(BUTTON)元素,同时,在构建SQL运行按钮时还需要调整这个DIV块的层叠样式表,并将DIV的高度设置为和KSQL编辑器的行高一致,宽度为100%,背景和KSQL编辑器背景一致,同时为了对比更加明显一些,可以把设置背景色的透明度设置为90%。从而完成对这个HTML元素的DIV块(即SQL运行按钮)已经构建。在需要插入SQL运行按钮时,KSQL编辑器可以通过addLineWidget方法,将SQL运行按钮插入到KSQL编辑器中SQL语句的结束符所在命令行的下方命令行中。
为了确保插入SQL运行按钮的命令行没有当前没有SQL运行按钮,KSQL编辑器在插入SQL运行按钮之前,会获取缓存在服务器中的按钮插入列表,该按钮插入列表中记录了当前所有命令行的SQL运行按钮的插入状态。
在一个实施方式中,所述按钮插入列表,可以是……(10,true),(11,false)……;其中,(10,true)表示第10命令行已经存在了SQL运行按钮,(11,false)表示第11命令行不存在SQL运行按钮。只有状态是“false”的时候才进行SQL运行按钮的插入操作。即只有在KSQL编辑器确定SQL语句的结束符所在命令行的下一命令行没有SQL运行按钮时,才会进行SQL运行按钮的插入操作。
当在第23命令行插入SQL运行按钮后,KSQL编辑器就会对上述按钮插入列表进行更新,将(23,false)更新为(23,true),表示KSQL编辑器的第23命令行已经插入了SQL运行按钮。
在将SQL运行按钮插入KSQL编辑器后,这个插入的SQL运行按钮还无法响应用户的触发(点击或者选择)事件,因为在SQL运行按钮的点击事件触发时,SQL运行按钮的参数必须是一个固定的值,而如果传入当前的SQL语句的结束符所在命令行的行号信息,可能由于用户在后续的操作中换行而导致行号信息对应的命令行并不是真正SQL语句结束符所在命令行的行号信息。
为了避免上述问题,KSQL编辑器可以向插入的SQL运行按钮分配内存地址,并在分配给所述SQL运行按钮的内存地址中存储所述SQL运行按钮所在命令行的行号信息。
在一个实施方式中,KSQL编辑器可以向插入的SQL运行按钮分配SQL运行按钮标识和内存地址,将SQL运行按钮标识与SQL运行按钮关联起来,并以SQL运行按钮标识和内存地址的关联关系的方式,对SQL运行按钮和分配给该SQL运行按钮的内存地址进行存储。
所述SQL运行按钮的内存地址,可以是但不限于:0xafd3b7、以及0xadd3c6。内存地址的指针指向行对象(所述行对象,即所述SQL运行按钮所在命令行的行号信息),即在分配给所述SQL运行按钮的内存地址中存储所述SQL运行按钮所在命令行的行号信息。所以,通过SQL运行按钮的内存地址,就可以确定SQL运行按钮所在的命令行,从而使插入的SQL运行按钮能够响应用户的触发事件。
在通过以上步骤100插入SQL运行按钮后,可以继续执行以下步骤102至步骤104,运行用户输入KSQL编辑器的SQL语句。
步骤102、当检测到用户触发所述SQL运行按钮时,基于所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句。
具体地,为了确定需要运行的SQL语句,上述步骤102,可以执行以下步骤(1)至步骤(3):
(1)当检测到用户触发所述SQL运行按钮时,获取所述SQL运行按钮的内存地址中存储的所述SQL运行按钮所在命令行的行号信息;
(2)对所述行号信息对应命令行之前的命令行进行遍历,将遍历得到的最接近所述SQL运行按钮所在命令行的SQL语句的结束符确定为第一结束符;
(3)将遍历得到的所述第一结束符的上一个SQL语句的结束符确定为第二结束符,并将所述第一结束符和所述第二结束符之间的SQL语句确定为需要运行的SQL语句。
在上述步骤(1)中,当用户通过服务器的输入设备选择或者点击SQL运行按钮时,KSQL编辑器就会检测到用户触发所述SQL运行按钮的事件,从而获取到该SQL运行按钮关联的SQL运行按钮标识。
然后,根据SQL运行按钮标识,从存储的SQL运行按钮标识和内存地址的关联关系中获取到分配给SQL运行按钮的内存地址,并从内存地址中获取到所述SQL运行按钮所在命令行的行号信息。
在上述步骤(2)和上述步骤(3)中,基于SQL语句的结束符,按照行号信息从大到小的顺序,KSQL编辑器对所述行号信息对应命令行之前的命令行进行遍历,查询出所述行号信息对应命令行之前的命令行中用户输入的第一结束符和第二结束符。参见图3所示的一种输入有SQL语句的KSQL编辑器的交互界面示意图,当用户点击SQL语句“SELECTtable1.score FROM EXISTS;”下面的SQL运行按钮时,KSQL编辑器可以根据结束符,遍历得到第一结束符和第二结束符之间的SQL语句“SELECT table1.score FROM EXISTS;”确定为需要运行的SQL语句。
步骤104、运行确定出的SQL语句。
在上述步骤104中,为了运行确定出的SQL语句,所述KSQL编辑器,将确定出的SQL语句以及分配给该确定出的SQL语句的SQL运行按钮的内存地址发送给KSQL服务器,由KSQL服务器对确定出的SQL语句进行处理。
为了对确定出的SQL语句的运行结果进行展示,本实施例提出的KSQL处理方法,可以执行以下步骤(1)至步骤(3):
(1)对运行确定出的所述SQL语句后得到的运行结果进行展示;
(2)在所述SQL语句的SQL运行按钮所在命令行插入清空按钮,所述清空按钮,用于对展示在KSQL编辑器中的所述SQL语句的运行结果进行删除操作;
(3)向所述清空按钮分配内存地址,并在分配给所述清空按钮的内存地址中存储需要清空的SQL语句的运行结果。
在上述步骤(1)中,KSQL编辑器接收KSQL服务器返回的确定出的SQL语句的运行结果、和分配给该确定出的SQL语句的SQL运行按钮的内存地址;然后对KSQL服务器返回的确定出的SQL语句的运行结果进行解析。解析成功后,为了让用户更加清晰的看到KSQL服务器返回的确定出的SQL语句的运行结果,KSQL编辑器需要对KSQL服务器返回的确定出的SQL语句的运行结果进行处理,把一些不相关的信息隐藏起来。然后,基于分配给该确定出的SQL语句的SQL运行按钮的内存地址,确定该确定出的SQL语句的SQL运行按钮的行号信息;从而,把处理后的该确定出的SQL语句的运行结果插入到SQL运行按钮的行号信息对应命令行的下方进行展示。
在KSQL编辑器中,插入确定出的SQL语句的运行结果的过程与上述插入SQL运行按钮的过程类似,是通过在KSQL编辑器中嵌入HTML文本的方式实现的,在KSQL编辑器中嵌入HTML文本的过程也是现有技术,这里不再赘述。
然后,KSQL编辑器会释放分配给已经展示运行结果的SQL语句的内存地址,并将分配给该SQL语句的SQL运行按钮的内存地址和SQL运行按钮标识的关联关系删除。
在上述步骤(2)中,在展示运行结果的同时,所述KSQL编辑器会在所述SQL语句的SQL运行按钮所在命令行插入清空按钮,插入清空按钮的过程与插入SQL运行按钮的过程类似,通过现有技术就可以实现,这里不再赘述。
在插入清空按钮后,所述KSQL编辑器会把清空按钮所在命令行的SQL运行按钮的SQL运行按钮标识分配给清空按钮。将清空按钮所在命令行的SQL运行按钮的SQL运行按钮标识与清空按钮进行关联。
在上述步骤(3)中,向所述清空按钮分配内存地址后,可以建立分配给清空按钮的SQL运行按钮标识和内存地址的对应关系。
SQL语句的运行结果以文本的形式存储在分配给所述清空按钮的内存地址中。
当用户通过服务器的输入设备触发清空按钮时,本实施例提出的KSQL处理方法,还可以执行以下步骤(4)至步骤(5):
(4)当检测到用户触发清空按钮时,获取所述清空按钮的内存地址中存储的需要清空的SQL语句的运行结果;
(5)将所述清空按钮的内存地址中存储的需要清空的SQL语句的运行结果从KSQL编辑器中删除。
在上述步骤(4)中,当用户通过服务器的输入设备触发清空按钮时,所述KSQL编辑器,就可以检测到用户触发清空按钮,那么就会获取到该清空按钮关联的SQL运行按钮标识,并根据这个SQL运行按钮标识,从SQL运行按钮标识和内存地址的对应关系中,查询得到分配给该清空按钮的内存地址,然后从查询得到的内存地址中获取到需要清空的SQL语句的运行结果的文本。
在上述步骤(5)中,从KSQL编辑器中删除SQL语句的运行结果的HTML文本的过程,可以采用现有技术完成,这里不再赘述。
通过以上的步骤(1)至步骤(5)的内容可以看出,在展示SQL语句的运行结果时插入清空按钮,从而通过触发清空按钮,用户就可以将查看完的SQL语句的运行结果从KSQL编辑器的交互界面中删除,操作灵活且方便用户使用。
在相关技术中,SQL编辑器都没有对包含Kafka的日志名称以及字段元数据(Topicschema)的SQL语句的自动查询和展示功能。那么用户在编写KSQL的时候,需要通过Kafka的交互界面获取日志名称,然后从展示字段元数据的交互界面中获取日志模式中的字段的详情,然后才能编写SQL语句,非常浪费时间,而且容易出现SQL语句拼写错误。为了实现Kafka的日志名称以及与日志名称相关的字段元数据的自动查询和展示功能,本实施例提出的KSQL处理方法,还可以执行以下步骤(1)至步骤(3):
(1)获取用户输入的字符串;
(2)查询出包括所述字符串的Kafka的日志名称,并查询出包含所述日志名称的SQL语句需要的字段元数据,并将查询出的所述日志名称与所述字段元数据组合,形成包含所述日志名称的SQL语句;
(3)将形成的包含所述日志名称的SQL语句展示给用户。
在上述步骤(1)中,获取用户输入的字符串的过程,与上述步骤100中检测用户输入的SQL语句的结束符的过程类似,这里不再赘述。
在上述步骤(2)中,KSQL编辑器中存储有Kafka的日志名称列表,当获取到用户输入的字符串时,可以从日志名称列表中查询出包含所述字符串的Kafka的日志名称。然后将查询出的包含所述字符串的Kafka的日志名称,发送到KSQL编辑器中设置好的schema模块中,使得schema模块通过包含所述字符串的Kafka的日志名称去访问服务器中设置的schema寄存器,来获取包含所述日志名称的SQL语句需要的字段元数据。
所述schema寄存器,用于存储所有可以构建具有日志名称的SQL语句的字段元数据与对应日志名称的关联关系。
比如:用户输入的字符串是“table1”,那么,KSQL编辑器就会从日志名称列表中查询出包含“table1”的日志名称,并将查询出的包含“table1”的日志名称发送到KSQL编辑器中的schema模块中,使得schema模块通过包含“table1”的Kafka的日志名称去访问schema寄存器,将与包含“table1”的日志名称具有关联关系的字段元数据从schema寄存器中取出来。
这里,所述schema寄存器中与table1具有关联关系的字段元数据包括但不限于:name、score、以及birthday。
在将查询出的所述日志名称与所述字段元数据组合时,需要按照“日志名称.字段元数据”的SQL语句编写方式进行组合。
所以,当通过用户输入的字符串查询出的日志名称是table1,与table1具有关联关系的字段元数据分别是name、score、以及birthday时,可以形成“table1.name”、“table1.score”、以及“table1.birthday”三个不同的SQL语句。
这里,所述包含所述日志名称的SQL语句,可以是能够执行的完整的SQL语句,也可以是组成能够执行的完整的SQL语句的部分SQL语句。
在上述步骤(3)中,在一个实施方式中,将得到的SQL语句以列表的形式展示给用户查看。
通过以上的步骤(1)至步骤(3)描述的内容可以看出,通过查询出包括用户输入的字符串的Kafka的日志名称,并查询出包含所述日志名称的SQL语句需要的字段元数据,并将查询出的所述日志名称与所述字段元数据组合,形成包含所述日志名称的SQL语句,并将形成的包含所述日志名称的SQL语句展示给用户,从而实现了对包含Kafka的日志名称以及字段元数据的SQL语句的自动查询和展示功能,用户只需选择想要编写的SQL语句即可;无需用户在不同的交互界面选择Kafka的日志名称和字段元数据,就可以完成SQL语句的编写,操作简单方便。
进一步地,由于日志的数量有几万个,那么在展示给用户的SQL语句中,KSQL编辑器中缓存有展示数量阈值,并在展示SQL语句时,将用户最常用的展示数量阈值对应数量的SQL语句展示给用户,来保证所述KSQL编辑器的效率而不至于卡顿,影响用户使用体验。
通过以上的内容可以看出,本申请实施例给出的KSQL编辑器在对KSQL进行处理时,不会像传统的SQL编辑器,只能一条一条SQL语句运行,而是可以根据用户的需要多批次同时运行,可以将多条语句同一时刻提交到KSQL服务器,并将运行结果分别嵌入到对应的SQL语句下方,使用户能够直观的查看所有SQL语句的运行结果。
综上所述,本实施例提出的KSQL处理方法,在检测到用户输入SQL语句的结束符时,KSQL编辑器在SQL语句的结束符所在命令行的下方命令行中插入SQL语句的SQL运行按钮,并当检测到用户触发SQL运行按钮时,基于SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句,从而对用户输入到KSQL编辑器中的SQL语句进行运行,与相关技术中单个KSQL编辑器中只能对单个程序或者SQL语句进行运行的方式相比,无需打开多个KSQL编辑器,用户就可以在一个KSQL编辑器中输入多个程序或者SQL语句,KSQL编辑器就会自动对用户输入的多个程序或者SQL语句进行检测,并在用户输入的每个程序或者SQL语句下面插入SQL运行按钮,通过SQL运行按钮,用户在一个KSQL编辑器内可以逐一触发输入到该KSQL编辑器中的多个程序或者SQL语句,并查看该多个程序或者SQL语句的运行结果,操作简单方便。
基于同一发明构思,本申请实施例中还提供了与上述KSQL处理方法和对应的KSQL处理装置,由于本申请实施例中的装置解决问题的原理与本申请实施例1所述的KSQL处理方法相似,因此装置的实施可以参见前述KSQL处理方法的实施,重复之处不再赘述。
实施例2
本实施例提出一种KSQL处理装置,用于执行上述实施例1提出的KSQL处理方法。
参见图4所示的一种KSQL处理装置的结构示意图,本实施例提出的KSQL处理装置,包括:
插入模块400,用于当检测到用户输入结构化查询语言SQL语句的结束符时,在所述SQL语句的结束符所在命令行的下方命令行中插入所述SQL语句的SQL运行按钮;
确定模块402,用于当检测到用户触发所述SQL运行按钮时,基于所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句;
运行模块404,用于运行确定出的SQL语句。
为了运行用户输入的SQL语句,本实施例提出的KSQL处理装置,还包括:
分配模块,用于向插入的SQL运行按钮分配内存地址,并在分配给所述SQL运行按钮的内存地址中存储所述SQL运行按钮所在命令行的行号信息。
所述确定模块,具体用于:
当检测到用户触发所述SQL运行按钮时,获取所述SQL运行按钮的内存地址中存储的所述SQL运行按钮所在命令行的行号信息;
对所述行号信息对应命令行之前的命令行进行遍历,将遍历得到的最接近所述SQL运行按钮所在命令行的SQL语句的结束符确定为第一结束符;
将遍历得到的所述第一结束符的上一个SQL语句的结束符确定为第二结束符,并将所述第一结束符和所述第二结束符之间的SQL语句确定为需要运行的SQL语句。
为了对确定出需要运行的SQL语句的运行结果进行展示,本实施例提出的KSQL处理装置,还包括:
展示模块,用于对运行确定出的所述SQL语句后得到的运行结果进行展示;
处理模块,用于在所述SQL语句的SQL运行按钮所在命令行插入清空按钮,所述清空按钮,用于对展示在KSQL编辑器中的所述SQL语句的运行结果进行删除操作;
内存地址分配模块,用于向所述清空按钮分配内存地址,并在分配给所述清空按钮的内存地址中存储需要清空的SQL语句的运行结果。
综上所述,本实施例提出的KSQL处理装置,在检测到用户输入SQL语句的结束符时,KSQL编辑器在SQL语句的结束符所在命令行的下方命令行中插入SQL语句的SQL运行按钮,并当检测到用户触发SQL运行按钮时,基于SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句,从而对用户输入到KSQL编辑器中的SQL语句进行运行,与相关技术中单个KSQL编辑器中只能对单个程序或者SQL语句进行运行的方式相比,无需打开多个KSQL编辑器,用户就可以在一个KSQL编辑器中输入多个程序或者SQL语句,KSQL编辑器就会自动对用户输入的多个程序或者SQL语句进行检测,并在用户输入的每个程序或者SQL语句下面插入SQL运行按钮,通过SQL运行按钮,用户在一个KSQL编辑器内可以逐一触发输入到该KSQL编辑器中的多个程序或者SQL语句,并查看该多个程序或者SQL语句的运行结果,操作简单方便。
基于同一发明构思,本申请实施例中还提供了与上述KSQL处理方法和对应的计算机存储介质和KSQL处理装置,由于本申请实施例中的计算机存储介质和装置解决问题的原理与本申请实施例1所述的KSQL处理方法相似,因此装置的实施可以参见前述KSQL处理方法的实施,重复之处不再赘述。
实施例3
本实施例提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例1描述的KSQL处理方法的步骤。具体实现可参见方法实施例1,在此不再赘述。
此外,参见图5所示的另一种KSQL处理装置的结构示意图,本实施例还提出一种KSQL处理装置,上述KSQL处理装置包括总线51、处理器52、收发机53、总线接口54、存储器55和用户接口56。上述KSQL处理装置包括有存储器55。
本实施例中,上述KSQL处理装置还包括:存储在存储器55上并可在处理器52上运行的一个或者一个以上的程序,经配置以由上述处理器执行上述一个或者一个以上程序用于进行以下步骤(1)至步骤(3):
(1)当检测到用户输入结构化查询语言SQL语句的结束符时,KSQL编辑器在所述SQL语句的结束符所在命令行的下方命令行中插入所述SQL语句的SQL运行按钮;
(2)当检测到用户触发所述SQL运行按钮时,基于所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句;
(3)运行确定出的SQL语句。
收发机53,用于在处理器52的控制下接收和发送数据。
在图5中,总线架构(用总线51来代表),总线51可以包括任意数量的互联的总线和桥,总线51将包括由通用处理器52代表的一个或多个处理器和存储器55代表的存储器的各种电路链接在一起。总线51还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本实施例不再对其进行进一步描述。总线接口54在总线51和收发机53之间提供接口。收发机53可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。例如:收发机53从其他设备接收外部数据。收发机53用于将处理器52处理后的数据发送给其他设备。取决于计算系统的性质,还可以提供用户接口56,例如小键盘、显示器、扬声器、麦克风、操纵杆。
处理器52负责管理总线51和通常的处理,如前述上述运行通用操作系统。而存储器55可以被用于存储处理器52在执行操作时所使用的数据。
可选的,处理器52可以是但不限于:中央处理器、单片机、微处理器或者可编程逻辑器件。
可以理解,本发明实施例中的存储器55可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本实施例描述的系统和方法的存储器55旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器55存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统551和应用程序552。
其中,操作系统551,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序552,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序552中。
综上所述,本实施例提出的计算机存储介质和KSQL处理装置,在检测到用户输入SQL语句的结束符时,KSQL编辑器在SQL语句的结束符所在命令行的下方命令行中插入SQL语句的SQL运行按钮,并当检测到用户触发SQL运行按钮时,基于SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句,从而对用户输入到KSQL编辑器中的SQL语句进行运行,与相关技术中单个KSQL编辑器中只能对单个程序或者SQL语句进行运行的方式相比,无需打开多个KSQL编辑器,用户就可以在一个KSQL编辑器中输入多个程序或者SQL语句,KSQL编辑器就会自动对用户输入的多个程序或者SQL语句进行检测,并在用户输入的每个程序或者SQL语句下面插入SQL运行按钮,通过SQL运行按钮,用户在一个KSQL编辑器内可以逐一触发输入到该KSQL编辑器中的多个程序或者SQL语句,并查看该多个程序或者SQL语句的运行结果,操作简单方便。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种KSQL处理方法,其特征在于,包括:
当检测到用户输入结构化查询语言SQL语句的结束符时,KSQL编辑器在所述SQL语句的结束符所在命令行的下方命令行中插入所述SQL语句的SQL运行按钮;
当检测到用户触发所述SQL运行按钮时,基于所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句;
运行确定出的SQL语句。
2.根据权利要求1所述的方法,其特征在于,在当检测到用户触发所述SQL运行按钮时,检测所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句步骤之前,还包括:
向插入的SQL运行按钮分配内存地址,并在分配给所述SQL运行按钮的内存地址中存储所述SQL运行按钮所在命令行的行号信息;
当检测到用户触发所述SQL运行按钮时,基于所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句,包括:
当检测到用户触发所述SQL运行按钮时,获取所述SQL运行按钮的内存地址中存储的所述SQL运行按钮所在命令行的行号信息;
对所述行号信息对应命令行之前的命令行进行遍历,将遍历得到的最接近所述SQL运行按钮所在命令行的SQL语句的结束符确定为第一结束符;
将遍历得到的所述第一结束符的上一个SQL语句的结束符确定为第二结束符,并将所述第一结束符和所述第二结束符之间的SQL语句确定为需要运行的SQL语句。
3.根据权利要求1所述的方法,其特征在于,还包括:
对运行确定出的所述SQL语句后得到的运行结果进行展示;
在所述SQL语句的SQL运行按钮所在命令行插入清空按钮,所述清空按钮,用于对展示在KSQL编辑器中的所述SQL语句的运行结果进行删除操作;
向所述清空按钮分配内存地址,并在分配给所述清空按钮的内存地址中存储需要清空的SQL语句的运行结果。
4.根据权利要求3所述的方法,其特征在于,还包括:
当检测到用户触发清空按钮时,获取所述清空按钮的内存地址中存储的需要清空的SQL语句的运行结果;
将所述清空按钮的内存地址中存储的需要清空的SQL语句的运行结果从KSQL编辑器中删除。
5.根据权利要求1所述的方法,其特征在于,还包括:
获取用户输入的字符串;
查询出包括所述字符串的Kafka的日志名称,并查询出包含所述日志名称的SQL语句需要的日志字段元数据,并将查询出的所述日志名称与所述日志字段元数据组合,形成包含所述日志名称的SQL语句;
将形成的包含所述日志名称的SQL语句展示给用户。
6.一种KSQL处理装置,其特征在于,包括:
插入模块,用于当检测到用户输入结构化查询语言SQL语句的结束符时,在所述SQL语句的结束符所在命令行的下方命令行中插入所述SQL语句的SQL运行按钮;
确定模块,用于当检测到用户触发所述SQL运行按钮时,基于所述SQL运行按钮所在命令行之前的SQL语句的结束符,确定需要运行的SQL语句;
运行模块,用于运行确定出的SQL语句。
7.根据权利要求6所述的装置,其特征在于,还包括:
分配模块,用于向插入的SQL运行按钮分配内存地址,并在分配给所述SQL运行按钮的内存地址中存储所述SQL运行按钮所在命令行的行号信息;
所述确定模块,具体用于:
当检测到用户触发所述SQL运行按钮时,获取所述SQL运行按钮的内存地址中存储的所述SQL运行按钮所在命令行的行号信息;
对所述行号信息对应命令行之前的命令行进行遍历,将遍历得到的最接近所述SQL运行按钮所在命令行的SQL语句的结束符确定为第一结束符;
将遍历得到的所述第一结束符的上一个SQL语句的结束符确定为第二结束符,并将所述第一结束符和所述第二结束符之间的SQL语句确定为需要运行的SQL语句。
8.根据权利要求6所述的装置,其特征在于,还包括:
展示模块,用于对运行确定出的所述SQL语句后得到的运行结果进行展示;
处理模块,用于在所述SQL语句的SQL运行按钮所在命令行插入清空按钮,所述清空按钮,用于对展示在KSQL编辑器中的所述SQL语句的运行结果进行删除操作;
内存地址分配模块,用于向所述清空按钮分配内存地址,并在分配给所述清空按钮的内存地址中存储需要清空的SQL语句的运行结果。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1-5任一项所述的方法的步骤。
10.一种KSQL处理装置,其特征在于,所述KSQL处理装置包括有存储器,处理器以及一个或者一个以上的程序,其中所述一个或者一个以上程序存储于所述存储器中,且经配置以由所述处理器执行权利要求1-5任一项所述的方法的步骤。
CN201910884471.6A 2019-09-18 2019-09-18 一种ksql处理方法和装置 Active CN110597846B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910884471.6A CN110597846B (zh) 2019-09-18 2019-09-18 一种ksql处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910884471.6A CN110597846B (zh) 2019-09-18 2019-09-18 一种ksql处理方法和装置

Publications (2)

Publication Number Publication Date
CN110597846A true CN110597846A (zh) 2019-12-20
CN110597846B CN110597846B (zh) 2022-04-08

Family

ID=68861045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910884471.6A Active CN110597846B (zh) 2019-09-18 2019-09-18 一种ksql处理方法和装置

Country Status (1)

Country Link
CN (1) CN110597846B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102968369A (zh) * 2012-03-23 2013-03-13 中国科学院计算技术研究所 一种动态断点的自动生成方法及系统
CN105389251A (zh) * 2014-08-28 2016-03-09 Sap欧洲公司 结构化查询语言调试器
CN106445803A (zh) * 2016-08-17 2017-02-22 中国航空工业集团公司西安飞行自动控制研究所 一种安全关键嵌入式软件目标码覆盖率分析方法
CN106682064A (zh) * 2016-11-03 2017-05-17 用友网络科技股份有限公司 企业报表的取数装置和取数方法
CN109977138A (zh) * 2019-03-08 2019-07-05 浙江新再灵科技股份有限公司 一种基于Kafka和SQL的数据查询方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102968369A (zh) * 2012-03-23 2013-03-13 中国科学院计算技术研究所 一种动态断点的自动生成方法及系统
CN105389251A (zh) * 2014-08-28 2016-03-09 Sap欧洲公司 结构化查询语言调试器
CN106445803A (zh) * 2016-08-17 2017-02-22 中国航空工业集团公司西安飞行自动控制研究所 一种安全关键嵌入式软件目标码覆盖率分析方法
CN106682064A (zh) * 2016-11-03 2017-05-17 用友网络科技股份有限公司 企业报表的取数装置和取数方法
CN109977138A (zh) * 2019-03-08 2019-07-05 浙江新再灵科技股份有限公司 一种基于Kafka和SQL的数据查询方法

Also Published As

Publication number Publication date
CN110597846B (zh) 2022-04-08

Similar Documents

Publication Publication Date Title
US9047346B2 (en) Reporting language filtering and mapping to dimensional concepts
US7895179B2 (en) Asynchronous updating of web page data views
KR970007759B1 (ko) 컴퓨터 시스템내의 데이타를 유지하기 위한 오브젝트 관리 장치
US7254773B2 (en) Automated spell analysis
US8375356B2 (en) Tabular completion lists
US11086859B2 (en) Natural language query resolution for high dimensionality data
US11361008B2 (en) Complex query handling
US20040145601A1 (en) Method and a device for providing additional functionality to a separate application
US8640103B2 (en) Rapid application innovation utilizing an orthogonal programming component
JP2004139304A (ja) ハイパーテキスト検査装置および方法並びにプログラム
CN112384907A (zh) 与文本挖掘集成的规范编辑系统
CN113076104A (zh) 页面生成方法、装置、设备及存储介质
KR970702523A (ko) 인터페이스 장치 및 방법(interface device and method)
KR20130105287A (ko) 클라이언트 어플리케이션 및 웹 페이지 통합
US7610297B2 (en) Method to automate resource management in computer applications
US20220214872A1 (en) Dynamic review of software updates after pull requests
US8239400B2 (en) Annotation of query components
CN114201615B (zh) 基于数据快照的科研数据变动回顾方法及服务器
CN111427577A (zh) 代码处理方法、装置及服务器
US5946499A (en) Method and apparatus for processing text inputs from multiple input devices in a plurality of applications
US8433729B2 (en) Method and system for automatically generating a communication interface
CN112799760A (zh) 一种表单渲染方法及其装置
US9104573B1 (en) Providing relevant diagnostic information using ontology rules
CN110597846B (zh) 一种ksql处理方法和装置
CN112948400A (zh) 一种数据库管理方法、数据库管理装置及终端设备

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