Top Banner
…PAPER… …PAPER… Presented by: Nurilla Reski Iryani 1204000653 Ratih Amalia 1204000734 Wisnu LW 120400092Y
43

Paper PostgreSQL KelDoraDori

Dec 08, 2015

Download

Documents

Muhammad Zaini

knowledge
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Paper PostgreSQL KelDoraDori

…PAPER……PAPER…

Presented by:

Nurilla Reski Iryani1204000653

Ratih Amalia1204000734

Wisnu LW120400092Y

Zoni Yuki H1204000955

Sutanto Sugii Joji1204007089

Page 2: Paper PostgreSQL KelDoraDori

DAFTAR ISIDAFTAR ISI

Daftar isi 2

About 3

Indexing 5

Administrative Tools 7

Platform 14

Price 15

Security 15

Performance 17

Speed 19

Advantages 19

Concurency Control 20

Storage 23

Stored Procedure 25

Data Manipulation 28

Kesimpulan 29

Daftar Pustaka 30

2

Page 3: Paper PostgreSQL KelDoraDori

ABOUTABOUT

PostgreSQL adalah oper source relation database system yang sangat

powerful. PostGreSQL sudah lebih dari 15 tahun aktif dalam

pengembangannya dan arsitektur yang dibangunnyapun memiliki reputasi

yang bagus, handal, lengkap, dan akurat. PostGreSQL dapat berjalan di semua

sistem operasi yang ada, termasuk Linux, Unix (AIX, BSd, HP-UX, SGI IRIX, Mac

OS X, Solaris, Tru64), dan windows. PostGreSQL mendukung penuh foreign

keys, joins, views, triggers, dan stored procedures. PostgreSQL memiliki

hampir semua data type SQL92 dan SQL99, termasuk integer, numeric,

boolean, char, varchar, data, interval, dan timestamp. PostGreSQL juga

memiliki kemampuan menyimpan objek binary yang cukup besar, termasuk

gambar, suara, dan video. Selain itu postgre memiliki native programming

interface untuk C/C++, Java, Perl, Python, Ruby, Tcl, ODBC, dll.

PostgreSQL membanggakan fitur-fiturnya yang mutakhir, contohnya Multi-

Version Concurrency Control (MVCC), point in time recovery, tablespaces,

asynchronous replication, nested transactions (savepoints), online/hot

backups, a sophisticated query planner/optimizer, dan write ahead logging for

fault tolerance. Postgre juga mendukung international character sets,

multibyte character encodings, Unicode, and locale-aware for sorting, case-

sensitivity, and formatting. Selain itu, PostGreSQL dapat diukur baik kualitas

datanya maupun jumlah concurent user yang dapat ditangani. Ada beberapa

sistem Postgre yang aktif dalam lingkuangan produksi yang memanage data

sebesar 4 terabytes.

Limit Value

Maximum Database Size Unlimited

Maximum Table Size 32 TB

Maximum Row Size 1.6 TB

Maximum Field Size 1 GB

Maximum Rows per Table Unlimited

Maximum Columns per

Table

250 - 1600 depending on column

types

3

Page 4: Paper PostgreSQL KelDoraDori

Limit Value

Maximum Indexes per

TableUnlimited

PostgreSQL telah mendapatkan pujian dari para penggunanya serta

pengakuan dari dunia industri, termasuk Linux New Media Award for Best

Database System dan tiga kali memenangkan The Linux Journal Editors'

Choice Award for best DBMS.

Fitur

PostgreSQL memiliki standart-standart yang harus dipenuhi. Implementasi

SQL berdasarkan standar ANSI-SQL 92/99. Postgre support untuk subqueries

(including subselects in the FROM clause), read-committed and serializable

transaction isolation levels. Selain memiliki fully relational system catalog

yang mensupport multiple skema per database, catalog juga dapat diakses

melalui Information Schema seperti pada standar SQL.

Data integrity meliputi include (compound) primary keys, foreign keys with

restricting and cascading updates/deletes, check constraints, unique

constraints, dan bukan null constraints.

Postgre memiliki host extension dan advance fitur.

GiST (Generalized Search Tree) indexing adalah advance sistem yang

membawa array dalam jumalah besar dengan sorting dan searching

argoritma yang berbeda termasuk B-tree, B+-tree, R-tree, partial sum

trees, ranked B+-trees dan masih banyak lagi.

GiST menyediakan pondasi untuk banyak public project yang

menggunakan POstGreSQl seperti OpenFTS dan POstGIS. OpenFTS

(Open Source Full Text Search engine) menyediakan indexing data

secara online dan relevansi rangking untuk satavase searching. PosGIS

adalah project yang support untuk geografik objek di PostGreSQL,

memungkinkan untuk digunakan sebagai spatial database untuk

geographic information systems (GIS).

Fitur lainnya adalah table inheritance, a rules systems, and database

events.

4

Page 5: Paper PostgreSQL KelDoraDori

Table inheritance object oriented slant on table creation,allowing

database designers untuk membuat table baru dari table lain.

Peraturan dalam sistem ini juga disebut query rewrite system,

memperbolehkan designer membuat peraturan untuk operasi yang

spesifik untuk tabel yang mereka buat dan juga secara dinamik

mentransformasikan ke alternatif operasi yang lain saat mereka di

proses.

5

Page 6: Paper PostgreSQL KelDoraDori

Highly Customizable

PostgreSQL menyediakan prosedur penyimpanan di lebih dari satu lusin

bahasa pemrograman, termasuk Java, Perl, Python, Ruby, Tcl, C/C++, and

miliknya sendiri PL/pgSQL,yang mirip dengan oracle PL/SQL.

Trigger dan prosedur penyimpanan dapat ditulis dalam bahasa C dan di-load

ke dalam database sebagai library, memungkinkan fleksibilitas yang tinggi

dalam mengembangakan kemampuannya. PostgreSQL memiliki framework yg

mengizinkan developers untuk mendefinisikan dan membuat custom data

type mereka sendiri dengan fungsi dan operasi pendukung. Sebagai hasilnya,

host of advanced data types telah banyak dibuat dengan range mulai dari

geometric sampai spatial primitives juga network addresses bahkan ISBN/ISSN

(International Standard Book Number/International Standard Serial Number)

data types, semua ini secara opsional dapat ditambahkan ke dalam sistem ini.

Seperti halnya banyak procedure languages didukung oleh PostgreSQL, ada

banyak library interface juga. Interface tersebut untuk Java (JDBC), ODBC,

Perl, Python, Ruby, C, C++, PHP, Lisp, Scheme, dll.

Yang terbaik adalah, Source dari kode PostGreSQl ini tersedia secara open

