Wednesday, 4 December 2019

Post test nosql

CouchDB

Dikutip dari website CodepolitanCouchDB merupakan salah satu database NoSQL berbasis dokumen yang masuk dalam pembinaan Apache Foundation. CouchDB ini merupakan database yang bersifat Open Source. Salah satu database NoSQL yang memiliki konsep sama dengan CouchDB adalah MongoDB. CouchDB juga menjadi salah satu pionir database NoSQL sebelum digandrungi oleh developer di masa kini. CouchDB dibangun menggunakan bahasa pemrograman Erlang yang mengandalkan pada reliabilitas dan konkurensi. CouchDB juga menjadi salah satu basis dalam pengembangan IBM Cloudant, sebuah solusi database berbasis cloud yang ditawarkan IBM kepada enterprise.

Damien Katz adalah yang menciptakan CouchDB pada tahun 2005 saat proyek pengembangan MySQL. Pengambilan nama Couch adalah bersumber dari singkatan cluster of unreliable commodity hardware. Saat itu CouchDB adalah salah satu proyek teratas dari Apache Foundation di tahun 2008 hingga akhirnya di 2009 Damien berhasil membangun perusahaan CouchDB ini dengan nama CouchOne. CouchDB adalah database yang menggunakan perangkat Futon dengan user interface yang sederhana dan sangat mudah membuat developer merancang operasional database. Tak hanya itu, Javascript juga mengambil peran di CouchDB sebagai proses query dalam operasional database.

Saat ini CouchDB memiliki jenis lain yaitu CouchBase yang merupakan versi enterprise dan community dari CouchDB yang masih ditangani langsung oleh Damien dan timnya.

Konsep CouchDB

CouchDB adalah database NoSQL yang dirancang untuk berada dilingkungan kerja dunia website. Hal ini didukung beberapa faktor dasar CouchDB diciptakan.
  • CouchDB adalah basis data yang berbasiskan document oriented.
  • Format penyimpanan data dan pengaplikasiannya adalah format JSON.
  • Karena menggunakan JSON, CouchDB menggunakan Javascript untuk bahasa mengakses datanya.
  • CouchDB menggunakan HTTP sebagai API pendukung karena berbasis Apache.

Jika kita melihat pada logo CouchDB, terdapat 1 kata yang menggambarkan CouchDB, “Relax”. Ataupun ada 1 slogan yang menggambarkan CouchDB dan slogan ini juga ditampilkan pada saat akan memulai CouchDB yang nanti akan kita bahas.
“Apache CouchDB has started. Time to Relax”

Mengapa dikatakan seperti itu...? ini karena alasan utama CouchDB adalah database noSQL yang powerful dan mudah digunakan. Memahami dan mempelajari CouchDB dapat dilakukan dengan mudah secara alamiah bagi kebanyakan orang yang melakukan pekerjaan di dunia Website serta masih cukup mudah juga jika dijelaskan ke orang-orang non-teknis untuk memahaminya.

Dikatakan “relax” juga karena CouchDB mampu menghindari masalah-masalah internal pada server database yang sebagian besar masalah SQL terjadi. CouchDB bersifat penyimpanan cloud yang aman dan mudah diakses. Bahkan jika ada masalah tunggal yang terjadi dikeseluruhan sistem server, request perbaikan tetap akan tertangani dengan baik tanpa mengganggu sistem lainnya yang berhubungan sekalipun dengan trouble yang terjadi. 

Pretest no sql

. Apa yg anda ketahui tentang No SQL?
Jawab  :          
NoSQL adalah suatu evolusi baru yang ada didalam dunia database, NoSQL ini dikembangkan pertama kali pada tahun 1998 oleh Carlo Strozzi. Kemudian pada tahun 2009, Eric Evans memperkenalkan kembali teknologi NoSQL. Jika SQL diibaratkan dengan relational database  maka NoSQL adalah non-relational Database.
Apakah yang dimaksud dengan NoSQL itu sendiri? Ini adalah suatu perkembangan dari database rational yang telah sejak ada dan digunakan mulai tahun 1970-an sampai sekarang. Mengapa perkembangan dari database rational ini dibutuhkan dan pada akhirnya membuat suatu database system baru bernama NoSQL, karena melihat perkembangan internet dan aplikasi  selama 10-15 tahun terakhir.
Sekitar 10-15 tahun yang lalu jumlah user pengguna internet dan juga jumlah transaksi data pada aplikasi – aplikasi yang ada tidaklah sebanyak saat ini dan database relational yang telah ada dulu sudah sangat mencukupi untuk mengatur transaksi data yang ada dan mendukung operasi transaksi,  update sebagian data, melakukan kontrol terhadap operasi database, support terhadap constraint seperti unique, primary key, foreign key dan check. Memiliki bahasa SQL atau Simplified Query Language untuk mengakses data, merubah data seperti operasi insert, update  dan delete.

