基于简单sql语句的sql解析原理及在大数据中的应用
基于简单sql语句的sql解析原理及在大数据中的应用
李万鸿
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解析原理及在大数据中的应用的更多相关文章
- sql语句优化SQL Server
MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了 ...
- 数据库常用的sql语句大全--sql
前言 本片博客使用mysql数据库进行数据操作,使用Navicat for mysql 这个IDE进行可视化操作.每个SQL语句都是亲身实验验证的,并且经过自己的思考的.能够保证sql语句的可运行性. ...
- SQL语句统计每天、每月、每年的 数据
SQL语句统计每天.每月.每年的数据 1.每年select year(ordertime) 年,sum(Total) 销售合计from 订单表group by year(ordertime) 2.每月 ...
- 如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;)。
1.如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;). 2.select查询的多个字段之间要用逗号“,”分割,如果查询涉及多个表,那多个表之 ...
- mysql进阶(十九)SQL语句如何精准查找某一时间段的数据
SQL语句如何精准查找某一时间段的数据 在项目开发过程中,自己需要查询出一定时间段内的交易.故需要在sql查询语句中加入日期时间要素,sql语句如何实现? SELECT * FROM lmapp.lm ...
- 【转】SQL语句统计每天、每月、每年的数据
原文:https://www.cnblogs.com/Fooo/p/3435687.html SQL语句统计每天.每月.每年的数据 1.每年select year(ordertime) 年,sum(T ...
- 第15讲:嵌入式SQL语句(动态SQL)
一.动态SQL概述 1. 静态SQL vs 动态SQL ①动态SQL是相对静态SQL而言的 ②静态SQL特点:SQL语句在程序中已经按要求写好,只需要把一些参数通过变量传递给SQL语句即可 specN ...
- mybatis日志,打印sql语句,输出sql
mybatis日志,打印sql语句,输出sql<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE ...
- 大数据中必须要掌握的 Flink SQL 详细剖析
Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言. 自 2015 年开始,阿里巴巴开始调研开源流计算引擎,最终决定基于 ...
随机推荐
- jquery插件--多行文本缩略
1.webkit内核多行缩略样式 text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orie ...
- Phonegap 版本minSdkVersion为8的时候的自动更新与升级
清单文件中: <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8"/> ...
- https加密
对称加密 客户端和服务器使用同一把钥匙,加密算法公开 非对称加密 不同钥匙,公钥加密的私钥可以打开 私钥加密的公钥可以打开 HTTPS关键: 1. 要传输的业务数据,使用对称加密. 客户端生成私钥 ...
- Android中滑动关闭Activity
继承SwipeBackActivity即可实现向右滑动删除Activity效果 点击下载所需文件
- java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
后台报出如下错误: Caused by: java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01000: 超出打开游标的最大数 ORA-00 ...
- IOS静态库和Framework区别
一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系 ...
- aps.net 用ajax 读取服务端值
1.Default.aspx 页面内容 实例一: <%@ Page Language="C#" AutoEventWireup="true" Code ...
- C#中英文混合字符串过长截断
/// <summary> /// 截断字符串 /// </summary> /// <param name="maxLength">最大长度& ...
- java制作简单的坦克大战
坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...
- day04
1.divmod(x,y)获取一个整数x除以y的商和余数 ret = divmod(, ) print(ret) 2.获取随机验证码 import random l = [] , ): t = ran ...