source. Ini membuat pengguna menjadi bebeas untuk menggunakan,

memodifikasi. PostGreSQL tidak hanya dapat digunakan daam perusahaan

tapi juga di tumah, web, komersial produk yang membutuhkan RDBMS.

INDEXINGINDEXING

Ketika kita mengakses tabel, PosgreSQL normalnya membaca dari awal ke

akhir table, mencari untuk row yang relevan. Dengan sebuah index, maka

akan dengan cepat untuk mencari nilai index tersebut, lalu langsung

menemukan row yang tepat.

Misalnya, anggap query SELECT * FROM customer WHERE col = 43. Tanpa

sebuah index, PostgreSQL harus mencari di seluruh tabel untuk mencari rows

dimana col sama dengan 43. Dengan sebuah index pada col, PostgreSQL

dapat langsung menuju ke baris dimana col sama dengan 43, melewati

(bypass) rows yang lain.

6

Page 7: Paper PostgreSQL KelDoraDori

Secara internal, PostgreSQL menyimpan data dalam operating system files.

Masing-masing tabel mempunyai file-nya sendiri dan data rows disimpan

dalam file tersebut. Sebuah index merupakan file terpisah yang diurutkan oleh

satu atau lebih columns. Index tersebut mengandung pointer ke tabel file,

mengizinkan akses yang cepat ke nilai tertentu pada tabel tersebut.

PostgreSQL tidak membuat index-index secara automatis, namun user yang

harus untuk membuatnya.

Untuk membuat index, dapat menggunakan command CREATE INDEX,

contohnya:

Pada contoh diatas customer_custid_idx adalah nama index, customer adalah

nama tabel yang diberi index dan customer_id adalah column yang diberi

index. Index ini berguna hanya untuk mencari rows dalam tabel customer

untuk column customer_id yang spesifik. Index ini tidak dapat digunakan

untuk mencari pada columns yang lain, karena index-nya hanya diurutkan

oleh column yang spesifik saja.

User-defined index juga dapat menggunakan built-in B-tree, hash dan GiST

indexes. Indexing pada PostgreSQL juga men-support features berikut:

PostgreSQL dapat melakukan backward scanning indexes.

Expressional indexes dapat dibuat dimana index berupa hasil dari

sebuah expresi atau fungsi.

Partial indexes, which only index part of a table, dapat dibuat

dengan menambahkan WHERE clause ke akhir dari CREATE INDEX

statement.

Index partial_salary hanya diberikan pada rows yang mempunyai

salary > 2100.

Pada versi 8.1, men-support bitmap index scans.

7

CREATE INDEX customer_custid_idx ON customer (customer_id);

create index partial_salary on employee(age) where salary>2100;

Page 8: Paper PostgreSQL KelDoraDori

8

Page 9: Paper PostgreSQL KelDoraDori

ADMINISTRATIVE TOOLSADMINISTRATIVE TOOLS

Instalasi

Tahapan dibawah ini hanya untuk proses instalasi yang tidak menggunakan

distribusi pre-packaged, seperti RPM (.rpm) atau Debian Package (.deb).

Requirements:

Software dibutuhkan untuk membangun PortgreeSQL pada Windows berbasis

NT (Windows XP dan 2003), yaitu MinGW atau Cygwin. Untuk instalasi komplit,

hanya 2 software tadi yang direkomendasikan, namun tidak menutup

kemungkinan untuk hanya menginstall C client library (libpq) dan terminal

interaktif (psql) dengan menggunakan tool lain.

Paket-paket berikut hanya tambahan. Tidak dibutuhkan untuk konfigurasi

standart, namun dibutuhkan untuk beberapa tambahan lain. Antara lain:

PL/Perl server programming language.

PL/Phyton server programming language.

PL/Tcl procedural language.

Native language support.

Kerberos, OpenSSL, dan/atau PAM.

GNU Flex dan Bison.

Prosedur Instalasi:

1. Konfgurasi

2. Build

3. Regression Test

4. Instalasi File

Shared Library:

Pada kebanyakan sistem yang menggunakan shared library kita harus

memberitahu sistem kita bagaimana mencari shared library yang baru saja

diinstall. Beberapa system yang tidak perlu melakukan proses ini antara lain:

Linux, NetBSD, OpenBSDm Tru64 UNIX, IRIX, HP-UX, FreeBSD, BSD/OS.

9

Page 10: Paper PostgreSQL KelDoraDori

Konfigurasi Server

Ada banyak parameter konfigurasi yang mempengaruhi perilaku dari sistem

database.

Parameter Setting

Semua nama parameter case-insensitive. Setiap parameter tipe data:

Boolean, floating point, integer, atau string. Satu cara untuk mengkonfigurasi

parameter-parameter tersebut yaitu dengan meng-edit file postgresql.conf,

yang normalnya berada pada direktori data. Contoh dari isi file tersebut

seperti ini:

# This is a comment

log_connections = yes

log_destination = ’syslog’

search_path = ’$user, public’

Satu parameter satu baris.

Koneksi dan Otentikasi

Setting Koneksi

listen_addresses (string)

Menentukan alamat IP dimana server yang akan dihubungkan oleh

aplikasi klien. Nilai defaultnya yaitu localhost.

port (integer)

Port TCP dimana server mendengarkan; defaultnya 5432.

max_connections (integer)

Menentukan jumlah maksimum dari koneksi konkuren ke server

database. Defaultnya 100, tapi mungkin kurang kalau konfigurasi kernel kita

tidak mendukungnya.

superuser_reserved_connections (integer)

Menentukan jumlah slot koneksi yang disediakan untuk berhubungan

dengan superuser PostgreSQL. Paling banyak koneksi sebanyak

max_connection bisa aktif secara simultan.

unix_socket_directory (string)

10

Page 11: Paper PostgreSQL KelDoraDori

Menetukan direktori dari socket Unix-domain yang mana server akan

mendengarkan koneksi dari aplikasi klien.

unix_socket_group (string)

Mengeset grup kepemilikan socket Unix-domain. Defaultnya isinya

adalah string kosong, yang menggunakan grup default untuk current user.

unix_socket_permissions (integer)

Mengeset izin akses ke socket Unix_domain. Socket Unix_domain

menggunakan set izin standar sistem berkas Unix.

bonjour_name (string)

Menentukan nama broadcast Bonjour

tcp_keepalives_idle (integer)

Pada sistem yang mendukung TCP_KEEPIDLE. Menentukan berapa

detik antara mengirim keepalives dan koneksi idle.

Memanage Database

Dalam membuat basis data, server PostgreSQL harus sudah dalam keadaan

berjalan atau running. Basis data dibuat dengan menggunakan perintah SQL

“CREATE DATABASE”.

