tom__bo’s Blog

MySQL!! MySQL!! @tom__bo

"MySQL・PostgreSQLユーザーグループ合同勉強会 in 東京" に行ってきた

どうしてこうやってイベント後の数日経ってからしかかけないのか自分でも全くわからない。。。

というのはおいておいて、OSSの2大RDBMSの合同勉強会に行ってきた話。

 

会場はDMM.comでした。

f:id:tom__bo:20150630231555j:plain

 

開始前の会場の様子。

社内のオープンスペースだったのだけど、昼から夕方にかけての勉強会だったことも会って、いろんな人が周囲を通って辛かった。。。

f:id:tom__bo:20150630231629j:plain

 

 

今回も自分的メモとして発表内容を書いていきます。

 

・データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜

by 奥野さん

nippondanji.blogspot.jp

 

1. データモデルとは
 データの論理的な表現
   データを表現するためにどんな方法が使えるか
 データ設計のことではない
 
一般的な「データモデル」データの論理的な表現、データの設計
今日話すのはERD(ER図)ではなくリレーショナルモデル。
 
2. データモデルと演算
     データの表現方法  ≒ 格納方法
     どのように出し入れするかが重要
     簡単かつ的確に操作する
     データの型によって用意された演算を適切につかうべき
     
3. 様々なデータモデル
     リレーショナル、グラフ、階層型、キーバリュー、オブジェクト、ドキュメント
     双方向で考える
          そのデータモデルはどのような演算が得意か
          アプリケーションが必要とする演算はなにか
 
     逸脱した部分も状況に応じて使っていく
          ソート、ストアド、マテリアライズド・ビュー
 
     1つの製品では足りない!
          データの同期が問題
               分散トランザクションがあれば理想。
               現状だとRDB製品くらいでしかない
          1つの製品で複数のデータモデルを扱えるようになってきている
 
4. 正しいデータモデル
     正しい答えがほしいからデータベースを使う。
     データの正しさとは?
          トランザクション
               同時アクセス時の整合性
              クラッシュリカバリ
          正規化理論
               重複を排除することによる理論的な矛盾の回避
          制約
               ビジネスロジック(要件上与えられた制約を守る)
     NoSQLでは??
          トランザクションなし、リレーショナルモデルなし、制約なし
          データの正しさの保証はアプリケーションに委ねられる
 
5. 実装について意識する
     論理的な表現=データモデル
     物理的な表現=実装
  ex) 
   ・データがテーブルに格納される
   ・高速のためにメモリ上にキャッシュされる
   ・インデックスによって高速にアクセスできる
   ・オプティマイザが実行計画を決定する
↑これらは実装であって、データモデルではない
 
実装について知ることの意義
     コンピュータ上で仕事をするのはプログラムそのもの。
          プログラムは思ったとおりではなく書いたとおりに動く
     仕事の量を見積もるため 
          I/O、メモリ、CPUをどれくらいのコストを必要とするのか
 
     実装とデータモデルの混同はダメ
          データモデルに沿って論理データの設計がある。
          論理設計 > 物理実装
 
6. スケーラビリティに着いての課題
     マシンの能力には限界がある
          CPUはムーアの法則で確実に早くなってきている
          デモデータベースに求められるのは青天井
 
分散処理における課題
     どのようにデータを分散するか
         自分で分散するのか
          シャーディング
          コンシステントハッシュ 
     データモデルが保たれないケースをどうするか
          シャードにまたがった結合は出来ない
     どのようにデータを同期するか
          
7. システムへの要求は絶えず変化する
     スモールスタートからユーザの激増
     ベータ版からの正式リリース
     規模が大きくなりリソースの枯渇
 
     道具も絶えず変化する
          製品の進化
          ハードウェアの進化
 
     常に手の内のカードはアップデートしておく
          データモデル
               データモデルの垣根を超えることは非常に難しい
          新しいソフトウェア製品
          ハードウェアの進化
          他社の事例
          本当に次の手をうつ必要があるのか?NoSQLでやる必要があるのか?
 
結論:NoSQLは必要か? => YES!!
     リレーショナルモデルだけでは全ての要件を満たすのは難しい。
     しっかりとした計画を持ってNoSQLの利用を。

 

 

PostgreSQLからみるSQL (FDWの話)

by 曽根さん

テーマ「RDBの限界を感じたことありませんか?」

 

