ラベル PostgreSQL の投稿を表示しています。 すべての投稿を表示
ラベル PostgreSQL の投稿を表示しています。 すべての投稿を表示

2016年9月18日日曜日

PostgreSQLの新しい教科書 ~ Software Design 10月号の特集記事を書きました ~


表題の通り、特集を執筆しました。
第2特集なので表紙で言うと左下のところに書いてあるのが僕の特集記事です。
昨日発売ですのでお近くの店頭で見かけたら是非手にとって貰えたらと思います。

内容ですがPostgreSQLの入門編と謳っていますが普段、なんとなくRDB使っている人には良い記事になったと思います。
あとOracleSE1からの移行を考えてる人へのヒントも書いてます。
ここはかなり血反吐を吐きながら頑張って情報を集めて信頼有る筋のレビューワーを通して居るのでかなり信頼度の高い部分だと思います。
ということで好評、酷評、どちらもお待ちしてますので是非読んでみてください。
2月号とは違い、PostgreSQL一色の記事ですが僕がJPUGで学んで来た道を振り返る良いきっかけでした。
皆様もコレを機にPostgreSQLに興味を持っていただければと思います。


今回の執筆を振り返ると納期直前にオリンピックがあったり(自業自得)、仕事のトラブル対応と被ったりでなかなか大変でした。
でもその分、かなり細かいところまでPostgreSQLを振り返る良いきっかけになりましたし自分自身が一番勉強になったように思います。
その結果、書いてる時はホント苦しかったのですが今は達成感でいっぱいです。
Twitterでも投稿しましたが



本当に執筆活動はこんな感じで産みの苦しみの大変さを感じました。
でもその分、感動も大きかったのでまた機会があれば是非執筆したいですね。
最近は


  • RDBデザインパターン
  • RDBアンチパターン


の本があればいいのになぁって思ったりするのでそんなテーマでどうでしょ技評さん!?
ってこのボリューム感だと書籍になるし、僕死ぬパターンですね。
あんまり墓穴を掘るのも恐ろしいのでこの辺でこの話題は止めておきましょうw


兎にも角にも皆さん是非読んでみてください。
それで興味が分けば是非コミュニティに参加してみてください。
年内だと下記のようなイベントが予定されています。
最寄りのイベントがあれば是非参加してみてください!!



来週がOSC島根、中国地方DB勉強会とに連続ですし来月上旬はOSC長岡で新潟でもJPUGが参加します。
それでは皆様と現地で交流できる事を楽しみにしております!!


2016年5月29日日曜日

関西DB勉強会に行ってきた話

行ってきました大阪。
題名にもなってる関西DB勉強会が超絶面白かったので皆様にもおすそ分けブログです。

第3回 関西DB勉強会


内容は各DB


  • OracleDB
  • DB2
  • Firebird
  • MySQL
  • PostgreSQL


のエンジニアが集まってみんなとディスカッションをすると言う会です。
1時間くらいのパネルディスカッションと言うのは経験があるのですがそれをフリースタイルで半日!!
最初はどうなることやら…と思ってたのですがこれがホント面白かったです。
非常にレベルが高くてアーキテクチャの話、商用DBとOSSの使い分けなど非常に勉強になりました。
その中でもSQL Serverの上位モデルは列指向DBの利用をすると超高速と聞いて驚きました!!
その理由は下記のような感じでココらへんがOSから作ってる会社の強みだなと。



列指向DB自体の話もとても詳しく聞けたのでこれだけでも大阪来てよかったなと思いました。
ただOracleのOracle Exadataなんかもそうだけど「超すごいものはお金がかかる」ってこともわかりましたw
商用DBはお金を出せばパラレルクエリなんかもそうですけどホント高機能ですよね。
会場にも話題になりましたが例えばOracle Standard Editionなんかは十分PostgreSQLで代用できます。
しかしハイエンドのモデルについてはやはり機能面で大きな差があります。
だからこそ「未開の新機能より商用DBの既存機能」を如何に何から実装していくのか?がPostgreSQLの今後で楽しみなところだなぁと思います。

とホントに楽しかった関西DBなのですがPostgreSQLで質問があった事の解答例を下記にまとめておきます。

1. PostgreSQLアーキテクチャについて

永安さんがまとめてくれてるのでこのサイトを見ましょう。

・PostgreSQLアーキテクチャ入門
postgresqlinternals

あとこの本もオススメです。



2. backupについて

佐藤さんの資料が素晴らしいです。



あとPostgreSQLカンファレンスの時のYou Tubeもあります。





3. レプリケーションについて

ざっくりとした概要を把握するには手前味噌ですがこちらをどうぞ。



4. もっとPostgreSQL知りたい!

Slackっていうチャットサービスにチャンネルを用意してます。
そこに参加して質問を投げてくれれば色んな人が回答してくれます!
また最新情報の発信もしてるので安心!
しかも日本語!!←ここ重要ですよね。
ということで下記のリンクから早速どうぞ。

PostgreSQL部屋に入るSlackin


ということで楽しい一日でした。
機会があればまたこんな感じのディスカッションの場に参加したいですね!!



ということで関西DB勉強会のスタッフ、参加者の皆様ありがとうございました。

2016年4月18日月曜日

PHPerに知ってほしいRDBの事について話した - PHPカンファレンス北海道 2016

4/16に開催されたPHPカンファレンス北海道 2016に遊びに行ってきました。

#phpcondo2016 まとめ


初めてのPHPカンファレンスで緊張もしましたが色々と刺激的ですごく楽しい一日でした!!
その中で30分のセッションをやらせていただきました。
その時の資料がこちらです。



30分のセッションに対し140枚以上というなかなかハードな感じでした。
駆け足になったので聴衆の人には優しくなかっなぁとも思いつつ、伝えたい事は伝えれたかなと思ってます。
あと懇親会で聞かれた質問の回答も載せときます。

質問:PostgreSQLに対するMySQLのメリットってなんですか?

最新版同士で比べた時のメリットは僕は兎にも角にもSSDと相性が良い事だと思います。
金の弾丸で殴った時の費用対効果が凄くいい。
クラウドなら例えばRDSとかSSDだしスケールアップで有る一定のところまですぐ早くなります。
オンプレならFusion-ioを使えばそれこそ数十倍と言う速度が手に入る可能性もかなり高いです。
PostgreSQLはdisk-ioがヘビーなケースは苦手なのでMySQLはSSDの相性の良さと相まってそんなケースではMySQLかNOSQLになると思います。
この辺はLinkBenchでPostgreSQLをベンチマーク取った時の話が凄く面白いので興味がある人は見てみてください。


MyNA・JPUG 合同勉強会

※このまとめの「MySQLメインの人がPostgreSQLのベンチマークをしてみた話」です。
他の話も面白いので興味があればぜひ。


あと商用ライセンスを買った時に使えるOracleのサポートメンバーが誰か?っての想像できる事も大きなメリットです。
あの漢らしい人とかに1台30万くらいでSQLレベルからサポートしてもらえる。
これって普通に凄いことですよね。

質問:ORM使ってるとMySQLで何も困らないんですけど?

仰るとおりでございます。
ORMのオブジェクトをRDBで上手く表現(テーブル設計)してる時はORMめっちゃ便利です。
その場合ってMySQLと相性良いと思いますしMySQLで困らないです。
強いて言えばINDEXの設計がちょっとむずかしいかもなぁってくらい。
MySQLからPostgreSQLに行くメリットよりデメリットが勝る場合も多々あるので既存でMySQLで問題ないならそのままで良いです。
ただ新規案件の時とかはPostgreSQLを新たに採用するメリットが結構あるので検討していただければと思います。


といった感じで次は5/21にPHPカンファレンス福岡 2016です!
北海道のネタをベースにまたPHPerの皆様に知ってほしいことをお伝えしようと思います。
INDEXの話は評判が良かったのでそのままに他の部分をチューニングしようと思います。
ということでPHPカンファレンス北海道 2016、本当に最高でした!!




