SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
.
.   HaskellDB

     日比野 啓


     2012-12-16




                  .   .   .   .   .   .
HaskellDB とは




 Join (結合) を行なうような SQL を
 結合式の代数的定義から生成するライブラリ




                   .   .   .   .   .   .
HaskellDB とは




 Join (結合) を行なうような SQL を
 結合式の代数的定義から生成するライブラリ              – ???




                   .   .   .   .     .     .
SQL 結合式


 SELECT
    p . uid ,
    p . user_name ,
    g . group_name
   FROM password as p , group as g
   WHERE p . gid = g . gid




                        .   .   .   .   .   .
HaskellDB の結合式を見てみる

 queryJoin0 = do
   pwd <- table password
   grp <- table group
   restrict
    $ pwd ! P . gid .==. grp ! G . gid
   project (
    P . uid       << pwd ! P . uid     #
    P . userName << pwd ! P . userName #
    G . groupName << grp ! G . groupName )


                           .   .   .   .   .   .
HaskellDB の結合式を見てみる

 queryJoin0 = do
   pwd <- table password
   grp <- table group
   restrict
    $ pwd ! P . gid .==. grp ! G . gid
   project (
    P . uid       << pwd ! P . uid     #
    P . userName << pwd ! P . userName #
    G . groupName << grp ! G . groupName )
 よくわからない     DSL

                           .   .   .   .   .   .
結合式を見てみる


 queryJoin = do
   x <- table xs
   y <- table ys
   restrict $ x ! xa .==. y ! ya
   project ( xa << x ! xa #
             ...
             ya << y ! ya #
             ... )
 何かに似ているような


                       .   .   .   .   .   .
リスト内包表記



 pairs xs       ys =
   [( x , y )   |
      x <-      xs ,
      y <-      ys ]




                       .   .   .   .   .   .
リスト内包表記


 pairs xs ys =
   [( x , y ) |
      x <- xs ,
      y <- ys ,
      getXA x == getYA y ]

 data X = X { getXA :: Int , ... }
 data Y = Y { getYA :: Int , ... }



                        .    .   .   .   .   .
ふたたび HaskellDB

 queryJoin =
   do
      x <- table xs
      y <- table ys
      restrict $ x ! xa .==. grp ! ya
      project ( xa << x ! xa #
                ...
                ya << y ! ya #
                ... )


                        .   .   .   .   .   .
.   .   .   .   .   .

Más contenido relacionado

Similar a HaskellDB

R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装__nakamichi__
 
リストモナドを作ってみた
リストモナドを作ってみたリストモナドを作ってみた
リストモナドを作ってみたAtsushi Kanehara
 
Haskellday rf
Haskellday rfHaskellday rf
Haskellday rfrf0444
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEtsuji Nakai
 
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話Haskell と Elm と JSON の話
Haskell と Elm と JSON の話Nobutada Matsubara
 
ゼロから始めるScala文法 (再)
ゼロから始めるScala文法 (再)ゼロから始めるScala文法 (再)
ゼロから始めるScala文法 (再)Suguru Hamazaki
 
Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Etsuji Nakai
 

Similar a HaskellDB (7)

R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
 
リストモナドを作ってみた
リストモナドを作ってみたリストモナドを作ってみた
リストモナドを作ってみた
 
Haskellday rf
Haskellday rfHaskellday rf
Haskellday rf
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
 
Haskell と Elm と JSON の話
Haskell と Elm と JSON の話Haskell と Elm と JSON の話
Haskell と Elm と JSON の話
 
ゼロから始めるScala文法 (再)
ゼロから始めるScala文法 (再)ゼロから始めるScala文法 (再)
ゼロから始めるScala文法 (再)
 
Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料
 

Último

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 

Último (11)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

HaskellDB

  • 1. . . HaskellDB 日比野 啓 2012-12-16 . . . . . .
  • 2. HaskellDB とは Join (結合) を行なうような SQL を 結合式の代数的定義から生成するライブラリ . . . . . .
  • 3. HaskellDB とは Join (結合) を行なうような SQL を 結合式の代数的定義から生成するライブラリ – ??? . . . . . .
  • 4. SQL 結合式 SELECT p . uid , p . user_name , g . group_name FROM password as p , group as g WHERE p . gid = g . gid . . . . . .
  • 5. HaskellDB の結合式を見てみる queryJoin0 = do pwd <- table password grp <- table group restrict $ pwd ! P . gid .==. grp ! G . gid project ( P . uid << pwd ! P . uid # P . userName << pwd ! P . userName # G . groupName << grp ! G . groupName ) . . . . . .
  • 6. HaskellDB の結合式を見てみる queryJoin0 = do pwd <- table password grp <- table group restrict $ pwd ! P . gid .==. grp ! G . gid project ( P . uid << pwd ! P . uid # P . userName << pwd ! P . userName # G . groupName << grp ! G . groupName ) よくわからない DSL . . . . . .
  • 7. 結合式を見てみる queryJoin = do x <- table xs y <- table ys restrict $ x ! xa .==. y ! ya project ( xa << x ! xa # ... ya << y ! ya # ... ) 何かに似ているような . . . . . .
  • 8. リスト内包表記 pairs xs ys = [( x , y ) | x <- xs , y <- ys ] . . . . . .
  • 9. リスト内包表記 pairs xs ys = [( x , y ) | x <- xs , y <- ys , getXA x == getYA y ] data X = X { getXA :: Int , ... } data Y = Y { getYA :: Int , ... } . . . . . .
  • 10. ふたたび HaskellDB queryJoin = do x <- table xs y <- table ys restrict $ x ! xa .==. grp ! ya project ( xa << x ! xa # ... ya << y ! ya # ... ) . . . . . .
  • 11. . . . . . .