SQL vs NoSQL: Perbedaan dalam Menentukan Pilihan Database

SQL vs NoSQL: Perbedaan dalam Menentukan Pilihan Database

 

Berbicara mengenai database, mana yang lebih baik antara SQL atau NoSQL adalah topik yang selalu menjadi perdebatan baik yang baru belajar maupun profesional yang sudah lama malang melintang di dunia database sehingga dipanggil suhu oleh para juniornya. Tak main-main, perbedaan ini sering memanas dan menimbulkan konflik antara teman kerja atau pun teman komunitas persis seperti perdebatan fans sepakbola atau fans politik. Beberapa dekade yang lalu  SQL database merupakan pilihan wajib untuk jenis database karena memang pada saat itu SQL adalah satu-satunya jenis database yang dapat diandalkan.

Situasi dan kondisi mulai berubah sejak negara api menyerang dengan sistem database yang sering disebut dengan NoSQL. Jenis database ini menawarkan sesuatu yang baru. Setiap jenis database memiliki karakter dan kelebihannya masing-masing sehingga sebenarnya jika kita benar-benar memahaminya perdebatan sengit tak perlu terjadi apalagi sampai mengakibatkan keluar dari grup WhatsApp.

 

Definisi

Sebenarnya perbedaan antara SQL dan NoSQL secara mendasar sudah dapat dijelaskan dari akronimnya.

 

SQL

SQL merupakan singkatan dari Structured Query Language. Sebenarnya SQL sendiri merupakan bahasa yang digunakan untuk mengatur/mengelola data dalam database relasional. Jadi sebenarnya SQL sendiri pada mulanya tidak digunakan untuk menyebut jenis database. Akan tetapi karena jenis (kategori) database yang berbeda memiliki bahasa query yang berbeda juga maka agaknya salah kaprah yang juga dialami oleh penulis (karena alasan SEO tentunya) dapat dimaklumi.

Database relasional menggunakan ‘relasi’ (yang biasanya disebut tabel) untuk menyimpan data dan mencocokkan data tersebut dengan memakai karakteristik umum di setiap dataset. Beberapa contoh database management system yang menggunakan SQL antara lain Oracle, Sybase, Microsoft SQL Server, PostgreSQL.

Munculnya SQL berawal dari peran Larry Ellison salah satu pendiri Oracle yang mengimplementasikan ide dari petinggi IBM Edgar F. Cobb. Cobb mengeluarkan makalah pada tahun 70’an yang mendeskripsikan tentang database di mana objek dapat dikonstruksikan dan di-query memakai sesuatu yang disebut SQL. Dia menggunakan SQL untuk membuat data (dalam objek yang disebut tabel) dan skema untuk data tersebut yang mendeskripsikan isian dalam beberapa kolom. Sedangkan untuk setiap record dalam SQL database disebut ‘baris’.

NoSQL

Dilihat dari namanya, database NoSQL sebenarnya sudah cukup menjelaskan. NoSQL merupakan database yang tidak membutuhkan skema dan tidak memiliki relasi untuk setiap tabel. Semua bentuk dokumen dari NoSQL adalah JSON yang mudah dibaca dan dimengerti. NoSQL banyak diminati karena memiliki performa yang tinggi dan bersifat non-relasional sehingga dapat memakai berbagai model data. Beberapa contoh dari database NoSQL yaitu MongoDB, MarkLogic, Couchbase, CloudDB, dan Dynamo DB.

 

Memahami dari Perbedaan

Sebenarnya banyak perbedaan yang dimiliki di antara dua database tersebut tapi inilah perbedaan yang paling mencolok antara SQL dan NoSQL:

  • Bahasa
  • Skalabilitas
  • Komunitas
  • Aplikasi

 

Bahasa

Seperti telah disebutkan sebelumnya bahwa SQL sendiri merujuk pada bahasa query, perbedaan antara SQL dan NoSQL yang langsung dapat dilihat adalah bahasa query dari masing-masing database. Bahasa SQL adalah bahasa query yang terstruktur. Hal ini menyebabkan SQL menjadi agak terbatas. SQL mengharuskan kita untuk menentukan skema dalam membangun struktur data bahkan sebelum kita membuat database tersebut. Data kita harus mengikuti struktur yang sama setelah database dibuat. Oleh karena itu, kita dituntut untuk merencanakan secara matang dan berhati-hati dalam mengeksekusi data.

