该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-08-18
wantsong 写道 希望大家在做的时候,可以看看LinQ,MS希望在明年发布的技术,也许他山之石可以攻玉。
基本上是两码事。 JRC的任务是Parse and Combinate现有的SQL,并不创造任何新的QL LINQ属于生造的不伦QL。 假若苍天无眼,LINQ这样的不伦不类的QL也能够流行起来,JRC说不定也只好出个NRC ( .net Relation Combinator) 来支持LINQ。 OO数据结构如此复杂,XPath这样的层次查询语言都不能完全对应(参见JXPath项目),更别说从RDB发展起来的SQL了(也许带有了OODB的OQL特性,但QL本身就是为RDB创造出来的)。 OO数据的查询,还是要依靠Traversal, Filter, Visitor, Iterator, Collector的组合,才是最自然、最贴切、最灵活的方式。 现在还有个项目叫做JQuery,采用类似于Prolog的语法作为Query Language来查询Java Source,倒是有点意思。 MS的OLAP MDX不错,多维数据的分组查询。如果能移植到编程语言里面直接支持,将大有作为。 当今的时代是tag分组满天飞的时代,多维数据的支持严重缺乏。 Muilti Keys -> Value 的 HashMap支持都弱的可怜。Apache Commons Collection做了一些初步工作。 层次HashMap很容易做,比如, JBoss Cache。 a/b/c/d -> value1 a/e/f -> value2 get by a,会返回a下面的所有child nodes. 如果删除了a, 那么下面的所有child nodes都会被删除。 而多维HashMap很难做。 (a, b, c, d) -> value1 (a, e, f) -> value2 get by a,应该返回 value1, value2。 如果删除了a,那么, (b, c, d) -> value1 (e, f) -> value2 |
|
返回顶楼 | |
发表时间:2006-08-19
也不能说一点没有自己造的吧?
比如,对表名,列名字的quote(以免空格或者keyword),我们可以用"[]",但是这个可能不是标准sql。 还有,对mssql的case语句,oracle的decode,mssql的isnull, coalesce, datepart, datediff函数,这些逻辑要不我们不支持,要不只好我们用自己一套标准的函数(比如可以抄mssql或者oracle),然后让visitor去翻译成mssql的或者oracle对应的语法。 因为这些东西ansi sql都不定义,但是很有用。 |
|
返回顶楼 | |
发表时间:2006-08-19
ajoo 写道 项目批准了。
想参与的去java.net上申请一个账号吧。告诉我,我可以把你加进去。 cvs: host: cvs.dev.java.net repository: /cvs module: /jrc 想学习学习,可以加一下我吗? 帐号:liuyxit |
|
返回顶楼 | |
发表时间:2006-08-19
加上了.
|
|
返回顶楼 | |
发表时间:2006-08-19
帐号:intolong
学习下。 |
|
返回顶楼 | |
发表时间:2006-08-20
加了
|
|
返回顶楼 | |
发表时间:2006-08-25
ajoo 写道 还没有做过任何benchmark。如果哪位有心人愿意给做一个倒是非常欢迎。
我的猜测是,jparsec会比antlr慢一些的。毕竟,递归下降理论上就不如lr解析。 关键问题是,会慢多少。要是小于100%,我认为都可以接受。但是如果真是差百倍,那就确实是我的错了。 偶想做一个看看,但是download jparsec的时候有个问题,最新版本的是基于1.5的,貌似不能在1.4下面用... 如果针对旧版本做的performance benchmark有意义吗? |
|
返回顶楼 | |
发表时间:2006-08-25
可以的.两个版本效率上应该区别不大
|
|
返回顶楼 | |
发表时间:2006-08-25
ajoo 写道 还没有做过任何benchmark。如果哪位有心人愿意给做一个倒是非常欢迎。
我的猜测是,jparsec会比antlr慢一些的。毕竟,递归下降理论上就不如lr解析。 关键问题是,会慢多少。要是小于100%,我认为都可以接受。但是如果真是差百倍,那就确实是我的错了。 ANTLR也是递归下降的, sablecc和javacc是LALR的. |
|
返回顶楼 | |
发表时间:2006-08-25
ajoo 写道 还没有做过任何benchmark。如果哪位有心人愿意给做一个倒是非常欢迎。
我的猜测是,jparsec会比antlr慢一些的。毕竟,递归下降理论上就不如lr解析。 关键问题是,会慢多少。要是小于100%,我认为都可以接受。但是如果真是差百倍,那就确实是我的错了。 做了一个benchmark,用的是 jparsec 0.5和antlr 2.7.6 解析的例子是jparsec的教程里面的计算器 结果 jparsec : antlr ~= 5:1 对于jparsec不了解,就是按照例子抄的,不过jparsec的性能没有偶想象中的差...不过对于复杂的HSQL解析,等你们做出来以后再跑一个对比看看会不会随着组合子的增加,性能会有一个下降。 附件是测试代码 |
|
返回顶楼 | |