暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

亚信安慧AntDB-S对JDBC的改造

北陌 2023-12-14
359

摘要:AntDB-S是一款分布式流处理数据库,支持实时数据的流式处理,而JDBC是连接数据库的重要工具,但是JDBC原有的特性并不支持流式处理的push模式,只能一次性返回所有数据且收到backend的结束消息才能返回数据,所以要做一些适当的改造。

关键字:流式数据,JDBC,流式查询。

一、流式查询简介

流式查询是一种基于SQL语言的查询方式,用于对流式数据进行实时分析和处理。流式数据是指持续产生的数据,如传感器数据、日志数据、社交媒体数据等,其主要特点有:

  • 流式查询是一种声明式的查询方式,即用户只需指定想要的结果,而不需要指定具体的执行过程。
  • 流式查询是一种连续的查询方式,即用户只需提交一次查询,就可以持续地获取最新的结果,而不需要重复地执行查询。
  • 流式查询是一种增量的查询方式,即用户可以根据流式数据的变化,实时地更新结果,而不需要重新计算所有的数据。

流式查询的应用场景非常广泛,如实时监控、实时报警、实时推荐、实时决策等。流式查询的技术挑战也非常复杂,包含多种特性,如数据的时序性、数据的不确定性、数据的多样性、数据的大规模等。

二、AntDB-S中JDBC的使用方式

为了和JDBC的PULL模式保持一样的用法,只在executeQuery 以及 rs.next()内部进行了一定的改造,用法基本一致,在executeQuery执行时,会接收第一条数据,若数据没有到达则等待在那里,数据到来后,在rs.next()内部继续等待,例子如下:

图1 :JDBC-S示例代码

三、AntDB-S中JDBC的修改概述

ANTDB-S JDBC修改了executeQuery和rs.next(),如果执行sql为emit change的push查询,部分执行逻辑如下图所示:

executeQuery()

executeWithFlags(0)

execute()

executeInternal(cachedQuery, queryParameters, flags);

execute(Query[] queries, @Nullable ParameterList[] parameterLists,

      BatchResultHandler batchHandler, int maxRows, int fetchSize, int flags)

executeByStep(Query query, @Nullable ParameterList parameters,

      ResultHandler handler,

      int maxRows, int fetchSize, int flags)

processResultsBySteps(ResultHandler handler, int flags, boolean adaptiveFetch)

剔除了结束部分 ,processResultsBySteps接受到一条数据就跳出循环,在rs.next()也进行了修改,如果执行sql为emit changes 部分执行逻辑如下:

next()

 List<Tuple> tuples = connection.getQueryExecutor().executeProcess();

processResultsBySteps(ResultHandler handler, int flags, boolean adaptiveFetch)

结束即取消push查询则需要满足一定条件跳出循环,并且调用close时再调用killtimermask()等取消接口。

四、总结

本文主要讲解了流式查询的基本概念,AntDB-S中的JDBC与常规JDBC的异同之处,以及AntDB-S是如何修改JDBC接口的等等。限于篇幅,一些处理数据的内容没有涉及,小伙伴们可以持续关注AntDB数据库公众号。

关于亚信安慧AntDB数据库

AntDB数据库始于2008年,在运营商的核心系统上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行超十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。   

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论