SlideShare a Scribd company logo
1 of 38
Download to read offline
pgpool: Features and
    Development


           Tatsuo Ishii
pgpool Global Development Group
       SRA OSS, Inc. Japan
Agenda
●   Developers
●   History
●   Existing pgpool project
●   Ongoing pgpool-II project
●   Demonstration
Who are we?
 ●   pgpool Global Development Group
     –   Tatsuo Ishii(SRA OSS, Inc. Japan)
     –   Devrim Gunduz(Command Prompt, Inc.)
     –   Yoshiyuki Asaba(SRA OSS, Inc. Japan)
     –   Taiki Yamaguchi(SRA OSS, Inc. Japan)
     –   pgpoo-II development team
          ●   In addition to Tatsuo, Yoshiyuki and Taiki:
               –    Tomoaki Sato, Yoshiharu Mori, Kaori Inaba (all from SRA
                    OSS, Inc. Japan)


2006/07/09 Tronto              Copyright(c) 2006 pgpool DG                    3
Developers!
Tomoaki
Communication                                               Kaori
manager                                                     Project manager
                                                            System DB

 Taiki                                                      Yoshiharu
 PCP                                                        Query rewriting
 Query Cache                                                Parallel execution
 pgpool                                                     engin
 developer



                                                             Yoshiyuki
  Tatsuo                                                     Project leader
  Enhance              Our Boss                              pgpool
  pgpool-I             “Green Turtle”                        developer
  pgpool
  developer

   2006/07/09 Tronto          Copyright(c) 2006 pgpool DG               4
pgpool-I: the history
 ●   V0.1: Started as a personal project
     (2003/6/27)
 ●   V1.0: Synchronous replication (2004/3)
 ●   V2.0: Load balance (2004/6)
 ●   V3.0: pgpool Global Development
     Group(2006/2)



2006/07/09 Tronto        Copyright(c) 2006 pgpool DG   5
Why pgpool?
 ●   No general purpose connection pooling
     software was available
     –   Java has its own, but PHP does not...
 ●   No small to mid scale/light weight
     synchronous replication tool was
     available




2006/07/09 Tronto     Copyright(c) 2006 pgpool DG   6
pgpool process architecture

                         pgpool
                     parent process

                               pre-fork


                       pgpool                         PostgreSQL
                    child process                   backend process




                                    pgpool.conf


2006/07/09 Tronto     Copyright(c) 2006 pgpool DG                     7
pgpool functionality:
                 connection pooling
 ●   Reduce connection overhead
 ●   Limit maximum number of connections to
     the PostgreSQL backend
     –    New incoming connections are queued in
         the kernel if all pgpool processes are busy




2006/07/09 Tronto     Copyright(c) 2006 pgpool DG      8
How does connection pooling
             work?(1)
                                    pgpool

                                                              PostgreSQL
                    user1/db1


                                   user1/db1
                                                              PostgreSQL
                    user1/db1


                                   user1/db1
                                                              PostgreSQL



                                   user1/db1
                    user1/db1                                 PostgreSQL




2006/07/09 Tronto               Copyright(c) 2006 pgpool DG                9
How does connection pooling
             work?(2)
                                    pgpool
                                   user1/db1
                                                              PostgreSQL
                    user2/db2      user2/db2



                                                              PostgreSQL
                    user3/db3      user2/db2



                                   user3/db3
                                                              PostgreSQL
                    user3/db3      user2/db2




2006/07/09 Tronto               Copyright(c) 2006 pgpool DG                10
pgpool understands
        frontend/backend protocol
 ●   Pgpool is transparent to both applications
     and PostgreSQL
 ●   Virtually no modifications to applications
     are needed
 ●   No special APIs are needed
 ●   Can be used with existing language APIs
 ●   Can be more efficient than libpq because
     of smaller controlling granuality

2006/07/09 Tronto   Copyright(c) 2006 pgpool DG   11
Limitations of current
                  implementation
 ●   resetting pooled connection may not be
     perfect(need modification to applications)
     –   temp tables
     –   need help from PostgreSQL
 ●   SSL is not supported
     –   fall back to non SSL mode
 ●   no pg_hba.conf like IP based
     authentication

2006/07/09 Tronto      Copyright(c) 2006 pgpool DG   12
pgpool functionality: replication
 ●   Queries are duplicated and sent to
     PostgreSQL servers


                                                  PostgreSQL
                                       query

                        pgpool

                                       query
                                                  PostgreSQL




2006/07/09 Tronto   Copyright(c) 2006 pgpool DG                13
Dead lock problem
                    master                                       secondary
            session 1     session 2                      session 1     session 2
t
              lock
                        wait
                               lock

                                                                              lock
                                                                       wait
                                                                lock




    2006/07/09 Tronto             Copyright(c) 2006 pgpool DG                        14
“Strict” mode in replication
       to avoid deadlock problem
                     Query                        Query        PostgreSQL
                                 pgpool           packet
                                                               PostgreSQL

                                                  Wait until   PostgreSQL
                                 pgpool           something
                                                  returns      PostgreSQL

                                                               PostgreSQL
                                 pgpool           Query
                                                               PostgreSQL


                    reply back                                 PostgreSQL
                                 pgpool           Wait until
                    the result                    something    PostgreSQL
                                                  returns
2006/07/09 Tronto                Copyright(c) 2006 pgpool DG                15
pgpool functionality: load
                 balanace
 ●   SELECT queries are sent to randomly
     chosen backend
 ●   The ratio for load balancing can be
     changed

                                                  PostgreSQL

                        pgpool

                                                  PostgreSQL


