WELCOME TO MY BLOG RAHAYU

WELCOME TO MY BLOG RAHAYU

Kamis, 30 Desember 2010

PGROUTING SQL

pgRouting

pgRouting merupakan proyek (lagi-lagi) open source dari PostLBS untuk menambahkan fungsi routing (penghitungan jarak terpendek dari data polyline) pada PostGIS berdasarkan bahasa prosedural PG/PLSQL. Menggunakan metoda yang sama kita lihat pada perangkat lunak berbayar seperti Arc* dan MapInfo, PostLBS memperkuat pgRouting ini dengan metoda Dijkstra, A* (A-star), Shooting Star, TSP (Travelling Sales Person) dan DDC (Driving Distance Calculation) untuk membedakan jalur yang dapat ditempuh oleh kendaraan ataupun jalan kaki, sama seperti opsi yang terdapat pada routing Google Maps/Earth.
Terlepas dari validasi data yang baik atau tidak, pgRouting mampu memberikan hasil kalkulasi yang cukup akurat. Sayangnya, untuk beberapa geodata yang ada di Indonesia, proses digitasi data tidak dilakukan dengan validasi yang cukup baik. Secara harafiah, data vektor merupakan data yang memiliki besaran dan arah tertentu. Namun untuk beberapa data di Indonesia, vektorisasi ini tidak melalui proses Quality Control yang cukup baik sehingga tidak memiliki arah yang sesuai dengan data aslinya. Misalnya begini, jalan A  memiliki cabang menuju B dan C sedangkan BC terhubung oleh arah B menuju C. Sedangkan ketersediaan data setelah digitasi menghasilkan A ke B, A ke C, dan C ke B. Ilustrasinya:
Untuk hasil routing menggunakan pgDijkstra dapat dilihat di tulisan sebelumnya, yang sangat bergantung pada kualitas data ini. Ini jelas akan mempengaruhi untuk dunia yang sebenarnya denganrouting untuk dua arah akan sangat sulit dilakukan dan dipertanggungjawabkan keakuratannya.
Catatan tambahan lainnya, berdasarkan hasil pengalaman, tipe PostGIS tampaknya tidak terlalu bersahabat untuk yang ingin melakukan clean update pada data geometri. Misalnya pada saat development Anda menggunakan PostGIS versi 1.2.1 sedangkan production server menggunakan versi 1.2.5, tidak dapat melakukan backup sebagai SQL dari 1.2.1 dan memasukkan secara langsung ke server v1.2.5. Data tidak akan valid.
Tidak mengetahui secara detail bagaimana perkembangan saat ini, namun untuk beberapa pekerjaan, aku selalu melakukan konversi shapefile ke sql untuk data yang sama dan proses update untuk data tekstual atribut lainnya. Ini sangat penting untuk dilakukan karena setiap kali kita melakukan konversi dari format yang satu ke format lainnya, kualitas data akan berkurang.

POSTGREE SQL

 POSTGRE SQL
PostgreSQL, atau yang sering disingkat menjadi pgsql dan pg* untuk yang berhubungan dengannya, merupakan sistem basis data open source yang sangat handal dan mampu menangani objek data yang sangat besar. Banyak yang mempercayai PostgreSQL saat ini menjadi sistem database yang paling baik dan efektif, tentu saja tidak terlepas dari harga yang gratis dan mampu bekerja sama baiknya di hampir seluruh sistem operasi saat ini, Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), dan Windows. Bahkan berdasarkan kutipan di situs resminya, PostgreSQL mampu menampung objek data binari yang sangat besar seperti gambar atau foto, suara atau lagu, bahkan video.
Berikut adalah batasan yang mereka deskripsikan tergantung versi database server Anda:
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
Maximum Indexes per Table
Unlimited
Indahnya dunia opensource tentu saja tidak terlepas dari fleksibilitas dan dukungan pengembangan beberapa extension dari kemampuan dasar. Kompabilitas penuh terhadap standar bahasa SQL maupun bahasa pemrograman C menciptakan beberapa fungsi atau prosedur yang sangat menarik dan nicheuntuk beberapa kebutuhan. Salah satu bahasa yang digunakan adalah PL/SQL (atau PG/PLSQL pada kasus ini). 

perbedaan SQL Plus dan PLSQL

SQL Plus dan PLSQL


