DataQL數(shù)據(jù)查詢引擎
什么是DataQL?
DataQL(Data Query Language)DataQL 是一種查詢語言。旨在通過提供直觀、靈活的語法來描述客戶端應(yīng)用程序的數(shù)據(jù)需求和交互。
數(shù)據(jù)的存儲(chǔ)根據(jù)其業(yè)務(wù)形式通常是較為簡單的,并不適合直接在頁面上進(jìn)行展示。因此開發(fā)頁面的前端工程師需要為此做大量的工作,這就是 DataQL 極力解決的問題。
例如:下面這個(gè) DataQL 從 user 函數(shù)中查詢 id 為 4 的用戶相關(guān)信息并返回給應(yīng)用。
1 2 3 4 5 |
return userByID({'id': 4}) => { 'name', 'sex', 'age' } |
返回結(jié)果:
1 2 3 4 5 |
{
'name' : '馬三',
'sex' : 'F',
'age' : 25
}
|
在比如:性別數(shù)據(jù)的字典映射,為此您可以通過 DataQL 的表達(dá)式進(jìn)行快速的轉(zhuǎn)換。從而無需任何服務(wù)端和前端的開發(fā)。
1 2 3 4 5 |
return userByID({'id': 4}) => { 'name', 'sex' : (sex == 'F') ? '男' : '女' , 'age' : age + '歲' } |
返回結(jié)果:
1 2 3 4 5 |
{
'name' : '馬三',
'sex' : '男',
'age' : '25歲'
}
|
還可以定義一個(gè)查詢函數(shù)來重用這一邏輯。
1 2 3 4 5 6 7 8 |
var sex_str = (sex) -> { return (sex == 'F' ? '男' : '女'); } return userByID({'id': 4}) => { 'name', 'sex' : sex_str(sex), 'age' : age + '歲' } |
架構(gòu)
特性
DataQL 有一些設(shè)計(jì)原則,這也使其成為有一定的特性。
-
層次結(jié)構(gòu):多數(shù)產(chǎn)品都涉及數(shù)據(jù)的層次結(jié)構(gòu),為了保證結(jié)構(gòu)的一致性 DataQL 結(jié)果也是分層的。
-
數(shù)據(jù)為中心:前端工程是一個(gè)比較典型的場景,但是 DataQL 不局限于此(后端友好性)。
-
弱類型定義:語言中不會(huì)要求聲明任何形式的類型結(jié)構(gòu)。
-
簡單邏輯:具備簡單邏輯處理能力:表達(dá)式計(jì)算、對象取值、條件分支、lambda和函數(shù)。
-
編譯運(yùn)行:查詢的執(zhí)行是基于編譯結(jié)果的。
-
混合語言:允許查詢中混合任意的其它語言代碼,典型的場景是查詢中混合 SQL 查詢語句。
-
類 JS 語法:類JS語法設(shè)計(jì),學(xué)習(xí)成本極低。
基于這些原則和特性,DataQL變?yōu)闃?gòu)建應(yīng)用程序的強(qiáng)大而高效的環(huán)境。
目前 DataQL 提供了 Java 版的指令執(zhí)行引擎,使用這個(gè)引擎您只需要依賴一個(gè) Jar 包即可。任何一個(gè)Web應(yīng)用或者 Spring Boot 的 jar 應(yīng)用使用都變得非常容易。
請注意 DataQL 不是一門腳本語言,它對邏輯的處理僅限于簡單場景。DataQL 的解決問題的重點(diǎn)集中在:數(shù)據(jù)的聚合和轉(zhuǎn)換以及過程中的簡單加工處理。
警
