• Aucun résultat trouvé

Development of a Parallel DBMS on the Basis of PostgreSQL

N/A
N/A
Protected

Academic year: 2022

Partager "Development of a Parallel DBMS on the Basis of PostgreSQL"

Copied!
5
0
0

Texte intégral

(1)

Development of a Parallel DBMS on the Basis of PostgreSQL

c Constantin Pan

South Ural State University [email protected] M.Sc. advisor: Mikhail Zymbler

Abstract

The paper describes the architecture and the design of PargreSQL parallel database man- agement system (DBMS) for distributed mem- ory multiprocessors. PargreSQL is based upon PostgreSQL open-source DBMS and exploits partitioned parallelism.

1 Introduction

Currently open-source PostgreSQL DBMS [12] is a re- liable alternative for commercial DBMSes. There are many both practical database applications based upon PostgreSQL and research projects devoted to extension and improvement of PostgreSQL.

One of the directions mentioned above is to adapt PostgreSQL for parallel query processing. In this paper we describe the architecture and design of PargreSQL parallel DBMS for analytical data processing on dis- tributed multiprocessors. PargreSQL represents Post- greSQL with embedded partitioned parallelism.

The paper is organized as follows. Section 2 briefly discusses related work. Section 3 gives a description of the PostgreSQL DBMS architecture. Section 4 intro- duces design principles and architecture of PargreSQL DBMS. The results of experiments on the current partial implementation are shown in section 5. Section 6 con- tains concluding remarks and directions for future work.

2 Related work

The research on extension and improvement of Post- greSQL DBMS includes the following.

In [10] native XML type support in PostgreSQL is discussed. Adding data types to provide support of HL7 medical information exchange standard in PostgreSQL is described in [4]. The authors of [3] propose an image- handling extension to PostgreSQL. In [8] an approach to integration of PostgreSQL with the Semantic Web is presented.

There are papers investigating adoption of Post- greSQL for parallel query processing as well. In [6]

authors introduce their work on extending PostgreSQL

This paper is supported by the Russian Foundation for Basic Re- search (grant No. 09-07-00241-a).

Proceedings of the Spring Researcher’s Colloquium on Database and Information Systems, Moscow, Russia, 2011

to support distributed query processing. Several limita- tions in PostgreSQL’s query engine and corresponding query execution techniques to improve performance of distributed query processing are presented. ParGRES [9]

is an open-source database cluster middleware for high performance OLAP query processing. ParGRES exploits intra-query parallelism on PC clusters and uses adaptive virtual partitioning of the database. GParGRES [5] ex- ploits database replication and inter- and intra-query par- allelism to efficiently support OLAP queries in a grid.

The approach has two levels of query splitting: grid- level splitting, implemented by GParGRES, and node- level splitting, implemented by ParGRES.

In [1] building a hybrid between MapReduce and par- allel database is explored. The authors created a proto- type named HadoopDB on the basis of Hadoop and Post- greSQL, that is as efficient as parallel DBMS, but as scal- able, fault tolerant and flexible as MapReduce systems.

PostgreSQL is used as the database layer and Hadoop as the communication layer.

Our contribution is embedding partitioned paral- lelism [2] into PostgreSQL. We use methods for parallel query processing, proposed in [11] and [7].

3 PostgreSQL Architecture

PostgreSQL is based on the client-server model. A ses- sion involves three processes into interaction: a frontend, a backend and a daemon (see fig. 1).

Frontend

Daemon k

1 connects

Backend k 1

<<create>>

queryexec 1

1 -user

-executor

Figure 1: PostgreSQL processes

The daemon handles incoming connections from frontends and creates a backend for each one. Each back- end executes queries received from the related frontend.

The activity diagram of a PostgreSQL session is shown in fig. 2.

There are following steps of query processing in Post- greSQL:parse,rewrite,plan/optimize, andexecute.

Respective PostgreSQL subsystems are depicted in fig. 3. Parser checks the syntax of the query string and builds a parse tree.Rewriterprocesses the tree according

(2)

connect accept fork

send query exec query

send result recv result

[more queries] else

Frontend Daemon Backend

Figure 2: PostgreSQL session

