Rabu, 27 April 2016

Parallel Computation

A. Parallelism Concept
Paralelisme (parallelism) lahir dari pendekatan yang biasa dipergunakan oleh para perancang sistem untuk menerapkan konsep pemrosesan konkuren. Teknik ini meningkatkan kecepatan proses dengan cara memperbanyak jumlah modul perangkat keras yang dapat beroperasi secara simultan disertai dengan membentuk beberapa proses yang bekerja secara simultan pada modul-modul perangkat keras tersebut. Secara formal, pemrosesan paralel adalah sebuah bentuk efisien pemrosesan informasi yang menekankan pada eksploitasi dari konkurensi kejadian-kejadian dalam proses komputasi.
Pemrosesan paralel dapat terjadi pada beberapa tingkatan (level) proses. Tingkatan tertinggi pemrosesan paralel terjadi pada proses di antara banyak job (pekerjaan) atau pada program yang menggunakan multiprogramming, time sharing, dan multiprocessing. Multiprogramming kemampuan eksekusi terhadap beberapa proses perangkat lunak dalam sebuah system secara serentak, jika dibandingkan dengan sebuah proses dalam satu waktu, dan timesharing berarti menyediakan pembagian selang waktu yang tetap atau berubah-ubah untuk banyak program. Multiprocessing adalah dukungan sebuah sistem untuk mendukung lebih dari satu prosesor dan mengalokasikan tugas kepada prosesor-prosesor tersebut. Multiprocessing sering diimplementasikan dalam perangkat keras (dengan menggunakan beberapa CPU sekaligus), sementara multiprogramming sering digunakan dalam perangkat lunak. Sebuah sistem mungkin dapat memiliki dua kemampuan tersebut, salah satu di antaranya, atau tidak sama sekali. Pemrosesan paralel dapat juga terjadi pada proses di antara prosedurprosedur atau perintah perintah (segmen program) pada sebuah program.Untuk meningkatkan kecepatan proses komputasi, dapat ditempuh dua cara :

1. Peningkatan kecepatan perangkat keras.
Komponen utama perangkat keras komputer adalah processor. Meskipun kecepatan processor dapat ditingkatkan terus, namun karena keterbatasan materi pembuatnya, tentu ada suatu batas kecepatan yang tak mungkin lagi dapat dilewati. Karena itu timbul ide pembuatan komputer multiprocessor. Dengan adanya banyak processor dalam satu komputer, pekerjaan bisa dibagi-bagi kepada masing-masing processor. Dengan demikian lebih banyak proses dapat dikerjakan dalam satu saat. Peningkatan kecepatan setiap proses bisa dicapai melalui peningkatan kecepatan perangkat lunak. Kecepatan perangkat lunak sangat ditentukan oleh algoritmanya.

2. Peningkatan kecepatan perangkat lunak.
Program komputer untuk komputer sekuensial harus menyediakan sederetan operasi untuk dikerjakan oleh prosesor tunggal. Program komputer untuk komputer paralel harus menyediakan sederetan operasi untuk beberapa prosesor untuk dikerjakan secara paralel, termasuk operasi untuk mengatur dan mengitegrasikan prosesor-prosesor yang terpisah tersebut mengerjakan suatu komputasi yang koheren. Kebutuhan akan pembuatan dan pengaturan berbagai aktivitas komputasi paralel menambah dimensi baru proses dari pemrograman komputer. Algoritma untuk problem yang spesifik harus diformulasikan sedemikian rupa, agar menghasilkan aliran operasi paralel yang kemudian akan dieksekusi di prosesor yang berbeda. Karena itu, meskipun arsitektur multiprosesor dan multikomputer mempunyai pontensi yang tinggi untuk meningkatkan kemampuan komputasi, potensi ini akan tercapai melalui pengertian yang baik mengenai bahasa pemrograman paralel dan perancangan algoritma paralel.

Tingkat Paralelisme
Berdasarkan tingkat paralelismenya prosesor paralel dapat dibagi menjadi beberapa tingkat sebagai berikut :
1. Komputer Array :
a. Prosesor array : beberapa prosesor yang bekerja sama untuk mengolah set instruksi yang sama dan data yang berbeda – beda atau biasa disebut SIMD (Single Instruction-stream Multiple Data)
b. Prosesor vektor : beberapa prosesor yang disusun seperti pipeline.
2. Multiprosesor, yaitu sebuah sistem yang memiliki 2 prosesor atau lebih yang saling berbagi memori.
3. Multikomputer, yaitu sebuah sistem yang memiliki 2 prosesor atau lebih yang masing-masing prosesor memiliki memori sendiri.

