SlideShare a Scribd company logo
1 of 126
Download to read offline
もう怖くない!?

WEBアプリケーションのDB運用
What is it?




 突然ですが
What is it?




SQLとかオワコンwww
What is it?




DBはボトルネックになるから嫌い
What is it?




データの集計が辛い
What is it?




そう思ってたりしませんか?
What is it?




今のシステムにRDBは必要不可欠
What is it?




だけどRDBの勉強してますか?
What is it?




じゃあ何時やるか
What is it?




  今でしょ
What is it?




  今でしょ
What is it?




ということで今日のテーマはコレ
What is it?
What is it?




SQLアンチパターン
- 開発者を待ち受ける25の落とし穴
What is it?
あじぇんだ


1 自己紹介

2 SQLアンチパターンってなに?

3 リーダブルパスワード

4 インプリシットカラム(暗黙の列)

5 ジェイウォーク(信号無視)

6 まとめ
あじぇんだ


1 自己紹介

2 SQLアンチパターンってなに?

3 リーダブルパスワード

4 インプリシットカラム(暗黙の列)

5 ジェイウォーク(信号無視)

6 まとめ
自己紹介



名前:曽根 壮大(そね たけとも)
年齢:28歳(二十代だよ!)
職業:WEB系プログラマー

技術的にはWEB系でLLとかRDBをゴリゴリしてます。
日本PostgreSQLユーザ会


Twitterは


           @soudai1025


と言うアカウントで活動してます。


※技術的なツイートは皆無です。
自己紹介



最近、PostgreSQLを使ってWEBアプリ作りました。

参考ブログ:
WEBアプリで勝敗チェッカー β版 を作りました!!
自己紹介



オープンセミナー2014@HIROSHIMA


