如何看待王垠對資料庫的理解?

時間 2021-05-06 02:15:42

1樓:付強

對於高手來說,使用自定義資料檔案也能實現資料的高效儲存、管理。但這不符合軟體工程的發展要求,也不利於軟體的開發、維護。工具就是讓普通人也能達到高手的水平。

2樓:陳寧聰

其實我不是很明白既然王垠是做PL的,那他直接把所有可能(或者大部分)的資料庫各種巧妙優化整合到乙個語言裡面來做優化不是更能體現他的價值?當然不同的資料庫有不同的內部資料結構,這意味著它們很可能是不相容的,這是乙個困難的地方。不過如果能抽象出乙個統一的資料模型的話(譬如乙個衡量不同操作的Cost model),然後利用一定程度的編譯器優化,把資料庫具體實現一定程度隱藏掉似乎也是有可能的(雖然我感覺肯定有人已經做了類似的工作,而且應該會很難)

譬如就像現代編譯器提供的分層IR抽象,他完全可以把SQL作為最外層的表層語法,然後用NoSQL作為內部的IR,這樣非專業的人(譬如資料分析師,科學家等)就用外層的SQL,程式設計師也可以用NoSQL(類似於LLVM中的IR)自己編寫一些特別的優化,封裝以後提供給外層。做形式理論的還可以專門研究怎麼證明資料庫的一些特殊性質等等。

3樓:Abby Chau

Wc.... 你那lisp 語句能在怎麼樣的持續化層執行啊?

這思維也跳太遠了吧?

你可以說表是儲存效率、讀存速度、使用簡便性之間的妥協產物。