CREATE DATABASE nama;

dimana nama mengikuti aturan standar untuk identifier SQL.

Kemudian, database pertama dibuat dengan menggunakan perintah initdb

saat tempat penyimpanannya di inisialisasi. Database ini disebut postgres.

Untuk mudahnya ada program yang bisa dieksekusi dari shell untuk membuat

database baru dapat digunakan perintahcreatedb.

createdb dbname

perintah tersebut melakukan koneksi ke postgres kemudian mengeluarkan

perintah CREATE DATABASE seperti dijelaskan diatas.

Saat kita ingin membuatkan database untuk orang lain, dan orang tersebut

yang akan menjadi pemilik database yang baru, sehingga dia dapat

memanage databasenya sendiri, untuk hal ini dapat digunakan perintah:

CREATE DATABASE dbname OWNER rolename;

11

Page 12: Paper PostgreSQL KelDoraDori

atau,

createdb -O rolename dbname

Kita harus sebagai superuser untuk membuat database untuk orang lain.

Template

CREATE DATABASE sebenarnya bisa dilakukan dengan mengkopi dari

database yang sudah ada. Secara default, dia mengkopi dari database sistem

standar bernama template1.

Untuk membuat database dari template1, gunakan peritah berikut

CREATE DATABASE dbname TEMPLATE template1;

dari the SQL environment, or

createdb -T template0 dbname

dari shell.

Menghancurkan Database

Database dapat dihancurkan dengan menggunakan perintah DROP DATABASE

DROP DATABASE nama;

Namun hanya pemilik database atau superuser yang bisa meng-drop

database. Melakukan dropping mengapus semua objek yang terkandung

didalamnya. Dan tidak bisa di undo. Kita tidak bisa meng-eksekusi DROP

DATABASE saat terhubung ke database yang akan di drop.

Untuk mudahnya, ada juga program shell untuk men-drop database, dropdb:

dropdb dbname

Backup and Restore

Database PostgreSQL memiliki kemampuan untuk mem-backup secara

teratur.

Ada tiga cara pendekatan untuk mem-backup data PostgreSQL:

a. SQL Dump

Ide dari metode SQL dump adalah membentuk file text dengan

perintah-perintah SQL yang pada saat dilempar kembali ke server,

akan membentuk ulang database dengan state yang sama seperti

pada saat di dump. PostgreeSQL menyediakan program utiliti pg_dump

untuk ini. Cara dasar penggunaannya sbb:

pg_dump dbname > outfile

12

Page 13: Paper PostgreSQL KelDoraDori

Seperti yang bisa kita lihat, pg_dump menulis hasilnya ke standar

output. Kemudian hasil dari standar output tersebut akan di redirect

kedalam outfile

pg_dump dbname > outfile

Namun perlu diingat, pg_dump tidak beroperasi dengan izin spesial.

Untuk suatu hal tertentu, ia harus punya hak akses untuk membaca

semua tabel yang ingin di backup, jadi pada prakteknya hampir selalu

dilakukan sebagai superuser database.

Restoring the Dump

File text yang dibuat oleh pg_dump nantinya akan dibaca oleh program

psql. Perintah umum untuk merestore dump adalah

psql dbname < infile

dimana infile adalah file yang kita gunakan saat meridirect standar

output pada saat membuat dump.

Database dbname tidak akan dibuat dengan perintah diatas, kita harus

membuatnya sendiri bisa dari template0 atau template1 sebelum

mengeksekusi psql.

Bisa juga melakukan dump terhadap database secara langsung dari

satu server ke server lain

contohnya:

pg_dump -h host1 dbname | psql -h host2 dbname

Menggunakan pg-dumpall

Mekanisme diatas tidak cocok saat kita melakukan back up untuk

seluruh database cluster, oleh karena itu disediakan program

pg_dumpall. pg_dumpall mem-backup setiap database pada cluster

yang diberikan, juga menyediakan cluster-wide data seperti sebagai

user dan group. Cara penggunaan dasarnya sebagai berikut:

pg_dumpall > outfile

hasil dari dump bisa direstore dengan perintah psql:

psql -f infile postgres

b. File System Back up

Cara lainnya adalah dengan langsung melakukan pengandaan file yang

digunakan PostgreSQL untuk menyimpan data di database. Kita bisa

13

Page 14: Paper PostgreSQL KelDoraDori

menggunakan cara apapun yang kita sukai untuk melakukan backup

file biasa, sebagai contoh

tar -cf backup.tar /usr/local/pgsql/data

Ada dua batasan, juga, apa yang membuat metode ini kurang praktis

atau kurang canggih dibandingkan dengan metode pg_dump :

1. Server database harus dimatikan untuk mendapatkan backup

yang berguna. Cara setengah-setengah seperti menghalangi

semua koneksi tidak akan berguna (karena tar dan tool

semacamnya tidak mengambil atomic snapshot state dari

filesystem pada waktu tertentu). Kita juga harus mematikan

server sebelum melakukan restore.

2. Filesystem backup hanya berguna untuk restorasi komplit dari

keseluruhan cluster database.

c. Online Back up and Point in time recovery

PostgreSQL memaintain sebuah write ahead log (WAL) di subdirektori

p_xlog direktori cluster data. Log tersebut menjelaskan setiap

perubahan yang dibuat terhadap file data pada databases asalan

utamanya adalah crash-safety Namun, log ini memungkinkan kita

untuk menggunakan strategi ketiga untuk membackup database yaitu

dengan menggabungkan antara file-system-level backup dengan

backup dari file WAL. Kalau restorasi dibutuhkan, kita merestore

backupnya kemudian kita melakukan “replay” dari file WAL

untukmembawa backup ke waktu kini. Pendekatan ini lebih rumit untuk

dilakukan dibanding pendekatan sebelumnya, tapi memiliki

keuntungan yang cukup banyak, yaitu:

Kita tidak butuh backup yang sempurna seperti awal,

inkonsistensi internal pada backup akan dikoreksi oleh log

replay. Jadi kita tidak butuh kemampuan snapshot file-system,

hanya tar atau tool sejenisnya.

Karena kita bisa menggabungkan sepanjang tak terhingga dari

sequence file WAL, kontinuitas backup dapat diperoleh hanya

dengan secara kontinyu mengarsipkan file WAL.

Tidak ada yang mengatakan bahwa kita haru mereplay seluruh

file WAL sampai akhir. Kita bisa memberhentikan replay pada

point apapun dan memiliki snapshot yang konsisten dari

database seperti pada saat itu.

14

Page 15: Paper PostgreSQL KelDoraDori

Kalau kita terus menerus secara kontinyu memberikan seri-seri