2006/07/09 Tronto   Copyright(c) 2006 pgpool DG                16
Limitations of current
     implementation in replication
 ●   CURRENT_TIMESTAMP and server- dependent-
     value-returning-functions cannot be replicated
 ●   MD5 and crypt authentication are not supported
 ●   Sequences and SERIAL needs table locking if
     there are more than 1 connections
 ●   Functions having side effects cannot be load
     balanced




2006/07/09 Tronto   Copyright(c) 2006 pgpool DG       17
pgpool-II project
 ●   Information-Technology Promotion
     Agency, Japan (IPA: http://www.ipa.go.jp)
     granted project
 ●   Started in February 2006, expected to
     release the first version in September
     2006 under BSD license
 ●   Features including parallel query and
     enhancement to pgpool
 ●   Successor to pgpool

2006/07/09 Tronto      Copyright(c) 2006 pgpool DG   18
Goal of pgpool-II project
 ●   Implement parallel query processing
 ●   Enhance pgpool
     –   Allow to have more than 2 DB nodes
     –   More precise control using shared memory
     –   Easy to manage
          ●   Control port/protocol
          ●   Detailed statistics on node status
          ●   GUI management tool


2006/07/09 Tronto         Copyright(c) 2006 pgpool DG   19
pgpool-II architecture overview

            Client
                                                                SQL         Query
                                                               Parser       Cache

                     Communication
pgpoolAdmin                                                 Query          pgpool
                       Manager
                                                           Rewriting       Catalog


                         shared        Replication/load    Parallel
PCP command
                        memory            balance         execution       PostgreSQL
  PCP lib               manager            engine          engine



                     pgpool-II                                            System DB

                                             PostgreSQL
                                                                DB node
 2006/07/09 Tronto               Copyright(c) 2006 pgpool DG                         20
pgpool-I and pgpool-II mode

                 replication
                                                                parallel query
                 load balance
                 fail over
                 virtually compatible with pgpool

                    pgpoo-I                                       pgpoo-II
                     mode                                          mode




          1000                1000                       1000                3000
          2000                2000                       2000                4000
          3000                3000
          4000                4000




2006/07/09 Tronto               Copyright(c) 2006 pgpool DG                         21
Table partitioning control
CREATE TABLE dist_def (
   dbname TEXT,        -- database name
   schema_name TEXT, --schema name
   table_name TEXT, -- table name
   col_name TEXT, -- key col name
   col_list TEXT[], -- col names
   type_list TEXT[], -- col types
   dist_def_func TEXT, -- function name
   PRIMARY KEY (dbname, schema_name, table_name)
);

INSERT INTO dist_def VALUES ('y-mori','public','accounts','aid',
ARRAY['aid','bid','abalance','filler'],
ARRAY['integer','integer','integer','character(84)'],'dist_def_accounts'
);

CREATE OR REPLACE FUNCTION dist_def_accounts (val ANYELEMENT)
RETURNS INTEGER AS '
 SELECT CASE WHEN $1 >= 0 and $1 < 100001 THEN 0
      WHEN $1 >= 100001 and $1 < 200001 THEN 1
      WHEN $1 >= 200001 and $1 < 300000 THEN 2
 END' LANGUAGE SQL;
 2006/07/09 Tronto       Copyright(c) 2006 pgpool DG                       22
Simple parallel query
                                               SELECT * FROM accounts
                                                WHERE aid = 1000;
SELECT * FROM accounts
 WHERE aid = 1000;                                     PostgreSQL

                         pgpool

                                                       PostgreSQL

                                                SELECT * FROM accounts
                                                 WHERE aid = 1000;




2006/07/09 Tronto        Copyright(c) 2006 pgpool DG                     23
Complex query example
SELECT * FROM accounts                    SELECT * dblink('con',
WHERE aid = 1000                          'SELECT pool_parallel('SELECT * FROM accounts
ORDER BY aid;                              WHERE aid = 1000')') AS foo(...)
                                          ORDER BY aid;

                          pgpool
                                                          System DB
                                                          PostgreSQL

                          pgpool          SELECT pool_parallel('SELECT * FROM accounts
                                          WHERE aid = 1000')')




                                             SELECT * FROM accounts
                         PostgreSQL          WHERE aid = 1000;




  2006/07/09 Tronto         Copyright(c) 2006 pgpool DG                               24
DML
 ●   INSERT recognize partition key value in a
     query and INSERT into appropreate DB
     node
 ●   UPDATE/DELETE simply issues the same
     query to all DB nodes




2006/07/09 Tronto   Copyright(c) 2006 pgpool DG   25
INSERT
                                             call                Syetm DB
     INSERT INTO accounts(aid, bid)                                 SELECT
          VALUES(500,100);                return            dist_def_accounts(500);
                                          DB node = 1


                             INSERT




             DB node 0            DB node 1                DB node 2


            aid = 0-499        aid = 500-999           aid = 1000-1499


2006/07/09 Tronto            Copyright(c) 2006 pgpool DG                              26
Query Cache
 ●   Caches query result
 ●   Caches can be validated by pgpoolAdmin

      CREATE TABLE pgpool_catalog.query_cache (
      hash TEXT,           -- query string(MD5 hashed)
      query TEXT,              -- query string
      value bytea,             -- query result(RowDescription and
                                   DataRow packets)
      dbname TEXT,             -- database name
      create_time TIMESTAMP WITH TIME ZONE, -- cache creation time
      PRIMARY KEY(hash)
      );




2006/07/09 Tronto         Copyright(c) 2006 pgpool DG                27
Using parallel query and
             replication together

                                  pgpool-II
                             with parallel query
                                                                  Parallel query
                                                                  layer



                  pgpool-II                       pgpool-II
               with replication                with replication
                                                                            Replication
                                                                            and load
                                                                            balance
                                                                            layer

        PostgreSQL         PostgreSQL     PostgreSQL         PostgreSQL




2006/07/09 Tronto              Copyright(c) 2006 pgpool DG                         28
pgpoolAdmin
 ●   Web based pgpool
     management tool
 ●   Apache/PHP/Smarty
 ●   functions
     –   Stopping pgpool
     –   Switch over
     –   Monitoring connection pool status
     –   Monitoring process status
     –   Editing configuration file
     –   Query Cache management



2006/07/09 Tronto                Copyright(c) 2006 pgpool DG   29
Benchmarks
 ●   Hitachi Blade Symphony BS1000
     –   10 blades
     –   Xeon 3.0GHz x 1
     –   1GB Mem
     –   UL320 SCSI Disks
 ●   Cent OS 4.3
 ●   PostgreSQL 8.1.4/pgbench
 ●   Please note that these results are measured on
     pre-alpha version of pgpool-II and maybe slightly
     different from the future official release version
2006/07/09 Tronto     Copyright(c) 2006 pgpool DG         30
Sequencial Scan case(mid size)
                                                        ●   scale factor = 90
                PostgreSQL   pgpool-II

      1.3                                                   (90M rows)
      1.2
      1.1                                               ●   SELECT * FROM
       1
      0.9                                                   accounts WHERE
      0.8
      0.7
                                                            aid = :aid
TPS




      0.6
      0.5                                               ●   pgpool-II is 7 times
      0.4
      0.3                                                   faster at the best
      0.2
      0.1
                                                            (32 concurrent
       0
            1     2      4      8        16    32
                                                            users)
                  concurrent users

2006/07/09 Tronto                        Copyright(c) 2006 pgpool DG            31
Index Scan case(mid size)
                                                             ●   scale factor = 90
                 PostgreSQL       pgpool-II

      3750                                                       (90M rows)
      3500
      3250
      3000
                                                             ●   SELECT * FROM
      2750
      2500
                                                                 accounts WHERE
      2250
      2000
                                                                 aid = :aid
TPS




      1750
      1500
      1250
                                                             ●   pgpool-II is 9 times
      1000
       750
                                                                 faster at the best
       500
       250
                                                                 (16 concurrent
         0
             1      2         4       8        16    32
                                                                 users)
                   concurrent users

2006/07/09 Tronto                             Copyright(c) 2006 pgpool DG            32
Index Scan case(large size)
                                                             ●   scale factor = 900
                 PostgreSQL       pgpool-II

      1300                                                       (900M rows)
      1200
      1100                                                   ●   SELECT * FROM
      1000
       900                                                       accounts WHERE
       800
       700
                                                                 aid = :aid
TPS




       600
       500                                                   ●   pgpool-II is 18
       400
       300                                                       times faster at the
       200
       100
                                                                 best (32
        0
             1      2         4       8        16    32
                                                                 concurrent users)
                   concurrent users

2006/07/09 Tronto                             Copyright(c) 2006 pgpool DG             33
complex query case
                                                       ●   scale factor = 900
               PostgreSQL   pgpool-II

      45
                                                           (900M rows)
      40                                               ●   SELECT a1.abalance
      35
                                                           FROM accounts as a1
      30
                                                           ,accounts as a2
      25
                                                           WHERE a1.aid = :aid1
TPS




      20
                                                           and a2.aid = :aid2
      15

      10                                               ●   pgpool-II is faster
       5                                                   only when at 8
       0
           1          2          4            8            concurrent users
                concurrent users

2006/07/09 Tronto                       Copyright(c) 2006 pgpool DG              34
pgpool-II restrictions
 ●   SQL restrictions
     –   COPY is not supported
     –   SELECT INTO, INSERT INTO ... SELECT is not supported
     –   Extended protocol is not supported
     –   INSERT requires explicit values if target column is the key for data
         patitioning
     –   UPDATE with WHERE clause including function call is not supported
     –   CREATE TABLE/ALTER TABLE requires pgpool restarting
 ●   Transactions
     –   If a DB node fails during INSERT/UPDATE/DELETE, data consistency will
         be broken
     –   SQL commands via dblink will be executed as separate transactions

2006/07/09 Tronto            Copyright(c) 2006 pgpool DG                        35
Future plans(TODO)
 ●   More intelligent query rewriting
 ●   Remove SQL restrictions
 ●   Employ two phase commit to keep consistency
     among DB nodes. However this technique can
     be used only for queries outside transaction
     block since PREPARE TRANSACTION closes
     current transaction block
 ●   More intelligent cache validation



2006/07/09 Tronto       Copyright(c) 2006 pgpool DG   36
References
 ●   pgpool page
     –   http://pgpool.projects.postgresql.org/
●   pgpool-II page
     –   English page
          ●   http://pgpool.projects.postgresql.org/pgpool-II/en/
     –   Japanese page
          ●   http://pgpool.projects.postgresql.org/pgpool-II/ja/




2006/07/09 Tronto            Copyright(c) 2006 pgpool DG            37
Thank you!




2006/07/09 Tronto   Copyright(c) 2006 pgpool DG   38

More Related Content

What's hot

PostgreSQL Enterprise Class Features and Capabilities
PostgreSQL Enterprise Class Features and CapabilitiesPostgreSQL Enterprise Class Features and Capabilities
PostgreSQL Enterprise Class Features and CapabilitiesPGConf APAC
 
Extensions on PostgreSQL
Extensions on PostgreSQLExtensions on PostgreSQL
Extensions on PostgreSQLAlpaca
 
Streaming huge databases using logical decoding
Streaming huge databases using logical decodingStreaming huge databases using logical decoding
Streaming huge databases using logical decodingAlexander Shulgin
 
Lessons PostgreSQL learned from commercial databases, and didn’t
Lessons PostgreSQL learned from commercial databases, and didn’tLessons PostgreSQL learned from commercial databases, and didn’t
Lessons PostgreSQL learned from commercial databases, and didn’tPGConf APAC
 
Logical Replication in PostgreSQL - FLOSSUK 2016
Logical Replication in PostgreSQL - FLOSSUK 2016Logical Replication in PostgreSQL - FLOSSUK 2016
Logical Replication in PostgreSQL - FLOSSUK 2016Petr Jelinek
 
High availability for puppet - 2016
High availability for puppet - 2016High availability for puppet - 2016
High availability for puppet - 2016Zack Smith
 
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)Masao Fujii
 
