Kamis, 03 Desember 2009

JAVA

TEMAN - TEMAN YANG INGIN JAWABAN JAVA MASUK KE BLOG INI....

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.