Más contenido relacionado
La actualidad más candente (20)
Similar a リレーショナルデータベースとの上手な付き合い方 (20)
リレーショナルデータベースとの上手な付き合い方
- 3. 自己紹介
●
MySQL サポートエンジニア
– 日々のしごと
● トラブルシューティング全般
●
Q&A 回答
● パフォーマンスチューニング
など
● ライフワーク
– 自由なソフトウェアの普及
● オープンソースではない
●
GPL 万歳!!
– 最近はまってる趣味はリカンベントに乗ること
●
ブログ
– 漢のコンピュータ道
– http://nippondanji.blogspot.com/
- 15. ACID
● トランザクションが満たすべき性質
– 原子性
● トランザクションに含まれる操作全てが成功
( Commit )か失敗( Abort )になるという性質
– 一貫性
●
トランザクションを実行した前後ではデータの一貫性が
損なわれてはならないという性質
– 分離性(独立性)
● 同時に実行している複数のトランザクションが、互いに影
響を与えないという性質
– 永続性
●
いったんコミットが完了したトランザクションが消失しない
という性質
- 16. トランザクションがない場合に
起きること
● 排他制御が不在
– 同時に同じデータへアクセスする場合、更新異常を防ぐ
にはどうする?
– アプリケーション側で大量のロックを記述する?
● トランザクションがあれば、分離性があるので勝手に
やってくれる。
●
エラー処理が超複雑に
– どこまで処理が進んだかによってエラー処理も場合分け
●
10 の更新から成るトランザクションは、 10 のケースにつ
いてエラー処理が必要。
– トランザクションがあれば原始性があるので、処理が中
断するとすべての更新をロールバック。
– クラッシュ後のデータは正しいか?
●
そもそもどうやって確かめる?
– トランザクションの永続性があれば COMMIT したデータが
存在することが保証される。
- 17. ACID の C
● 一貫性って何?
●
トランザクション理論自体は一貫性を規定しない
– 一貫性を定義するのはアプリケーションの役目
– 制約などを使う
●
制約という仕組みを使って一貫性を記述するのはアプリ
ケーション
- 20. リレーショナルモデルがない世界
● データモデルの不在
– データモデルはデータ取得のための演算を定義
● 効率よくコンパクトにデータの問い合わせを記述できる
– データの演算をアプリケーションで自前で記述する?
● データベースはただの入れ物という考え
●
実際そういう現場が多いからデスマーチに・・・
●
正規化理論の不在
– 正規化理論は、更新によって生じるデータの矛盾を、
データベース設計そのものにより防ぐ理論。
●
ACID の C
– データの矛盾をアプリケーションで自前で記述する?
● チェックのための処理が大量に必要に・・・
- 25. プログラミングパラダイムと
データモデル
● プログラミングパラダイム
– 手続き型
– オブジェクト指向
– 関数型
etc etc
● プログラミング言語にはそれぞれ適した書き方がある!!
– Java はオブジェクト指向で使うべき
●
main メソッドに全てのロジックを記述するべきではない
●
データモデルにはそれぞれ適した DB 設計がある!!
– 「データベースは単なるデータの入れ物だ」という考え
方は、 Java で main メソッドに全てを記述するのに等し
い
- 33. クエリの改善
その 2
● インデックスを活用する
– 基本中の基本
– 意外と何とかなることが多い
●
そもそも DB 設計は問題ないか?
– クエリはテーブルを入力とした演算
– 入力の設計が良くなければ、クエリが遅くなるのは必然
– 更新は正規化でシンプルに
- 36. RDBMS と上手に付き合う
ためのポイント
● リレーショナルモデルを知ろう
– 道具を使うには、使い方を理解する必要がある
– 使い方を知ることで、正しい用途も見えてくる
– なぜその使い方が良いのか、あるいは良くないのかを説
明できる
●
トランザクションを知ろう
– トランザクションは開発を大幅に効率化する
– エラー処理が簡略化
● パフォーマンスを向上するための仕組みを知ろう
– RDBMS の実装
– クエリの改善
アーキテクチャや
理論の理解は超重要
- 38. 宣伝: 新書籍「詳解 MySQL 5.7 」
●
MySQL 5.7 の新機能を網羅
– 175 もの新機能を解説
– 新機能の理解に欠かせ
ないアーキテクチャの話
も盛りだくさん
– MySQL の実装について
詳しくなれる!!