SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
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.

NoSQL Database yang antara lain meliputi :
a.
b.

Konsep dasar.

c.

2.

Latar belakang.

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 :
1)
2)

Sharding.

3)
f.

Pendekatan Replication.

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 datadb

d) Setting mongoDB dengan mengetikan:
C:mongodbbinmongod.exe --dbpath d:testmongodbdatadb
C:mongodbbinmongod.exe --dbpath "d:testmongo db data"

e) menjalan kan MongoDB pada execute Command Prompt dengan perintah :
9
C:mongodbbinmongod.exe

f) Executing the command start
C:mongodbbinmongo.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

Weitere ähnliche Inhalte

Was ist angesagt?

Pancasila dalam penjajahan, zaman proklamasi dan kemerdekaan
Pancasila dalam penjajahan, zaman proklamasi dan kemerdekaanPancasila dalam penjajahan, zaman proklamasi dan kemerdekaan
Pancasila dalam penjajahan, zaman proklamasi dan kemerdekaan
Nur Pratiwi
 
Laporan praktikum basis data my sql
Laporan praktikum basis data my sqlLaporan praktikum basis data my sql
Laporan praktikum basis data my sql
Lela Warni
 
Soal uts praktikum pemrograman web
Soal uts praktikum pemrograman webSoal uts praktikum pemrograman web
Soal uts praktikum pemrograman web
dedidarwis
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Ari Septiawan
 
Laporan tugas mata kuliah sumberdaya alamiah dan lingkungan
Laporan tugas mata kuliah sumberdaya alamiah dan lingkunganLaporan tugas mata kuliah sumberdaya alamiah dan lingkungan
Laporan tugas mata kuliah sumberdaya alamiah dan lingkungan
friska silalahi
 

Was ist angesagt? (20)

7 Metode Pencarian Data Array
7 Metode Pencarian Data Array7 Metode Pencarian Data Array
7 Metode Pencarian Data Array
 
Algoritma penjadwalan proses
Algoritma penjadwalan prosesAlgoritma penjadwalan proses
Algoritma penjadwalan proses
 
Mengapa kita memerlukan basis data
Mengapa kita memerlukan basis dataMengapa kita memerlukan basis data
Mengapa kita memerlukan basis data
 
Cover essai
Cover essaiCover essai
Cover essai
 
MAKALAH STACK (TUMPUKAN )
MAKALAH STACK (TUMPUKAN )MAKALAH STACK (TUMPUKAN )
MAKALAH STACK (TUMPUKAN )
 
Mata Kuliah Basis Data
Mata Kuliah Basis DataMata Kuliah Basis Data
Mata Kuliah Basis Data
 
Sistem basis data 4
Sistem basis data 4Sistem basis data 4
Sistem basis data 4
 
Pancasila dalam penjajahan, zaman proklamasi dan kemerdekaan
Pancasila dalam penjajahan, zaman proklamasi dan kemerdekaanPancasila dalam penjajahan, zaman proklamasi dan kemerdekaan
Pancasila dalam penjajahan, zaman proklamasi dan kemerdekaan
 
Laporan praktikum basis data my sql
Laporan praktikum basis data my sqlLaporan praktikum basis data my sql
Laporan praktikum basis data my sql
 
Materi Data Mining - C4.5
Materi Data Mining - C4.5Materi Data Mining - C4.5
Materi Data Mining - C4.5
 
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...
 
Soal uts praktikum pemrograman web
Soal uts praktikum pemrograman webSoal uts praktikum pemrograman web
Soal uts praktikum pemrograman web
 
Proses Data Mining
Proses Data MiningProses Data Mining
Proses Data Mining
 
Contoh proposal kompetisi bisnis mahasiswa indonesia (kbmi) keripik pedas mor...
Contoh proposal kompetisi bisnis mahasiswa indonesia (kbmi) keripik pedas mor...Contoh proposal kompetisi bisnis mahasiswa indonesia (kbmi) keripik pedas mor...
Contoh proposal kompetisi bisnis mahasiswa indonesia (kbmi) keripik pedas mor...
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
 
Laporan tugas mata kuliah sumberdaya alamiah dan lingkungan
Laporan tugas mata kuliah sumberdaya alamiah dan lingkunganLaporan tugas mata kuliah sumberdaya alamiah dan lingkungan
Laporan tugas mata kuliah sumberdaya alamiah dan lingkungan
 
UAS Interpersonal Skill
UAS Interpersonal SkillUAS Interpersonal Skill
UAS Interpersonal Skill
 
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
 
Sequential Search
Sequential SearchSequential Search
Sequential Search
 
Modul algoritma pemrograman-dasar x rpl
Modul algoritma pemrograman-dasar x rplModul algoritma pemrograman-dasar x rpl
Modul algoritma pemrograman-dasar x rpl
 

Ähnlich wie Basis Data Non Relasional: NoSQL dan MongoDB

