SQL dan NoSQL

Hmm..

Mungkin sebagian udah tau apa itu SQL dan NoSQL. Buat yang belum tau berikut pejelasan kedua istilah tersebut.

SQL database:

  1. Menyimpan data dalam tabel
  2. Menggunakan Skema
  3. Disarankan menggunakan normalisasi untuk mengurangi redundansi
  4. Bisa JOIN table
  5. Menggunakan Query
  6. Bisa menggunakan transaksi untuk cek proses update berhasil atau gagal

No SQL

  1. Menyimpan data dalam format JSON
  2. Bisa simpan data tanpa menggunakan skema
  3. Tidak harus menggunakan JOIN
  4. Menggunakan JSON untuk melakukan Query
  5. Menggunakan teknologi baru
  6. Tidak harus normalisasi

Biasanya SQL dipakai untuk project toko online dan sistem bank, sedangkan no SQL biasa dipakai untuk project social network dan customer management.

Ngga ada yang benar dan salah. semua harus disesuaikan dengan kebutuhan project.

Contoh kasus pada Daftar Kontak

Misalnya kita mau membuat daftar kontak dengan field sebagai berikut:

  • id
  • title
  • firstname
  • lastname
  • gender
  • telephone
  • email
  • address1
  • address2
  • address3
  • city
  • region
  • zipcode
  • country

Disini terlihat ada beberapa masalah
Masalah 1
Orang bisa mempunyai beberapa nomer telepon misalnya telepon rumah,kantor,HP. Untuk itu diperukan tabel baru yaitu telepon.

  • contact_id
  • name (text seperti rumah,kantor, HP dll.)
  • number

Masalah 2
Hal yang sama terjadi juga pada email. Jadi harus bikin tabel Email

  • contact_id
  • name (text seperti rumah,kantor, HP dll.)
  • number

Masalah 3
Alamat juga ternyata memiliki masalah yang sama. Untuk itu tabel alamat perlu dibuat juga.

  • contact_id
  • name (text seperti rumah,kantor, HP dll.)
  • address1
  • address2
  • address3
  • city
  • region
  • zipcode
  • country

Pada Akhirnya tabel kontak menjadi beberapa field saja

  • id
  • title
  • firstname
  • lastname
  • gender
Kompleks

Tabel sudah dinormalisasi sehingga hanya beberapa field tersisa dana ada tambahan tabel. Tapi masih ada masalah lain ternyata ada field yang belum kasuk seperti tanggal lahir, jabatan, dan perusahaan. Berapapun field yang ditambahkan nanti akan tercipta tabel baru. Belum lagi nanti ada informasi seperti status, akun sosial media, catatan dll.

Lambat

Struktur database yang kompleks juga akan menyebabkan informasi yang akan diterima menjadi lambat. Karena kita harus memakai Query SELECT dan JOIN. Sebagai tambahan jika ingin melakukan query pencarian, kita juga harus mencari di tabel yang lainnya juga.

Solusi yang ditawarkan oleh No SQL

Tabel kontak berhubungan dengan manusia yang tidak dapat diprediksi dan membutuhkan beberapa kebutuhan. Tabel kontak akan sangat diuntungkan jika menggunakan No SQL dimana data disimpan dalam satu dokumen yang dinamakan collection.
[code]
{
name: [
"Billy", "Bob", "Jones"
],
company: "Fake Goods Corp",
jobtitle: "Vice President of Data Management",
telephone: {
home: "0123456789",
mobile: "9876543210",
work: "2244668800"
},
email: {
personal: "bob@myhomeemail.net",
work: "bob@myworkemail.com"
},
address: {
home: {
line1: "10 Non-Existent Street",
city: "Nowhere",
country: "Australia"
}
},
birthdate: ISODate("1980-01-01T00:00:00.000Z"),
twitter: ‘@bobsfakeaccount’,
note: "Don’t trust this guy",
weight: "200lb",
photo: "52e86ad749e0b817d25c8892.jpg"
}
[/code]
Dalam collection tersebut kita belum memasukkan jenis kelamin. Hal ini ngga akan jadi masalah kita bisa menambahkan sendiri tanpa harus membuat collection baru.

Karena informasi disimpan dalam satu dokumen maka kita bisa melakukan pencariian dengan satu query saja. MongoDB bisa melakukan itu dengan query
[code]
db.contact.createIndex({ "$**": "text" });
[/code]
Lalu dilanjutkan dengan
[code]
db.contact.find({
$text: { $search: "something" }
});
[/code]
Sumber http://www.sitepoint.com/sql-vs-nosql-choose/

Mar16

One Response to “SQL dan NoSQL”

  1. sy pahamnya, kalo RDBMS (SQL) itu agak ngga fleksibel buat nambah ke kanan (nambah kolom2an gt), tp lebih fleksibel buat nambah ke bawah (nambah record).
    NoSQL kebalikannya, lebih fleksibel buat nambah ke kanan. Kalo nambah ke bawah.. kurang tau gimana 😀

    kalo kecepatan nyarinya.. gimana ya, sensei?
    misalnya sama2 ngga pake join2an, RDBMS lebih cepet nggak? (misalnya karena pake index2an).
    kalo NoSQL itu mesti semaca nge-scan record dari depan sampe ketemu yg dimaksud (iya ga si..? *sok tau)

Leave a Reply