14日目
2019-04-25

AtCoder 1.5h サーバーサイド 2h

データベース、あまりにも便利すぎて驚いちゃうな


4-9「WebSocket」

  • WebSocket は Web サーバーとブラウザの間で利用できる双方向通信の規格
  • AJAX はプル通信、 WebSocket はプッシュ通信の方式を実現できる
  • 通信方式はサービスの要件に合わせて、適切に選ぶ必要がある

4-10「RDBMSSQL

  • RDB(リレーショナルデータベース)
  • SQLRDBを操作するための言語
    • PostgreSQLを用いてデータベースを操作した

4-11「データモデリング

  • エンティティやらをちゃんと設定してデータベースを正規化する
    • ほんと上手いこと仕組まれてて感心してしまうな...
  • ER 図 (Entity-relationship Diagram)

4-12「テーブルの結合」

  • 内部結合:結合に使う列の値がどちらのテーブルにもそろって存在したときのみ結果に行を含める
  • 左外部結合:結合した左側のテーブルの値があれば、結果に行を含める
  • 右外部結合:結合した右側のテーブルの値があれば、結果に行を含める
  • 完全外部結合:どちらかのテーブルの値があれば、結果に行を含める
    • 便利すぎ

4-13「インデックス」

  • RDB では列にインデックスを作成することで、探索のパフォーマンスが劇的に改善する
    • データベースのサイズが増えるのが欠点
  • インデックスは B 木というデータ構造を利用して実現されている
    • 二分探索みたいな感じ

4-14「集計とソート」

  • データベース上で集計とソートが可能
  • 集計とかの処理はJScriptとかでも出来るけど、RDBにあらかじめ処理してもらうことで通信量を減らしたり計算が高速にできたりする。
  • データの処理をどのようにRDBプログラミング言語に分配するのかが大事
twitter: @hukurouo < thank you !