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
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
DROP: perintah DROP berfungsi untuk menghapus database atau tabel.
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…);
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;
UPDATE: perintah update digunakan untuk memperbaharui data pada sebuah tabel.
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;
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

Postingan populer dari blog ini

Makalah Sistem Informasi Manajemen

Pengertian Search Engine (Mesin Pencari)

Perkembangan Processor Intel lengkap dengan gambar