2. SQl dan NoSql apa perbedaannya?
Jawab  :          
NoSQL tidak menggunakan sintaks SQL untuk memyimpan data. Penyimpanan data dalam NoSQL tidak memerlukan skema tabel yang tetap seperti pada relational database.

Postest teknik normalisasi

 Jelaskan tahapan normalisasi
TAHAPAN NORMALISASI : Tahapan Normalisasi dimulai dari tahap ringan (1NF) hingga paling ketat (5NF). Biasanya hanya sampai pada tingkat 3NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik. Urutannya : 1NF, 2NF, 3NF, BCNF, 4 NF, 5NF
  1. Bentuk Tidak Normal
  2. Bentuk Normal Pertama (1NF) : Menghilangkan Perulangan Grup
  3. Bentuk Normal Kedua (2NF) : Menghilangkan Ketergantungan Parsial
  4. Bentuk Normal Ketiga (3NF) : Menghilangkan Ketergantungan Transitif
  5. Bentuk Normal Boyce-Code Form (BCNF) : Menghilangkan anomali-anomali hasil dari ketergantungan fungsional
  6. Bentuk Normal Keempat (4NF) : Menghilangkan ketergantungan multivalue
  7. Bentuk Normal Kelima : Menghilangkan anomali-anomali yang tersisa  

1. Un-Normal Form
  • Berupa relasi umum, sesuai kenyataan
  • Mencerminkan item data nyata
  • Mencerminkan bagian dari suatu sistem
  • Belum dapat digunakan sebagai database
  • Bentuk Flat Table menggambarkan jumlah  atribut
 
2. Bentuk Normal Tahap Pertama (1NF)
  • Bentuk normal 1NF terpenuhi jika sebuah tabel tidak memiliki atribut bernilai banyak (multivalued attribute), atribut composite atau kombinasinya dalam domain data yang sama.
  • Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi).
3. Bentuk Normal Tahap Kedua (2NF)
  • Bentuk Normal 2NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk 1NF, dan semua atribut selain primary key, secara utuh memiliki Functional dependency pada primary key.
  • Sebuah tabel tidak memenuhi 2NF, jika ada atribut yang ketergantungannya (Functional Dependency) hanya bersifat parsial saja (hanya tergantung pada sebagian dari primary key).
  • Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key, maka atribut tersebut harus dipindah atau dihilangkan.
4. Bentuk Normal Tahap Ketiga (3NF)
  • Bentuk normal 3NF terpenuhi jika telah memenuhi bentuk 2NF, dan jika tidak ada atribut non primary key yang memiliki ketergantungan terhadap atribut non primary key yang lainnya,
  • Untuk setiap Functional Dependency dengan notasi X-->A, maka :
  • X harus menjadi superkey pada tabel tersebut.
  • Atau A merupakan bagian dari primary key pada tabel tersebut.
5. Boyce-Code Normal Form (BCNF)
  • Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap Functional Dependency terhadap setiap atribut atau gabungan atribut dalam bentuk : X --> Y maka X adalah Super Key.
  • Tabel tersebut harus di dekomposisi berdasarkan Functional Dependency yang ada, sehingga X menjadi super key dari tabel-tabel hasil dekomposisi.
  • Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk Functional Dependency X--> A, BCNF tidak membolehkan A sebagai bagian dari primary key.
6. Bentuk Normal Tahap Keempat (4NF) atau MVD dan PJNF
  • Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued attribute.
  • Untuk setiap  multivalued attribute (MVD) juga harus merupakan Functional Dependency
