Basis Data XML

XML merupakan representasi data yang bisa didefinisikan sesuai keinginan pengguna. Karena formatnya yang standar dan fleksibel, XML sering dipergunakan pada berbagai pertukaran informasi. Tentunya ini merupakan suatu keuntungan kalau kita bisa menyimpan XML ke dalam basis data dan memprosesnya.

Nah, ada basis data yang memungkinkan kita untuk menyimpan XML dan melakukan query atau operasi lainnya terhadap data XML tersebut, yaitu basis data XML. Salah satu DBMS yang mendukung XML adalah SQL Server.

SQL Server mendukung tipe data XML, ada typed XML dan untyped XML. Typed XML berarti data XML tersebut berkaitan dengan sebuah XML schema collection, dan sebaliknya untuk untyped XML. XML schema collection mengandung skema XML yang berguna untuk memvalidasi data XML yang boleh tersimpan di dalam suatu basis data. Dengan demikian, jika ada data XML baru yang formatnya tidak sesuai dengan skema yang telah didefinisikan, maka sistem akan menganggapnya tidak valid.

Misalnya, kita buat skema XML untuk data Mahasiswa yang berisi NIM, Nama, Email, IPK.
CREATE XML SCHEMA COLLECTION MahasiswaSchema AS
'<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://localhost/test/mahasiswa"
targetNamespace="http://localhost/test/mahasiswa">
<xsd:element name="Mahasiswa">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="t:NIM" />
<xsd:element ref="t:Nama" />
<xsd:element ref="t:Email" />
<xsd:element ref="t:IPK" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NIM" type="xsd:string" />
<xsd:element name="Nama" type="xsd:string" />
<xsd:element name="Email" type="xsd:string" />
<xsd:element name="IPK" type="xsd:decimal" />
</xsd:schema>'

Lalu, buat tabel yang punya kolom bertipe data XML yang valid dengan skema di atas.
CREATE TABLE Biodata (
ID INT IDENTITY PRIMARY KEY,
Mahasiswa XML (MahasiswaSchema) NOT NULL
)

Untuk insert data XML, tidak berbeda dengan sintaks SQL biasa.
INSERT INTO Biodata
VALUES ('
<Mahasiswa xmlns="http://localhost/test/mahasiswa">
<NIM>13504018</NIM>
<Nama>Anggriawan Sugianto</Nama>
<Email>anggriawan.sugianto@gmail.com</Email>
<IPK>3.50</IPK>
</Mahasiswa>
')

Perhatikan bahwa format XML yang akan disisipkan di atas harus sama dengan format pada skema XML terkait. Jika tidak (misalnya, kurang 1 elemen), maka DBMS akan menganggapnya tidak valid.

Jika untuk melakukan query terhadap basis data relasional kita gunakan SQL, maka untuk melakukan query terhadap XML kita gunakan XQuery.

Contoh XQuery untuk menampilkan daftar NIM dan mahasiswa yang IPK minimalnya 3.5.
SELECT Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa";
(/Mahasiswa/NIM)[1]', 'varchar(8)') AS NIM,
Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa";
(/Mahasiswa/Nama)[1]', 'varchar(32)') AS Nama
FROM Biodata
WHERE Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa" ;
(/Mahasiswa/IPK)[1]', 'decimal') >= 3.50

Contoh XQuery untuk mengubah IPK seorang mahasiswa :)
UPDATE Biodata
SET Mahasiswa.modify('
declare default element namespace "http://localhost/test/mahasiswa" ;
replace value of (/Mahasiswa/IPK)[1] with 4.00')
WHERE Mahasiswa.value('
declare default element namespace "http://localhost/test/mahasiswa" ;
(/Mahasiswa/NIM)[1]', 'varchar(8)') = '13504018'

Masih banyak fitur-fitur query yang didukung oleh XQuery. Spesifikasi tentang XQuery bisa dilihat di sini. Begitu juga tentang XML pada SQL Server, bisa dilihat di sini.

Sekian trailer singkat tentang basis data XML. Semoga bisa memicu ide dan minat untuk memanfaatkan XML pada suatu basis data. Jika tertarik, silakan berdiskusi melalui komentar atau hubungi saya via messenger favorit Anda :).

Oya, foto di atas itu saat saya membawakan materi "XML in SQL Server 2005" pada salah satu sesi di acara pelatihan GCOE di ITB. Looks cool kan ^.~

cheers..

10 comments :

  1. Wuu.. antek mikocok ini :))
    pake promosi PW lagi hahaha...

    ReplyDelete
  2. @ahmy:

    Wah, perlu klarifikasi nih.. :D

    Gw bukan antek mikocok.
    Gw netral aja deh, tergantung apa yg dibutuhin atau siapa yg bayar lah. :P hehehe..

    ReplyDelete
  3. Oh topik TA ya?
    Gw ga nangkep gitu kok pas nerangin XML tiba-tiba ada gambar seorang anggri.
    Ga punya PW? Ya ampun.. cari dulu ah. Masa wisuda ga pake PW.
    (Padahal dulu juga ga punya.. :p)

    ReplyDelete
  4. @brahmasta:
    bukan.. ini bukan topik TA gw.. XD
    topik TA gw tentang mobile positioning.. ^^;

    ReplyDelete
  5. ih kek wisuda juli aja.. ngomongin PW mulu ni.. tetep : ga kreatip! :D

    ReplyDelete
  6. @shieny:
    iyaa deh.. PW gak guna kalau TA belum selesai, bukan sebaliknya.. ;D

    ReplyDelete
  7. Mas ato Pak ni manggil na?!
    saya Mau TA tentang XML..

    Boleh tahu e-mail nya???
    Biar gw bisa discuss ato share ilmu..hehehe

    ReplyDelete
  8. maz ang.. boleh share ilmunya tentang XML ke SQL gak? saya lg ambil TA tentang XML ke SQL nih..
    boleh PM via e-mail??

    xeonidaunderhack@gmail.com

    ReplyDelete
  9. It takes only some type of computer connected towards the
    Internet uk payday loans being
    of legal age - to qualify for the payday advance, you need
    to be no less than 18 years.

    ReplyDelete