Jenis - Jenis Pemrosesan Paralel
Pemrosesan paralel dapat dibagi ke dalam beberapa klasifikasi, sebagai berikut :
1. Berdasarkan simetri penjadwalannya, pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) Asymmetric Multiprocessing (ASMP)
b) Symmetric Multiprocessing (SMP)
c) ClusteringPoliteknik Telkom Sistem Komputer
2. Berdasarkan aliran instruksi dan datanya, pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) SISD (Single Instruction on Single Data Stream)
b) SIMD (Single Instruction on Multiple Data Stream)
c) MISD (Multiple Instruction on Single Data Stream)
d) MIMD (Multiple Instruction on Multiple Data Stream)
3. Berdasarkan kedekatan antar prosesor, pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) Multikomputer (Loosely Coupled/ local memory) dengan memori yang terdistribusi
b) Multiprosesor (Tightly Coupled/ global memory) dengan memori yang dapat digunakan bersama (shared memory)

B. Distributed Processing
Mengerjakan semua proses pengolahan data secara bersama antara komputer pusat dengan beberapa komputer yang lebih kecil dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut memiliki prosesor mandiri sehingga mampu mengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total. Jika salah satu prosesor mengalami kegagalan atau masalah yang lain akan mengambil alih tugasnya.

C. Architectural Parallel Computer
Dalam taksonomi arsitektur paralel ada dua keluarga arsitektur paralel yang banyak diterapkan adalah: SIMD dan MIMD, dimana untuk mesin yang murni MISD tidak ada.

1. Arsitektur SIMD
Mesin SIMD secara umum mempunyai karakteristik sbb:
1.       Mendistribusi proses ke sejumlah besar hardware
2.       Beroperasi terhadap berbagai elemen data yang berbeda
3.       Melaksanakan komputasi yang sama terhadap semua elemen data
Peningkatan kecepatan pada SIMD proporsional dengan jumlah hardware (elemen pemroses)
yang tersedia.

2. Arsitektur MISD
Prosesor pipeline adalah prosesor MISD yang bekerja berdasarkan prinsip pipelining. Pada pipeline proses dapat dibagi menjadi beberapa tahap dan beberapa proses dapat dilaksanakan secara simultan. Pada gambar dibawah dapat dilihat perbedaan proses serial dengan pipeline.

Waktu eksekusi lebih cepat dibandingkan dengan proses serial.
Prinsip pipelining dapat digunakan pada dua level yang berbeda:
1. Pipeline unit aritmatika
2. Pipeline unit kontrol Waktu eksekusi lebih cepat dibandingkan dengan proses serial.

Operasi pipeline dapat dilaksanakan secara siklus yaitu cyclic pipeline, dimana dapat dibagi dalam 5 tahap:
• Operasi baca (dari shared memories)
• Operasi transfer (memori ke elemen pemroses)
• Operasi eksekusi (di elemen pemroses)
• Operasi transfer (elemen pemroses ke memori)

• Operasi simpan (di shared memories)

SUMBER :

Parallel Computation (2)

D. Pengantar Thread Programming
Threading / Thread adalah sebuah alur kontrol dari sebuah proses. Konsep threading adalah menjalankan 2 proses ( proses yang sama atau proses yang berbeda ) dalam satu waktu. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network. Threading dibagi menjadi 2 :
1. Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors dan jenis komputer shared-memory lainnya. Teknik ini memungkinkan thread berbagi memori yang tersedia, menggunakan program counter dan mengeksekusi program secara independen. Sistem operasi menempatkan satu thread pada prosesor dan menukarnya dengan thread lain yang hendak menggunakan prosesor itu.

2. Dynamic Multithreading
Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan untuk kemudahan karena dengannya programmer tidak harus pusing dengan protokol komunikasi, load balancing, dan kerumitan lain yang ada pada static threading. Concurrency platform ini menyediakan scheduler yang melakukan load balacing secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara umum mendukung dua fitur : nested parallelism dan parallel loops.

E. Pengantar Massage Passing dan OpenMP