7. Bentuk Normal Tahap Kelima (5NF)
  • Bentuk normal 5NF terpenuhi jika memiliki sebuah loseloss decomposition menjadi tabel-tabel yang lebih kecil.
  • Jika 4 bentuk normal sebelumnya dibentuk berdasarkan Functional Dependency, 5NF dibentuk berdasarkan konsep Join Dependence. Yakni apabila sebuah tabel telah di dekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi untuk membentuk tabel semula.
8. Overnormalisasi
Analisa Overnormalisasi diperlukan jika :
  • Database ini digunakan untuk sistem multi user
  • Tabel-tabel yang sudah normal ini digabungkan dengan fungsi lain yang ada di lapangan, misalnya; untuk fungsi retur, untuk fungsi inventori, untuk fungsi sales order maupun order pembelian, untuk fungsi keamanan database, dan lain-lain.
2.  Buat  penggunaan Teknik Normalisasi untuk contoh kasus
    basis data "Perpustakaan"
1. Bentuk Tidak Normal (UNF)
Syarat :
Masukan semua atribut yang ada pada dokumen dasar (Dokumen Masukan dan Dokumen Keluaran) pada satu himpunan.
Langkah :
Masukan semua atribut yang ada pada dokumen masukan (Form Data Anggota, Form Data User dan Form Buku) dalam satu himpunan.

2. Bentuk Normal Pertama (1NF)
Syarat :
- Tidak ada baris yang duplikat
- Masing  masing Cell atau Atribut bernilai tunggal
Langkah :
- Hapus / Buang atribut yang duplikat (pada kotak merah) yang ada pada Bentuk Tidak Normal (UNF) menjadi Cell yang bernilai tunggal pada himpunan baru Normalisasi Bentuk Pertama (1NF).
Tentukan atribut yang akan dijadikan Candidate Key (Calon Kunci yang akan menjadi Kunci Utama).


Keterangan :
* Candidate Key


3. Bentuk Normal Kedua
Syarat :
- Sudah dalam bentuk Normal Pertama.
- Semua atribut yang tidak termasuk dalam Primary Key memiliki ketergantungan fungsional pada Primary Key secara utuh.
Langkah :
Buat tabel baru dengan setiap himpunan yang saling ketergantungan secara fungsional antara atribut Primary Key dan atribut bukan kunci (atribut yang tidak memiliki kunci).
Bentuk Normal Ketiga (3NF)
Syarat :
Menghilangkan anomali-anomali hasil dari ketergantungan fungsional.
Langkah :
- Sudah dalam bentuk Normal Kedua
- Pisahkan atribut yang merupakan atau menjadi atribut detail (tidak tergantung secara langsung kepada atribut Primary Key). Pisahkan atribut (pada kotak merah) dari himppunan / dari tabel asal pisahkan ke tabel baru.


Pretest teknik normalisasi

Kapan Teknik Normalisasi digunakan dalam mengembangkan Database?

Pada dasarnya normalisasi merupakan teknik yang formal yang bisa digunakan di tahap manapun dalam perancangan sistem database. pada umumnya ada dua pendekatan tentang penggunaan normalisasi. Yang pertama adalah pendekatan 'bottom-up' dan yang kedua disebut pendekatan 'top-down'.

Pendekatan bottom-up dan top-down dalam menggunakan normalisasi dalam perancangan basis data
Seperti bisa dilihat pada gambar di atas, pendekatan 1 (approach 1) menunjukkan kapan/dimana normalisasi digunakan sebagai teknik 'standalone' dalam perancangan basis data sementara pada pendekatan 2 (approach 2) menunjukkan kapan/dimana normaliasi bisa digunakan sebagai teknik validasi untuk mengecek struktur relasi-relasi yang dihasilkan dengan pendekatan top-down seperti ER modeling. Tidak perlu dipusingkan pendekatan mana yang digunakan, tujuan keduanya adalah sama yaitu menghasilkan relasi-relasi yang terdesain dengan baik yang memenuhi data requirements perusahaan. 

