{"repo":"colorknight/moql-transx","free":true,"listed":false,"github":"https://github.com/colorknight/moql-transx","clone":"git clone https://github.com/colorknight/moql-transx.git","description":"Translate moql syntax to syntax of X database","language":"Java","stars":24,"topics":["elasticsearch","sql","mongodb","mysql","oracle","translation"],"license":null,"category":"databases-storage","readme_excerpt":"MOQL-Transx简介 ​ MOQL-Transx是MOQL工程的姊妹工程，其早期与MOQL工程在一起，后独立出来。其核心思想是想让数据库使用者只掌握一种语言，即SQL语言，就可以去查询访问各类不同的数据库，以此减小开发者，使用者的学习成本。由于各类数据库语法差异比较大，MOQL-Transx并不追求从SQL语义到各类数据库DSL语义的完整映射，更多是将最常用到的语法功能进行了映射。目前MOQL-Transx已经完成了从标准的MOQL语法(SQL92语法的子集)到MySQL、Oracle、DB2、SQLServer、Postgresql等关系数据库间的语法转换(注：这些关系数据库间的语法基本相同，有微小的差异)。同时，也完成了MOQL语法到ElasticSearch DSL，MongoDB DSL及DynamoDB DSL的语法转换。由于ElasticSearch，MongoDB都属于文档型数据库，其返回结构非我们常用的关系型数据库的二维表格，故MOQL-Transx还进一步提供了这两个数据库的查询器。这些查询器可以接受一个sql作为参数，并返回一个二维表结构的对象，使开发者使用起来更直观方便。 ​ MOQL-Transx内部包括两个模块，moql-translator用于完成从MOQL语法到各类数据库DSL语法的转换；moql-querier用于为特殊的数据库提供可以接受sql语句返回二维表结构的查询器。 SQL to ElasticSearch DSL ​ 众所周知ElasticSearch目前是一个应用最为广泛的分布式搜索与分析引擎，它的功能强大，能够已很高的性能访问大规模数据。它拥有强大的查询分析语法，能够完成模糊查询、精准查询及聚集计算等诸多功能的表达。但对于那些用惯了SQL语言的数据分析人员来说，掌握ElasticSearch的DSL语言来做以前熟悉的事情，还是有比较陡的学习曲线的。 ​ MOQL转换器用于完成从MOQL语法(SQL语法的一个子集，涵盖了绝大多数常用语法)到各类不同数据库SQL语法的转换，如它提供到Oracle、SqlServer以及DB2等不同SQL方言的转换，也提供了到ElasticSearch DSL的语法转换。有了这种转换，可以大大降低数据分析人员学习不同分析语言的学习曲线，能够快速的享受新的分析引擎技术带来的便利。 ​ MOQL本质上是一个开发程序包，应用它进行SQL到ElasticSearch DSL的转换非常方便，如下代码示例： 该代码执行完转换后，输出的ElasticSearch DSL语法为： ​ 将该结果提交给ElasticSearch引擎可以达到与程序中sql语句匹配的执行效果。就是这样简单，可以立刻去 下载个源码试试了。 ​ 当然由于ElasticSearchDSL语法的能力过于强大，MOQL目前还无法提供完整的转换能力，并且为适应两种不同语法间的差异还做了些技巧性的设计，需要使用者在使用时加以注意。 ​ ElsaticSearch DSL的query子句中有query上下文与filter上下文两种上下文(本文不解释两种上下文的差异，请参见相关资料)，这两种上下文分别对应了SQL语法的两个子句。query上下文对应了where子句，filter上下文对应了having子句。这样的对应关系主要是技巧性的对应，并不体现各部分在ElasticSerach上的执行顺序。所以在应用ElasticSearch DSL的此类特性时需要留意，不要写错SQL子句。 ​ 另外，对于MOQL现在不能支持的Elas","default_branch":null,"files":null,"tree":[],"storefront":"/r/colorknight","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/colorknight/moql-transx/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}