basis data non relasional: nosql dan mongodb

19
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

Upload: riana-dwiningtyas

Post on 05-Dec-2014

2.255 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 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

Page 2: Basis Data Non Relasional: NoSQL dan MongoDB

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

C. Teknik dan pola penanganan data..................................................................................................... 6

a) Column-oriented ...................................................................................................................... 7

b) Document-oriented ................................................................................................................... 7

c) Object-oriented ........................................................................................................................ 7

d) Graph-oriented ......................................................................................................................... 8

2. MongoDB........................................................................................................................................ 8

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

3. Pengelolaan data ............................................................................................................................ 16

A. Pendekatan Replication .............................................................................................................. 16

B. Sharding .................................................................................................................................... 16

C. Security and Authentication ....................................................................................................... 17

4. Penutup ......................................................................................................................................... 19

A. Kesimpulan ................................................................................................................................ 19

B. Saran ......................................................................................................................................... 19

Page 3: Basis Data Non Relasional: NoSQL dan MongoDB

3

TUGAS KELOMPOK

BASIS DATA NON RELASIONAL

Susun tulisan yang berisi tentang :

1. NoSQL Database yang antara lain meliputi :

a. Latar belakang.

b. Konsep dasar.

c. Teknisk dan pola – pola penanganan data.

2. 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) Pendekatan Replication.

2) Sharding.

3) Security and Authentication.

f. 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.

Page 4: Basis Data Non Relasional: NoSQL dan MongoDB

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 Partition-

Tolerance (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.

Page 5: Basis Data Non Relasional: NoSQL dan MongoDB

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 schema-

free 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

Page 6: Basis Data Non Relasional: NoSQL dan MongoDB

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, document-

oriented, object-oriented, graph-oriented.

Page 7: Basis Data Non Relasional: NoSQL dan MongoDB

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 16-

36 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

Page 8: Basis Data Non Relasional: NoSQL dan MongoDB

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.

Page 9: Basis Data Non Relasional: NoSQL dan MongoDB

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 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 :

Page 10: Basis Data Non Relasional: NoSQL dan MongoDB

10

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

Page 11: Basis Data Non Relasional: NoSQL dan MongoDB

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

Page 12: Basis Data Non Relasional: NoSQL dan MongoDB

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 :

Page 13: Basis Data Non Relasional: NoSQL dan MongoDB

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

Page 14: Basis Data Non Relasional: NoSQL dan MongoDB

14

Database

Perintah Keterangan

Db.addUser(user,password) Menambah user baru pada database

Db.auth() Memberikan hak akses pada user

Db.copyDatabase(FromDB,

todb, FromHost)

Menyalin isi database ke database lain

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

Db.help() Menampilkan manual untuk manipulasi database

db.namacollection.help() Menampilkan manual untuk manipulasi collection

Exit Keluar dari Mongo Shell

Page 15: Basis Data Non Relasional: NoSQL dan MongoDB

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(

newName, <dropTarget> )

Mengubah nama suatu collection

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,

object[,upsert_bool,

multi_bool])

Melakukan update data pada suatu collection

Db.mycoll.getShardVersion() Menampilkan versi dari fitur sharding yang

Page 16: Basis Data Non Relasional: NoSQL dan MongoDB

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.

Page 17: Basis Data Non Relasional: NoSQL dan MongoDB

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. Dokumen-

dokumen 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,

Page 18: Basis Data Non Relasional: NoSQL dan MongoDB

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:

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

keyfile = / srv / mongodb / keyfile

Page 19: Basis Data Non Relasional: NoSQL dan MongoDB

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, column-

oriented, 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.