1. Message Passing Interface (MPI)
MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing-masing compute node yang kemudian masing-masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node.Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan-pertimbangan diantaranya adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor.
MPI ini merupakan standard yang dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada mekanismesuatu proses yang bisa mengakses secara langsung memori yang lain. Pembagian data antar  proses dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan antar  proses. MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan. Kegunaan MPI yang lain :
- Menulis kode paralel secara portable
- Mendapatkan performa yang tinggi dalam pemrograman paralel
- Menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak  begitu cocok dengan model data paralel.

2. OpenMP
OpenMP merupakan API yang mendukung multi-platform berbagi memori multiprocessing pemrograman C , C + + , dan Fortran , pada kebanyakan arsitektur prosesor dan system operasi , termasuk Solaris , AIX , HP-UX , GNU / Linux , Mac OS X , dan Windows platform. Ini terdiri dari satu set perintah kompiler, rutinitas library, dan variable lingkungan yang mempengaruhi perilaku run-time. OpenMP dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur Review Board (ARB atau OpenMP), bersama-sama didefinisikan oleh sekelompok perangkat keras komputer utama dan vendor perangkat lunak, termasuk AMD , IBM , Intel , Cray , HP , Fujitsu , Nvidia , NEC , Microsoft , Texas Instruments , Oracle Corporation , dan banyak lagi.

F. Pengantar Pemrograman CUDA GPU
GPU ( Graphical Processing Unit ) awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering pada kartu grafik saja, tetapi seiring dengan semakin meningkatnya kebutuhan rendering, terutama untuk mendekati waktu proses yang realtime, maka meningkat pula kemampuan prosesor grafik tersebut. akselerasi peningkatan teknologi GPU ini lebih cepat daripada peningkatan teknologi prosesor sesungguhnya ( CPU ), dan pada akhirnya GPU menjadi General Purpose, yang artinya tidak lagi hanya untuk melakukan rendering saja melainkan bisa untuk proses komputasi secara umum.
Penggunaan Multi GPU dapat mempercepat waktu proses dalam mengeksekusi program karena arsitekturnya yang natively parallel. Selain itu Peningkatan performa yang terjadi tidak hanya berdasarkan kecepatan hardware GPU saja, tetapi faktor yang lebih penting adalah cara membuat kode program yang benarbenar bisa efektif berjalan pada Multi GPU.
CUDA merupakan teknologi anyar dari produsen kartu grafis Nvidia, dan mungkin belum banyak digunakan orang secara umum. Kartu grafis lebih banyak digunakan untuk menjalankan aplikasi game, namun dengan teknologi CUDA ini kartu grafis dapat digunakan lebih optimal ketika menjalankan sebuah software aplikasi. Fungsi kartu grafis Nvidia digunakan untuk membantu Processor (CPU) dalam melakukan kalkulasi dalam proses data.
CUDA merupakan singkatan dari Compute Unified Device Architecture, didefinisikan sebagai sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dan lain sebagainya. VGA – VGA dari Nvidia yang sudah menggunakan teknologi CUDA antara lain : Nvidia GeForce GTX 280, GTX 260,9800 GX2, 9800 GTX+,9800 GTX,9800 GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400 mGPU,9300 mGPU,8800 Ultra,8800 GTX,8800 GTS,8800 GT,8800 GS,8600 GTS,8600 GT,8500 GT,8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri sejenis untuk kelas mobile ( VGA notebook ).

Singkatnya, CUDA dapat memberikan proses dengan pendekatan bahasa C, sehingga programmer atau pengembang software dapat lebih cepat menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi seperti teknologi ilmu pengetahuan yang spesifik. CUDA sekarang bisa dimanfaatkan untuk aplikasi multimedia. Misalnya meng-edit film dan melakukan filter gambar. Sebagai contoh dengan aplikasi multimedia, sudah mengunakan teknologi CUDA. Software TMPGenc 4.0 misalnya membuat aplikasi editing dengan mengambil sebagian proces dari GPU dan CPU. VGA yang dapat memanfaatkan CUDA hanya versi 8000 atau lebih tinggi.


SUMBER :

Sabtu, 02 April 2016

Pengantar Quantum Computation

