Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
MAKALAH BASIS DATA NON RELASIONAL NoSQL DAN MONGODB Disusun untuk memenuhi tugas mata kuliah Basis Data Non-Relasional KELOMPOK 1: Yola Novia J2F009004 Yudith Dianmar Puspa J2F009033 Lia Yuliana J2F009040 Riana Dwiningtyas J2F009057 Jumiati J2F009059 Jurusan Ilmu Komputer/ Informatika Fakultas Sains & Matematika Universitas Diponegoro 2013 1 DAFTAR ISI 1. NoSQL Database ............................................................................................................................. 4 A. Latar Belakang ................................................................................................................................ 4 B. Konsep Dasar .................................................................................................................................. 4 a) Non-Relational ......................................................................................................................... 4 b) MapReduce .............................................................................................................................. 5 c) Schema-Free ............................................................................................................................ 5 d) Horizontal Scaling.................................................................................................................... 6 Teknik dan pola penanganan data..................................................................................................... 6 C. a) Column-oriented ...................................................................................................................... 7 b) Document-oriented ................................................................................................................... 7 c) Object-oriented ........................................................................................................................ 7 d) Graph-oriented ......................................................................................................................... 8 MongoDB........................................................................................................................................ 8 2. A. Gambaran umum ......................................................................................................................... 8 B. Tahapan instalasi. ........................................................................................................................ 9 C. Tipe Data ................................................................................................................................... 10 D. Operasi basis data ...................................................................................................................... 11 a) Proses Input Data ................................................................................................................... 12 b) Proses Update Data ................................................................................................................ 12 c) Proses Delete Data ................................................................................................................. 13 d) Perintah Dasar Lengkap MongoDB berdasarkan Kategori MongoClient Database .................. 13 Pengelolaan data ............................................................................................................................ 16 3. A. Pendekatan Replication .............................................................................................................. 16 B. Sharding .................................................................................................................................... 16 C. Security and Authentication ....................................................................................................... 17 Penutup ......................................................................................................................................... 19 4. A. Kesimpulan................................................................................................................................ 19 B. Saran ......................................................................................................................................... 19 2 TUGAS KELOMPOK BASIS DATA NON RELASIONAL Susun tulisan yang berisi tentang : 1. 2. NoSQL Database yang antara lain meliputi : a. Latar belakang. b. Konsep dasar. c. Teknisk dan pola – pola penanganan data. Ambil salah satu NoSQL Database yaitu MongoDB, yang antara lain mencakup : a. Gambaran umum. b. Tahapan instalasi. c. Tipe data. d. Operasi basis data. e. Pengelolaan data : f. 1) Pendekatan Replication. 2) Sharding. 3) Security and Authentication. Butir – butir lain yang Saudara anggap perlu disajikan. Ketentuan : 1. Tugas dikerjakan kelompok dengan anggota per kelompok sebagaimana telah ditentukan sebelumnya (maksimum 5 orang). 2. Format menggunakan aturan yang digunakan untuk tulisan ilmiah. 3. Tulisan dikumpulkan paling lambat pada saat pelaksanaan ujian tengah semester. 3 1. NoSQL Database A. Latar Belakang Generasi terbaru dari perangkat lunak internet sangat tergantung pada penggunaan sistem basis data. Kenyataanya untuk meningkatkan kemampuan dan kecepatan operasi, pengembang dapat merelaksasikan beberapa aturan ketat yang ada pada RDBMS seperti consistency dan atomicity. Sebagai realisasinya jenis basis data baru telah diperkenalkan beberapa tahun lalu yang dikenal dengan NoSQL (singkatan dari Not-Only-SQL). NoSQL ini dikembangkan pertama kali pada tahun 1998 oleh Carlo Strozzi. Pada tahun 2009, Eric Evans memperkenalkan kembali NoSQL. Beberapa aplikasi berbasis web yang telah menerapkan penggunaan NoSQL diantaranya adalah Google dengan BigTable, Amazon dengan Dynamo, dan Facebook dengan Cassandra dan Hadoop. Sesuai kepanjangannya NoSQL tidak menggunakan sintaks SQL untuk memyimpan data. NoSQL tidak memerkulakan tabel yang tetap seperti relation database. B. Konsep Dasar Menurut Eric Brewer, NoSQL didasarkan pada teori Consistency, Availability, Partition-Tolerance (CAP). Consistency Availability (CA) berseberangan dengan Partition-Tolerance dan berhubungan dengan replikasi. Consistency PartitionTolerance (CP) berseberangan dengan Availability dalam penyimpanan data. Availability Partition-Tolerance (AP) dimana system 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. a) Non-Relational Konsep Non-Relational dalam basis data NoSQL meliputi hirarki, graf, dan basis data berorientasi obyek. Penggunaan basis data non-relasional kembali merebak seiring bertambahnya aplikasi berbasis web yang menuntut skalabilitas tinggi. Meskipun memiliki kelemahan pada redundansi dan konsistensi data, namun basis data non-relasional dapat menyelesaikan permasalahan yang berkaitan dengan availability, dan partition-tolerance. Basis data non-relasional bertugas untuk memanipulasi kapasitas dan kapabilitas penyimpanan. 4 b) MapReduce MapReduce merupakan mode pemrograman yang diadaptasi dari pemrograman fungsional yang diimplementasikan mengolah dataset yang besar. Tujuan dari MapReduce adalah merancang suatu abstraksi baru yang memungkinkan pengguna untuk membuat antarmuka pemrograman sederhana dan menyembunyikan detail yang rumit dari paralelisasi, fault-tolerance, distribusi data, dan load-balancing dalam pustaka pemrogramannya. Hasilnya menunjukkan bahwa MapReduce dapat menyederhanakan antarmuka pemrograman yang dapat mendukung paralelisasi dan distribusi komputasi skala besar secara otomatis. 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. c) Schema-Free NoSQL dan RDBMS mempunyai perbedaan dalam hal penerapan skema basis data. Dalam RDBMS, sebuah table didesain dengan peraturan skema yang ketat, sedangkan pada NoSQL tidak diharuskan memiliki table, kolom, primary key, foreign key, join, dan relasi. Dalam pengembangan RDBMS, developer/database administrator harus berhati – hati dalam menentukan bagaimana table saling berelasi dan field yang ada di dalam setiap tabel. Karena perubahan skema dapat menimbulkan masalah ketergantungan dan integritas. Permasalahan ini tidak terjadi pada NoSQL karena adanya penerapan schema-free. Setiap dokumen bertanggungjawab terhadap isinya sendiri, null value dapat dihilangkan dalam beberapa baris dan field baru dapat didefinisikan dalam setiap dokumen secara independen. Manfaat lain dalam penggunaan schema-free adalah penghematan dalam media penyimpanan. 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 schemafree adalah memunculkan lemahnya pendefinisian struktur yang memungkinkan terjadinya penggunaan basis data yang tidak konsisten. Jika tujuan pembangunan basis data didasarkan pada aplikasi yang membutuhkan konsistensi ketat, seperti 5 wiki, support management systems, discussion forums, blogs, maka RDBMS masih merupakan pilihan yang tepat. d) Horizontal Scaling Horizontal Scaling memungkinkan basis data dijalankan pada beberapa server untuk meningkatkan kemampuan perangkat penyimpanan dan meningkatkan efisiensi waktu. Hal ini berarti memungkinkan dilakukannya penambahan server dalam satu jaringan dan user tidak sadar jika terdapat hardware yang diganti dari sisi server. Untuk mencapai hal tersebut, dibutuhkan kemampuan dinamis pemartisian data dalam serangkaian node dalam suatu cluster pada server. Kemampuan untuk meningkatkan kemampuan dengan menambahkan beberapa computer sangatlah penting untuk data yang jumlahnya banyak, karena vertical scaling dilakukan dengan meningkatkan kemampuan spesifikasi single server (missal penambahan prosesor, memori, dan peralatan penyimpanan) terbatas dan mahal. Ada beberapa teknik partisi yang digunakan dalam basisdata untuk melakukan horizontal scaling, salah satunya adalah consistent. Kunci dari penerapanconsistent hashing adalah membuat suatu lingkaran atau “ring”.Setiap node dalam sistem yang ditandai dengan random value dalam suatu space yang merepresentasikan posisi dariring. Suatu kunci item ditandai dengan sebuah node untuk memperoleh posisinya pada ring, kemudian berpindahmenuju node selanjutya yang sudah ditandai. Node memerankan peranan penting sebagai koordinator untuk kunciyang akan digunakan dalam route request. Kemudian, setiap node menjadi tanggung jawab dari daerah yang ada diring diantara noder dan node dalam ring sebelumnya. C. Teknik dan pola penanganan data 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. NoSQL memiliki teknik dan pola pengelolaan data, yaitu column-oriented, documentoriented, object-oriented, graph-oriented. 6 a) Column-oriented Terdapat beberapa contoh penerapan column-oriented, salah satunya adalah Cassandra yang menggunakan distribusi multidimensional map indexed dengan sebuah key. Baris kunci yang sering digunakan adalah string dengan panjang 1636 byte. Setiap kolom digabungkan menjadi sebuah column families. Contoh lainnya diterapkan oleh Wei Kang, dimana suatu kolom 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 kompleks. 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 tertinggi 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 desain schema. b) Document-oriented Contoh penerapan model data document-oriented terdapat dalam CouchDB yang dibangun oleh IBM. 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 menambahkandokumen baru ke basis data bila diperlukan seperti ketika terjadi proses update. c) 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 7 cara yang sangat umum untuk mengelompokkan record, hal ini merupakan suatukonsep 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 datamirip 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). d) Graph-oriented Basis data grafik (GraphDB) adalah basis data yang menggunakan struktur grafik yang berisi node, edge, dan properti untuk mewakili dan menyimpan informasi. GraphDB diperlukan untuk data grafik yang berskala besar, terutama yangdipergunakan oleh para peneliti biologi jaringan dan situs jaringan sosial, seperti Facebook, dan Twitter. GraphDBmemetakan secara langsung objek ke aplikasi dan lebih intuitif untuk menggambarkan dataset asosiatif. Beberapa keuntungan dari GraphDB adalah: (1)Intuitive, dimengerti oleh pikiran manusia, yaitu menggambarkan entitas dan hubungan sebagai grafik masalah umum yang akrab dengan manusia; (2)Elemental untuk ilmu komputer, yaitu grafik,terutama grafik pohon (seperti binary-tree, B+ tree, red-black tree) berfungsi sebagai struktur data dasar dalamilmu komputer dan berbagai masalah (shortest path dan max-flow) dapat diubah dan diselesaikan dengan algoritma grafik; (3)Ubiquitous, yaitu pemodelan ER ke model jejaring sosial selalu dikelilingi oleh grafik baik di komputer ataupun dalam kenyataan. 2. MongoDB A. Gambaran umum MongoDB adalah dokumen database yang memberikan kinerja tinggi (high performance), ketersediaan tinggi (high avability) dan skalabilitas yang mudah (easy scalability) a) Dokumen Database - Dokumen (object) memetakan dengan baik untuk pemrograman tipe data bahasa. - Dokumen tertanam dan array mengurangi kebutuhan untuk bergabung. 8 - Skema Dinamis membuat polimorfisme mudah. b) Kinerja Tinggi - Embedding membuat membaca dan menulis cepat. - Indeks dapat mencakup kunci dari dokumen tertanam dan array. - Opsional Streaming menulis (tidak ada ucapan terima kasih). c) Ketersediaan Tinggi - Direplikasi server dengan failover otomatis induk. d) Skalabilitas mudah. - Sharding otomatis mendistribusikan pengumpulan data di mesin. - Akhirnya dibaca konsisten dapat didistribusikan melalui server direplikasi. B. Tahapan instalasi. a) download software pada http://www.mongodb.org/downloads b) buka Comment Prompt pada komputer c) buat new folder ‘data’ md data md data\db d) Setting mongoDB dengan mengetikan: C:\mongodb\bin\mongod.exe --dbpath d:\test\mongodb\data\db C:\mongodb\bin\mongod.exe --dbpath "d:\test\mongo db data" e) menjalan kan MongoDB pada execute Command Prompt dengan perintah : 9 C:\mongodb\bin\mongod.exe f) Executing the command start C:\mongodb\bin\mongo.exe will automatically start the mongo.exe shell in a separate Command Prompt window. C. Tipe Data Format penulisan pada MongoDB lebih dikenal dengan nama BSON (Binary JSON). Ada beberapa keuntungan BSON daripada JSON, diantaranya adalah JSON tidak dapat menerima data dengan tipe date, sedangkan BSON dapat. JSON tidak dapat membedakan data integer, double dan float, dia hanya memiliki data dengan tipe data number (Double-precision floating-point format) sedangkan BSON dapat membedakannya, selain itu juga ada beberapa tipe data seperti symbol, regex, dan 10 code yang tidak ada dalam JSON tapi ada di BSON. Tipe data yang di support oleh MongoDB : a) null : Tipe data ini untuk merepresentasikan null value atau ketidaksediaan key sebuah data b) boolean : Hanya ada dua nilai dari boolean, true atau false c) 64-bit floating point number : Pada shell mongodb, semua number akan di ubah ke bentuk ini 64-bit floating point number d) string : String mongodb sudah menggunakan encoding unicode atau UTF8 e) object id : Objek id yang pasti ada pada tiap document, berukuran 12-byte dan akan digenerate otomatis saat pembuatan document f) date g) regular expression: Sebuah key document juga bisa berisi regular expression (regex) h) code: Sebuah key document juga dapat menyimpan kode-kode javascript i) binary data: Tipe data ini tidak dapat dimanipulasi oleh javascript shell j) array: Merupakan kumpulan dari beberapa value, tiap value dalam satu array boleh berbeda tipe datanya k) embedded document: Tipe data ini memiliki arti dokumen yang memiliki atau embbed document lain. D. Operasi basis data Perintah Keterangan Use <nama_db> Untuk CREATE DATABASE baru atau memilih database yang sudah ada untuk digunakan Db.mycoll.save(object) Untuk INSERT data baru kedalam collection, jika sebelumnya namacollection belum ada maka akan dibuatkan secara otomatis Db.mycoll.update(kondisi Untuk UPDATE data yang ada dalam collection Db.mycoll.remove(kondisi Untuk DELETE data yang ada dalam collection Db.mycoll.find(kondisi) Untuk SELECT data yang ada dalam collection, perintah ini juga digunakan untuk melakukan pencarian data dalam collection 11 Berikut ini akan kita berikan contoh penerapan beberapa query dasar pada MongoDB yakni Save(Input Data), Update(Edit), Remove(Hapus) dan find(Tampilkan atau Cari) a) Proses Input Data Proses input data menggunakan mongoDB tidak terikat dengan yang namanya kolom, field maupun tabel. Karena mongoDB tidak mengenal adanya tabel, field, maupun kolom. MongoDB mengenal adanya koleksi (collection) dan obyek yang ada dalam koleksi tersebut. Untuk membuat suatu koleksi, tidak diperlukan suatu syntax khusus. Kita tinggal menambahkan saja suatu data ke dalam suatu nama koleksi. Jika nama koleksi yang dituju sudah ada, maka data yang dimasukkan akan secara otomatis dimasukkan ke dalam koleksi tersebut. Namun, jika nama koleksi yang dituju belum ada, maka mongoDB secara otomatis membuatkan koleksi tersebut dengan data yang dimasukkan tadi. Contoh syntax yang digunakan untuk menginputkan data adalah sebagai berikut : db.mahasiswa.save( { nama : “Miftah Alfian Syah”, nrp : “090411100096” } ); Maksud dari syntax diatas adalah kita menyimpan data “Miftah Alfian Syah” ke dalam sebuah key nama dan data “090411100096” ke dalam sebuah key nrp dalam sebuah koleksi (collection) yang bernama mahasiswa. Ketika kita ingin memasukkan data lagi, kita bisa menyimpan data dengan nama key yang berbeda dari key yang telah diinputkan tadi. Oleh karena itu, proses input data menggunakan mongoDB akan terasa sangat mudah. b) Proses Update Data Proses update data pada mongoDB pun juga sangat mudah. Kita tinggal menentukan saja key dengan nama apa yang diubah dan berdasarkan apa. Contoh syntax yang digunakan untuk mengupdate data dalam koleksi (collection) mongoDB adalah sebagai berikut : 12 db.mahasiswa.update( {nrp:”090411100029”}, {$set:{nilai:100}}, false,true ); Maksud dari syntax diatas adalah akan diupdate suatu key bernama nilai dengan nilai 100, dimana key bernama nrp mempunyai data “090411100029” yang berada dalam koleksi (collection) mahasiswa. c) Proses Delete Data Proses delete data pada mongoDB pun juga sangat mudah. Kita tinggal menentukan data yang dihapus berdasarkan key apa dengan nilai apa. Contoh syntax yang digunakan untuk menghapus data dalam koleksi (collection) mongoDB adalah sebagai berikut : db.mahasiswa.remove( {nrp:”090411100126”} ); Maksud dari syntax di atas adalah akan dihapus data dalam koleksi (collection) mahasiswa dimana key yang bernama nrp bernilai “0904111100126”. Proses Pencarian dan Menampilkan Data Proses pencarian data dalam mongoDB pun juga sangat mudah. Kita tinggal mengetikkan nama koleksi beserta nama key yang akan ditampilkan ataupun yang dicari. Berikut ini, terdapat beberapa contoh syntax yang digunakan untuk menampilkan atau mencari data dengan mongoDB db.mahasiswa.find(); d) Perintah Dasar Lengkap MongoDB berdasarkan Kategori MongoClient Database Perintah Keterangan Use <nama_db> Untuk membuat database baru atau memilih database yang sudah ada untuk digunakan Show dbs Menampilkan seluruh nama database yang sudah dibuat di mongodb Show collections Menampilkan seluruh nama collection dalam tiap database beserta nama database nya Show users Menampilkan namauser pada database 13 Db.help() Menampilkan manual untuk manipulasi database db.namacollection.help() Menampilkan manual untuk manipulasi collection Exit Keluar dari Mongo Shell Database Perintah Keterangan Db.addUser(user,password) Menambah user baru pada database Db.auth() Memberikan hak akses pada user Db.copyDatabase(FromDB, Menyalin isi database ke database lain todb, FromHost) Db.createCollection() Membuat sebuah collection baru pada database Db.currentOp() Menampilkan operasi / proses terkini dari database Db.dropDatabase() Menghapus database yang sedang digunakan sekarang Db.getCollection(cname) Mengambil objek collection tertentu dari database yang sedang aktif sekarang Db.getCollectionNames() Mengambil seluruh nama collection yang terdapat dalam database yang sedang aktif Db.getName() Menampilkan nama dari database yang sedang aktif Db.printCollectionStats() Menampilkan seluruh Collection beserta atributnya pada database Db.printReplicationInfo() Menampilkan info dari replikasi database Db.printShardingStatus() Menampilkan status dari fitur sharding pada database Db.removeUser(username) Menghapus user tertentu pada database Db.repairDatabase() Melakukan repair pada database yang sedang aktif sekarang Collection Perintah Keterangan Db.mycoll.find().help() Menampilkan manual (panduan) untuk menggunakan perintah find Db.mycoll.count() Menampilkan jumlah data pada collection mycoll 14 Db.mycoll.dataSize() Menampilkan ukuran data pada collection mycoll Db.mycoll.distinct(key) Menampilkan seluruh data pada collection mycoll dan jika ada isi data yang sama pada key maka yang ditampilkan hanya 1 saja Db.mycoll.drop() Menghapus collection mycoll pada database Db.mycoll.dropIndex(name) Menghapus index pada collection mycoll Db.mycoll.find([query],[field]) Menampilkan seluruh data pada collection Db.mycoll.find(…..).count() Menampilkan jumlah data pada collection Db.mycoll.find(…..).limit(n) Menampilkan data pada collection berdasarkan limit tertentu Db.mycoll.find(…..).skip(n) Menampilkan data pada collection dengan pengecualian beberapa data Db.mycoll.find(…..).sort(….) Menampilkan data pada collection dan disorting dengan ASCENDING maupun DESCENDING Db.mycoll.getDB() Mengambil object data dari sebuah collection Db.mycoll.remove(query) Menghapus data yang ada pada collection dengan query tertentu Db.mycoll.renameCollection( Mengubah nama suatu collection newName, <dropTarget> ) Db.mycoll.save(obj) Tambah data baru pada collection Db.mycoll.stats() Menampilkan statistik dari collection mycoll Db.mycoll.totalIndexSize() Ukuran (Bytes) dari semua index Db.mycoll.totalSize() Total ukuran seluruh data Db.mycoll.update(query, Melakukan update data pada suatu collection object[,upsert_bool, multi_bool]) Db.mycoll.getShardVersion() Menampilkan versi dari fitur sharding yang 15 3. Pengelolaan data A. Pendekatan Replication MongoDB mendukung replikasi, selain itu konfigurasi replikasi pada MongoDB sangatlah mudah jika dibandingkan sistem basis data RDBMS (IMHO). Hal ini membuat pemilik sistem yang memiliki traffic membaca tinggi (seperti portal berita, forum dan blog) akan sangat terbantu ketika sistemnya akan menggunakan replikasi. Adanya database NoSQL seperti MongoDB yang mencoba untuk menyelesaikan permasalahan ini. Disini, Data tidak ditulis/dibaca dari database dengan menggunakan bahasa SQL, tetapi menggunakan metode object-oriented yang lebih disukai oleh developers. Kelebihan lainnya adalah adanya dukungan adanya banyaknya tipe index yang berbeda beda untuk lookupsterhadap data tertentu. Mereka juga memiliki kemampuan clustering secara default. B. Sharding Sharding adalah metode untuk menyimpan data pada beberapa mesin yang berbeda. MongoDB menggunakan sharding untuk mendukung deployment pada data set yang sangat besar dan operasi dengan throughput yang tinggi. Sistem basis data dengan data set yang besar dan throughput yang tinggi dapat membebani kapasitas pada suatu single server. Pada akhirnya, ukuran beban yang dikerjakanakan melebihi kapasitas RAM dan disk drive I/O. Untuk menangani permasalahan ini, sistem basis data memiliki dua pendekatan: vertical scaling dan sharding. (1) Vertical scaling menambah jumlah CPU dan media penyimpanan untuk meningkatkan kapasitas. Namun, dengan jumlah CPU yang banyak dan RAM yang besar membutuhkan biaya yang lebih mahal. Oleh karena itu, terdapat batas maksimum pada suatu perusahaan untuk menerapkan vertical scaling. (2) Sharding, atau horizontal scaling membagi data set dan mendistribusikan data melalui banyak server. Setiap shard merupakan basis data yang berdiri sendiri, dan secara bersamaan dapat membuat basis data logis tunggal. 16 Gambar1 Diagram dari sebuah collection menjadi 4 shard terpisah Sharding mengatasi permasalahan scaling untuk mendukung throughput yang tinggi dan data set yang besar: - Sharding memperkecil jumlah operasi yang ditangani tiap shard. Tiap shard memproses sedikit operasi meskipun cluster bertambah. Hasilnya, cluster yang terbagi – bagi dapat meningkatkan kapasitas dan throughput. - Sharding memperkecil jumlah data yang dibutuhkan untuk disimpan oleh tiap server. Tiap shard menyimpan data yang lebih kecil meskipun cluster bertambah. Sebagai contoh, jika suatu basis data memiliki dataset sebesar 1TB, dan terdapat 4 shard, maka tiap shard hanya dapat menyimpan 256GB data. Jika terdapat 40 shard, maka tiap shard dapat menyimpan 25GB data. C. Security and Authentication Didalam pengembangan mongoDB tidak memiliki solusi cepat untuk mengembangkan keamanan dan mengurangi resiko keamanan yang ada. Dokumendokumen di bagian ini menggunakan pendekatan “Pertahanan pada Kedalaman” untuk mengamankan deployment MongoDB dan alamat-alamat sejumlah metode yang berbeda untuk mengelola resiko dan mengurangi pembukaan resiko. Maksud dari pendekatan “Pertahanan pada Kedalaman” adalah untuk memastikan tidak ada poin kegagalan yang dapat dieksploitasi dalam deployment, yang dapat memungkinkan penyusup atau pihak yang tidak dapat dipercaya untuk mengakses data yang tersimpan dalam database MongoDB. Cara termudah dan terefektif untuk mengurangi resiko eksploitasi adalah dengan menjalankan MongoDB dalam lingkungan yang terpercaya, membatasi akses, 17 mengikuti sistem yang paling kurang istimewa, dan mengikuti perkembangan terbaik dan praktek-praktek deployment. mongoDB menyediakan fitur autentifikasi atau verifikasi pengguna disetiap database. MongoDB menyimpan hak akses pengguna pada database system.user. Satu user hanya dapat mengotentikasi satu kali untuk database yang diberikan. Jika sudah mengotentikasi ke database sebagai satu pengguna dan kemudian otentikasi pada database yang sama sebagai pengguna yang berbeda, otentikasi kedua akan membatalkan otentifikasi pertama. Dapat melakukan login ke database yang berbeda sebagai pengguna yang berbeda tidak akan membatalkan otentikasi pada database lain. Sebuah database system.users menyimpan informasi otentikasi database tersebut. Secara khusus, menyimpan kredensial pengguna untuk otentikasi dan informasi pengguna hak istimewa untuk otorisasi. MongoDB memerlukan otorisasi untuk mengakses system.users untuk mencegah serangan terhadap tingkatan hak akses pengguna. Untuk mengakses, pengguna harus memiliki akses sebagai userAdmin atau userAdminAnyDatabase. Proses otentifikasi paling efektif untuk mengontrol akses dan untuk mengamankan sambungan antara replika set tergantung pada jaringan kontrol akses. User dapat menggunakan firewall dan jaringan routing untuk memastikan bahwa lalu lintas hanya dari klien dan replika set lainnya. Jika diperlukan, user dapat menggunakan jaringan privat virtual (VPN) untuk memastikan koneksi yang aman. Contoh mengaktifkan otentikasi dengan menentukan key file yang berfungsi sebagai password. Untuk mengaktifkan otentikasi, tambahkan opsi berikut ini ke file konfigurasi Anda: keyfile = / srv / mongodb / keyfile Key file harus antara 6 dan 1024 karakter dan hanya dapat berisi karakter dalam base64 set. Pada sistem Windows Server, program netsh menyediakan metode untuk mengelola Windows Firewall. Aturan-aturan ini memungkinkan administrator untuk mengontrol apa host dapat terhubung ke sistem, dan dapat membatasi risiko dengan membatasi host yang dapat terhubung ke sistem. Selalu menjalankan proses mongod atau mongos sebagai pengguna yang unik dengan izin dan akses minimum yang diperlukan. Jangan pernah menjalankan program MongoDB sebagai root atau pengguna administratif. Para pengguna sistem yang menjalankan proses MongoDB harus memiliki mandat otentikasi yang kuat, yang mencegah akses tidak sah atau casual. Untuk lebih membatasi envoirement, Anda dapat menjalankan proses mongod 18 atau Mongos dalam chroot. Kedua pembatasan akses berbasis pengguna dan konfigurasi chroot, mengikuti ketentuan yang direkomendasikan untuk mengelola semua proses daemon pada sistem Unix-like. 4. Penutup A. Kesimpulan NoSQL merupakan paradigma baru dalam Sistem Manajemen Basis Data yang memiliki keunggulan dalam hal scalability dan kecepatan dalam pencarian data. Terdapat beberapa teknik pengelolaan data pada NoSQL, document-oriented, columnoriented, graph-oriented, dan object-oriented. MongoDB merupakan salah satu DBMS yang menggunakan teknik pengelolaan data document-oriented. MongoDB tidak menggunakan skema, tabel, dan atribut dalam pengorganisasian basis data, melainkan koleksi, dokumen, dan key-value. B. Saran NoSQL sangat tepat diterapkan pada sistem yang memiliki basis data besar dan mengutamakan kecepatan, namun tidak direkomendasikan digunakan pada sistem berbasis transaksi, seperti sistem perbankan, dan lain sebagainya. 19