おまけ

2016年3月3日木曜日

第2回 MySQL・PostgreSQLユーザーグループ(MyNA・JPUG)合同DB勉強会 in 東京を開催してきた

先月の話ですが半年ぶりくらいに合同勉強会してきました。
資料のリンク等はポータルサイトにまとめたので下記のリンクから辿ってください。


第2回 MySQL・PostgreSQLユーザーグループ(MyNA・JPUG)合同DB勉強会 in 東京


■登壇資料など
中国地方DB勉強会のポータルサイトにまとめました。

中国地方DB勉強会


※今回は動画の配信があります

■メーリングリスト
次回の告知についてはMLやDoorKeeperを使います。
興味がある方はチェックしてみてください。

中国地方DB勉強会ML Google Group

DoorKeeper

■関連slack

MySQLCasualのSlackはこちら

PostgreSQLのSlackはこちら

■twitterのまとめ

・ぬこさんバージョン
http://togetter.com/li/940915


・yokuさんバージョン
http://togetter.com/li/940891


大変素晴らしいセッションばかりで本当に楽しい会でした。
今回も例に漏れず関東の洗礼を受け、ドタキャン率は高めでしたが来てない人は本当に勿体無い内容だったと思います。
次回があるかはわかりませんが次回の中国地方DB勉強会は4月に福山を予定してます。
皆様のご参加お待ちしております。

2015年12月14日月曜日

あなたとPostgreSQL 9.5、今すぐダウンロード

これはPostgreSQL Advent Calendar 2015の14日目の記事です。

昨日はtksyさんの「普段SQLServerを触っている人がPostgreSQLに入門するかも」でした。
tksyさんの体調が心配です。

さて今日は僕がPostgreSQLの本当のポテンシャルをお見せしましょう。
…と思ってたのですがここまでPostgreSQL9.5の話は0。
下手だなぁカイジ君、本当に読者がほしいのはコレ、PostgreSQL9.5の最新情報まとめ。
ということでPostgreSQL9.5の話をします。
PostgreSQLのポテンシャルについては明日の海外さんに期待してください。

1. PostgreSQL 9.5はいつ出るの?

出る出る詐欺進行中のPostgreSQL 9.5はいつ出るのでしょうか。
現在のPostgreSQL 9.5はBeta2です。
当初は年内に出る予定でしたが今の感じでは年明けと見せかけて海外勢のロングバケーション後で2月くらいかなと僕は思ってます。
実際のgit logを見るからには毎日激しく最後の追い込みがかかってるので年内リリースに微かな期待を持っても良いかもしれません。

PostgreSQL本体のgitのSumally

2. PostgreSQL 9.5で何が変わるの?

毎年PostgreSQLの新機能の話でスピーカー業で飯を食うのが僕の生業だったのですが今年はなんと一回も新機能ネタで話してません。
なので自分のスライドが無いので他人の褌で相撲を取ろうと思います!! 
ということでPostgreSQL界のダルシムこと@sawada_masahikoくんの資料が素晴らしいのでご紹介します。



あとPostgreSQL界のラーメンテロリストことぬこさんのブログも細かい情報がまとまっています。
リリース前のPostgreSQLを積極的に検証している情報が貴重です。

日々の記録 別館


3. で結局なにがオススメ機能なのよ

PostgreSQL新機能は色々あるんですけどもうコレだと思うんですよね。

INSERT ON CONFLICT構文


PostgreSQL9.5からMERGE文相当としてINSERT ON CONFLICT構文という機能が追加になりました。
これはMySQLのINSERT ON DUPLICATE KEY UPDATE構文相当の機能になります。
構文も非常に似ており

INSERT INTO table名 (column1, column2, column3) values (value1, value2, value3) 
     ON CONFLICT 制約名
     DO UPDATE SET ( カラム名 = 値 )

と書くことで同様の処理を実行できます。
MySQLと違うところは制約を書くことです。
これは冗長とも言えますが「primary keyなのかUNIQUE制約なのかを選べる」ということです。
今までORMでsave()というメソッドを実装するときに一旦SELECTでDBを検索したりUPDATEの例外を拾って処理していたようなところは全てこれで解決できます。
ついに念願のMERGE(UPSERT)文相当の機能が実装されたということになります。
この機能だけでも新バージョンを使う価値があると思います。
もうちょっと詳しく知りたい人は上記のぬこさんの検証結果を見てみてください。

PostgreSQL 9.5 UPSERTを試してみた

その他にもRow Level Securitなど目玉機能が盛り沢山のPostgreSQL 9.5。
是非、皆さんも試してみてください!!!

2015年12月1日火曜日

PostgreSQLカンファレンスに行ってきた

年に一度のお祭、PostgreSQLカンファレンスに行ってきました。
先週の金曜日なのでもう随分時間が立ってしまいましたがまとめです。
まず、セッションはなんと!全然!!!聞いてません!!!!!
でも一応朝一から行ってお手伝いはしました。



あとPostgreSQLカンファレンスは支部長は地元のお土産を持っていくというタスクがあります。
見事に7000円分相当を東京駅に忘れるというアクシデントがありました。
無事帰ってきたのですが本当に日本で良かったと思います!日本人最高!!
というわけで、全然セッション聞けてないのに忘れ物取りに行ったり仕事したりで忙しい時間でした。
本当は国府田さんとか海外さんとか須藤さんとか聞きたいセッションいっぱいあったのですが聞けなかったものは仕方が無いので下のまとめ読んどきます。

PostgreSQL Conference 2015 #pgcon15j のまとめ


ちなみに僕は最終時間のセッションだったのですがマサカリ尖そうな人は海外さんのセッションに丸っと行ったため誰もツイートしてませんw
資料が気になる方はこちらを見てください。

PostgreSQLアンチパターンの話をいっぱいしてきた。


PostgreSQLカンファレンス、何度行っても良いカンファレンスですし色んな人と話せて楽しかったです!!
次は3月にシンガポールで大きなPostgreSQLのカンファレンスがあるそうです。
CfPをちょうど募集中なので勉強会駆動海外旅行とか皆さんオススメです。

http://2016.pgday.asia/#callforpresentation

ということで今年も残り一ヶ月となりました。
ミカエルさんが言うとおりに今月中に本当にPostgreSQL 9.5が出るか楽しみにしたいですね!!

PostgreSQLアンチパターンの話をいっぱいしてきた。

見せてあげますよ、本当のPostgreSQLアンチパターンを。
とか言ってたわりに半分以上は削除フラグの話でした。
逆にそれが万人受けしたみたいでちょっとはてブいっぱい付いて承認欲求満たされました。
ということでスライドです。


190枚を超える超大作!!とか思ってたけど時間配分バッチシでした。
3回も実践すると3回目はアドリブ効かせたり出来て余裕がありました。
リハ大事w

で本題の伝えたいことですがあとがきツイートしてるのでまずそちらを。











特に最後のツイートが全てだと思ってます。
個人的な経験談を交えて紹介しましたがベースの話は全てこの3つの本を読めば理解できると思います。
あとはホントもっとみんなも経験の共有を積極的にしてほしいですね。
なのでslackやMLで是非「こんな事困ってるんだけど?」とか「これってどうなん?」ってのを投稿してください。
みなさんのお言葉お待ちしております。
あと、みんなに「そーだいさん、苦労されてるんですね」とか「グレて金髪になったんですか?」とか言われました。
大丈夫です、僕は今はMySQL使いです。

2015年11月30日月曜日

PyCon mini hiroshimaでPostgreSQLとPythonの話をしてきた

表題の通り、PyCon mini hiroshimaに参加してきました。
西本さんが中心となって行ったイベントですがPythonだけでなくエンジニアとして学びの多いイベントでした。
私も登壇したので下記の資料のリンクを貼っておきます。


connpassで講師の資料は公開されてるので興味の有る方は是非見てみてください。
connpass以外にも動画や当日のツイートのまとめなどもこちらからいけます。

PyCon mini hiroshima

