SlideShare a Scribd company logo
Extending PostgreSQL
                           株式会社メトロシステムズ
                                    花田茂



                           PgDay 2012 Japan
                                                    2012-11-30




Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved   1
自己紹介



  氏名      :花田 茂
  所属      :株式会社メトロシステムズ
  メール :shigeru.hanada@gmail.com
  twitter :@s87
  ブログ :http://d.hatena.ne.jp/s87/
  経歴      :
   最初はOracleエンジニア
   PostgreSQLの性能検証や周辺ツールの開発
   PostgreSQL本体開発(外部テーブルサポートなど)
   pgCon2012開発者会議@Ottawa参加

                                                                       2
       Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
PostgreSQLの拡張性

                       PostgreSQLには、いくつかの
                        機能拡張の仕組みがあります
  PostgreSQLに備わった機能拡張の仕組み
                             概要                          PostgreSQLに含まれる同種のもの

    関数        SQLから呼び出す関数を追加                           pg_sleep()、dblink_query()など

    集約        集約関数を追加                                 max()、sum()、count()など

   演算子        データ型に応じた演算子を追加                          幾何演算など

  データ型        業務データを表現するデータ型を追加                        ISBN、IPアドレス、幾何図形、XMLなど

 インデックス       データ特性に適したインデックスを追加                       B-Tree、GIN、GiSTなど

  手続き言語       関数を実装する新しい言語を追加                          PL/Perl、PL/pgSQLなど

  フック関数       PostgreSQL内部に独自処理を追加/置換                 auto_explainなど

 外部データラッパ   外部データを通常の表と同様に検索                        file_fdwなど




                                                                                     3
               Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
