一种监控系统内存数据库通用交互方法

文档序号:6481526阅读:169来源:国知局

专利名称::一种监控系统内存数据库通用交互方法
技术领域
:本发明涉及一种监控系统内存数据库的通用交互方法,属于计算机系统控制
技术领域

背景技术
:实时控制领域的监控系统所监控的数据变化非常快,如电网监控系统中,常常需要在几秒内刷新几千甚至几万个模拟量和数字量,工业控制领域监控系统也存在同样的需求,如一个具有ioooo个点的工厂,如果每两秒中变化一次的话,每秒钟就会有5000个量发生变化,因此在电力系统和工业控制领域的监控系统都会使用属于本系统的专门的内存数据库,一般来说该内存数据库都会使用二维表来存储数据,并提供专用接口。技术人员使用监控系统软件对项目进行工程实施,当遇到功能需要扩展的需求时,可以使用专用接口进行二次开发。但是不同的项目由于需求不同可能使用不同的监控系统,而不同的监控系统所提供的内存数据库不同,因此提供的专用接口也不同。因此在二次开发的过程就需要使用到监控系统软件各自的内存数据交互工具,这样就造成了技术人员在二次开发调试方面的不方便。
发明内容本发明所要解决的技术问题是提供一种通用的交互方法来屏蔽各个不同的监控系统的内存数据库的内容。为解决上述技术问题,本发明提供一种监控系统内存数据库通用交互方法,其特征在于包括以下步骤(l)定义类SQL语言,输入所需的类SQL语句;类SQL语言是一套精简的SQL语言,类SQL语法是一个简化的数据更新和查询语法。所述类SQL语句具有的DML操作包括SELECT,DELETE,INSERT,UPDATE。4每种SQL又分成不同的语句段。SELECT语句SELECT,域表达式段,FROM,表名段,WHERE子句段DELETE语句DELETE,表名段,WHERE子句段INSERT语句INSERTINTO,表名段,域名序列段,域值序列段UPDATE语句UPDATE,表名段,SET,赋值语句段,WHERE子句段(2)将输入的类SQL语言翻译成目标代码;用户可根据自己的需要输入自己的类SQL语句,本步骤读取此语句,进行翻译,目的是将屏蔽各个的内存数据库的专用接口,只需要使用标准的类SQL语句就可以与内存数据库进行交互。这样应用逻辑从应用系统中分离出来,为应用系统大大增加了灵活性。(3)执行翻译生成的目标代码,调用内存数据库专用的接口进行交互。本发明所达到的有益效果本发明的监控系统内存数据库通用交互方法采用类SQL的非过程化编程语言作为统一的前端访问方式,后台则封装各个不同内存数据库的接口转化为本发明所定义的类SQL语言,屏蔽了各个内存数据库的专有交互方式,使用统一的类SQL语句同各个不同厂家的内存数据库进行交互,适用于各种UNIX搡作系统,LINUX操作系统以及WINDOWS操作系统,通用性强;另外所有功能完全是在应用层实现,不需要借助任何操作系统自带的软件。图l为本发明中内存数据库通用交互方法数据流程图;图2为本发明中类SQL所定义的语法图;图3为本发明中类SQL所定义的语法翻译过程图;图4为本发明中类SQL所定义的语法翻译结果的解释执行过程图。具体实施例方式图1为本发明中内存数据库通用交互方法数据流程图。类SQL语言的定义类SQL语法是一个简化的数据更新和査询语法。首先需要定义的是关键字包括SELECT、DELETE、INSERTINTO、UPDATE、FROM、SET、ORDERBY、WHERE、以及运算符、内部函数等,表1为类SQL所定义的保留字表。保留字备注BY排序搡作ORDERBY中BY关键字DELETEDML语句中删除操作F應DML语句中FROM关键字GROUP分组排序定义中GROUP关键字INSERTDML语句中插入操作ORDER排序搡作ORDERBY中ORDER关键字SELECTDML语句中查询操作SETDML语句中修改操作中的SET关键字UPDATEDML语句中修改操作关键字VALUESDML语句中修改操作中的VALUES关键字WHEREDML语句中条件关键字AND逻辑操作符与NOT逻辑操作符非OR逻辑操作符或LIKE字符匹配操作符INSQL中IN操作符DISTINCTSQL中查找不重复记录的操作符ASCSQL中升序査询关键字DESCSQL中降序査询关键字ABS标准数学函数ABSACOS标准数学函数ACOSAscn标准数学函数ASCIIAS1N标准数学函数ASINATAN标准数学函数ACOSAVG单行函数AVG6C0NCAT字符函数CONCATCOS标准数学函数cosCOUNT单行函数COUNTEXP标准数学函数EXPLENGTH字符函数LENGTHLN标准数学函数LNLOG标准数学函数LOGMAX单行函数MAXMIN单行函数MINPOW标准数学函数POWREPLACE字符函数REPLACEROUND标准数学函数ROUNDSIN标准数学函数SINSQRT标准数学函数SQRTSUBSTR字符函数SUBSTRSUM标准数学函数SUMSYSDATE取当前时间函数字符形式输出SYSSECOND取当前时间函数数值形式输出TAN标准数学函数TANTO—DATE时间函数将数值时间值转化为字符时间值TO—SECOND时间函数将字符时间值转化为数值时间值!搡作符!+搡作符+—搡作符-操作符*/操作符/%操作符%7<table>tableseeoriginaldocumentpage8</column></row><table>然后定义类SQL语法,图2为本发明中类SQL所定义的语法图,语法图上的顺序隐含了各个操作符的运算优先级。翻译输入的类SQL语言翻译的过程是将满足步骤一中定义的类SQL语言的语法进行解释。用户可根据自己的需求灵活定义需要交互的类SQL语句,这样就将应用逻辑从应用系统中分离出来,不需要了解内存数据库的专用接口,为应用系统大大增加了灵活性。对用户输入的交互信息(类SQL语句),系统只能釆用解释的方法执行,不可能釆用编译的方式。解释器用于实现源代码的解释执行功能,它区别于编译程序在于编译程序将高级语言源程序翻译成具体计算机的机器语言,而解释器先将源程序翻译成与具体机器无关的中间代码,再在虛拟机(VirtualMachine)上解释执行中间代码。在详细描述前先说明术语文法文法是对语言结构的定义和描述。文法有很多表示形式,如语法图、扩充的BNF式等。词法分析将字符串形式的程序代码分解成具有独立语法意义的单词符号(TOKEN)的过程称为词法分析。执行词法分析任务的程序成为词法分析器或者词法分析程序。词法分析器读源程序的字符,把它们组成记号流。记号流的每个记号代表逻辑上有内聚力的字符序列,比如标识符、关键字(如SELECT、WHERE等)、标点符号或多个字符的算符(如〉=等)。形成记号的字符序列叫做该记号的单词。在此过程中,词法分析器会进行简单的拼写检查。语法分析使用定义源语言的文法来识别源程序的各种结构,这种过程叫做语法分析。执行语法分析任务的程序成为语法分析器或者语法分析程序。语法分析程序的功能是从词法分析程序取得源代码(单词串形式的),并将一个或多个单词组合成语法类。语义分析语义分析阶段检查程序的语义正确性,以保证程序各部分能有意义地结合在一起,并为以后的代码生成阶段收集类型信息。图3为本发明中类SQL所定义的语法翻译过程图。翻译的过程首先将对源代码(类SQL语句)进行词法分析、语法分析、语义分析,把源代码翻译成虛拟机的中间代码;然后逐条解释此指令代码。先把输入的类SQL语句翻译成假想计算机的目标代码程序,这个过程中采用一遍扫描,即以语法分析为核心,当语法分析程序需要读进一个新的单词符号时,它就调用词法分析程序,词法分析程序则从源代码依次读进字符,并组合成单词符号送回语法分析程序。当语法分析程序识别出某一语法成分后,它就调用语本发明釆用递归子程序法完成以上功能。文法是具有递归性(包括直接递归和间接递归)的,本发明釆用递归子程序方法(也称递归下降分析法,是一种自顶向下的分析方法)进行语法分析,即为文法中每一个非终结符号U(他们都代表一种语法成分)都编写一个分析子程序,以完成该非终结符所对应的语法成分的分析和识别任务。该语法成分的分析子程序的功能是用该语法成分的规则的右部符号串去匹配输入串。分析过程是按文法规则自顶向下一级一级的分配任务,即调用有关的子程序来完成。当翻译程序根据文法和当前的输入符号预测下一个语法成分为U时,即预测到待分配的输入符号串可以从U出发所推导出的符号串相匹配时,就确定U为目标,并调用分析和识别U的子程序。在分析和识别U的过程中,有可能还要确定其他子目标并调用相应的子程序。只有再被调用的分析和识别某语法成分的子程序匹配输入串成功并正确返回时,该语法成分才算真正获得了识别,并确定输入串无语法错误。采用递归子程序法,对语言文法有一定的要求(1)该文法必须是非递归的;(2)文法的任一非终结符,若在其规则右部有多个选择时,则各选择所生成的终结符号串的头符号集合要两两不相交;(3)若文法具有形如A=>£的规则,则A的头符号集合不得与它生成的任何符号串的后继符号集合相交,即FIRST(A)nFOLLOW(A)-O。对不符合上述条件的文法的语言,必须对文法进行修改,以满足上述条件。否则,不能应用此方法。相对于其他分析方法(LL(1)分析方法、LR分析方法、自底向上分析方法、SLR分析方法等)而言,递归子程序法的优点是程序结构和层次清晰明了,易于实现,且时空效率高;就语义加工来说,这种方法也是十分灵活的。我们可以在过程的任何地方插入有关语义加工程序,进行语义处理。本发明对于查错作到以下处理任何满足步骤(1)定义的类SQL语句的输入序列都不会导致翻译工作的崩溃;应尽可能地发现所输入的类SQL语句中出现的语法和语义错误,并应尽可能准确的指出出错位置和错误性质;由于往往不可能在输入代码中准确无误地推断程序员出错的确切原因和他的真实意图,所以彻底的错误校正是极为困难的。本模块在错误处理上采取了10以下一些措施在翻译过程中遇到语法错误和语义错误时,立即停止翻译过程和解释过程,将错误所在的行数和出错信息返回。翻译过程先把输入的类SQL语句经过词法分析、语法分析、语义分析,翻译成虛拟机的中间指令代码的目标代码程序,图3为本发明中类SQL所定义的语法翻译过程图,这个过程中采用一遍扫描,即以语法分析为核心,由它调用词法分析程序取单词,在语法分析过程中同时进行语义分析处理,并生成中间指令代码。如遇到语法、语义错误,则随时调用出错处理程序,打印出错信息。语法分析过程采用递归子程序法,即为每一种语法成分都编写一个分析子程序,根据当前读取的符号,可以选择有关的分析子程序来进行语法分析。整个过程按文法规则自顶向下一级一级的分配任务,即调用有关的分析子程序来完成。语义分析在语法分析过程中完成,它检查程序的语义正确性,以保证程序各部分能有意义地结合在一起,并为以后的代码生成阶段收集类型信息。词法分析的作用是将字符串形式的程序代码分解成具有独立语法意义的单词符号(TOKEN),调用一次词法分析程序可得到一个单词,供语法分析过程进行处理,在这个过程要跳过空格和注释语句。表格在翻译过程中起着非常重要的作用,如符号表的作用是检查语义的正确性和辅助正确地生成代码,中间代码表存储所有中间指令代码。在翻译过程中要利用表格(如符号表、保留字表、中间代码表等)的登录和查找来进行信息之间的联系。出错处理程序的功能是打印出错信息。实际上判断错误在语法分析过程和语义分析过程中已经完成,出错处理程序仅仅是根据具体的情况打印出具体的,普i吴寸吕息。三、解释执行翻译生成的目标代码图4为本发明中类SQL所定义的语法翻译结果的解释执行过程图。执行过程是对中间指令代码进行逐条解释执行,得到运行结果,解释过程中要用到翻译过程形成的一些表格(如中间代码表、符号表等)。在解释过程中如出现错误,调用出错处理程序打印出具体的错误信息。解释执行中间指令代码的过程就是用软件来模拟计算机指令的执行过程。在这个过程中,采用栈式动态存储器分配方法来分配程序运行所需的数据存储空间。运算操作就在运行栈的栈顶单元之间进行,而且运算结果也留在栈顶。本发明按照优选实施例进行了说明,应当理解,上述实施例不以任何形式限定本发明,凡釆用等同替换或等效变换的形式所获得的技术方案,均落在本发明的保护范围之内。权利要求1.一种监控系统内存数据库通用交互方法,其特征在于包括以下步骤1)定义类SQL语言,输入所需的类SQL语句;2)将输入的类SQL语言翻译成目标代码;3)执行翻译生成的目标代码,调用内存数据库专用的接口进行交互。2、根据权利要求1所述的监控系统内存数据库通用交互方法,其特征在于-.在步骤l)中,所述类SQL语句具有的DML搡作包括SELECT,DELETE,INSERT,UPDATE。3、根据权利要求i所述的监控系统内存数据库通用交互方法,其特征在于:在步骤2)中翻译的过程为首先将对类SQL语句进行词法分析、语法分析、语义分析,把源代码翻译成虛拟机的中间代码,然后逐条解释此指令代码。4、根据权利要求3所述的监控系统内存数据库通用交互方法,其特征在于:所述词法分析过程为利用词法分析器将字符串形式的程序代码分解成具有独立语法意义的单词符号。5、根据权利要求3所述的监控系统内存数据库通用交互方法,其特征在于:所述语法分析过程为利用语法分析器从词法分析程序取得的单词串形式的源代码,并将一个或多个单词组合成语法类。6、根据权利要求3所述的监控系统内存数据库通用交互方法,其特征在于所述语义分析过程为利用语义分析器检查程序的语义正确性,使程序各部分能有意义地结合在一起,并为以后的代码生成阶段收集类型信息。7、根据权利要求3所述的监控系统内存数据库通用交互方法,其特征在于步骤(2)中所述翻译过程采用递归子程序方法进行语法分析。8、根据权利要求3所述的监控系统内存数据库通用交互方法,其特征在于步骤2)中翻译过程中以语法分析为核心,由它调用词法分析程序取单词,在语法分析过程中同时进行语义分析处理,并生成中间指令代码。9、根据权利要求3所述的监控系统内存数据库通用交互方法,其特征在于在进行语法分析、语义分析过程中,遇到语法、语义错误,则调用出错处理程序打印出错信息。10、根据权利要求1所述的监控系统内存数据库通用交互方法,其特征在于步骤3)执行过程中,执行过程是对中间指令代码进行逐条解释执行得到运行结果,采用栈式动态存储器分配方法来分配程序运行所需的数据存储空间,运算操作在运行栈的栈顶单元之间进行,而且运算结果也留在栈顶。全文摘要本发明公开了一种监控系统内存数据库通用交互方法,其特征在于包括以下步骤1)定义类SQL语言,输入所需的类SQL语句;2)将输入的类SQL语言翻译成目标代码;3)执行翻译生成的目标代码,调用内存数据库专用的接口进行交互。本发明的监控系统内存数据库通用交互方法使用统一的类SQL语句同各个不同厂家的内存数据库进行交互,适用于各种UNIX操作系统、LINUX操作系统以及WINDOWS操作系统,通用性强;另外所有功能完全是在应用层实现,不需要借助任何操作系统自带的软件。文档编号G06F17/30GK101499093SQ20091002568公开日2009年8月5日申请日期2009年3月5日优先权日2009年3月5日发明者刘孟觉,吕志荣,吕瑞明,奚国富,奕梁,鑫赵,瑞郭,马元奎申请人:国电南瑞科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1