Download MAKALAH BASIS DATA NON RELASIONAL NoSQL

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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