Sabtu, 17 Oktober 2009

Kekurangan PostgreSQL

Meskipun PostgreSQL telah banyak memberikan keuntungan, tetapi database system ini juga mempunyai beberapa kekurangan.

Kekurangan postgreSQL antara lain:
1. Belum mendukung selectable stored procedure seperti firebird.
2. Physical database (table) file nya berserakan.
3. Konsep penyimpanan fisiknya satu objek = 1 atau lebih file, bukan 1 database = 1 file.
4. Tidak memiliki performa kecepatan yang tinggi dibanding dengan database yang lainnya. Kekurangan inilah yang selalu diperdebatkan sejak lama.

Kelebihan PostgreSQL

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. Akan tetapi PostgreSQL selama ini telah banyak memberikan keuntungan yang lebih terhadap para perusahaan atau kegiatan bisnis yang menggunakan database system ini dari pada dengan database system yang lainnya.

Berikut ini adalah kelebihan – kelebihan yang terdapat di PostgreSQL, antara lain:

1.Resisten tehadap 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.

2.Support yang lebih baik
Selain memberikan support yang kuat, PostgreSQL juga mempunyai komunitas ahli dan para peminat.

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

4.Terpercaya dan stabil
Banyak perusahaan yang melaporkan bahwa PostgreSQL tidak pernah, bahkan sekalipun, mengalami crashed pada saat melakukan operasi dengan tingkat aktivitas yang tinggi.

5.Extensible (dapat diperluas)
Kita tidak memerlukan biaya sekecil apapun dan hanya memerlukan sedikit usaha untuk melakukan perluasan terhadap PostgreSQL.

6.Cross platform
PostgreSQL dapat dijalankan hampir di setiap jenis Unix (34 platform yang paling baru dirilis), juga di Windows dengan menggunakan Cygwin.

7.Didesain untuk environmentshigh volume
PostgreSQL menggunakan penyimpanan data dengan banyak baris (multiple rows) yang dinamakan MVCC. Hal ini dimaksudkan agar PostgreSQL sangat responsif pada high volume environments.

8.Desain database GUI dan administration tools
Beberapa tools GUI yang berkualitas tinggi tersedia untuk mengelola database (pgAdmin, pgAccess), sekaligus desain database(Tora, database architect).

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

Speed PostgreSQL

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.


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.


Security PostgreSQL

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

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


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 postgres@server.org

  • 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

Platform PostgreSQL

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

  • 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

Engine Interface PostgreSQL

PostgreSQL adalah database system yang luar biasa. Banyak pengguna PostgreSQL yang telah merasakan keunggulan dan ketangguhannya. Untuk bekerja dengan database system ini, kita membutuhkan sebuah client. Client default yang datang dengan PostgreSQL adalah psql, yang berbasiskan CLI (Command Line Interface). Barangkali semua setuju bahwa PostgreSQL adalah database system hebat. Tapi, siapa yang tahan kalau harus terusterusan menggunakan psql untuk berkomunikasi dengan server PostgreSQL.

Psql memang aplikasi client yang sangat fleksibel. Aksi-aksi seperti penghapusan, pengubahan tabel dan berbagai hal yang berhubungan dengan DDL dapat dilakukan dengan sangat cepat Namun, terkadang kita menjadi begitu repot dalam melakukan hal yang berhubungan dengan DML Apabila
Anda ingin mencoba client lain, pgAdmin3 adalah client PostgreSQL yang layak dicoba. Tidak seperti psql yang berbasiskan CLI, pgAdmin3 berbasiskan GUI yang ditulis dengan bahasa C++ dan pustaka wxWindow.

Dengan demikian, untuk melaksanakan beberapa tugas tertentu, Anda dapat menyelesaikannya dengan satu atau dua operasi klik. Dengan pgAdmin3 juga, berbagai tugas dasar seperti melihat informasi sistem, status database, dan tugas-tugas informatif lainnya dapat dilihat dengan sangat detail. PostgreSQL penulis secara default dijalankan tanpa membuka koneksi TCP. Dan selama ini, penulis menggunakan PHPPgAdmin. Tidak masalah dengan tidak terbukanya koneksi TCP tersebut.



Fitur PostgreSQL

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.

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