PostgreSQL Parser

Rewriter

Storage

Executor

Planner

libpq libpq-be libpq-fe

Figure 3: PostgreSQL subsystems

to the rules specified by the user (e.g. view definitions).

Plannercreates an optimal execution plan for this query tree. Executortakes the execution plan and processes it recursively from the root. Storageprovides functions to store and retrieve tuples and metadata.

Client libpq-fe

libpq-fe app

Server Backend

libpq-be

Figure 4: PostgreSQL deployment

libpqimplements frontend-backend interaction proto- col and consists of two parts: the frontend (libpq-fe) and the backend (libpq-be). The former is deployed on the client side and serves as an API for the end-user applica- tion. The latter is deployed on the server side and serves as an API for libpq-fe, as shown in fig. 4.

4 PargreSQL Architecture

PargreSQL utilizes the idea of partitioned parallelism [7]

as shown in fig. 5. This form of parallelism supposes par- titioning relations among the disks of the multiprocessor system.

The way the partitioning is done is defined by afrag- mentation function, which for each tuple of the relation

00

09 10

19

90

99

P0 S0 P1 S1

P9 S9

Distribution

Partitioning function S.S_ID

Merging

Result relation

Figure 5: Parallel query processing

calculates the number of the processor node which this tuple should be placed at. A query is executed in parallel on all processor nodes as a set of parallelagents. Each agent processes its own fragment and generates a partial query result. The partial results are merged into the re- sulting relation.

The architecture of PargreSQL, in contrast with Post- greSQL, assumes that a client connects to two or more servers (see fig. 6).

par_Frontend

Daemon k

n connects

par_Backend k 1

<<create>>

Backend

queryexec n

1 -user

-executor

Figure 6: PargreSQL processes

The interaction sequence is shown in fig. 7. As op- posed to PostgreSQL there are many daemons running in PargreSQL. A frontend connects to each of them, sends the same query to many backends, and receives the result relation.

f : par_Frontend

dn : Daemon

d1 : Daemon b1 : par_Backend

bn : par_Backend 2.1: create()

2.n: create() 1.n: connect()

1.1: connect()

3.n: sendquery()

5.1: sendresult()

5.n: sendresult() 3.1: sendquery()

4.1: exchange() 4.n: exchange()

Figure 7: Interaction of PargreSQL clients and servers Parallel query processing in PargreSQL is done in more steps: parse, rewrite, plan/optimize, parallelize, execute, andbalance. During the query execution each agent processes its own part of the relation independently so, to obtain the correct result, transfers of tuples are re- quired. Parallelizationstages creation of a parallel plan by inserting special exchangeoperators into the corre- sponding places of the plan. Balance provides load- balancing of the server nodes.

PargreSQL subsystems are depicted in fig. 8. Post- greSQL is one of them. PargreSQL development in- volves changes in Storage, Executor and Planner subsys- tems of PostgreSQL.

The changes in the old code are needed to integrate it with the new subsystems.par Storageis responsible for storing partitioning metadata of relations.par Exchange

(3)

PostgreSQL Parser

Rewriter

Storage

Executor

Planner libpq libpq-be libpq-fe

par_Storage

par_Exchange

par_Parallelizer par_libpq par_libpq-fe

par_Compat

<<use>>

<<use>>

<<use>>

<<use>>

PargreSQL

par_Balancer

<<use>>

Figure 8: PargreSQL subsystems

encapsulates theexchangeoperator implementation.Ex- change operator is meant to compute the distribution function ψ for each tuple of the relation, send “alien”

tuples to the other nodes, and receive “own” tuples in response.

There are however some new subsystems which do not require any changes in the old code:par libpq-feand par Compat. par libpq-feis a wrapper aroundlibpq-fe, it is needed to propagate queries from an application to many servers.par Compatmakes this propagation trans- parent to the application.

Client libpq-fe

libpq-fe

par_libpq-fe libpq-fe app Server

par_Backend

libpq-be

Figure 9: PargreSQL deployment

The only difference of deployment schemes (see fig. 9) is that there is one more component on the client side — thelipq-fewrapper.

4.1 par libpq Design

