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.

TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS)

TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS)

Pastikan anda telah membaca atikel sebelumnya tentang bagaimana memulai menggunakan Tensorflow.js. tutorial kali ini merupakan lanjutan dari tutorial sebelumnya yang mana seperti kita ketahui bersama kehebatan Tensorflow.js yang dapat memudahkan para developer web untuk melakukan proses pengenalan wajah dan sebagainya. Pada kesempatan kali ini kita akan mesharing cara melakukan proses pencocokan wajah atau (face recognition) dengan menggunakan face-api.js yang berjalan diatas Tensorflow.js core. Perbedaan mendasar tutorial kali ini dengan turorial sebelumnya adalah, kalau tutorial sebelumnya kita telah dapat memanfaatkan face-api.js untuk mengenali wajah. Maka kali ini kita akan membandingkan wajah, yang berarti terdapat dua model yang harus disediakan.

Saya telah menyiapkan contoh model dan contoh gambar yang akan di tes. Semua kelengkapan dapat di download di sini
Langsung saja seperti yang sudah dijelaskan dalam tutorial sebelumnya pastikan webserver dan peralatan yang telah dibutuhkan telah terinstal ke dalam computer Anda. Jika semua peralatan telah tersedia semua maka tinggal ikuti langkah-langkah di bawah ini.

  1. Buat folder baru dengan nama face-matching di folder httdoc Anda
  2. Extract file yang ditelah didownload ke dalam folder yang kita buat
  3. Buat file index.html
  4. Tambahkan tag standar html dan pastikan tag heder mempunyai tampilan seperti di bawah ini.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS) 1
  5. Tambahakan input file pada body yang akan kita gunakan untuk mengupload data
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS) 2
  6. Buatlah file script.js dalam folder yang sama dengan file index.html menyesuaikan dengan sintak yang ada dalam line 9.
  7. Isikan deklarasi variable untuk menghadle event file upload click
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS) 3
  8. Tambahkan sintak pemanggilan terhadap library tensorflow face-api.js
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS) 4
  9. Tambahkan fungsi start yang akan dijalankan otomatis ketika semua model tensorflow selesai di-load
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS) 5
  10. Tambahkan fungsi untuk membaca model sample data yang telah disiapkanKetika start dijalankan tambahkan dulu sebuah tag <div> sebagai container
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS) 6
  11. Panggil fungsi loadLabeledImages() sebagai inisialisasi sumber image model atau bisa dibilang database wajah kita.
  12. Buat event listener untuk file upload. Sehingga proses pencocokan akan dijalankan ketika file berhasil di upload
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS) 7
  13. Tambahkan sintaks untuk mencocokan data sisipkan sitak di bawah ini setelah line 21
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 2 : Face-api JS) 8
  14. Jalankan program

 

Selamat Mencoba!

Untuk source code tutorial ini dapat diunduh di sini.

 

TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1)

TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1)

Menyenangkan rasanya ketika membuat sebuah aplikasi berbasis Machine Learning bukan suatu hal yang mustahil lagi bagi web developer. Berkat TensorFlow.js yang merupakan salah satu framework open source berbasis pada TensorFlow, kini belajar machine learning menjadi sesuatu yang sangat mudah. Bahkan bisa dibilang hanya membutuhkan beberapa baris code saja.
Terdapat face-api.js yang bekerja di atas tensorflow.js yang telah mengimplementasikan Algoritma CNNs (Convolutional Neural Networks), untuk memecahkan permsalahan seperti Pendeteksian wajah, pengenalan wajah, Face Lanmark dan sebagainya.
Ok supaya tidak Panjang lebar mari kita langsung persiapkan segala sesuatunya.

  1. Pastikan telah terinstall xampp, atau package webserver favorit kita di laptop yang akan digunakan
  2. Buat folder baru dengan nama face-detection di htdoc
  3. Download Tensorflow.rar
  4. Extract kedalam folder face-detection
  5. Buat file index.html
  6. Isikan pada tag <head>….</head>
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 9
  7. Pada bagian body tambahkan element video dan canvas.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 10
  8. Buat file script.js di folder dist sehingga kurang lebih tampilan isi file akan menjadi seperti gambar di bawah.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 11
  9. Dalam file script.js tambahkan deklarasi sebuah variable yang mengarah ke elemen video dan canvas
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 12
  10. Panggil seluruh model yang dibutuhkan dengan menggunakan perintah promise. Pada kesempatan kali ini kita akan menggunakan pendeteksian wajah,kondisi mood, dan pendeteksian landamark pada wajah.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 13
  11. Tambahkan perintah untuk memulai penggunaan webcam dengan menambahkan fungsi startWbcam.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 14
  12. Sampai langkah ini maka ketika kita jalankan di browser makan akan keluar popup permintaan izin untuk menggunakan webcam atau camera. Pastikan tekan tombol Allow untuk memberikan izin kepada browser untuk menggunakan webcam/ camera. Jika proses berjalan lancar maka seharusnya webcam sudah menampilkan gambar dan berfungsi dengan baik. Jika terjadi kesalahan atau gambar tidak muncul berarti terdapat kesalahan ketik pada kode program. Untuk melihat kode program yang error bisa dilakukan inspect element pada browser.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 15
  13. Tambahkan fungsi listener yang akan otomatis dijalankan ketika webcam/ camera telah berhasil diakses yang otomatis akan menjalankan function renderVideo()
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 16
  14. Tambahkan sintax untuk mulai melakukan pengenalan wajah. Dalam fungsi renderVideo(). Akan dilakukan perulangan secara terus menerus, supaya proses pendeteksian wajah akan selalu dilakukan selama camera berjalan.
    TensorFlow JS untuk Deteksi Wajah (Tutorial Part 1) 17
  15. Jika berjalan lancar maka setiap ada orang yang lewat didepan kamera akan terdeteksi wajahnya.

 

