Senin, 09 Juli 2018

Soal Pengantar Komputasi Modern

Soal Pengantar Komputasi Modern (Softskill)



SOAL
1. Teori komputasi dibagi lagi menjadi 3 ranting, kecuali
    a. Teori otomata (automata theory)
    b. Teori komunikasi (communication theory)
    c. Teori komputabilitas (computability theory)
    d. Teori kompleksitas (computational complexity theory)

2. Model komputasional yang terdiri dari satu set nilai-nilai, definisi hubungan dan kesimpulan logis, program terdiri dari definisi hubungan dan suatu komputasi adalah suatu bukti (suatu urutan kesimpulan), adalah
    a. Model Fungsional
    b. Model Imperatif
    c. Model Logika
    d. Model Komunikatif

3. Berikut beberapa contoh model komputasi, kecuali
    a. Pull Down Automata (PDA)
    b. Mesin Turing (Turing Machine)
    c. Mesin Moore
    d. Petri net

4. Komputasi modern yang menggunakan gaya komputasi yang terukur dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet adalah
    a. Cloud Computing
    b. Grid Computing
    c. Mobile Computing
    d. Traditional Computing

5. Contoh penyusunan kode program untuk pembuatan suatu aplikasi seperti GeoGebra - Dynamic Mathematics merupakan contoh implementasi komputasi pada bidang
    a. Sosial
    b. Ekonomi
    c. Biologi
    d. Matematika

6. Salah satu karakteristik dari Cloud Computing yang memiliki Kapabilitas layanan dari cloud provider tersedia lewat jaringan dan bisa diakses oleh berbagai jenis perangkat, seperti smartphone, tablet, laptop, workstation, adalah
    a. Resource Pooling
    b. Broad Network Access
    c. Measured Service
    d. Rapid Elasticity

7. Berikut 4 model data dari NoSQL, kecuali
    a. Document-oriented
    b. Object-oriented
    c. Row-oriented
    d. Graph-oriented

8. Aplikasi berbasis web yang telah menerapkan penggunaan NoSQL diantaranya
    a. Google dengan BigTable
    b. Hadoop
    c. Facebook dengan Cassandra
    d. Twitter dengan Dynamo

9. Sistem mencapai kondisi eventual consistency melalui replikasi dan verifikasi yang konsisten dalam node yang telah terbagi – bagi merupakan aspek yang ada yang harus dipenuhi oleh basis data yaitu
    a. Avaibility Partition-Tolerance
    b. Consistency Partition-Tolerance (CP)
    c. Consistency Avaibility (CA)
    d. RESTfull HTTP request

10. Konsep utama dari penerapan NoSQL adalah
    a. Horizontal scaling yang memungkinkan basis data untuk dijalankan dibeberapa server
    b. Cara mengatasi jumlah data yang sangat besar dan ledakan data dalam aplikasi web sebagai paridigma baru dalam penerapan teknologi basis data
    c. MapReduce yang diambil dari fungsi pemrograman diterapkan untuk menghasilkan dataset yang besar
    d. Schema-free yang memungkinkan dimana tidak terdapat tabel, kolom, kunci primer dan sekunder, join, dan relasi

11. Sistem operasi dapat diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan (dieksekusi) secara sejajar dengan ulir lainnya, dengan menggunakan cara time slice atau multiprocess adalah
    a. Thread
    b. Komputasional
    c. Command line interface
    d. Graphical User Interface

12. Penciptaan dan penghancuran thread “on-the-fly” saat eksekusi merupakan jenis Thread Berdasarkan Waktu Penciptaannya yaitu
    a. Time Slice
    b. Multiprocess
    c. Dynamic threads
    d. Static threads

13. Jenis – jenis proses thread diantaranya sebagai berikut, kecuali
    a. Static threads & Dynamic threads
    b. Time Slice & Multiprocess
    c. Single Thread Process & Multithread Process
    d. User Thread & Kernel Thread

14. Contoh sistem operasi yang mendukung kernel thread adalah sebagai berikut
    a. POSIX Pthread
    b. Win32 thread
    c. Java thread
    d. Solaris

15. Mengijinkan beberapa user-level thread memakai beberapa kernel thread termasuk Model Multithreading berdasarkan pemetaan bagian
    a. Many-to-One
    b. Many-to-Many
    c. One-to-One
    d. One-to-Many


JAWABAN
1. B
2. C
3. A
4. A
5. D
6. A
7. C
8. D
9. A
10. B
11. A
12. C
13. C
14. D
15. B

Jumat, 22 Juni 2018

Komputasi Parallel - Pengantar Thread Programming

