基于简单sql语句的sql解析原理及在大数据中的应用

李万鸿

老百姓呼吁打土豪分田地、共同富裕,总有一天会实现。
全面了解你所不知道的外星人和宇宙真想:http://pan.baidu.com/s/1c1utFDQ

http://blog.sina.com.cn/s/blog_89436e570102w8qs.html

http://blog.sina.com.cn/contn

8年后,  中国2024年将统一世界!

呵呵,地球正在从黑暗进入光明。外星人在帮助地球村民!

呵呵,外星人是客观存在的,星际联盟正在解救地球。数百万行星大小的星际飞船正环绕地球,帮助地球文明的进化,人类文明将飞跃进入宇宙文明,每一个人物质財富、精神財富都会圆满的大同盛世,请大家多看相关资料。就会明确,我们从哪里来,地球的种种问题的根本原因何在,我们往哪里去?。

。。

UFO=universe family one。我们是宇宙大家庭的一员,如今整个宇宙的光明力量都来帮助地球铲除暴政。建立共产主义佛教的大同盛世。我们是一家人,大家要相亲相爱团结一心,勇敢革命,地球将会更美好!

天下兴亡匹夫有责,大家都有义不容辞的重任帮助人类的解放和文明的进步,而每一个人都会是受益者!

功在当代利在千秋!

南无阿弥佗佛!

嗡嘛呢叭咪吽! 

人类意志的临界点决定着事件发生的速度,即人类的觉醒程度、对事件的认知与渴盼程度决定着事件何时发生…so 请呼唤身边的朋友们參与事件冥想,加速事件发生、加速地球解放吧!精彩自己。撒爱万有!



我们在生死轮回中,都以前在外星球生活过。外星人是我们的兄弟姐妹,天下一家人,相亲又相爱。。如今,地球人被奴役,我们要反抗。要勇敢革命,建立光明正义的地球村,一个世外桃源的乌托邦,共产主义佛教地球村。大家都幸福快乐,永远不用担负沉重的经济压力。外星高科技,给地球带来无穷无尽的物质財富,每一个人都快乐无限!

大家能够把此文转给朋友,提前分享8年后的幸福快乐!


通常sql语法解析都是以lex、yacc进行分析为基础的,是逐个字符进行分析,性能不高。假设基于没有子查询的sql语句进行解析,则速度会提高很多,在此对其原理加以说明。

一般sql语句十分复杂,包括多层嵌套。但当中有规律可循。其特点是全部的语句基本模式是一样的,即:都是SELECT  FROM  WHERE类型的简单语句。因此,能够把嵌套的语句逐条解析为这样的简单语句。因为sql语句的语法是一样的。所以能够用递归的方法对语句加以解析,从而把sql语句解析为多条简单的子SQL语句。然后通过一个方法分别解析这些子sql语句。这样处理。算法简单有效。极大地提高性能,对于SQL语法解析来说是一个革命性的新思路。

大数据通常使用HBASE等NOSQL,对于sql开发来说极为不便。为此,採用分布式的关系数据库来保存大数据极具有用价值,比方用ORACLE、MYSQL把一张表分库保存到多个数据库,这样既能够处理海量数据又适用于传统的编程,支持MYBATIS、SPRING、HIBERNATE。开发极为方便。

对应的难点是各个分库的表的ID的唯一性和SQL语句的处理。

对于ID的唯一性解决不难,关键在于分布式SQL的处理。

随着SPARK等大数据软件应运而生,对于分布式数据的处理来说正当其时。

能够用SPARK来处理分布的数据。那么怎样得到这些数据呢?为此,能够通过本文提出的SQL解析原理对SQL语句进行解析,把一条复杂的SQL语句解析为多简单的SQL语句,如
SELECT A.*FORM USER  A WHERE  A.ID>222,然后通过数据字典找到USER表相应的分库,在各个分库上运行查询,然后把各个查询结果用SPARK处理,对于其它的子SQL语句如法炮制,然后依据主SQL语句的条件如JOIN、GROUP
BY、ORDER BY等对全部的查询数据进行运算汇总处理,最后返回结果。