日時 :2014/1月の後半
定員 :100 人(ぐらい
会場 :広島市内
申込 :http://osh-web.github.com/
あじぇんだ


1 自己紹介

2 SQLアンチパターンってなに?

3 リーダブルパスワード

4 インプリシットカラム(暗黙の列)

5 ジェイウォーク(信号無視)

6 まとめ
SQLアンチパターンってなに?


諸君は自らの経験からいくらか学ぶことができるという、
全く愚かな考えであろうが、
余はむしろ他人の失敗を学ぶことで、
自分の失敗を回避することを好む。




─オットー・フォン・ビスマルク
SQLアンチパターンってなに?




失敗例+その解決方法=SQLアンチパターン
SQLアンチパターンってなに?




つまり、先人の失敗から学ぶ手法(本)
SQLアンチパターンってなに?




今日はその中から一部をピックアップします
あじぇんだ


1 自己紹介

2 SQLアンチパターンってなに?

3 リーダブルパスワード

4 インプリシットカラム(暗黙の列)

5 ジェイウォーク(信号無視)

6 まとめ
リーダブルパスワード




敵はシステムを知っている


クロード・シャノン(数学者)
リーダブルパスワード




敵はシステムを知っている


クロード・シャノン(数学者)
リーダブルパスワード




つまりパスワードの扱い
リーダブルパスワード




例えばパスワードの平文保存
リーダブルパスワード




これは重大なセキュリティの欠陥
リーダブルパスワード




じゃあどうすればいいのか
リーダブルパスワード




   暗号化
リーダブルパスワード




でも暗号化だけじゃない
リーダブルパスワード




    参照
リーダブルパスワード


                  つまりはこう

SELECT
    account
FROM
    kakenavi
WHERE
    password= SHA2(‘deathMaster’, 256)
リーダブルパスワード




もしSQL文を見られたら?
リーダブルパスワード




MySQL スロークエリログ
リーダブルパスワード




PostgreSQL log_statement
リーダブルパスワード




  PHPのエラーログ
リーダブルパスワード




保存だけでなく参照の仕方も大切
あじぇんだ


1 自己紹介

2 SQLアンチパターンってなに?

3 リーダブルパスワード

4 インプリシットカラム(暗黙の列)

5 ジェイウォーク(信号無視)

6 まとめ
インプリシットカラム(暗黙の列)




   自分が何を考えているかは、
 実際に言葉にしてみるまでわからない


 E・M・フォースター(イギリスの小説家)
インプリシットカラム(暗黙の列)




   自分が何を考えているかは、
 実際に言葉にしてみるまでわからない


 E・M・フォースター(イギリスの小説家)
インプリシットカラム(暗黙の列)


                   つまりはこう

SELECT
    *
FROM
    kakenavi_blog
WHERE
    status = ‘public’
インプリシットカラム(暗黙の列)




まさかコードの中で*使う人いないよねぇ~
インプリシットカラム(暗黙の列)




     実は結構いる
インプリシットカラム(暗黙の列)


    *を使う街角の人の声

  1 columnを書くのがめんどくさい
  2 ORM使ったら*になった
  3 SQLは短くシンプルにしたい
インプリシットカラム(暗黙の列)




     なぜダメなのか
インプリシットカラム(暗黙の列)


    *がダメな3つの理由

   1 予期せぬQueryを招く
   2 パフォーマンスの低下
   3 DB修正の際のバグの温床
インプリシットカラム(暗黙の列)


    *がダメな3つの理由

   1 予期せぬQueryを招く
   2 パフォーマンスの低下
   3 DB修正の際のバグの温床
インプリシットカラム(暗黙の列)


               予期せぬQueryを招く

SELECT
     *
FROM
     kakenavi_blog
INNER JOIN
     twitter
ON
      kakenavi_blog.account = twitter.account
インプリシットカラム(暗黙の列)




もし両方のテーブルに同名のカラムあったら?
インプリシットカラム(暗黙の列)




  プログラム側で間違えるかも…
インプリシットカラム(暗黙の列)


            予期せぬQueryを防ぐには

SELECT
     kakenavi_blog.id as k_id
     twitter.id as twitter.t_id
FROM
     kakenavi_blog
INNER JOIN
     twitter
ON
      kakenavi_blog.account = twitter.account
インプリシットカラム(暗黙の列)




    結果を明確にする
インプリシットカラム(暗黙の列)




    想像してみてください
インプリシットカラム(暗黙の列)




  これがGROUP BYだったら・・・
インプリシットカラム(暗黙の列)




   これがサブクエリだったら・・・
インプリシットカラム(暗黙の列)




   結果を明確=列を指定する
インプリシットカラム(暗黙の列)


    *がダメな3つの理由

   1 予期せぬQueryを招く
   2 パフォーマンスの低下
   3 DB修正の際のバグの温床
インプリシットカラム(暗黙の列)
インプリシットカラム(暗黙の列)




     データの動き
インプリシットカラム(暗黙の列)

DBサーバ           WEBサーバ
Kakenavi_blog
      Id
    (int)

   account
  (var char)



     Blog
    (txet)
インプリシットカラム(暗黙の列)

DBサーバ           Network   WEBサーバ
Kakenavi_blog
      Id
    (int)

   account
  (var char)              Object

     Blog
    (txet)
インプリシットカラム(暗黙の列)

DBサーバ           Network   WEBサーバ
Kakenavi_blog
      Id
    (int)

   account
  (var char)              Object

     Blog
    (txet)
インプリシットカラム(暗黙の列)

DBサーバ           Network   WEBサーバ
Kakenavi_blog
      Id
    (int)

   account
  (var cher)              Object

     Blog
    (txet)
インプリシットカラム(暗黙の列)




 列を指定してQueryをシェイプアップ!
インプリシットカラム(暗黙の列)


    *がダメな3つの理由

   1 予期せぬQueryを招く
   2 パフォーマンスの低下
   3 DB修正の際のバグの温床
インプリシットカラム(暗黙の列)


                   PHP側での処理

$sql = ‘select * from hoge';
$row = $pdo->query($sql)->fetch ();
echo $row[‘4’];
インプリシットカラム(暗黙の列)




   もし2列目カラムを消したら?
インプリシットカラム(暗黙の列)


              INSERTの省略記法

--通常
INSERT INTO hoge (hoge_id, deleted, memo)
VALUES (NULL, 1, ’hoge’)
--省略
INSERT INTO hoge VALUES (NULL, 1, ’hoge’)
インプリシットカラム(暗黙の列)




  もし3列目カラムが無くなったら?
インプリシットカラム(暗黙の列)




  もし3列目カラムが変わったら?
インプリシットカラム(暗黙の列)




 これが SELECT INSET になったら?
インプリシットカラム(暗黙の列)




     誤りを防止する
インプリシットカラム(暗黙の列)




列は指定する
あじぇんだ


1 自己紹介

2 SQLアンチパターンってなに?

3 リーダブルパスワード

4 インプリシットカラム(暗黙の列)

5 ジェイウォーク(信号無視)

6 まとめ
ジェイウォーク(信号無視)




お客さん「1ゲーム基本一人だから」
ジェイウォーク(信号無視)


   出来たテーブル
ジェイウォーク(信号無視)




    一ヶ月後…
ジェイウォーク(信号無視)




お客様「ごめん、キャラやっぱ増やすわ」
ジェイウォーク(信号無視)




お客様「ごめん、キャラやっぱ増やすわ」
ジェイウォーク(信号無視)




    さぁどうする?
ジェイウォーク(信号無視)


    ピコーン!
ジェイウォーク(信号無視)




 カンマ区切り(CSV)でよくね?
ジェイウォーク(信号無視)




ピコーン!カンマ区切りでよくね?
ジェイウォーク(信号無視)


                      PHP側での処理

$characters = explode(‘,’, $character_column);

    foreach ( $characters as $key => $character ) {
         echo $character;
}
ジェイウォーク(信号無視)




    解決!!
ジェイウォーク(信号無視)




     3年後…
ジェイウォーク(信号無視)




お客様「キャラのデータ入らないんだけど」
ジェイウォーク(信号無視)




お客様「キャラのデータ入らないんだけど」
テストでは
ジェイウォーク(信号無視)




    なぜか?
ジェイウォーク(信号無視)




  カラムの大きさは有限
ジェイウォーク(信号無視)




  これがIDだった場合
ジェイウォーク(信号無視)




     最初
ジェイウォーク(信号無視)




  10,11,12,13,14,15
ジェイウォーク(信号無視)




     3年後
ジェイウォーク(信号無視)




1000010, 1000011, 1000012
ジェイウォーク(信号無視)




 限界が来ると拡張が難しい
ジェイウォーク(信号無視)




 CSV以外にもJSONやXMLでも…
ジェイウォーク(信号無視)




 ではどうすれば良かったか
ジェイウォーク(信号無視)




   リレーションする
ジェイウォーク(信号無視)




これでレコードの限界まで大丈夫
ジェイウォーク(信号無視)




   他にもこんな問題が
ジェイウォーク(信号無視)


      問題点

1 検索の低パフォーマンス
2 更新時の整合性が担保できない
3 集約クエリが作成出来ない
ジェイウォーク(信号無視)




   リレーションすれば
ジェイウォーク(信号無視)


      メリット

1 検索時にINDEXが効く
2 整合性が担保できる
3 集約クエリによる集計の簡略化
ジェイウォーク(信号無視)




    正規化大事
ジェイウォーク(信号無視)




    他の解決策
ジェイウォーク(信号無視)




  PostgreSQLの柔軟な型
ジェイウォーク(信号無視)


      柔軟な型

  1 Array型で持てる
  2 XMLも持てる
  3 JOSNでも持てる←New
ジェイウォーク(信号無視)




Indexも集計も絞り込みも思いのまま!
ジェイウォーク(信号無視)




  だたしORMとかほぼ全滅
ジェイウォーク(信号無視)




PostgreSQL依存なので移行はしにくい
ジェイウォーク(信号無視)




  なので基本は正規化
ジェイウォーク(信号無視)




    仕様は変わる
ジェイウォーク(信号無視)




それを受け止める柔軟性が大切
あじぇんだ


1 自己紹介

2 SQLアンチパターンってなに?

3 リーダブルパスワード

4 インプリシットカラム(暗黙の列)

5 ジェイウォーク(信号無視)

6 まとめ
まとめ




アンチパターンとは先人の知恵である
まとめ




愚者は経験に学び、賢者は歴史に学ぶ
まとめ


   アンチパターンを知るメリット

1 この問題!進研ゼミでやったところだ!
まとめ


   アンチパターンを知るメリット

1 この問題!進研ゼミでやったところだ!
2 悪いことを「悪い」と知れる
まとめ


   アンチパターンを知るメリット

1 この問題!進研ゼミでやったところだ!
2 悪いことを「悪い」と知れる
3 失敗談は鉄板ネタになる←いまここ
まとめ




みなさんも仲間と失敗談を共有しましょう!

More Related Content

What's hot

Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるShinya Mochida
 
【java8 勉強会】 怖くない!ラムダ式, Stream API
【java8 勉強会】 怖くない!ラムダ式, Stream API【java8 勉強会】 怖くない!ラムダ式, Stream API
【java8 勉強会】 怖くない!ラムダ式, Stream APIdcomsolution
 
ITエンジニア怪談 ~背筋も凍る、ゾッとする話Night~
ITエンジニア怪談 ~背筋も凍る、ゾッとする話Night~ITエンジニア怪談 ~背筋も凍る、ゾッとする話Night~
ITエンジニア怪談 ~背筋も凍る、ゾッとする話Night~Sadayoshi Ikushima
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみDoma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみToshihiro Nakamura
 

What's hot (6)

Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみる
 
Java8勉強会
Java8勉強会Java8勉強会
Java8勉強会
 
【java8 勉強会】 怖くない!ラムダ式, Stream API
【java8 勉強会】 怖くない!ラムダ式, Stream API【java8 勉強会】 怖くない!ラムダ式, Stream API
【java8 勉強会】 怖くない!ラムダ式, Stream API
 
ITエンジニア怪談 ~背筋も凍る、ゾッとする話Night~
ITエンジニア怪談 ~背筋も凍る、ゾッとする話Night~ITエンジニア怪談 ~背筋も凍る、ゾッとする話Night~
ITエンジニア怪談 ~背筋も凍る、ゾッとする話Night~
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみDoma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみ
 

Similar to Wtm

なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?ichirin2501
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Ra Zon
 
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデルあなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデルMikiya Okuno
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Ra Zon
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろTakuya Tsuchida
 
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)Kenta Oku
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方Soudai Sone
 