Pengantar Thread Programming


           Thread dalam sistem operasi dapat diartikan sebagai sekumpulan perintah (instruksi) yang dapatdilaksanakan (dieksekusi) secara sejajar dengan ulir lainnya, dengan menggunakan cara time slice (ketika satu CPU melakukan perpindahan antara satu ulir ke ulir lainnya) atau multiprocess (ketika ulir-ulir tersebut dilaksanakan oleh CPU yang berbeda dalam satu sistem). Ulir sebenarnya mirip dengan  roses, tapi cara berbagi sumber daya antara proses dengan ulir sangat berbeda. Multiplethread dapat  dilaksanakan secara sejajar pada sistem komputer. Secara umum multithreading melakukan time-slicing  (sama dengan time-division multipleks), di manasebuah CPU bekerja pada ulir yang berbeda, di mana suatu kasus ditangani tidak sepenuhnya secara serempak, untuk CPU tunggal pada dasarnya benar-benar melakukan sebuah pekerjaan pada satu waktu. Thread saling berbagi bagian program, bagian data dan sumber daya sistem operasi denganthread lain yang mengacu pada proses yang sama. Thread terdiri atas ID thread, program counter, himpunan register, dan stack. Dengan banyak kontrol thread proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama.

Karakteristik Thread
Proses merupakan lingkungan eksekusi bagi thread-thread yang dimilikinya. Thread-thread di satu proses memakai bersama sumber daya yang dimiliki proses, yaitu :
Ruang alamat.
Himpunan berkas yang dibuka.
Proses-proses anak.
Timer-timer.
Snyal-sinyal.
Sumber daya-sumber daya lain milik proses.

Jenis-jenis Thread Berdasarkan Waktu Penciptaannya
1. Static threads
Jumlah thread yang akan dibuat ditentukan saat penulisan dan kompilasi program. Tiap thread langsung dialokasikan stack tetap.
Keunggulan = sederhana.
Kelemahan = tidak fleksibel.

2. Dynamic threads
Penciptaan dan penghancuran thread “on-the-fly” saat eksekusi. Penciptaan thread biasanya menspesifikasikan fungsi utama thread (seperti pointer ke procedure) dan ukuran stack, dapat juga ditambah parameter-parameter lan seperti prioritas panjadwalan.
Keunggulan = fleksibel.
Kelemahan = lebih rumit.

Jenis – Jenis Proses Thread
A. Single Thread Process
Sebuah proses tradisional atau heavyweight process mempunyai single thread yang berfungsi sebagai pengendali. Dapat diartikan sebagai proses yang bekerja secara berurutan sesuai dengan urutan masing-masing thread (terstruktur) dan hanya mengerjakan satu tugas dalam satu waktu.

B. Multithread Process
Merupakan satu atau beberapa thread yang dijalankan secara bersamaan(multiproses), dimana masing-masing thread tersebut dijalankan pada jalur masing-masing. Setiap thread pada multithread menjalankan kode atau script program secara berurutan. Multithread dapat diartikan juga sebagai suatu proses dengan thread banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu. Multithread sering pula disebut dengan multiproses atau multitasking pada system operasi.

Manfaat Thread
Thread bermanfaat untuk Multithreading yang berguna untuk Multiprocessor dan Singleprocessor.
Kegunaan untuk system Multiprocessor adalah :
a) Sebagai unit pararel atau tingkat granularitas pararelisme.
b) Peningkatan kinerja disbanding berbasis proses.
Kegunaan Multithreading pada Singleprocessor adalah :
a) Kerja foreground dan background sekaligus di satu aplikasi.
b) Penanganan asynchronous processing menjadi lebih baik.
c) Mempercepat eksekusi program.
d) Pengorganisasian program menjadi lebih baik.

Model Multithread
User (pengguna) thread
User thread didukung di atas kernel dan diimplementasi oleh thread library pada user level. library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan managemen thread tanpa dukungan dari kernel. Didalam fasilitas user-level thread yang murni, semua tugas manajemen thread dilakukan oleh aplikasi dan kernel tidak mengetahui keberadaan thread.
Tiga kunci thread libraries :
POSIX Pthread
Win32 thread
Java thread
Adapun kelemahannya yang dialami yaitu apabila kernelnya merupakanthread tunggal maka apabila salah satu user-level thread menjalankan blockingsystem call maka akan mengakibatkan seluruh proses diblok walau pun ada threadlain yang dapat jalan dalam aplikasi tersebut.

Kernel thread
Kernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadualan, dan managemen thread dilakukan oleh kernel pada kernel space.Pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread.
Keuntungannya adalah jika sebuah thread menjalankan blocking systemcall maka kernel dapat menjadualkan thread lain di aplikasi untuk melakukaneksekusi. Pada lingkungan multiprocessor, kernel dapat menjadwal thread-thread pada processor yang berbeda.
Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX.

Thread Libraries
1. Thread libraries menyediakan pemrogram dengan API untuk menciptakan dan memanage thread.
2. Dalam pengimplementasiannya ada dua cara, diantaranya :
Keseluruhan library pada ruang pemakai.
Kernel-support library yang didukung dengan OS.

Berdasarkan Pemetaan Thread 
Model multithreading berdasarkan dengan pemetaan dibedakan menjadi tiga bagian, yaitu:
1. Many-to-One 
Banyaknya User-Level thread yang dipetakan ke kernel thread tunggal, akan tetapi dari beberapa user thread dapat menggunakan satu kernel thread saja.
Contoh :
Solaries Green Thread
GNU Portable Thread

2. One-to-One 
Setiap user-level thread memetakan ke kernel thread, akan tetapi user thread hanya dapat menggunakan satu kernel thread.
Contoh :
Windows NT/XP/2000
Linux
Solaris 9 and later