file WAL ke mesin lain yang telah diisi dengan file back upnya,

maka kita punya sebuah “hot standby” system: pada satu

waktu kita bisa bawa mesin kedua tersebut dan kita punya

database yang hampir mirip dengan aslinya.

Memonitor Aktifitas Database

Ada beberapa tool yang dapat digunakan untuk memonitor aktifitas database

dan menganalisa performanya.

Unix Tool Standar

Ada regular Unix monitoring program seperti ps, top, iostat, dan vmstat.

Statistic Collector

PostgreSQL statistic collector merupakan subsistee yang mensupport

pengumpulan dan pelaporan informasi mengenai aktifitas server. Saat ini,

collector bisa menghitung akses ke tabel dan index-index pada kedua disk-

block dan individual-row. Selain itu statistic collector ini menjelaskan perintah

yang sedang dieksekusi oleh proses server lain.

Statistics Collection Configuration

Karena statistic collection menambahkan beberapa overhead untuk eksekusi

query, system bisa dikonfigurasi untuk mengumpulkan atau tidaknya

informasi. Hal ini dikontrol dengan configuration parameter yang normalnya di

set di postgresql.conf.

Parameter stats_start_collector harus di set true agar statistic collector di

jalankan seluruhnya. Ini merupakan konfigurasi default dan yang

direkomedasikan, tapi boleh dimatikan kalau kita tidak tertarik akan hal ini.

Parameter stats_command_string, stats_block_level, dan stats_row_level

mengontrol berapa banyak informasi yang sebenarnya dikirim ko collector dan

menjelaskan berapa banyak run-time overhead yang terjadi. Normalnya,

parameter tersebut di konfigurasi di postgresql.conf supaya berjalan untuk

seluruh proses server, tapi bisa saja di matikan untuk sesi individu dengan

perintah SET.

Viewing Collected Statistics

15

Page 16: Paper PostgreSQL KelDoraDori

Saat menggunakan statistic untuk memonitor aktifitas sekarang, pentinglah

untuk menyadari bahwa informasi tersebut tidak diupdate secara instan.

Setiap proses server secara individual mentransmit block baru dan jumlah row

access kepada collector sesaat sebelum idle; jadi transaksi yang sedang

berjalan tidak mempengaruhi tampilan seluruhnya.

Hal penting lainnya yaitu saat proses server diminta untuk menampilkan

statistic, dia pertama kali mengambil the most recent report yang dikeluarkan

oleh proses collector dan kemudian menggunakan snapshot ini untuk semua

statisticccal views dan fungsinya sampai pada akhirnya dari current

transactionnya sendiri. Sehingga statistic yang tampil tidak akan berubah

selama kita meneruskan current transaction. Hal ini mengizinkan kita

melakukan beberapa query pada statistic dan mengkorelasikan hasilnya tanpa

khawatir akan angka-angka yang berubah pada sistem.

Viewing Locks

Tool lain yang berguna untuk memonitor aktifitas database yaitu pg_locks

sistem tabel. Dia mengizinkan DBA untuk melihat informasi mengenai

outstanding locks pada lock manager.

PLATFORMPLATFORM

Pada umumnya, beberapa Unix-compatible platform yang modern seharusnya

dapat menjalankan PostgreSQL. Platform-platform, yang telah menerima

testing eksplisit pada saat dirilis, kemudian didaftar dalam instruksi-instruksi

instalasi.

PostgreSQL juga dapat berjalan pada Microsoft Windows NT yang berbasis

sistem operasi seperti Win2000, WinXP, dan Win2003. Selain itu, MSDOS yang

berbasis versi-versi dari Windows (Win95, Win98, WinMe) juga dapat

menjalankan PostgreSQL dengan menggunakan Cygwin.

Berikut adalah beberapa platform lainnya yang juga dapat menjalankan

PostgreSQL:

Apple Computer, Inc.: Mac OS Any version

Cisco Systems, Inc.: Cisco IOS Any version

Conectiva: Conectiva Linux 10

16

Page 17: Paper PostgreSQL KelDoraDori

Data General: DG/UX Any version

Hewlett-Packard Company: HP-UX Any version

Hewlett-Packard Company: Tru64 UNIX Any version

IBM: AIX Any version dan OS/2 Any version

Linux: Linux Any version

Microsoft Corporation: Windows 95

Microsoft Corporation: Windows 98

Microsoft Corporation: Windows 98 Second Edition

Microsoft Corporation: Windows Me

Microsoft Corporation: Windows 2000 Any version

Microsoft Corporation: Windows 2003 Any version

Microsoft Corporation: Windows NT 4.0

Microsoft Corporation: Windows XP Any version

Novell, Inc.: Novell NetWare Any version

PostgreSQL: PostgreSQL 7.x

PostgreSQL: PostgreSQL 8.x

Santa Cruz Operation, Inc.: SCO Unix Any version

SGI: IRIX Any version

Sun Microsystems: Solaris Any version

Wind River Systems, Inc.: BSD Any version

PRICEPRICE

PostgerSQL merupakan software yang open source.

SECURITYSECURITY

Sekuriti dari basis data dibagi menjadi beberapa level:

Proteksi berkas basis data, yaitu semua berkas yang tersimpan di basis

data terlindungi dari account manapun kecuali superuser account dari

postgres

Komunikasi antara user dengan server basis data by default, dilakukan

melalui local UNIX socket, bukan TCP/IP.

Koneksi user dapat diatur sehingga koneksi hanya bisa dari IP yang

ditentukan saja

17

Page 18: Paper PostgreSQL KelDoraDori

Setiap user di postgre mempunyai user name dan password. By

default, user hanya dapat melihat tabel basis data yang dibuat oleh

user tsb.

User dapat dimasukkan ke sebuah group sehingga akses tabel bisa

dibatasi oleh anggota group tersebut.

Authentikasi

Adalah proses pengecekan oleh server apakah user yang mengakses suatu

berkas basis data itu adalah user yang berhak atau tidak. User yang

mengakses akan di cek ke kelas pg_user untuk memastikan bahwa yang

mengakses itu adalah orang yang benar-benar yang punya basis data

tersebut.

Postgre mengecek autentikasi dengan cara Host-based Access Control,

yaitu user mana yang boleh mengakses sebuah basis data dan user tersebut

harus mengautentikasi dirinya sendiri.

Postgre juga menyediakan keluasaan bagi user untuk menentukan siapa saja

yang boleh mengakses basis data mereka melalui Access Control. Access

Control ini membatasi siapa saja yang bisa mengakses dengan cara seperti

memberikan superuser atau membatasi privileged yang didapat oleh seorang

user (misalnya membatasi hanya boleh membaca, tidak boleh mengubah).

