Atitit.数据操作dsl 的设计 ---linq 方案

Posted attilaxAti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Atitit.数据操作dsl 的设计 ---linq 方案相关的知识,希望对你有一定的参考价值。

 

 

Atitit.数据操作dsl 的设计 ---linq 方案

 

1.1. sqlapi方式1

1.2. Linq方案与stream方案的选择,1

1.3. 前缀表达式 vs 中缀表达式1

1.4. 要不要字符串分隔符1

1.5. 尽可能的兼容sql标准2

1.6. 多数据源的支持2

1.7. 结论2

1.8. 最终结果如下2

 

1.1. sqlapi方式

对于数据操作,目前常用的俩中方案sqlapi方式,api里面又分为linq方案与stream方案。。

 

一下是他们的比较原则上,以人类可读性为优先。Sql的可读性是最强的,单他的机器可读性就是最差的。。。Api方式则相反,易于解析,牺牲了部分人类可读性,来换取方便的机器解析。。

 

Sql的解析比较困难,不太适合直接作为dsl来使用。。当然如果数据源是数据库的话,已经实现了sql的解析了,就可以使用sql作为dsl来使用了。。如果是其他的数据源比如list,就自己实现解析sql来查询list,就比较麻烦了。。

 

1.2. Linq方案与stream方案的选择,

linqstream的特列。专门化的一种dsl,可读性更好,类似sql,而sql几乎作为实际操作的一种标准dsl,符合标准比较好,容易学习。。绝大部分场合下,应该使用linq方式。。

 

部分常见的数据结构,可以特化stream api来用,stream api有着更加灵活和简便的操作可以对特定操作。

 

作者::  ★(attilax)>>>   绰号:老哇的爪子  全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊  汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

 

 

1.3. 前缀表达式 vs 中缀表达式

Linq的实现模式有俩中,一种是api 前缀表达式模式,此种模式容易解析,单可读性稍微差点。  Api中缀表达式,容易解析,可读性强,但是,此类模式工作量庞大,一般使用机器生成,会带来同步维护性问题,放弃。。

 

 

1.4. 要不要字符串分隔符

Sql使用单偏好作为字符串分隔符,其他编程语言使用双引号,但是带来连解麻烦的问题。

考虑到可读性,以及机器解析的需要,反正以及分割的很小单位表达式了,容易解析的,就无需字符串分隔符了。。

 

1.5. 尽可能的兼容sql标准

 

1.6. 多数据源的支持

内存数据,stringlist cachenosql,文件,excel,数据库等均可以利用linq来查询与操作

 

 

1.7. 结论

所以折中考虑下,人类可读性优先考虑,但是开发简单性也要保证。。最终的比较好的方案就是在大操作上 from where等使用api函数模式,但里面的条件表达式等使用sql模式的文本中缀表达式模式,方便机器解析。。

 

 

 

1.8. 活动发起计划:

兄弟们,我们联合起来,搞个linq呀,我们的目标:

---多数据源的支持:内存数据,stringlist cachenosql,文件,excel,数据库等均可以利用linq来查询与操作

 

实现思路:先把linq里面的表达式简单词法分析,转换为全部的api函数式前缀表达式结构。构建ast,然后执行语法解析。。即可。。

 

1.9. 最终结果如下

List list=ListUtil.addMapFromStr(name:李明,age:11).addMapFromStr(name:刘利,age:17).toList();

List<Map> result_list= select(name,age).from(list).where(name=李明).and(age>12).orderby(name,age desc);

 

实现思路:先把linq里面的表达式简单词法分析,转换为全部的api函数式前缀表达式结构。构建ast,然后执行语法解析。。即可。。

 

以上是关于Atitit.数据操作dsl 的设计 ---linq 方案的主要内容,如果未能解决你的问题,请参考以下文章

Atitit 项目的主体设计与结构文档 v3

atitit.atiOrmStoreService 框架的原理与设计 part1  概述与新特性

Atitit dsl实现------异常的库模式实现  异常的ast结构

Atitit 表达式原理 语法分析 原理与实践 解析java的dsl  递归下降是现阶段主流的语法分析方法

Atitit  基于meta的orm,提升加速数据库相关应用的开发

Atitit。  工作流引擎的发展趋势