標籤:

想真正從基礎到深入地學習資料庫,但是市面上的數據過多,有什麼好的書籍,網站嗎?


入門方法有很多種,但是私以為,深入學習資料庫光看書是不夠的,還是多看看paper,各大資料庫產品新feature,不斷研究,才談得上深入


依我愚見,資料庫的學習路線大致是這樣: 首先是學會使用,這方面的數書籍很多,類似《XXX實戰》之類的,接下來是資料庫的運維,包括備份恢復等。還有很大一部分是就是資料庫的調優,這個我覺得放在後面比較好一點。

學會使用之後就是研究資料庫的實現了,推薦一本《資料庫系統實現(第2版)》 加西亞.經典書籍,值得一讀,接下來可以結合這本書分析一下資料庫內核的代碼。比如選擇mysql,推薦一參考書:

《資料庫技術叢書·MySQL技術內幕:InnoDB存儲引擎(第2版)》 姜承堯 (David Jiang)【摘要 書評 試讀】圖書. 這本書講得很好,可以拿來做參考書。 如果選擇postgre ,那我推薦彭智勇先生的《PostgreSQL 資料庫內核分析》 彭智勇, 彭煜瑋【摘要 書評 試讀】圖書。

了解資料庫文件的組織形式,索引的演算法和實現,mvcc的實現,事務的實現。sql語句的編譯和優化。

到了這一步,我想sql的優化也會有一定程度的掌握了。

接下來就是分散式存儲的部分。重點把握分散式事務的原理和實現。


基礎

  • Beginning Database Design: From Novice to Professional - *

  • Head First SQL - SQL語言

  • The Manga Guide to Databases - o.O

  • Six-Step Relational Database Design: A Step by Step Approach to Relational Database Design and Development

進階

  • SQL Antipatterns: Avoiding the Pitfalls of Database Programming

  • Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design (3rd Edition)

  • Patterns of Data Modeling

NoSQL

  • Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement

  • NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence

MySQL

  • High Performance MySQL: Optimization, Backups, Replication, and More

  • MySQL High Availability: Tools for Building Robust Data Centers


想真正從基礎到深入地學習資料庫,但是市面上的數據過多,有什麼好的書籍,網站嗎?

回答:

1.專心學習《資料庫系統概論》一書;

2.周邊的知識學習:Linux操作系統及相關的硬體、網路知識、數據結構等;

3.選擇一款市場需要或稱主流的,且自己感興趣的,比如Oracle MySQL MSSQL三類;

4.不要輕易相信網路上的資料,很多都是你抄襲我,我抄襲你,而且你我都是錯的;

5.勤加練習和實戰,尋找實習的機會;

若有想法且走開源資料庫MySQL路線,可以聯繫我:jinguanding#http://hotpu.cn #換成@


推薦關注,阿里雲大學專欄:

目前已經推出的資料庫自學課程有:

1、【阿里雲大學課程】MySQL大牛丁奇:分散式資料庫技術與實現 - 知乎專欄

2、PostgreSQL入門到精通--世界上功能最強大的開源資料庫 - 知乎專欄

除了以上兩節資料庫課程外還開放了前端、機器學習等十多門課程,敬請點擊查看:阿里雲大學 - 知乎專欄


嘗試用資料庫技術給家門口的商店做個簡陋的進銷存管理系統,邊做邊啃書。


《mysql必知必會》-&>《高性能mysql》


只回答一下簡單RDBMS相關的啊,不包含NoSQL.

首先,了解一下基本知識,資料庫,schema,table,row這種,同時掌握一下基本的CRUD操作,這個你隨便找一本書都無所謂的。

然後其實有很多方向可以選,如果你想深入了解SQL,那找一本大學的教材就可以了,一般大學用的教材關係代數部分都會有很詳細的介紹,比如說經典的《資料庫系統概念》(https://book.douban.com/subject/10548379/_。

如果想了解一下資料庫的架構,可以看看Anatomy of a Database System(https://courses.cs.washington.edu/courses/cse444/17wi/papers/AnatomyDB.pdf)這個論文,這個論文把資料庫的整體架構介紹的很清楚,對哪部分感興趣可以找對應的開源項目的源碼查看。

如果是想在運維中更好的用好資料庫以及了解一些高級特性,最好的地方是官方文檔,包括features,replication,包括一些常見的第三方工具直到內部實現,這種一般都有介紹,比如postgresql 3000多頁的文檔 https://www.postgresql.org/docs/9.6/static/index.html。

開發中還有一方面是ORM和表的設計,這個感興趣可以看看你語言里ORM的源碼和其他開源項目的DB部分的表設計。

如果是優化呢,topic就有點多了,這本書寫的還可以《資料庫查詢優化器的藝術》https://book.douban.com/subject/25815707/。


到這裡簡單RDBMS的理論知識基本就已經走到頭了,可能還會缺一些大規模情況下的設計,和一些最新的知識,這種多看看相關的技術演講和Blog,比如說 https://dbweekly.com/ , https://postgresweekly.com/ 都可以訂閱一下。

上面這些東西其實蠻多的,我個人也沒有全都看過,有些東西都是有需求了現去看的,至於要不要完全精通,看個人吧。


推薦閱讀:

Android 開發中為什麼很少使用 JSON 存儲數據?
如何從零寫一個kv資料庫?
區塊鏈和分散式資料庫有什麼本質不同?
設計的時候,如果去掉外鍵關聯,postgresql和mysql,哪個更有優勢?
為什麼新的分散式資料庫又開始支持關係模型了?

TAG:資料庫 |