MlnagoyaRx02
MlnagoyaRx02MlnagoyaRx02
MlnagoyaRx02mega80b
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかyancya
 
Stan勉強会資料(前編)
Stan勉強会資料(前編) Stan勉強会資料(前編)
Stan勉強会資料(前編) daiki hojo
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -chibochibo
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generatorOda Shinsuke
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseToshi Harada
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
第9回勉強会 Webセキュリティー
第9回勉強会 Webセキュリティー第9回勉強会 Webセキュリティー
第9回勉強会 Webセキュリティーhakoika-itwg
 
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返るHiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返るtsudaa
 
本当にあった怖い話し Db編
本当にあった怖い話し Db編本当にあった怖い話し Db編
本当にあった怖い話し Db編Oda Shinsuke
 

Similar to Wtm (20)

Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
 
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデルあなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデル
 
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
 
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
データベース03 - SQL(CREATE, INSERT, DELETE, UPDATEなど)
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方
 
MlnagoyaRx02
MlnagoyaRx02MlnagoyaRx02
MlnagoyaRx02
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
 
Stan勉強会資料(前編)
Stan勉強会資料(前編) Stan勉強会資料(前編)
Stan勉強会資料(前編)
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generator
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
第9回勉強会 Webセキュリティー
第9回勉強会 Webセキュリティー第9回勉強会 Webセキュリティー
第9回勉強会 Webセキュリティー
 