どの講師もオススメですが私は特に石本さんの話や長谷場さんの話はPython関係なく学ぶところが多くオススメです。

ということで初めての中国地方でのPyConでした。
なぜか?中国地方ではRuby派が多く、Pythonのイベントが少ないと思います。
これを機に中国地方でもPythonのイベントが活発に行われ、交流が盛んになればいいなと思います。
また僕は最近Pythonを書く機会が減ってるので時間を見つけてPythonを書こうと思います。
興味がある人は岡山Python勉強会をチェックしてみてください。
ハングアウトでのRemote参加も可能ですのでお気軽に参加できます。
来年も続けてやるつもりなので是非コミュニティに登録をよろしくお願いします。

岡山Python勉強会

来年もPyCon mini hiroshimaはするらしいので今から楽しみです(*´ω`*)

2015年10月12日月曜日

2大OSSデータベースのMySQLとPostgreSQLの違いについて話してきた

第32回 PostgreSQL 勉強会(2015年10月10日)で登壇してきました。
内容は前に書いたエントリーの


を元に発表してきました。
と言っても今回は参加者がPostgresSQLに詳しい前提だったのでMySQLを中心に話をしました。
実際の資料は下記のとおりです。
当日はビデオ撮影があったのでそのうち動画が上がると思います。

第32回 PostgreSQL 勉強会まとめ ~ togetter ~




流石に2時間は疲れました。
内容としては眠くならないように面白おかしく伝えようと思ったのですがなかなか難しかったです。
前半はMySQLとPostgreSQLの方向性の違いをメインにしました。
後半はMySQLは僕が実際にハマった事などをメインにしました。
個人的にはRDBの選択は適材適所以上の答えは無いと思ってます。
MySQLの並列処理性能やレプリケーションはPostgresSQLには足りないものです。
PostgresSQLの方が素晴らしいではなく住み分けだよと伝えたつもりです。
資料だけだとMySQLのDis話がメインなのですれ違いが無いようにここで補足しておきます。
実際にもっと深く知りたい人はMyNA会やPostgreSQLカンファレンスに来てもらえたらと思います。
ということでPostgreSQL勉強会デビューの話しでした。

####追記####



マサカリ訂正をいくつかいただいたので追記します。
間違った知識広がったらいけませんし。

1. トランザクションレベルのSERIALIZABLEの挙動の誤記
SERIALIZABLEの読み取りロックはNOって書いてますけどYESが正しいです。
PostgreSQLもMySQLもSERIALIZABLEにするとロックを獲得すると他トランザクションのSELECTに対してもロック待ちさせます。
SERIALIZABLEについては触れなかったので当日は誰も気づいてなかったぽいですが間違いです。

2. MySQLのInnoDBはREPEATABLE READはファントムリードしない
PostgreSQLはするのでそういうもんだと思ってました。
デフォルトのREPEATABLE READが堅いということになります。
MySQLすごい!!

3. @yoku0825さんからの指摘事項がいっぱい



















つまり、みんな@yoku0825をフォローしよう。
(いつもアドバイスありがとうございます)

#スライドの中で話題にした本並べときます







2015年9月5日土曜日

Webで役立つPostgreSQLの話をしてきた ~ OSC新潟2015 ~




初めての新潟行って来ました!!
15分しかなかったのでざっくりPostgreSQLの話をしました。



久々にチャレンジでした。
無事に15分で収まった(収まってないけど)のは奇跡でしたねw
また各項目の詳細はそれぞれ別々のイベントで細かく話したので纏めを置いておきます。




■第九回 中国地方DB勉強会 in 米子を開いてきた
(SQLの話をした時の資料がまとまってます)

■MyNA・JPUG合同DB勉強会 in 東京を開催してきた(FDWの話もしてきた)
FDWの話をした時の資料がまとまってます。
またNTTデータの澤田くんがナイスなJSONの話をしてるので是非一読してください!!

日本酒!お米!!新潟!!
OSCは全国で開催されているので気軽に旅行する理由になって最高ですね!!
そういえばちょうど次は広島で行われるそうです。
興味がある人は是非。

■OSC2015 Hiroshimaタイムテーブル
日程:2015年9月19日(土) 10:00-17:00(展示は10:00-16:00)
会場:サテライトキャンパスひろしま [アクセスマップ]
   (広島県民文化センター 5F)広島市中区大手町1丁目5-3
   広電最寄駅→紙屋町西 ・ 最寄バス停→紙屋町

費用:無料

ということで翌日はDB勉強会 in 広島も行われます。
合わせて旅行駆動勉強会参加をご検討してみてください。

2015年8月25日火曜日

MySQL使いの人がPostgreSQLを始めるときの罠をまとめてみた

昨日書いたエントリがなかなかいい感じに拡散された。

MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと


で気付いた。
多分本当にMySQL5.7の罠が理由でPostgreSQLに移行する人は上のエントリを求めてない。
つまり本来ターゲットにすべき人は


  • SQLはORMが解決してくれるから違いなんて気にしない
  • ロジックはSQLではなくアプリケーションコード側が行う
  • DBはデータを置くストレージだ、いいね?


みたいな人だ。
前述のエントリでよしPostgreSQL使おう!!って人は多分MySQL使っても乗り越えていける人たちだ。
勿論そんな人達がPostgreSQLに来てくれるのは嬉しいし大歓迎。
それとは別にもっと窓口を拡げるために必要な移行時の罠をまとめておく。
これはMySQLと比較しながらPostgreSQLの事を書く。
だが初めてPostgreSQLを触る人は知っておいた方が良いことのまとめになるはずだ。


1. DBを作成するときの罠


一番最初にPostgreSQLをLinux等にインストールすると
service postgresql-9.4 initdb
をまずはすると思う。
その場合、PostgreSQLのデフォルトのロケールはOS側に設定されているロケールを使用する
つまり多くの場合は

ja_JP.UTF-8

となる。
これに伴いDBが壊れるということはない。
ただしソート順に影響する。
具体的には

日本語ロケールでは辞書順(カタカナ→ひらがな, 清音→濁音→半濁音) の順にソートされる

のだ。
多くのシステムの場合、これは想定外のソート順になる。
そのためDBを作成する際には

service postgresql-9.4 initdb --locale=C

service postgresql-9.4 initdb --no-locale
を指定することになる。
どちらも同義である。
こちらを行うことにより文字のバイナリ値を基準にしたソートになる。
絵文字でソートしたい場合も安心だ。
詳しくは下記のエントリを参考にして欲しい。

ロケール(国際化と地域化)



2. アクセス制御の罠


MySQLに対するアクセス制限はmy.cnfに
bind-address = 127.0.0.1
と書いたりMySQLのuserテーブルで指定したりする。
それに対し、PostgreSQLはDBをインストールしたフォルダ内のpg_hba.confで制御する。
こちらについては先日紹介したとみたさんのエントリでも紹介されている。

MySQLユーザーがPostgreSQLを触ってみたメモ


その際に気をつけてほしいことがある。
それはMETHODの指定である。

host    all    all    192.168.0.0/24    trust
としてあったとする。

これは192.168.0.1~192.168.0.255のIPアドレスからのアクセスはパスワード認証無しでアクセスできる設定だ。
もしこのDBが外に晒されており、全てのIPを表す0.0.0.0/0を指定した場合は自由にアクセスできる事になる。
PostgreSQLはdefaultでスーパーユーザーとしてpostgresというユーザが作成される。
この状態でpostgresユーザでアクセスすれば...結果は明白である。
笑い事に聞こえるかもしれないがEC2やVPSでDBを作っている場合に一時的にtrustを指定する人を見かける。
そして設定は明示的にに読み込みを行わなければならない。
ここに大きな罠があり


  1. 確認のためpg_hba.confに0.0.0.0/0 trustを指定して起動。
  2. テスト終了後、pg_hba.confを修正
  3. 再起動時や再読み込みを忘れる


とするとpg_hba.confは正しいのに誰でもアクセス出来る状態のままとなる。
せめてmd5を指定するようにしよう。

host    all    all    192.168.1.1/32    md5

詳しいpg_hba.confの説明等は公式documentを読んで欲しい。

19.1. pg_hba.confファイル


なお蛇足だがそもそもpostgresql.confの設定で

listen_addresses = '*'

を指定しないとdefaultではlocalhost以外からアクセス出来ない。
設定箇所が2箇所あるので要注意だ。


3. テーブル作成時の罠

MySQLからPostgreSQLに移行した時、仮にpgadmin3を使って型を指定しようとしたら驚くだろう。
余りにもデータ型の種類が多いからだ。
データ型についてはまず公式documentのリンクを紹介しておく。

第 8章データ型


君たちが欲しいのは


  • 数値型
  • 文字列型
  • 日付/時刻型


だと思う。
それぞれについて簡単に解説しておく。

●数値型

通常は


  • bigint  8byte整数
  • integer  4byte整数
  • smallint 2byte整数
  • numeric  MySQLのDECIMAL相当
    (MySQLではnumericはDECIMALのエイリアス)


で事足りると思う。
ただPostgreSQLにはこの他に論理値データ型として


  • boolean  1byte


がある。
勿論入るのは0 or 1 or NULL(許可した場合)だ。
SQLとしてはtrue or falseでもよい。
他にも柔軟に受け入れるので使う場合は公式documentをチェックされたい。

論理値データ型


そしてサロゲートキーを使いたい場合にMySQLはAUTO INCREMENTを指定すると思う。
AUTO INCREMENTはPostgreSQLには無い
その代わりシーケンスを作り、該当の整数型のdefaultにnextval(シーケンス名)を指定することで同義になる。
とは言ったもののその手順は煩雑だ。
そのため最初から


  1. 整数型の指定
  2. シーケンスの作成
  3. 該当シーケンスをdefaultに指定


を全て丸めてやってくれる型がある。
それがserial型だ。


  • bigserial   →  bigint
  • serial     →  integer
  • smallserial  →  smallint


なおPostgreSQLのシーケンスは最大値に行った場合にCYCLEの指定の有無で周回するか決まる。
CYCLEを指定しない場合はNO CYCLEとなり周回せずにエラーが発生する。
だがserial型で作った場合はCYCLEが指定されない=最大値になるとエラーが発生する。
また自分で設定すれば連番の取得の昇降やSTEP、MAXやMINも指定できる。
CYCLEを指定して周回するIDも作れる。
またAUTO INCREMENTと違い複数テーブル(またはカラム)からも参照、指定することが出来る。
シーケンスはMySQLには無い概念なので一度調べてみると設計の幅が広がるのでオススメだ。

●文字型

PostgreSQLの文字列型は


  • character varying 可変長
  • varchar      character varyingのエイリアス
  • character     空白を埋める固定長
  • char        characterのエイリアス
  • text        制限なし可変長


となる。
実際は可変長、固定長、制限なしの可変長だ。
多くの運用の場合、固定長を使うメリットがない。
なので可変長のcharacter varying(以下varchar)かtextを使うことになる。
またvarcharとtextの違いは制限の有無のみだ。
そのため参照速度だけで言えば制限のオーバヘッドの少ないtextの方が早い
また制限する場合は


  • varchar(n)


とnを指定することになるがnは文字長(文字数)だ。
バイトでは無いので注意が必要だ。
(MySQLの場合のVARCHARはバイト数)
(MySQLも文字数だった、yoku0825さんご指摘あざます!!あと誕生日もおめざす!!)



仕様として標準SQLに準拠しているのだがそもそも標準SQLの仕様に癖がある。
一度公式documentを拝読しておくと救われるかもしれない。

8.3. 文字型


またMySQLとの大きな違いとしてPostgreSQLの文字列型は文字の大小を区別する
('A' != 'a'である)
つまりMySQLのBINARY属性を指定した状態と同じ挙動である。
文字列に関してはMySQLと大きく違う仕様が多いので注意が必要だ。
(これは逆も然りでPostgreSQL使いがMySQLを使う際に多くの人がこの罠にハマる)
蛇足としてPostgreSQLの多くの関数は文字列を受け付ける際はvarcharを指定してもtextにCASTされる。
そういった理由からよく文字列型は全てtextを指定する設計も見かける。
その場合は不正なデータを入れられた時の予防やディスク容量計算が難しくなる。
適正な型指定はデータを守るのでCHECK制約と合わせて使いわけよう。
更にPostgreSQLには列挙型(enum)もある。

8.7.1. 列挙型の宣言


(MySQLにもEnumがあるらしい)



CHECK制約とは違いデータにソート順を持たせることが出来る。
覚えておいて損はないだろう。


●日付/時刻型

日付/時刻型は

  • timestamp  日付と時刻両方を持つ 例:2015-01-01 00:00:00
  • date     日付を持つ(時刻無し) 例:2015-01-01
  • time     時刻を持つ(日付無し) 例:00:00:00
  • interval   時間間隔       例:1 year 2 months 3 days 4 hours 5 minutes 6 seconds

がある。
timestampはMySQLのdatetime相当だ。
timestampとtimeについてはtime zoneを持たせることが出来る。
(これによりMySQLのtimestampを表現することが出来る)
指定した場合はUTCとして内部で持ち、表示の際に設定されたタイムゾーンに合わせて計算してくれる。
国内で使う場合はタイムゾーンを指定しないtimestamp without time zoneで問題ない。
またMySQLのtimestampのdefaultのようにUPDATE文の対象になった際に自動的に対象レコードの指定columnをCURRENT_TIMESTAMPで更新する機能は無い。
同じようにしたい場合はトリガーを書くことになる。
これは非常に便利なのでPostgreSQLにも欲しいところだ。
またintervalについては癖の強い型だ。
そのほかの日付/時刻データ型と合わせて公式documentを見ていただきたい。

8.5. 日付/時刻データ型



●配列型と範囲型

補足としてPostgreSQLは配列型と範囲型がある。
どちらも強力な機能だが乱用は毒にもなる。
公式documentと例を上げているエントリを紹介しておく。



4. ORMの罠

RoRを使う人は問題ないがPHPerはFrameworkのORMが対応してないことがある。
まさにFuelPHPの話だ。
私は標準のクエリビルダをラッパーし自作ORMを作成しているがこれは万人向けではない。
そのため、もしPostgreSQLに対応したORMが必要な場合はDoctrine2をオススメする。
ただし悲しいことに公式documentは英語しかない。
しかしDoctrine2はSymfony2のORMだ。
そのためSymfony2の公式documentを読むことで使い方を知ることが出来る。

Symfony2


FuelPHPでインストールする場合はComposerに対応しているので安心して欲しい。

FuelPHPでdoctrine2を使ってみた


またDoctrine2を利用すればスキーママイグレーションも出来る。
(FuelPHPの標準のスキーママイグレーションはMySQL専用なので動かない)



ここまで来た君は手元のアプリケーションからDBに接続し、自由にテーブル設計できたはずだ。
長くなったので今日はここまでとする。
この後、運用で困った事があればメーリングリストで聞いてみるといい。
きっと誰かが答えてくれるはずだ。

PostgreSQLユーザ会 メーリングリスト


それでは検討を祈る。

2015年8月24日月曜日

MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと



私が尊敬してるDBスペシャリストの@yoku0825さんがこんな事言ってた。



@yoku0825さんはMySQLのスペシャリスト中のスペシャリストだ。
その@yoku0825さんがこんな事を言うなんて只事じゃない!!
で話になった元ネタはコレ。

日々の覚書: #yapcasia でMySQL 5.7の罠についてLTしてきました


要はMySQL5.7は「目指している正しい姿」になるために下位互換性を幾つかを捨ててるよって話だ。
その中には360日問題があるけどそれ言うと正しさとは?みたいな話になるので今回は話題にしない。
(デフォルトでパスワードが360日後に無効になるという仕様がデフォルトになったという話)
MySQLを使ってる人は@yoku0825さんのブログを一読したほうがいい。
必ず知らなかった罠が幾つか見つかると思う。
そのツイート見て



とブーメラン投げて見事に刺さってるので今から記事書く。
両サイドにはかなり厳しい話もするが俺の本音を聴いておけ(関白宣言)
まぁ歴史の長いRDBなのでお互いの比較記事は沢山ある。
なのでマルチスレッド(MySQL)とマルチプロセス(PostgreSQL)だとかVACUUMだって話はしない。
むしろ実際に使ってみた際の違いをにフォーカスする。

1. SQLの違い


基本的にMySQLでやっていたことはPostgreSQL出来る。
しかし関数の挙動の違いは幾つかある。
例えば時間から曜日に該当する数字に変換した場合に


  • MySQL → date_format(time,"%w") 0から始まり、日曜日に該当する
  • PostgreSQL → to_char(time,'D') 1から始まり、日曜日に該当する


など挙動に互換性がない場合も多い。
関数を使う場合は一度仕様を確認した方がいい。
幸い、PostgreSQLは有志によって日本語ドキュメントが充実している。
今はGithubで管理されてるので誤字脱字、表現の曖昧さなどはプルリクエストすることが出来る。

PostgreSQL日本語ドキュメント




MySQLを使ってた人はPostgreSQLを使うことでWindow関数など新たに知る機能が多いだろう。
MySQLしか触ったことが無く、OracleやMSDB等を触ったことが無いなら一度SQLの勉強をした方がいい。
必ず業務を効率化してくれるはずだ。
SQL勉強する人向けには最近読んだ本でPostgreSQLベースで書いてあって読みやすかった本をオススメしとく。



じゃあPostgreSQL優秀じゃん!大は小を兼ねるじゃん!!と言いたいところだがMySQLにしか無い文法もある。
MySQLにもPostgreSQLにもMerge文はSQL標準なのに実装されてない。
しかしMySQLには代替案として




がある。
これに準ずる機能はPostgreSQLには無い。
しかしWITH句とRETURNING句(MySQLには無い機能だね)を使えば一応PostgreSQLでも表現出来る。
第九回 中国地方DB勉強会 in 米子でこの話題は取り上げたので興味がある人は資料を見て欲しい。
このリンクの先に梶山さんのMySQL5.7の話が出てるのでそっち見て欲しい、いや見たほうが良い、絶対見るべきだ。
ただ事ある毎にPostgreSQLにMerge文相当が無いことをDis指摘していたら遂に9.5からそれ相当の構文が実装された。
これはMySQLの「INSERT...ON DUPLICATE KEY UPDATE構文」と似た構文で実装されている。

INSERT ... ON CONFLICT {UPDATE | IGNORE}構文


PostgreSQL9.5に興味が出た人はリリース予定の機能が以下にまとまってる。

What's new in PostgreSQL 9.5(英語)


英語なんて読めるか!って人は下記のブログをcheckするといいだろう。

日々の記録 別館


Twitterで行われるラーメン飯テロに耐えれるなら著者のぬこさんをフォローするのもいい。
あとはみかかな人たちが頑張ってるのでSlideShareをWatchすると幸せになれるかもしれない。
オススメのSlideShareのリンクを貼っておく。

10大ニュースで振り返るPGCon2015


おっと話が大分脱線してしまった。
話を戻すがPostgreSQLのSQLは


  • 文字結合が||で出来る
  • 日付操作がday +1で出来る


などどちらかと言えばOracleを意識した記述も多い。
ただ悪名高き(+)は無いしNULL = ""も無いのでそこは安心して欲しい
なのでわかりやすく例えるとしたら

ザ・キング・オブ・ファイターズの95の京と96の京くらい違う


といったところか。
新日本企画が産んだ名作格ゲー、ザ・キング・オブ・ファイターズを知らない若者は

細かいところは違うけど大体一緒でPostgreSQLの方が痒いところに手が届きやすい


くらいのニュアンスで居るといい。
つまりSQLに関してPostgreSQLに乗り換えて不満が出ることは少ないだろう。


2. 機能の違い


これもPostgreSQLの方が多い。
まずマテリアライズド・ビュー(以下マテビュー)がPostgreSQLにはある。
簡潔に言うとviewの結果を実体としてキャッシュするというものだ。
これでtmp_hogeみたいな中間テーブルを作る必要は無くなる。
ただし銀の弾丸ではない
乱用するとCPUやHDDリソースなどが死ぬ。
そのほかにもCHECK制約があるがこのへんはMySQLで慣れた人には使うシーンが想像出来ないと思う。
データにバグやヒューマンエラーで不正なデータが入って苦しんだ人は覚えておくいい。
次の新規設計時にDBがデータを守ってくれる。
どちらかと言えば


  • JOINのアルゴリズムが複数ある
  • 相関サブクエリが早い


と言う点がMySQLと比較すると直接的にパフォーマンスが上がりメリット感じるところだろう。
ただしUPDATE文に関してはPostgreSQLの方が遅い(場合が多い)
これは追記型アーキテクチャの壁なのでMySQLの方が有利な点だ。
しかしガンガンUPDATEを走らすようなシステムはロックを必要とするはずでロック待ちの方が速度に影響およぼす。
そのため直接的に問題になることは少ないはずだ。

さてここまで話をしたのはPostgreSQLの良いところだ。
勿論MySQLの方が有利な機能もある。
それはレプリケーションだ。
そもそも論としてMySQLとPostgreSQLはアーキテクチャが違うのだがPostgreSQLには自動フェイルオーバーはない。
PostgreSQLの場合はPacemakerなどのサードパーティを利用して実現することになる。
corosyncに苦い思い出がある人は機会があれば一緒に飲もう。
また自動フェイルオーバーはMySQL5.6からの機能だ。
MySQL5.6をまだCHECKしてない人は奥野さんのブログを見るといいだろう。

開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!


とは行ってもPostgreSQLのレプリケーションに対する投資は素晴らしく今は追いつきつつあると行っても過言ではない。
以上の通り機能面でもSQLと同様の事が言える。
ここも安心してPostgreSQLを推せる内容だ。


3. GUIツールの違い


ここからはPostgreSQLのダメな所になる。
正直言ってPostgreSQLの管理や設定を一つのGUIで全て行うのは諦めた方がいい。
まずSQLエディタ(DBAツール)だがMySQL使いはWorkbenchを使ってると思う。
基本無料なので使ってない人は是非使った方がいい。
それに対してPostgreSQLはpgAdmin3になる。
残念ながら使いやすいとは言い難い。
例えばMacOS版は日本語入力がインラインではない。
この時点でリュウが使ったら殺意の波動に目覚めるレベルだ。
カプコンが産んだ名作、ストリートファイターを知らない若者はウメハラの背水の陣を見ておくといい。
そしてpgAdminは大切な場面で度々落ちる。
エクセル方眼紙を彷彿させると言えば共感してくれる方も多いだろう。
とにかく、PostgreSQLのGUI関連は弱い。
周囲に聞くとみんなコマンドラインの黒い画面でpsqlを直接操作しているらしい。
なので不満がコミュニティからあまり出ていないようだ。
しかし私は補完が利かない環境での開発は耐えれない若者なので代替案として以下のツールを使ってる。




どちらも無料で使え、ER図をリバース・エンジニアリングしたり出来る。
しかもPostgreSQLもMySQLにも繋げれるのでオススメだ。
0xDBEはIDEを開発してるJetBrains製でMacOSでもWindowsでも動くので是非試して欲しい。
A5:SQL Mk-2はmatsubaraさんが個人で開発されてる。
日本語だしExcelにテーブル定義書をリバース・エンジニアリング出来る。
これが無料なのが信じれないレベルのクオリティだ。
なおphpMyAdminに対抗したphpPgAdminも一応ある。
インストールしないことをオススメする。
とモダンなUIとは程遠いPostgreSQLだがPythonでpgAdmin4を作るという話が進んでる。
これがキラーアプリになってくれることを切に願っている。

4. ハードウェアでの違い


長くなってきたので簡潔に言う。
PostgreSQLはMySQLと違ってSSDにしたからといって何十倍の速度も出ない
(せいぜい数倍程度)
さらにFusion-ioは特にMySQLに特化してるのでその差は顕著だ。
PostgreSQLはHDDに特化してシーケンスに書き込もうとするのでそのオーバーヘッドの差が大きい。
もし、金の弾丸でPostgreSQLを殴るときはまずはメモリを増やそう。
PostgreSQLに限らずRDBの多くの問題は金で殴ってメモリを増やすと解決することが多い。
それでもダメな場合は優秀なDBエンジニアを用意しよう。
PostgreSQLはハードウェアを金で殴りにくいのは事実だ。

5. クラウド上での違い


やっとAWS RDSにPostgreSQLが去年追加された。
しかしまだ日本語の全文検索拡張はインストール出来ないしAuroraのPostgreSQL版も無い。
だがHerokuを初め、標準的な使い方であればPostgreSQLをsupportしてるところも出てきた。
国内だとニフティがRDSとしてPostgreSQLをサービスしている。
このへんはOSC 沖縄の時に話をしたので興味がある人はそちらを参考にして欲しい。

OSC沖縄でクラウドの選び方の話で登壇してきたので資料を公開する





随分と話が長くなってしまった。
本当はPostgreSQLには


  • PL/SQLの代わりにPL/PythonやPL/JavaScriptが使える
  • 外部テーブルラッパー(FDW)を使えばPostgreSQLのtableのようにMySQLを参照できる
  • MySQLと違いトリガーを行単位とクエリ単位が選べる(MySQLは行単位のみ)


などの話もしたかったがこのへんの話はまた別の機会にしようと思う。
なお、全然実践的じゃなかったし本当にMySQL派の人がPostgreSQLを使うときのハマリどころは皆無だった。
そこでお詫びにとみたさんの記事を紹介する。



最後になるがMySQLとPostgreSQLはライバル同士だ
しかしながらコミュニティ間はフレンドリーそのものだ。
他にライバル同士がこんなにフレンドリーなOSSコミュニティはあるのだろうか。
実際に合同勉強が開かれたりもする。

MyNA・JPUG合同DB勉強会 in 東京を開催してきた(FDWの話もしてきた)


私はそういうところがRDBのOSS界隈の好きなところである。
これを読んで興味を持った人は是非、DBのコミュニティに参加して欲しい。
MyNAもJPUGも暖かく迎えてくれるだろう。
それはどちらのコミュニティも変わらないことだ。


#### 2015/08/25追記 ####

好評だったので第二弾も作った

MySQL使いの人がPostgreSQLを始めるときの罠をまとめてみた

2015年8月10日月曜日

IoT時代を生き残るためにIPを扱うならPostgreSQL!!

皆様、時代はIoTと言われてますがIPv6使ってますか?
IPv4でも面倒くさい色々と苦労はあったと思います。
ですがIPv6になると

  • ソートとか大変(文字列ソートではダメ)
  • 検索とかもっと面倒くさい(範囲の検索とか)
  • 特定のIPの次のIPを取得するの面倒くさい(IPのインクリメントでの払い出しとか)

などIPv4の時に苦労した事がIPv6ではもっと大変になります。
例えばPHPだとip2long()って関数がありますがIPv6は非対応です。
なぜかと言うとIPv6だとlongに入り切らないからね!!
そうなるとソートとかインクリメントとか工夫が必要になります。
ですがPostgreSQLのネットワークアドレス型を使うと良きに計らってくれます。
ソートや検索はORDER BYやWHEREでOK!
インクリメントについては

SELECT '192.168.0.1'::inet + 1


とするとちゃんと"192.168.0.2"を返してくれます。
勿論IPv6にも完全対応!!

SELECT '2001:0db8:0000:0000:3456:0000:0000:0000'::inet + 1


"2001:db8::3456:0:0:1"が帰ってきます!
見ての通り省略記法にも対応されてます。
検索も内包を

SELECT inet '192.168.1.5' << inet '192.168.1/24'


と表現できます!!
(この場合は含まれるのでTRUEが返ってきます)
勿論WHEREに

SELECT * FROM ip_address
WHERE ip << inet '192.168.1/24'

のような記述で書けます! 他にも色んな書き方ができるので是非公式ドキュメントを一読してみてください。

公式ドキュメント

と言うことでこれからIoTに関わるとネットワークを管理する必要が増えてくると思います。
そのときは是非ともPostgreSQLを使ってみてください。

2015年7月20日月曜日

第10回 中国地方DB勉強会 in 岡山をJAWS-UGと共催してDDDの話をしてきた #ChugokuDB #jawsug



今回のDB勉強会は僕の大好きなスーパーエンジニア カズさんのありがたいお言葉から始まりました。
ちなみに僕のGithubは真っ白でした。

ということで第10回 中国地方DB勉強会 in 岡山を開催してきました。
岡山は勉強会というコミュニティが成熟してきたなぁという実感が凄くありました。
例えば会場の準備、当日の担当の分担、めっちゃ低いドタキャン率。
どれも主催の私からすると本当に何もしなくてもイベントが進むレベルで聴衆者のような気分でした。
これは私達よりももっと先輩のひらさんやきよくらさんたちが積み上げて来た歴史が為せる技です。
この良き文化を引き継ぎ、もっと多くの地方に拡散していくのが私達の世代のミッションだなと思ったりしたのでした。

とちょっと話がそれましたが今回はJAWS-UGとの共催でした。
なのでAWSのセッションが半分、DB枠としてDDDの話が半分といった感じで総勢26名の参加がありました。
実務を通じた経験の話やAWSの最先端の話は非常に面白く、岡山特有のQ&Aの盛り上がりは流石の一言です。
そして毎度ながらご協力してくださった講師・スタッフの皆様、ありがとうございました。
そんな第10回の詳細は次のとおりです。

■登壇資料など
中国地方DB勉強会のポータルサイトにまとめました。

中国地方DB勉強会


※今回は動画の配信はありません

■メーリングリスト
次回の告知についてはMLやDoorKeeperを使います。
興味がある方はチェックしてみてください。

中国地方DB勉強会ML Google Group

DoorKeeper


■twitterのまとめ
Twitterについては@razonさんがまとめてくれています。

Twitterのまとめ


それと第11回はOSC広島の翌日に同会場で開催します。
シルバーウィークの5連休の初日がOSC、翌日が中国地方DB勉強会となっています。
勉強会駆動旅行に是非ご活用ください。
ただ、もう宿が埋まりつつあるようです。
参加希望の方はお早めにお申込みと宿泊場所の確保をよろしくお願い致します。

■第11回 中国地方DB勉強会 in 広島
■概要
日時: 2015-09-20(日)10:00 - 17:00
会場:広島県広島市中区大手町1-5-3 サテライトキャンパスひろしま 504号室


詳細はこちら
第11回 中国地方DB勉強会 in 広島

※セッション対象予定
柿木さん(地元枠):実務を通したDBの話
MySQL枠:調整中
きよくらさん(OITEC):SQL Serverの話
渡辺さん(地元枠):開発を通したDBの話
津田さん(地元枠):DBの面白い話
吉田さん(JPUG):DBの面白い話
曽根さん:コミュニティを通したDBの話

DBを通した幸せになった話(苦労した話)をテーマ(それ以外もありますが)やろうと思います。
前日のOSC広島にもJPUGは参加します。
こちらも面白いセミナーが目白押しなので是非参加してみてください。

オープンソースカンファレンス2015@広島

なお、懇親会は18:00~20:00で考えています。
交流含めて是非参加をご検討していただけたらと思います。

さていよいよ3年目に突入し、DB勉強会はJPUGやDBの枠に収まらず色んなコミュニティやソフトウェアのサラダボウルのような場所になっていければと思ってます。
初心者から上級者まで色んな人の交流の場としてもご活用ください。
なのでこれからも中国地方で楽しい勉強会として頑張って行きたいと思います。
それでは皆様のご参加、お待ちしております!!

2015年7月17日金曜日

オープンセミナー2015@香川でRDBとNOSQLの住み分けについて登壇してきた #osk2015



怒涛の登壇ラッシュ3週目。
うどんを食べに登壇するために香川県高松市に行って来ました。

はてブのホットエントリ入りもした当日の資料はこちらです(ドヤァ



最後にオススメの書籍を3冊紹介してます。
どれもオススメですがNOSQLの基礎知識はより詳しく実例を交えて情報がまとまっています。
データモデルについてはデータベース実践入門を読むことで正しい知識を得ることができます。
そしてSQLアンチパターンは苦手な事を無理矢理すると悲劇を生むことを教えてくれます。
どれもオススメなので興味があるかたは是非読んでみてください。
当日は動画撮影があったのでそのうち公開されると思います。







NOSQLとRDBの住み分けについては色んな方がお話されてます。
実際にNOSQLはシンプルな機能にフォーカスして特化してるソフトウェアがほとんどです。
だからこそ、このような全体を通した住み分けの理解が必要です。
その大前提の上で資料のまとめにもありますが


  • RDBで問題ない場合は無理にNOSQLを使わない
  • RDBが苦手な事を無理にRDBに当てはめない


ということが大切なことです。
この両方を念頭に置けばデータ層における適切なインフラ設計は自然と出来るのではないかと思います。
(そのためにそれぞれの得手不得手を知る必要もありますけどね)

また先月は東京でNOSQLとRDBで住み分けた後の世界の話をしてます。

MyNA・JPUG合同DB勉強会 in 東京を開催してきた

PostgreSQLの外部データラッパー(FDW)は住み分けた後の橋渡しとして面白いアプローチです。
こちらも合わせて見ていただけたらと思います。

ということで明日で私の登壇ラッシュが一段落落ち着きます。
明日は そもそも糞の上に何を載せても糞 設計や要件定義がしっかりしてないと実装でどんなに頑張っても辛いという話をしようと思ってます。
興味がある方は中国地方DB勉強会ハッシュタグ(#ChugokuDB)をWatchしてみてください!
僕はEVO(格ゲーの世界大会)があるのでそちらに注力します!!(ぉぃ

ということで、データ層の住み分けの話を香川でしてきました。
(うどん、マジで美味かったです)

OSC沖縄でクラウドの選び方の話で登壇してきたので資料を公開する



結果、沖縄時間を読み間違えて開門2時間前に会場についたのが私です(´・ω・`)

