Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Database qpstudy-okuno

7,960 views

Published on

  • Be the first to comment

Database qpstudy-okuno

  1. 1. データベース入門入門データベース入門入門 奥野 幹也 @nippondanji mikiya (dot) okuno (at) gmail (dot) com @qpstudy 2013.07 ゼロからデータベースをはじめるあなたに。
  2. 2. 免責事項 ● 本プレゼンテーションにおいて示されている見解は、私自身 の見解であって、オラクル・コーポレーションの見解を必ず しも反映したものではありません。ご了承ください。
  3. 3. 自己紹介 ● MySQL サポートエンジニア – 2000 年にサン・マイクロシステムズ入社 ● 主にハードウェアのサポートを担当 – 2007 年に MySQL KK へ転職 ● 気付くとまたサン・マイクロシステムズに・・・ – 現在は日本オラクルに在席。 – サポート一筋 13 年 ● 日々のしごと – MySQL トラブルシューティング全般 – Q&A 回答 など
  4. 4. 自己紹介(つづき) ● ライフワーク – 自由なソフトウェアの普及 ● オープンソースではない – GNU 大好き ● リチャード・ストールマン氏の教えに従って最近脱 Ubuntu しました。 – KDE 大好き ● ブログ – 漢のコンピュータ道 – http://nippondanji.blogspot.com/
  5. 5. データベースの意義
  6. 6. データベースの必要性 ● 大量のデータを安全かつ高速に処理する – 必要なデータを検索する – データを保全する – 素早い応答を得る ● アプリケーションからデータを扱う処理の実装を排除するこ とができる。 – 車輪の再発明の回避 – アプリケーションのロジックに集中 – 開発効率の向上 すごく 便利です。
  7. 7. インデックス
  8. 8. インデックスは便利! ● 必要なデータだけをピンポイントでゲット! – B+ 木なら探索の計算オーダーは最悪でも O(logbn) – キャッシュにページが乗ってれば更に高速 ● 範囲検索でも使える ● ソートでも使える ● 多種多様なインデックス – B+ 木 – ハッシュ – 全文検索 – 空間インデックス 大量のデータでも どんと来い!
  9. 9. トランザクション
  10. 10. トランザクションの至上命題 同時実行 制御 リカバリ
  11. 11. ACID Atomicity Isolation Consistency Durability
  12. 12. Atomicity (原始性) ● すべての操作は成功または失敗 – Commit – Abort ● アプリケーションは中途半端な状態について考慮する必要 がない – エラー処理は単にトランザクションをやり直すだけ – リトライは必要
  13. 13. Consistency (一貫性) ● トランザクションの前後でデータベースの整合性が保たれ ている。 ● ある整合性のとれた状態 A においてトランザクションを実 行すると、別の整合性のとれた状態 A’ へと遷移する。 ● 何をもって整合性がとれているとするかはアプリケーション 次第 A Trx A’ Consistent!Consistent! Consistent!
  14. 14. Isolation (独立性) ● あるトランザクションが他の実行中のトランザクションの実 行過程へ影響を及ぼさないこと。 ● 同時実行制御の課題。 ● 分離レベル – Read Uncommitted – Read Committed – Repeatable Read – Serializable
  15. 15. Durability (永続性) ● 一度 Commit が成功すれば変更は失われない ● リカバリの話。
  16. 16. トランザクションは便利! ● アプリケーションの開発がとても楽に。 – データへの排他処理から開放される – クラッシュしてもデータの整合性を気にする必要がない ● Commit/Abort のいずれかの状態 – 中途半端な状態について考える必要がない ● 成功してなければリトライ 全部自分で実装しますか?
  17. 17. インデックスや トランザクションだけで 満足してませんか?
  18. 18. 単なる データの入れ物として 使っていませんか?
  19. 19. 残された課題 データモデル
  20. 20. RDBMS 以前 ● 利用されていたデータモデル – 階層型 – ネットワーク型 ● トランザクションやインデックスは利用可能 ● クエリの記述が大変 – データの構造に依存したプログラム
  21. 21. 優れたデータモデルが必要! ● データベース設計超重要 – クエリとデータベース設計はセットで考える ● ⇒クエリ 演算 ● ⇒データベース データ – オブジェクト指向のオブジェクトとメソッドのような関係 ● クラスの設計超重要 「データベース=単なる入れ物」 からの脱却
  22. 22. RDBMS 登場!! 後半へつづく。
  23. 23. Q&A!! ご静聴ありがとうございました。

×