PostgreSQL for Oracle Developers and DBA's
PostgreSQL for Oracle Developers and DBA'sPostgreSQL for Oracle Developers and DBA's
PostgreSQL for Oracle Developers and DBA'sGerger
 
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companionPGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companionPGConf APAC
 
Logical replication with pglogical
Logical replication with pglogicalLogical replication with pglogical
Logical replication with pglogicalUmair Shahid
 
High performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbHigh performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbWei Shan Ang
 
Postgresql database administration volume 1
Postgresql database administration volume 1Postgresql database administration volume 1
Postgresql database administration volume 1Federico Campoli
 
PGConf.ASIA 2019 Bali - Setup a High-Availability and Load Balancing PostgreS...
PGConf.ASIA 2019 Bali - Setup a High-Availability and Load Balancing PostgreS...PGConf.ASIA 2019 Bali - Setup a High-Availability and Load Balancing PostgreS...
PGConf.ASIA 2019 Bali - Setup a High-Availability and Load Balancing PostgreS...Equnix Business Solutions
 
Adding replication protocol support for psycopg2
Adding replication protocol support for psycopg2Adding replication protocol support for psycopg2
Adding replication protocol support for psycopg2Alexander Shulgin
 
PGConf.ASIA 2019 Bali - Performance Analysis at Full Power - Julien Rouhaud
PGConf.ASIA 2019 Bali - Performance Analysis at Full Power - Julien RouhaudPGConf.ASIA 2019 Bali - Performance Analysis at Full Power - Julien Rouhaud
PGConf.ASIA 2019 Bali - Performance Analysis at Full Power - Julien RouhaudEqunix Business Solutions
 
Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...
Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...
Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...PostgreSQL-Consulting
 
