実社会での情報システム

情報社会を支える技術

  • ネットワーク
  • データベース
  • 暗号

データベース

  • 大量のデータを扱う
  • 情報の整理・蓄積・活用
  • パソコンでは エクセル(Excel) アクセス(Access)
  • サーバでは PostgreSQL, MySQL
  • 銀行など業務では Oracle

リレーショナルデータベース

  • 相互に関係のある(relational)表(table)を用いる
  • 応用例
  • Relatio を使った
    • ネタ が古い気もしますが

検索の高速化

  • あるいは、コンピュータは CPU が速くなっただけではありません

問題設定

  • 私の PC (Mac なのでみなさんのと違いますが) に英単語の辞書があります。
  • 辞書には 234936 語が登録されています。
  • 適当に英文を持って来て、その中に書かれた単語がその辞書の中にあるかどうかを調べます。
  • 英文は 5130 語あります。
  • どのくらい時間がかかるでしょうか

何も工夫しない場合

  • 線形探索法
    • 単純に端から合うかどうかを調べていきます
  • 結果:
       $ python linsearch.py 
       Searching 5130 words by linear search
       830 words not found ... 23.3004419804 seconds
    
  • 23.3秒かかりました。(830語が辞書にありませんでした。)

工夫した場合

  • ハッシュ法を試してみます
    • 「索引」を作っておきます ... 詳しくは 情報科学コースの専門科目
  • 結果:
       $ python hashsearch.py 
       Making hash index ... 0.140583992004 seconds
       Searching 5130 words by hash index
       830 words not found ... 0.00243782997131 seconds
    
  • 索引の作成に 0.14秒かかりましたが、探索は 0.0024 秒で終わりました。

データベースは

  • 大量のデータを関連づけ
  • 高速に検索できるようにする
  • インターネットを便利にする技術

データベースが活躍

  • ショッピング/オークション(品揃えが豊富=大量データ)
  • ポータル/SNS (Social Networking Service)
    • SNS では mixi が勢力大
  • ブログ
    • 普通は書き込みだけ
    • 多少はデザインもできる(背景色、壁紙、、、)