木構造とかグラフ型はRDBで表現するの辛いよね

ー> 無理にPostgreSQL内でやらないで外部データラッパに任せよう!

 

1. 自己紹介
 (略)
 
2. 外部データラッパとは
FDWとは
     外部データにテーブルと同じようにSQLでアクセスできる     Where, order by, group byとかも使える
     更新や削除もできる
     外部データの対象ー>DB, CSV, Json, webAPI
     メインはPostgre to Postgre 
     MySQL to PostgreSQL もちろんOracle, SQL Server, SQLiteとかも。gitですらできる
 
3. 外部データラッパを使う
     デモ。デモ怖い。動画でとっておくべきか。。。
     0xdbe良い(RDBMS向けのIDEhttps://www.jetbrains.com/dbe/
 
4. 外部データラッパを作る
     Pythonで作る方法がある
          Multicorn 
 
まとめ:
     外部の世界につなげて便利
     当然オーバヘッドある(データ大きかったり通信の遅延はなかなか)
 
 
 
・JSONBはPostgreSQL9.5でいかに改善されたのか?今後の展望は?
藤井さん、澤田さん
 
半構造化データの取扱の話
体調悪くて聞けず。。。((((;゚Д゚))))
 
 
 
・DynamoDBの話
森さん
 
DyanamoDBとは
Table, API, Data Type
 
Dynamo amazon highly ~~ 論文の紹介
完全マネージド型のNoSQLデータベースサービス
はいスケーラブル、低レイテンシー
高可用性、シンプルかつ高機能API
 
〜DyanamoDBの紹介〜
 
 
MySQL JSON, HTTP Plugin for MySQLなど
梶山さん
 
MySQLは今年いろいろな意味で節目の年
 
開発始まって20年
mysqlドメインが登録されて15年
innodb作った会社がoracleに買収 されて10年
sunが買収されて5年
(早くてはっきり聞き取れなかったので、間違ってるかも)
 
MySQL5.6日本語マニュアルがついにできた
 
 
InnoDB, Full Text Search対応。mecab, ngramが使える。
MySQL Labsで先進的な機能や実験的な仕様をいち早く公開している
将来的にはMySQLサーバやMySQL Cluster本体への統合が期待されている。
 
HTTP Plugin for MySQL
     ブラウザやCurlでurlのエンドポイントをmysqlがもつ。
  プラグインのデモ
  URLアクセスでSQLを実行させたりォオー!!(゚д゚屮)屮
  梶山さん「これがSQLインジェクションとか何だったんだ?っていう世界ですね」
 
 
 
 
トランザクション対応NoSQLとしてのMySQL Cluster
杉山さん
 
体調悪くて聞けず、、、

 

・Handlerさんコンニチワ 〜主にInnoDB memcached PluginとNDB memcached Engineの違いについて〜
@yoku0825さん
 
体調悪くて聞けず、、、
 

 

個人的には"データベース実践入門"の著者であり、漢のコンピュータ道のHPでもよくお世話になる奥野さんを拝めて面白かったです。割りと怖そうな人だと勝手に思っていたけど、イメージより優しそうな人だった(っ・ω・)っ

奥野さんの話は、MySQLPostgreSQLとかって話ではなかく、NoSQL流行ってるけど、RDB使う意味って?という疑問に対する模範解答のような発表で、最初は「あれ?」となったんだけど、その後の発表内容も割りとNoSQLをどう取り込んでいくか見たいな内容も多かったので、発表の最初に来た意味を後から感じさせられて、「おおお」となっています。

 

森さんのDynamoDBの話はこのイベントの後に行ったJAWS-UGのイベントでもDynamoDBの論文紹介の発表を聞いたので、DynamoDBとの変な縁を感じた一日になりました。(今使う機会ないけど、、、)

 

MySQLがHTTPのエンドポイント持つのってどういうユースケース想定してるのか結構疑問だった。梶山さんもデモしながら「苦い顔が多いのわかります。」みたいなことを行っていたので、どうなんだろう?

便利なのかもしれないけど、運用とか管理考えるとかなり疑問だった。。。

 

全体を通して体調が悪かったです。。。腹痛的な面でo(`ω´*)o

@yoku0825さんの発表とかtwitterとかslideshareでよく見かけるので、特に聞きたかったんだけど、最悪。

 

 

 

 ー結論ー

健康大事。⊂゚U┬───┬~