TxKxZxWx's blog

AWS SAA取得に向けて学習

AWS SAA取得に向けて 58日目 「データベースの基礎①」 セクション11:データベース

セクション11:「データベース」

------------------------------------------

 

 

「データベースの基礎」

 

 

データベース

データベースは関連したデータを形式を揃えて収集・整理して、検索などの操作やデータ管理を実行するシステム。

 

データがただ集まっているだけでなく、コントロール・制御するシステム。

データベースに新規にデータを保存したり、データベースからデータを抽出したりする。

 

 

 

データベースを実現したシステムをDBMS(データベースマネジメントシステムという)

 

 

基本的なデータベースはテーブルという形式でデータを格納している。

 

Excelのようなイメージ。  

 

 

データベースは追加・参照・更新・削除などのデータ操作を容易に実行するソフトウェアやデータモデルと一体。

 

  • 追加:データを整理して保存する。
  • 参照:必要なデータを参照または抽出する。
  • 更新:データの変化に応じて好きなときに更新する。
  • 削除:必要ないデータを削除する。

 

 

 

追加・参照・更新・削除を総称してCRUDと呼ぶ。このCRUD操作を実現するのがデータベースとなる。

  • Create 追加:データを整理して保存したい。
  • Read 参照:必要なデータを参照または抽出したい。
  • Update 更新:データの変化に応じて好きなときに更新したい。
  • Delete 削除:必要ないデータを削除したい。

 

 

 

データベースとストレージ

ストレージはデータベースの記憶装置を構成する1つの要素。

 

Image from Gyazo

 

 

 

データベースの役割

データベースはデータ操作を異状なく実行でき、データを安全に保護しつつ、保存・操作ができる仕組みを提供している。

 

【データ操作にかかる様々な課題】

  • システムがクラッシュしたときにデータが消えないか?
  • データを誤って削除してしまった場合に対処できないか?
  • データ抽出に誤りが発生しないか?
  • 2人が同時に同じデータにアクセスした際にどうするか?
  • 大量のデータを上手く検索できないか?

 上記のような時にデータベースソフトウェアを使ってデータベースシステム、マネージメントシステムが処理をしてくれる。

 

 

データベースの役割を支える仕組みを理解する。 

 

Image from Gyazo

 

 

 

トランザクション

データベースをある一貫した状態から別の一貫した状態へ変更する1つの処理の束のこと。

  • 同時アクセスした場合に上手く処理する。
  • データ処理に失敗したら、元に戻してくれる。
  • システムがクラッシュしてもデータを保護する。

 

 

トランザクション:ACID

ACIDは信頼性のあるトランザクションシステムの持つべき性質のこと。

 

  • Atomicity(原子性)
    トランザクションが「すべて実行される」か「一つも実行されない」のどちらかの状態になるという性質。
     
    トランザクションという単位でデータの処理を行う。
    データを削除するトランザクション、データを更新するトランザクションといった処理単位で操作が行われ、もし途中で失敗してしまった場合ちゃんと実行が終わっていれば終わらせる、終わっていなかったら元に戻して実行されない状態をキープすることが大事。

  • Consistency(整合性)
    トランザクションの前後でデータの整合性が保たれ、矛盾の無い状態が継続される性質。

    例えばデータを参照した際に、トランザクションの前後で参照されてもデータが変更されないのでデータが変わらない。
    そういったデータの整合性を一貫させるのがConsistencyという性質。

  • Isolation(独立性)
    トランザクション実行中の処理過程が外部から隠蔽され、他の処理などに影響を与えない性質。

  • Durability(耐久性)
    トランザクションが完了したら、その結果は記録され、クラッシュしても失われることがないという性質。

 

 

 

トランザクション:耐久性

データを更新する際にCOMMITとする更新が反映されるが、COMMITされないとデータがロールバックして保護する。

 

例えば高橋さんの指名データを佐藤さんに変更する際に、変更した後にコミットする。

コミットされればその後にデータベースがクラッシュしてもちゃんと佐藤さんに変更された状態で保護される。

コミットされる前にデータがクラッシュしてしまった場合は高橋さんの状態にロールバックする。

このようにしっかりコミット処理を行うことでデータがクラッシュした際の対応を決めていく。  

 

 

トランザクション:整合性

同時に複数人がアクセスした場合などにデータ整合性を維持する必要がある。

 

例えばデータを更新する前と更新した後、どちらにアクセスしたかでデータの内容が変わってしまう。 

 

 

整合性モデル

同時に複数人がアクセスした場合などの、データのデータ整合性を維持するための方式(結果整合性や強い整合性など)

 

結果整合性だと、変更中のデータが完了してない間でも古いデータを確認することができる。

 

強い整合性だと、変更中のデータが完了してない間は変更完了までデータを参照できない。

 

整合性モデルを設定することでデータの不整合を発生するか、許容するかを設定することができる。

 

 

データモデル

データモデルはデータベースのデータの持ち方などの構造や処理を定めるデータの論理的な表現方法。

 

データモデルが根底にあって、その上にそれに基づいてデータモデルに応じたトランザクション機能などがデータベースソフトウェアから提供される。

どういったデータモデルを選ぶかがデータベースの使い方に大きく影響を与える。

 

 

データモデル

データベースには様々なデータモデルが存在し、利用目的に応じて使い分ける。

  • リレーショナルモデル
  • グラフモデル
  • キーバリューストア
  • オブジェクト
  • ドキュメント
  • ワイドカラム
  • 階層型