Gambar ilustrasi diatas juga  menunjukkan contoh berbagai sumber data yang bisa digunakan untuk perancangan basis data.  Meskipun spesifikasi users’ requirements adalah sumber data yang pada umumnya lebih diutamakan, tetapi mungkin juga untuk merancang basis data berdasarkan informasi yang diambil langsung dari sumber data lainnya seperti form-form atau report-report tradisional seperti yang dilustrasikan dalam posting tulisan tentang: “Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF”.
Gambar di atas juga menunjukkan bahwa sumber data yang sama bisa juga digunakan untuk kedua pendekatan tersebut, namun demikian, meskipun hal itu secara prinsip betul, pada praktinya pendekatan yang diambil cenderung ditentukan oleh ukuran, batas, kompleksitas basis data yang digamnarkan dalam sumber data dan oleh preferensi dan keahlian dari si desainer basis data. Pilihan untuk menggunakan normalisasi sebagai teknik bottom-up (pendekatan 1) seringkali lebih terbatas yang disebabkan oleh tingkat detil yang ingin dikelola oleh si desainer basis data, tetapi keterbatasan semacam itu tidak akan terjadi ketika normalisasi digunakan sebagai teknik validasi (pendekatan 2) karena si desainer basis data hanya berfokus pada bagian dari basis data, misalnya suatu relasi tunggal, pada satu waktu. Jadi, tidak peduli berapa besar ukuran atau kompleksitas basis data, normalisasi bisa diterapkan dan tetap berguna.

Posttest optimasi query quiz

 1.Menurut anda pentingkan melakukan optimasi query dalam memanajemen database?


sangat penting karena optimasi query adalah suatu strategi penggunaan sumber sumber jalur query secara lebih efektif dan efisien dengan tujuan untuk seminimal mungkin total waktu yang digunakan ketika proses query berlangsung. 

2. Buat ringkasan dari materi SQL Tuning atau Optimasi Queri.


Database Tuning adalah sejumlah aktifitas yang dilakukan untuk memperbaiki atau meningkatkan kinerja atau performance sebuah database. Aktifitas tuning ini meliputi banyak aspek dari software hingga hardware, antara lain I/O TuningDBMS TuningQuery Tuning, dan Database Maintenance. Masing-masing memiliki tekniknya sendiri, dan membutuhkan skill yang mumpuni

3. Buat kesimpulan dari materi SQL Tuning atau Optimasi Queri 
Optimasi query merupakan suatu proses untuk menganalisa query untuk menentukan sumber-sumber apa saja yang digunakan oleh query tersebut dan apakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah output. Atau bisa juga dikatakan bahwa optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk membuat evaluasi tersebut menjadi lebih efektif.
Dimana optimasi query dapat berupa :
1.      Operasi urutan eksekusi(relational)
2.      Metode akses untuk relasi yang tepat
3.      Algoritma untuk menjalankan operasi (khususnya dalam join)
4.      Urutan per gerakan data antar site

Pretest Optimasi QueryQuiz

 1.Apa yang anda ketahui tentang  optimasi kueri?

Optimasi Query adalah suatu strategi penggunaan sumber sumber jalur query secara lebih efektif dan efisien dengan tujuan untuk seminimal mungkin total waktu yang digunakan ketika proses query berlangsung.
Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

Faktor-faktor lain yang berpengaruh terhadap optimalisasi kecepatan akses data dipengaruhi oleh banyak faktor seperti :
1.Optimasi Perintah SQL

Structured Query Language (SQL) adalah bahasa pemrograman yang memiliki tujuan khusus untuk mengelola data dalam sistem manajemen basis data relasional (DBMS).
Dalam melakukan optimalisasi perintah pada SQL kita harus mempertimbangkan aspek desain logik dan struktur penyimpanan data.
Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.
2. Informasi Jalur Akses Query
Pada Database Oracle, informasi untuk melihat jalur akses yang akan digunakan untuk eksekusi database saat melakukan query dapat dilihat dengan menggunakan perintah explain plain.Informasi ini disimpan dalam tabel PLAN_TABLE yang terdapat di schema user yang mengeksekusi perintah tersebut.
3. Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data

Faktor yang berpengaruh terhadap kecepatan akses data tidak hanya pada optimasi perintah SQL,tapi terhadap hal-hal lain yang berpengaruh.Faktor lain yang berpengaruh terhadap kecepatan akses data yaitu optimasi aplikasi dan penggunaan cluster dan index.
Diantaranya adalah optimasi aplikasi dan penggunaan cluster index.
  • Optimasi Aplikasi
