読者です 読者をやめる 読者になる 読者になる

WIP - 現場で使えるMySQL読書メモ

読書前の前提

これから読書をしていくにあたって

サーバプログラム、webサービスの実態とは「データベースをどう操作するか」である。 システムのレイヤは多層に渡るけれど、サーバサイドエンジニアとして新米の僕は、まずはDBに直接あたる基礎的な実装/概念を把握していくことで、全体の理解のための足場を作る。

今までに今取り組んでいるサービスほどの大きさの規模でのデータベースに触ったことがないので、"データベースを自信をもって触れるかどうか"はこのサービスのサーバサイドエンジニアとして最低限必要な能力である

この本を通して何を得ようと期待していたか

MySQLの実装の詳細 トランザクション処理の実際 マスター/スレイブ構成とは?

読み終わってどうだったか

前半の基本的な部分に関してはわかっていることが多く、 後半の実装の詳細/パフォーマンス・チューニングの実装を含めた対処法については、難しくて歯が立たないことが多かった。

所感

後半は読んでいて文字が頭から抜けていく感覚がありましたが、 とりあえず舐めて文字は追ったので、今後問題に立ち会った際に、この本に戻って来られれば良いと思います。


目次

Part 1 導入編

Chapter 1 MySQLの概要と環境構築

Part2 開発編

Part3 DBA編

  • Chapter8 アーキテクチャ、ファイル構成 
  • Chapter9 ユーザ管理、セキュリティ
  • Chapter10 バックアップ、リカバリ前編
  • Chapter11 バックアップ、リカバリ後編
  • Chapter12 レプリケーション
  • Chapter13 パフォーマンスチューニング前編
  • Chapter14 パフォーマンスチューニング後編
  • Chapter15 その他DBA向け機能

Part4補足

  • Chapter16 MySQL5.0の新機能開発
  • Chapter17 Windows版とLinux版の違い

そもそもデータベースとはなんなのか

本を読み進めるにあたって、僕はデータベースというものを概念的にどれ位理解しているのか、が気になった。

 業務/勉強として簡単にSQLを書いたりすることは今までもあったけれど、 よく言われるSQLとは関係代数の実装だ、とか  システム開発会社で言われるところの「DBエンジニア」が何をしているのか --素人考えで、なぜデータ・モデル/それを扱うソフトウェアとしてのデータベースに、ハードウェア的な要件が関わってくるのか-- がよくわかっていないまま生きてきた気がする。   なぜ、データを、「レコード」という形で扱うのか。そのデータをどう効率的に扱うのか

□ 事前に読んだページ、資料 - 21世紀はじめのweb技術史(itmedia連載) http://www.itmedia.co.jp/keywords/21century_hajimeno_web.html

Chapter1 MySQLの概要と開発環境

  • DBA(DataBaseAdministrater)の関心
    • アーキテクチャ
      • ファイル構成、プロセス構成、メモリ構成など
    • バックアップ

      • どのようなバックアップ手段があるのか 
      • 一貫性のあるオンラインバックアップは可能か
      • バックアップにかかる時間はどのくらいか
    • 性能管理

      • 期待される性能が出なかった場合、それを向上させる手段はあるか
        • CPU/メモリ/ディスクの増強やクラスタ構成をとることによって直線的に性能が上がるか
        • チューニングのためのパラメータやSQL構文は充実しているか
    • 領域管理
      • 空き領域の情報などの把握方法、領域の再編成の方法など
    • 稼働監視
      • プロセスの生存状態の簡易、ハングアップのための運用管理ツールはあるか ※ハングアップ : ソフトがOSレベルで動作不能状態になってしまうこと