Elephants in the Cloud
Elephants in the CloudElephants in the Cloud
Elephants in the CloudMike Fowler
 
Postgres-XC: Symmetric PostgreSQL Cluster
Postgres-XC: Symmetric PostgreSQL ClusterPostgres-XC: Symmetric PostgreSQL Cluster
Postgres-XC: Symmetric PostgreSQL ClusterPavan Deolasee
 
Massively Scaled High Performance Web Services with PHP
Massively Scaled High Performance Web Services with PHPMassively Scaled High Performance Web Services with PHP
Massively Scaled High Performance Web Services with PHPDemin Yin
 
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)Red Hat Developers
 

What's hot (20)

PostgreSQL Enterprise Class Features and Capabilities
PostgreSQL Enterprise Class Features and CapabilitiesPostgreSQL Enterprise Class Features and Capabilities
PostgreSQL Enterprise Class Features and Capabilities
 
Extensions on PostgreSQL
Extensions on PostgreSQLExtensions on PostgreSQL
Extensions on PostgreSQL
 
Streaming huge databases using logical decoding
Streaming huge databases using logical decodingStreaming huge databases using logical decoding
Streaming huge databases using logical decoding
 
Lessons PostgreSQL learned from commercial databases, and didn’t
Lessons PostgreSQL learned from commercial databases, and didn’tLessons PostgreSQL learned from commercial databases, and didn’t
Lessons PostgreSQL learned from commercial databases, and didn’t
 
Logical Replication in PostgreSQL - FLOSSUK 2016
Logical Replication in PostgreSQL - FLOSSUK 2016Logical Replication in PostgreSQL - FLOSSUK 2016
Logical Replication in PostgreSQL - FLOSSUK 2016
 
High availability for puppet - 2016
High availability for puppet - 2016High availability for puppet - 2016
High availability for puppet - 2016
 
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
Streaming Replication (Keynote @ PostgreSQL Conference 2009 Japan)
 
PostgreSQL for Oracle Developers and DBA's
PostgreSQL for Oracle Developers and DBA'sPostgreSQL for Oracle Developers and DBA's
PostgreSQL for Oracle Developers and DBA's
 
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companionPGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
 
Logical replication with pglogical
Logical replication with pglogicalLogical replication with pglogical
Logical replication with pglogical
 
High performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbHigh performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodb
 
Postgresql database administration volume 1
Postgresql database administration volume 1Postgresql database administration volume 1
Postgresql database administration volume 1
 