par libpqsubsystem consists ofpar libpq-felibrary and a set of macros (par Compat).

par libpq-fe is a library that is linked into frontend applications instead of original PostgreSQL libpq-fe, around which it is a wrapper. Its design is illustrated with a class diagram in fig. 10.

The idea is to use originallibpq-fe for connecting to many servers simultaneously.

par Compatis a set of C preprocessor definitions for transparent usage ofpar libpq-fe. An example of what these macros are is given in fig. 11.

Using these macros an application programmer can switch from PostgreSQL to PargreSQL without global changes in the application code.

par_libpq-fe par_PGconn par_PQconnectdb() par_PQstatus() par_PQexec() par_PQfinish() libpq-fe

PGconn PQconnectdb() PQstatus() PQexec() PQfinish()

* 1

PGresult

Figure 10: PargreSQL libpq-fe wrapper

#define PGconn par_PGconn

#define PQconnectdb(X) par_PQconnectdb()

#define PQfinish(X) par_PQfinish(X)

#define PQstatus(X) par_PQstatus(X)

#define PQexec(X,Y) par_PQexec(X,Y)

Figure 11: PargreSQL compatibility macros 4.2 Exchange Operator Design

Exchangeoperator [7, 11] serves to exchange tuples be- tween parallel agents. It is inserted into execution plans by Parallelizer subsystem. The operator’s architecture is presented in fig. 12.

merge

split

scatter gather

exchange

Figure 12: Exchange operator architecture Fig. 13 shows new classes (grouped in par Exchange package) that implementexchangeoperator.

par_Exchange Exchange_Factory

+make_exchange()

Split +init() +next() +reset()

Merge

+init() +next() +reset() -even

Scatter

+init() +next() +reset() -port +isSending

Gather

+init() +next() +reset() -port -NULLcnt

* 1

* * *

<<entity>>

par_Plan +frag_attr

Executor Plan +init() +next() +reset()

1 1

MPS

Figure 13: Exchange operator classes

MPSsubsystem (Message Passing System) is used by Scatter and Gather to transmit tuples. Its interface is like MPI reduced to three methods: ISend, IRecv, and Test.

They are actually implemented on top of MPI.

Figs. 14, 15, 16, and 17 show algorithms fornext() method of four exchange subnodes.

(4)

[right.isSending = TRUE] wait

left.next

ψ

tuple [own]

right.buffer := tuple right.next

[alien]

[NULL]

[tuple]

Figure 14:Split.next()method

Splitis meant to calculate fragmentation function for each tuple and choose whether to keep it on the processor node or send it to other processor node.

even := not even

right.next

left.next

NULL [tuple]

tuple [tuple]

right.next left.next

NULL [tuple]

tuple [tuple]

[even] [odd]

[NULL]

[NULL]

[NULL]

[NULL]

else else

else else

Figure 15:Merge.next()method Mergemerges tuples fromGatherandSplit.

[isSending] Test

[ok] NULL else wait

[NULL] Isend(NULL) to everyone else

isSending := FALSE NULL ψ

Isend(tuple, ψ)

isSending := TRUE NULL

Figure 16:Scatter.next()method

Scatter sends tuples coming fromSplit to other pro- cessor nodes.

[all NULLs gathered] NULL [tuple]

else Test

tuple Irecv

NULLcnt++ Irecv else wait [NULL]

Figure 17:Gather.next()method

Gatherdoes the opposite, receiving tuples from other processor nodes.

5 Experimental Evaluation

At the moment we have implemented par libpq and par Exchange subsystems of PargreSQL. The imple- mentation has been tested on the following query:

select * from tab where tab.col % 10000 = 0 The query has been run against tabletabconsisting of 108tuples. The speedup relative to PostgreSQL is shown in fig. 18.

Nodes

1

(PostgreSQL) 2 3 4 5 6

Speedup

1 2 3 4 5

6 Linear

Actual

Figure 18: PargreSQL speedup

6 Conclusion

In this paper we have described the architecture and de- sign of PargreSQL parallel DBMS for distributed mem- ory multiprocessors. PargreSQL is based upon Post- greSQL open-source DBMS and exploits partitioned par- allelism.