SQL (Structured Query Language) adalah sebuah bahasa yang dipergunakan untuk
mengakses data dalam basis data relasional. Bahasa ini secara de facto merupakan bahasa
standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua server
basis data yang ada mendukung bahasa ini untuk melakukan manajemen datanya.
Bagi seorang programmer, menguasai SQL adalah sebuah kewajiban, karena program
jaman sekarang pasti menggunakan database untuk menyimpan datanya. Bagi mereka yang
bisa menggunakan program PHP, biasa menggunakan database mysql dan oracle. Jadi
untuk membuat sebuah aplikasi mereka menggunakan program PHP dan database.
Sementara khusus bagi oracle, ada istilah PL/SQL. PL/SQL yang merupakan
singkatan dari Procedural Language/Structured Query Language merupakan sebuah
penggabungan antara bahasa pemrograman prosedural (PL) dan SQL syntax.
Jadi dengan PL/SQL kita tidak perlu menggunakan sebuah bahasa pemrograman
sendiri. fungsi-fungsi standard di bahasa pemrograman sudah ada di sini dan bisa langsung
digabung dengan perintah SQL untuk memanipulasi database. Tapi PL/SQL cuma ada di
database oracle saja.
PL / SQL mendukung variabel, kondisi, loop dan pengecualian. Array juga didukung,
meskipun dengan cara yang agak tidak biasa, yang melibatkan penggunaan PL / SQL
Collection. PL/SQL Collection adalah topik yang banyak dikenal. Oracle Database telah
memasukkan fitur yang berhubungan dengan objek-orientasi. PL / SQL program unit
(dasarnya kontainer code) dapat dikompilasi ke database Oracle. Sehingga Programmer dapat
menanamkan PL / SQL unit fungsionalitas ke dalam database secara langsung. Mereka juga
dapat menulis skrip yang berisi PL / SQL program unit yang dapat membaca ke database
menggunakan alat Oracle SQL*Plus. Setelah unit program telah disimpan ke dalam database,
maka akan mudah dieksekusi.
Sementara programmer dapat dengan mudah menanamkan Data Manipulation
Language (DML) laporan langsung ke kode mereka PL SQL lurus ke depan dengan
menggunakan statemen SQL, Data Definition Language (DDL) membutuhkan lebih
kompleks "Dynamic SQL" pernyataan yang akan ditulis dalam kode / PL SQL. Namun,
pernyataan DML mendukung mayoritas PL / SQL code dalam aplikasi perangkat lunak khas.
Dalam kasus PL / SQL SQL dinamis, versi awal dari Database Oracle diperlukan penggunaan
perpustakaan paket DBMS_SQL rumit Oracle.. Sedangkan pada Oracle Corporation lazim
menambah fungsionalitas setiap rilis paket dengan berturut-turut dari Database Oracle.
STRUKTUR PL/SQL
Struktur PL/SQL mirip dengan struktur bahasa pascal atau delphi yang menggunakan
struktur blok, sehingga akan mempermudah pengertian dalam pemrograman dengan PL/SQL.
Struktur Blok berisi perintah SQL dengan kondisi yang berbeda. Perintah PL/SQL dapat
menangani kesalahan saat dijalankan. Setiap pengetikan dengan menggunakan PL/SQL
dalam SQL*Plus selalu diakhiri dengan tanda /(slash). Sintaks penggunaan PL/SQL adalah
sebagai berikut :
Declare
Begin
Exception
End
Struktur diatas dapat dijelaskan sebagai berikut :
1. Bagian Judul (Header)
Bagian ini hanya digunakan jika PL/SQL diberikan nama,misalnya untuk prosedur
atau fungsi. Bagian ini berisi nama blok,daftar parameter, dan pengembalian hasil (return)
jika blok adalahfungsi.
2. Bagian Deklarasi (declaration)
Bagian ini untuk membuat deklarasi mengenai semua variable dan konstanta yang
direferensikan dalam pernyataan PL/SQL. Bagian deklarasi ini dimulai dengan perintah
DECLARE. Jika tidak ada variable atau konstanta yang ingin dideklarasikan bagian ini
boleh dihilangkan, bersifat optional.
3. Bagian Eksekusi (Execution).
Bagian ini memuat pernyataan-pernyataan PL/SQL yang akan ditulis. Bagian
eksekusi ini harus dimulai dengan perintah BEGIN.
4. Bagian Perkecualian (Exception)
Bagian ini memuat cara menangani kesalahan-kesalahan (error) pada waktu
eksekusi program PL/SQL, bersifat optional. Jika program tidak memuat cara menangani
kesalahan, bagian ini boleh dihilangkan.Setiap pernyataan PL/SQL harus diakhiri dengan
tanda titik koma(;) dan semua program PL/SQL harus diakhiri dengan perintah END.
TIPE DATA
Tipe Data dasar :
Numerik
NUMBER, BINARY_INTEGER, DEC, DOUBLE PRECISION, INTEGER, INT,
NUMERIC, REAL, SMALLINT
Karakter
VARCHAR2, CHAR, LONG
DATE
BOOLEAN
ROWID
Tipe Data tambahan :
RECORD
ARRAY
Type data yang dapat dikenali dalam PL/SQL dapat berupa type data SQL dan type data
seperti :
1. BOOLEAN
Dipakai untuk menyatakan data logika, yaitu TRUE(benar), FALSE(salah), dan
NULL(kosong).
2. BINARY_INTEGER
Digunakan untuk mendeklarasikan bilangan yang tidak mempunyai angka desimal.
Tipe dataNATURAL dan POSITIVE merupakan subset dariBINARY_INTEGER.
3. %TYPE
Tipe data ini dipakai untuk menandakan bahwa variabelyang deklarasikan
sama dengan tipe data dari kolom tabel tertentu.
4. %ROWTYPE
Tipe data ini menandakan bahwa sekelompok variabel adalah sama dengan
tipe data darirow suatu tabel tertentu.
5. Tabel dan Record
Tipe data komposit untuk pemakaian yang lebih kompleks.
VARIABEL DAN KONSTANTA
Pada bagian deklarasi ditempatkan variable dan konstanta yang dipakai oleh pernyataan
PL/SQL yang dibuat.
VARIABEL
Adalah sebuah peubah yang digunakan untuk menampung sebuah nilai di memori komputer.
Bentuk Umum :
variable_name datatype [NOT NULL := value ];
Keterangan :
Variable_name adalah nama variabel.
Datatype adalah valid PL / SQL datatype.
NOT NULL adalah sebuah spesifikasi opsional pada variabel.
Nilai atau DEFAULT juga merupakan spesifikasi opsional, di mana anda bisa
menginisialisasi variabel.
Setiap deklarasi variabel adalah pernyataan terpisah dan harus diakhiri dengan titik koma.
Contoh Deklarasi Variabel :
DECLARE
X integer;
Alamat varchar2(40);
No_induk char(8);
BEGIN
X := 12;
Alamat := ‘Gelatik Dalam 391, Bandung’;
No_induk := ‘DOG29549’;
END;
KONSTANTA
Digunakan untuk menyimpan sebuah nilai di memori komputer. Nilai yang disimpan bersifat
tetap (konstan)
Contoh Deklarasi Konstanta :
DECLARE
pi CONSTANT real := 3.14;
lebar CONSTANT integer := 100;
Perbedaan variabel dengan konstanta adalah :
Konstanta
Nilai ditentukan pada saat deklarasi dibuat sehingga nilainya tetap pada saat
program dieksekusikan.
Variabel
Dapat menerima nilai baru atau sebaliknya diubah pada saat program
dieksekusi.
CLUSTER DATABASE
Cluster Database menjelaskan SQL Database Schema digunakan oleh sistem Rocks.
Server MySQL gratis DBMS mengelola skema dalam database tunggal bernama cluster.
Database ini membentuk tulang punggung dari sistem Rocks, koordinasi tugas yang beragam
seperti kickstart, mengetik node, bangunan file konfigurasi, dan versioning.
Skema Relasional
1. Tabel
Sebuah subset dari metode Teknik Informasi (IE) notasi akan digunakan untuk
menggambarkan tabel database. kunci primer ditandai dengan asterisk (*), dan
kunci asing ditunjuk oleh (@). Upaya telah dilakukan untuk menjamin skema ini
setidaknya dalam Formulir Normal Kedua (2NF). Untuk setiap tabel, kami
menyajikan struktur diikuti dengan penjelasan tentang kolom tersebut.
2. Node
Menjelaskan node di cluster. Sebuah meja sentral dalam skema. Tabel node
memiliki satu baris untuk setiap node di cluster, termasuk frontend, menghitung,
dan jenis alat lainnya. Lokasi node di cluster fisik (yang terletak di rak di lantai)
ditentukan dalam tabel ini juga.
ID : Sebuah integer primary key identifier. Auto bertambah.
Name : Nama dari antarmuka jaringan pribadi untuk node ini. Ini melanggar
bentuk normal kedua (2NF) dari skema (nama ini hanya ada di dalam
tabel jaringan), tetapi berfungsi sebagai petunjuk untuk dibaca.
Membership : Sebuah link ke meja Keanggotaan; tidak dapat null. Menentukan
jenis node.
CPU : Jumlah Prosesor di node ini. Default adalah 1. Meskipun kolom ini
melanggar bentuk normal kedua, itu lebih berguna di sini daripada
dalam tabel terpisah.
Rack : Y-sumbu koordinat node ini dalam ruang euclidean. Zero adalah rak
paling kiri di lantai dengan konvensi. Catatan kita hanya
menggunakan 2D matriks untuk menemukan node, pesawat (Z-axis)
saat ini selalu nol.
Rank : X-axis ini node dalam ruang euclidean. Zero adalah terdekat ke
lantai (bagian bawah paling node) dengan konvensi.
IP : IPv4 alamat Internet Protocol ini node dalam desimal-dot notasi.
Field Type
ID* int(11)
Name varchar(128)
Membership@ int(11)
CPUs int(11)
Rack int(11)
Rank int(11)
Comment varchar(128)
3. Networks
Jaringan interface untuk simpul.
Field Type
ID* int(11)
Node@ int(11)
MAC varchar(32)
IP varchar(32)
Netmask varchar(32)
Gateway varchar(32)
Name varchar(128)
Device varchar(32)
Module varchar(128)
ID : Sebuah integer primary key identifier. Auto bertambah.
Node : Sebuah link ke meja node. Kunci asing, tidak bisa null.
MAC : Media 6-byte alamat Access Layer (Layer 2) dari interface ini dalam
notasi hex-usus seperti "a6: 45:34:0 f: 44:99".
IP : IPv4 alamat Internet Protocol antarmuka ini dalam desimal-dot notasi
seperti "10.255.255.254".
Netmask : Subnet mask dari alamat IP. Ditentukan seperti "255.0.0.0".
Gateway : IP gateway atau alamat router untuk interface ini.
Nama : Nama host untuk antarmuka jaringan. Konvensi Rocks adalah
"menghitung-[Rack] - [Rank]" untuk menghitung node.
Jika nama perangkat adalah "eth0" adalah ini "private" antarmuka
jaringan untuk node. Nama interface ditempatkan dalam domain.
Setempat dan dilayani melalui DNS. Semua nama host lainnya harus
benar-benar-kualifikasi.
Perangkat : Perangkat Linux nama untuk NIC ini. Antarmuka (primer) swasta
selalu memiliki nama "eth0".
Modul : Perangkat driver Linux nama untuk interface ini. Hardware tertentu.
4. App_Globals
Tabel ini berisi pasangan kunci = Nilai yang digunakan untuk layanan penting seperti
Kickstart. Contohnya termasuk layout keyboard, Public Gateway, Public Hostname,
server DNS, masker IP, Cluster Pemilik, Admin email, dll
ID : Sebuah integer primary key identifier. Auto bertambah.
Memebership: Kunci asing yang referensi kolom ID pada tabel Keanggotaan.
Service : Nama layanan yang akan menggunakan pasangan ini KUNCI = NILAI.
Contohnya adalah "Kickstart" dan "Info". Ini pada dasarnya adalah bagian pertama dari
skema penamaan dua tingkat.
Component :Nama kedua tingkat. Bersama Layanan dan nama Komponen sesuai
dengan atribut nama name="Service_Component"/> <var XML tag yang digunakan dalam
proses generasi kickstart.
Value : Nilai baris ini. Dapat berupa data tekstual.
5. Memebership
Tabel ini menentukan versi distribusi dan jenis alat untuk satu set node. Sebuah nama
Field Type
ID* int(11)
Membership@ int(11)
Service varchar(64)
Component varchar(64)
Value text
alternatif untuk tabel ini akan kelompok, namun adalah sebuah kata yang dicadangkan di
SQL. Nama tabel keanggotaan sekelompok node dalam cluster dan memungkinkan
keanggotaan ganda untuk mengikat ke satu jenis alat.
ID : Sebuah integer primary key identifier. Auto bertambah.
Node : Nama keanggotaan ini. Jenis node dalam cluster, seperti "Frontend", "Hitung",
"Power Unit" atau mirip. Perangkat lunak yang diinstal pada node dalam keanggotaan
diberikan didefinisikan oleh ID alat.
Appliance : Kunci asing yang referensi kolom ID pada tabel Tangga. Membantu
menentukan perangkat lunak yang diinstal pada node dalam keanggotaan ini, dan karena itu
perilaku mereka.
Distribution: Kunci asing yang referensi kolom ID pada tabel distribusi. Kunci kedua
digunakan untuk menentukan perangkat lunak untuk node dalam keanggotaan ini.
Compute: Entah "ya" atau "tidak". Menentukan apakah ini tipe node akan digunakan untuk
menjalankan pekerjaan paralel.
6. Appliances
Tabel ini mendefinisikan jenis alat yang tersedia. Setiap node dalam cluster dapat
mengklasifikasikan dirinya sebagai jenis alat tunggal. Grafik dan Node atribut menentukan
titik awal dalam grafik konfigurasi perangkat lunak Rocks (Lihat Grafik XML), yang
menentukan sepenuhnya perangkat lunak yang diinstal pada sebuah node.
Field Type
ID* int(11)
Name varchar(32)
ShortName varchar(32)
Graph varchar(64)
Node varchar(64)
Field Type
ID* int(11)
Name varchar(64)
Appliance@ int(11)
Distribution@ int(11)
Compute enum('yes','no')
ID : Sebuah integer primary key identifier. Auto bertambah.
Nama : Nama alat ini. Contohnya adalah "frontend" dan "menghitung".
Shortname : Sebuah julukan untuk alat ini.
Graph: Menentukan mana perangkat lunak grafik konfigurasi untuk digunakan saat membuat
berkas kickstart untuk alat ini. Default default umumnya digunakan.
Node : Menentukan nama dari simpul akar pada grafik konfigurasi untuk digunakan saat
membuat berkas kickstart untuk alat ini. paket perangkat lunak tersebut untuk jenis alat
sepenuhnya ditentukan oleh traversal dari awal grafik konfigurasi di node root.
7. Distribution
Tabel ini menghubungkan keanggotaan grup untuk distribusi Rocks berversi, dan memainkan
peran penting dalam proses pembangkitan Rocks kickstart. The Release berkaitan dengan
versi distribusi RedHat, misalnya "7.2", sedangkan Nama menentukan mana untuk
menemukan kedua pohon Rocks konfigurasi dan paket RPM.
Field Type
ID* int(11)
Name varchar(32)
Release varchar(32)
Lang varchar(32)
ID : Sebuah integer primary key identifier. Auto bertambah.
Nama : Menentukan mana untuk menemukan file-file konfigurasi grafik Rocks pohon.
Nama Bidang grafik konfigurasi terletak di / home / install / [Nama] / [Pers] / direktori.
Release : Memberikan distribusi RedHat versi ini pohon konfigurasi didasarkan pada,
misalnya "7.2". Bidang Rilis pada grafik lokasi "rumah / / install / [Nama] / [Pers] /"
direktori.
8. Version
Tabel ini dimaksudkan untuk memberikan skema database versioning. Hal ini disediakan
untuk penggunaan masa depan.
TableName : Nama tabel dalam database skema ini.
Major : Jumlah utama versi tabel ini. Biasanya bilangan bulat pertama dalam string
versi.
Minor : Nomor minor versi tabel ini. Integer kedua dalam versi string.
9. Aliases
Tabel ini berisi alias user-defined untuk node.
ID : Sebuah integer primary key identifier. Auto bertambah.
Node : Kunci asing yang referensi kolom ID pada tabel Nodes.
Name : Nama alias. Biasanya versi pendek dari nama host.
Field Type
TableName varchar(64)
Major int(11)
Minor int(11)
Field Type
ID* int(11)
Node@ int(11)
Name varchar(32)
LINK : (http://www.novapdf.com)