总之,通过获取各个简单的子SQL语句进行语法解析或语句分解。是一个行之有效的好办法。简单巧妙地攻克了一个公共的难题,尤其对于採用高效数据库处理大数据有特殊的意义,为其奠定了基石。这是一个极为有效的解决的方法。值得应用。

2014-10-17

基于简单sql语句的sql解析原理及在大数据中的应用的更多相关文章

  1. sql语句优化SQL Server

    MS   SQL   Server查询优化方法查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)          2.I/O吞吐量小,形成了 ...

  2. 数据库常用的sql语句大全--sql

    前言 本片博客使用mysql数据库进行数据操作,使用Navicat for mysql 这个IDE进行可视化操作.每个SQL语句都是亲身实验验证的,并且经过自己的思考的.能够保证sql语句的可运行性. ...

  3. SQL语句统计每天、每月、每年的 数据

    SQL语句统计每天.每月.每年的数据 1.每年select year(ordertime) 年,sum(Total) 销售合计from 订单表group by year(ordertime) 2.每月 ...

  4. 如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;)。

    1.如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;). 2.select查询的多个字段之间要用逗号“,”分割,如果查询涉及多个表,那多个表之 ...

  5. mysql进阶(十九)SQL语句如何精准查找某一时间段的数据

    SQL语句如何精准查找某一时间段的数据 在项目开发过程中,自己需要查询出一定时间段内的交易.故需要在sql查询语句中加入日期时间要素,sql语句如何实现? SELECT * FROM lmapp.lm ...

  6. 【转】SQL语句统计每天、每月、每年的数据

    原文:https://www.cnblogs.com/Fooo/p/3435687.html SQL语句统计每天.每月.每年的数据 1.每年select year(ordertime) 年,sum(T ...

  7. 第15讲:嵌入式SQL语句(动态SQL)

    一.动态SQL概述 1. 静态SQL vs 动态SQL ①动态SQL是相对静态SQL而言的 ②静态SQL特点:SQL语句在程序中已经按要求写好,只需要把一些参数通过变量传递给SQL语句即可 specN ...

  8. mybatis日志,打印sql语句,输出sql

    mybatis日志,打印sql语句,输出sql<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE ...

  9. 大数据中必须要掌握的 Flink SQL 详细剖析

    Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言. 自 2015 年开始,阿里巴巴开始调研开源流计算引擎,最终决定基于 ...

随机推荐

  1. jquery插件--多行文本缩略

    1.webkit内核多行缩略样式 text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orie ...

  2. Phonegap 版本minSdkVersion为8的时候的自动更新与升级

    清单文件中: <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8"/> ...

  3. https加密

    对称加密  客户端和服务器使用同一把钥匙,加密算法公开 非对称加密  不同钥匙,公钥加密的私钥可以打开 私钥加密的公钥可以打开 HTTPS关键: 1. 要传输的业务数据,使用对称加密. 客户端生成私钥 ...

  4. Android中滑动关闭Activity

    继承SwipeBackActivity即可实现向右滑动删除Activity效果 点击下载所需文件

  5. java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误

    后台报出如下错误: Caused by: java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01000: 超出打开游标的最大数 ORA-00 ...

  6. IOS静态库和Framework区别

    一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系 ...

  7. aps.net 用ajax 读取服务端值

      1.Default.aspx 页面内容 实例一: <%@ Page Language="C#" AutoEventWireup="true" Code ...

  8. C#中英文混合字符串过长截断

    /// <summary> /// 截断字符串 /// </summary> /// <param name="maxLength">最大长度& ...

  9. java制作简单的坦克大战

    坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...

  10. day04

    1.divmod(x,y)获取一个整数x除以y的商和余数 ret = divmod(, ) print(ret) 2.获取随机验证码 import random l = [] , ): t = ran ...