第5回 関西DB勉強会に参加してきましたって話
第5回 関西DB勉強会に参加してきましたって話
5/20(土)はこれ行ってきました。
DB関係で初めて知ったことだとかをメモしておきます。
PostgreSQL超入門 インストール時のロケールに、はまりました(失敗例)
WindowsでもMacでもいろんなディストリビュージョンのLinuxでも、GUIインストーラーが用意してある。 同じ操作をしたとしても、最終的に出来上がる環境が異なる場合があり、ハマることがあるよって話。
CUI環境じゃない限りはPostgreSQLはGUIでインストールしてます。 今ん所ハマったことはないんだけど、PostgreSQLに限らず、似たような症状を生むインストーラーはありそう。。。
今後、インストール周りで怪しそうな挙動見せたときは意識できるようになった。
カラムナーデータベースと時系列データベース、今流行っている(?)データベースの存在を知っておこう。
時系列データベースっての、聞いたことはあるけど全然調べたことなかった。とにかく時間の扱いが強いらしい。例えば
- IoTから送られてきたデータを格納するとき、センサーの不調か送信されてきたデータの「DateTime」がNullやんけ!ってとき、「このデータ順とかから察するに、Timeはこの辺の値になるよね」ってのを自動で補完してくれる機能がある(らしい)。今まではアプリケーション側で制御しなきゃならなかったことがDBで完結するようになる。
- とにかく時間による絞込が早い。DateTimeにIndex貼って同じことしようとした場合、ケースによっては1000倍とか早くなることがある(らしい)
すごそう(小並)
MySQLを触ってみよう(仮)
インストール簡単だよ~ってデモ。
MySQLには「15分ルール」なるものがあるらしい。インストール用のバイナリをダウンロードしてきた状態から、インストール作業して実際にDBを使えるようにするまで15分かからないくらいシンプルにする!ってルール。結構なプロダクトが15分あれば動かせるようになる気はしますが「シンプルなインストール作業」を定量的に表現する方法として時間を利用するのは良いかもしれませんね。
質疑応答で「デフォルトの設定ファイル(my.conf)の中身が空になったんだけど、どうして?自分で1から書いていくのは辛い」ってのが出ました。最近はMySQLがインストールされるサーバーのスペックも様々です。RAMの容量も色々、HDDかSSDかでストレージへのアクセス速度も色々、ストレージの容量も色々。「とりあえずこの設定にしとけや」って値を決めることが難しい状況になってきたとのことです。タシカニタシカニ。
あと、デモでRLogin使ってたのが印象的でした。RLogin愛用マン。
寿司ビール問題ってのも初めて聞きました。一つ賢くなった()
今さら聞けないSAP HANAのハナシ
SAPもHANAも初めて聞きました(ボソッ)。まだまだこっちの界隈は疎くての。
印象的だったのが「最近はCPUの計算速度の向上に対して、DRAMのアクセス速度の向上が追いついていない」って話。
「HDDもSSDもアクセス速度遅いから、インメモリにいろいろ置いて高速化!」ってのが増えてきてたけど、最近はDRAMの速度がさっぱり上がらない。でも高速化したい!ってわけでCPUへの最適化にも力を入れてるらしい。CPUキャッシュを有効に使うだとか、SIMDを有効に使うだとか。
他のDBがどれだけその辺に力を入れてるのかは知らんのだが、普段の自分にはない視点の話が多く面白かった。
レシートから考えるテーブル設計
テーブルを編集したりすることは多いけど、1からテーブル設計する機会はなかなか無いので、その練習になれば!というセッション。
「レシート」という単語から「商品名、単価、消費税程度の話やろ~」と想像してましたが、実に浅かった。
店名、利用ポイント、そのポイントとユーザーの結びつけ、店内でお客様に見せる表品名とレシートに表記する商品名は違うだろうからその結びつけ、ピザの生地やパスタのちょっとしたオプションなど、特定の商品を買った場合にのみ選択可能なオプション(≒単品で注文できない商品)の存在、店内で食べる場合とテイクアウトする場合の扱いの違い、などなど。
結構考えないといけないことが多い!お店のレシートによって見えてる情報も違うし、裏で動いてるシステムも違うだろうし。いろんなレシートからいろんな想像が出来る。
まぁ、レシートはお店ですぐ捨てちゃうんですけどね(白目)
Firebird/MySQLと他DBとの違いを押さえよう
SQL Server と他 DB との違いを押さえよう!
20分 MySQLとOracle DBのロックの違い(仮)
「違い」ってのがあちこちに転がってるもんだと知りました。
機能の名称、アップデート頻度、プロセス・スレッドの動き方、デフォルトのトランザクション分離レベル、バックアップ方法、クエリの中身次第で変わるロック単位、使用するファイル単位の違い、などなど。
そもそものDBへの理解が浅いので、まずは一つのDBについての理解を深めてから差別化ポイントを抑えていきたいところ。
SQLインジェクション総集編
セッションのスライドでは「総'習'編」と表現されてました。どんなところでインジェクション出来るのか抑えてみましょうって話。
- Validationはしっかりしよう!
- 何も信じない!
- 入力時にValidationしたとしても、外部に出力するときにもValidationしようね!Validation漏れあるんじゃない!?
- ホワイトリストでいこう!基本的に全部アウトだよ!
SQLiteは文字型で宣言して'いない'カラムに対しても文字列突っ込めるらしいです。うそ~ん。あとで検証する。
セッション名見たときは今更かぁ~?と思ってしまいましたが、そういや俺って(DBに限らず)ガッツリセキュリティを勉強したことなかったな。。。「まぁそうだよね」って内容がほとんどでしたが、あちこちで知識抜けがありそう。適当な書籍見繕わねば。
Percona Liveに行ってきた:TokuDB
まずPercona Serverってのを初めて知りました。MySQL互換のDBだそうで。
で、Percona LiveってのはオープンDBのカンファレンスだそうで。 で、そこでTokuDBのセッションを聞いてきましたよってセッション。TokuDBってのも初めて知りました。 TokuDBは「Tractal Tree Index」とやらで動いてるらしい。気が向いたら調べる。
まとめ
- DB初心者だったけどかなり有益だったYO!
- 知らなかったこといっぱい知れたYO!
- 12:00~19:00は長かったYO!
- dots.経由で知ったYO!
- ゲーム系の勉強会と比べて平均年齢高い印象だったYO!(27歳)