Tugas Akhir - 2012 MIGRASI DATA DARI BASISDATA RELASIONAL KE BASISDATA DOKUMEN DAN FRAMEWORK MAPREDUCE Mohammad Shahrizal Prabowo¹, Kemas Rahmat Saleh Wiharja², Warih Maharani³ ¹Teknik Informatika, Fakultas Teknik Informatika, Universitas Telkom Abstrak Data semistruktural kini mulai diminati oleh sebagian kalangan. Sifat data semistruktural yang fleksibel dalam pendefinisian skema, memudahkan pengembang untuk segera menjawab tuntutan aplikasi dengan cepat. Fleksibilitas skema yang ditawarkan juga sesuai untuk menyelesaikan beberapa permasalahan, terutama untuk domain data yang tidak relasional. Salah satu model basisdata semi struktural yang populer adalah basisdata berorientasi dokumen. Pada basisdata ini, antara data dan strukturnya dienkapsulasi dalam suatu dokumen. Salah satu alasannya, adalah agar lebih sesuai dalam memodelkan data di dunia nyata, dimana data masih belum dinormalisasi. Konsep dimana data dan struktur dienkapsulasi dalam satu dokumen ini dikenal dengan istilah self contained data. Selain perbedaan model datannya, basisdata dokumen juga memiliki perbedaan dalam melakukan query. Karena basisdata ini masih belum standar, dan masih aktif dikembangkan oleh beragam pihak, maka model querynya pun berbeda antara satu dengan lainnya. Beberapa basisdata dokumen menggunakan bahasa deklaratif, sementara yang lain menggunakan bahasa prosedural. Salah satu model prosedural akan diteliti pada tugas akhir ini, yaitu MapReduce. Pada tugas akhir ini, akan dilakukan migrasi data employees, yang sebelumnya menggunakan basisdata relasional ke basisdata dokumen. Migrasi dilakukan untuk lebih memahami perbedaan antara model relasional serta model dokumen. Setelah itu, akan dilakukan benchmark untuk mengukur perbedaan performa antara basisdata relasional dan dokumen. Hasil dari tugas akhir ini adalah aplikasi yang mampu melakukan migrasi dari tabel relasional ke dokumen dengan tiga model yang berbeda: Self Contained, Normalized, dan Mixed. Selain itu, dari hasil pengujian yang dilakukan diperoleh bahwa fleksibilitas dari data semistrukutral berdampak pada konsumsi disk space yang lebih besar, waktu pembuatan indeks yang lebih lama, serta batasan dalam hal query yang bisa dilakukan melalui model MapReduce Kata Kunci : Semi Structured Data, Data Migration, MapReduce, Document Oriented Database,Relational Database, Database Benchmark Fakultas Teknik Informatika Program Studi S1 Teknik Informatika Tugas Akhir - 2012 Abstract Semistructured data is on rise, with some people embracing its use. Its data characteristics that is flexible in schema definition, makes it easy for developer to answer application demand faster. Flexibility schema that is given is also appropriate for certain use case, especially where given domain data is not relational. One of the popular semi-structured database model are document-oriented database. On this database, the data and its structure is encapsulated in a document. One reason, is to better fit in the data model of the real world, where data is not yet normalized. Concepts and structures where data is encapsulated in a single document is known as self-contained data. In addition to differences in data models, document databases also has the distinction of doing its query. Because the database is not yet standardized, and is still actively developed by various parties, then the query model are different from one another. Several document databases using a declarative language, while others use a procedural language. One of the procedural models will be studied in this final project, is MapReduce. In this final Project, data migration of employees schema will be done, which was using relational data, to document database. Migration is done to better understand the differences between the relational model, and document model. After that, benchmark will be done to measure the performance differences between relational databases and documents. The result of this Final Project is application that is capable of doing migration from relational table to document with three different model: Self Contained, Normalized, and Mixed. In addition, the results of testing conducted found that the flexibility of the data semistrukutral has impact on larger disk space consumption, index creation time that is longer, as well as limitations in terms of query that can be done through a MapReduce model. Keywords : Semi Structured Data, Data Migration, MapReduce, Document Oriented Database, Relational Database, Database Benchmark. Fakultas Teknik Informatika Powered by TCPDF (www.tcpdf.org) Program Studi S1 Teknik Informatika Tugas Akhir - 2012 1. 1.1. Pendahuluan Latar Belakang Beberapa dekade terakhir, basis data relasional telah menjadi de facto pada sistem basis data. Dengan berlandaskan teori yang mapan serta dukungan industri software yang luas, model relasional telah menggantikan model basis data sebelumnya, yaitu basis data hierarkis, dan basis data jaringan. Beberapa prinsip model ini, seperti normalisasi, aljabar relasional, dan Structured Query Language, telah dikenal luas oleh kalangan industri software, dan penggunaanya pun meluas. Sayangnya, ada beberapa domain masalah yang tidak cocok untuk dipetakan ke dalam model relasional. Masalah muncul, ketika kita memaksakan data yang secara natural tidak relasional ke dalam model ini. Impedence mismatch adalah masalah lain, dimana suatu objek bersarang dicoba untuk dimasukkan ke dalam tabel. Selain kedua hal tersebut, model relasional tidak cocok untuk menangani domain data, dimana data tersebut memiliki struktur yang berubahubah, tetapi tipenya sama, seperti Kartu Nama: beberapa kartu ada yang memiliki Fax, sementara yang lain tidak; atau data Bibliographic dimana beberapa buku dikarang oleh lebih dari satu orang. Untuk menangani beberapa masalah diatas, diperlukan pendekatan yang berbeda. Meskipun model Relasional diyakini mampu untuk menyelesaikan berbagai macam domain masalah, tetapi ada domain yang sulit untuk diselesaikan, yaitu semi-structured data. Struktur antar data bisa berbeda, tetapi secara umum informasi yang mereka bawa serupa. Model relasional tidak cocok untuk data seperti ini karena pada model ini skema sulit untuk diubah. Contoh data yang tidak bisa dibatasi dengan skema adalah World-Wide-Web (WWW) [5]. Beberapa peneliti basisdata ingin menganggap WWW sebagai suatu bentuk basisdata, namun karena WWW sama sekali tidak memenuhi bentuk standar model data yang ada, serta permasalahan dalam melakukan querynya, maka diperlukan suatu permodelan data yang sesuai untuk menangani masalah ini [5]. Untuk data semi struktural, pendekatan yang sesuai adalah Document Oriented Database. Di sini, data dipandang sebagai dokumen: mereka tidak memiliki schema yang fix, antar dokumen tidak memiliki relasi, dan setiap dokumen memiliki key yang terindeks sehingga pencarian data menjadi cepat. Tidak diperlukan normalisasi data, sehingga pengembang memiliki fleksibilitas untuk memodelkan datanya. Pada tugas akhir ini, akan diteliti tentang salah satu teknik query pada Document Oriented Database, yaitu MapReduce. Framework MapReduce awalnya dikembangkan oleh Google untuk digunakan sebagai query pada sistem terdistribusi yang memiliki data set yang besar. MapReduce cocok untuk diterapkan pada self contained data [18], karena pemrosesan dokumen bisa dilakukan tanpa perlu mengetahui skema dari dokumen. Selain itu, abstraksi yang disediakan oleh framework ini juga memungkinkan pemrosesan dokumen bisa dilakukan secara parallel. 1.2. Perumusan Masalah Permasalahan yang akan diselesaikan dari pengerjaan tugas akhir ini adalah: 10 Fakultas Teknik Informatika Program Studi S1 Teknik Informatika Tugas Akhir - 2012 a. Bagaimana cara untuk melakukan migrasi basisdata dari basisdata relasional, ke basisdata dokumen ? b. Bagaimana cara melakukan Query pada basisdata dokumen dengan model MapReduce ? c. Bagaimana cara untuk membandingkan performansi antara basidata relasional dan dokumen ? 1.3. Batasan Masalah Dalam pengerjaan tugas akhir ini, permasalahan dibatasi dalam beberapa hal yaitu: a. Studi Kasus, serta dataset diperoleh dari basisdata employees yang menggunakan basisdata relasional MySQL, bisa diperoleh di http://dev.mysql.com/doc/employee/en/index.html b. Untuk mewakili basidata dokumen, digunakan basisdata CouchDB. c. MapReduce telah diimplementasikan sebagai model untuk mengakses data pada CouchDB. d. Framework MapReduce tidak digunakan pada lingkungan terdistribusi, melainkan pada server tunggal. e. Pengembangan sistem akan dilakukan dengan bantuan Virtual Machine yang berjalan pada host Windows 7 x64 SP1, dengan guest Ubuntu Server 10.04. Hypervisor yang digunakan adalah Virtualbox. f. MySQL yang digunakan adalah versi 5.1 dari repository resmi Ubuntu, sementara CouchDB menggunakan versi 1.2 yang dikompilasi dari source. g. Client yang digunakan untuk mengakses basisdata adalah mysql command line tool untuk MySQL, dan curl untuk CouchDB h. Tidak membahas aspek-aspek manajemen basisdata, seperti Recovery, Security, Access Control, Application Development, dan Administration. i. Hanya membahas Logical Level serta View Level dari basisdata. Tidak membahas Physical Level 1.4. Tujuan Fokus tugas akhir ini adalah melakukan migrasi data dari basisdata relasional menjadi basisdata dokumen. Diharapkan dengan melakukan migrasi, bisa diketahui bagaimana proses migrasi dilakukan, cara melakukan query setelah migrasi, serta kelebihan dan kekurangan yang diperoleh dari penggunaan basisdata dokumen jika dibandingkan dengan basisdata relasional. 1.5. Metodologi Penyelesaian Masalah Metodologi yang akan dilakukan adalah: 11 Fakultas Teknik Informatika Program Studi S1 Teknik Informatika Tugas Akhir - 2012 1. Studi Literatur Pada tahap ini, akan dilakukan studi literature untuk memahami lebih jauh konsep MapReduce, data semi structural, dan Document Oriented Database. Studi yang akan dilakukan meliputi: 1) Konsep dasar tentang data semi struktural dan permodelannya 2) Konsep dasar tentang JSON (Javascript Object Notation) sebagai pilihan format data semi structural 3) Konsep dasar tentang Document Oriented Database. Studi meliputi ide dasarnya (konsep apa yang mendasarinya), kelebihan dan kekurangan, serta membandingkannya dengan basis data model relasional. 4) Konsep dasar tentang MapReduce. Serta dengan mencari informasi lain yang bisa menunjang Tugas Akhir ini. 2. Pengumpulan Data Pada tahap ini akan dilakukan pengumpulan data yg menunjang studi kasus. Dataset yang dipilih adalah employee sample database dari MySQL. Data ini kemudian akan diubah kedalam format semi struktural JSON. 3. Analisis Kebutuhan Sistem dan Perancangan Sistem Berdasarkan data yang telah diperoleh, maka akan dilakukan analisis untuk menentukan sistem yang dibutuhkan. Karena sifat-sifat yang berbeda antara basisdata relational dan basisdata dokumen, maka sistem yang dibutuhkan pun berbeda. 4. Implementasi Rancangan Sistem Pada tahap ini, akan dibangun sistem yang sudah dirancang untuk melakukan operasi MapReduce terhadap data pada basisdata CouchDB. 5. Pengujian Sistem dan Analisis Hasil Pengujian Tahapan ini merupakan implementasi hasil perancangan sistem yang telah dibuat. Akan dilakukan benchmark terhadap operasi yang sering dilakukan. Hasil pengujian ini kemudian akan dibandingkan dengan sistem sebelumnya yang masih menggunakan basis data relasional 6. Tahap Pembuatan Laporan Pada tahap ini akan dilakukan penyusunan laporan sebagai dokumentasi apa yang selama ini telah dikerjakan dengan mengikuti aturan penulisan yang diberikan oleh institusi. 1.6. Sistematika Penulisan Tugas akhir ini disusun dengan sistematika penulisan sebagai berikut: BAB I Pendahuluan Bab ini menguraikan tugas akhir ini secara umum, meliputi latar belakang masalah, perumusan masalah, tujuan, batasan masalah, dan metode yang digunakan 12 Fakultas Teknik Informatika Program Studi S1 Teknik Informatika Tugas Akhir - 2012 BAB II Dasar Teori Bab ini membahas mengenai uraian teori yang berhubungan dengan data semistruktural, basisdata relasional, basisdata dokumen, dan MapReduce. BAB III Perancangan dan Implementasi Bab ini berisi perancangan topologi sistem dan analisis kebutuhan dari sistem serta masalah-masalah yang ada di dalamnya. Dari tahap perancangan kemudian dilanjutkan ke tahap implementasi. BAB IV Pengujian dan Analisis Bab ini membahas mengenai pengujian hasil implementasi yang telah dilakukan pada bab sebelumnya. Pada tahap ini juga dilakukan benchmark untuk mengukur seberapa besar performa basis data. Dari hasil benchmark tersebut, akan dianalisis dampaknya terhadap utilisasi sistem. BAB V Kesimpulan dan Saran Bab ini berisi kesimpulan dari penulisan Tugas Akhir ini dan saran-saran yang diperlukan untuk pengembangan lebih lanjut. 13 Fakultas Teknik Informatika Powered by TCPDF (www.tcpdf.org) Program Studi S1 Teknik Informatika Tugas Akhir - 2012 5. 5.1. Kesimpulan dan Saran Kesimpulan Model data yang berbeda berdampak pada cara akses yang berbeda pula. Pada data semistruktural dokumen, kita bisa membuat indeks dengan pola MapReduce yang mengikuti strategi Divide & Conquer. Apabila dokumen dimodelkan secara Self Contained, hampir semua query SQL bisa dipetakan, dengan pengecualian terhadap fungsi yang tidak bisa dipecah-pecah ke unit yang lebih kecil, seperti fungsi rata-rata. Untuk fungsi tersebut, harus dicari jalan tengah, yaitu dengan menyimpan sum dan count. Baru kemudian nilai sum dibagi dengan count pada sisi aplikasi client.Tidak disarankan untuk memetakan tabel ke dokumen dengan pendekatan normal, karena sulit untuk melakukan operasi JOIN pada basisdata ini. Kesimpulan lain dari penelitian ini adalah: 1. Tahapan secara umum dalam melakukan migrasi adalah melakukan denormalisasi (dengan melakukan LEFT JOIN terhadap tabel yang diinginkan), kemudian membangun OEM, dan selanjutnya menulisnya ke dokumen JSON. Duplikasi data yang muncul di tahap denormalisasi, bisa diatasi dengan melakukan pengecekan terhadap primary key terkait untuk setiap kolom sebelum dimasukkan ke OEM, dan meminimalisir leaf OEM ketika dituliskan ke JSON. 2. Bilangan yang disarankan untuk melakukan bulk insert pada dokumen yang memiliki ukuran besar (sekitar 1.6 KB) adalah 1000. Sementara untuk dokumen yang kecil (ukuran rata-rata sekitar 0.5 KB) adalah 3000. 3. Basisdata dokumen memakan disk space yang lebih besar dibandingkan basisdata relasional. Hal ini karena skema harus diulang untuk setiap dokumen. Semakin banyak jumlah dokumen, pengulangan skema semakin besar. Pada dokumen yang dimodelkan secara Self Contained, pemakaian disk space bisa lebih ditekan. 4. Pembuatan indeks pada basisdata dokumen memakan waktu yang lebih lama dibandingkan pada basisdata relasional. Waktu membuat indeks linear dengan jumlah dokumen yang ada pada database, serta sebanding dengan kompleksitas fungsi Map yang dibuat. 5. Model MapReduce dirancang untuk digunakan secara paralel, sehingga hal-hal keduniaan seperti mempartisi himpunan nilai, pemilihan dokumen untuk menghasilkan pasangan kunci-nilai, serta menggabungkanya kembali diatur oleh sistem dan tersembunyi dari pengguna. Konsekuensinya, algoritma harus dipikirkan secara divide & conquer. 6. Basisdata dokumen tidak disarankan untuk digunakan pada lingkungan dengan dengan banyak operasi update. Selain karena index yang dihasilkan MapReduce memakan space besar, sifat append-only dari basisdata ini menyebabkan penumpukan dokumen-dokumen dengan revisi lama yang tidak digunakan lagi. 80 Fakultas Teknik Informatika Program Studi S1 Teknik Informatika Tugas Akhir - 2012 5.2. Saran Melakukan penelitian data semistruktural dan basisdata dokumen terasa menarik. Perkembangan terkini tentang bagaimana data disimpan oleh perusahan Internet dunia, seperti Google, Amazon, dan Facebook, membuat kita berpikir tentang bagaimana cara memodelkan data agar lebih sesuai dengan kasus yang dihadapi. Tidak semua domain data cocok ketika dimodelkan menjadi tabel relasi. Untuk beberapa kasus pada perusahaan tersebut, seringkali basisdata SQL tidak digunakan, dan mereka menggunakan data semistruktural. Meskipun demikian, basisdata semistruktural khususnya dokumen memiliki beberapa kelemahan. Berikut ini beberapa saran penelitian lanjutan yang bisa dilakukan: 1. Mengaplikasikan MapReduce di lingkungan basisdata dokumen terdistribusi. Dengan menggunakan banyak mesin, serta sifat dokumen yang independen, sifat paralel dari MapReduce bisa lebih dieksploitasi. Software yang direkomendasikan: Hadoop (http://hadoop.apache.org/), atau BigCouch (http://bigcouch.cloudant.com/) 2. Basisdata dokumen lain yang sama sama menggunakan JSON adalah MongoDB. Namun secara internal, basisdata ini mengubah dokumen tersebut menjadi BSON. Perbedaan lainnya adalah, basisdata ini menggunakan model query dinamis (seperti SQL, namun berbasiskan Javascript). Menarik rasannya untuk lebih mengetahui perbedaan diantara kedua basisdata dokumen ini. 3. Dalam proses development fungsi MapReduce, sebaiknya dokumen dibatasi saja dalam jumlah kecil, atau biarkan pengguna memilih dokumen mana dari basisdata yang ingin dilakukan perhitungan. Meskipun hal ini belum berarti fungsi MapReduce akan menghasilkan output yang benar, namun akan mempermudah dan mempercepat waktu pembuatan indeks dibandingkan fungsi harus menelusuri seluruh dokumen. 4. Agar proses validasi dan verifikasi dokumen JSON bisa lebih mudah, basisdata dokumen bisa menerapkan JSON schema, yaitu format untuk mendefinisikan struktur dari dokumen JSON (http://tools.ietf.org/html/draft-zyp-json-schema-03). 81 Fakultas Teknik Informatika Powered by TCPDF (www.tcpdf.org) Program Studi S1 Teknik Informatika Tugas Akhir - 2012 Daftar Pustaka [1]. 10gen. 2011. “Comparing Mongo DB and Couch DB”. (online). (http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and +Couch+DB, diakses Februari 2012) [2]. Abiteboul, S. 1998. “Querying Semi-Structured Data”. Kumpulan Journal SpringerLink vol. 1186. [3]. Anderson, J.C. 2010. “CouchDB: The Deffinitive Guide”. California: O’Reilly Media, Inc. [4]. Broekstra, J., dkk. 2000. “Representation and Query Languages for Semistructured Data”. (online). (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.135.1356 , diakses November 2011) [5]. Buneman, P. 1997. “Semistructured Data”. Proceedings of the sixteenth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems. [6]. Catell, R. 2012. “Scalable SQL and NoSQL Data Stores”. (online). (http://cattell.net/datastores/Datastores.pdf, diakses February 2012). [7]. Christensen, H. J. 2009. “Using RESTful Web-Services and Cloud Computing to Create Next Generation Mobile Applications”. ACM OOPSL [8]. CouchDB. 2012. “HTTP Bulk Document API”. (online). (http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API, diakses Februari 2012) [9]. Crockford, Douglas. 2006. “JSON: The Fat Free Alternative to XML”. (online). (http://www.json.org/fatfree.html , diakses November 2011) [10]. Date, C.J. 1999. “An Introduction to Database Systems”. Massachusetts: Addison-Wesley [11]. Dean, J. dan Ghemawat, S. 2004. “MapReduce: Simplified Data Processing on Large Clusters”. (online). (http://research.google.com/archive/mapreduce.html, diakses November 2011). Google, Inc. [12]. Dirolf, M. 2010. “Binary JSON Specification”. (online). (http://bsonspec.org/#/specification, diakses Maret 2012). [13]. Dyer, C. dan Lin, J. 2010. “Data-Intensive Text Processing with MapReduce”. USA: Morgan and Claypool. [14]. Gao, Stone. 2012. “Challenges with MongoDB”. (online). (http://www.slideshare.net/stonegao/challenges-with-mongodb, diakses Mei 2012) [15]. Google. “Introduction to Parallel Programming and MapReduce”. (online). (http://code.google.com/intl/id/edu/parallel/mapreduce- 82 Fakultas Teknik Informatika Program Studi S1 Teknik Informatika Tugas Akhir - 2012 tutorial.html, diakses April 2012) [16]. Google. 2004. “MapReduce: Simplified Data Processing on Large Clusters”. (online). (http://research.google.com/archive/mapreduce.html, diakses November 2011) [17]. Holt, B. 2011. “Writing and Querying MapReduce Views in CouchDB”. California: O’Reilly Media, Inc. [18]. IBM. 2010. “MapReduce”. (online). (http://publib.boulder.ibm.com/infocenter/bigins/v1r1/index.jsp?topic =%2Fcom.ibm.swg.im.infosphere.biginsights.doc%2Fdoc%2Fc00578 42.html, diakses April 2012) [19]. Kovács, Kristóf. 2010. “Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j comparison”. (online). (http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis/, diakses Maret 2012) [20]. Oracle. 2008. “Mapping SQL and Java Types”. (online). (http://docs.oracle.com/javase/6/docs/technotes/guides/jdbc/getstart/map ping.html, diakses Maret 2012) [21]. Oracle. 2010. “MySQL 5.1 Reference Manual: Data Definition Statements”. (online). (http://dev.mysql.com/doc/refman/5.1/en/sqlsyntax-data-definition.html, diakses Maret 2012) [22]. Oracle. 2010. “MySQL 5.1 Reference Manual: Data Manipulation Statements”. (online). (http://dev.mysql.com/doc/refman/5.1/en/sqlsyntax-data-manipulation.html, diakses Maret 2012) [23]. Oracle. 2010. “MySQL 5.1 Reference Manual”. (online). (http://dev.mysql.com/doc/refman/5.1/en/, diakses February 2012) [24]. Oracle. 2011. “Employees Sample Database”. (online). (http://dev.mysql.com/doc/employee/en/index.html, diakses Maret 2012) [25]. Oracle. 2012. “JDBC API Implementation Notes”. (online). (http://dev.mysql.com/doc/refman/5.0/en/connector-j-referenceimplementation-notes.html, diakses Maret 2012) [26]. Oracle. 2012. “Virtualbox: Technical background”. (online). (http://www.virtualbox.org/manual/ch10.html, diakses April 2012) [27]. Ramalho, L. G. “From ISIS to CouchDB: Databases and Data Models for Bibliographic Records”. (online). (http://journal.code4lib.org/articles/4893, diakses Maret 2012) [28]. Silberschatz, A., dkk. 2001. “Database System Concepts: Fourth Edition”. USA: McGraw-Hill [29]. Suciu, Dan. 2009. “Encyclopedia of Database Systems”. Heidelberg: Springer. [30]. Vmware. 2006. “Virtualization Overview”. (online). 83 Fakultas Teknik Informatika Program Studi S1 Teknik Informatika Tugas Akhir - 2012 (http://www.vmware.com/pdf/virtualization.pdf, diakses April 2012) [31]. Wohali. 2009. “CouchDB Bulk Document Post Performance”. (online). (http://www.atypical.net/archive/2009/05/12/couchdb-090-bulkdocument-post-performance, diakses Mei 2012) [32]. Young, Benjamin. 2012. “Organizing Document Structure in Document Databases”. (online). (http://blog.couchbase.com/organizing-document-structure-documentdatabases, diakses April 2012). 84 Fakultas Teknik Informatika Powered by TCPDF (www.tcpdf.org) Program Studi S1 Teknik Informatika