PostgreSQL mengauthentikasikan user dalam beberapa metode:

Trust, koneksi user diizinkan tanpa syarat/pertimbangan

Reject, koneksi user ditolak tanpa syarat/pertimbangan

Crypt, client akan meminta password untuk mengauthentikasi user.

Password dikirim dari client ke server dengan cara dienkripsi terlebih

dahulu dengan crypt(3), lalu membandingkannya dengan password

yang disimpan di dalam table pg_shadow, yaitu table yang memuat

password para user. Jika cocok, maka koneksi diizinkan

Password, client akan meminta password kepada user, lalu password

ini akan dikirim langsung ke server dan dicocokkan dengan table

pg_shadow. Jika passwordnya cocok, maka mungkin akan diminta

mengirimkan berkas password untuk dicocokkan kemudian.

Semua metode di atas mensupport UNIX dan TCP/IP domain sockets.

18

Page 19: Paper PostgreSQL KelDoraDori

Metode di bawah ini hanya untuk TCP/IP domain sockets:

Krb4, kerberos v4

Krb5, kerberos v5

Ident, ‘ident server’ pada client akan mengauthentikasi user (RFC

1413). Kemudian, user dapat memberikan ‘map name’ untuk

dicocokkan kemudian ke user name yang tersimpan pada postgre

server.

Selain itu, terdapat cara juga untuk melakukan ‘secure TCP/IP connection’,

yaitu dengan cara menggunakan metode ssh untuk mengenkripsi koneksi

jaringan antara client dengan postgre server. Caranya adalah:

Buatlah sebuah koneksi ke server dengan cara ‘tunnel’ seperti

ssh –L 3333:server.domain.org:5432

[email protected]

angka pertama (3333) adalah port number dari tunnel yang berada di

client. Angka kedua (5432) adalah remote end dari tunnel atau port

postgre yang berada di server. Alamat server berada di antara kedua

angka tersebut. Argumen terakhir adalah optional user name. User

name ini bisa aja tidak berkaitan dengan postgre, asalkan diterima

oleh server.

Setelah mempunyai sesi ssh, koneksikan postgre client dengan port

yang merupakan tunnel daripada koneksi ssh sebelumnya.

Psql –h localhost –p 3333 –d mpw

-h disini adalah untuk memberitahu bahwa socket yang digunakan

adalah TCP/IP, bukan UNIX socket. Kita dapat juga menghilangkan –p

jika port tunnel yang digunakan adalah 5432

PERFORMANCEPERFORMANCE

19

Page 20: Paper PostgreSQL KelDoraDori

PostgreSQL terlihat telah menampilkan performa yang sangat baik. Pada

beberapa tahun belakangan ini, PostgreSQL telah mengalami peningkatan

yang pesat dan mempunyai fitur-fitur yang menarik, seperti partial locking

yang lebih baik daripada row level locking. Peningkatan performa seperti ini

tidak terlihat jika kita hanya memasukkan 100.000 baris data, namun akan

terlihat jelas pada situasi querying yang kompleks.

Setiap ahli database mengetahui bahwa sangat sulit dan subjektif untuk

membandingkan RDBMS’s. Namun, untuk mengetahui kualitas performa dari

PostgreSQL, kita akan membandingkan PostgreSQL dengan database

sebelumnya, yaitu dengan melakukan test setup.

The test servers

PostgreSQL 7.3.2 pada Pentium4 2.2 GHz/512MB/SCSI, RedHat linux 9

Larry 8i pada Pentium yang sama, Pentium4 2.2 GHz/512MB/SCSI, Win2000

Adv.

Server 100MB LAN, 2.4 GHz client workstation

Pelu diperhatikan bahwa PostgreSQL dikonfigurasikan untuk menggunakan

banyak shared memory daripada umumnya, karena pengaturan umumnya

sangat konservatif dan hal ini merusak performa dari database. Namun,

memori yang digunakan oleh PostgreSQL di dalam tes secara signifikan lebih

sedikit daripada memori yang digunakan Larry.

The databases

Database di-setup dengan data dan skema database yang paling baru dari

sebuah produksi database. Database tersebut menggunakan 48 tabel, dengan

179 index, 77 foreign keys, 30 sequences dan triggers, serta 138 views. Total

dari 200.000 lebih rekaman dimasukkan ke dalam tabel dengan ukuran yang

berbeda.

Real life simulation

Queries yang dikirim ke database di-log dari aplikasi regular klien selama sesi

typical. Queries tersebut cocok untuk kedua database. Log tersebut

dimodifikasi untuk merefleksikan user-logins yang berbeda dan digunakan

sebagai input untuk sesi simulasi pada test setup. Queries yang digunakan

mempunyai karakteristik sebagai berikut. Queries mempunyai sekitar 80

queries, dengan 10% entri/update/hapus, 74 (sub)selects, 46 menggunakan

views yang kompleks (cascaded). Hasilnya pada pengembalian 2000 rekaman

per-sesi. Kebiasaan membuat software klien berjalan 200 sesi dari 6

20

Page 21: Paper PostgreSQL KelDoraDori

pengguna yang konkuren, dimulai dengan penundaan startup untuk

meningkatkan querying yang asinkronus. Sesi klien yang sebenarnya adalah

sekitar 10 menit, sesi simulasi 4 detik. Tes software untuk mensimulasikan

sesi-sesi menggunakan pustaka vendor’s driver asal, bukan ODBC. Untuk

setiap database, sejumlah 24.000.000 rekaman dikembalikan sebagai hasil

dari 1200 sesi klien yang disimulasikan. Database dan queries mungkin tidak

benar-benar kompleks, namun banyak fitur yang digunakan, dan itu

merupakan sistem yang hidup dan matang, dengan sedikit redudansi dan

integritas yang baik, digunakan oleh banyak pelanggan. Kegunaan jaringan

tidak pernah melebihi 50% dari kapasitas total selama tes, dan batasan/limit

dari tes klien tidak pernah tercapai selama tes berlangsung.

Hasilnya (waktu untuk menyelesaikan tes)

PostgreSQL 7.3.2 14:38 min

Larry 8i 16:35 min

Jadi, walaupun kesimpulan umum tidak dapat digambarkan, namun

PostgreSQL sepertinya telah membuktikan bahwa ia merupakan pesaing yang

serius.

SPEEDSPEED

PostgreSQL terkenal akan fitur-fitur yang disediakannya, di mana telah

diketahui sejak dulu bahwa PostgreSQL mempunyai sekumpulan fitur yang

kaya dan lengkap, yang mendukung transaksi, view, subselect, foreign key

support, pemeriksaan, dan lain-lain. Namun kekayaan fitur tersebut tidak