Dalam pembuatan aplikasi yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien,yang dapat mendukung kecepatan akses seperti index dan cluster. Apakah desain database sudah melakukan normalisasi data secara tepat.Apakah aplikasi sudah sesuai aplikasi sudah berjalan secara optimal sesuai tujuan.Apakah query sudah optimal dan sesuai dengan aplikasi.
  • Cluster dan Index
Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dala suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di query.
Cluster dimaksudkan untuk mengurangi keborosan dalam melakukan manajemen terhadap struktur data di dalam disk, sehingga sistem berkas tidak akan mengalokasikan sektor disk fisik, tetapi sekumpulan sektor yang saling bedekatan.

Indeks atau index dalam database (basisdata) yaitu untuk meningkatkan kecepatan dalam meretrieve data,
di suatu database, indeks atau index memungkinkan program database menemukan data di suatu tabel tanpa menelusuri seluruh tabel.
Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex.

2. Apa yang anda ketahui tentang SQL Tuning?

Bagian terpenting pada tuning performansi database system adalah Tuning SQL statements. Adapun pada tuning SQL terdapat tiga langkah dasar :
  1. Identifikasi SQL statements yang memegang andil besar pada sharing workload aplikasi dan system resources, dengan me-review history SQL execution yang telah lampau yang tersedia pada system.
  2. Verifikasi bahwa execution plans yang diproduksi oleh query optimizer untuk statement-statement ini berjalan dengan baik.
  3. Mengimplementasi corrective actions untuk men-generate execution plans pada peformansi SQL statement yang buruk sehingga menjadi lebih baik.

Ketiga langkah di atas diulang sampai performansi system mencapai tingkat kepuasan atau tidak ada lagi statement yang dapat di-tuning

Tujuan
Tujuan dari tuning sistem adalah untuk mengurangi waktu respon sistem terhadap end user, atau untuk mengurangi resource yang digunakan untuk memproses pekerjaan yang sama. Kita dapat memenuhi kedua tujuan ini dalam beberapa cara:
  • Mengurangi Beban Kerja (Reduce the Workload)
  • Menyeimbangkan Beban Kerja (Balance the Workload)
  • Memparalelkan Beban Kerja (Parallelize the Workload)
a.   Mengurangi Beban Kerja (Reduce the Workload)
SQL Tuning secara umum melibatkan pencarian cara yang lebih efisien untuk memproses beban kerja yang sama. SQL tuning memungkinkan untuk mengubah rencana eksekusi dari suatu statement tanpa mengubah fungsionalitas untuk mengurangi pemakaian resource.Dua contoh bagaimana penggunaan resource dapat dikurangi:
  1. Jika suatu query yang biasa dieksekusi perlu untuk mengakses suatu persentase kecil dari data dalam tabel, maka query tersebut dapat dieksekusi dengan lebih efisien dengan menggunakan indeks. Dengan membuat indeks, kita dapat mengurangi jumlah pemakaian resource.
  2. Jika seorang user mencari dua puluh baris pertama dari 10000 baris yang diberikan oleh perintah pengurutan yang spesifik, dan jika query (dan perintah pengurutan) dapat dipenuhi oleh indeks, maka user tidak perlu untuk mengakses dan mengurutkan 10000 baris untuk melihat dua puluh baris.

b.  Menyeimbangkan Beban Kerja (Balance the Workload)
Sistem cenderung memiliki penggunaan penuh pada siang hari ketika user yang sebenarnya terhubung ke sistem dan penggunaan yang sedikit di malam hari. Jika noncritical report dan batch job dapat dijadwalkan untuk berjalan pada malam hari dan penggunaan sistem pada siang hari dikurangi, maka hal tersebut dapat membebaskan resource agar dapat digunakan pada program-program yang lebih penting pada siang hari.

c.   Memparalelkan Beban Kerja (Parallelize the Workload)
Query-query yang mengakses sejumlah besar data (typical data warehouse queries) sering dapat diparalelkan. Hal ini sangat berguna untuk mengurangi waktu respon dalam data warehouse yang rendah konkurensinya. Akan tetapi, untuk lingkungan OLTP, yang cenderung tingggi konkurensinya, hal ini dapat merugikan user-user lain dengan meningkatkan penggunaan resource secara keseluruhan pada program.