Modul praktikum database programing
Modul praktikum database programingModul praktikum database programing
Modul praktikum database programing
Zaenal Abidin
 
Tgs. tbd database oracle terdistribus-artayahonest
Tgs. tbd database oracle terdistribus-artayahonestTgs. tbd database oracle terdistribus-artayahonest
Tgs. tbd database oracle terdistribus-artayahonest
Artaya Honest
 
03 Sistem Manajemen Basis Data
03 Sistem Manajemen Basis Data03 Sistem Manajemen Basis Data
03 Sistem Manajemen Basis Data
Ainul Yaqin
 

Ähnlich wie Basis Data Non Relasional: NoSQL dan MongoDB (20)

Makalah casandra facebook
Makalah casandra facebookMakalah casandra facebook
Makalah casandra facebook
 
Tugas4 1412510602 dewi_apriliani
Tugas4 1412510602 dewi_aprilianiTugas4 1412510602 dewi_apriliani
Tugas4 1412510602 dewi_apriliani
 
Tugas4 0317-nasrulakbar-141250552
Tugas4 0317-nasrulakbar-141250552Tugas4 0317-nasrulakbar-141250552
Tugas4 0317-nasrulakbar-141250552
 
Rekayasa web part 4 khaerul anwar
Rekayasa web part 4 khaerul anwarRekayasa web part 4 khaerul anwar
Rekayasa web part 4 khaerul anwar
 
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDB
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDBComparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDB
Comparing top 5 popular DBMS: oracle, mysql, ms sql server, postgree, mongoDB
 
Tugas 4 rekayasa web
Tugas 4 rekayasa web Tugas 4 rekayasa web
Tugas 4 rekayasa web
 
Tugas4 (individu)-andrian lesmana-1311510448
Tugas4 (individu)-andrian lesmana-1311510448Tugas4 (individu)-andrian lesmana-1311510448
Tugas4 (individu)-andrian lesmana-1311510448
 
Tugas 4 0317 individu
Tugas 4 0317 individuTugas 4 0317 individu
Tugas 4 0317 individu
 
Modul praktikum database programing
Modul praktikum database programingModul praktikum database programing
Modul praktikum database programing
 
Tugas pak taufan
Tugas pak taufanTugas pak taufan
Tugas pak taufan
 
Makalah Oracle
Makalah OracleMakalah Oracle
Makalah Oracle
 
Tugas iv 0317_arie firmandani_1512510445
Tugas iv  0317_arie firmandani_1512510445Tugas iv  0317_arie firmandani_1512510445
Tugas iv 0317_arie firmandani_1512510445
 
Tugas 4 0317-fahreza yozi-1612510832 -
Tugas 4 0317-fahreza yozi-1612510832 - Tugas 4 0317-fahreza yozi-1612510832 -
Tugas 4 0317-fahreza yozi-1612510832 -
 
Tgs. tbd database oracle terdistribus-artayahonest
Tgs. tbd database oracle terdistribus-artayahonestTgs. tbd database oracle terdistribus-artayahonest
Tgs. tbd database oracle terdistribus-artayahonest
 
Tugas[4] 0317-[rachmawan darma]-[1311500100].
Tugas[4] 0317-[rachmawan darma]-[1311500100].Tugas[4] 0317-[rachmawan darma]-[1311500100].
Tugas[4] 0317-[rachmawan darma]-[1311500100].
 
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...
Si & Pi, cilin christianto, hapzi ali, database management sistem dalam kegia...
 
03 Sistem Manajemen Basis Data
03 Sistem Manajemen Basis Data03 Sistem Manajemen Basis Data
03 Sistem Manajemen Basis Data
 
Modul Data Warehouse
Modul Data Warehouse  Modul Data Warehouse
Modul Data Warehouse
 
Translate
TranslateTranslate
Translate
 
Tugas 5 0317-fahreza yozi-1612510832
Tugas 5 0317-fahreza yozi-1612510832Tugas 5 0317-fahreza yozi-1612510832
Tugas 5 0317-fahreza yozi-1612510832
 

Basis Data Non Relasional: NoSQL dan MongoDB

  • 1. 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
  • 2. 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
  • 3. TUGAS KELOMPOK BASIS DATA NON RELASIONAL Susun tulisan yang berisi tentang : 1. NoSQL Database yang antara lain meliputi : a. b. Konsep dasar. c. 2. Latar belakang. 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 : 1) 2) Sharding. 3) f. Pendekatan Replication. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. - 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 datadb d) Setting mongoDB dengan mengetikan: C:mongodbbinmongod.exe --dbpath d:testmongodbdatadb C:mongodbbinmongod.exe --dbpath "d:testmongo db data" e) menjalan kan MongoDB pada execute Command Prompt dengan perintah : 9
  • 10. C:mongodbbinmongod.exe f) Executing the command start C:mongodbbinmongo.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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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