3. Many-to-Many
Mengijinkan beberapa user-level thread memakai beberapa kernel thread.
Mengijinkan system operasi untuk menciptakan beberapa kernel thread.
Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.

Keuntungan Thread
Terdapat empat keuntungan utama dari program yang multithreading yaitu sebagai berikut:

1. Responsiveness
Membuat aplikasi yang interakti' menjadi
multithreading dapat membuat sebuah program terus berjalan meski pun sebagian dari program tersebut diblok atau melakukanoperasi yang panjang, karena itu dapat meningkatkan respons kepada user. Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan user sementara thread lain berusaha menampilkan image.

2. Resource Sharing
Thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengi8inkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

3. Economy
Dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dansumber daya. Alternatifnya adalah dengan user thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan sulit untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 24 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.

4. Utilization of multiprocessor architectures
Keuntungan dari multithreading dapat sangat meningkat pada arsitektur
multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapihal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi padakenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu (satu-satuan waktu pada CPU biasa disebut time slice atau quantum).

Thread Programming
Thread di Linux

-GNU/Linux menggunakan POSIX Standar Thread API
     -Dikenal dengan pthread
-Program dengan thread harus di-compile dengan "-lpthread"
  contoh : gcc testhread.c -o thread -lpthread

Program diidentifikasikan dengan thread ID
  -Type data : pthread_t

Fungsi-fungsi programming pthread :

1) pthread_t = tipe data thread
2) pthread_mutex_t = tipe data mutex thread
3) pthread_create = int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
    Parameter : Pertama-->thread ID
                        Kedua----->thread atribut (NULL untuk default atribut)
           Ketiga----->thread yang ingin dijalankan
                        Keempat-->parameter untuk fungsi yang dijalankan
Fungsi yang digunakan untuk menciptakan thread baru dalam suatu proses dengan atribut ditentukan oleh attr. Jika attr diisi NULL, atribut default akan dimuat. Jika pemanggilan fungsi berhasil, fungsi akan menyimpan ID dari thread ciptaan pada rujukan yang ditunjuk thread

4) pthread_detach = int pthread_detach(pthread_t thread);
Fungsi ini digunakan untuk mengindikasikan pada implementasi bahwa ruang penyimpanan thread pada thread bisa diminta kembali ketika thread berakhir

5) pthread_cancel = int pthread_cancel(pthread_t thread);
Fungsi ini digunakan untuk meminta agar thread dibatalkan. Kondisi kemampuan membatalkan dan tipedari thread yang dituju menentukan kapan pembatlan terjadi.

6) pthread_mutex_lock = int pthread_mutex_lock(pthread_mutex_t *mutex);
Fungsi ini digunakan untuk mengunci objek mutex yang dirujuk oleh mutex. Jika mutex sudah dikunci, thrad pemanggil akan ditahan hingga mutex menjadi tersedia (tidak terkunci). Operasi ini mengembalikan objek mutex yang dirujuk oleh mutex pada keadaan terkunci dengan thread pemanggil sebagai pemiliknya

7) pthread_mutex_unlock = int pthread_mutex_unlock(pthread_mutex_t *mutex);
Fungsi ini berguna untuk membebaskan objek mutex yang dirujuk mutex. Bagaimana cara mutex dibebaskan tergantung dari tipe atribut mutex

8) pthread_mutex_destroy = int pthread_mutex_destroy(pthread_mutex_t *mutex);
Fungsi ini menghancurkan objek mutex yang dirujuk oleh mutex, sehingga objek tersebut menjadi tidak terinisialisasi.




Source by:

http://ebook.repo.mercubuana-yogya.ac.id/FTI/tugas_doc_20151/14121004-SIF50_P_5-SO_Artikel%20Thread_SI_21_14121004_Adito%20Efri.pdf

http://www.academia.edu/30582405/MAKALAH_SISTEM_OPERASI_THREAD_Pengertian_Thread

http://world-just-for-you.blogspot.com/2014/11/thread-proses-dan-thread-programming.html

Senin, 16 April 2018

Pengantar Komputasi Cloud – NoSQL Database

A.    Cloud Computing


Cloud computing adalah gabungan pemanfaatan teknologi komputer dan pengembangan berbasis internet. Cloud Computing hadir dengan memudahkan akses data dari mana saja dan kapan saja, karena dengan memanfaatkan internet dan menggunakan perangkat fixed atau mobile device menggunakan internet cloud sebagai tempat penyimpanan data, aplikasi dan lainya. Pengguna diuntungkan dengan semakin mudahnya memperoleh atau mengunduh data secara cepat dan mudah karena banyak layanan yang dibuka oleh pihak industri. Keuntungan bagi pihak industri pun tidak kalah besar dengan kemudahan yang didapat oleh pengguna, karena dengan semakin majunya teknologi cloud computing akan semakin memudahkan industri untuk memasarkan produk dan menyebarkan informasi secara meluas keseluruh penjuru dunia.

5 karakteristik dari Cloud Computing:

1.     Resource Pooling
Sumber daya komputasi (storage, CPU, memory, network bandwidth, dsb.) yang dikumpulkan oleh penyedia layanan (service provider) untuk memenuhi kebutuhan banyak pelanggan (service consumers) dengan model multi-tenant. Sumber daya komputasi ini bisa berupa sumber daya fisik ataupun virtual dan juga bisa dipakai secara dinamis oleh para pelanggan untuk mencukupi kebutuhannya.

2.     Broad Network Access
Kapabilitas layanan dari cloud provider tersedia lewat jaringan dan bisa diakses oleh berbagai jenis perangkat, seperti smartphone, tablet, laptop, workstation, dsb.

3.     Measured Service
Tersedia layanan untuk mengoptimasi dan memonitor layanan yang dipakai secara otomatis. Dengan monitoring sistem ini, kita bisa melihat berapa resources komputasi yang telah dipakai, seperti: bandwidth , storage, processing, jumlah pengguna aktif, dsb. Layanan monitoring ini sebagai bentuk transparansi antara cloud provider dan cloud consumer.

4.     Rapid Elasticity
Kapabilitas dari layanan cloud provider bisa dipakai oleh cloud consumer secara dinamis berdasarkan kebutuhan. Cloud consumer bisa menaikkan atau menurunkan kapasitas layanan. Kapasitas layanan yang disediakan ini biasanya tidak terbatas, dan service consumer bisa dengan bebas dan mudah memilih kapasitas yang diinginkan setiap saat.

5.     Self Service
Cloud Consumer bisa mengkonfigurasikan secara mandiri layanan yang ingin dipakai melalui sebuah sistem, tanpa perlu interaksi manusia dengan pihak cloud provider. Konfigurasi layanan yang dipilih ini harus tersedia segera dan saat itu juga secara otomatis.


B.    NoSQL Database

RDBMS merupakan suatu sistem khusus yang mengatur organisasi, penyimpanan, akses, keamanan dan integritas data. RDBMS merupakan sistem pengelolaan basis data yang paling banyak digunakan saat ini, meskipun terdapat berbagai macam sistem yang lain. RDBMS menyimpan informasi dalam suatu kumpulan tabel. Suatu desain RDBMS dikatakan bagus jika terdapat normalisasi basis data didalamnya.



NoSQL merupakan basis data non relasional dengan schema-free yang memunculkan pertanyaan bagaimana NoSQL dapat melakukan partisi untuk data yang berukuran besar, melakukan query, replikasi data, dan mendukung adanya konsistensi. Bagian ini berisi penjelasan empat model data NoSQL, yaitu column-oriented, document-oriented, object-oriented dan graph-oriented.

1.     Column-oriented
Penerepan column-oriented terdapat dalam Casssandra. Cassandra menggunakan distribusi multidimensional map indexed dengan sebuah key. Baris kunci yang sering digunakan dalam Cassandra adalah string dengan panjang 16-36 bytes. Setiap kolom digabungkan menjadi sebuah coloumn families. Wei Kang menerapkan beberapa konsep dalam penerapan column-oriented. Suatu kolom unit atomic dari informasi didukung oleh Cassandra yang diekspresikan dengan nama value. Super-column merupakan gabungan dari kolom dengan nama yang umum dan digunakan untuk pemodelan tipe data yang komplek. Baris secara unik mengidentifikasikan data yang terdapat dalam column dan super-column. Dalam Cassandra baris dapat dikenali dengan sebuah kunci. Column Family merupakan bagian dari suatu unit abstraksi yang berisi baris kunci yang tergabung dalam column dan super column yang memiliki struktur data yang tinggi. Keyspace merupakan level teritnggi dari unit informasi yang terdapat dalam Cassandra. Kumpulan column families sebenarnya merupakan subordinat dari satu keyspace. Pada intinya model data column-oriented memungkinkan suatu aplikasi secara bebas untuk mengembangkan bagaimana informasi disusun berdasarkan suatu desain schema.

2.     Document-oriented
Contoh penerapan model data document-oriented terdapat dalam CouchDB yang dibangun oleh IBMTM. Basis data yang memiliki model data document-oriented sangat bermanfaat untuk suatu domain yang bentuk masukannya dokumen yang tidak terstruktur seperti web pages, wikis, discussion forums, dan blogs. Data tersimpan dalam basis data CouchDB yang mencakup serangkaian dokumentasi yang berisi beberapa atribut dan nilai dengan masing-masing id yang unik dan metadata. CouchDB tidak pernah melakukan overwrite document, melainkan menambahkan dokumen baru ke basis data bila diperlukan seperti ketika terjadi proses update.

3.     Object-oriented
Basis data berorientasi objek adalah model basis data dimana informasi direpresentasikan dalam bentuk objek yang digunakan dalam pemrograman berorientasi obyek. OrientDB adalah contoh dari basis data object-oriented. Dokumen OrientDB yang ada dalam suatu cluster, dapat berupa fisik, logis atau in-memory, yang digunakan untuk menyimpan link ke dalam data. Cluster adalah cara yang sangat umum untuk mengelompokkan record, hal ini merupakan suatu konsep yang tidak ada dalam basis data relasional. Cara ini dapat mengelompokkan semua record pada jenis tertentu, atau dengan nilai-nilai tertentu. OrientDB menggunakan segmen data untuk menyimpan isi record. Segmen data mirip dengan file physical cluster yang menggunakan dua atau lebih file, yaitu satu atau beberapa file dengan ekstensi "oda" (Orient Data) dan hanya satu file dengan ekstensi "odh" (Orient data Holes).