A. Pendahuluan 
Komputer kuantum adalah salah satu komputer yang belum sama sekali ada di dunia ini. Karena ini merupakan komputer yang sangat mustahil di ciptakan. Tapi mungkin saja ini bisa tercipta. Jika dikatakan, komputer kuantum hanya butuh waktu 20 menit untuk mengerjakan sebuah proses yang butuh waktu 1025 tahun pada komputer saat ini, kita tentu akan tercengang. Hal inilah yang membuat para ilmuwan begitu tertarik untuk mengembangkan kemungkinan terbentuknya komputer kuantum. Meskipun hingga saat ini belum tercipta sebuah komputer kuantum yang dibayangkan oleh para ilmuwan, kemajuan ke arah sana terus berlangsung. Bahkan yang menarik, ternyata perkembangan komputer kuantum juga mengikuti apa yang dikatakan oleh Gordan Moore sang Genius IBM “Kemampuan Prosesor akan meningkat dua kali lipat dalam jangka waktu 18 bulan”. Jika hal ini benar, para ilmuwan akan dapat membangun sebuah komputer kuantum hanya dalam waktu lima tahun ke depan. Pengertian sederhana dari computer kuantum adalah jenis chip processor terbaru yang diciptakan berdasar perkembangan mutakhir dari ilmu fisika (dan matematika) quantum. Singkatnya, chip konvensional sekarang ini perlu diganti dengan yang lebih baik. Pengertian komputer kuantum adalah merupakan suatu alat hitung yang menggunakan sebuah fenomena mekanika kuantum, misalnya superposisi dan keterkaitan, untuk melakukan operasi data. Dalam komputasi klasik, jumlah data dihitung dengan bit; dalam komputer kuantum, hal ini dilakukan dengan qubit.

B. Entanglement


Gambar 1.1 Entanglement

Entanglement (belitan) merupakan fenomena ‘aneh’ yang terjadi pada Quantum Computing, fenomena ini dimanfaatkan oleh ilmuan dalam pembuatan Quantum Computing.
Jika dua atom mendapatkan gaya tertentu (outside force) kedua atom tersebut bisa masuk pada keadaan ‘entangled’. Atom-atom yang saling terhubungkan dalam entanglement ini akan tetap terhubungkan walaupun jaraknya berjauhan.
Dalam keadaan ini, perilaku dua atom yang saling berkaitan akan sama dengan atom pasangannya. Jika pada atom 1 mengalami perubahan, maka atom pasangannya juda akan berperilaku sama seperti atom 1. Keadaan ini dimanfaatkan untuk mempercepat komunikasi data pada komputer. Komunikasi menggunakan komputer kuantum bisa mencapai kecepatan yang begitu luar biasa karena informasi dari satu tempat ke tempat lain dapat ditransfer secara instant. Begitu cepatnya sehingga terlihat seakan-akan mengalahkan kecepatan cahaya.

C. Pengoprasian Data Bit


Gambar 1.2 Pengoperasian Data QuBit

Qubit merupakan kuantum bit , mitra dalam komputasi kuantum dengan digit biner atau bit dari komputasi klasik. Sama seperti sedikit adalah unit dasar informasi dalam komputer klasik, qubit adalah unit dasar informasi dalam komputer kuantum . Dalam komputer kuantum, sejumlah partikel elemental seperti elektron atau foton dapat digunakan (dalam praktek, keberhasilan juga telah dicapai dengan ion), baik dengan biaya mereka atau polarisasi bertindak sebagai representasi dari 0 dan / atau 1. Setiap partikel-partikel ini dikenal sebagai qubit, sifat dan perilaku partikel-partikel ini (seperti yang diungkapkan dalam teori kuantum ) membentuk dasar dari komputasi kuantum. Dua aspek yang paling relevan fisika kuantum adalah prinsip superposisi dan Entanglement.
Superposisi, pikirkan qubit sebagai elektron dalam medan magnet. Spin elektron mungkin baik sejalan dengan bidang, yang dikenal sebagai spin-up, atau sebaliknya ke lapangan, yang dikenal sebagai keadaan spin-down. Mengubah spin elektron dari satu keadaan ke keadaan lain dicapai dengan menggunakan pulsa energi, seperti dari Laser – katakanlah kita menggunakan 1 unit energi laser. Tapi bagaimana kalau kita hanya menggunakan setengah unit energi laser dan benar-benar mengisolasi partikel dari segala pengaruh eksternal? Menurut hukum kuantum, partikel kemudian memasuki superposisi negara, di mana ia berperilaku seolah-olah itu di kedua negara secara bersamaan. Setiap qubit dimanfaatkan bisa mengambil superposisi dari kedua 0 dan 1. Dengan demikian, jumlah perhitungan bahwa komputer kuantum dapat melakukan adalah 2 ^ n, dimana n adalah jumlah qubit yang digunakan. Sebuah komputer kuantum terdiri dari 500 qubit akan memiliki potensi untuk melakukan 2 ^ 500 perhitungan dalam satu langkah. Ini adalah jumlah yang mengagumkan – 2 ^ 500 adalah atom jauh lebih dari yang ada di alam semesta (ini pemrosesan paralel benar – komputer klasik saat ini, bahkan disebut prosesor paralel, masih hanya benar-benar melakukan satu hal pada suatu waktu: hanya ada dua atau lebih dari mereka melakukannya). Tapi bagaimana partikel-partikel ini akan berinteraksi satu sama lain? Mereka akan melakukannya melalui belitan kuantum.

D. Quantum Gates

Gambar 1.3 Quantum Gates

Gerbang kuantum gerbang logika adalah dasar sirkuit kuantum yang beroperasi pada sejumlah kecil qubit . Mereka adalah blok bangunan sirkuit kuantum, seperti klasik gerbang logika yang untuk sirkuit digital konvensional.
Tidak seperti banyak gerbang logika klasik, logika kuantum gerbang reversibel . Namun, adalah mungkin untuk melakukan komputasi klasik menggunakan gerbang hanya reversibel. Sebagai contoh, reversibel gerbang Toffoli dapat melaksanakan semua fungsi Boolean. Gerbang ini memiliki setara kuantum langsung, menunjukkan bahwa sirkuit kuantum dapat melakukan semua operasi yang dilakukan oleh sirkuit klasik.
Quantum gerbang logika yang diwakili oleh matriks kesatuan . Gerbang kuantum yang paling umum beroperasi pada ruang satu atau dua qubit, seperti biasa klasik gerbang logika beroperasi pada satu atau dua bit. Ini berarti bahwa sebagai matriks, gerbang kuantum dapat dijelaskan oleh 2 × 2 atau 4 × 4 matriks kesatuan.
Gambar 1.4 Penjelasan Quantum Gates

E. Algoritma Shor


Gambar 1.5 Algoritma Shor

Algoritma Shor, dinamai matematikawan Peter Shor , adalah algoritma kuantum yaitu merupakan suatu algoritma yang berjalan pada komputer kuantum yang berguna untuk faktorisasi bilangan bulat. Algoritma Shor dirumuskan pada tahun 1994.  Inti dari algoritma ini merupakan bagaimana cara menyelesaikan faktorisasi terhaadap bilanga interger atau bulat yang besar.
Efisiensi algoritma Shor adalah karena efisiensi kuantum Transformasi Fourier , dan modular eksponensial. Jika sebuah komputer kuantum dengan jumlah yang memadai qubit dapat beroperasi tanpa mengalah kebisingan dan fenomena interferensi kuantum lainnya, algoritma Shor dapat digunakan untuk memecahkan kriptografi kunci publik skema seperti banyak digunakan skema RSA. Algoritma Shor terdiri dari dua bagian:
– Penurunan yang bisa dilakukan pada komputer klasik, dari masalah anjak untuk masalah ketertiban -temuan.
– Sebuah algoritma kuantum untuk memecahkan masalah order-temuan.
Hambatan runtime dari algoritma Shor adalah kuantum eksponensial modular yang jauh lebih lambat dibandingkan dengan kuantum Transformasi Fourier dan pre-/post-processing klasik. Ada beberapa pendekatan untuk membangun dan mengoptimalkan sirkuit untuk eksponensial modular. Yang paling sederhana dan saat ini yaitu pendekatan paling praktis adalah dengan menggunakan meniru sirkuit aritmatika konvensional dengan gerbang reversibel , dimulai dengan penambah ripple-carry. Sirkuit Reversible biasanya menggunakan nilai pada urutan n ^ 3, gerbang untuk n qubit. Teknik alternatif asimtotik meningkatkan jumlah gerbang dengan menggunakan kuantum transformasi Fourier , tetapi tidak kompetitif dengan kurang dari 600 qubit karena konstanta tinggi.
Gambar 1.6 Step - Step Algoritma Shor



SUMBER :

Distibuted Computation dalam Cloud Computing

D. Distributor Computation dalam Cloud Computing
Distributed computing terkait dengan system perangkat keras dan perangkat lunak yang memiliki lebih dari satu elemen pemrosesan atau storage element, concurrent process atau multiple program yang berjalan di bawah pengendalian yang ketat.

