基于简单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. Tab标签栏 切换 权威总结

    angular的标签栏,有两种方法实现: 内容全部加载到页面中,再利用ng-show指令. 将每一块要加载的内容做成模板,利用ng-if指令加载. 用bootstrap的tab组件 用angular的 ...

  2. python面对对象编程------3:写集合类的三种方法

    写一个集合类的三种方法:wrap,extend,invent 一:包装一个集合类 class Deck: def __init__( self ): self._cards = [card6(r+1, ...

  3. JavaScript 类、构造函数、原型

    类.构造函数.原型  :本质均为函数 利用的原理是:词法作用域,调用对象及作用域链  闭包  属性查找方式    设计和new运算符一起使用的函数叫做构造函数. 构造函数的工作:初始化一个新创建的对象 ...

  4. php魔法常量

    有七个魔术常量它们的值随着它们在代码中的位置改变而改变.例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定.这些特殊的常量不区分大小写,如下: 名称 说明 __LINE__ 文件中的当前行号 ...

  5. CSS块级元素与行级元素(转载)

    块元素一般都从新行开始,它可以容纳内联元素和其他块元素,常见块元素是段落标签'P".“form"这个块元素比较特殊,它只能用来容纳其他块元素. 如果没有css的作用,块元素会顺序以 ...

  6. Struts2 UI标签

    表单标签的共同属性(该属性只在没有使用 simple 主题时才可以使用) form 标签  用来呈现 HTML 语言中的表单元素 默认情况下, form 标签将被呈现为一个表格形式的 HTML 表单. ...

  7. C#01

    C#语言 求4名同学三门成绩的平均值 using System; using System.Collections.Generic; using System.Linq; using System.T ...

  8. uva 482 - Permutation Arrays

    <int, double> --> <int, string> 从而避免了输出格式: #include <vector> #include <strin ...

  9. CentOS5.5下安装Ant

    从yum源直接下ant: [root@master local]$ yum install ant 运行ant,发现报错: java.lang.NoClassDefFoundError: org/ap ...

  10. 微信php接入设计案列

    <?php namespace Home\Controller; use Think\Controller; use Com\Wechat; use Com\WechatAuth; class ...