写一点最近看回复的感想

357 天前
Braisdom  Braisdom

1 )大家对 DSL 普遍感到鄙视,认为作用不大,实现难度也不高 其实所有高级编程语言都是 DSL ,只不过是语言的特性多与少,Agile Query 的确设计了一种新的 DSL ,但也有程序编译的所有过程,从词法 -> 语法 -> 语义 -> IR -> 有向无环图,最终构建所有子查询,再优化子查询,输出 SQL 。

2 )对 BI 的认知误区 感觉 BI 系统就是要一层一层构建中间数据,这符合程序员的思维,将复杂问题分解成多个问题,逐个解决。Agile Query 提出了一种新的方式,将复杂的过程封装起来,外部无法感知而已,并不是复杂问题不存在了。

3779 次点击
所在节点   推广  推广
53 条回复
leonhao
leonhao
357 天前
@Braisdom 你这个前提就错了,首先复杂 SQL 没难度,难的是写出高性能的复杂 SQL 。第二 MPP 数据库大数据量下的复杂 SQL 效率没有非常高,这是分层搞中间表的非常重要的一个原因。
Braisdom
Braisdom
357 天前
@leonhao
1 )复杂 SQL 的难度是相对的,如果是 SQL 的高手,相信再复杂的 SQL 也不难,关键没有那么多高手,也不好找。
2 ) MPP 的性能也相对的,相比 5 ,6 年前的 MySQL 和 PG ,现在的 MPP 数据的查询性能要调出几百倍了。
Braisdom
Braisdom
357 天前
@leonhao

2 ) MPP 的性能也相对的,相比 5 ,6 年前的 MySQL 和 PG ,现在的 MPP 数据的查询性能要高出几百倍了。
Nile20
Nile20
357 天前
@Braisdom 我对你的产品没有意见,毕竟我不是用户。但是如果你为产品的辩护是“在喷其它人的项目的同时,自己可以好好想想,自己能不能坚持 3 个月,半年搞一个小东西,做出来的东西敢于发出来让人挑战吗”,那可能你在产品推广策略上有一些优化空间。是否选择一款产品,是看它是否能有效解决需求,而不是开发者坚持做了多久。大家需要的是疗效,坚持了多久并不构成护身符。
Braisdom
Braisdom
357 天前
@Nile20 你说的当然正确了,我想表达的是产品的初期是很容易被扼杀的,大家多一些宽容,因为每个产品都是从初期发展起来的,就像我们面对刚毕业的大学生,多一些宽容更好。
lichao
lichao
356 天前
SQL 高手完全可以自己写 SQL ;
SQL 低手大概率学不好、也用不好你的小众 DSL
zvvvvv
zvvvvv
356 天前
@Braisdom #7 两年多了,连个在线试用都没有,一开始还有些期待,但是现在的话真的没必要刷存在感了。用都用不了的东西,我看你文档有什么用。
Braisdom
Braisdom
356 天前
@zvvvvv 目前面向企业客户,个人用户暂时还不开放。
Braisdom
Braisdom
356 天前
@lichao 每个人的偏好不一样的,很难强求的。
locoz
locoz
356 天前
你似乎忽略了一个很关键的问题,就是你的产品本身是面向企业、面向不那么技术人员的人群的,你的主要目标也是企业用户,那你还在 V2EX 这种地方发推广干啥呢?纯纯的吃力不讨好...关键的潜在客户拉不到多少,还得花时间和精力应付挑毛病的,就很没必要。
Braisdom
Braisdom
356 天前
@locoz V2EX 只是一个渠道而已,不是唯一的渠道。指出产品的不足没关系,担心的是完全没看过产品,然后就在这里评论
如果看了还不了解,我可以修改文档,在贴子里回复,
dc2002007
dc2002007
356 天前
如果目标是为了写 sql 的话,那直接写 sql 就行,DSL 有点多余了,还得在学习一个新的语法,当然我不是很了解你的软件,若说的不对话可以接受批评。
Braisdom
Braisdom
356 天前
之前的贴子里已经讲到过,Agile Query 没有设计新的语法,和 SQL 一模一样,唯一的不同是多了大量分析型函数而已,通过这个函数,使用者不要关心 『多表聚合运算』。
Braisdom
Braisdom
356 天前
你的 SQL 可以写成这样,不用关心多表连接,聚合函数可以嵌套:

SELECT
COUNT_IF(GROUP_COUNT(orders.order_id, customers.customer_id) > 2) AS "复购客户数量",
categories.category_name AS "品类(指定关系)",
GROUP_SUM(order_details.quantity * order_details.unit_price, categories.category_name) AS "品类销售额",
SUM(order_details.quantity * order_details.unit_price) AS "销售额"
FROM "329875" LIMIT 2000
Braisdom
Braisdom
356 天前
上述 SQL 可以直接出结果
Braisdom
Braisdom
356 天前
@dc2002007
上术 SQL 涉及了 orders ,customers ,categories ,order_details ,categories 这些表,
这些表的连接你完全不用关系,内部的子查询也是自动生成的,输出的数据符你的要求。
Braisdom
Braisdom
356 天前
@Braisdom
@dc2002007
@lichao
@justdoit123
对上面的 DSL 你们会拒绝使用吗?
dc2002007
356 天前
@Braisdom 如果做到了特定数据关系范围的语法简化,那还是很有价值的
Braisdom
356 天前
@dc2002007 数据关系是预定义的,不需要每次查询时指定,当然也支持动态关系
lichao
356 天前
@Braisdom 完全不会考虑使用,理由之前说过了,会 SQL 的人会自己去写,不会 SQL 的人也学不会(大概也不愿意去学)你的 DSL 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1013359

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX