DatalogからSQLへの
トランスレータを書いた話
理論から学ぶデータベース実践入門Night LT
2015.10.8
@tacke_jp
$ whoami
• 武市融紀 ( @tacke_jp )
• 株式会社ノハナ
• 「家族の問題を解決する」がミッションのmixi発社内ベ
ンチャー
• エンジニア
• サーバーサイド/ネイティブアプリからデータ解析までや
る器用貧乏不器用エンジニア
今日話したいこと
• 宣言型クエリ言語Datalogの紹介
• Datalogで記述したクエリをSQLに変換するデモ
Datalogとは?
• 宣言的論理型プログラミング言語
• PrologっぽいSyntaxをもつ 
• 3つの構文を持つ
• ファクト: リレーションを外延的に定義
• ルール: 推論規則 (あるファクトから別のファクトを導く)
• クエリ: ファクトを真にするような変数を見つける
ファクト
father(tara, masuo).
mother(tara, sazae).
• リレーションを定義する構文
• SQLではINSERTに相当
father(sazae, namihei).
mother(sazae, fune).
リレーション名
定数項(先頭が小文字)
ルール
parent(X, Y) :- father(X, Y).
• 推論規則を定義
• SQLにおけるViewに相当
parent(X, Y) :- mother(X, Y).
grandparent(X, Y) :- parent(X, P), parent(P, Y).
ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(X, P), ancestor(P, Y).
宣言部 本体
←複数行ならべると選言(OR)
カンマでつなぐと連言(AND)
リレーションをまたいだ変数はJOINに相当
減少性があれば再帰的定義も可能
クエリ
? :- parent(X, Y).
? :- grandparent(X, Y).
? :- ancestor(tara, Y).
親子関係を列挙せよ
親子関係を列挙せよ
タラちゃんの祖先を列挙せよ
• 右に現れる変数を満たす値
を列挙する
モチベーション
• 複雑なロジックをSQLで記述しようとするとすぐ長くなる
• 「BigQuery (行数)」
• SQLを書いていると毎回同じようなロジックを記述しているよ
うな感じがする
• Viewでもいいけど乱立したら管理が大変そう…
• => リレーショナルDBへのクエリをSQL以外で書きたい!
というわけで
• 書きました!
• https://github.com/yuki-takeichi/datalog-sql
demo
まとめ
• Datalogを使うことで複雑なJOINを行うクエリや再
帰クエリを部品化することができた
• しかも記述が簡素になった
• 変数って便利
• RDBのSQL以外のクエリ言語の可能性を考えてみる
のも面白いかも

More Related Content

PDF
AutoEncoderで特徴抽出
PPTX
Apache Spark チュートリアル
PDF
20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)
PPTX
20080201
PDF
20150520 lt-neo4j勉強会-neofj fdw
PPTX
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
PDF
Pgunconf neo4j fdw
AutoEncoderで特徴抽出
Apache Spark チュートリアル
20021127 ku-librarians勉強会 #38 : Where can I go? : OpenURLによる状況判断型リンク(SFXを中心として)
20080201
20150520 lt-neo4j勉強会-neofj fdw
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
Pgunconf neo4j fdw

What's hot (20)

PPTX
データベース入門
PDF
GMO プライベート DMP で ビッグデータ解析をするために アプリクラウドで Apache Spark の検証をしてみた
PPTX
20071204
PDF
Core Data の概要と NSIncrementalStore
PDF
chapter6
PDF
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
PPTX
20161127 doradora09 japanr2016_lt
PDF
トピックモデルの話
PDF
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
PDF
Learning spaerk chapter03
PPTX
情報の構造化@Linked Open Data連続講座(2014.6.2)
PDF
ナレッジグラフ/LOD利用技術の入門(後編)
PDF
LODを始めるにあたって「最初に試すとよい」ツールの紹介
PDF
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
PPTX
データサイエンティスト必見!M-1グランプリ
PDF
20170312 r言語環境構築&dplyr ハンズオン
PPTX
巨大なサービスと膨大なデータを支えるプラットフォーム

PPTX
ポータル研修 201208 天野_発表用
PPTX
LINQ の概要とかもろもろ
PDF
GeneratingWikipedia_ICLR18_論文紹介
データベース入門
GMO プライベート DMP で ビッグデータ解析をするために アプリクラウドで Apache Spark の検証をしてみた
20071204
Core Data の概要と NSIncrementalStore
chapter6
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
20161127 doradora09 japanr2016_lt
トピックモデルの話
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
Learning spaerk chapter03
情報の構造化@Linked Open Data連続講座(2014.6.2)
ナレッジグラフ/LOD利用技術の入門(後編)
LODを始めるにあたって「最初に試すとよい」ツールの紹介
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
データサイエンティスト必見!M-1グランプリ
20170312 r言語環境構築&dplyr ハンズオン
巨大なサービスと膨大なデータを支えるプラットフォーム

ポータル研修 201208 天野_発表用
LINQ の概要とかもろもろ
GeneratingWikipedia_ICLR18_論文紹介
Ad

Viewers also liked (20)

PPTX
ならば(その弐)
PDF
NULLとの戦い RDBMS実装編
ODP
集合演算を真っ向から否定するアレの話
PPTX
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
PDF
なぜ、いまリレーショナルモデルなのか
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PPTX
Writing Yarn Applications Hadoop Summit 2012
PDF
リレーショナルな正しいデータベース設計
PDF
Database smells
PDF
Cloudera Manager4.0とNameNode-HAセミナー資料
PPTX
Future of HCatalog - Hadoop Summit 2012
PDF
20120830 DBリファクタリング読書会第三回
PDF
【17-E-3】 オンライン機械学習で実現する大規模データ処理
PDF
並列データベースシステムの概念と原理
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
ODP
Data analytics with hadoop hive on multiple data centers
PDF
Lars George HBase Seminar with O'REILLY Oct.12 2012
PDF
あなたの知らないPostgreSQL監視の世界
KEY
Hadoop Summit 2012 - Hadoop and Vertica: The Data Analytics Platform at Twitter
PDF
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
ならば(その弐)
NULLとの戦い RDBMS実装編
集合演算を真っ向から否定するアレの話
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
なぜ、いまリレーショナルモデルなのか
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Writing Yarn Applications Hadoop Summit 2012
リレーショナルな正しいデータベース設計
Database smells
Cloudera Manager4.0とNameNode-HAセミナー資料
Future of HCatalog - Hadoop Summit 2012
20120830 DBリファクタリング読書会第三回
【17-E-3】 オンライン機械学習で実現する大規模データ処理
並列データベースシステムの概念と原理
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Data analytics with hadoop hive on multiple data centers
Lars George HBase Seminar with O'REILLY Oct.12 2012
あなたの知らないPostgreSQL監視の世界
Hadoop Summit 2012 - Hadoop and Vertica: The Data Analytics Platform at Twitter
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
Ad

Datalogからsqlへの トランスレータを書いた話