Sebaliknya, database NoSQL tidak memiliki skema (setidaknya skemanya dapat berubah-ubah) dan tak terstruktur. Selain itu data NoSQL dapat disimpan dalam berbagai cara baik itu graph-based, document-oriented, column-oriented, atau yang terorganisir dengan baik seperti KeyValue. Fleksibilitas ini memungkinkan kita untuk membuat dokumen terlebih dahulu sebelum perencanaan matang dan menentukan struktur terlebih dahulu. KIta juga bisa menambahkan isian (field) secara dadakan serta menerapkan syntax yang berbeda-beda dalam setiap database.

 

Skalabilitas

Hal lain yang membedakan antara SQL dan NoSQL adalah dari segi skalabilitas. Hampir seluruh database SQL memiliki skala vertikal. Ini berarti jika kita ingin mengembangkan database kita, yang dapat kita lakukan adalah menambah kapasitas muatan di satu server dengan meng-upgrade komponennya seperti RAM, kapasitas SSD, atau CPU. Hal ini cukup beralasan mengingat SQL lahir di masa di mana hardisk dan komponen lain masih mahal. Jadi dibandingkan membangun server baru, akan lebih efisien jika kita meng-upgrade komponennya secara bertahap. Walaupun begitu, beberapa korporasi besar seperti Oracle terus melakukan pengembangan agar database SQL dapat memiliki skala horizontal.

Sebaliknya, database NoSQL memiliki skala horizontal di mana jika kita ingin mengembangkan database kita, kita hanya perlu menambah server baru. Inilah mengapa NoSQL dipakai oleh perusahaan seperti Facebook yang memiliki jumlah pengguna sangat besar dan jenis data yang bermacam-macam.

 

Komunitas

Jika dilihat dari segi komunitas, tentu saja SQL memiliki komunitas yang lebih besar dibandingkan NoSQL karena SQL sudah berumur puluhan tahun. Tapi walaupun begitu, perkembangan komunitas NoSQL sangat cepat. Lihat saja banyaknya tutorial MongoDB yang bertebaran di internet. Hadirnya stack seperti MEAN (MongoDB, Express JS, Angular JS, Node JS) atau MERN (MongoDB, Express JS, React JS, Node JS) membuktikan bahwa walaupun terbilang baru, NoSQL memiliki komunitas yang cukup dapat diandalkan.

 

Aplikasi

Seperti yang telah beberapa kali disebutkan bahwa SQL bersifat table-based di mana database ini cocok digunakan untuk aplikasi yang membutuhkan transaksi multi baris. Contoh dari aplikasi ini adalah sistem akuntansi dan mungkin legacy system yang pada awalnya dibuat untuk struktur relasional.  Sedangkan untuk NoSQL, database jenis ini cocok digunakan untuk database yang membutuhkan data set yang besar seperti big data.  NoSQL juga banyak dipakai aplikasi jejaring sosial atau customer management yang struktur datanya bisa berubah sewaktu-waktu tergantung dari perkembangan aplikasinya sendiri.

 

***

 

Itulah tadi beberapa perbedaan dasar antara SQL dan NoSQL. Tidak ada jawaban pasti mana yang lebih baik. Semua disesuaikan kebutuhan oleh masing-masing aplikasi.

Workshop : “Performance Monitoring & Tuning with SQL Server”

Workshop : “Performance Monitoring & Tuning with SQL Server”

Workshop : “Performance Monitoring & Tuning with SQL Server”

Seorang Database Administrator (DBA) menghabiskan banyak waktunya untuk memonitor segala aktivitas di dalam database. Selain itu, DBA juga harus mendiagnosa permasalahan serta mengidentifikasi perubahan utilitas sumber daya yang dibutuhkan oleh server. SQL Server sebenarnya sudah menyediakan tools dan fungsi yang dapat digunakan untuk memonitor aktivitas terkini serta dapat juga merekam detail dari aktivitas sebelumnya.

Akan tetapi, meskipun memonitor matriks performa server merupakan cara yang dapat dibilang tepat untuk menilai performa database secara umum, ada beberapa kebutuhan yang menuntut seorang DBA untuk melakukan analisis yang lebih detail seperti aktivitas yang terjadi di setiap instance di dalam SQL server. Analisis seperti ini dibutuhkan untuk dapat melakukan troubleshoot dan menemukan cara-cara yang efektif dalam meningkatkan performa database.