Phpcon2015
Phpcon2015Phpcon2015
Phpcon2015
 
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返るHiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
 
本当にあった怖い話し Db編
本当にあった怖い話し Db編本当にあった怖い話し Db編
本当にあった怖い話し Db編
 

More from Soudai Sone

DBの闇を書くにはこの余白は狭すぎる
DBの闇を書くにはこの余白は狭すぎるDBの闇を書くにはこの余白は狭すぎる
DBの闇を書くにはこの余白は狭すぎるSoudai Sone
 
レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦Soudai Sone
 
PostgreSQLとpython
PostgreSQLとpythonPostgreSQLとpython
PostgreSQLとpythonSoudai Sone
 
地方エンジニアがPostgreSQLを通じて成長した話
地方エンジニアがPostgreSQLを通じて成長した話地方エンジニアがPostgreSQLを通じて成長した話
地方エンジニアがPostgreSQLを通じて成長した話Soudai Sone
 
知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能Soudai Sone
 
DDDハンズオン
DDDハンズオンDDDハンズオン
DDDハンズオンSoudai Sone
 
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法実務で役立つデータベースの活用法
実務で役立つデータベースの活用法Soudai Sone
 
今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQLSoudai Sone
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosqlSoudai Sone
 
中国地方Db勉強会
中国地方Db勉強会中国地方Db勉強会
中国地方Db勉強会Soudai Sone
 
