================================================================================== MySQL・PostgreSQLユーザーグループ(MyNA・JPUG)合同DB勉強会 in 東京 に参加してきた ================================================================================== :blog_date:`2015/06/28` 金曜日午後半日休みを取り、 `MySQL・PostgreSQLユーザーグループ(MyNA・JPUG)合同DB勉強会 in 東京 `__ が 6/26 にあり、参加してきた。 一応NoSQL回ということになってはいましたが、そこまでNoSQL・NoSQLしていなかった のが印象的だった。最終的には適材適所、それはそうだしそうなんだよねと思うところ。 とても面白い回で、ラストの資料のそれぞれのコンテナごとのInnoDB層までの層を説明し ていた資料がとても面白かった。階層がいくつかあって、それを飛ばせると確かに パフォーマンス出そうだなと。 回の中で軽く話題に出てきていたとおり、MySQLにあるストレージエンジンが、 PostgreSQLのFDWに相当するんだろうなと思った。 当日は会場をおかしいただいた `株式会社DMM.com ラボ`_ 様、会場 ありがとうございました。 主催者および講演者の方々お疲れ様でした。 以下当日の感想 .. contents:: :local: :depth: 1 MyNA 奥野 データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜 ============================================================================= .. raw:: html
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜 from Mikiya Okuno
`漢(オトコ)のコンピュータ道: MySQL・PostgreSQLユーザーグループ(MyNA・JPUG)合同DB勉強会で発表した資料を公開しました。「データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜」 `__ 最近奥野さんが書かれた本の内容も絡めた内容。MySQLとNoSQLでシステムの境界がある 場合に、これらのデータの整合性を保つやり方を「同期」と表現していたのが 面白かった。 それは確かにそうだ。 .. 論理的な表現方法 どんな方法がつかえるか? 設計ではない データの表現法方は、格納方法と似ている。簡潔に出し入れできるといいね。 論理的な意味とはどんな演算ができるか。用意された演算の種類が重要で、演算を適切に利用できれば、簡潔に高速にできる。道具があるのだから、利用しましょう。 RDB グラフ 階層型 オブジェクト ドキュメント 機能が足りない場合、最大公約数をとる。不足部分は相互に利用する。とはいえ、データを同期する必要がある。 最近は RDB+JSON といった製品が出てきたので、これを使おう。 データを扱う上で、不整合のあるデータを利用するのは、業務が進まないのでありえない。 整合性をたもつには、トランザクション、正規化、制約を使うとできる。 NoSQL ではどうか、トランザクション、リレーショナルモデル、制約がない。 データの正しさの保証は、アプリケーションに委ねられる。 この点は NoSQL を使う上で問題。 データモデルは論理的な表現、物理的な表現は実装。データが高速化のためにメモリ上にキャッシュされるなどは、実装。 データモデルと実装の両方を考えないと、速度が出ない。とはいえこの二つは別物なので注意。 スケーラビリティの問題 マシンの能力には限界がある。しかし、 RDBMS のパフォーマンスには青天井で能力が必要になってくる。 解決方法として、分散をする。 とはいえ、分散方法、データモデルが保たれないケース (シャーディング) 、データの同期方法が問題。とても難しい。 ユーザーの増加などで、要求が面倒くさくなる。 道具も絶えず、高速化したり柔軟になったりする。 対応のために、次の一手を持っておく。引き出しが必要。もしくは、次の手を打つ必要がある? ただし、データモデルの垣根を越えるのはとてもも難しい。 NoSQL は用途があるから必要。 RDBMS 以外のもの。RDB は優秀なので、しっかりと計画して利用しよう。 同期って考え方が新しく、面白い。 JPUG 曽根 PostgreSQLから見るNoSQL(FDWの話) ============================================ .. raw:: html
Postgre sqlから見るnosql from Soudai Sone
当日はプロジェクターとの接続がうまくいってなさそうな印象を受けていた。その影響が プレゼンに出てしまって大変そうだった。 とはいえ内容は面白く、PostgreSQLのFDWがCと後Pythonでかけるらしく、面白い。 .. 木構造、グラフを使いたい、 FDW を使う。 外部データの参照更新削除できるようになる。 ODBC をサポートしているので、 SQLite3 も、 git もサポートしている。 NTTデータ 澤田、藤井 JSONBはPostgreSQL9.5でいかに改善されたのか?今後の展望は? =============================================================================== PostgreSQLのJSON/JSONBの歴史と現状についてのプレゼン。 なぜ最初からPostgreSQLで取り扱いしやすいバイナリーなどにして内部で 持ってなかったんだろうなとは思うけど、いろいろあるんだろうなあ。 .. 昔から XML / hstore / FDW / JSON(B) など対応 v9.2 だと非力だったが、徐々に機能拡張してきた。 JSON は TEXT, JSONB は binary, binary 変換していれているので軽く早い 今後、差集合、集合のマージを実装が進むかも。 ADSJ 森 DynamoDBの話(仮) ======================== DynamoDB についての説明。 (記憶違いかもしれないけど) memcached とかで マネージドでより簡単に性能を上げたい場合のだいたいとか。 MySQL 梶山 MySQL JSON, HTTP Plugin for MySQLなど ================================================ MySQL の人の発表。この人のプレゼンうまいと思う、さすがです。 Generated Column は面白い、構文は以下。 .. code-block:: none [ GENERATED ALWAYS ] AS ( ) [ VIRTUAL|STORED ] [ UNIQUE [KEY] ] [ [PRIMARY] KEY ] [ NOT NULL ] [ COMMENT ] `Generated Columns in MySQL 5.7.5 | MySQL Server Blog `__ より けど、たぶん検索条件にしたいとき Virtual だとフルスキャン?が走って 遅いんだろうなあって考えてた。 検索対象にしたいなら、 STORED にしてインデックスをかけよう。 .. MySQL JSON, HTTP Plugin for MySQLなど NoSQL 機能 lab で開発 グループレプリケーション JSON は参照に振った感じで、 PostgreSQL の JSONB と似た感じ。 jsn_ 接頭辞 生成列面白いよね。参照するとき遅い。 Generated Column SELECT 遅い? MySQL 杉山 トランザクション対応NoSQLとしてのMySQL Cluster ========================================================= .. raw:: html NDB って InnnoDB と別物で、 SQL 以外のアクセスが元々の意図だったんだなと。 NDB のトランザクションについて `3.5.1 Differences Between the NDB and InnoDB Storage Engines `__ をみると MVCC No なので、どうなるのかなとは思う。 @yoku0825さん Handlerさんコンニチワ 〜主にInnoDB memcached PluginとNDB memcached Engineの違いについて〜 ======================================================================================================= ストレージエンジンの処理レイヤーが図で示されていてとてもわかりやすかった。 使いませんが、 HANDLER 構文があるのも初めて知った、おもしろい。 .. include:: links.rst