ということで今回はJPUGの講師枠としてOSC沖縄に登壇してきました。
沖縄に来るのは中学校の修学旅行以来なので家族で一緒に行って来ました。
その時の登壇資料はこちらです。


伝えたかったこととしては

・クラウドが便利なのはわかる、けどオンプレミスと比べて実際どうなの?
・OSより上を抽象化するPaaSでDBってどうなの?
・でPaaSやってる会社何個かあるけどどうなの?

の辺りを僕なりの回答で掘り下げて話しました。
特にクラウド利用の説明ってメリットばかりが乗っててデメリットの話が表に出てないと思います。
実際にはメリットとデメリットの組み合わせでインフラの選択が変わるのでその話が一番のメインでした。
私の周りではAWSが一番主力ですがケースバイケースでAzureだったりさくらクラウドだったりニフティだったりがマッチすることも多々有ります。
そういったチョイスするときの一つの指標にしていただければ幸いです。



こういった意見もあったのでやはりメリットばかりじゃなくデメリットの比較も大切だなと思いました。
あと沖縄はエンジニアのみんなも良い人ばっかりだし海は綺麗だし最高でした。
幸いに台風の影響なくバッチシ観光も出来たしやっぱJPUGは最高だぜ!!

MyNA・JPUG合同DB勉強会 in 東京を開催してきた(FDWの話もしてきた)