Pada distributed computing, program dipecah menjadi beberapa bagian yang dijalankan secara bersamaan pada banyak computer yang berkomunikasi melalui jaringan.

 E. Map Reduce dan Non SQL
Map-Reduce adalah salah satu konsep teknis yang sangat penting di dalam teknologi cloud terutama karena dapat diterapkannya dalam lingkungan distributed computing. Dengan demikian akan menjamin skalabilitas aplikasi kita. Salah satu contoh penerapan nyata map-reduce ini dalam suatu produk adalah yang dilakukan Google. Dengan inspirasi dari functional programming map dan reduce Google bisa menghasilkan filesystem distributed yang sangat scalable, Google Big Table. dan juga terinspirasi dari Google, pada ranah open source terlihat percepatan pengembangan framework lainnya yang juga bersifat terdistribusi dan menggunakan konsep yang sama, project open source tersebut bernama Apache Hadoop.
NoSQL adalah istilah untuk menyatakan berbagai hal yang didalamnya termasuk database sederhana yang berisikan key dan value seperti Memcache, ataupun yang lebih canggih yaitu non-database relational seperti MongoDB, Cassandra, CouchDB, dan yang lainnya.

F. Non SQL Database
Database NoSQL, juga disebut Not Only SQL, adalah sebuah pendekatan untuk pengelolaan data dan desain database yang berguna untuk set yang sangat besar data terdistribusi.
NoSQL, yang mencakup berbagai teknologi dan arsitektur, berusaha untuk memecahkan masalah skalabilitas dan kinerja data yang besar yang database relasional tidak dirancang untuk menangani. NoSQL ini sangat berguna ketika perusahaan perlu untuk mengakses dan menganalisis sejumlah besar data terstruktur atau data yang disimpan dari jarak jauh pada beberapa virtual server di awan. Berlawanan dengan kesalahpahaman yang disebabkan oleh namanya, NoSQL tidak melarang bahasa query terstruktur (SQL). Meskipun benar bahwa beberapa sistem NoSQL sepenuhnya non-relasional, yang lain hanya menghindari fungsi relasional dipilih seperti skema tabel tetap dan bergabung dengan operasi. Sebagai contoh, daripada menggunakan tabel, database NoSQL mungkin mengatur data menjadi objek, kunci / nilai berpasangan atau tupel.
Map reduce merupakan framework pemrograman yang berfungsi untuk processing data yang berukuran besar. Map reduce biasa digunakan untuk komputasi terdistribusi pada banyak computer.  NoSQL (Not Only SQL) tidak mengenalistilah relation, selain itu NoSQL tidak menggunakan konsep schema.

CONTOH APLIKASI MAP REDUCE dan NON SQL
-> Apache Hadoop – http://hadoop.apache.org (open source)
-> Cascading – http://www.cascading.org
-> IBM MapReduce Tool for Eclipse – http://www.alphaworks.ibm.com/tech/mapreducetools



SUMBER :

Pengantar Komputasi Cloud



Gambar 1.1 Cloud Computing

A. Pendahuluan
Cloud Computing (komputasi awan) merupakan pemanfaatan teknologi computer oleh pengguna dengan menjalankan sebuah aplikasi yang tidak berada di computer yang digunakannya, namun file – file tersebut berada di computer lain yang dihubungkan dengan internet. Dengan kata lain, cloud computing merupakan sebuah layanan dimana informasinya disimpan di server secara permanen dan disimpan di computer client secara temporary. Beberapa contoh penggunaan cloud computing antara lain : email service, facebook, google apps,dll.
Cloud computing merupakan gabungan antara virtualisasi dan grid computing. Di dalam cloud computing dikenal istilah front-end (desktop-PC) dan back-end(server). Front-end dan back-end harus saling terhubung di dalam sebuah jaringan internet. Front-end mengambil data dan menjalankan aplikasi dari back-end. Back-end merupakan sumber yang diistilahkan dengan cloud(awan).

Kelebihan Cloud Computing  :
Kelebihan paling menonjol dari cloud computing adalah kemudahan akses. Untuk mengerjakan suatu pekerjaan tidak mesti berada dihadapan satu komputer yang sama. Misal anda diberi tugas oleh oleh atasan anda untuk membuat sebuah bahan presentasi dengan format aplikasi power point, karena pada komputer anda tidak ada aplikasi power pointnya maka anda bisa membuatnya di Google Docs (Google Drive) ataupun skydrive nya windows. Cukup koneksi ke internet, login ke akun google atau hotmail. Outlook mail, maka anda pun sudah bisa membuat bahan presentasi secara online. Fleksibilitas, seperti contoh diatas, bahan presentasi yang kita buat tidak perlu di simpan di hardisk yang akan memakan ruang space. Dimanapun anda berada ataupun kemanapun anda berpergian file – file tersebut bisa dibuka dimana saja asalkan ada koneksi internet. Andaikata anda akan pergi ke perusahaan cabang anda, anda tidak perlu lagi repot – repot membawa laptop ke cabang perusahaan anda, karena semua file – file tersimpan diawan. Penghematan adalah kelebihan lain dari cloud computing.

Kekurangan Cloud Computing :
Hal yang paling wajib dalam cloud computing adalah koneksi internet, internet bisa dibilang jalan satu – satunya untuk menuju ke cloud computing, ketika tidak ada koneksi internet ditempat kita berada, maka jangan harap bisa menggunakan sistem cloud computing. Hal ini masih menjadi hambatan khususnya bagi Indonesia, karena belum semua wilayah di tanah air terjangkau oleh akses internet, ditambah lagi sekalipun ada koneksi internet, koneksinya belum stabil dan kurang memadai. Kerahasiaan dan keamanan adalah salah satu hal yang paling diragukan pada komputasi awan. Karena dengan menggunakan sistem cloud computing ini berarti kita mempercayakan sepenuhnya atas keamanan dan kerahasiaan data – data kepada perusahaan penyedia server komputasi awan (cloud computing). Contoh yang paling sederhana adalah ketika anda menyimpan foto – foto anda di facebook dengan beberapa konfigurasi privasi yang diberikan kepada kita, maka selebihya kita mempercayakan keamanan file – file tersebut kepada facebook. Andaikata foto – foto tersebut hilang kita tidak bisa menuntut karena kita memanfaatkan jasa tersebut secara cuma – cuma alias gratis.


 B. Pengantar Komputasi GRID
            Dalam penggunaan komputasi grid, computer yang digunakan terpisah oleh geografis. Selain itu didistribusikan dan terhubung oleh jaringan dalam menyelesaikan masalah komputasi dalam skala yang besar. Berikut ini adalah beberapa hal yang dapat digunakan untuk mengenali system komputasi grid :
-> System untuk koordinat sumber daya komputasi tidak di bawah kendali pusat.
-> System menggunakan standard dan protocol yang terbuka.
-> System mencoba mencapai kualitas pelayanan yang canggih, yang lebih baik di atas komponen individu pelayanan komputasi grid.


C. Virtualisasi
Virtualisasi merupakan teknologi yang memungkinkan pengguna untuk membuat versi virtual dari sesuatu yang bersifat fisik, seperti system operasi, penyimpanan data atau sumber daya jaringan. Istilah virtualisasi merupakan pemisahan sumber daya computer yang terdiri atas jaringan, penyimpanan dan server. Virtualisasi menyembunyikan karakteristik fisik sumber daya komputasi ke pengguna.
Sebuah physical resources (sebuah server/aplikasi/penyimpanan) dapat terlihat seperti beberapa resources virtual dan begitu pun sebaliknya. Berikut ini adalah beberapa teknologi virtual : virtualisasi storage, virtualisasi komputasi dan virtualisasi network.
Dalam cloud computing selain ada proses virtualisasi,juga terdapat grid computing, dimana seluruh beban proses komputasi yang ada akan didistribusikan ke berbagai server yang saling terhubung di dalam cloud, sehingga prosesnya akan jauh lebih ringan.

Contoh Aplikasi Menggunakan Virtualiasi :
-> Microsoft Virtual PC
Gambar 1.2 Microsoft Virtual PC

Microsoft sebagai penyedia OS yang terbesar juga membuat software virtualkomputer. Software ini mendukung instalasi beberapa OS seperti : Windows Server 2003, Standard Edition (32-bit x86); Windows Server 2003, Standard x64 Edition; Windows Vista Business; Windows Vista Business 64-bit edition; Windows Vista Enterprise; Windows Vista Enterprise 64-bit edition; Windows Vista Ultimate; Windows Vista Ultimate 64-bit edition; Windows XP Professional Edition ; Windows XP Professional x64 Edition ; Windows XP Tablet PC Edition. Jika anda ingin mendownloadnya, langsung saja kunjungi situs resminya www.microsoft.com