4.     Graph-oriented
Basis data grafik (GraphDB) adalah basis data yang menggunakan struktur grafik yang berisi node, edge, dan property untuk mewakili dan menyimpan informasi. GraphDB diperlukan untuk data grafik yang berskala besar, terutama yang dipergunakan oleh para peneliti biologi jaringan dan situs jaringan sosial, seperti Facebook, dan Twitter. GraphDB memetakan secara langsung objek ke aplikasi dan lebih intuitif untuk menggambarkan data set asosiatif. Beberapa keuntungan dari GraphDB adalah Intuitive, dimengerti oleh pikiran manusia, yaitu menggambarkan entitas dan hubungan sebagai grafik masalah umum yang akrab dengan manusia; Elemental untuk ilmu komputer, yaitu grafik, terutama grafik pohon (seperti binary-tree, B+ tree, red-black tree) berfungsi sebagai struktur data dasar dalam ilmu komputer dan berbagai masalah (shortest path dan max-flow) dapat diubah dan diselesaikan dengan algoritma grafik; Ubiquitous, yaitu pemodelan ER ke model jejaring sosial selalu dikelilingi oleh grafik baik di computer ataupun dalam kenyataan.

Keunggulan lain dalam GraphDB adalah biasanya lintasan grafik digunakan sebagai pengganti operasi join yang berpengaruh dalam efisiensi query. GraphDB juga tergantung pada kurangnya schema yang kaku di mana suatu schema dapat selalu diubah dengan mudah pada grafik, karena struktur grafik sendiri cukup fleksibel untuk mewakili perubahan melalui edit edge dan properti. GraphDB juga dapat mendukung semua fitur basis data yang kuat.

Beberapa aplikasi berbasis web yang telah menerapkan penggunaan NoSQL diantaranya adalah Google dengan BigTable, Amazon dengan Dynamo, dan Facebook dengan Cassandra dan Hadoop. Dengan mengesampingkan aspek ACID, NoSQL menerapkan konsep BASE (Basically Available, Soft state, dan Eventually consistent) untuk meningkatkan availability dan partitioning data. Basically Available memastikan bahwa sistem bekerja sepanjang waktu. Soft state merupakan suatu kondisi dimana sistem tidak harus konsisten setiap saat, dan Eventually consisten yang menekanakan bahwa sistem akan menjadi konsisten beberapa waktu kemudian.

Telah banyak produk basis data NoSQL dengan berbagai keunggulannya masing-masing. Beberapa diantaranya adalah CouchDB yang memiliki nilai konkruensi dan RESTfull HTTP request, simpleDB yang memiliki kesederhanaan dan fleksibilitas dalam pemeliharaannya, dan Google BigTable yang memiliki kuota yang terbatas.

Eric Brewer menyatakan bahwa NoSQL didasarkan pada teori CAP yaitu pemilihan dua dari tiga aspek yang ada yang harus dipenuhi oleh basis data yaitu
1.     Consistency Avaibility (CA)
Berseberangan dengan Partition-Tolerance dan biasanya berhubungan dengan replikasi.
2.     Consistency Partition-Tolerance (CP)
Berseberangan dengan Avaibility dalam penyimpanan data.
3.     Avaibility Partition-Tolerance
Sistem mencapai kondisi eventual consistency melalui replikasi dan verifikasi yang konsisten dalam node yang telah terbagi - bagi.

Dalam basis data NoSQL penerapan konsep tersebut diterjemahkan dalam empat konsep dasar yaitu Non-Relational, MapReduce, Schema Free, dan Horizontal Scaling.

1)     Non-Relational
Konsep Non-Relational dalam basis data NoSQL meliputi hirarki, graf, dan basis data berorientasi obyek yang sudah terlebih dahulu ada sejak tahun 1960 sebelum akhirnya basis data relasional muncul pada tahun 1970 [13]. Penggunaan basis data non-relational kembali merebak seiring dengan bertambahnya aplikasi berbasis web yang memerlukan banyak penyimpanan data. Meskipun memiliki kelemahan pada konsistensi dan redundansi data, namun basis data non-relasional dapat menyelesaikan beberapa permasalahan terkait dengan avaibility, dan partition tolerance. Tugas pengecekan konsistensi dan redundansi data diserahkan pada sisi aplikasi, sedangkan basis data nonrelational hanya bertugas memanipulasi penyimpanan saja.