MyNA・JPUG合同DB勉強会 in 東京を開催してきました。
遂に東京進出!!中国地方に収まらないスケールのデカさを魅せつけてきました。
ただ初の関東開催ということで関東の洗礼を受けましたw



それでも平日の日中に雨が降っていたにも関わらず40名以上の参加者がありました。
本当に皆様、ご参加して下さりありがとうございました。
この勉強会は会場を貸していただいたDMM.com ラボ様MyNAの梶山さんのお陰で開催することが出来ました。
本当に良い経験が出来ました、ありがとうございます。
また所属しているまほろば工房には協賛費を出してもらいました。
お陰でドタキャンに怯える事無く、上手く乗り切る事が出来ました。
関東でイベントを開くときは


  • ドタキャンがあること前提で対応できる仕組みをつくる
  • お金の事に怯えなくて住むような事前準備


が非常に大切だなと思いました。
普段の地方開催だと懇親会はほとんどドタキャン無いで本当にその優しさを身をもって感じましたね。

■twitterのまとめ
Twitterについては@eielhさんがまとめてくれています。

MyNA・JPUG合同DB勉強会 in 東京 #ChugokuDB


■登壇資料など
他の講師の方の登壇資料も中国地方DB勉強会のポータルサイトにまとめました。

MyNA・JPUG合同DB勉強会 in 東京