Di dalam workshop kali ini, akan digambarkan bagaimana menggunakan SQL Server Profiler untuk mendapatkan informasi tentang kondisi server dan menggunakan informasi tersebut sebagai acuan dalam melakukan troubleshooting dan optimalisasi beban kerja SQL Server.

Workshop ini akan membahas:

  1. Pertimbangan untuk melakukan monitoring SQL Server
  2. Menggunakan Performance monitor
  3. Melakukan trace terhadap aktivitas database
  4. Menggunakan hasil trace untuk melakukan troubleshoot dan optimalisasi performa database

This form does not exist

Biaya

Free (tempat terbatas)

DATE AND TIME

25 Oktober 2018
14.00 WIB – Selesai

LOCATION

Inixindo Jogja
Jalan Kenari No.69 Mujamuju, Umbulharjo,
Yogyakarta 55165

Community Day “Memahami Data Quality Service –  Kualitas Data untuk Analisis dan Report”

Community Day “Memahami Data Quality Service – Kualitas Data untuk Analisis dan Report”

Community Day “Memahami Data Quality Service – Kualitas Data untuk Analisis dan Report”

Dengan data dalam jumlah besar yang berasal dari berbagai format dan sumber, proses analisis data dan pelaporan menjadi lebih menantang karena penyedia data harus memastikan data yang dimiliki berkualitas, tidak ada redundansi atau duplikasi data, data yang akurat, terstandarisasi dan memiliki integritas.
Data Quality Service (DQS) merupakan salah satu sistem dari Microsoft SQL Server yang menyediakan fungsi-fungsi tersebut. Dalam share session kali ini akan didemokan bagaimana menggunakan DQS untuk kebutuhan tersebut.

This form does not exist

Biaya

Free (tempat terbatas)

DATE AND TIME

13 September 2018 14.00 WIB – Selesai

LOCATION

Eduparx – Inixindo Jogja
Jalan Kenari No 69 Yogyakarta
View Maps

Tips & Trik SQL Server :  Solusi Error Saat Attach Database Tanpa File Log (File LDF)

Tips & Trik SQL Server : Solusi Error Saat Attach Database Tanpa File Log (File LDF)

Tips & Trik SQL Server : Solusi Error Saat Attach Database Tanpa File Log (File LDF)

Setiap database di SQL Server memiliki minimal dua file utama yaitu file Data yang memiliki ekstensi file .MDF, dan file Log yang memiliki ekstensi file .LDF. Setiap melakukan transaksi data (insert, update, delete), file Log akan mencatat setiap perintah transaksi tersebut kedalam file LDF. Selanjutnya setelah ada perintah COMMIT, perubahan data akan disimpan ke dalam file MDF.

Untuk kebutuhan tertentu, kadang diperlukan untuk memindahkan lokasi file baik file MDF maupun LDF di SQL Server. Untuk hal tersebut dapat dilakukan dengan cara  mudah yaitu melakukan detach database, kemudian memindahkan file MDF dan file LDF tersebut ke drive atau lokasi lain, dan selanjutnya dilakukan proses attach kembali ke sistem SQL Server. Proses detach maupun attach database bisa dilakukan baik melalui SQL Server Management Studio, maupun melalui console Query.

Tips & Trik SQL Server : Solusi Error Saat Attach Database Tanpa File Log (File LDF) 1

Pernah mengalami Error pada saat Attach file MDF database SQL Server tanpa file LDF? Secara umum Attach File MDF tanpa file LDF tidak akan menjadi masalah, selama transaksi yang terjadi di database normal, atau sudah tercommit semua. Namun apabila karena suatu hal server rusak, dan yang bisa dilakukan hanya bisa mengcopy file MDF, bisa jadi ketika attach file MDFakan menemui pesan error.

Jangan khawatir, berikut solusi untuk memperbaiki database SQL Server yang hanya memiliki file MDF tanpa file LDF.

  • Siapkan file MDF dari database yang akan diperbaiki. Untuk selanjutnya file MDF tersebut dalam tutorial ini akan disebut file MDF original
  • Buat database baru dengan nama sama dengan file MDF original, baik MDF maupun LDF-nya
  • Stop SQL Server, masuk ke lokasi file MDF. Rename file MDF yang ada, dan copy-kan file MDF yang original yang ke lokasi tersebut. Delete File LDF yang ada
  • Start SQL Server
  • Sekarang database anda akan di mark menjadi Suspect
  • Update sysdatabases ke Emergency Mode. Perintah ini bermaksud agar tidak menggunakan file LOG pada saat start up
     Sp_configure "allow updates", 1
     go
     Reconfigure with override
     GO
     Update sysdatabases set status = 32768 where name = 'DbName Yg Rusak'
     go
     Sp_configure "allow updates", 0
     go
     Reconfigure with override
     GO
  • Restart sql server. dan sekarang database akan masuk ke Emergency Mode
  • Kemudian eksekusi perintah berikut, untuk membuat log baru.
     DBCC REBUILD_LOG(dbname,'c:\dbname.ldf')
     Execute sp_resetstatus <dbname>
  • Restart SQL server dan walaaaa…database Anda sudah online.