Selain itu juga terdapat fitur secara teknis yang terdapat pada postgreSQL yaitu :

  • Fully ACID compliant

  • Transaction, merupakan jawaban untuk mereka yang memerlukan fasilitas tersebut tapi belum menemukannya di MySQL

  • ANSI SQL compliant

  • Integritas referensial

  • Replikasi (non-komersial dan komersial solusi) yang memungkinkan duplikasi database master ke beberapa budak mesin

  • Native interface untuk ODBC, JDBC,. Net, C, C + +, PHP, Perl, TCL, ECPG, Python, dan Ruby

  • Aturan

  • Tinjauan

  • Pemicu

  • Unicode

  • Sequences

  • Warisan

  • Outer Joins

  • Sub-memilih

  • API terbuka

  • Stored Procedures

  • Native SSL support. Asli dukungan SSL

  • Prosedural bahasa

  • Hot stand-by (komersial solusi)

  • Lebih baik daripada penguncian tingkat-baris

  • Fungsional dan Partial indexes

  • Native Kerberos authentication

  • Dukungan untuk UNION, UNI dan KECUALI SEMUA queries

  • Loadable ekstensi menawarkan SHA1, MD5, XML, dan fungsi lainnya

  • Alat untuk menghasilkan SQL portabel untuk berbagi dengan SQL-compliant lain sistem

  • Jenis data extensible sistem yang menyediakan untuk kustom, user-defined datatypes dan perkembangan pesat datatypes baru

  • Database kompatibilitas cross-fungsi untuk meringankan transisi dari yang lain, kurang SQL-compliant RDBMS

  • Multi-Version Concurrency Control (MVCC)

  • Point in time recovery

  • Tablespaces




Kamis, 15 Oktober 2009

History PostgreSQL



PostgreSQL memiliki sejarah yang lebih panjang dan berliku. Pertama memulai hidupnya dalam wujud bernama Ingres (“Interactive Graphics and Retrieval System”), yang dikembangkan di Universitas Berkeley mulai tahun 1977 hingga 1985. Pemimpin proyek Ingres adalah Profesor Michael Stonebraker dan Eugene Wong. Ingres mula-mula dikembangkan di atas platform komputer mini PDP-11. Pada waktu itu belum ada SQL, dan Ingres memiliki bahasa query tersendiri yang disebut QUEL.

Kode Ingres kemudian dikomersilkan sehingga berdirilah Relational Technologies (yang lalu berganti nama menjadi Ingres Corporation, dan kini berada di bawah perusahaan Computer Associates). Sementara itu, dari universitas yang sama, didirikan pulalah perusahaan Sybase dan Illustra (yang lalu bernama Informix, dan kini telah dibeli oleh IBM) oleh para alumninya. Profesor Stonebraker sempat terlibat di ketiga perusahaan ini. Salah satu pendiri Ingres juga merupakan pendiri Illustra. Jadi dari Ingres lahir berbagai produk database: Ingres sendiri, Sybase, dan Informix. Database komersial Ingres (yang mengalami berbagai metamorfosis nama, mulai dari Ingres II, Ingres NET, CA-Ingres, CA-OpenIngres, CA Advantage Ingres) masih ada dan dijual hingga kini.

Dari proyek Ingres juga lahirlah proyek penerusnya, Postgres (1986–1994). Dipimpin juga oleh Stonebraker, proyek ini bertujuan membuat Ingres agar menjadi lebih berorientasi objek. Kode Postgres inilah yang diambil menjadi Illustra dan Informix.

Tahun 1995 dua mahasiswa S2 di universitas yang sama, Jolly Chen dan Andrew Yu, menambahkan SQL pada Postgres untuk menggantikan QUEL. Hasilnya adalah Postgres95. Akhirnya kedua mahasiswa pun lulus dan meninggalkan Berkeley, namun Chen masih terus memaintain Postgres95. Produk ini memiliki komunitas yang aktif berdiskusi di mailing list. Setahun berikutnya, Postgres95 jadi bertambah popular. Anggota mailing list telah mencapai 1000 orang. Seseorang bernama Marc G. Fournier dari Kanada menawarkan sebuah server untuk dipakai menjadi host mailing list dan CVS. Hingga saat itu, ada empat orang yang menjadi pengembang utama Postgres95: Chen, Fournier, dan dua orang lain yaitu Thomas Lockhart di California, AS dan Vadim Mikheev di Rusia. Namun Postgres95 dikembangkan bersama-sama lewat Internet dan sumbangan patch dan berbagai orang di seluruh pelosok dunia.

Sayangnya, proyek ini belum terkelola secara baik, apalagi profesional. Semua pengembang utamanya punya karir masing-masing. Mereka hanya mengembangkan Postgres95 sebagai kerja hobi atau sampingan. Padahal jumlah pemakai sudah cukup banyak. Laporan-laporan bug banyak yang tidak tertangani dengan baik. Menurut Chen, keluarga Postgres secara tradisional dikembangkan dalam suasana akademik, dan belum siap untuk menerima sumbangan kode dan laporan bug yang begitu banyak. Lagipula, kode turun-temurun dari Ingres dan Postgres ini belum sepenuhnya dimengerti, bahkan oleh Chen. Untungnya, para pengembang Postgres95 berdedikasi untuk berbenah diri.

Pertengahan 1996, nama Postgres95 sepakat dianggap sudah basi, maka lahirlah PostgreSQL (baca: post-grés-kju-él), dengan label versi dimulai dari angka 6.0 (versi terakhir dari Postgres/Berkeley adalah 4.2, dan Postgres95 dianggap versi 5.x). Di sinilah, dan juga berlanjut di keluarga 7.0–7.1, banyak terjadi peningkatan dalam hal skalabilitas, fitur, dan kecepatan.

