覺得 SQL 太難用於是自己編了個類 SQL 語言,不知道有沒有人想過類似的事情?

時間 2021-05-13 09:58:38

1樓:

這是我採用JSON結構設計的乙個鍵值型資料庫,對程式設計師非常友好,是完全物件導向的設計,現在在做的是查詢,計畫採用類似Linq這樣的語法,SQL對程式設計師非常不友好啊

2樓:喬拉爵士

C#中有LINQ,比手寫SQL要方便直觀一些,不過沒有手寫SQL功能強大。

作為乙個程式設計師,沒覺得SQL語法難懂,就是常感覺關係型資料庫效能不夠用,而且不好並行擴張其容量/效能

3樓:

你這種風格叫List Comprehension,Erlang裡常見的寫法就是這樣的啊。你讓那些整天嚷嚷Erlang不符合人類思維的情何以堪啊。

簡單的不如直接用MatchSpec解決。

1>Tab=

ets:

new(

student,).

16400

2>ets:

insert

(Tab,).

true

3>ets:

insert

(Tab,).

true

4>ets:

select

(Tab,[,

,['$_'

]}]).

5>ets:

select

(Tab,[,

,[}]}]).

6>ets:

select

(Tab,[,

,['$2'

]}]).

[betty]7

>參考Erlang -- ets

用qlc的時候,你會發現用List Comprehension這種風格,最自然的還是寫成兩個查詢

#!/usr/bin/env escript-include_lib

("stdlib/include/qlc.hrl"

).main

()->

Student

=ets

:new

(student,[

set]),

ets:

insert

(Student,),

ets:

insert

(Student,),

ets:

insert

(Student,),

Score

=ets

:new

(score,[

bag]),

ets:

insert

(Score,),

ets:

insert

(Score,),

ets:

insert

(Score,),

ets:

insert

(Score,),

ets:

insert

(Score,),

L1=qlc:e(

qlc:q(

[N||<-

ets:

table

(Score),S

<90],

)),L2

=qlc:e

(qlc:q

([N2||

<-ets:

table

(Score

),<-

ets:

table

(Score

),not

lists

:member(N1

,L1),C1

==C2

],)),io:

format("

~w~n",

[L2]),ok

.參考Erlang -- qlc

這個問題,可以用 Datalog 來表示,看得更清楚。

name(97

,alice

).name(98

,betty

).name(99

,carol

).score(97

,1,90

).score(97

,2,90

).score(98

,1,80

).score(98

,2,90

).score(99

,3,80

).q1(N

):score(N

,C,S

),S<

90.q2(N2

):score(N1

,C,S1

),notq1(

N1),

score(N2

,C,S2

).就是這樣

為什麼我覺得 Actor 很難用?

是可以完全不用鎖的,至少在使用者態。綁核全走非同步就行了,比如 seastar.io 非要說硬體鎖也是鎖。那就是鑽牛角尖了 Vincent Zhang 題主你說得對,Actor確實就是通過區域性序列解決併發的。併發是Actor必須要解決的問題,而Actor的存在並不僅是為了解決併發。而你說的FP,i...

為什麼我覺得Windows系統非常難用?

Spencer Lyo uwp和WinForm兩種程式確實會引起迷惑。我之前也研究了一會才明白咋回事。但整體來說Windows還是更適合大眾使用者的,你去體驗一下Linux或者macos就知道了。日常生活和娛樂性方面感覺Windows勝出,各種實用小工具數不勝數,但質量參差不齊 Windows開發門...

什麼時候覺得人生太難了?

曹菲 乙個對婚姻十分挑剔謹慎的人,意識到嫁了乙個自己愛的比較多的人,受盡了委屈,對方不在意自己的想法,也包容不了接納不了自己的負面情緒,懷孕8個月,感受到了人生的壓力,讓自己不得不勇敢站起來,自己來愛自己。 趙糰子 大概就是好好的一碗面,吃出了乙個蒼蠅 好好的在走路,遇到了乙個大石頭 好好的乙個朋友...