Memahami tentang SQL dan NoSQL
Pengertian SQL
SQL adalah singkatan
dari Structured Query Language. Sedangan pengertian
SQL adalah
suatu bahasa (language) yang digunakan untuk mengakses data di dalam
sebuah database relasional. SQL sering juga disebut dengan istilah
query, dan bahasa SQL secara praktiknya digunakan sebagai bahasa
standar untuk manajemen database relasional. Hingga saat ini hampir
seluruh server database atau software database mengenal dan mengerti
bahasa SQL.
Sejarah SQL
Awal mula lahirnya
bahasa SQL yaitu pada bulan Juni 1970, dimana saat Jhonny Oracle yang
merupakan seorang peneliti dari perusahaan IBM
memiliki gagasan pembuatan basis data relasional, ide tersebut
dituangkan dalam sebuah artikel. Di dalam artikel tersebut juga
dibahas mengenai kemungkinan membuat sebuah bahasa standar untuk
mengakses data dalam database tersebut. Bahasa standar tersebut
diberinama SEQUEL (Structured English Query Language). Setelah
kemunculan artikel tersebut lalu IBM memutuskan untuk mengembangkan
pembuatan bahasa SEQUEL. Namun penamaan SEQUEL dalam bahasa standar
tersebut bermasalah dengan hukum sehingga diubahlah menjadi SQL.
Jenis Perintah
SQL
Dalam penggunaan SQL
terdapat beberapa perintah yang berguna untuk mengakses dan
memanajemen data yang terdapat dalam database. Jenis peringah SQL
secara umum dibagi kepada tiga sub perintah, yaitu DDL (Data
Definition Language), DML (Data Manipulation Language), dan DCL (Data
Control Language). Ketiga sub perintah tersebut sangat perlu untuk
dipahami bagi anda yang ingin menguasai bahasa sql dan mahir dalam
pembuatan database.
Data Definition
Language (DDL)
DDL adalah sub
perintah dari bahasa SQL yang digunakan untuk membangun kerangka
sebuah database, dalam hal ini database dan table. Terdapat tiga
perintah penting dalam DDL, yaitu CREATE, ALTER, DROP.
CREATE: perintah ini
digunakan untuk membuat, termasuk di dalamnya membuat database baru,
tabel baru view baru, dan kolom baru.
Contoh: CREATE DATABASE nama_database
Contoh: CREATE DATABASE nama_database
ALTER: perintah
ALTER berfungsi untuk mengubah struktur tabel yang telah dibuat.
Mencakup di dalamnya mengubah nama tabel, menambah kolom, mengubah
kolom, menghapus kolom, dan memberikan atribut pada kolom.
Contoh: ALTER TABLE nama_tabel ADD nama_kolom datatype
Contoh: ALTER TABLE nama_tabel ADD nama_kolom datatype
DROP: perintah DROP
berfungsi untuk menghapus database atau tabel.
Contoh: DROP DATABASE nama_database
Contoh: DROP DATABASE nama_database
Data Manipulation
Language (DML)
DML adalah sub
perintah dari bahasa SQL yang digunakan untuk memanipulasi data dalam
database yang telah dibuat. Terdapat empat perintah penting dalam
DML, yaitu INSERT, SELECT, UPDATE, dan DELETE.
INSERT: perintah ini
digunakan untuk memasukkan data baru ke dalam sebuah tabel. Perintah
ini tentu saja bisa dijalankan ketika database dan tabel sudah
dibuat.
Contoh: INSERT INTO nama_tabel VALUES (data1, data2, dst…);
Contoh: INSERT INTO nama_tabel VALUES (data1, data2, dst…);
SELECT: perintah ini
digunakan untuk mengambil dan menampilkan data dari tabel atau bahkan
dari beberapa tabel dengan penggunaan relasi.
Contoh: SELECT nama_kolom1, nama_kolom2 FROM nama_tabel;
Contoh: SELECT nama_kolom1, nama_kolom2 FROM nama_tabel;
UPDATE: perintah
update digunakan untuk memperbaharui data pada sebuah tabel.
Contoh: UPDATE nama_tabel SET kolom1=data1, kolom2=data2,… WHERE kolom=data;
Contoh: UPDATE nama_tabel SET kolom1=data1, kolom2=data2,… WHERE kolom=data;
DELETE: perintah
delete digunakan untuk menghapus data dari sebuah tabel.
Contoh: DELETE FROM nama_tabel WHERE kolom=data;
Contoh: DELETE FROM nama_tabel WHERE kolom=data;
Data Control
Language (DCL)
DCL adalah sub
bahasa SQL yang berfungsi untuk melakukan pengontrolan data dan
server databasenya, seperti manipulasi user dan hak akses
(priviledges). Yang termasuk perintah dalam DCL ada dua, yaitu GRANT
dan REVOKE.
GRANT: perintah ini
digunakan untuk memberikan hak akses oleh admin ke salah satu user
atau pengguna. Hak akses tersebut bisa berupa hak membuat (CREATE),
mengambil data (SELECT), menghapus data (DELETE), mengubah data
(UPDATE), dan hak khusus lainnya yang berhubungan dengan sistem
database.
REVOKE: perintah ini
digunakan untuk mencabut hak akses yang telah diberikan kepada user.
Dalam ini merupakan kebalikan dari perintah GRANT.
Software
dalam SQL
Ms SQL Server
Microsoft
SQL Server adalah sebuah sistem manajemen basis data relasional
(RDBMS) produk Microsoft. Bahasa kueri utamanya adalah Transact-SQL
yang merupakan implementasi dari SQL standar ANSI/ISO yang digunakan
oleh Microsoft dan Sybase. Umumnya SQL Server digunakan di dunia
bisnis yang memiliki basis data berskala kecil sampai dengan
menengah, tetapi kemudian berkembang dengan digunakannya SQL Server
pada basis data besar.
Oracle
Basis
data Oracle adalah basis data relasional yang terdiri dari kumpulan
data dalam suatu sistem manajemen basis data RDBMS. Perusahaan
perangkat lunak Oracle memasarkan jenis basis data ini untuk
bermacam-macam aplikasi yang bisa berjalan pada banyak jenis dan merk
perangkat keras komputer (platform).
Pengertian NoSQL
NoSQL
singkatan dari Not Only SQL. NoSQL adalah sebuah konsep mengenai
penyimpanan data non-relasional. Berbeda dengan model basis data
relasional yang selama ini digunakan, NoSQL menggunakan beberapa
metode yang berbeda-beda.
NoSQL
sangat berguna pada data-data yang terus-menerus berkembang, dimana
data tersebut sangat kompleks sehingga sebuah database
relational tidak lagi bisa mengakomodir. Salah satu bentuknya adalah
ketika suatu data saling berhubungan satu sama lain, maka akan muncul
proses duplikasi data. Dimana data saling memanggil ke beberapa
permintaan, tambahan data baru, perubahan data, dan lain-lain dengan
key yang sama. Karena faktor hubungan antar data yang sama terjadi
terus-menerus, mendorong faktor redudansi data, data menjadi
berlipat-lipat, dan pada akhirnya akan menyebabkan crash pada
database berkonsep RDBMS.
Sejarah
NoSQL
Sejarah
konsep NoSQL dimulai ketika Carlo Strozzi pada tahun 1998
menggunakannya untuk nama open
source database relational
yang tidak mengikuti standar SQL, kemudian Eric Evans (karyawan
Rackspace) memperkenalkan kembali istilah NoSQL pada awal 2009 ketika
Johan Oskarsson dari Last.fm ingin menyelenggarakan acara untuk
membahas distributed
database open source.
Sejarah NoSQL tidak
lepas dari kesulitan-kesulitan yang terjadi dalam penanganan
perkembangan database dengan menggunakan konsep relational database.
Dalam praktiknya, database tidak hanya berkembang secara vertikal
(adanya penambahan baris), tetapi juga berkembang secara horisontal
(adanya penambahan field).
Ketika field
bertambah banyak permasalahan yang terjadi ketika menggunakan konsep
RDBMS. Dalam konsep RDBMS, penambahan field
merupakan masalah yang harus dihindari, akan tetapi pada kenyataannya
hal itu sering terjadi. Konsep tersebut yang mendasari adanya konsep
NoSQL. NoSQL tidak membutuhkan skema tabel dan umumnya menghindari
operasi join
karena berkembang secara horisontal. Kaum akademisi menyebutnya
sebagai structured
storage
(penyimpanan terstruktur).
Pengelompokan
database noSQL
Secara
umum, database noSQL dibagi menurut format penyimpanan dokmentnya .
Berikut ini adalah pengelompokan database noSQL berdasarkan model
(penyimpanan) datanya
- Document Database contohnya MongoDB, seiap satu object data disimpan dalam satu dokumen. Dokumen sendiri bisa terdiri dari key-value, dan value sendiri bisa berupa array atau key-value bertingkat.
- Graph, Format penyimpanan data dalam struktur graph. Format ini sering dipakai untuk data yang saling berhubungan seperti jejaring social. Contoh database noSQL dengan format ini adalah Neo4J dan FlockDB. FlockDB dipakai oleh twitter.
- Key – Value, contoh database jenis ini adalah Apache Cassandra.
- Object Database. Format database yang disimpan dalam object-object, Object disini sama dengan pengertian object di Pemrograman beroreintasi object, Contoh databasenya adalah Db4o.
- Tipe lainnya adalah tabular, tuple store dan berbagai jenis lain yang tidak terlalu populer.
Kelebihan
NoSQL di banding Relasional Database
Kelebihan NoSQL
- NoSQL bisa menampung data yang terstruktur, semi terstruktur dan tidak terstuktur secara efesien dalam skala besar (big data/cloud).
- Menggunakan OOP dalam pengaksesan atau manipulasi datanya.
- NoSQL tidak mengenal schema tabel yang kaku dengan format data yang kaku. NoSQL sangat cocok untuk data yang tidak terstruktur, istilah singkat untuk fitur ini adalah Dynamic Schema.
- Autosharding, istilah sederhananya, jika database noSQL di jalankandi cluster server (multiple server) maka data akan tersebar secara otomatis dan merata keseluruh server.
Kekurangan
NoSQL
- Hostingnya mahal. beberapa layanan di luar negeri mencharge biaya 100-200USD untuk hosting database noSQL.
- Sulitnya mencari hosting Cpanel yang mendukung database MongoDB atau database noSQL lainnya.
- karena bervariasinya produk dan format penyimpanan, berpindah antar satu produk database ke produk noSQL lainnya perlu waktu untuk belajar. Contohnya ketika anda pindah dari MongoDB ke Cassandra, maka anda harus belajar lagi dari awal, berbeda dengan database RDMS.
Software
dalam NoSQL
- MongoDB
MongoDB
merupakan database open source berbasis dokumen (Document-Oriented
Database) yang awalnya dibuat dengan bahasa C++.
- Cassandra Apache
Cassandra
Dikembangkan oleh APACHE. Aplikasi Inilah yang digunakan facebook
untuk penyimpanan miliayaran data hingga saat ini.
- CouchDB
CouchDB
juga dikembangkan oleh APACHE. CouchDB adalah database yang
benar-benar merangkul web. Menyimpan data Anda dengan dokumen JSON.
Perbedaan SQL
dengan NoSQL
1.
Karena basisdata SQL bersifat relasional, dari sinilah asal nama
sistem manajemen basisdata relasional (RDBMS), basisdata NoSQL adalah
non-relasional atau terdistribusi. Basisdata SQL berbasis tabel
sedangkan basisdata NoSQL berbasis dokumen,
basisdata grafik, penyimpanan kolom lebar, atau pasangan
kunci-nilai. Bahasa query terstruktur adalah asal SQL
(Structured Query Language) mendapatkan namanya. Dalam NoSQL DB,
fokus untuk permintaan berada pada koleksi dokumen. Hal ini
kadang-kadang disebut Unstructured Query Language (UnQL). Sintaks
UnQL bervariasi dari satu basisdata ke basisdata yang lain.
2.
Dalam basisdata SQL data dalam bentuk tabel yang terdiri dari
sejumlah baris, sedangkan data dalam NoSQL tidak memiliki definisi
skema standar yang harus dipatuhi. Basisdata NoSQL memiliki skema
yang dinamis sementara basisdata SQL terdiri dari skema yang
telah ditetapkan.
3. Basisdata
NoSQL adalah horizontal terukur sementara SQL DB vertikal terukur.
Untuk memperbesar skala NoSQL DB, tambahkan server DB di cluster
untuk load balancing. Untuk memperbesar skala SQL DB,
tambahkan tenaga dari CPU, SSD, RAM dan perangkat keras lainnya
pada server. Ini berarti NoSQL adalah pilihan terbaik jika
skalabilitas adalah pertimbangan utama.
4.
SQL memungkinkan untuk interaksi karena merupakan bahasa query
deklaratif. Setelah anda menyatakan apa yang anda inginkan
misalnya untuk menampilkan, DB mengekstrak hasil setelah
membangun algoritma secara internal. Dengan NoSQL, MapReduce,
menjadi teknik permintaan prosedural, mengharuskan bahwa anda tidak
hanya tahu apa yang anda inginkan, tetapi anda menyatakan persis
bagaimana untuk menghasilkan jawabannya. Peningkatan interaksi dengan
data memungkinkan untuk wawasan baru yang akan membantu pengembangan
produk.
5.
SQL telah digunakan beberapa waktu dan ini menjelaskan mengapa
menggunakan standar. Meskipun beberapa vendor memperkenalkan dialek
untuk antarmuka mereka, intinya telah distandarkan dan spesifikasi
tambahan seperti JDBC dan ODBC menyediakan antarmuka SQL yang stabil
dan tersedia secara luas. Hal ini memungkinkan sebuah ekosistem
operator dan alat manajemen untuk membantu dalam merancang, memantau,
memeriksa, mengeksplorasi, dan membangun aplikasi pada sistem SQL.
Ini berarti programmer SQL dan pengguna dapat menggunakan kembali
pengetahuan UI dan API di sistem backend yang berbeda, sehingga
mengurangi waktu pengembangan aplikasi. Standarisasi juga penting
karena memungkinkan alat deklaratif ETL (Extract, Transform,
Load) pihak ketiga. Alat-alat ini memungkinkan anda untuk mengalirkan
data di sistem dan antar basisdata.
6. Basisdata SQL
lebih cocok untuk lingkungan permintaan-intensif kompleks. Hal ini
karena NoSQL tidak memiliki antarmuka standar untuk melakukan query
kompleks pada tingkat tinggi dan query pada NoSQL tidak sebaik query
SQL.
7. Basisdata
NoSQL lebih cocok untuk penyimpanan data hirarkis. Hal ini karena
NoSQL mengikuti metode penyimpanan pasangan kunci-nilai yang mirip
dengan JSON data. Hal ini membuat NoSQL pilihan terbaik untuk data
besar sejak saat ini, kebanyakan vendor SQL telah menambahkan
dukungan tipe-JSON serta dukungan dokumen XML.
8.
Meskipun dimungkinkan untuk menggunakan NoSQL untuk transaksi biasa,
SQL adalah pilihan terbaik untuk aplikasi tugas berat
tipe-transaksional. Hal ini karena NoSQL tidak cukup stabil ketika
sarat dengan aplikasi transaksional yang kompleks dan lalu lintas
tinggi. SQL adalah cocok karena database-nya stabil dan menjanjikan
integritas dan atomicity data. Hal ini terutama karena NoSQL belum
dikembangkan selama SQL.
9.
Anda akan mendapatkan dukungan yang lebih baik dengan basisdata SQL,
terutama karena SQL DB telah dikembangkan lebih lama. Ketika
anda menyewa sebuah tim ahli DBA jarak jauh, kemungkinan bahwa
sebagian besar DBA memiliki pelatihan di SQL DB. Namun, semakin
banyak tim DBA jarak jauh saat ini memiliki pengalaman dengan NoSQL
karena peningkatan permintaan. SQL DBs juga lebih dapat diandalkan
karena mereka telah dicoba dan diuji selama beberapa tahun.
10.
Dengan SQL DB, penekanan pada sifat Atomicity, Consistency, Isolation
and Durability (ACID) sifat. Di sisi lain, NoSQL DBs mengikuti
teorema Consistency, Availability and Partition (CAP) Brewers.
11.
Basisdata SQL bisa bersumber tertutup dari vendor komersial
atau bersumber terbuka sedangkan NoSQLs bersumber terbuka. Ini
berarti NoSQL adalah pilihan yang lebih baik jika Anda ingin
menghemat uang.
Contoh populer dari
basisdata SQL adalah Oracle, MySQL, MS-SQL, Sqlite, dan Postgres
sementara contoh populer dari NoSQL adalah MongoDB, HBase, Redis,
Bigtable, RavenDb, CouchDB, Cassandra, dan Neo4j.
Komentar
Posting Komentar