Ansibleで始めるpostgre sqlの冗長化
Ansibleで始めるpostgre sqlの冗長化Ansibleで始めるpostgre sqlの冗長化
Ansibleで始めるpostgre sqlの冗長化Soudai Sone
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Soudai Sone
 
Web で変わったクラウドと postgre sql の今と昔
Web で変わったクラウドと postgre sql の今と昔Web で変わったクラウドと postgre sql の今と昔
Web で変わったクラウドと postgre sql の今と昔Soudai Sone
 
すぐ始めれるクラウド
すぐ始めれるクラウドすぐ始めれるクラウド
すぐ始めれるクラウドSoudai Sone
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化についてSoudai Sone
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Soudai Sone
 
聞いたら参加したくなるJjug cccの報告
聞いたら参加したくなるJjug cccの報告聞いたら参加したくなるJjug cccの報告
聞いたら参加したくなるJjug cccの報告Soudai Sone
 
地方における勉強会事情
地方における勉強会事情地方における勉強会事情
地方における勉強会事情Soudai Sone
 

More from Soudai Sone (20)

DBの闇を書くにはこの余白は狭すぎる
DBの闇を書くにはこの余白は狭すぎるDBの闇を書くにはこの余白は狭すぎる
DBの闇を書くにはこの余白は狭すぎる
 
レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦
 
PostgreSQLとpython
PostgreSQLとpythonPostgreSQLとpython
PostgreSQLとpython
 
地方エンジニアがPostgreSQLを通じて成長した話
地方エンジニアがPostgreSQLを通じて成長した話地方エンジニアがPostgreSQLを通じて成長した話
地方エンジニアがPostgreSQLを通じて成長した話
 
知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能
 
DDDハンズオン
DDDハンズオンDDDハンズオン
DDDハンズオン
 
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
 
今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosql
 
中国地方Db勉強会
中国地方Db勉強会中国地方Db勉強会
中国地方Db勉強会
 
Ansibleで始めるpostgre sqlの冗長化
Ansibleで始めるpostgre sqlの冗長化Ansibleで始めるpostgre sqlの冗長化
Ansibleで始めるpostgre sqlの冗長化
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由
 
Web で変わったクラウドと postgre sql の今と昔
Web で変わったクラウドと postgre sql の今と昔Web で変わったクラウドと postgre sql の今と昔
Web で変わったクラウドと postgre sql の今と昔
 
すぐ始めれるクラウド
すぐ始めれるクラウドすぐ始めれるクラウド
すぐ始めれるクラウド
 
Osc2014
Osc2014Osc2014
Osc2014
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化について
 
Osh2014
Osh2014Osh2014
Osh2014
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)
 
聞いたら参加したくなるJjug cccの報告
聞いたら参加したくなるJjug cccの報告聞いたら参加したくなるJjug cccの報告
聞いたら参加したくなるJjug cccの報告
 
地方における勉強会事情
地方における勉強会事情地方における勉強会事情
地方における勉強会事情
 

Wtm