2)     MapReduce
MapReduce merupakan model pemrograman yang diadaptasi dari pemrograman fungsional yang diimplementasikan untuk mengolah dataset yang sangat besar. Tujuan dari MapReduce adalah merancang suatu abstraksi baru yang memungkinkan pengguna untuk membuat antarmuka pemrograman sederhana dan menyembunyikan detail yang rumit dari pararelisasi, fault-tolerance, distribusi data, dan load balancing dalam pustaka pemrogramannya. Hasilnya menunjukkan bahwa penerapan MapReduce dapat menyederhanakan antarmuka pemrograman yang dapat pendukung paralelisasi dan distribusi komputasi skala besar secara otomatis.
Pemrograman dengan MapReduce telah sukses diterapkan penggunaannya oleh Google untuk berbagai tujuan, salah satunya adalah Google indexing. Dalam kinerjanya, Google menerapakan ribuan mesin yang bekerja pada ratusan terabytes data dengan lokasi server yang tersebar di beberapa lokasi. Jenis arsitektur seperti ini dapat mengurangi waktu kinerja yang diperlukan. Pembangunan arsitektur Google dengan menggunakan MapReduce memerlukan waktu hanya dalam beberapa jam saja dibandingkan dengan tidak menerapkan MapReduce yang memerlukan waktu selama berbulan bulan. Penggunaan library dalam MapReduce memiliki beberapa keuntungan seperti load balancing, optimasi perangkat penyimpanan yang nantinya akan meningkatkan keefisiensian sistem dan kemudahan dalam penggunaannya. Mudahnya, MapReduce bekerja dengan membagi proses menjadi dua fase, yaitu tahap map dan tahap reduce. Seorang programmer dapat memanfaatkan dua fungsi ini bersama fungsi key-value pairs sebagai input dan output untuk mencapai semua fase.
Berikut ini merupakan contoh penggunaan fungsi Map() dan Reduce() yang diambil dari makalah Ricky Ho. Tujuan dari penggunaan MapReduce dalam kasus ini adalah menghitung jumlah distinct path diantara orang-orang yang memiliki koneksi dan akan disarankan ke orang dalam suatu situs pertemanan. Fungsi MapReduce digunakan untuk mencari 10 orang teratas yang saling terkoneksi.
Untuk fungsi Map(), sebuah Cartesian Product dikerjakan untuk semua pasangan teman. Kita juga perlu menghilangkan pasangan yang terkoneksi langsung. Oleh karena itu fungsi Map() juga harus memunculkan pasangan orang yang terkoneksi langsung. Kita perlu mengambil key space sedemikian rupa sehingga semua key dengan pasangan yang sama akan mempunyai pengurangan yang sama. Disisi lain, kita memerlukan pasangan yang berhubungan langsung sebelum pasangan yang mempunyai pemisah.
Pada Fungsi Reduce() semua key yang mencapai reducer yang sama akan diurutkan. Jadi pasangan yang terkoneksi langsung akan ada sebelum pasangan yang tidak terkoneksi. Reducer hanya perlu untuk mengecek jika pasangan pertama merupakan koneksi langsung dan jika iya, maka lanjutnya sisanya.



3)     Schema-Free
NoSQL dan RDBMS mempunyai perbedaan dalam hal penerapan skema basis data. Dalam basis data relasional, sebuah tabel didesain dengan peraturan skema yang ketat. NoSQL menyimpan data dengan aturan yang lebih longgar, artinya tidak seperti basis data yang berdasarkan SQL tradisional , NoSQL tidak memiliki tabel, kolom, primary dan foreign key, join, dan relasi. Dalam pengembangan basis data relasional, developer/database administrator harus berhati-hati dalam menentukan bagaimana tabel saling berelasi dan field yang ada didalam setiap tabel. Karena perubahan skema dalam RDBMS dapat menimbulkan masalah ketergantungan dan integritas, seperti timbulnya kolom null dan relasi kunci yang tidak cocok. Hal ini bukan masalah dalam NoSQL karena adanya penerapan schemafree. Setiap dokumen bertanggung jawab terhadap isinya sendiri, maksutnya null value dapat dihilangkan dalam beberapa baris, dan field baru dapat didefinisikan dalam setiap dokumen secara indpenden. Salah satu produk basis data NoSQL yang menerapkan fitur schema-free adalah Cassandra. Dalam Cassandra, pengembang hanya perlu mendefinisikan keyspace sebagai pertimbangan container dan contains column families. Keyspace hanya digunakan sebagai logical namespace yang dapat dimasukkan dalam configurations dan hold column families. Column families artinya sebuah nama untuk relasi data dan hirarki kolom (memungkinkan penyisipin tabel dalam kolom). Disamping itu, kita hanya perlu menambahkan data dalam tabel, menggunakan kolom, tanpa menentukan kolomnya terlebih dahulu. Dalam Cassandra kita hanya perlu mendefinisikan tabel namespace dan hirarki kolom didalamnya, memodelkan dan mendesain tabel join adalah masalah dalam basis data relasional bukan NoSQL.
Manfaat lain dalam penggunaan schema-free adalah penghematan dalam media penyimpanan. Dalam basis data relasional, setiap field yang ada dalam tabel harus mempunyai nilai, walaupun nilai itu null. Model data schema free artinya setiap baris memungkinkan memiliki nilai sebanyak yang telah didefinisikan dalam tiap fields, dan tidak perlu menggunakan nilai yang memang tidak diperlukan. Kelemahan dalam penggunaan schema free adalah memunculkan lemahnya pendefinisian struktur yang menungkinkan terjadinya penggunaan basis data yang tidak konsisten. Jika tujuan pembangunan basis data didasarkan pada konsistenti yang ketat, seperti wiki, document management systems, discussion forums, blogs, dan support management systems, basis data relasional masih merupakan pilihan yang tepat.

