graphics.hatenablog.com

技術系テクニカルアーティストのあれこれ

テクニカルアーティストのためのデータベース入門 (9) パフォーマンス最適化

最初のリリースまではデバッグ大変だからちっちゃいデータセットで試しながら進めてて、とあるタイミングで本番規模のデータを流し込んだら最初のロードに数秒とかかかっちゃったりして。そういうときに、可能な限り悩まずに状況を改善したい。

  • 共通
    • サーバを札束でひっぱたく
  • select
    • クエリの並列化
    • クエリの数を減らす
    • キャッシュに載せる
    • joinしない
    • インデックスを貼る
  • それ以外

graphics.hatenablog.com

続きを読む

テクニカルアーティストのためのデータベース入門 (8) O/Rマッパー

実際のところ宗教論争に近いんだけど、個人的には、TAがインハウスで扱うようなDBならSQLだけで十分だというスタンス*1*2ではある。とはいえイマドキそんなことも言ってられないし、書くだけ書いてみる。

とりあえず、「O/R マッパー」と毎回書くのはだるいので、「ORM」と略すことにする。

  • 必要とされる背景
  • 主な機能
  • メリットとデメリット

graphics.hatenablog.com

*1:というか、クエリアダプタの挙動をきちんと把握して内部的にどんなSQLが生成されるかを理解した上で O/R マッパーを使うのはとても素晴らしいことだと思うけど、大抵の場合、TAがそこまでやるのは無駄だろうという判断。

*2:あと、大規模で複雑なDBでは O/R マッパーがあると実際すごく便利なんだけど、そんなDBをTAが主導的に扱うことはほぼないだろうという判断。

続きを読む

テクニカルアーティストのためのデータベース入門 (7) SQLのはじめの一歩

テーブル内のデータの操作方法、とりあえずこれだけ覚えておけば、最初のうちはあまり困らないと思う。

https://zeroturnaround.com/wp-content/uploads/2016/06/RebelLabs-SQL-cheat-sheet.png

最初に書いたとおりMySQLを前提に進めてみる。とりあえず試すなら MySQL Installer でセットアップするのが一番楽。Server Only でインストールして、クライアントは HeidiSQL を。

  • テーブルの作成と削除
  • データの追加
    • 1つずつ追加する(インサート)
    • まとめて追加する(バルクインサート)
  • データの検索
    • 1つのテーブルから検索
    • 複数のテーブルから検索
  • データの更新
  • データの削除
    • 条件を指定して削除する
    • 全部まとめて削除する

graphics.hatenablog.com

続きを読む

テクニカルアーティストのためのデータベース入門 (6) テーブル制約

前回の続き。DBの中身をきれいに保つための設定集。
f:id:hal1932:20161010165611p:plain

  • データを記録するときのルール設定
    • not null
    • unique
    • auto increment
    • primary key
  • テーブルをまたぐデータの整合性

graphics.hatenablog.com

続きを読む

テクニカルアーティストのためのデータベース入門 (5) 正規化

前回紹介したエンティティとリレーションを、実際にどうやってDBに落とし込むか。何回かにわけてざっくり書いてみる。

完成品はこちら。オレオレフォーマットだから違和感あるかもだけど、まぁ雰囲気だけ伝われば。
f:id:hal1932:20161010165611p:plain

  • 正規化
    • 要素のピックアップ
    • 先読みと抽象化
    • 本質でない要素の分離
  • あえて正規化しないケース
    • 扱いやすさのために抽象化しない
    • 制作ルールを直感的に表現するために抽象化しない

graphics.hatenablog.com

続きを読む

テクニカルアーティストのためのデータベース入門 (3) データ保全

チーム内に土下座行脚をしたくなければ、まずはデータの守り方を覚える必要がある。

  • バックアップ
    • 丸ごとバックアップ
    • 操作のバックアップ
  • 削除フラグ

graphics.hatenablog.com

続きを読む