PGConf.ASIA 2019 Bali - Setup a High-Availability and Load Balancing PostgreS...
PGConf.ASIA 2019 Bali - Setup a High-Availability and Load Balancing PostgreS...PGConf.ASIA 2019 Bali - Setup a High-Availability and Load Balancing PostgreS...
PGConf.ASIA 2019 Bali - Setup a High-Availability and Load Balancing PostgreS...
 
Adding replication protocol support for psycopg2
Adding replication protocol support for psycopg2Adding replication protocol support for psycopg2
Adding replication protocol support for psycopg2
 
PGConf.ASIA 2019 Bali - Performance Analysis at Full Power - Julien Rouhaud
PGConf.ASIA 2019 Bali - Performance Analysis at Full Power - Julien RouhaudPGConf.ASIA 2019 Bali - Performance Analysis at Full Power - Julien Rouhaud
PGConf.ASIA 2019 Bali - Performance Analysis at Full Power - Julien Rouhaud
 
Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...
Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...
Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...
 
Elephants in the Cloud
Elephants in the CloudElephants in the Cloud
Elephants in the Cloud
 
Postgres-XC: Symmetric PostgreSQL Cluster
Postgres-XC: Symmetric PostgreSQL ClusterPostgres-XC: Symmetric PostgreSQL Cluster
Postgres-XC: Symmetric PostgreSQL Cluster
 
Massively Scaled High Performance Web Services with PHP
Massively Scaled High Performance Web Services with PHPMassively Scaled High Performance Web Services with PHP
Massively Scaled High Performance Web Services with PHP
 
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
 

Similar to pgpool: Features and Development

Useful PostgreSQL Extensions
Useful PostgreSQL ExtensionsUseful PostgreSQL Extensions
Useful PostgreSQL ExtensionsEDB
 
コミュニティ開発に参加しよう!
コミュニティ開発に参加しよう!コミュニティ開発に参加しよう!
コミュニティ開発に参加しよう!Takahiro Itagaki
 
PG-Strom - GPGPU meets PostgreSQL, PGcon2015
PG-Strom - GPGPU meets PostgreSQL, PGcon2015PG-Strom - GPGPU meets PostgreSQL, PGcon2015
PG-Strom - GPGPU meets PostgreSQL, PGcon2015Kohei KaiGai
 
GPGPU Accelerates PostgreSQL ~Unlock the power of multi-thousand cores~
GPGPU Accelerates PostgreSQL ~Unlock the power of multi-thousand cores~GPGPU Accelerates PostgreSQL ~Unlock the power of multi-thousand cores~
GPGPU Accelerates PostgreSQL ~Unlock the power of multi-thousand cores~Kohei KaiGai
 
Elephant Roads: PostgreSQL Patches and Variants
Elephant Roads: PostgreSQL Patches and VariantsElephant Roads: PostgreSQL Patches and Variants
Elephant Roads: PostgreSQL Patches and VariantsPostgreSQL Experts, Inc.
 
GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)Kohei KaiGai
 
Inside PostgreSQL Shared Memory
Inside PostgreSQL Shared MemoryInside PostgreSQL Shared Memory
Inside PostgreSQL Shared MemoryEDB
 
PGConf.ASIA 2019 Bali - Keynote Speech 3 - Kohei KaiGai
PGConf.ASIA 2019 Bali - Keynote Speech 3 - Kohei KaiGaiPGConf.ASIA 2019 Bali - Keynote Speech 3 - Kohei KaiGai
PGConf.ASIA 2019 Bali - Keynote Speech 3 - Kohei KaiGaiEqunix Business Solutions
 
Developing PGTop for Android
Developing PGTop for AndroidDeveloping PGTop for Android
Developing PGTop for AndroidMark Wong
 
Pro PostgreSQL, OSCon 2008
Pro PostgreSQL, OSCon 2008Pro PostgreSQL, OSCon 2008
Pro PostgreSQL, OSCon 2008Robert Treat
 
PGroonga – Make PostgreSQL fast full text search platform for all languages!
PGroonga – Make PostgreSQL fast full text search platform for all languages!PGroonga – Make PostgreSQL fast full text search platform for all languages!
PGroonga – Make PostgreSQL fast full text search platform for all languages!Kouhei Sutou
 
pg_chameleon MySQL to PostgreSQL replica made easy
pg_chameleon  MySQL to PostgreSQL replica made easypg_chameleon  MySQL to PostgreSQL replica made easy
pg_chameleon MySQL to PostgreSQL replica made easyFederico Campoli
 
Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12OSLL
 
OSMC 2008 | PostgreSQL Monitoring - Introduction, Internals And Monitoring S...
OSMC 2008 |  PostgreSQL Monitoring - Introduction, Internals And Monitoring S...OSMC 2008 |  PostgreSQL Monitoring - Introduction, Internals And Monitoring S...
OSMC 2008 | PostgreSQL Monitoring - Introduction, Internals And Monitoring S...NETWAYS
 
Making the big data ecosystem work together with python apache arrow, spark,...
Making the big data ecosystem work together with python  apache arrow, spark,...Making the big data ecosystem work together with python  apache arrow, spark,...
Making the big data ecosystem work together with python apache arrow, spark,...Holden Karau
 
Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Making the big data ecosystem work together with Python & Apache Arrow, Apach...Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Making the big data ecosystem work together with Python & Apache Arrow, Apach...Holden Karau
 