Selamat mencoba!

Mustofa

Manager Edukasi Inixindo Jogja

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap

Oracle Database memiliki bahasa pemrograman PL/SQL yang digunakan untuk memperluas kemampuan dan fleksibilitas database melalui berbagai trigger, fungsi, dan stored procedure. Agar source code (kode sumber) PL/SQL tidak terlihat oleh orang lain, Oracle Database memiliki fitur wrap sehingga cara kerja trigger, fungsi, atau stored procedure yang dibuat dengan bahasa pemrograman PL/SQL tidak bisa diketahui atau dipelajari oleh orang lain.

Dengan bantuan tool Oracle SQL Developer, kita bisa membuat berbagai obyek database dengan lebih cepat, mudah, dan nyaman. Oracle SQL Developer versi terbaru saat ini yaitu 4.1.5 bisa diunduh secara gratis dari:

http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap 2

Sebagai contoh, kita bisa membuat sebuah fungsi PL/SQL yang sederhana untuk menghitung pajak seperti berikut melalui Oracle SQL Developer:

CREATE OR REPLACE FUNCTION HITUNG_PAJAK (NILAI IN NUMBER)

RETURN NUMBER AS

HASIL NUMBER;

BEGIN

HASIL := NILAI * 0.1;

RETURN HASIL;

END HITUNG_PAJAK;

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap 3

Untuk menyembunyikan kode sumber fungsi HITUNG_PAJAK dengan fitur wrap di Oracle Database, pertama script kode sumber perlu disimpan sebagai file agar kita memiliki master kode sumber asli dari fungsi tersebut sehingga masih bisa diedit lagi bila perlu. Cara membuat file scriptnya adalah dengan melakukan klik kanan pada nama fungsi tersebut dan memilih “Quick DDL” kemudian “Save to File…” seperti berikut:

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap 4

Setelah menyimpan file script fungsi tersebut, misalnya ke “C:\script\hitung_pajak.sql”, bukalah Command Prompt (perintah “cmd”) di Windows. Melalui Command Prompt, gunakan perintah “cd” untuk berpindah ke folder dimana file “hitung_pajak.sql” berada dan kemudian jalankan perintah “wrap iname=hitung_pajak.sql” yang akan menghasilkan file baru bernama “hitung_pajak.plb”. File baru ini berisikan kode fungsi yang sudah di-wrap dan tidak bisa dibaca lagi kode sumbernya. Perintah “wrap” merupakan tool bawaan dari Oracle Database. Berikut adalah hasil eksekusinya:

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap 5

Untuk mengganti fungsi HITUNG_PAJAK yang masih terlihat kode sumbernya dengan kode wrap yang ada di file “hitung_pajak.plb”, maka tool SQL*Plus bawaan Oracle Database bisa digunakan untuk menjalankan file script “hitung_pajak.plb”. Format perintah adalah “sqlplus username/password @scriptfile”. Berikut adalah contoh perintah untuk menjalankan file script “hitung_pajak.plb” sebagai user “scott” dengan password “tiger”:

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap 6

Bila kita melihat kembali fungsi HITUNG_PAJAK melalui Oracle SQL Developer, hasilnya menjadi seperti berikut:

Proteksi Kode Oracle PL/SQL dengan Fitur Wrap 7

Perhatikan bahwa kode sumber fungsi tersebut sudah tidak bisa dibaca lagi, namun masih tetap bisa jalan seperti biasa di Oracle Database. Dengan demikian, kita mampu melakukan proteksi terhadap kode PL/SQL yang kita buat dengan memanfaatkan fitur wrap di Oracle Database sehingga kode sumbernya tidak bisa dibaca dan dipelajari oleh orang lain.

Selamat mencoba!

Andrian The

Instruktur Senior