関数/集約

  特徴
  SQL文で事前に定義した処理を利用可能
  C言語、SQL、PL/pgSQLをサポート(Tcl、Python、Perlも可)

  CREATE FUNCTION文でカタログに登録
  配列を含むSQLデータ型が利用可能で、戻り値は複数列/複数行も可
  ユーザ定義の集約関数も追加可能
  トランザクション制御(COMMIT/ROLLBACK)はできない

 使用例 •Orafce
         •Oracleの標準関数をPostgreSQLに移植したもの
         •PGXNで配布(http://pgxn.org/dist/orafce/)
     •json_accessors
         •JSON型(9.2〜)へのアクセスを容易にする関数群
         •PGXNで配布(http://pgxn.org/dist/json_accessors/ )


                                                                            4
            Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
演算子

  特徴
  SQL文で使える演算子を追加可能
  内部的には関数のシンタックスシュガー

  事前に定義した関数をCREATE OPERATOR文で演算子に割り当てる
  非演算データ型でのオーバーロードも可能
  COMUTATOR、NAGATORなどの最適化オプション指定が可能



 使用例 •parray_gin
         •文字列配列の部分一致検索をサポートする演算子を提供
         •PGXNで配布(http://pgxn.org/dist/parray_gin/ )




                                                                           5
           Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
データ型

  特徴
  ビジネスオブジェトを表すデータ型を追加可能
  新しいデータ型を処理する関数群を事前に定義

  CREATE TYPE文でカタログに登録
  データ型に応じた演算子を定義するとより便利に




 使用例 •ksj
           •直接演算可能な漢数字型(例: 五百拾六+二百参=七百拾九)
           •githubで公開(https://github.com/nuko-yokohama/ksj)
       •PostGIS
           •地理情報の処理に適したデータ型
           •プロジェクトサイトで配布(http://postgis.refractions.net )


                                                                            6
            Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
インデックス

  特徴
  B-TreeやGIN、GiSTとは別にインデックスを追加可能
  インデックス用の関数や演算子クラスを定義した後、pg_amに行を追加

  CREATE INDEX文のUSING句に新しいインデックスを指定
  PostgreSQLのインデックス機構の把握が必要でハードルは高め




 使用例 •textsearch_ja
         •sennaやgroongaをエンジンに使った日本語全文検索機能
         •pgFoundryで配布(http://textsearch-
         ja.projects.pgfoundry.org/ )




                                                                         7
         Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
手続き言語

  特徴
  PL/pgSQLやPL/Perlのような手続き言語を追加可能
  処理に向いた言語で関数を実装できるようになる

  ハンドラ関数を定義してからCREATE LANGUAGE文でカタログに登録
  言語処理系の理解が必要でハードルは高め




 使用例 •PL/v8
         •JavaScriptで関数を記述できる
         •Google Codeで配布(http://code.google.com/p/plv8js/)
     •PL/R
         •Rの処理をPostgreSQLから実行できる
         •個人サイトで配布(http://joeconway.com/plr/ )


                                                                            8
            Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
フック関数

  特徴
  PostgreSQLの内部処理に直接手を入れることが可能(特定箇所のみ)
  C言語で関数を記述し、共有オブジェクトのロード時に登録

  プランナやエグゼキュータの処理をカスタマイズできる
  PostgreSQLの内部処理の理解が必要でハードルはかなり高め




 使用例 •pg_statsinfo
        •SQLコマンドの実行に割り込み性能情報を自動的に取得
        •pgFoundryで配布
        (http://pgstatsinfo.projects.pgfoundry.org/ )




                                                                           9
           Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
外部データラッパ

  特徴
  外部データをSELECT文で参照可能
  C言語でハンドラ関数やオプション検証関数を記述

  基本的には列ごとの文字列データが取得できれば対応可能
  WHERE句の条件をリモートに渡すことも可能

  リモートへの書き込みやトランザクションマッピングは未サポート


 使用例 •mongo_fdw
        •Mongo DBの内容をPostgreSQLへのSELECT文で取得可能
        •PGXNで配布(http://pgxn.org/dist/mongo_fdw/ )
     •pgsql_fdw
        •外部のPostgreSQLの内容をSELECT文で取得可能
        •SourceForgeで配布
        (http://interdbconnect.sourceforge.net/)

                                                                          10
          Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
エクステンション


 関数やその他のオブジェクトがバラバラにあると
                管理しづらいので…




                                                                      11
      Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
エクステンション


 関数やその他のオブジェクトがバラバラにあると
                管理しづらいので…
    EXTENSIONでパッケージ化しましょう




                                                                      12
      Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
エクステンション


 関数やその他のオブジェクトがバラバラにあると
                管理しづらいので…
    EXTENSIONでパッケージ化しましょう

 EXTENSIONとは?
   • 複数のオブジェクトを統合して管理
   • アンインストール用のSQLスクリプトは不要
   • pg_dumpによる移行やアップグレードもサポート
   • contribモジュールはほとんどがEXTENSION化済み




                                                                      13
      Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
既存の拡張モジュールは…


 いくつかのサイトで公開/配布されています

                       PostgreSQL公式(?)の外部プロジェクトホ
   pgFoundry           スティングサイト
                       http://pgfoundry.org/

  SourceForge/         一般的なプロジェクトホスティングサイト
     github/           http://sourceforge.org/、http://github.com/
  Google Code          http://code.google.com/intl/ja-JP/


                       EXTENSIONを配布するサイトで、拡張機能を
     PGXN              CPANライクなコマンドでインストール可能
                       http://pgxn.org/


                                                                         14
         Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
NOT FOUND?


        それでも欲しい機能がなければ…




                                                                         15
         Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
NOT FOUND?


        それでも欲しい機能がなければ…
         コミュニティに提案してみる!




                                                                         16
         Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
NOT FOUND?


        それでも欲しい機能がなければ…
         コミュニティに提案してみる!

  • 欲しい機能をMLや掲示板に書いてみる
     �誰かエスカレーションしてくれるかも
  • 本家(英語)のMLやIRCで相談
     �興味を引けば話は早いかも
  • パッチを書いて提案する(最終手段)
     �同じ問題で困っている人がいるかも



                                                                         17
         Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
おわり




      ご清聴ありがとうございました。


                  質問などがあれば
                              @s87
                までお気軽にどうぞ


                                                                      18
      Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved

More Related Content

What's hot

pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
NTT DATA OSS Professional Services
 
ET2016 組込みシステムに適した コンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適した コンポーネントシステムTECSの最新状況
Takuya Azumi
 
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
Takuya Azumi
 
Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介
Daichi Egawa
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
Takuya Azumi
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
 
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@KyotoPostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
Shigeru Hanada
 
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Takuya Azumi
 
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
Takuya Azumi
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
 
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
Ryota Watabe
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
TOPPERS TECS WG 2016
TOPPERS TECS WG 2016TOPPERS TECS WG 2016
TOPPERS TECS WG 2016
Hiroshi Oyama
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
Toshi Harada
 

What's hot (16)

pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 
ET2016 組込みシステムに適した コンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適した コンポーネントシステムTECSの最新状況
 
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
 
Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
 
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@KyotoPostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
 
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
 
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
TOPPERS TECS WG 2016
TOPPERS TECS WG 2016TOPPERS TECS WG 2016
TOPPERS TECS WG 2016
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
 

Viewers also liked

PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
Shigeru Hanada
 
OSS-DB Goldへの第一歩~実践!運用管理~
OSS-DB Goldへの第一歩~実践!運用管理~OSS-DB Goldへの第一歩~実践!運用管理~
OSS-DB Goldへの第一歩~実践!運用管理~
Shigeru Hanada
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
Shigeru Hanada
 
Foreign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsForeign Data Wrapper Enhancements
Foreign Data Wrapper Enhancements
Shigeru Hanada
 
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
Shigeru Hanada
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 

Viewers also liked (6)

PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
PostgreSQL開発ことはじめ - 第27回しくみ+アプリケーション勉強会
 
OSS-DB Goldへの第一歩~実践!運用管理~
OSS-DB Goldへの第一歩~実践!運用管理~OSS-DB Goldへの第一歩~実践!運用管理~
OSS-DB Goldへの第一歩~実践!運用管理~
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
 
Foreign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsForeign Data Wrapper Enhancements
Foreign Data Wrapper Enhancements
 
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
PostgreSQL 9.2 新機能 - 新潟オープンソースセミナー2012
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 

Similar to Extending PostgreSQL - PgDay 2012 Japan

20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
Tomoyuki Obi
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
Shinichi Matsuda
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
Insight Technology, Inc.
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦Insight Technology, Inc.
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報dstn
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
Insight Technology, Inc.
 
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi ShinodaInsight Technology, Inc.
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
Microsoft
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
 
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2skudoh
 
1st step LogicFlow
1st step LogicFlow1st step LogicFlow
1st step LogicFlow
Tomoyuki Obi
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Daiyu Hatakeyama
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Shingo Kitayama
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
Tomoyuki Obi
 

Similar to Extending PostgreSQL - PgDay 2012 Japan (20)

20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
 
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
[B22] PostgresPlus Advanced Server の Oracle Database 互換機能検証 by Noriyoshi Shinoda
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2
 
1st step LogicFlow
1st step LogicFlow1st step LogicFlow
1st step LogicFlow
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
 

Recently uploaded

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (8)

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

Extending PostgreSQL - PgDay 2012 Japan

  • 1. Extending PostgreSQL 株式会社メトロシステムズ 花田茂 PgDay 2012 Japan 2012-11-30 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved 1
  • 2. 自己紹介 氏名 :花田 茂 所属 :株式会社メトロシステムズ メール :shigeru.hanada@gmail.com twitter :@s87 ブログ :http://d.hatena.ne.jp/s87/ 経歴 : 最初はOracleエンジニア PostgreSQLの性能検証や周辺ツールの開発 PostgreSQL本体開発(外部テーブルサポートなど) pgCon2012開発者会議@Ottawa参加 2 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 3. PostgreSQLの拡張性 PostgreSQLには、いくつかの 機能拡張の仕組みがあります PostgreSQLに備わった機能拡張の仕組み 概要 PostgreSQLに含まれる同種のもの 関数 SQLから呼び出す関数を追加 pg_sleep()、dblink_query()など 集約 集約関数を追加 max()、sum()、count()など 演算子 データ型に応じた演算子を追加 幾何演算など データ型 業務データを表現するデータ型を追加 ISBN、IPアドレス、幾何図形、XMLなど インデックス データ特性に適したインデックスを追加 B-Tree、GIN、GiSTなど 手続き言語 関数を実装する新しい言語を追加 PL/Perl、PL/pgSQLなど フック関数 PostgreSQL内部に独自処理を追加/置換 auto_explainなど 外部データラッパ 外部データを通常の表と同様に検索 file_fdwなど 3 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 4. 関数/集約 特徴 SQL文で事前に定義した処理を利用可能 C言語、SQL、PL/pgSQLをサポート(Tcl、Python、Perlも可) CREATE FUNCTION文でカタログに登録 配列を含むSQLデータ型が利用可能で、戻り値は複数列/複数行も可 ユーザ定義の集約関数も追加可能 トランザクション制御(COMMIT/ROLLBACK)はできない 使用例 •Orafce •Oracleの標準関数をPostgreSQLに移植したもの •PGXNで配布(http://pgxn.org/dist/orafce/) •json_accessors •JSON型(9.2〜)へのアクセスを容易にする関数群 •PGXNで配布(http://pgxn.org/dist/json_accessors/ ) 4 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 5. 演算子 特徴 SQL文で使える演算子を追加可能 内部的には関数のシンタックスシュガー 事前に定義した関数をCREATE OPERATOR文で演算子に割り当てる 非演算データ型でのオーバーロードも可能 COMUTATOR、NAGATORなどの最適化オプション指定が可能 使用例 •parray_gin •文字列配列の部分一致検索をサポートする演算子を提供 •PGXNで配布(http://pgxn.org/dist/parray_gin/ ) 5 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 6. データ型 特徴 ビジネスオブジェトを表すデータ型を追加可能 新しいデータ型を処理する関数群を事前に定義 CREATE TYPE文でカタログに登録 データ型に応じた演算子を定義するとより便利に 使用例 •ksj •直接演算可能な漢数字型(例: 五百拾六+二百参=七百拾九) •githubで公開(https://github.com/nuko-yokohama/ksj) •PostGIS •地理情報の処理に適したデータ型 •プロジェクトサイトで配布(http://postgis.refractions.net ) 6 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 7. インデックス 特徴 B-TreeやGIN、GiSTとは別にインデックスを追加可能 インデックス用の関数や演算子クラスを定義した後、pg_amに行を追加 CREATE INDEX文のUSING句に新しいインデックスを指定 PostgreSQLのインデックス機構の把握が必要でハードルは高め 使用例 •textsearch_ja •sennaやgroongaをエンジンに使った日本語全文検索機能 •pgFoundryで配布(http://textsearch- ja.projects.pgfoundry.org/ ) 7 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 8. 手続き言語 特徴 PL/pgSQLやPL/Perlのような手続き言語を追加可能 処理に向いた言語で関数を実装できるようになる ハンドラ関数を定義してからCREATE LANGUAGE文でカタログに登録 言語処理系の理解が必要でハードルは高め 使用例 •PL/v8 •JavaScriptで関数を記述できる •Google Codeで配布(http://code.google.com/p/plv8js/) •PL/R •Rの処理をPostgreSQLから実行できる •個人サイトで配布(http://joeconway.com/plr/ ) 8 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 9. フック関数 特徴 PostgreSQLの内部処理に直接手を入れることが可能(特定箇所のみ) C言語で関数を記述し、共有オブジェクトのロード時に登録 プランナやエグゼキュータの処理をカスタマイズできる PostgreSQLの内部処理の理解が必要でハードルはかなり高め 使用例 •pg_statsinfo •SQLコマンドの実行に割り込み性能情報を自動的に取得 •pgFoundryで配布 (http://pgstatsinfo.projects.pgfoundry.org/ ) 9 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 10. 外部データラッパ 特徴 外部データをSELECT文で参照可能 C言語でハンドラ関数やオプション検証関数を記述 基本的には列ごとの文字列データが取得できれば対応可能 WHERE句の条件をリモートに渡すことも可能 リモートへの書き込みやトランザクションマッピングは未サポート 使用例 •mongo_fdw •Mongo DBの内容をPostgreSQLへのSELECT文で取得可能 •PGXNで配布(http://pgxn.org/dist/mongo_fdw/ ) •pgsql_fdw •外部のPostgreSQLの内容をSELECT文で取得可能 •SourceForgeで配布 (http://interdbconnect.sourceforge.net/) 10 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 11. エクステンション 関数やその他のオブジェクトがバラバラにあると 管理しづらいので… 11 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 12. エクステンション 関数やその他のオブジェクトがバラバラにあると 管理しづらいので… EXTENSIONでパッケージ化しましょう 12 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 13. エクステンション 関数やその他のオブジェクトがバラバラにあると 管理しづらいので… EXTENSIONでパッケージ化しましょう EXTENSIONとは? • 複数のオブジェクトを統合して管理 • アンインストール用のSQLスクリプトは不要 • pg_dumpによる移行やアップグレードもサポート • contribモジュールはほとんどがEXTENSION化済み 13 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 14. 既存の拡張モジュールは… いくつかのサイトで公開/配布されています PostgreSQL公式(?)の外部プロジェクトホ pgFoundry スティングサイト http://pgfoundry.org/ SourceForge/ 一般的なプロジェクトホスティングサイト github/ http://sourceforge.org/、http://github.com/ Google Code http://code.google.com/intl/ja-JP/ EXTENSIONを配布するサイトで、拡張機能を PGXN CPANライクなコマンドでインストール可能 http://pgxn.org/ 14 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 15. NOT FOUND? それでも欲しい機能がなければ… 15 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 16. NOT FOUND? それでも欲しい機能がなければ… コミュニティに提案してみる! 16 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 17. NOT FOUND? それでも欲しい機能がなければ… コミュニティに提案してみる! • 欲しい機能をMLや掲示板に書いてみる �誰かエスカレーションしてくれるかも • 本家(英語)のMLやIRCで相談 �興味を引けば話は早いかも • パッチを書いて提案する(最終手段) �同じ問題で困っている人がいるかも 17 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved
  • 18. おわり ご清聴ありがとうございました。 質問などがあれば @s87 までお気軽にどうぞ 18 Copyright (C) 2012 Metro Systems Co., Ltd All Rights Reserved