Selamat Mencoba!

Source code tutorial ini dapat diunduh di sini

Sedangkan untuk lanjutan tutorial ini bisa dibaca di TensorFlow JS untuk Deteksi Wajah (Tutorial part 2)

 

 

Agile: Project Management yang Fokus ke Pengguna

Agile: Project Management yang Fokus ke Pengguna

 

Dalam artikel scrum kita telah sedikit membahas tentang agile project management di mana scrum merupakan framework dari agile yang populer digunakan selain kanban.  Dalam artikel tersebut kami lebih memfokuskan membahas ritual-ritual yang dijalani saat kita menggunakan scrum tapi justru kurang memberi pengertian tentang apa agile itu sendiri. Oleh karena itu, kami berharap dalam artikel ini kami berharap kami memberikan gambaran umum tentang agile kepada semua kalangan termasuk yang belum memiliki pengalaman dalam software development sekalipun.

 

Apa Itu Agile?

Agile adalah metodologi dalam pengembangan software dengan proses-proses kecil yang berulang-ulang atau yang sering disebut dengan iterasi. Berbeda dengan metodologi waterfall di mana kita memiliki alur linear awal hingga akhir yang tak bisa dipotong atau diubah di tengah proses. Prinsip dari agile sendiri adalah fleksibel terhadap perubahan.

 

Agile: Project Management yang Fokus ke Pengguna 18

 

Agile sendiri lahir dari perusahaan Jepang Toyota pada tahun 70’an di mana pada tahun tersebut produksi mobil menerapkan sistem waterfall. Jadi memang agile sebenarnya tidak murni milik perusahaan yang bergerak di bidang software development saja. Sebelum Toyota menerapkan metode yang disebut Toyota Production System pada dekade tersebut, mereka merekrut W. Edwards Deming untuk melatih ratusan managernya. W. Edwards Deming merupakan seorang engineer yang menyempurnakan metode siklus Plan-Do-Study-Act (PDSA).

 

Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

 

Agile memiliki manifesto seperti yang tertulis di atas. Metode agile mengedepankan individu dan interaksi dibanding proses dan alat, software yang terus dikerjakan dibandingkan dokumentasi yang komprehensif, kolaborasi dengan pelanggan dibandingkan negosiasi kontrak, serta peka terhadap perubahan dibanding selalu mengikuti rencana. Walaupun begitu, metode ini tidak serta-merta meninggalkan semua yang berada di sebelah kanan dari manifesto. Akan tetapi jika dihadapkan pada kondisi harus memilih satu di antara dua, maka yang dipilih adalah yang sebelah kiri.

 

Contoh Penerapan Agile

Agile memang lebih mudah diterapkan pada proyek pengembangan software karena pada dasarnya sebuah produk software atau aplikasi merupakan kumpulan dari beberapa fitur-fitur kecil yang digabungkan jadi satu.  Itulah mengapa metode ini populer di kalangan start-up digital. Akan tetapi seperti yang sudah dibahas sebelumnya, agile justru lahir dari produsen mobil di mana pengguna melihat produk mobil secara keseluruhan. Untuk itu, kami akan memberikan contoh penerapan agile dalam pengembangan mobil karena mobil lebih familiar untuk semua kalangan.

Katakanlah kita ingin membuat sebuah mobil. Pada metode waterfall kita membuat list tentang apa yang dibutuhkan oleh pengguna dari mobil tersebut mulai dari jenis mobil,  kapasitas penumpang, tenaga mesin, sistem transmisi, sistem pengendalian, dan sebagainya. Lalu kita akan mendesain mobil secara keseluruhan mulai dari chasis, body, mesin, hingga interior. Setelah keseluruhan desain diselesaikan mungkin kita akan meminta persetujuan dari klien yang memesan mobil tersebut dan kemudian memproduksi bagian-bagiannya satu persatu.

Proses perakitan pun dimulai, kita merangkai bagian-bagian tersebut hingga menjadi sebuah unit mobil. Kita kembali mengkonsultasikan produk tersebut ke klien. Di tahap inilah sering muncul permasalahan klasik metode waterfall. Di saat klien kurang puas dengan katakanlah satu bagian saja, misalnya bagian suspensi. Kita harus membongkar atau bahkan mendesain ulang keseluruhan mobil termasuk rangka dan bodi.

