saya pernah berpikir ketika sedang jongkok, dan bengong…
A server, can received, process, and send a data…into the client. namun jika ternyata data yang ingin di tampilkan cukup banyak…can a server do that?!
mungkin sebuah big server, bisa dan reliable untuk melakukan itu…katakanlah, melakukan sorting terhadap 50 juta data, dimana sorting berdasarkan beberapa category complex, yang dimana nantinya, hasil sorting itu akan di tampilkan dalam bentuk PDF dengan jumlah halaman kurang lebih 20 juta halaman….
pretty large isn’t it?! lalu, saya pun bertanya…iseng saya kumat, dan gairah kurang kerjaan saya berkembang…
“bagaimana jika kita tidak memiliki dana untuk memiliki sebuah komputer server yang reliable? can we do it?!”
lalu, entah kenapa…saya terpikir tentang LAN (intranet), dimana sekarang memiliki kecepatan hingga 1GB/s. sebuah kecepatan transfer data yang benar-benar dasyat…dan cukup besar untuk mengakomodir kapasitas data yang berkembang saat ini…
saya berpikir, bagaimana jika “kita membuat JARINGAN YANG BISA BERPIKIR?”
pada dasarnya, network pasti memiliki kemampuan untuk melakukan communicate antar satu node network ke node lainnya…bagaimana jika kita menggunakan process itu untuk melakukan pengolahan data…
untuk memudahkannya…coba bayangkan SEMUT…
semut menggunakan pheromone untuk mengidentifikasi sesuatu, memberitahu sesuatu, dll. bisa saja pheromone yang ditinggalkan memiliki arti, “makanan”, “bahaya”, dll.
setiap semut mengkoleksi data yang di koleksi oleh semut lain, dan meninggalkan data yang dikoleksinya pada pheromone, untuk di koleksi oleh orang lain.
pengambilan dan pengumpulan informasi ini sering disebut kemotaxis.
berbekal konsep sederhana itu, mari kita anggap sebuah PC kecil itu sebagai seekor semut, walaupun saya tahu, semut tidak berekor.
jadi kita membuat sebuah alur komunikasi kepada 5 komputer (5 semut), yang berkomunikasi via LAN/intranet (pheromone). setiap komputer bertugas untuk melakukan sebuah process, dan memberitahu komputer lain mengenai process yang sudah dikerjakannya, sebagai data koleksi dari komputer lain…
contoh gampangnya adalah “process sorting” seperti yang saya berikan contohnya barusan…
sorting ada banyak macamnya, dan salah satu yang paling terkenal adalah “Quick Sort”, karena menggunakan konsep “partial/partition sorting”, sehingga setiap partisi dikerjakan terpisah dan secara rekursif, sehingga mempercepat process search. bagaimana cara kerja Quick Sort? ada baiknya anda mencari terlebih dahulu di Internet, sebelum melanjutkan membaca methode yang dihasilkan dengan cara jongkok, dan stimulus bengong ini…
anggap diagram network komputer seperti berikut :

Star Scheme
setiap komputer mampu berinteraksi satu sama lain…
ketika ingin melakukan sorting dengan menggunakan metode Network Comminucate Process, maka ketika ada data “input” misalnya saja sebuah dataset berukuran 50 juta rows.
maka Local Network melakukan perhitungan performance dan benchmark dari masing-masing komputer. floating point, I/O read and write, dll. untuk menentukan “pemimpin” dari NCP.
pemimpin ditentukan dari hasil benchmark terbaik. setelah itu maka lanjutkan pada process NCP, seperti berikut:
- pemimpin bertugas untuk melakukan partialisasi data, membagi data menjadi 2
- setelah data di bagi 2, maka pemimpin bertugas berkomunikasi dengan komputer lain, dan menentukan pemimpin selanjutnya.

Split Data, and Choose The Next Leader
disana dapat dilihat, komputer leader melakukan Split Data dan memilih komputer selanjutnya sebagai Leader (garis merah), dan komputer di garis merah, setelah melakukan split data menunjukan leader (garis biru), dan mengirim sisa data. begitu seterusnya sampai seluruh data habis.
- pemimpin selanjutnya, kembali melakukna tugas 1…lalu di lanjutkan tugas 2…sampai semua komputer mendapatkan jatah yang “sama” dalam process sorting.
- setelah data selesai di bagi, maka process sorting akan dilakukan oleh 5 komputer. dan masing-masing, data yang disorting disimpan pada memory masing-masing Node.

Sort on each Node
- setelah selesai melakukan sorting, maka setiap Node memberitahukan (broadcast) di jaringan mengatakan…I’m READY! lalu pemimpin kembali mengecek…siapa yang memiliki data yang belom tersort paling banyak?! setelah dapat, maka komputer itu akan melakukan negoisasi dengan komputer yang telah selesai…

The Finished one, Connect and ask Leader, to Negotiate with who?!
- komputer yang tersisa paling banyak, akan membagi (memotong) sisa datanya secara partial, dan dikirim kepada komputer yang sudah selesai.
- ketika data selesai di terima, maka komputer akan kembali melakukan sorting pada data-2 (data-1 sudah selesai di sorting).
- begitu seterusnya, sampai semua komputer mengatakan I’M READY, dan mengirimkan sinyal kepada komputer LEADER!

READY!!!
- dan ketika semua status sudah READY, maka pemimpin akan mengirimkan sebuah sinyal, untuk melakukan partially merge data.
- jadi pemimpin memetakan seluruh benchmark, dan mengatur “formasi”, misalnya saja…komputer 1, dan komputer 3 menjadi group 1. dan komputer 2, komputer 4, serta komputer 5 menjadi group 2.
- masing-masing group menentukan pemimpinnya masing-masing.

Partially Merge Data
- setelah pemimpin dipilih, maka pemimpin akan meminta “nilai” terkecil pada group.
- jika komputer pada group memiliki n-buah-data, maka nilai yang harus di cari adalah nilai yang paling kecil dari n-data tersebut.
- setelah itu pemimpin akan mengecek, dan memilih nomor yang paling kecil, untuk dimasukan ke dalam buffer memory, dan di tampung.
- setelah seluruh group selesai melakukan partial merge, kini ada 2 buah data merge (dari group 1 dan group 2)
- maka kembali komputer diurutkan secara benchmark (dari leader-1 sampai leader-n), lalu 2 data partially merge tersebut di tanyai nilai yang paling kecil, lalu disimpan pada komputer n sampai penuh, jika sudah penuh maka pindah ke n+1 (sehingga seluruh komputer memiliki pekerjaan/process load yang sama)
- jika data merge sudah habis 2-2 nya…maka nilai yang diterima dari user akan diberi (di Send) dari komputer Leader-1 (dari data nomor 1 sampai habis), lalu dilanjutkan leader-2, lalu leader-3, dst…sampai leader-n…sehingga process Send tidak memberatkan CPU…
terlihat sederhana, namun pada kenyataannya…hal sederhana ini perlu dan sangat penting dalam pengumpulan KD (Knowledge Database), ketika ingin membangun sebuah situs, atau aplikasi penyedia solusi, seperti DSS, atau aplikasi lain…
dan satu lagi IDE GILA…untuk orang-orang kurang kerjaan seperti saya…
…