berlaku dalam hal kecepatan. Padahal seperti yang kita ketahui, kecepatan

21

Page 22: Paper PostgreSQL KelDoraDori

merupakan salah satu aspek penting yang menentukan kinerja dari sebuah

database, di mana sebuah database memerlukan performa dengan kecepatan

yang tinggi.

PostgreSQL pada versi-versi awal mempunyai performa yang lambat dan

kecepatan dari PostgreSQL database telah diperdebatkan sejak lama. Namun,

isu ini tidak pernah benar-benar dibahas secara detail, kecuali pada TPC-C

Test yang diterbitkan oleh Great Bridge LLC. Tes ini menunjukkan bahwa

performa dari PostgreSQL paling tidak dapat disamakan, bahkan lebih baik,

daripada tiga database vendor utama dan MySQL, terutama untuk load yang

besar. Validitas dari tes tersebut ditanyakan oleh beberapa kelompok orang,

dikarenakan ODBC driver yang digunakan pada PostgreSQL ini kurang

meyakinkan.

ADVANTAGESADVANTAGES

PostgreSQL memberikan banyak keuntungan kepada para perusahaan atau

kegiatan bisnis yang menggunakan database system ini dibandingkan dengan

database system yang lain. Berikut adalah keuntungan-keuntungan tersebut,

antara lain:

Resisten terhadap over-deployment

Dengan menggunakan PostgreSQL, tidak ada seorangpun dapat

menuntut untuk pelanggaran terhadap perjanjian lisensi, sebagaimana

tidak ada biaya lisensi yang diasosiasikan (digabungkan) untuk

software. Hal ini menyebabkan PostgreSQL memberikan keuntungan

tambahan, antara lain:

o bisnis menjadi lebih profitable dengan skala penyebaran yang

luas

o tidak ada kemungkinan diperiksa untuk pemenuhan lisensi

o fleksibel untuk menjalankan konsep penelitian dan trial

deployment tanpa memerlukan biaya lisensi tambahan.

22

Page 23: Paper PostgreSQL KelDoraDori

Support yang lebih baik

Selain memberikan dukungan yang kuat, PostgreSQL juga mempunyai

komunitas ahli dan para peminat.

Menghemat biaya staffing

PostgreSQL telah didesain dan dibuat sedemikian rupa untuk

mempunyai tingkat pemeliharaan dan kebutuhan yang lebih rendah

daripada database systems sebelumnya, walaupun tetap

mempertahankan kualitas fitur, stabilitas, dan performa. Sehingga

biaya yang diperlukan PostgreSQL menjadi lebih efektif dan lebih dapat

diatur.

Terpercaya dan stabil

Banyak perusahaan yang melaporkan bahwa PostgreSQL tidak pernah,

bahkan sekalipun, mengalami crashed pada saat melakukan operasi

dengan tingkat aktivitas yang tinggi.

Extensible

Kita tidak memerlukan biaya sekecil apapun dan hanya memerlukan

sedikit usaha untuk melakukan perluasan terhadap PostgreSQL.

Cross platform

PostgreSQL dapat dijalankan hampir di setiap jenis Unix (34 platform

yang paling baru dirilis), juga di Windows dengan menggunakan

Cygwin.

Didesain untuk high volume environments

PostgreSQL menggunakan penyimpanan data dengan banyak baris

(multiple rows) yang dinamakan MVCC. Hal ini dimaksudkan agar

PostgreSQL sangat responsif pada high volume environments.

Desain database GUI dan administration tools

Beberapa tools GUI yang berkualitas tinggi tersedia untuk mengelola

database (pgAdmin, pgAccess), sekaligus desain database(Tora,

database architect).

Fitur-fitur yang sangat mendukung

PostgreSQL sangat kaya akan fitur-fitur yang disediakannya, antara

lain: rules, views, triggers, unicode, sequences, inheritance, outer join,

sub-selects, open API, dan masih banyak lagi.

23

Page 24: Paper PostgreSQL KelDoraDori

CONCURRENCY CONTROLCONCURRENCY CONTROL

Concurrent control atau lebih dikenal dengan Multiversion Concurrency

Control (MVCC) biasanya digunakan database management system untuk

akses secara concurrent ke database. MVCC menghubungkan setiap user ke

database dengan sebuah “snapshot” dari database ke setiap orang yang

sedang bekerja dengan database tersebut. Setiap perubahan tidak akan

terlihat sampai transaksi selesai dilakukan.

Transaction isolation

Ada empat standar level pembatasan pada SQL standar untuk menghindari 3

kejadian pada concurrent transaction. Yaitu :

dirty read : sebuah transaksi membaca data dari transaksi yang belum

disimpan

nonrepeatable read : sebuah transaksi membaca kembali data yang

sebelumnya penah dibaca dan menemukan data tersebut telah diubah

oleh transaksi lainnya

phantom read : sebuah transaksi meng-execute sebuah query dan

menemukan beberapa baris telah dirubah oleh transaksi lain yang

sedang berjalan.

Dan empat batasan tersebut adalah :

Di dalam PostGreSQL, user dapat me-request apa saja dari salah satu standar

level pembatasan . Tetapi hanya ada 2 batasan yang jelas yaitu Read

Committed dan Serializable. Ketika user memilih Repeatable Read, maka user

akan mendapatkan Seriliazable dan ketika user memilih Read Uncommitted,

maka user akan mendapatkan Read Committed.

24

Page 25: Paper PostgreSQL KelDoraDori

Explicit Locking

PostGreSQL menyediakan beberapa model locking untuk mengontrol

concurrent access ke table data.

a. Table-Level Locks

ACCESS SHARE

Commands SELECT dan ANALYZE memerlukan lock tipe ini. Jenis query

yang hanya memabaca table dan tidak mengubah data memerlukan

lock mode ini.

ROW SHARE

Commands SELECT FOR UPDATE dan SELECT FOR SHARE memerlukan

lock jenis ini pada table target.

ROW EXCLUSIVE

Diperlukan saat ada commands untuk merubah data pada table.

SHARE UPDATE EXCLUSIVE

Mode ini memproteksi table dari perubahan concurrent schema.

SHARE

Mode ini memproteksi table dari perubahan data secara concurrent.

SHARE ROW EXCLUSIVE

Secara otomatis diperlukan semua PostGreSQL command.

EXCLUSIVE

Mode ini mengizinkan hanya only concurrent ACCESS SHARE lock.

Lock ini secara otomatis diperlukan pada user table oleh PostGreSQL

Command.

ACCESS EXCLUSIVE

Mode ini menjamin hanya 1 user yang sedang mengakses table.

b. Row-Level Locks

Ada 2 level yaitu share lock level dan exclusive lock level. Exclusive