There are following issues in our future research. We plan to complete the implementation and to investigate its speedup and scalability. The future research is also going to be concentrated on implementing data updates, transactions and fault tolerance.

References

[1] Azza Abouzeid, Kamil Bajda-Pawlikowski, Daniel J. Abadi, Alexander Rasin, and Avi Sil- berschatz. HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads. PVLDB, 2(1):922–933, 2009.

[2] David J. DeWitt and Jim Gray. Parallel Database Systems: The Future of High Performance Database Systems. Commun. ACM, 35(6):85–98, 1992.

[3] Denise Guliato, Ernani V. de Melo, Ran- garaj M. Rangayyan, and Robson C. Soares.

POSTGRESQL-IE: An Image-handling Extension for PostgreSQL. J. Digital Imaging, 22(2):149–

165, 2009.

[4] Yeb Havinga, Willem Dijkstra, and Ander de Kei- jzer. Adding HL7 version 3 data types to Post- greSQL.CoRR, abs/1003.3370, 2010.

(5)

[5] Nelson Kotowski, Alexandre A. B. Lima, Esther Pacitti, Patrick Valduriez, and Marta Mattoso. Par- allel query processing for OLAP in grids. Concur- rency and Computation: Practice and Experience, 20(17):2039–2048, 2008.

[6] Rubao Lee and Minghong Zhou. Extending PostgreSQL to Support Distributed/Heterogeneous Query Processing. In Kotagiri Ramamohanarao, P. Radha Krishna, Mukesh K. Mohania, and Ekawit Nantajeewarawat, editors, DASFAA, volume 4443 ofLecture Notes in Computer Science, pages 1086–

1097. Springer, 2007.

[7] Andrey V. Lepikhov and Leonid B. Sokolinsky.

Query processing in a DBMS for cluster systems.

Programming and Computer Software, 36(4):205–

215, 2010.

[8] Dmitry V. Levshin and A. S. Markov. Algorithms for integrating PostgreSQL with the semantic web.

Programming and Computer Software, 35(3):136–

144, 2009.

[9] Melissa Paes, Alexandre A. B. Lima, Patrick Val- duriez, and Marta Mattoso. High-Performance Query Processing of a Real-World OLAP Database with ParGRES. In Jos´e M. Laginha M. Palma, Patrick Amestoy, Michel J. Dayd´e, Marta Mattoso, and Jo˜ao Correia Lopes, editors,VECPAR, volume 5336 ofLecture Notes in Computer Science, pages 188–200. Springer, 2008.

[10] Nikolay Samokhvalov. XML Support in Post- greSQL. In Sergei D. Kuznetsov, Andrey Fomichev, Boris Novikov, and Dmitry Sha- porenkov, editors, SYRCoDIS, volume 256 of CEUR Workshop Proceedings. CEUR-WS.org, 2007.

[11] Leonid B. Sokolinsky. Organization of Paral- lel Query Processing in Multiprocessor Database Machines with Hierarchical Architecture. Pro- gramming and Computer Software, 27(6):297–308, 2001.

[12] Michael Stonebraker and Greg Kemnitz. The POSTGRES next generation database management system.Commun. ACM, 34:78–92, October 1991.

Références

Documents relatifs

family of robots whose design parameters have values around nominal values

With the use of the artificial intelli- gence algorithms (deep neural networks, etc.), this element combines job offers with profiles of individual candidates and presents

(where T 1 is the computation time using one core, T n is the time of computations on n-logical cores) on the number of threads, the number of which is equal to the number

Target language [8], built as parallel composition of the specification and the system automata, is a base for founding bad states which should be forbidden by a supervisor..

In this paper we explore the idea of building a scalable, grid-enabled database management system, by com- bining the concepts of main-memory databases and grid data-sharing

Keywords: Parallel Programming, Frameworks, Software Engineering, Separation of Concerns, Design Patterns, Recursive Data Structures..

As a consequence, the parameters involved in the analysis of a PRO-algorithm are: the number of processors p, the input size n, and the time and space complexity of the

If we consider that in parallel approach the list elements are randomly distributed over processors, the randomized List Ranking algorithm using the independent set