但說到直接訪問ram 的資料結構來取代dbms 檔案中的各種offset 和indexes。這是喝醉,不。。。是duckDB吧 (劃掉

4樓:

SQL高階裡說一句,設計者目的是為了遠離位址,以及sql語言本身就是取得集合的概念。

DMBS的缺陷之一是資料有限和資料型別不相容(比較有意思的和其他語言不同還是NULL),我感覺是mysql,sql3.0和sql server oracle都有很多的差別。

王垠看下來覺得更多是在推崇程式設計思想,並沒有就資料庫作為容器來說明,我覺得他有點偏題也可能我沒看懂,粗略提到了列模式資料庫和壓縮,從行row結構模擬到陣列的陣列結構。

「雖然我很感謝 miniKanren 教會了我邏輯程式設計的原理,然而我實現過的所有強大的型別系統,全都是用最普通的過程式或者函式式語言「,意思是他推崇oop設計思想和design pattern和更普遍的傳遞函式python functional programming (scala厲害了。。),並在後文就關係式的資料庫提出:思維枷鎖。

他也稍解釋了一些資料庫的變換,比如normalization,是變長後陣列需要被拿出來,並被原來陣列指向,挺說明資料庫的一些缺陷;「這些資料庫往往有各種各樣惱人的問題。這是必然的現象。因為這些資料庫公司靠的就是諮詢和服務作為收入「---我還是想他這裡多講一些

sql摸索下去很多,還有sql鎖和過濾

蹲看磚家。

5樓:恒子

有些說的沒有問題,sql的表達能力不如程式語言。但有些說法純粹是理論派脫離實際,對於列存拿陣列比較簡直就是扯淡,一次IO和一次陣列的random access能一樣嗎,所有的資料庫都使用列存,更是扯淡中的扯淡

6樓:徐敏

我不知道是不是我沒有搞懂,但是我不贊同王垠關於變長陣列變成行的說法。實際上變長就應該對應資料庫的行而不能是列,有些程式語言本就不支援非最後一維變長的,比如我用的http://

VB.NET

7樓:顧鈞

讀了王的這篇文章,真的蠻好笑的。所以我一直對我兒子說,人笨一點沒有關係,反正這個世界最不缺的就是「聰明人」。

程式語言中的資料結構確實是最靈活的。但如果沒有關係型資料庫,今天世界的資訊化水平應該會倒退20年。

我曾經在IBM做資料庫售前工程師,負責兩個資料庫產品,IMS和DB2。DB2自然是關係型資料庫。而IMS則是古老的層次型資料庫,說它古老是因為IMS最初是為了阿波羅登月計畫而設計。

但如果以今天的MongoDB這樣的文件型資料庫的眼光來看,IMS其實又很現代。因為IMS的資料模型和文件資料型別非常像。唯一的區別在於MongoDB把乙份文件作為乙個整體,而IMS則可以把乙份文件按照巢狀的層次拆解成若干層級。

Easy to use,這正是電腦科學領域發展的原動力。不然哪來的C語言,大家估計都還在寫彙編吧。

有時「聰明人」最大的問題就是陶醉於自己的聰明,而看不到別人的智慧型。

8樓:

關係型資料庫是個好東西,它解決了許多問題,SQL語言在當時也不算個壞語言。

但這不代表SQL語言現在不爛啊......

如果為SQL說話是強調關係型資料庫要用SQL語言是因為歷史包袱重,這個大家都能理解,就像數學語言。但這不代表它不爛啊。

9樓:Madden

就一句話,如果你覺得目前解決方案不好,就自己實現一套更好的方案出來,並且從商業上打敗原有方案,讓大家都認同你,光打嘴炮有什麼意思

人Linus嘴毒歸嘴毒,人好歹搞出了linux和git兩個改變軟體行業業態的東西,老王搞出了啥?只會打嘴炮的大牛我可不認

10樓:嘿嘿

卻是我也感覺sql沒必要存在,直接提供AP應該最好的選擇.

而且設計上存在sql注入這個bug,讓人容易接受.

表結構確實是一大亮點,但是存在一些不太合適解決問題,比如無限分類,大檔案儲存等等...

不過做的來說解決問題,比製造問題少. 而且少很多很多. 任何東西都沒有完美無缺的,所以後來才有nosql出現

11樓:Euclid級收容物

個人覺得y神和回答下的一些答主只是在從軟體的角度去思考儲存這樣乙個實體的問題。儲存很多時候是關於「訪問和查詢資料」而不是關於「如何訪問和查詢資料」。

很多時候資料的查詢是列內耦合的,而儲存是天然的按行儲存,這直接催生了關係代數來從理論上解決對資料的操作問題。在我看來這些存在的意義是如何讓資料緊湊,如何讓cache hit。

而nosql出現的背景是「關係簡單的海量資料」,天然沒有上面我說的資料模型特點,用sql就是脫褲子放屁。

12樓:藥杉

從自然語言,到資料操作語法,無論如何都需要一層轉化,也就是讓自然語言格式化。

問題在於讓這一層更接近誰:更接近自然語言,還是更接近函式。這取決於哪種接近能被最多的使用者群體接受。

最多的使用者群體,能接受的一定是最簡單最好理解的普適的。

所以sql就存在了。

13樓:xcc

王垠應該沒實際參與過一般的軟體開發。把造輪子當成普遍存在的,完全不懂分工協作。語言裡自帶的資料結構和一些函式的確提供了類似資料庫的功能,但是持久化,多語言支援,併發問題完全沒有考慮到。

資料庫可不僅僅是資料結構的集合

14樓:

開源的最大價值在於,在盡量脫離企業成本計算的困擾後,迭代和重構變得乾脆和快樂了

新人也可以通過不考慮歷史包袱的方式展現自己的價值。

sql本身就是歷史發展的產物,nosql也是後人在審視現狀後拋棄歷史包袱的產物。

未來硬體,產業環境都會繼續有變化,也會產生新的生產力方式。

到時候,觀點也會更加傾向於理想主義

時代就是不斷的由現實走向理想化。這得益於整體行業基礎的發展,而不是理論上

15樓:mead

有些人就是覺得自己什麼都懂,現代社會,都是術業有專攻,聞道有先後。如果以為什麼都懂,很難進步和成長。

另外與其在批判資料庫,不如建設性的創造乙個媲美資料庫系統的產品替代它。有志氣的話,把oracle幹下去,大家就都服你,別給什麼大公司打工啊……幹趴Oracle,DB2,MySQL,SQLServer

16樓:重劍無鋒

這麼多人回答,基本都說不到核心問題上。

我來翻譯一下,王垠關於資料庫的一貫論點,核心就是「沒有必要為了資料庫,再創造一種叫SQL的語言,只要有遠端執行(RPC)就夠了」。換句話說,SQL多了一層不必要的抽象,增加了「程式語言」到「SQL」再到「優化後的SQL」這種工作量。

換個角度想,如果SQL一開始就沒有出現,用的是RPC,那麼這麼多年過去,這麼多人力堆上去,該解決的問題是不是照樣也能解決了?直白一點,我不寫select col from table where a=1,而是在資料庫server遠端執行乙個select(table, filter=, columns=[col]),你能證明這條路就一定沒前途,就不科學,就玩不轉了?

學而不思則罔,供各位「資料庫專家」,「業內人士」,「真正的大神」們參考。你們可以在屎山上工作,並以自己對某一塊屎的精深理解無比自豪,但是在山外人看來,成分還是一樣的。

17樓:Kosho

這是王垠14年的文章,現在用這個批判他其實不太合適了。

我是他的粉絲,從他部落格學到不少。其實沒啥資格評價他,他水平比我高的多。

很顯然這篇文章太理想化,也是以前他被人詬病缺乏工程實踐的原因,雖然很多觀點挺有意思的。這個時期他很多想法都不夠成熟,經常只看到缺點,眼高於頂。

18年他回國以後,改變了不少,不再懟天懟地了。

可以看他這篇文章【更新一下】

希望他證明自己。

18樓:木頭龍

從根本上就錯了。

CREATE

TABLE

Students

(sid

CHAR(20

),name

CHAR(20

),login

CHAR(20

),age

INTEGER

,gpa

REAL

)等效的是:

struct

fix_student

而不是struct

student

這兩個結構體看上去似乎區別不大,後者更靈活。然而即使記憶體夠大,資料量上千萬的時候,這兩個結構的效能就差遠了。更不用說,把這些資料放到效能比記憶體慢N倍的硬碟上的時候了。

既然根子上就錯了,後面的就不用說了。

19樓:

王垠這人最自誇的專案就是程式語言,所以他的文章基本都會往程式語言上靠。

吐槽資料庫,其實是吐槽的SQL語言,而吐槽SQL,也沒什麼錯的。而文章裡講的其他東西都是細枝末節。

要抓住文章的中心思想。

20樓:見賢

王垠到現在還不明白,對於乙個小領域的精通並不代表在其它領域也精通,達文西一般的人在現代社會如此細分領域和高密度資訊的前提下是基本不可能存在的。

說缺點誰不會啊,說得好像我們村里還沒通網都沒用過一樣,工程上的實現和trade-off只有真正經歷過的人才知道啊。

21樓:

王垠:我早就說了我不上知乎,知乎上的人水平不咋地。

19年了,一幫人拿著王垠一篇14年寫的文章口誅筆伐,一頓猛批,搞得我還以為垠神有什麼新作一樣,時隔五年了你們還「趁熱」?五年了呀,高三復讀加乙個本科都念完了呀,你們批的是明朝那些事呀?還週末有空坐下來批?

感情您這五年間都沒空?真是日理萬機呀。恕我小心眼,您是不是蹭王垠的名字來碰瓷炒的呢?

如何看待王垠對樂理的理解?

LaurentZJY intel CPU 解碼器 hhhh 我真是笑了,這比喻也太形象了吧?這比喻也太形象了,瞬間明白了王垠想要描述的複雜 混亂程度。 如果我說的每句話.除非我不發,不然我覺得我所有發的東西都跟王差不多.舉個例子,我上個OLS發表個觀點,dalao肯定問高斯馬爾科夫,甚至還會質疑我為...

怎麼簡單地理解資料庫的概念?

舉個資料庫的例子 姓名性別年齡 張三男 21歲 李四男 20歲 王五男 19歲 以上是乙個資料庫的內容。這些資訊可以採用某種檔案形式儲存在計算機磁碟上,如儲存為文字檔案 d names.txt。可以認為是資料庫以檔案的形式儲存在磁碟。之後可以通過命令進行檢索 修改 統計。資料庫檔案和最後的那些操作命...

請問資料庫中的自連線怎麼理解?

時光與位元組 自連線是內連線的一種,內連線可分為等值連線和自身連線。等值連線 查詢兩個表中連線字段相等的記錄。自身連線 就是和自己進行連線查詢,給一張表取兩個不同的別名,然後附上連線條件。以下面這張表為例 要查詢與姓名 HH 同齡且籍貫也相同的學生資訊。就可以用自連線查詢 SELECTB.學號,B....