Fw: [心得] 雲端資料庫 吳尚鴻
※ [本文轉錄自 candog 信箱]
作者: candog.bbs@bbs.cs.nthu.edu.tw ("FireBolt")
標題: [心得] 雲端資料庫 吳尚鴻
時間: Wed Feb 15 01:39:43 2017
作者: SLMT (偶叫小山) 站內: nthu.course
標題: [心得] 雲端資料庫 吳尚鴻
時間: 2013/07/07 Sun 16:55:08
課名:雲端資料庫
科號:CS574000
老師:吳尚鴻
課本:課程講義
課別:資工系選修
學分:3 學分
涼度:★★
甜度:★★★★★
建議先修課程:
這門課需要看大量的程式碼,而程式碼都用 Java 撰寫,因此需要先學過
Java 程式設計。另外,資料庫用到很多作業系統的概念,所以最好也先修過
作業系統 這門課。最後,老師要求學生必須要有使用資料庫的基本知識,
所以最少要懂如何使用 SQL 指令,以及一些關於 Entity Model 的知識。
課程內容:
這門課主要的目的是要教授同學如何撰寫一個分散式資料庫。
注意!是撰寫,不是使用。因此老師在第一門課的時候會先告知學生,
這門課在前幾堂課有一個期初考,目的是測驗學生是否具備基本資料庫的知識。
1. 單一資料庫基本架構
前面大概會有 2/3 學期的時間在教授如何從無到有撰寫一個資料庫。老師的
實驗室有改寫一個教學用的資料庫 SimpleDB ,加入了許多新的功能,並改名為
VanillaDB-Core。這段期間老師會帶大家看過這個資料庫基礎架構的程式碼,以及
教導這個架構之下的基礎概念。
為了保證資料庫達到四大基本特性 ACID (Atomic、Consistency、Isolation、
Durability),使的資料庫的架構變得無比龐大。這期間的課程由上到下大略涵蓋:
與 Client 的溝通、解析 SQL 指令、如何找出處理指令的路徑、將資料存進硬碟、
如何建立 log 保證資料不會遺失、如何讓多個指令同時執行又不影響到對方。
在這期間,會需要看大量的程式碼來瞭解實作細節,所以我認為這算是不小
的負擔。(這部分至少需要看 100 以上的 class 檔)
2. 分散式資料庫
剩下 1/3 是在教如何將前面所建立的資料庫放在不同電腦上,並使用分散式
系統的方式讓這些資料庫連接起來。連接起來之後,又必須要確保資料庫的特性
(ACID),以及雲端資料庫的三大要點:High Scalability、High Availability、
High Elasticity。
一開始會先介紹目前較知名的分散式資料庫,然後再切入說如何個別達到三
大特性。最後會引出說其實世界上沒有真正的雲端資料庫,因為這些特性會互相
影響,現在業界施行的都是犧牲某些特性來達到部分目標這樣。
這部分也有程式碼要看,不過因為老師是第一次開這門課。這部分的程式碼
較晚發布,稱為 VanillaDB-Comm,跟 VanillaDB-Core 合併之後就是一個分散
式資料庫了。這個資料庫只保障了 High Availability 這個特性,但也有不少
的程式碼要看 (大概 30 class 以上)。
上課方式:
老師上課一律使用投影片教學。因為要教的東西很多,上課步調緊湊。但是
精神不需要太緊繃,放鬆心情專心聽講即可。老師喜歡與同學互動,例如在教一個
技術之前,會先問同學說「如果是你會怎麼做?」當然這不會記錄到分數裡面,但會
讓大家試著去思考加深不少印象。
作業內容介紹:
這學期一共有四份作業與 Final Project。大部分都是增減一些功能,只要
有把資料庫實作方式搞懂,那要完成就不會太難。另外,通常老師要求學生在
完成之後寫一份報告,並自行設計實驗來測試結果。如果實驗測得越細,並且可以
提出適當的說法來證明實驗結果。那分數就會非常高。
作業一
依照業界標準的 TPC-C 撰寫一個簡化版的 Benchmark 來測試資料庫。
作業二
在 VanillaDB-Core 內實作新的 SQL 指令 Explain 。
作業三
修改 VanillaDB-Core 儲存資料的機制,並實作 redo log 功能。
作業四
在 VanillaDB-Comm 實作 Zab Consensus 的溝通系統。
Final Project
將 VanillaDB-Core 與 Comm 合併,並修改為 Deterministic Database 。
以達到 Availbility 的特性。
考試介紹:
我想最特別的應該是這門課有期初考,而且占的分數不少。內容大致是關於
SQL 指令的使用以及 Enity Model。其實沒有學過沒關係,剛開始我也沒有學過
,老師會在第一堂課告訴大家可以去看哪本書的哪幾個章節。那本書在網路上
就可以找到電子書。然後在第三堂課的時候考試這樣。考試的難度還挺高的,
我懷疑老師根本想嚇跑我們,不過有念熟就不需要害怕。
原本這學期還有計畫期中與期末考,但是因為考慮到作業份量的問題,就直接
取消了。原定的分數就合併到作業與 Final Project。不過這是第一次開課,
下一次開課很有可能會改變方針。
給分:
期初考 10%
作業 x4 各占 15 % (共 60 %)
Final Project 30 %
我個人覺得這門課給分非常大方,只要你有努力,例如實驗做得很認真,數據
很確實。那麼就會拿到非常高的分數。就算沒有精美的報告,只要要求有達到,分數
也會不錯。
當然考試的部分就是白紙黑字的分數,考幾分就看自己的努力。
老師的喜好、個性:
個性爽朗,容易親近,很年輕,但是感覺生涯經歷豐富。老師原本
是在美國 Telcordia (前身貝爾實驗室) 工作,後來回到台灣當老師,據說是希望
能培育出有能力自行創業的學生。
給加簽嗎?
完全沒問題
成績分布:
↓每組人數
A+ 39.3 % (11) <------- 在下在這裡
A 21.4 % ( 6)
A- 14.3 % ( 4)
B+ 3.6 % ( 1)
B 7.1 % ( 2)
---------------
C+ 3.6 % ( 1)
---------------
D 3.6 % ( 1)
E 7.1 % ( 2)
--
▂__ˍ(_▇▆' * ◣_ ◣◢▆▇ ▁_ ▄▆▇。.楓橋驛站.telnet://imaple.tw◆◣}
=▁ ▔﹊ ̄ *. ▆川@▋ ▃▔ ▂~+ ◤丑
 ̄▃▂▁▂。▁▂ˍ_◢〢_▇.* ├=rom:r326-27.cs.nthu.edu.tw
﹊ ̄﹊ ̄ ̄﹊﹊ ̄ ̄﹊ ̄﹊ ̄ ̄﹊@人 ̄ ̄﹊ ̄﹊ ̄ ̄﹊﹊ ̄ ̄﹊﹊ ̄ ̄﹊﹊ ̄﹊ ̄
SLMT 於 2013/07/07 Sun 17:02:06 從 r326-27.cs.nthu.edu.tw 修改
△ cfcs2004:我同學被當 科 07/07 17:52mtEK
△ geniusturtle:路過推 07/07 18:18olIh
△ Richo:推,還有推原po的C#教學 07/07 20:49lzWe
─ Liz:push 07/13 22:19gxfw
△ Liz:補 07/13 22:20gxfw
△ TK421:推 10/22 23:27ldNn
SLMT 於 2014/01/02 Thu 12:06:53 從 shwu14.cs.nthu.edu.tw 修改
SLMT 於 2014/01/02 Thu 12:07:45 從 shwu14.cs.nthu.edu.tw 修改
△ Only:大推原PO的C#教學~ (雖然還沒時間看XD) 01/04 17:15lzSD
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: candog (140.114.206.139), 02/15/2017 13:12:28