Meskipun demikian, perbaikan berlangsung tidak secara tiba-tiba, melainkan berangsur-angsur. Para pengembangnya perlu terlebih dulu masih perlu membenahi kode-kode lama dan kode yang belum sepenuhnya dimengerti. Hingga versi 6.4 (1998) misalnya—di mana banyak ditambahkan fitur baru seperti dukungan karakter internasional, bahasa stored procedure baru, view, dan beberapa sintaks SQL tambahan—banyak terjadi masalah stabilitas. Beberapa pemakai melaporkan menjalankan proses server PostgreSQL yang lalu secara misterius tiba-tiba mati tanpa laporan apa-apa di log—alias crash. Sebagian yang lain melaporkan diskonek secara acak. Dan sebagian lagi mengeluhkan kurang memuaskannya kinerja PostgreSQL. Bahkan ada pemakai yang membelot ke MySQL. Periode ini merupakan saat-saat yang cukup mengkhawatirkan bagi popularitas PostgreSQL. Contohnya, lihat www.phpbuilder.com/columns/tim20000705.php3 di mana Tim Perdue menceritakan bahwa di tahun 1999, ia terpaksa beralih ke MySQL dalam membangun SourceForge. Kinerja PostgreSQL terlalu berbeda dengan MySQL sehingga mau tak mau pengguna setia PostgreSQL ini harus berganti database.

Versi 6.5 menurut pengembang PostgreSQL merupakan babak baru pemahaman mereka terhadap keseluruhan source code PostgreSQL. Versi ini juga merupakan versi perbaikan bug yang penting; ada banyak bug seperti berbagai kasus crash, kebocoran memori, dan kejanggalan/kekurangan pada sintaks SQL-nya diperbaiki. Selain itu, di versi 6.5 ditambahkan MVCC oleh Vadim, yang berpotensi meningkatkan kinerja PostgreSQL secara signifikan. MVCC, atau Multi Version Concurrency Control, serupa dengan InnoDB pada MySQL dalam hal memberikan kemampuan PostgreSQL memperlihatkan lebih dari satu versi tampilan data bagi klien. Perubahan data yang dibuat oleh klien yang sedang melakukan transaksi tidak akan terlihat dulu oleh klien lain sebelum transaksi dicommit. Ini menghindari locking yang tidak perlu.

Versi 6.5.x (1999, seri terakhir dari 6.x) cukup berhasil dan memuaskan bagi para pemakainya. Namun masih ada beberapa kekurangan PostgreSQL yang dirasakan mengganjal bagi banyak orang. Kekurangan-kekurangan ini lambat laun diperbaiki di seri 7.x, dan menurut Bruce Momjian, di seri 7.3 ia berharap PostgreSQL akan sepenuhnya layak dan sebanding dengan database komersial dalam hal fitur penting. Satu keterbatasan yang paling menyebalkan yaitu ukuran data maksimum sebuah field hanya 8–32KB. Ini menyebabkan orang sulit menyimpan teks panjang atau gambar di dalam database. Keterbatasan ini akhirnya dihapuskan di 7.1. Penambahan penting lainnya antara lain foreign key constraint (ditambahkan di 7.0), write-ahead logging untuk peningkatan keamanan dan kinerja (7.1), serta OUTER JOIN. Masih ada lagi fitur seperti replikasi yang rencananya akan ditambahkan setelah 7.2.

Pengguna setia PostgreSQL boleh berbangga dengan seri 7.x. Di seri ini PostgreSQL mulai menantang dan bahkan mengungguli MySQL dalam hal kecepatan, terutama di query-query kompleks dan pada kondisi load tinggi. Dalam artikelnya Tim Perdue melaporkan hasil benchmark MySQL 3.23 dan PostgreSQL 7.0 dan kesimpulannya adalah: PostgreSQL memang telah menjadi semakin baik. Dan kecepatannya cukup mengagumkan. Stabil pula.

Setelah PostgreSQL berkembang menjadi yaitu 7.2 PostgreSQL dikembangkan dengan siklus rilis sekitar 4 bulan,. di antara pengembang inti PostgreSQL yang paling aktif antara lain Thomas, Vadim, Tom Lane (AS), Tatsuo Ishii (Jepang), Hiroshi Inoue (Jepang), Philip Warner (Australia), dan Bruce Momjian (AS).


Nama Anggota Kelompok

Nama Anggota Kelompok Mata Kuliah System Basis Data :

      1. Arif Wahyu Triono

      2. Bagus Indra Pamungkas

      3. Hendro Harmono

      4. M. Ardhy

      5. M. Ikhwan Ngisomudin 

      6. Muhammad Ahlish Ulinnuha