資料庫有沒有類似現代操作系統的好書?

手上有資料庫系統概念和另外一本資料庫的設計與實現,但感覺這兩本書都有點過於面面俱到且平均用力,行文沒什麼章法。不知道有沒有類似現代操作系統言簡意賅,關鍵處又不含糊的書。


《資料庫系統實現》,作者:Jeffrey Ullman,是Google聯合創始人謝爾蓋·布林的PhD導師。

中文版:《資料庫系統實現(第2版)(資料庫系…|196730》【摘要 書評 試讀】

英文版:《資料庫系統實現(英文版)(第2版)》([美]加西亞·莫利納,等)【摘要 書評 試讀】

電子版:http://dsm.fudan.edu.cn/JSPWiki/attach/Material_db/database%20system%20complete%20book_2nd.pdf

英文版和電子版的內容要多一些,從第IV部分開始大概相當於中文版的內容。

你說的那本書更多的是從使用資料庫的角度上來講的,底層也有,但是比較少,適合作為學習資料庫的第一本書。

這本書比較偏重資料庫底層實現,數據物理存儲結構,查詢引擎,查詢優化器,索引,緩衝區管理,並發控制等都講的比較詳細,例子也豐富,適合作為學習資料庫的第二本書。學習完這本書,在比較有經驗的人的指導下,就可以一點點實現一個簡單的傳統關係型資料庫了,簡易版PostgreSQL,性能肯定會比較差。

後面可以看CMU的這個視頻和相關論文Schedule - CMU 15-721 :: Database Systems (Spring 2016),可以學到如何實現一個高性能的OLAPOLTP內存資料庫。


1. Database System Concepts

2. Database System Implementation

上兩本經典入門。多謝 @Andy Henry 指正。第二本書的前一冊是A First Course in Database Systems。不過我上學時讀的是Concepts,感覺還不錯。First Course這本後來也看過,也許因為是後看的,印象不如前者。

3. Readings in Database Systems

知道來龍去脈,還是要多讀論文

4.Oracle Core Essential Internals for DBAs and Developer

最佳實踐


0. 完整教材:

  • 全書:Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer Widom: Database systems - the complete book (2. ed.). Pearson Education 2009, ISBN 978-0-13-187325-4, pp. I-XXVI, 1-1203

  • 奶牛書:Raghu Ramakrishnan, Johannes Gehrke: Database management systems (3. ed.). McGraw-Hill 2003, ISBN 978-0-07-115110-8, pp. I-XXXII, 1-1065

1. 資料庫基礎

  • 帆船書:Abraham Silberschatz, Henry F. Korth, S. Sudarshan: Database System Concepts, 6th Edition. McGraw-Hill Book Company 2010

  • 全書前一半:Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer Widom: Database systems - the complete book (2. ed.). Pearson Education 2009, ISBN 978-0-13-187325-4, pp. I-XXVI, 1-1203

2. 實現

  • 奶牛書:Raghu Ramakrishnan, Johannes Gehrke: Database management systems (3. ed.). McGraw-Hill 2003, ISBN 978-0-07-115110-8, pp. I-XXXII, 1-1065

  • 全書後一半:Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer Widom: Database systems - the complete book (2. ed.). Pearson Education 2009, ISBN 978-0-13-187325-4, pp. I-XXVI, 1-1203

  • M. Tamer ?zsu, Patrick Valduriez: Principles of Distributed Database Systems, Third Edition. Springer 2011, ISBN 978-1-4419-8833-1, pp. I-XIX, 1-845

3. 理論

  • 棒球書:J.D. Ullman: Principles of Database and Knowledge-base Systems, Vol. I/II. 1988/1989

  • 愛麗絲書:Serge Abiteboul, Richard Hull, Victor Vianu: Foundations of Databases. Addison-Wesley 1995, ISBN 0-201-53771-0

4. 事務

  • 基礎:Philip A. Bernstein, Eric Newcomer: Principles of Transaction Processing for Systems Professionals (2nd Edition). Morgan Kaufmann. 2009

  • 理論:Gerhard Weikum, Gottfried Vossen: Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery. Morgan Kaufmann 2002, ISBN 1-55860-508-8

  • 實現:Jim Gray, Andreas Reuter: Transaction Processing: Concepts and Techniques. Morgan Kaufmann 1993, ISBN 1-55860-190-2

5. 進階

  • 紅寶書:Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker, editors. Readings in Database Systems, 5th Edition (Readings in Database Systems, 5th Edition)


我對於目前最高票的回答( @李晨曦 的回答)進行補充。

從內容上來說,完整的一本書叫做《資料庫系統全書》(Database System the Complete Book)

①其1-12章講的是有關關係資料庫、SQL語句的。

②其13-最後講的是資料庫系統實現,主要是存儲管理器、查詢處理器、事務管理器。

資料庫系統全書有兩個版本,第一版是2000年左右的。第二版是2008年左右的。

在對於第二版進行翻譯的時候,機械工業出版社將其翻譯為兩本

不過好像是本身就是兩本書,結合起來構成了一本全書。

斯坦福大學學生先上基礎教程,再上實現。

①《資料庫系統基礎教程》(A First Course in Database Systems)第三版

②《資料庫系統實現》(Database System Implemention)第二版

另外在京東上,其《資料庫系統實現》的影印版也就是英文版的目錄將《資料庫系統全書》

的目錄包括進去了,實際上其只有《資料庫系統實現》對應內容。

綜合以上,如果我們想買實體書將最新版的《資料庫系統全書》看完。

我們就得買兩本。


資料庫系統實現,是一本達到影響我人生高度的好書,僅次於 他改變了中國,xxx傳,這本書內容全面,而且精鍊,書很薄,看完這本書,可謂任何資料庫概念,nosql,關係型,key value,mpp啥的,什麼olap,oltp,全是牛鬼蛇神,了無秘密可言。


毫無疑問的推薦資料庫系統實現。讀明白這書,很多東西就都懂了。


兩方面:

資料庫系統,沒有很好的書,公認的是紅寶書是一個reading list:

Readings in Database Systems (Readings in Database Systems, 5th Edition),目前這一版是Michael Stonebraker, Peter Bailis 和Joe Hellerstein三位老,青,中資料庫系統大牛編的。

資料庫理論,公認是The Alice Book:

Foundations of Database (Foundations of Databases)

這兩本書作者都放到網上了。


原理類的,就是這兩本:

  1. 《資料庫系統概念》

  2. 《資料庫系統實現》


怎麼沒人說這本書:Database System Concepts ,中文名:資料庫系統概念。經典之作啊!


stonebraker的architecture of a database system.

jim 的transaction

Jim在Transaction里說:This presentation is like a compiler course textbook or like Tanenbaum"s operating system book!

Jim在資料庫事務方面的研究成果而獲得了圖靈獎,該書是他的傳世之作,他自認該書類似現代操作系統一書。


你的感覺很對:為什麼有這些東西。

這個問題非常好。問到本質了。

不過,這不是一本書能夠搞得定。

甚至不客氣地說,沒有一本書是直截了當地回答這個問題。

最多是什麼三少一性。

但是這不是最核心的。

最核心的問題是如何管理數據,為什麼要這樣管理數據,資料庫的結構和運行機制過程是什麼樣的,為什麼要這樣設計。

所以你自己要有一個模型,最簡的。有了最簡模型後,再加以擴展。

三個層次,底層的機器世界,中間的信息世界,上層的現實世界。

機器世界,數據結構的書,特別是內外存索引和映射。

信息世界,離散數學的集合和關係代數,加上數理邏輯(如果是非關係資料庫,那麼圖論)。

這兩層之間是映射,也就是數據的三要素:模型,操作,約束。

現實世界,又是各種數據的范型。

這些最好是和實際運用結合起來。

從實際運用中理解dbms的設計與實現。主要是體會建模,操作,約束,存儲,性能,事務這幾個機制的意義、作用和實現。

可以找一本設計資料庫的論文看看。

這樣你就知道資料庫到底是什麼回事。

市面上書,多是知其然而不知其所以然,沒有整體觀。


直接搜cmu計算機開放課程的資料庫課程。上面的reading list里都是需要讀的。mit, ucb,stanford的開放課程都可以作為參考。


既然組成原理、計算機網路、操作系統都有了……

跪請Tenenbaum教授再寫一本資料庫教材,一定不會差。

不止一次有過這個想法


老闆給我的學習路徑:

1. 先看C J Date老爺爺的Introduction to database system,了解關係資料庫理論和SQL等。

2. 再看看國內的資料庫系統概論或類似的書籍,了解一點資料庫系統實現的概況。

3. 學習資料庫系統實現,掌握經典的系統實現方法。

4. 學習J Gray的事務處理原理和技術,掌握核心的事務實現。

5. 按照需要學習專門的各種資料庫,例如內存資料庫、空間資料庫、分散式資料庫、對象關係資料庫、數據模型。

6. 讀論文:VLDB、ICDE、SIGMOD以及現在的OSDI之類。

7. 中間當然還要做課程作業,實現原型系統,灌水寫論文。

8. 分析/修改商業系統、原型系統或開源系統。


樓主看的兩本書都是講關係理論和資料庫設計的,類似的還有資料庫系統導論。這本書的作者是Chris Date,是E F Codd的同事,強烈推薦他寫的所有書。回答里大家推薦的資料庫系統實現更偏重於怎麼開發一個DBMS,跟上面的書完全不是一類。


打基礎的話 《資料庫技術與應用教程》、《資料庫技術與應用教程實驗指導》,兩本都是電子科技大學出版社出版的,基礎的比較合適,題型較新,內容較全,總結歸納也不錯,良心推薦。


直接看書會讓你更暈 一個事務系統就是好幾百頁的大部頭 心煩意亂無心撩妹 不如先看些跟資料庫相關的代碼 然後再去翻書


推薦閱讀:

一個高級資料庫管理員或者老練的DBA都具備哪些逆天的技巧?
像知乎這樣的評論回復模式,資料庫應該怎麼設計比較好,考慮性能、可擴展性等?
SQL語句為什麼使用select * 會降低查詢速度?
單機 MySQL 資料庫可以支撐多大數據量?
關於資料庫,非空列有什麼好處嗎,和索引有什麼關係,為什麼盡量設置成非空呢?

TAG:資料庫 | 資料庫性能 | 編程 | 資料庫設計 |