-> Bochs
Gambar 1.3 Bochs

Dibangun oleh Kevin Lawton dengan bahasa C++ dan dilisensikan dibawah GNU/GPL. Bochs dapat berjalan pada hampir semua platform sistem operasi seperti Windows dan Linux . Sebagai emulator, Bochs mampu mengemulasikan CPU intel x86, BIOS Custom dan berbagai I/O devices. Untuk suara, bochs mengemulasikan sounds blaster dan untuk perangkat jaringan, bochs mengemulasikan kartu NE2000, atau yang kompatibel. Bagi anda yang ingin menggunakan bochs dan memanfaatkan berbagai image yang telah tersedia, kunjungilah situs http://bochs.sourceforge.net/ untuk informasi selengkapnya.

-> GXEMUL
Gambar 1.4 GXMUL

Dibangun oleh Anders Gavare, merupakan emulator komputer lengkap dengan CPU dan berbagai komponen hardware, seperti framebuffer, interrupt controller, bus, disk controller, dan serial controller. Emulator ini dibangun dengan bahasa C dan dilisensikan dibawah revised BSD-style. Untuk informasi selengkapnya kunjungi http://gavare.se/gxemul . berikut link downloadnya : http://gxemul.sourceforge.net/download.html

-> Hercules
Gambar 1.5 Hercules
Program canggih ini dibangun oleh Roger Bowler dan saat ini, dimaintain oleh Jay Marnard, dilisensikan dibawah Q Public License. Sebagai host, Hercules mampu berjalan pada Linux, Windows (98, 2000, XP), Mac OS X. Untuk informasi selengkapnya, kunjungilah : http://www.hercules-390.org


-> Mac-On Linux
Gambar 1.6 Mac on Linux

Aplikasi ini memungkinkan virtualisasi Mac OS atau Mac OS X di Linux. Dengan demikian kita yang menggunakan arsitektur x86 tidak dapat memanfaatkan aplikasi ini. Untuk Host, Mac On Linux mendukung Linux dengan kernel 2.4 dan 2.6. Untuk informasi selengkapnya, lihat : http://mac-on-linux.sourceforge.net/

-> Parallels Workstation
Gambar 1.7 Parallels Workstation

Software ini tidak gratis. Parallels ini dibandrol dengan harga US$ 79.99. Wah cukup mahalkan ? Tetapi banyak fitur yang ditawarkan oleh software ini. Untuk informasi selengkapnya, lihat http://www.parallels.com/en/products/workstation/


-> Pear PC
Gambar 1.8 Pear PC

  Software ini dapat berjalan independen terhadap arsitektur. Program yang dibangun oleh sebastian Bialas dan dilisensikan GPL ini termasuk sangat menarik. Dari sisi host, software ini dapat berjalan pada POSIX X-11, termasuk Linux. Selain itu juga dapat berjalan pada host Win32. Untuk informasi selengkapnya, lihat : http://pearpc.sourceforge.net/index.html

-> Qemu
Gambar 1.9 Qemu

Qemu adalah emulator yang sangat populer di dunia free/opensource software. Untuk sistem X-86 (host dan guest), qemu bahkan bisa berjalan lebih baik lagi dengan memanfaatkan Kqemu (Qemu Accelerator), yang memungkinkan virtualisasi dilakukan dengan performa yang mendekati natif (near native performance). Qemu dapat dijalankan dalam dua mode : 1. User (hanya untuk host Linux dan dapat digunakan untuk menjalankan proses Linux yang dikompilasi untuk satu CPU di CPU lain) 2. Sistem (emulasi satu komputer penuh). Untuk informasi selengkapnya, lihat http://bellard.org/qemu/index.html

-> Virtual Box
Gambar 1.10 Virtual Box

Software ini dibangun oleh Inotek yang kemudian dibeli oleh Sun Microsystems pada 12 Februari 2008 lalu. Belakangan software ini cukup popular sebagai virtual machine x86 yang kaya fitur dan mudah digunakan. Selain itu virtual Box juga dilisensikan di bawah GPL. Untuk host, software ini mendukung : Linux, Windows, Macintosh, open solaris. Informasi selengkapnya, lihat www.virtualbox.org/ 

-> VmWare
Gambar 1.11 VmWare