Di dalam metode Agile dengan menggunakan contoh yang sama, setelah membuat daftar tentang apa yang dibutuhkan target pengguna dari sebuah mobil saatnya memilah fitur tersebut untuk diprioritaskan semisal suspensi yang nyaman pada urutan pertama. Maka kita akan memfokuskan pada desain rangka dan damper (shock absorber) dan memproduksi part tersebut. Lalu kita akan meminta klien untuk mengetes-nya walaupun kita belum membuat mesin ataupun body-nya. Bahkan jika perlu, kita bisa memasang bodi atau mesin dari produk yang sudah pernah dibuat sebelumnya baik oleh kita sendiri atau produsen lain agar mobil bisa berjalan terlebih dahulu selama pengetesan. Jika ada ketidakpuasan dari klien, kita tidak usah repot-repot membongkar desain dari keseluruhan mobil. Setelah mendapat persetujuan dari klien, maka kita akan fokus untuk menyediakan fitur selanjutnya. Proses ini berjalan berulang-ulang hingga semua kebutuhan pengguna atas sebuah mobil tercukupi. Jika profesi Anda berkecimpung dalam pengembangan software atau aplikasi tentu Anda sudah mendapatkan gambaran singkat contoh agile dan waterfall dalam proyek yang Anda jalankan.

***

Jadi pada intinya, perbedaan metode agile dan waterfall terletak pada proses di mana agile lebih melibatkan klien / kustomer dalam  menyempurnakan bagian-bagian kecil dari sebuah produk. Sesuai dengan manifesto agile yang sudah kami sebutkan sebelumnya, produk yang diciptakan melalui metode ini cenderung akan lebih bisa menyesuaikan dengan perubahan-perubahan yang disebabkan oleh tren maupun inovasi baru. Memang penerapan metode ini tidak semudah teorinya. Perusahaan sekelas Toyota saja butuh waktu dan effort yang lebih untuk menerapkan metode agile ini dengan melatih karyawannya di level perencana maupun pelaksana.

Jika Anda ingin menguasai penerapan agile sesuai dengan PMBOK 6, Anda dapat mengikuti class of the month dengan materi “Agile Practice Guide in PMBOK 6” oleh Inixindo Jogja.

 

#ComDay – Pengenalan Wajah dengan TensorFlow untuk Presensi Online

#ComDay – Pengenalan Wajah dengan TensorFlow untuk Presensi Online

#ComDay – Pengenalan Wajah dengan TensorFlow untuk Presensi Online

#ComDay - Pengenalan Wajah dengan TensorFlow untuk Presensi Online 19

Perkembangan teknologi dalam mengidentifikasi ID seseorang terus berkembang dari waktu ke waktu mulai dari penggunaan kartu, sidik jari, retina scan, hingga yang populer beberapa tahun belakangan ini yaitu pengenalan wajah. Teknologi ini sempat ramai dibicarakan saat Apple mengganti teknologi pengenalan sidik jari dengan Face ID yang menggunakan pengenalan wajah untuk membuka kunci layar pada iPhone X.

Sebenarnya teknologi pengenalan wajah tidak hanya dapat digunakan sebagai pembuka kunci smartphone saja tapi juga bisa digunakan untuk keperluan lain karena pengenalan wajah hanya membutuhkan kamera yang sekarang sudah menjadi komponen wajib di smartphone atau laptop. Salah satu penggunaan pengenalan wajah ini adalah untuk keperluan presensi dan telah dipakai oleh Baidu yang menggantikan kartu ID dengan pengenalan wajah untuk memberikan karyawan mereka akses masuk ke kantor. Apalagi dengan menjamurnya remote working, teknologi pengenalan wajah tentunya akan memberikan solusi terhadap permasalahan presensi karena dapat dilakukan secara online.

Jika Anda berpikir teknologi pengenalan wajah ini terlalu rumit untuk diaplikasikan karena menggunakan metode deep learning yang dari namanya sudah terdengar rumit, Anda dapat menggunakan TensorFlow. TensorFlow merupakan library perangkat lunak open source dan gratis yang dapat digunakan untuk mengembangkan pengenalan wajah. TensorFlow menyediakan beberapa model dan dataset deep learning yang dapat Anda gunakan dalam mengembangkan presensi online dengan pengenalan wajah.

Jika ingin mengenal TensorFlow lebih dalam lagi Anda dapat mengikuti Comday dengan tema “Pengenalan Wajah dengan TensorFlow untuk Presensi Online” yang akan diadakan Inixindo Jogja tanggal 20 Juni 2019. Comday ini akan mengulas tentang cara mengembangkan deep learning network untuk jaringan pengenalan wajah menggunakan TensorFlow

***

Baca juga tutorial TensorFlow bagian pertama dan bagian kedua

 

Biaya

Free (tempat terbatas)

DATE AND TIME

Kamis, 20 Juni 2019
14.00 WIB – Selesai

LOCATION

Eduparx – Inixindo Jogja
Jalan Kenari No 69 Yogyakarta
View Maps

This form does not exist

Pendaftaran ditutup karena kapasitas telah terpenuhi