分享 大神出现之后,我就被当场秒杀,不写啥了……

xiaolai · 2013年05月13日 · 最后由 luikore 回复于 2013年05月13日 · 4576 次阅读

VIM 党路过,哼。^_^

quote“动态,灵活,快速,强大,再见了数据库迁移,再见了笨拙的 SQL 语句”

SQL 其实是这个星球上最动态,最灵活,最快速,最强大的语言

以上,我们这里用了 1,2 年了。不过我用的 Mac Vim

我倒是觉得 sql 条件语句才是人性的,比如 someone like .. , name = .. and sex =..,order by.. 看了 mongo 那个为了 kv,而 kv 的条件语句(db.inventory.find( { qty: { $gt: 20 } } ))想吐血。

#4 楼 @hhuai 这就吐血了?当你想在 mongo db 中实现符合自然语言习惯的 group by + having sql,一定会觉得蛋碎了,贴个链接吧:

http://rickosborne.org/download/SQL-to-MongoDB.pdf

sql 还是有些问题的,例如 where 语句不是一等公民,组合查询条件就必须在应用层拼接字符串,arel 就是为了解决 sql 的这种问题而... 搞得这么慢...

mongo 在传输格式上还是有优点的,毕竟前端过来 json 样子的多,不用太多转换就能变成 query 了$gt 的写法虽然很丑但在解析上还算是比较优化的...

#2 楼 @quakewang

SQL 其实是这个星球上最动态,最灵活,最快速,最强大的语言...

...Datalog 的子集

#7 楼 @bhuztez 话说 Datalog 是翻译成 sql 还是就是自成数据库了?单独使用性能怎么样?

#8 楼 @luikore 还没来得及用过 Datalog ...

至少 DES,有两种模式,一种是后端用 SQL 数据库,一种是直接就用 Prolog 的。可以生成 SQL,但是,不是所有查询都可以用一句 SQL 搞定

http://en.wikipedia.org/wiki/Datalog

其实性能真不是问题,目测有太多地方不需要性能的地方,其实用 Datalog 会更好,现在都没什么人用。我感觉,Datalog 应该和正则表达式差不多流行才是正常的

#9 楼 @bhuztez 每个语言都有和宿主很相近的增强版 sql 生成工具,像 ruby 也是可以做到直接把表达式直接翻译成 sql 条件的 (需要些黑魔法) 只是没流行起来...

还有一种倾向是不要解析语法直接给 ast-like 的条件,mongo 做了一些但是没做全... 全变成前缀表达式也不好看的说。ruby 的 mongoid 客户端写法略靠谱,例如 #4 楼 的例子就变成 find :qty.gt => 20

Datalog 如果翻译成 sql 的话,给 fact 和给 where 就只是语法区别而已吧...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号