What's coming in Airflow 2.0? - NYC Apache Airflow Meetup
What's coming in Airflow 2.0? - NYC Apache Airflow MeetupWhat's coming in Airflow 2.0? - NYC Apache Airflow Meetup
What's coming in Airflow 2.0? - NYC Apache Airflow MeetupKaxil Naik
 
Reproducible Environments for Reproducible Results - PyOhio 2018
Reproducible Environments for Reproducible Results - PyOhio 2018Reproducible Environments for Reproducible Results - PyOhio 2018
Reproducible Environments for Reproducible Results - PyOhio 2018Dana Walker
 

Similar to pgpool: Features and Development (20)

Useful PostgreSQL Extensions
Useful PostgreSQL ExtensionsUseful PostgreSQL Extensions
Useful PostgreSQL Extensions
 
コミュニティ開発に参加しよう!
コミュニティ開発に参加しよう!コミュニティ開発に参加しよう!
コミュニティ開発に参加しよう!
 
PostgreSQL What's Next
PostgreSQL What's NextPostgreSQL What's Next
PostgreSQL What's Next
 
PG-Strom - GPGPU meets PostgreSQL, PGcon2015
PG-Strom - GPGPU meets PostgreSQL, PGcon2015PG-Strom - GPGPU meets PostgreSQL, PGcon2015
PG-Strom - GPGPU meets PostgreSQL, PGcon2015
 
GPGPU Accelerates PostgreSQL ~Unlock the power of multi-thousand cores~
GPGPU Accelerates PostgreSQL ~Unlock the power of multi-thousand cores~GPGPU Accelerates PostgreSQL ~Unlock the power of multi-thousand cores~
GPGPU Accelerates PostgreSQL ~Unlock the power of multi-thousand cores~
 
Elephant Roads: PostgreSQL Patches and Variants
Elephant Roads: PostgreSQL Patches and VariantsElephant Roads: PostgreSQL Patches and Variants
Elephant Roads: PostgreSQL Patches and Variants
 
PostgreSQL replication
PostgreSQL replicationPostgreSQL replication
PostgreSQL replication
 
GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)
 
Inside PostgreSQL Shared Memory
Inside PostgreSQL Shared MemoryInside PostgreSQL Shared Memory
Inside PostgreSQL Shared Memory
 
PGConf.ASIA 2019 Bali - Keynote Speech 3 - Kohei KaiGai
PGConf.ASIA 2019 Bali - Keynote Speech 3 - Kohei KaiGaiPGConf.ASIA 2019 Bali - Keynote Speech 3 - Kohei KaiGai
PGConf.ASIA 2019 Bali - Keynote Speech 3 - Kohei KaiGai
 
Developing PGTop for Android
Developing PGTop for AndroidDeveloping PGTop for Android
Developing PGTop for Android
 
Pro PostgreSQL, OSCon 2008
Pro PostgreSQL, OSCon 2008Pro PostgreSQL, OSCon 2008
Pro PostgreSQL, OSCon 2008
 
PGroonga – Make PostgreSQL fast full text search platform for all languages!
PGroonga – Make PostgreSQL fast full text search platform for all languages!PGroonga – Make PostgreSQL fast full text search platform for all languages!
PGroonga – Make PostgreSQL fast full text search platform for all languages!
 
pg_chameleon MySQL to PostgreSQL replica made easy
pg_chameleon  MySQL to PostgreSQL replica made easypg_chameleon  MySQL to PostgreSQL replica made easy
pg_chameleon MySQL to PostgreSQL replica made easy
 
Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12
 
OSMC 2008 | PostgreSQL Monitoring - Introduction, Internals And Monitoring S...
OSMC 2008 |  PostgreSQL Monitoring - Introduction, Internals And Monitoring S...OSMC 2008 |  PostgreSQL Monitoring - Introduction, Internals And Monitoring S...
OSMC 2008 | PostgreSQL Monitoring - Introduction, Internals And Monitoring S...
 
Making the big data ecosystem work together with python apache arrow, spark,...
Making the big data ecosystem work together with python  apache arrow, spark,...Making the big data ecosystem work together with python  apache arrow, spark,...
Making the big data ecosystem work together with python apache arrow, spark,...
 
Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Making the big data ecosystem work together with Python & Apache Arrow, Apach...Making the big data ecosystem work together with Python & Apache Arrow, Apach...
Making the big data ecosystem work together with Python & Apache Arrow, Apach...
 
What's coming in Airflow 2.0? - NYC Apache Airflow Meetup
What's coming in Airflow 2.0? - NYC Apache Airflow MeetupWhat's coming in Airflow 2.0? - NYC Apache Airflow Meetup
What's coming in Airflow 2.0? - NYC Apache Airflow Meetup
 
Reproducible Environments for Reproducible Results - PyOhio 2018
Reproducible Environments for Reproducible Results - PyOhio 2018Reproducible Environments for Reproducible Results - PyOhio 2018
Reproducible Environments for Reproducible Results - PyOhio 2018
 

More from elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

More from elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Recently uploaded

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 

