Sebagian besar DBMS tidak dapat secara langsung mendukung penyimpanan data
spasial
Harus menggunakan Spatial Extension
Berikut ini beberapa DBMS yang dapat digunakan untuk menyimpan data spasial:
MySQL dengan MySQL Spatial Support
Oracle dengan Oracle Spatial PostGreSQL dengan PostGIS
Microsoft Access
Microsoft SQL Server dengan MSSQLSpatial
IBM DB2 dengan Spatial Extender & Geodetic Extender
Beberapa tipe DBMS hanya dapat menyimpan data spasial saja, tanpa kemampuan
untuk melakukan analisa spasial.
Spatial DBMS
Merupakan DBMS yang selain menyediakan dapat mengelola basis data biasa, juga
memiliki keampuan untuk penyimpanan dan pengelolaan data spasial
Dapat juga berupa middleware (contoh: ArcSDE).
Dapat diimplementasikan baik sebagai thick maupun thin client (Contoh: CGI vs
Java).
SDBMS:
Bekerja diatas DBMS biasa
Mengijinkan model dan tipe data spasial
Mendukung bahasa untuk meng-query tipe data spasial
Mendukung pembuatan indeks spasial
Mempunyai algoritma yang efisien untuk operasi-operasi spasial
Memiliki aturan-aturan khusus untuk optimasi query.
Keuntungan SDBMS
SDBMS menyediakan struktur untuk penyimpanan dan analisa data spasial.
Data spasial terdiri dari objek-objek dalam ruang multi-dimensi. Tidak seperti table
konvensional yang hanya memiliki dua dimensi (baris dan kolom).
Menyimpan data spasial dalam DBMS standar membutuhkan tempat penyimpanan
dalam jumlah yang sangat besar.
Mengambil dan menganalisa data spasial dari DBMS standar membutuhkan waktu
yang lama serta sulit dilakukan dapat mengakibatkan banyak kesalahan
SDBMS menyediakan tempat penyimpanan, proses pengambilan, dan proses analisa
data spasial yang jauh lebih efisien
Boundary).
Operasi topologi beserta serangkaian operatornya (misal: Disjoint, Touch,
Contains)
Analisa spasial (missal: Distance, Intersection, SymmDiff)
Pop
Integer,
Shape
Polygon);
Membuat entitas untuk menyimpan nama sungai, panjang, serta data geografinya:
CREATE TABLE Sungai(
Nama
varchar(30),
Panjang
Integer,
Shape
LineString);
Contoh Query Spasial
Cari semua kabupaten yang berbatasan dengan kabupaten Bojonegoro:
SELECT K1 .Nama
FROM
Kabupaten K1, Kabupaten K2
WHERE Touch(K1.Shape, K2.Shape) = 1 AND K2.Nama = Bojonegoro;
Cari semua kabupaten yang dilewati sungai Brantas:
SELECT
K.Nama, S.Nama
FROM
Kabupaten K, Sungai S
WHERE
Intersect(K.Shape, S.Shape) = 1 AND S.Nama = Brantas;
Indeks pada data spasial
Fungsi indeks pada basis data adalah untuk mempercepat proses pencarian data dalam
query.
Indeks 1-dimensi yang biasa digunakan pada basis data biasa (B-Tree) tidak dapat
digunakan untuk data spasial.
Data spasial menggunakan R-Tree indeks. Huruf R berarti Rectangle.
R-Tree Motivation
Range query: find the objects in a given range. E.g. find all hotels in Boston.
No index: scan through all objects. NOT EFFICIENT!
( permintaan Range: menemukan objek dalam rentang tertentu. Misalnya.
menemukan semua hotel di Boston.
Ada indeks: memindai melalui semua benda. TIDAK EFISIEN! )
R-Tree: Clustering by Proximity
R-Tree
R-Tree