4)     Horizontal Scaling
Horizontal scaling memungkinkan basis data dijalankan pada beberapa server untuk meningkatkan kemampuan perangkat penyimpanan dan meningkatkan efisiensi waktu. Hal ini memerlukan kemampuan dinamis pemartisian data dalam serangkaian node (seperti storage hosts) dalam suatu cluster server. Kemampuan untuk meningkatkan kemampuan dengan menambahkan beberapa komputer sangatlah penting dilakukan untuk data yang jumlahnya banyak, karena vertical scaling dilakukan dengan meningkatkan kemampuan spesifikasi single server (misalnya penambahan prosesor, memori, dan peralatan penyimpanan) terbatas untuk dilakukan dan lebih mahal.
Horizontal scaling berarti memungkinkan dilakukannya penambahan server dalam satu jaringan dan user tidak sadar jika ada hardware yang diganti dari sisi server (transparent). Ada beberapa teknik partisi yang digunakan dalam basis data untuk melakukan horizontal scaling, salah satunya adalah consistent hashing yang digunakan dalam Cassandra dan Amazon Dynamo. Kunci dari menerapkan consistent hashing adalah membuat suatu lingkaran atau “ring”. Setiap node dalam sistem yang ditandai dengan random value dalam suatu space yang merepresentasikan posisi dari ring. Suatu kunci item ditandai dengan sebuah node untuk memperoleh posisinya pada ring, kemudian berpindah menuju node selanjutya yang sudah ditandai. Node memerankan peranan penting sebagai koordinator untuk kunci yang akan digunakan dalam route request. Kemudian, setiap node menjadi tanggung jawab dari daerah yang ada di ring diantara noder dan node dalam ring sebelumnya. Pejelasan detail mengenal Dynamo dijelaskan oleh DeCandia dkk.

Konsep utama dari penerapan NoSQL adalah bagaimana mengatasi jumlah data yang sangat besar dan ledakan data dalam aplikasi web sebagai paridigma baru dalam penerapan teknologi basis data. Permasalahan dalam RDBMS mengenai skalabilitas dan partisi data dapat diatasi dengan menggunakan NoSQL. NoSQL memiliki beberapa keunggulan seperti basis data non-relasional (meliputi hirarki, graf, dan basis data object oriented); MapReduce yang diambil dari fungsi pemrograman diterapkan untuk menghasilkan dataset yang besar; Schema-free yang memungkinkan dimana tidak terdapat tabel, kolom, kunci primer dan sekunder, join, dan relasi; Horizontal scaling yang memungkinkan basis data untuk dijalankan dibeberapa server untuk meningkatkan penyimpanan dan peningkatan waktu akses untuk mengatasi permasalahan banyaknya data. Empat model data NoSQL juga telah berhasil diinvestigasi dalam penelitian ini, yaitu column-oriented, document-oriented, object-oriented, dan graph-oriented. Sistem pembagian data dapat dilakukan dengan memenuhi dua dari tiga teori CAP.

Untuk peningkatan horizontal scaling, NoSQL mengorbankan konsistensi. Meskipun demikian NoSQL merupakan alternatif dari RDBMS dalam hal pendistribusian data, bukan penanganan masalah secara keseluruhan terutama transaksi yang tinggi. NoSQL tidak menerapkan konsistensi dan integritas data, hal ini membuat programmer harus bekerja ekstra dalam untuk mengatasinya dari sisis pemrograman.

Minggu, 01 April 2018

Pengantar Komputasi Modern (Teori Komputasi dan Implementasi)


A.     TEORI KOMPUTASI

Kalkulasi adalah prasyarat untuk komputasi. Kalkulasi melibatkan angka-angka dan kata-kata yang menyatakan proses sederhana, sedangkan komputasi menggunakan rule, bahkan bisa tanpa angka-angka. Algoritma merepresentasikan suatu komputasi.
             Teori komputasi (theory of computation) adalah cabang ilmu komputer teoritis (theoritical computer science). Teori komputasi berkaitan dengan studi bagaimana persoalan (problem) dapat diselesaikan pada sebuah model dengan menggunakan algoritma. Model tersebut dinamakan model komputasi



·       Teori komputasi dibagi lagi menjadi 3 ranting:
1.     Teori otomata (automata theory)
2.     Teori komputabilitas (computability theory)
3.     Teori kompleksitas (computational complexity theory)

·       Beberapa model komputasi:
1.     Finite State Automata (FSA)/Finite State Machine (FSM)
(bentuk tunggal: automaton, plural: automata)
2.     Push Down Automata (PDA)
3.     Mesin Turing (Turing Machine) atau TM



B.     KOMPUTASI MODERN