row secara otomatis diperlukan ketika mengupdate atau menghapus

suatu baris. Shared lock level tidak memproteksi table dari transaksi –

transaksi yang mengakses baris tersebut.

c. Deadlocks

Ketika ada 2 proses yang sama – sama merequest exclusive-lock,

maka PostGreSQL akan melakukan deadlock.

25

Page 26: Paper PostgreSQL KelDoraDori

Locking and Indexes

Beberapa cara pengindex-an pada PostGreSQL adalah :

B-tree and GiST indexes

Index tipe ini menyediakan concurrency tertinggi tanpa kondisi

deadlock

Hash indexes

Menyediakan concurrency yang lebih baik, tetapi kemungkinan

deadlock masih ada.

R-tree indexes

Lock dilepaskan setelah semua comman selesai. Jenis ini sudah jarang

digunakan pada saat ini.

26

Page 27: Paper PostgreSQL KelDoraDori

STORAGESTORAGE

Database file layout

Semua data yang diperlukan untuk database cluster disimpan di dalam

cluster's data directory. Umumnya mengacu sebagai PGDATA. Lokasi umum

untuk PGDATA adalah /var/lib/pgsql/data. Multiple clusters, di-manage oleh

postmasters yang berbeda dapat berada pada mesin yang sama.

PGDATA directory mengandung sub-directory:

Item Description

PG_VERSION A file containing the major version number of PostgreSQL

base Subdirectory containing per-database subdirectories

globalSubdirectory containing cluster-wide tables, such as

pg_database

pg_clog Subdirectory containing transaction commit status data

pg_multixactSubdirectory containing multitransaction status data (used for

shared row locks)

pg_subtrans Subdirectory containing subtransaction status data

pg_tblspc Subdirectory containing symbolic links to tablespaces

pg_twophase Subdirectory containing state files for prepared transactions

pg_xlog Subdirectory containing WAL (Write Ahead Log) files

postmaster.op

ts

A file recording the command-line options the postmaster was

last started with

postmaster.pidA lock file recording the current postmaster PID and shared

memory segment ID (not present after postmaster shutdown)

Subdirectory di atas adalah lokasi default untuk file database.

TOAST (The Oversized-Attribute Storage Technique).

PostgreSQL mengizinkan field value yang besar untuk di kompres dan atau

dibagi ke dalam banyak physical rows yang dikenal sebagai TOAST.

27

Page 28: Paper PostgreSQL KelDoraDori

TOAST code mengenali 4 strategi yang berbeda untuk menyimpan TOAST-able

columns:

Database Page Layout

Overall Page Layout

Item Description

PageHeaderDa

ta

20 bytes long. Contains general information about the page,

including free space pointers.

ItemPointerDat

a

Array of (offset,length) pairs pointing to the actual items. 4

bytes per item.

Free spaceThe unallocated space. New item pointers are allocated from

the start of this area, new items from the end.

Items The actual items themselves.

Special spaceIndex access method specific data. Different methods store

different data. Empty in ordinary tables.

PageHeaderData Layout

Field TypeLengt

hDescription

pd_lsn XLogRecPtr8

bytes

LSN: next byte after last byte of xlog

record for last change to this page

pd_tli TimeLineID 4 TLI of last change

28

PLAIN prevents either compression or out-of-line storage. This is the only possible strategy for columns of non-TOAST-able data types.

EXTENDED allows both compression and out-of-line storage. This is the default for most TOAST-able data types. Compression will be attempted first, then out-of-line storage if the row is still too big.

EXTERNAL allows out-of-line storage but not compression. Use of EXTERNAL will make substring operations on wide text and bytea columns faster (at the penalty of increased storage space) because these operations are optimized to fetch only the required parts of the out-of-line value when it is not compressed.

MAIN allows compression but not out-of-line storage. (Actually, out-of-line storage

Page 29: Paper PostgreSQL KelDoraDori

Field TypeLengt

hDescription

bytes

pd_lowerLocationInde

x

2

bytesOffset to start of free space

pd_upperLocationInde

x

2

bytesOffset to end of free space

pd_specialLocationInde

x

2

bytesOffset to start of special space

pd_pagesize_versi

onuint16

2

bytes

Page size and layout version number

information

HeapTupleHeaderData Layout

Field TypeLengt

hDescription

t_xmin TransactionId4

bytesinsert XID stamp

t_cmin CommandId4

bytesinsert CID stamp

t_xmax TransactionId4

bytesdelete XID stamp

t_cmax CommandId4

bytesdelete CID stamp (overlays with t_xvac)

t_xvac TransactionId4

bytes

XID for VACUUM operation moving a row

version

t_ctidItemPointerDat

a

6

bytescurrent TID of this or newer row version

t_natts int162

bytesnumber of attributes

t_infomas

kuint16

2

bytesvarious flag bits

t_hoff uint8 1 byte offset to user data

29

Page 30: Paper PostgreSQL KelDoraDori

STORED PROCEDURESTORED PROCEDURE

Stored procedure adalah program (prosedur) yang tersimpan di dalam

database. Biasanya stored procedure ini ditulis dalam sebuah bahasa

database yang disupport oleh vendor. Keunggulan daripada pemakaian stored

procedure adalah program yang dibuat akan dijalankan di engine

databasenya, bukan pada client dan bukan pada database servernya itu

sendiri. Engine database ini pada umumnya lebih cepat dalam menangani

query dan request. Database server itu sendiri mempunyai akses langsung ke

data di dalam database itu sendiri, sehingga proses manipulasi dari data

tersebut dilakukan di dalam servernya sendiri dan database server hanya

tinggal memberikan hasil akhir dari sebuah prosedur tersebut. Bayangkan jika

prosedur tersebut berada pada client-side program. Pemanipulasian data akan

berada di client, sehingga data traffic antara client dan server akan tinggi.

Selain itu, program harus menunggu response dari server untuk bisa masuk

dalam tahap prosedur selanjutnya.

Beberapa kegunaan dasar dari stored procedure adalah misalnya data

validation (biasanya dalam suatu trigger), atau peng-enkapsulasian suatu

rangkaian proses query yang kompleks. Rangkaian query tersebut akan

berjalan lebih cepat jika berada di database server daripada berjalan di client

program dengan cara mengirimkan querynya satu persatu.

Kegunaan lain dari stored procedure adalah memudahkan data management.

Kita bisa langsung memasukkan business logic ke dalam cara pengambilan

data kita melalui stored procedure, sehingga meminimalkan penulisan code

pengambilan data pada program. Hal ini dapat meminimalisir kesalahan code

pada program dan juga meminimalisir data corruption pada proses manipulasi

data.

Procedural language yang disupport langsung oleh postgreSQL adalah

PL/pgSQL (Procedural Language/postgre SQL). PL/pgSQL ini adalah sebuah

procedural language yang memberikan fleksibilitas tinggi dibandingkan

dengan query biasa, seperti fasilitas loop dan control structures (if/case).

30

Page 31: Paper PostgreSQL KelDoraDori

Program yang dibuat oleh PL/pgSQL adalah sebuah function dan dianggap

oleh postgreSQL sebagai sebuah statement atau sebuah aksi yang dilakukan

trigger.

Tujuan dari PL/pgSQL adalah membuat procedural language yang:

dapat membuat function dan prosedur trigger

memfasilitasi control structure pada query

melakukan manipulasi data yang kompleks

meng-inherit semua types, operator, dan function yang dibuat oleh

user

mudah dibuat dan mudah dijalankan

Procedural language lainnnya yang disupport oleh postgreSQL misalnya

PL/Tcl, PL/Perl, PL/Python, dll.

Procedural language harus di “install” ke dalam sebuah database terlebih

dahulu untuk dapat digunakan oleh database tersebut.

31

Page 32: Paper PostgreSQL KelDoraDori

Untuk membuat sebuah function, kita bisa membuatnya dengan cara sebagai

berikut:

CREATE FUNCTION handler_function_name()

RETURNS language_handler

AS 'path-to-shared-object'

LANGUAGE C;

Lalu, untuk membuat sebuah validator, kita menggunakan

CREATE FUNCTION validator_function_name(oid)

RETURNS void

AS 'path-to-shared-object'

LANGUAGE C;

Lalu, kita mendeclare functionnya

CREATE [TRUSTED] [PROCEDURAL] LANGUAGE language-name

HANDLER handler_function_name

[VALIDATOR validator_function_name] ;

keyword [trusted] di sana adalah agar user yang bukan superuser dapat

menggunakan function tersebut.

Jika kita ingin membuat PL dalam PL/pgSQL

CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS

'$libdir/plpgsql' LANGUAGE C;

CREATE FUNCTION plpgsql_validator(oid) RETURNS void AS

'$libdir/plpgsql' LANGUAGE C;

CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql

HANDLER plpgsql_call_handler

VALIDATOR plpgsql_validator;

Bentuk umum untuk membuat sebuah function dalam postgreSQL adalah sbb

CREATE FUNCTION populate() RETURNS integer AS $$

DECLARE

-- declarations

BEGIN

PERFORM my_function();

END;

$$ LANGUAGE plpgsql;

32

Page 33: Paper PostgreSQL KelDoraDori

DATA MANIPULATIONDATA MANIPULATION

Untuk membuat sebuah table

CREATE TABLE products (

product_no integer,

name text,

price numeric

);

Untuk memasukkan data ke table di atas

INSERT INTO products VALUES (1, 'Cheese', 9.99);

atau kita dapat memasukkan sesuai tuple/field yang kita inginkan

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);

INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);

Kita juga dapat mengosongkan sebuah field, sehingga diisi dengan nilai

defaultnya

INSERT INTO products (product_no, name) VALUES (1, 'Cheese');

kita juga dapat meminta untuk dimasukkan default value untuk memperjelas

query

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese',

DEFAULT);

INSERT INTO products DEFAULT VALUES;

Untuk mengupdate, kita harus memberikan nama table dan column yang

diupdate, nilai baru dari column tersebut, dan row mana saja yang diupdate.

Contoh:

UPDATE products SET price = 10 WHERE price = 5;

Untuk menghapus, kita bisa langsung menghapus sebuah row dari primary

keynya atau dari sebuah conditional statement. Secara garis besar,

menghapus tidak jauh berbeda dari update. Contohnya:

DELETE FROM products WHERE price = 10;

atau kita juga bisa menghapus semua entry dari sebuah table

DELETE FROM products;

33

Page 34: Paper PostgreSQL KelDoraDori

34

Page 35: Paper PostgreSQL KelDoraDori

KESIMPULANKESIMPULAN

PostgreSQL adalah oper source relation database system yang sangat

powerful. PostGreSQL sudah lebih dari 15 tahun aktif dalam

pengembangannya dan arsitektur yang dibangunnyapun memiliki

reputasi yang bagus, handal, lengkap, dan akurat.

PostgreSQL terkenal akan fitur-fitur yang disediakannya, namun tidak

untuk hal kecepatan. PostgreSQL pada versi-versi awal mempunyai

performa yang lambat dan kecepatan dari PostgreSQL telah

diperdebatkan sejak lama.

Ada banyak platform yang dapat menjalankan PostgreSQL, antara lain:

Unix-compatible platform, IBM, Microsoft corporation, dan lain-lain.

PostgreSQL memberikan banyak keuntungan, antara lain: Resisten

terhadap over-deployment, menyediakan support yang lebih baik,

menghemat biaya staffing, terpercaya dan stabil, extensibleI, cross

platform, didesain untuk high volume environments, desain database

GUI dan administration tools, serta fitur-fitur yang sangat mendukung.

Untuk memanipulsi data ada tiga jenis perintah utama yang dapat

dilakukan pada postGreSQL yaitu Insert data, Manipulasi data, dan

terakhir menghapus data.

PostgreSQL menyediakan keluasaan bagi user untuk menentukan siapa

saja yang boleh mengakses basis data mereka melalui Access Control.

PostgreSQL mengauthentikasikan user dalam beberapa metode: Trust,

Reject, Crypt, Password

Administrative Tool berupa backup dan restore, yang disediakan oleh

PostgreSQL, diantaranya dump, file system, dan online backup yang

menyediakan hot standby system.

PostgreSQL menggunakan multiversion model (Multiversion

Concurrency Control, MVCC). PostgreSQL memiliki 2 level transaksi

isolation yaitu Read Commited Isolation Level dan Serializable Isolation

Level.

PostgreSQL menyediakan indexing yang di-define sendiri oleh user

yang akan memudahkan pencarian dalam tabel.

35

Page 36: Paper PostgreSQL KelDoraDori

DAFTAR PUSTAKADAFTAR PUSTAKA

PostgreSQL Global Development Group. http://www.postgresql.org. (27 Februari 2006, 16:07)

Schaeffer, C. dan Hondius, J. http://research.rem.nl (27 Februari 2006, 16:11)

http://www.astroconsulting.com/FAQs/art_evolution_in_greece_and_rome.htm (27 Februari 2006, 16:11)

http://www.bulfinch.org/fables/welcome.html#Contents (27 Februari 2006, 16:11)

Daithankar, Shridhar dan Berkus, Josh. http://www.varlena.com. (27 Februari 2006, 16:05)

36