从DSL扯开去

2020-05-29 00:00:00 数据 设计 平台 日志 这是

智能运维平台的内核驱动力来自数据(日志和指标)分析。从广义范畴来说,所有可以用作数据处理的软件系统,都可以用来构建这个平台。从远古时代的awstats到piwik,到人手一个的hadoop集群(确实没有更抽象具体的运维向子产品),到目前流行的ELK,包括新近的基于PostgreSQL搞的TimeseriesDB,基于Solr搞的Rocana等等。

在对比所有这些产品的技术选择和接口设计的时候,总让我想起一句话:「一个幽灵,查询语言的幽灵,在社区徘徊」。

SQL 与 DSL

其实在刚流行hadoop的时候,并没有这么多事儿。熟悉java的开开心心写mapreduce,不熟悉java的人也乐呵呵的走streaming API,用自己熟悉的旁的编程语言写mapreduce。

但随后各种SQL-like的项目就雨后春笋般的涌现了。SQL的全称:structured query language。虽然在数据库面前,SQL更像是一种API,但是在谈论DSL的时候,SQL无疑就是成功的DSL之一。

对于我这个半吊子程序员来说,上图这些样例只了解regex和SQL两样。不过给我印象深刻的DSL设计,是Ruby社区的sinatra项目。
# myapp.rb
require 'sinatra'

get '/' do
  'Hello world!'
end

相关文章