Komputasi modern bisa disebut sebuah konsep sistem yang menerima intruksi-intruksi dan menyimpannya dalam sebuah memory, memory disini bisa juga dari memory komputer. Oleh karena pada saat ini kita melakukan komputasi menggunakan komputer maka bisa dibilang komputer merupakan sebuah komputasi modern. Konsep ini pertama kali digagasi oleh John Von Neumann (1903-1957). Dalam kerjanya komputasi modern menghitung dan mencari solusi dari masalah yang ada, dan perhitungan yang dilakukan itu meliputi:
1.     Akurasi
2.     Kecepatan
3.     Problem Volume Besar
4.     Modelling
5.     Kompleksitas

·       Komputasi modern terbagi menjadi tiga macam, yaitu :
1.     Mobile Computing atau komputasi bergerak adalah kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa kabel dan mudah dibawa dan mudah di pindah – pindahkan. Contoh dari perangkat komputasi bergerak, seperti smartphone, GPS, dll.
2.     Grid Computing atau komputasi grid menggunakan komputer yang terpisah oleh geografis, didistribusikan dan terhubung oleh jaringan untuk menyelesaikan masalah komputasi skala besar, ada beberapa daftar yang dapat digunakan untuk mengenali sistem komputasi grid, adalah:
-        Sistem untuk koordinat sumber daya komputasi tidak dibawah kendali pusat.
-        Sistem menggunakan standart dan protocol yang terbuka.
-        Sistem mencoba mencapai kualitas pelayanan yang canggih, yang lebih baik diatas kualitas komponen individu pelayanan komputasi grid.
3.     Cloud Computing atau Komputasi cloud merupakan gaya komputasi yang terukur dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet, Komputasi cloud menggambarkan pelengkap baru, konsumsi, dan layanan IT berbasis model dalam internet dan biasanya melibatkan ketentuan dari keterukuran dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet.

·       Perbedaan diantara ketigannya adalah:
-        Komputasi Mobile menggunakan teknologi komputer yang bekerja seperti handphone, sedangkan komputasi grid dan cloud menggunakan komputer.
-        Biaya untuk tenaga komputasi mobile lebih mahal dibandingkan dengan komputasi grid dan cloud.
-        Komputasi mobile tidak membutuhkan tempat dan mudah dibawa kemana – mana, sedangkan grid dan cloud membutuhkan tempat yang khusus.
-        Untuk komputasi mobile, proses tergantung si pengguna. Komputasi grid proses tergantung pengguna mendapatkan server atau tidak, dan komputasi cloud prosesnya membutuhkan jaringan internet sebagai penghubungnya.

C.     IMPLEMENTASI KOMPUTASI

·       Bidang Matematika
Menyelesaikan sebuah masalah yang berkaitan dengan perhitungan matematis, namun dalam pengertian yang akan dibahas dalam pembahasan komputasi modern ini merupakan sebuah sistem yang akan menyelesaikan masalah matematis menggunakan komputer dengan cara menyusun algoritma yang dapat dimengerti oleh komputer yang berguna untuk menyelesaikan masalah manusia. Contoh penyusunan kode program untuk pembuatan suatu aplikasi seperti GeoGebra - Dynamic Mathematics (GeoGebra is an interactive geometry, algebra, statistics and calculus application, intended for learning and teaching mathematics and science from primary school to university level.)

·       Bidang Ekonomi
Pemrograman yang didesain khusus untuk komputasi ekonomi, dan pengembangan alat bantu dalam pendidikan komputasi ekonomi. Karena dibidang ekonomi pasti memiliki permasalahan yang harus dipecahkan oleh algoritma contohnya adalah memecahkan teori statistika untuk memecahkan permasalahan keuangan.
Salah satu contoh komputasi di bidang ekonomi adalah komputasi statistik. Komputasi statistik adalah jurusan yang mempelajari teknik pengolahan data, membuat program, dan analisis data serta teknik penyusunan sistem informasi statistik seperti penyusunan basis data, komunikasi data, sistem jaringan, dan diseminasi data statistik.




Source:
-        https://anggasaputro.wordpress.com/2016/03/15/teori-komputasi-dan-penerapannya/

Jumat, 19 Januari 2018

Brosur PT. AIR MEDIA PERSADA (Kelompok 7)

Tugas Softskill pada minggu terakhir yaitu membuat brosur untuk perusahaan yang telah dibuat pada tugas sebelumnya.

A. Halaman Depan



B. Halaman Belakang


Penerapan Teknologi Informasi berupa penggunaan Sistem Informasi pada suatu instansi merupakan cara untuk mencapai suatu Good Governance. Dengan penerapan Sistem Informasi diharapkan dapat meningkatkan efektivitas dan efisiensi dalam pengolahan dan penyebaran informasi sehingga mampu meningkatkan optimalisasi penyediaan informasi guna mendukung kinerja instansi. Layanan Sistem Informasi mencakup pengembangan Sistem Informasi yang berbasis Web maupun yang berbasis Desktop. Dengan fokus penerapan OPEN SOURCE dalam setiap pengembangan sistem, kami (PT. Air Media Persada) berfokus kepada kepentingan instansi guna mendapatkan solusi yang tepat guna dengan memperhatikan perkembangan teknologi di masa depan