Database Systems Lesson #1 Course Introduction and History of Database Systems
クイズ
Andy Pavlo先生が毎セメスター出してるクイズ。
Q: なぜSNSとして先に登場したfriendstarというサービスは失敗して後続のFacebookが成功したのか A: FBはDBがしっかりしていたから。friendstarはDBが耐えられなくて遅くなって失敗した。
このコースについて
- DBが内部でどんな風に動いているかを学ぶ
- インメモリデータベースの内部構造を学ぶ
- 分散システムは扱わない
- SQLとか基礎的なアルゴリズムは事前に理解しておく必要がある
- マルチスレッドプログラムをGDBでデバッグする方法は学んでおく必要がある
- C++11でプログラムを書く
- Postgresの一部の大きなコードベースを使ってインメモリデータベースを作る
Reading Assignments
1授業につき1つの論文を読んで 概要(2文)、使われたシステムなど(1文)、評価法(1文) にまとめる。これを授業前までに行う。
Programming Project
Peltonって名前のPostgresをベースとしたインメモリデータベースをC++11で作る。課題は大きく3つに分けられる。
Project #1 and #2
#1はみんな同じものを実装して、#2はグループワークで分散B-Treeを実装する。
コードの剽窃をした人はクラスのwebサイトに永遠に名前を載せるらしい。剽窃に関してはめちゃくちゃ厳しくするって何度も言ってた。
Project #3
これもグループワークで、お題は自分たちで決めたものを実装するらしい。他のグループのコードを見てコードレビューしたり5分でキーポイントをまとめて発表したりする。
この課題は実装したパッチにPelotonのmasterブランチにマージされなければ完成とは認められない。しかもテストとドキュメントをしっかり書く必要もある。
History of Databases
データベースの歴史を1960年代から現在まで簡単に紹介していた。
- 1960年代: IBM IMSという階層データモデルを採用したDB
- 1970年代: CODASYLと言うもう使われていないCOBOLで使うためのネットワークデータモデルを採用したDB
- 1970年代: Ted Coddという人がIBM IMSの開発者を見て辛い気持ちになったのでリレーショナルモデルを考えた
- 1980年代: リレーショナルモデルがどんどん他のモデルのDBを駆逐していった
- 1980年代: インスタンスをそのまま保存するオブジェクト指向DBが出たけど標準APIないわクエリが複雑になるわでもう使われなくなった
- 1990年代: 新しいものが生まれない退屈な時代
- 2000年代: インターネット時代で企業は大幅なトラフィックの増大に耐えるためにDBを独自にカスタマイズしていた
- 2000年代: 可用性とスケーラビリティに注目してNoSQLシステムが生まれた
- 2010年代: NewSQLの時代。「H-StoreというDBは私が書いた」
- 2010年代: ハイブリットシステム
感想
まとめるために一時停止したり聞き取りにくかったところを巻き戻したりしてたら1回分(70分)を見るのに2時間近くかかった。
こんなん授業についていくのに必死で良い評価取れる気がしないわ・・・
毎週論文一本読んでSummerizeするの、結構楽しそう。
英語がめちゃくちゃ早くてよく聞き取れないところがあった。
オフィスアワーで「Relationshipsの相談も受け付けるよ」って言ってたのは面白かった。
この授業は多分もの凄くハードだけど、必死になってPostgresのような大きなコードベースを読み解くような経験をしたかしなかったかで今後の開発者としての経験値にはだいぶ差がつくと思う。頑張ってやり遂げたい。