当前位置: 首页 > 科技观察

这次从一张图说起SQL-to-SQL翻译器

时间:2023-03-22 00:31:29 科技观察

,就是下图。画完之后,心情无比舒畅。使整个执行过程可控、可扩展。还记得上学的时候,在数学建模课上,老师为了“证明有四条腿的椅子的四条腿在同一平面上的概率”写了四道板书。我们很困惑,说:“看,它多美啊!”。我现在有点理解他的状态了。眼尖的同学可能已经发现了,没错,这里就是Flink的流程设计,供参考。简单地说,输入->转换-??>输出经典的三段论构造。这里我们抽象了输入SourceFunction和输出SinkFunction,但是不像Flink,输入输出集成了同一个接口,可以自由转换。从需求的角度来说,没有必要使用Sql-to-Sql-to-Sql。在转换过程中,我们引用了DSL来承担前面的SQL解析和后面的SQL生成。所以转换自然分为两部分,分别是输入转换(SourceMapper)和输出转换(SinkMapper)来定义转换和否,以及如何完成转换,我们可以通过java自带的Function接口轻松实现.一个输入可以连接到N个输出,输出的方向完全由实现SinkFunction的对象来实现。如果以后把任务并行化,Pipline对外提供高阶函数,就不好看了...DEMO:publicstaticvoidmain(String[]args)throwsIOException{//InputFileSourceFunctionfileSourceFunction=newFileSourceFunction();fileSourceFunction.init(newFile("fff.txt"));//输出PrintlnSinkFunctionprintSinkFunction=newPrintlnSinkFunction();ListSinkFunctionlistSinkFunction=newListSinkFunction();ansformPeplinetp=newTransformPepline();//添加输入输出.addSource(fileSourceFunction)。addSink(printSinkFunction().addSinklistSinkFunction);//自定义转换动作.getTargetSql();}});//执行tp.execute();System.out.println(listSinkFunction.getLists());}本文转载自微信公众号“七思妙想”,可通过以下二维码关注。转载本文请联系七思妙想公众号。