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

PAPER… Presented by

May 02, 2023

Download

Documents

Jen Ricardo
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… Presented by

…PAPER……PAPER…

Presented by:

Nurilla Reski Iryani1204000653

Ratih Amalia1204000734

Wisnu LW120400092Y

Page 2: PAPER… Presented by

Zoni Yuki H1204000955

Sutanto Sugii Joji1204007089

2

Page 3: PAPER… Presented by

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

3

Page 4: PAPER… Presented by

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

4

Page 5: PAPER… Presented by

Limit Value

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

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.

5

Page 6: PAPER… Presented by

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.

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.

6

Page 7: PAPER… Presented by

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.

7

Page 8: PAPER… Presented by

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.

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

8

CREATE INDEX customer_custid_idx ON customer (customer_id);

Page 9: PAPER… Presented by

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.

9

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

Page 10: PAPER… Presented by

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

10

Page 11: PAPER… Presented by

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.

11

Page 12: PAPER… Presented by

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.

12

Page 13: PAPER… Presented by

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)

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.

13

Page 14: PAPER… Presented by

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;

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.

14

Page 15: PAPER… Presented by

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

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

15

Page 16: PAPER… Presented by

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

16

Page 17: PAPER… Presented by

Cara lainnya adalah dengan langsung melakukan pengandaan

file yang digunakan PostgreSQL untuk menyimpan data di

database. Kita bisa 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:

17

Page 18: PAPER… Presented by

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.

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.

18

Page 19: PAPER… Presented by

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 Con gurationfi

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

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

19

Page 20: PAPER… Presented by

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

Data General: DG/UX Any version

20

Page 21: PAPER… Presented by

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

21

Page 22: PAPER… Presented by

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

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

22

Page 23: PAPER… Presented by

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.

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

23

Page 24: PAPER… Presented by

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

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

24

Page 25: PAPER… Presented by

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 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

25

Page 26: PAPER… Presented by

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 merupakan salah satu aspek

penting yang menentukan kinerja dari sebuah database, di mana

sebuah database memerlukan performa dengan kecepatan yang tinggi.

26

Page 27: PAPER… Presented by

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.

27

Page 28: PAPER… Presented by

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

28

Page 29: PAPER… Presented by

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.

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 :

29

Page 30: PAPER… Presented by

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.

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.

30

Page 31: PAPER… Presented by

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.

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.

31

Page 32: PAPER… Presented by

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_VERSIONA file containing the major version number of

PostgreSQL

base Subdirectory containing per-database subdirectories

globalSubdirectory containing cluster-wide tables, such as

pg_database

pg_clogSubdirectory 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_twophaseSubdirectory containing state files for prepared

transactions

pg_xlog Subdirectory containing WAL (Write Ahead Log) files

postmaster.o

ptsA file recording the command-line options the

postmaster was last started with

postmaster.p

id

A lock file recording the current postmaster PID and

shared memory segment ID (not present after

32

Page 33: PAPER… Presented by

Item Description

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.

TOAST code mengenali 4 strategi yang berbeda untuk menyimpan

TOAST-able columns:

Database Page Layout

Overall Page Layout

Item Description

PageHeaderDa 20 bytes long. Contains general information about the

33

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

Page 34: PAPER… Presented by

Item Description

ta page, including free space pointers.

ItemPointerD

ata

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

items. 4 bytes per item.

Free space

The unallocated space. New item pointers are

allocated from the start of this area, new items from

the end.

Items The actual items themselves.

Special

space

Index 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 TimeLineID4

bytesTLI of last change

pd_lowerLocationIn

dex

2

bytesOffset to start of free space

pd_upperLocationIn

dex

2

bytesOffset to end of free space

pd_specialLocationIn

dex

2

bytesOffset to start of special space

pd_pagesize_ver

sionuint16

2

bytes

Page size and layout version

number information

HeapTupleHeaderData Layout

34

Page 35: PAPER… Presented by

Field TypeLengt

hDescription

t_xminTransactionI

d

4

bytesinsert XID stamp

t_cmin CommandId4

bytesinsert CID stamp

t_xmaxTransactionI

d

4

bytesdelete XID stamp

t_cmax CommandId4

bytes

delete CID stamp (overlays with

t_xvac)

t_xvacTransactionI

d

4

bytes

XID for VACUUM operation moving a

row version

t_ctidItemPointerD

ata

6

bytes

current TID of this or newer row

version

t_natts int162

bytesnumber of attributes

t_infoma

skuint16

2

bytesvarious flag bits

t_hoff uint81

byteoffset to user data

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

35

Page 36: PAPER… Presented by

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). Program yang dibuat oleh PL/pgSQL

36

Page 37: PAPER… Presented by

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.

37

Page 38: PAPER… Presented by

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

38

Page 39: PAPER… Presented by

CREATE FUNCTION populate() RETURNS integer AS $$

DECLARE

-- declarations

BEGIN

PERFORM my_function();

END;

$$ LANGUAGE plpgsql;

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,

39

Page 40: PAPER… Presented by

'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;

40

Page 41: PAPER… Presented by

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.

41

Page 42: PAPER… Presented by

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.

42

Page 43: PAPER… Presented by

DAFTAR PUSTAKADAFTAR PUSTAKA

PostgreSQL Global Development Group. http://www.postgresql.org. (27Februari 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 (27Februari 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. (27Februari 2006, 16:05)

43