データベースを何故使うのか

Menu Menu


データベースの4つの仮定

  Atomic(原子性)
  Consistent(一貫性)
  Isolated(独立性)
  Durable(永続性)
 独立性   プログラムとデータは独立 
 整合性   ある時刻を取ると、すべてのデータがちゃんとしている
              矛盾していない、曖昧でない 
 完全性   そのデータベースに関するどんな質問にも必ず答えられる 

Atomic はデータの最小単位が壊れないこと。

Consistent とはデータの操作単位(Transaction)の列に対して要求仕様が成立することを保証できること。実際には、Transaction の直列可能性(Serializability)で保証する。

これらは本当か?

   (例を考えよう) 
    
      エディタとテキスト 
      学籍番号 
      誰がどう答えたかを調べる 
    
   (反例を考えよう!) 
    
      漢字コード 
      オーバーブッキング 
      難しい質問 
    

データベースでは、制限を付けることにより、この三つを満たしている。

 共通の言葉で表現されている
 データの関係が有限
 質問はデータの決まった関係に対してのみおこなわれる
 変更は矛盾しないようにおこなわれる


整合性とスケーラビリティ

Database には、以下の仮説がある。

    整合性(ACID)とスケーラビリティとは両立しないという仮説 (CAP 定理)

まだ、証明されていない。

データベースは、こういう制限があるのだという認識を持って使う

    


データベースにするべきかしないべきか?

単にファイルとして取っておくだけではデータベースにはならない。では、どういう時にとっておくべきか?

 同じようなデータが多量にある 
 多数の人が入力する 
 多数の人がアクセスする 
 長い間、保管する必要がある 
 いろいろな解析をしたい 
    


データベースの利点

 大量のデータに対しても高速に検索、追加、削除、変更が可能 
 データを変更する際に矛盾がないようにする機能がある 
 スムースな拡張が可能
 信頼性が高い
 さまざまな質問に対処できる


データベースの種類

    Flat text
    構造化された text ( XML, YAML, Property List )
    Fileに対する Standalone Database (SQLite)
    Server 型 Database  (mySQL, PostgreSQL, Oracle)
    分散(Distributed) Database (Cassandra)

Database へのアクセスは SQL が主流。(IBMによって作られた Query Language)

それぞれ使い方がある。


Standalone Application

 SQLite

を使うのが良いと思われる。SQL の勉強にも良い。

Documenation は「必ず英語で読む」

ソースコードには、日本語のコメントを書き込まない。

普段の勉強に英語を組み込むこと。

    

SQLite には、Perl からアクセスする。


レコード (record)

データの固まり。操作の単位。

   おこなったアンケート 
   一枚の回答用紙 
   質問と答え 
   答の種類 

これらを、

   ファイル 
   レコード 
   フィールド名 
   フィールドの値 
   フィールドの型 

という。


フィールドの型

 選択肢
 文字
 数字
 真理値 
 番号 / ID


トランザクション (transaction)

データを処理する単位

中途半端に終らない。成功するか、失敗するかどっちか。

    transaction begin end
    commit
    abort


アプリケーション中に現れるデータ

網羅的に考える

使用状況を考える


例題を考える

ネットワークゲームを作成することを考えよう。

そこで必要とされるデータは何か?


MindMap

アプリケーションに必要なことを自由に列挙していく

 FreeMind  http://freemind.sourceforge.net/wiki/index.php/Main_Page


問題1

ネットワークゲームのデータを考える

Use case diagram

アプリケーションにどんなトランザクションが必要かを考える

astah*  http://astah.change-vision.com/ja/product/astah-community.html


問題2

ネットワークゲームの login

課題の提出の方法

〆切は二週間。課題は、Lecture 1 の問題1なら、

  Subject: Practice on Database Lecture 1.1

というサブジェクトで「学校の正規のアカウント」から電子メールで提出すること。携帯メールからとかは受け付けません。

図などの提出物は学科の WWW/Wiki 上に置き、そのURLを電子メールにいれる。添付しないこと。

プログラムコードは、外部からアクセス可能な学校の分散版管理システムに登録し、そこの

  repository URL

を送ること。分散版管理システムは学科で用意してもらうこと。

課題毎に reposity を別に用意すること。


Shinji KONO / Mon Jan 16 13:47:04 2012