SlideShare a Scribd company logo
DBLT #2 で
LT やってきた話
ぬこ@横浜 (@nuko_yokohama)
2
先日参加した、
Database Lounge
Tokyo #2 の話
Database Lounge Tokyo #2 公式ページ
http://database-lounge-tokyo.connpass.com/event/37649/
ツイートまとめ
http://togetter.com/li/1022509
3
アシストさんの
2F ラウンジ
本当にラウンジ
っぽくて
オサレですね。
4
で、そんなオサレなとこで喋ってきた。
Lighting Talks
1 「差分、増分、デルタ ( って何 ?) バックアップあれやこれや」 by @meijik
2 「 Postgres はグラフデータベースの夢を見るか?」 by @nuko_yokohama
3 「 An intelligent storage? 」 by @kkaigai
4 「ポスグレのバックアップでやらかした話 (˚&˚) 」 by @kkkida_twtr
プログラム
バックアップと障害復旧から考える Oracle Database, MySQL, PostgreSQL の違
い ( 仮 ) @wrcsus4
パネルディスカッション
データベースのバックアップ、リストアについて
@wrcsus4 @yoku0825 @kasa_zip @kumagi
今更ながら、俺以外の
スピーカーが豪華すぎるなw
5
この本に書いて
あるような話はしなかった。
この本
6
PostgreSQL から
グラフデータを
扱ってみよう
詳細はここを見てね
http://www.slideshare.net/toshiharada/do-postgresdreamofgraphdatabase
7
グラフデータベース Neo4j
ノード
関連
https://neo4j.com/
Community Edition と Enterprise Edition があります。
8
PostgreSQL の
更新を
Neo4j へ反映
9
Neo4j Server
Logideco4neo4j
PostgreSQL
Relational Model
Cypher Query
WAL
(wal_level=logical) Logical
Replication
Slot
Execute Cypher Query on REST
Convert Cypher Query
PostgreSQL
WAL to Neo4j
Graph Model
olumn1 column2 column3
・・・ ・・・ ・・・
・・・・ ・・・・ ・・・
Get Replication Slot Data
Decoding Function
Convert JSON
スロット定義
10
ロジカル
デコーディング
11
ロジカルデコーディング
PostgreSQL 9.4 から導入された基盤
WAL を任意形式にデコーディングする基盤
デコーディング方法や、
デコードされた更新情報の反映は
利用者が好きに開発できる。
夢が広がりんぐ機能
12
Decoding Function
ざっくり言うと PostgreSQL の
更新ログ (WAL) を
任意の形式の論理ログに変換する関数。
どういった形式に変換するのかは、
Decoding Function 実装者まかせ。
JSON に変換すると捗りそう・・・
13
Decoding Function
探したら、やっぱりありましたw
「 PostgreSQL の Logical Decoding 機能についての紹介」
http://qiita.com/bwtakacy/items/d8461518a1770524e0d6
まとめを書いたのは
@bwtakacy さん
pg_rman や pg_bulkload の
メンテナやってる人です。
Deconding Function Plug-in wal2json
https://github.com/eulerto/wal2json
名前のとおり WAL を JSON 形式にデコードしてくれる。
せっかくなので、今回はこれを使ってみる。
14
Logideco4neo4j
Logical Decoding 内容から
Neo4j への反映に必要な処理
レプリケーションスロットへの検索
検索結果から Cypher Query を生成
Cypher Query を REST API で Neo4j へ
これを繰り返す
15
デモ
16
PostgreSQL の更新ログを
Neo4j に適用できた。
やったね♪
17
PostgreSQL から
SQL で
Neo4j を検索
18
Foreign
Data Wrapper
19
PostgreSQL の外部にある
データに対して
標準的な SQL クエリで
アクセスするための
夢が広がりんぐ基盤
20
Neo4j のデータを
SQL で検索するための
Foreign Data Wrapper を
開発する。
21
Neo4j Server
Logideco4neo4j
PostgreSQL
Cypher Query
WAL
(wal_level=logical) Logical
Replication
Slot
Execute Cypher Query on REST
Convert Cypher Query
olumn1 column2 column3
・・・ ・・・ ・・・
・・・・ ・・・・ ・・・
Get Replication Slot Data
Decoding Function
Convert JSON
Neo4j Foriegn Data Wrapper
Defined Cypher Query
Execute Cypher Query on REST
Generate PostgreSQL Record
PostgreSQL
Record
JSON
Result
Provide Cypher Result View
SQL
Cypher
Query
スロット定義
22
というか、
以前 Neo4j に
接続する FDW を
作っていた
https://github.com/nuko-yokohama/neo4j_fdw
23
何故か PostgreSQL Wiki に載ってる・・・
メンテナンスをサボっているので、 PostgreSQL 9.5 以降に対応してません・・・
24
neo4j_fdw
外部データラッパを登録
外部サーバと外部テーブルを定義
CREATE EXTENSION neo4j_fdw;
CREATE SERVER foo
FOREIGN DATA WRAPPER neo4j_fdw
OPTIONS (url 'http://localhost:7474/db/data/cypher');
CREATE FOREIGN TABLE persons (
uid text, name text, gender text, age text, company text
)
SERVER foo
OPTIONS (query '{"query":"MATCH (c:company)-[e:employ]->(p:person)
RETURN p.nid, p.name, p.gender, p.age, c.name"}');
あとは persons テーブルに SELECT 文を発行すれば OK!
25
デモ
26
PostgreSQL から
SQL を使って
Neo4j の検索ができた。
やったね♪
27
と、いうことで
28
ロジカルデコーディングと
neo4j_fdw を組み合わせて
PostgreSQL から
グラフデータベース
Neo4j を扱えた!
29
で、何の役に立つのそれ?
30
おしまい

More Related Content

PDF
お前の逐モン、GETだぜ!
PDF
Rでを作る
PDF
Chainer meetup lt
PDF
深層学習ライブラリのプログラミングモデル
PDF
Tech pub LT_4 20170509
PDF
Rubyと機械学習の現状
PPTX
ファイルメーカーを利用したJICA調整員業務支援システム
PDF
メモリアロケーションからみた拡張ライブラリに大切なこと
お前の逐モン、GETだぜ!
Rでを作る
Chainer meetup lt
深層学習ライブラリのプログラミングモデル
Tech pub LT_4 20170509
Rubyと機械学習の現状
ファイルメーカーを利用したJICA調整員業務支援システム
メモリアロケーションからみた拡張ライブラリに大切なこと

Similar to Dblt#2 do-postgres-dream-of-graph-database (6)

PDF
Road to ggplot2再入門
PDF
“これから”のライフサイエンス研究とバイオインフォマティクス (Next Generation Life Science & Bioinformatics)
PDF
あいぽん落としたと聞いたので!
PPTX
DockerでJupyter使おうぜ
PPTX
AIの未来 ~技術と社会の関係のダイナミクス~
PDF
PlaySQLAlchemyORM2017.key
Road to ggplot2再入門
“これから”のライフサイエンス研究とバイオインフォマティクス (Next Generation Life Science & Bioinformatics)
あいぽん落としたと聞いたので!
DockerでJupyter使おうぜ
AIの未来 ~技術と社会の関係のダイナミクス~
PlaySQLAlchemyORM2017.key
Ad

More from Toshi Harada (20)

PDF
無駄にNeo4jを使っている日々
PDF
Pgunconf16 toast
PDF
Pgunconf14 pg13-psql
PDF
20190518 27th-chugoku db-lt-pg12
PDF
20190202-pgunconf-Access-Privilege-Inquiry-Functions
PDF
20190119 aws-study-pg-extension
PDF
20181122 pg con-jp-lt-logrep
PDF
20181110 fok2018-pg-extension
PDF
20171106 ntt-tx-postgre sql-10
PDF
20171103 pg con-jp-lt-plpgsql
PDF
20171028 osc-nagaoka-postgre sql-10
PDF
20170819 ocd-l tthon-pgdev
PDF
Ntt tx-study-postgre sql-10
PDF
Jpug study-postgre sql-10-pub
PDF
Chugoku db 20th-postgresql-10-pub
PDF
Pgconf asia-201612203-pg reversi-ja
PDF
Pgconf asia-201612203-pg reversi
PDF
Kof2016 postgresql-9.6
PDF
Chugoku db 17th-lt-kly
PDF
Chugoku db 17th-postgresql-9.6
無駄にNeo4jを使っている日々
Pgunconf16 toast
Pgunconf14 pg13-psql
20190518 27th-chugoku db-lt-pg12
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190119 aws-study-pg-extension
20181122 pg con-jp-lt-logrep
20181110 fok2018-pg-extension
20171106 ntt-tx-postgre sql-10
20171103 pg con-jp-lt-plpgsql
20171028 osc-nagaoka-postgre sql-10
20170819 ocd-l tthon-pgdev
Ntt tx-study-postgre sql-10
Jpug study-postgre sql-10-pub
Chugoku db 20th-postgresql-10-pub
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi
Kof2016 postgresql-9.6
Chugoku db 17th-lt-kly
Chugoku db 17th-postgresql-9.6
Ad

Dblt#2 do-postgres-dream-of-graph-database