今回は配信を行っていないので動画はありません。
当日のスーパーエンジニア講師のお話とスーパーエンジニア参加者のマサカリは来た人だけが味わえた特権ですね。
当たり前のようにPostgreSQLのコミッターやFDWのコントリビュータがいたり、MySQLエースやinnoDB作ってた人が居て全体的なレベルの高さがカオスでした

それと今回は講師業もしたのでスライド載せときます。
PostgreSQLの外部データラッパー(FDW)はNOSQLや他DBとのインターフェイスの一つの答えだと思ってます。
MySQLのストレージエンジンに似ていてやはり得意な事は得意なソフトウェアに任せるのが良いと思ってます。
その上でFDWが橋渡しをする、そんな想いを伝えたかったです。
ですがデモが糞みたいなデモで参加者には申し訳なかったです...
次回、汚名を返上する機会があればリベンジしたいですね。
ということで当日の資料はこちらです。



なので全体的に参加者のレベルも高く、正規化やRDBの基本的な話は理解されてる前提で講師も話をしてました。
本来は初心者から中級者向けをターゲットだったのでそういった参加者の方には難しい話だったと思います。
そこは僕のバランス取りとマーケティングが失敗しました。
何度やってもこういうバランス取りの答えが見えないので本当に難しいですね。

逆に懇親会はすごい人ばかりでただただ僕は色んな人の知見を勉強させて貰えました。
と言いながら勉強するフリをしながらひたすら余りそうなビールを消費するという貴重な経験をしました。
(結局1ケースほどビールが余ったのですが)