Recently uploaded (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

pgpool: Features and Development

  • 1. pgpool: Features and Development Tatsuo Ishii pgpool Global Development Group SRA OSS, Inc. Japan
  • 2. Agenda ● Developers ● History ● Existing pgpool project ● Ongoing pgpool-II project ● Demonstration
  • 3. Who are we? ● pgpool Global Development Group – Tatsuo Ishii(SRA OSS, Inc. Japan) – Devrim Gunduz(Command Prompt, Inc.) – Yoshiyuki Asaba(SRA OSS, Inc. Japan) – Taiki Yamaguchi(SRA OSS, Inc. Japan) – pgpoo-II development team ● In addition to Tatsuo, Yoshiyuki and Taiki: – Tomoaki Sato, Yoshiharu Mori, Kaori Inaba (all from SRA OSS, Inc. Japan) 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 3
  • 4. Developers! Tomoaki Communication Kaori manager Project manager System DB Taiki Yoshiharu PCP Query rewriting Query Cache Parallel execution pgpool engin developer Yoshiyuki Tatsuo Project leader Enhance Our Boss pgpool pgpool-I “Green Turtle” developer pgpool developer 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 4
  • 5. pgpool-I: the history ● V0.1: Started as a personal project (2003/6/27) ● V1.0: Synchronous replication (2004/3) ● V2.0: Load balance (2004/6) ● V3.0: pgpool Global Development Group(2006/2) 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 5
  • 6. Why pgpool? ● No general purpose connection pooling software was available – Java has its own, but PHP does not... ● No small to mid scale/light weight synchronous replication tool was available 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 6
  • 7. pgpool process architecture pgpool parent process pre-fork pgpool PostgreSQL child process backend process pgpool.conf 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 7
  • 8. pgpool functionality: connection pooling ● Reduce connection overhead ● Limit maximum number of connections to the PostgreSQL backend – New incoming connections are queued in the kernel if all pgpool processes are busy 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 8
  • 9. How does connection pooling work?(1) pgpool PostgreSQL user1/db1 user1/db1 PostgreSQL user1/db1 user1/db1 PostgreSQL user1/db1 user1/db1 PostgreSQL 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 9
  • 10. How does connection pooling work?(2) pgpool user1/db1 PostgreSQL user2/db2 user2/db2 PostgreSQL user3/db3 user2/db2 user3/db3 PostgreSQL user3/db3 user2/db2 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 10
  • 11. pgpool understands frontend/backend protocol ● Pgpool is transparent to both applications and PostgreSQL ● Virtually no modifications to applications are needed ● No special APIs are needed ● Can be used with existing language APIs ● Can be more efficient than libpq because of smaller controlling granuality 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 11
  • 12. Limitations of current implementation ● resetting pooled connection may not be perfect(need modification to applications) – temp tables – need help from PostgreSQL ● SSL is not supported – fall back to non SSL mode ● no pg_hba.conf like IP based authentication 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 12
  • 13. pgpool functionality: replication ● Queries are duplicated and sent to PostgreSQL servers PostgreSQL query pgpool query PostgreSQL 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 13
  • 14. Dead lock problem master secondary session 1 session 2 session 1 session 2 t lock wait lock lock wait lock 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 14
  • 15. “Strict” mode in replication to avoid deadlock problem Query Query PostgreSQL pgpool packet PostgreSQL Wait until PostgreSQL pgpool something returns PostgreSQL PostgreSQL pgpool Query PostgreSQL reply back PostgreSQL pgpool Wait until the result something PostgreSQL returns 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 15
  • 16. pgpool functionality: load balanace ● SELECT queries are sent to randomly chosen backend ● The ratio for load balancing can be changed PostgreSQL pgpool PostgreSQL 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 16
  • 17. Limitations of current implementation in replication ● CURRENT_TIMESTAMP and server- dependent- value-returning-functions cannot be replicated ● MD5 and crypt authentication are not supported ● Sequences and SERIAL needs table locking if there are more than 1 connections ● Functions having side effects cannot be load balanced 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 17
  • 18. pgpool-II project ● Information-Technology Promotion Agency, Japan (IPA: http://www.ipa.go.jp) granted project ● Started in February 2006, expected to release the first version in September 2006 under BSD license ● Features including parallel query and enhancement to pgpool ● Successor to pgpool 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 18
  • 19. Goal of pgpool-II project ● Implement parallel query processing ● Enhance pgpool – Allow to have more than 2 DB nodes – More precise control using shared memory – Easy to manage ● Control port/protocol ● Detailed statistics on node status ● GUI management tool 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 19
  • 20. pgpool-II architecture overview Client SQL Query Parser Cache Communication pgpoolAdmin Query pgpool Manager Rewriting Catalog shared Replication/load Parallel PCP command memory balance execution PostgreSQL PCP lib manager engine engine pgpool-II System DB PostgreSQL DB node 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 20
  • 21. pgpool-I and pgpool-II mode replication parallel query load balance fail over virtually compatible with pgpool pgpoo-I pgpoo-II mode mode 1000 1000 1000 3000 2000 2000 2000 4000 3000 3000 4000 4000 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 21
  • 22. Table partitioning control CREATE TABLE dist_def ( dbname TEXT, -- database name schema_name TEXT, --schema name table_name TEXT, -- table name col_name TEXT, -- key col name col_list TEXT[], -- col names type_list TEXT[], -- col types dist_def_func TEXT, -- function name PRIMARY KEY (dbname, schema_name, table_name) ); INSERT INTO dist_def VALUES ('y-mori','public','accounts','aid', ARRAY['aid','bid','abalance','filler'], ARRAY['integer','integer','integer','character(84)'],'dist_def_accounts' ); CREATE OR REPLACE FUNCTION dist_def_accounts (val ANYELEMENT) RETURNS INTEGER AS ' SELECT CASE WHEN $1 >= 0 and $1 < 100001 THEN 0 WHEN $1 >= 100001 and $1 < 200001 THEN 1 WHEN $1 >= 200001 and $1 < 300000 THEN 2 END' LANGUAGE SQL; 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 22
  • 23. Simple parallel query SELECT * FROM accounts WHERE aid = 1000; SELECT * FROM accounts WHERE aid = 1000; PostgreSQL pgpool PostgreSQL SELECT * FROM accounts WHERE aid = 1000; 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 23
  • 24. Complex query example SELECT * FROM accounts SELECT * dblink('con', WHERE aid = 1000 'SELECT pool_parallel('SELECT * FROM accounts ORDER BY aid; WHERE aid = 1000')') AS foo(...) ORDER BY aid; pgpool System DB PostgreSQL pgpool SELECT pool_parallel('SELECT * FROM accounts WHERE aid = 1000')') SELECT * FROM accounts PostgreSQL WHERE aid = 1000; 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 24
  • 25. DML ● INSERT recognize partition key value in a query and INSERT into appropreate DB node ● UPDATE/DELETE simply issues the same query to all DB nodes 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 25
  • 26. INSERT call Syetm DB INSERT INTO accounts(aid, bid) SELECT VALUES(500,100); return dist_def_accounts(500); DB node = 1 INSERT DB node 0 DB node 1 DB node 2 aid = 0-499 aid = 500-999 aid = 1000-1499 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 26
  • 27. Query Cache ● Caches query result ● Caches can be validated by pgpoolAdmin CREATE TABLE pgpool_catalog.query_cache ( hash TEXT, -- query string(MD5 hashed) query TEXT, -- query string value bytea, -- query result(RowDescription and DataRow packets) dbname TEXT, -- database name create_time TIMESTAMP WITH TIME ZONE, -- cache creation time PRIMARY KEY(hash) ); 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 27
  • 28. Using parallel query and replication together pgpool-II with parallel query Parallel query layer pgpool-II pgpool-II with replication with replication Replication and load balance layer PostgreSQL PostgreSQL PostgreSQL PostgreSQL 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 28
  • 29. pgpoolAdmin ● Web based pgpool management tool ● Apache/PHP/Smarty ● functions – Stopping pgpool – Switch over – Monitoring connection pool status – Monitoring process status – Editing configuration file – Query Cache management 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 29
  • 30. Benchmarks ● Hitachi Blade Symphony BS1000 – 10 blades – Xeon 3.0GHz x 1 – 1GB Mem – UL320 SCSI Disks ● Cent OS 4.3 ● PostgreSQL 8.1.4/pgbench ● Please note that these results are measured on pre-alpha version of pgpool-II and maybe slightly different from the future official release version 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 30
  • 31. Sequencial Scan case(mid size) ● scale factor = 90 PostgreSQL pgpool-II 1.3 (90M rows) 1.2 1.1 ● SELECT * FROM 1 0.9 accounts WHERE 0.8 0.7 aid = :aid TPS 0.6 0.5 ● pgpool-II is 7 times 0.4 0.3 faster at the best 0.2 0.1 (32 concurrent 0 1 2 4 8 16 32 users) concurrent users 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 31
  • 32. Index Scan case(mid size) ● scale factor = 90 PostgreSQL pgpool-II 3750 (90M rows) 3500 3250 3000 ● SELECT * FROM 2750 2500 accounts WHERE 2250 2000 aid = :aid TPS 1750 1500 1250 ● pgpool-II is 9 times 1000 750 faster at the best 500 250 (16 concurrent 0 1 2 4 8 16 32 users) concurrent users 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 32
  • 33. Index Scan case(large size) ● scale factor = 900 PostgreSQL pgpool-II 1300 (900M rows) 1200 1100 ● SELECT * FROM 1000 900 accounts WHERE 800 700 aid = :aid TPS 600 500 ● pgpool-II is 18 400 300 times faster at the 200 100 best (32 0 1 2 4 8 16 32 concurrent users) concurrent users 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 33
  • 34. complex query case ● scale factor = 900 PostgreSQL pgpool-II 45 (900M rows) 40 ● SELECT a1.abalance 35 FROM accounts as a1 30 ,accounts as a2 25 WHERE a1.aid = :aid1 TPS 20 and a2.aid = :aid2 15 10 ● pgpool-II is faster 5 only when at 8 0 1 2 4 8 concurrent users concurrent users 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 34
  • 35. pgpool-II restrictions ● SQL restrictions – COPY is not supported – SELECT INTO, INSERT INTO ... SELECT is not supported – Extended protocol is not supported – INSERT requires explicit values if target column is the key for data patitioning – UPDATE with WHERE clause including function call is not supported – CREATE TABLE/ALTER TABLE requires pgpool restarting ● Transactions – If a DB node fails during INSERT/UPDATE/DELETE, data consistency will be broken – SQL commands via dblink will be executed as separate transactions 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 35
  • 36. Future plans(TODO) ● More intelligent query rewriting ● Remove SQL restrictions ● Employ two phase commit to keep consistency among DB nodes. However this technique can be used only for queries outside transaction block since PREPARE TRANSACTION closes current transaction block ● More intelligent cache validation 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 36
  • 37. References ● pgpool page – http://pgpool.projects.postgresql.org/ ● pgpool-II page – English page ● http://pgpool.projects.postgresql.org/pgpool-II/en/ – Japanese page ● http://pgpool.projects.postgresql.org/pgpool-II/ja/ 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 37
  • 38. Thank you! 2006/07/09 Tronto Copyright(c) 2006 pgpool DG 38