ということで色々と手探りでしたが結果的に大変有意義なイベントだったのではないかと思います。
コミュニティ主体のイベントは単体のコミュニティでやるものが多く、合同のイベントはもっとあって良いと思います。
このようなイベントは多くの化学反応を産むと思いますし、なによりも楽しいです。
これをキッカケにもっとDBに限らず色んなコラボが生まれて欲しいなぁと願っています。
また中国地方DB勉強会はそういったコラボを産む場所になれるように今年は頑張っていこうと思っています。
一緒に共催したい!!というコミュニティがありましたら是非ご連絡をよろしくお願いします。


ということで、soudai1025とイベントを開催したい!!という方、お待ちしております。
ホントまたこのイベントやりたいなぁ(*´ω`*)

2015年6月8日月曜日

第九回 中国地方DB勉強会 in 米子を開いてきた

第九回 中国地方DB勉強会 in 米子を開催してきました。
今回は初の米子開催!!ということで色々と手探りでしたが結果的に30名近い参加がありました。
これは米子現地スタッフの上村さんを始め、鳥取の方の勢いをすごく感じました!!
今回を企業として「株式会社 リゾーム」のパトラッシュさんと「日本Oracle」の梶山さんに来ていただきました。
実務を通じた経験の話やMySQLの最先端の話は非常に面白かったと好評でした。
他県の方も多く参加しており、大成功の勉強会だったと思います。
そして毎度ながらご協力してくださった講師・スタッフの皆様、ありがとうございました。
そんな第9回の詳細は次のとおりです。

■登壇資料など
中国地方DB勉強会のポータルサイトにまとめました。

第九回 中国地方DB勉強会


各講師の資料、そして今回はUstream配信をYouTubeに保存しております。
上記のポータルサイトからご参照ください。

■メーリングリスト
次回の告知についてはMLやDoorKeeperを使います。
興味がある方はチェックしてみてください。

中国地方DB勉強会ML Google Group

DoorKeeper


■twitterのまとめ
Twitterについては@eielhさんがまとめてくれています。

第9回 中国地方DB勉強会 in 米子 #ChugokuDB


■動画まとめ

中国地方DB勉強会 YouTube


それと第10回はJAWS-UGとの共催で岡山で開催します。
すでに申し込みが10名以上おり、埋まってしまいそうな勢いです。
参加希望の方はお早めにお申込みをよろしくお願い致します。

■第10回 中国地方DB勉強会 in 岡山 ~日本AWSユーザ会・PostgreSQLユーザ会(JAWS-UG・JPUG) 合同勉強会~
■概要
日時:2015年7月18日 (土) 10:00 - 18:30
会場:岡山県岡山市津島中1-1-1 岡山大インキュベータ
http://www.smrj.go.jp/incubation/od-plus/

詳細はこちら
第10回 中国地方DB勉強会 in 岡山 ~日本AWSユーザ会・PostgreSQLユーザ会(JAWS-UG・JPUG) 合同勉強会~

※セッション対象予定
AmazonWebServices 講師3名
ドメイン駆動設計  講師1名
その他、全員参加のハンズオンを予定しております。

クラウドの主流と言っても過言ではないAWSの話を3セッション予定しております。
また問題に対して如何に開発に落としこむか、というテーマでDDD(ドメイン駆動設計/Domain-driven design)の講師を呼びします。
セッションとハンズオンがありますのでこの機会にDDDに是非触れていただけたらと思います。

なお、懇親会は18:00~20:00で考えています。
交流含めて是非参加をご検討していただけたらと思います。

と今回でついに中国地方統一(全県開催)を果たしました。
次の岡山でDB勉強会も3年目になります。
これからも中国地方で楽しい勉強会として頑張って行きたいと思います。
それでは皆様のご参加、お待ちしております!!

2015年4月26日日曜日

第八回 中国地方DB勉強会を開いてきた

先週、第八回も無事終わりました。
第八回は実務で活躍するDBをテーマに広島県福山市で開催されました。
なぜ中国地方DB勉強会で広島県だけ福山市と広島市で二回開催されるかは秘密です。
(中国地方の中心は岡山でも広島でも無く福山じゃけん!)
今回は日本を代表する企業として「はてな」と「NTTデータ」のエンジニアに来ていただきました。
実務経験者の声は含蓄がある説得力のあるお言葉でした。
また今回は学生の参加者から大先輩まで幅広い年齢層の参加者に来ていただき、意見交流会も大盛況でした。
そして毎度ながらご協力してくださった講師・スタッフの皆様、ありがとうございました。
そんな第八回の詳細は次のとおりです。

■登壇資料など
中国地方DB勉強会のポータルサイトにまとめました。

第八回 中国地方DB勉強会


各講師の資料、そして今回はUstream配信をYouTubeに保存しております。
上記のポータルサイトからご参照ください。

■メーリングリスト
次回の告知についてはMLやDoorKeeperを使います。
興味がある方はチェックしてみてください。

中国地方DB勉強会ML Google Group

DoorKeeper


■twitterのまとめ
Twitterについては@eielhさんがまとめてくれています。

第8回 中国地方DB勉強会 in 福山


■動画まとめ

中国地方DB勉強会 YouTube

■第9回 中国地方DB勉強会 in 米子
■概要
日時:6/6(土) 13:00~18:00
会場:米子コンベンションセンター
http://www.bigship.or.jp/
・場所は第3会議室

  • PostgreSQL
  • 地元枠 尾古 豊明さん(ぱとらっしゅ)
  • タイトル: PostgreSQLのPostGISとHerokuとActive Recordな話

  • MySQL
  • かじやま さん(@RKajiyama) 日本オラクル MySQL GBU
  • タイトル: MySQL 5.7 RC登場!次のMySQLはここが違うっ!
  • 概要: MySQLサーバの次世代版に向けて2015年4月にMySQL 5.7のリリース候補 (RC)版が公開されました。同時に実験室(Labs)版としてインデックス対応のJSON データ型を実装したMySQL JSONも公開され、新しいMySQLの全体象が見えてきて います。今回はMySQL 5.7 RCを中心に最新の実装をご紹介いたします。

第9回 中国地方DB勉強会 in 鳥取

以上のとおり予定しております。
RoR+PostgreSQLの話と4月にリリースされたばかりのMySQL 5.7の話と今回も豪華です!!
(そもそも梶山さんの登壇は東京でも非常にレアで貴重な人なのですが中国地方出現率が以上ですねw)
またパトラッシュさんも岡山Ruby勉強会などで活躍されてる著名な方でプログラマもDBAも楽しめる内容になること間違いなしです!!

なお、もう1枠ほど地元枠かPostgreSQL枠で調整中です。
こちらは決まり次第ML等でご連絡しますので是非ご登録よろしくお願いします。

なお、懇親会は18:00~20:00で考えています。
交流含めて是非参加をご検討していただけたらと思います。

また第10回は7月頃に岡山市で開催する予定です。
申し込みサイトが出来ましたらMLやDoorKeeperで告知します。
ご興味がある方は上記のMLとDoorKeeperにご登録してみてください!!
米子開催くらいまでには申し込みサイトをお知らせ出来ると思います。


と今回も大盛況でしたが次回でついに中国地方統一(全県開催)を果たします。
これはゴールでは無くまだまだ通過点だと思いますので今後もよろしくお願いします。
皆様のご参加、お待ちしております!!

2015年3月23日月曜日

PostgreSQLは寿司ビール問題を解決する(unicode 6問題について)

TwitterでMySQL と寿司ビール問題ってのが話題になりました。

MySQLと寿司ビール問題

結論から言うとMySQLでは指定されてた文字コードによっては



ってなる話です。
詳細については前述のブログで触れられていますがMySQLとしてはバグではなく仕様だそうです。
でふーんって思って見てたら



と長谷川さんが仰ってるのを拝見したのでPostgreSQLで試して見ました。
結論は表題のとおりですが次のとおりです。
なお、僕が一番苦しんだunicode 6な文字がWindows上で文字化ける問題はpgadmin3のフォント指定で行けました。
教えてくれた@snagaさんありがとうございます!!!

■pgadmin3のフォント指定(絵文字を表示出来るように変更)のやり方

1 ツールバーから次を選択
ファイル→ツール→オプションを選択

2 オプションメニューでフォントを指定
クエリーツール→フォントで「Segoe UI Symbol」を指定

これで絵文字が表示されます。

それではお待たせしました結果ですが次のとおりです。

●実行環境
OS:ubuntu 14.04
DB:PostgreSQL 9.3.5



ちゃんと別々に認識してますね。
なお、検証した環境のPostgreSQLのlocale指定はC(nolocale)としています。
(日本語を扱う場合はほとんどの場合はCを指定するでしょうし)
なのでsortした際はasciiを元にsortされます。

※localeについての補足
引用元[ロケール(国際化と地域化)]
Cロケールではエンコーディングに依存する文字のバイナリ値を元に並び順を決めますが、日本語ロケールでは辞書順(カタカナ→ひらがな, 清音→濁音→半濁音) の順にソートされています。

なのでasciiを使って確認すると


となっています。
以上のことから絵文字を扱うならPostgreSQLを使うと良いですね!!