Minggu, 03 September 2017

Socket IO

Pernah main Facebook? Line? Twitter?
Jika sekedar bermain aplikasi diatas, itu terlalu biasa, bagaimana jika membuat versi sendiri?

Mulai dari yang paling sederhana membuat sebuah chat dua arah, tiga arah, sampai membuat broadcast chat (banyak arah).

Awal membuat sebuah webchat sederhana yang terpikir adalah php, ya php server. Awal perjalanan membuat interface hingga sampai mulai membuat back-end server berjalan mulus. Pada saat pembuatan back-end mulai terasa susahnya memikirkan cara agar data bisa terkirim ke semua client secara realtime dan tentunya dengan data dan waktu yang seoptimal mungkin. Tidak semudah ekspektasi diawal.
Dengan php web chat sederhana ini bisa saja selesai tetapi dengan kode yang begitu panjang dan rumit, bahkan untuk menjaga chat tetap realtime-connected (terhubung terus-menerus ke server) mau tidak mau harus melakukan brute-force menggunakan interval waktu tertentu melakukan pengecekan berulang-ulang yang tidak efektif ke database.


Membuat sebuah web yang bekerja secara realtime, php mungkin adalah pilihan yang kurang tepat.

Node.js salah satu alternatif pilihan yang tepat dalam membangun sebuah web yang bekerja realtime. Anda bisa membaca berbagai artikel tentang apa itu Node.js, kegunaan, kelebihannya, dll.
Menggunakan Socket.IO salah satu module dari Node.js yang juga library-nya javascript, membuat sebuah asynchronus data untuk realtime chat sangat mudah.
Tidak terbayang, susah payah yang telah dikerjakan menggunakan php, ternyata semudah mengangkat tisu ketika menggunakan socket.io, yahh… serasa membuat sesuatu yang sebenarnya sudah ada -_-, sia-sia.

Cara kerjanya singkat seperti ini:

Client:
    // fungsi untuk mengirim data, misalnya pesan
    function kirim(pesan){
        // Mengirim data ke server
        socket.emit(‘pesan baru’, pesan);
    }

    // menerima data dari server
    socket.on(‘pesan masuk’, function(respon){
        //.. olah data
    });

Server:
    // server menerima data dari client dengan kunci ‘pesan baru’
    socket.on(‘pesan baru’, function(data){
        // data yang diterima di-broadcast ke seluruh client
        socket.broadcast.emit(‘pesan masuk’, data);
    });

Client mengirim pesan menggunakan fungsi kirim dengan kunci ‘pesan baru’ ke server lalu server menerima data dari client dengan kunci ‘pesan baru’, server mengolah respon sesuai kebutuhan misalnya respon langsung diteruskan ke semua client dengan kunci ‘pesan masuk’ (broadcast), kemudian client menerima data dari server dengan kunci ‘pesan masuk’.
Semudah itu, tidak perlu memikirkan hal lainnya dibelakang layar. Hampir semua pekerjaan pada Socket.IO dikerjakan hanya menggunakan kunci dan data, semudah itu.

Mudah bukan?

Bagi pembaca sekalian yang ingin membuat web realtime seperti web chat, menggunakan php adalah cara yang buruk, Anda hanya akan menghabiskan banyak waktu, Socket.IO bisa menjadi salah satu alternatif yang optimal.
Tidak hanya web, Socket.IO merupakan tool cross-platform Anda juga bisa menghubungkannya dengan iOS, android, dll.


contoh app.js

/*
* load module http, untuk membuat server
* load module socket.io
* load module fs untuk membaca file
*/

var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');
/*
* setting aplikasi di port 8888
*/

app.listen(8888);
/*
* buat fungsi hendler , fungsi ini digunakan untuk konfigurasi server
*/
function handler (req, res) {
/*
* baca file index.html
*/
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
  /*
  * tangani jika serever erorr
  */
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

io.on('connection', function (socket) {
  socket.emit('transtv', { pesan: 'Hai saya pesan dari server untuk channel transtv' });
  socket.on('tvone', function (data) {
    console.log(data);
  });
});





Reff:
https://riochr17.wordpress.com/2016/01/05/webchat-dan-socket-io/



Selasa, 06 Desember 2016

PHP Code CRUD Mongodb



Setelah proses tes CRUD via cmd berhasil...saatnya kita uji CRUD menggunakan PHP Code

Beberapa uji sql bisa dilakukan pada web sbb
http://klaus.dk/sqltomongodb/
http://www.querymongo.com/


untuk koneksi ke mongodb PHP butuh driver...silakan download di:
https://s3.amazonaws.com/drivers.mongodb.org/php/index.html

Juga tutorial sbb bisa dijadikan refferensi untuk pengaturan koneksinya:
http://zetcode.com/db/mongodbphp/



CRUD Mongodb

Mongodb merupakan kumpulan - kumpulan dokumen dan kumpulan dokumen ini disebut dengan collection.

MongoDB adalah salah satu produk database noSQL  OPEN SOURCE yang menggunakan struktur data JSON untuk menyimpan datanya. MongoDB adalah salah satu database noSQL yang paling populer di internet. MongoDB sering dipakai untuk aplikasi berbasis Cloud, Grid Computing, atau Big Data.

jadi ms word, excel, ppt dll apakah sama dengan mongodb....jawabannya tidak....dokumn yang dimaksud disini adalah dokumen dengan format JSON :-)

Untuk memudahkan menjalankan mongodb yatu agar tidak perlu menjalankan cmd dll, bisa gunakan file sbb:


cd c:\Mongo\bin
c:
mongod.exe --config mongod.cfg

simpan dengan nama openMongo.bat

lalu buat file baru dengan code sbb:
dbpath=c:\data\db
logpath=c:\Mongo\mongo_error.log

logappend=true

simpan dengan nama mongod.cfg


dbpath c:\data\db bisa diganti sesuai lokasi database yang hendak disimpan nantinya.....

kita bisa juga mengujinya dengan menggunakan browser dengan port: 27017

Gambar diatas menunjukkan bahwa server mongodb sudah berjalan dengan baik.....

Mari belajar lagi CRUD Dasar Mongo db

Membuat dan menghapus database

membuat database

use kampus;
Menghapus database

db.dropDatabase();
Membuat dan tabel Mahasiswa

membuat tabel mahasiswa

use kampus; 
db.createCollection("mahasiswa");

Menghapus tabel mahasiswa
db.mahasiswa.drop();

Perintah CRUD

buat kembali database kampus dan tabel/collection mahasiswa

use kampus;
db.createCollection("mahasiswa");
Insert data

> db.mahasiswa.insert(
{
nama:"Khanza Humaira Dinata", 
ipk:3.3,
jurusan:"TI"
}
)

> db.mahasiswa.insert({nama:"Riadi Marta Dinata"});
> db.mahasiswa.insert({nama:"Rini Diyah Anggorowati",jurusan:"Ekonomi"});

Dalam contoh diatas, kitamenginsert 3 data. Perhatikan bahwa tidak ada istilah kolom dalam database MongoDB. Artinya kita bebas menginsert data, entah cuma nama, nama dan jurusan atau nama, jurusan dan ipk. 

Jika kita butuh kolom tambahan, tidak ada perubahan schema didatabase, cukup insert dengan pola diatas. Sekali lagi, MongoDB bersifat Dynamic Schema, tidak ada namanya alter tabel add kolom atau alter tabel drop colom. ohhhh...MANTAB...


Melihat data 

> db.mahasiswa.find()
{ "_id" : ObjectId("53130eaa999a7b243bad3b59"), "nama" : "Khanza Humaira Dinata", "
k" : 3.3 }
{ "_id" : ObjectId("53130eca999a7b243bad3b5a"), "nama" : "Riadi Marta Dinata" }
{ "_id" : ObjectId("53130ee0999a7b243bad3b5b"), "nama" : "Rini Diyah Anggorowati", "jurusan"
"Ekonomi" }


> db.mahasiswa.find().pretty()
{
        "_id" : ObjectId("53130eaa999a7b243bad3b59"),
        "nama" : "Khanza Humaira Dinata",
        "ipk" : 3.3
}
{ "_id" : ObjectId("53130eca999a7b243bad3b5a"), "nama" : "Riadi Marta Dinata" }
{
        "_id" : ObjectId("53130ee0999a7b243bad3b5b"),
        "nama" : "Rini Diyah Anggorowati",
        "jurusan" : "Ekonomi"
}

Tambahan pretty akan menghasilkan tampilan yang lebih menyejukkan mata....
Perhatikan field _id, ini adalah primar key di tabel mongoDB. Primarykey selalu menggunakan kolom _id dan isinya dibuat secara otomatis, user tidak bisa membuat primary key sendiri.

Menampilkan kolom tertentu

  db.mahasiswa.find({},{"nama":1})
 "_id" : ObjectId("53130eaa999a7b243bad3b59"), "nama" : "Khanza Humaira Dinata" }
 "_id" : ObjectId("53130eca999a7b243bad3b5a"), "nama" : "Riadi Marta Dinata" }
 "_id" : ObjectId("53130ee0999a7b243bad3b5b"), "nama" : "Rini Diyah Anggorowati" }

tambahan 1 menjunjukkan kode true

Menyembunyikan kolom _id dari hasil

> db.mahasiswa.find({},{"nama":1,_id:0})
{ "nama" : "Khanza Humaira Dinata" }
{ "nama" : "Riadi Marta Dinata" }
{ "nama" : "Rini Diyah Anggorowati" }

tambahan 0 menjunjukkan kode false


Mencari nama siswa

> db.mahasiswa.find({nama:"Rini Diyah Anggorowati"}).pretty();
{
        "_id" : ObjectId("53130ee0999a7b243bad3b5b"),
        "nama" : "Rini Diyah Anggorowati",
        "jurusan" : "Ekonomi"
}

Mengupdate ip Rini Diyah Anggorowati ipk:3.5

> db.mahasiswa.update({nama:"Rini Diyah Anggorowati"},{$set:{ipk:3.5}})
> db.mahasiswa.find({nama:"Rini Diyah Anggorowati"}).pretty();
{
        "_id" : ObjectId("53130ee0999a7b243bad3b5b"),
        "ipk" : 3.5,
        "jurusan" : "Ekonomi",
        "nama" : "Rini Diyah Anggorowati"
}

$set adalah operator untuk mengganti (update) nilai suatu field. Jika field tidak tersedia maka oepartor $set akan membuat field tersebut.

Menghapus mahasiswa yang bernama Jokowi
db.mahasiswa.remove({nama:"Jokowi"})


Reff:
http://www.lp2maray,com
http://www.candra.web.id
https://docs.mongodb.com/manual/crud/

















Mongodb Is



Benarkah ia akan menggantkan database realational/RDBMS seperti mysql,oracle dll ????
Apakah database relasional tidak bisa digunakan saat ukuran datanya besar ?

Hmm....apa kelebihan kekurangan nya ? ….
Mari baca...baca an bacalah...iqro......

Database relasional adalah koleksi data terstruktur yang disajikan lewat tabel-tabel,
Dimana tabel-tabel tersebut dapat saling berhubungan (relasi).
Tentunya tipe ini adalah bentuk basis data yang konvensional.

Saat seseorang menyebut kata database, kemungkinan besar orang umum akan membayangkan database relasional (sekumpulan tabel-tabel dan relasinya).
contohnya Ms.Acess, MySQL, PostGreSQL, SqlLite, Microsoft Sql Server, dll.

RDBMS (Relasional Database Management System) fokus pada konsep ACID:
1. Atomicity: Suatu proses selesai secara menyeluruh/tidak.
2. Consistency: Semua proses (transaction) yang terjadi di database harus memiliki state yang jelas. Setiap data yang disimpan harus memenuhi semua constraint, Cascades, dan triggers.
3. Isolation: Sebuah proses tidak boleh mempengaruhi proses lain.
4. Durability: Proses yang  telah selesai harus bersifat permanen, walau aplikasinya di restart.

Sedangkan NoSQL adalah tipe penyimpanan data selain yang berwujud tabular (seperti tabel-tabel juga),
NoSQL tidak mengikuti prinsip (ACID) RDBMS sepenuhnya.

Jadi kalau bukan ACID, apakah prinsip utama NoSQL ? ya....dia memakai prinsip BASE:
1. Basic Availability: Setiap request sekedar mendapat garansi “response”: Sukses/Gagal.
2. Soft State: State NoSQL bisa berubah secara dinamis tanpa input manual untuk meyakinkan eventual consistency.
3. Eventual Consistency: Untuk “sementara” waktu NoSQL mungkin tidak konsisten (Akan diabahas kemudian maksud & contohnya).

NoSQL bukan berarti “No SQL” atau “bukan SQL”/tidak mendukung bahasa Query,
tapi “Not-Only SQL”.

Masudnya database NoSQL tetap memiliki (support) ‘semacam’ bahasa Query, namun dalam bentuk (terminology yang berbeda).
Beberapa literature bahkan tidak menggolongkan NoSQL sebagai suatu bentuk database.  NoSQL bisa berupa Document (e.g. MongoDB), Key-Value (e.g. CouchDB), Graph (e.g. Neo4J), dsb.


Berikut beberapa perbedaan terminologi dan padanannya:

Dalam konsep MongoDB tidak ada yang namanya tabel, kolom ataupun baris yang ada hanyalah collection (ibaratnya tabel), document (ibaratnya record). Data modelnya sendiri disebut BSON dengan struktur mirip dengan JSON. Strukturnya cukup mudah dibaca, contohnya seperti ini.

{
       "nama" : "riadi marta dinata",
       "kontak" : {
           "alamat" : "lp2maray.com",
           "kota" : "Jakarta",
           "kodepos" : "16424",
    "telp" : "085279959498",
       }
}
Dengan konsep key-value yang ada pada MongoDB, setiap document otomatis memiliki index id yang unik. Hal ini membantu mempercepat proses pencarian data secara global.

Kelebihan MongoDB

  1. Performa yang ditawarkan MongoDB lebih cepat dibandingkan MySQL ini disebabkan oleh memcached dan format dokumennya yang berbentuk seperti JSON
  2. Replikasi, adalah fitur yang sangat bermanfaat untuk backup data secara realtime. MongoDB sangat cocok digunakan untuk portal berita ataupun blog, namun belum cocok untuk digunakan pada sistem informasi yang berkaitan dengan keuangan karena MongoDB tidak mendukung transaction SQL
  3. Auto-sharding, merupakan fitur untuk memecah database yang besar menjadi beberapa bagian demi optimalisasi performa database. Penggunaannya sendiri sangat berguna ketika Anda memiliki website dengan database yang jutaan baris, sharding akan membantu memecahnya menjadi beberapa bagian
  4. MongoDB juga sudah mendukung C, C++, C#, Erlang, Haskell, Java, JavaScript, .NET(C# F#, PowerShell), Lips, Perl, PHP, Python, Ruby dan Scala 
  5. Cross-platform, sehingga dapat digunakan di Windows, Linux, OS X dan Solaris
  6. Proses CRUD (Create, Read, Update, Delete) terasa sangat ringan
  7. Map/Reduce, akan sangat membantu ketika kita melakukan operasi agregasi. Dimana semua entry datangnya dari collection dan outputnya pun akan menjadi collection juga. Kalau di MySQL biasanya kita menggunakan query GROUP BY
  8. GridFS, spesifikasi yang digunakan untuk menyimpan data yang sangat besar


Atau jika disederakanakn sbb:


1. Perbedaan utama yang menyolok antara SQL dan NoSQL ada di dalam cara penulisan database mereka. Jika SQL menggunakan relasional sebagai penyambung antara data – data di dalam tabel database mereka. Dan NoSQL tidak menggunakan Relasional sebagai cara mereka untuk menyambungkan antar data mereka. NoSQL menggunakan 4 metode dalam cara mereka untuk menstored data, Key Values stores, Document oriented, Table Oriented, dan terakhir Graph Oriented.

2. Perbedaan yang kedua NoSQL tidak menggunakan Schema relational, jika di dalam SQL kita harus mendefinisikan table yang akan digunakan. Berbeda dengan SQL, NoSQL tidak perlu untuk mendefinisikan terlebih dahulu Table yang akan digunakan.

3. Ketiga NoSQL memiliki kemampuan elastisa yang lebih baik dibandingkan SQL. Untuk menambah jumlah server basis data di dalam NoSQL lebih mudah.

4. Integrated Caching, NoSQl memiliki kemampuan untuk mentransformasikan data dengan lebih cepat hal ini dikarenakan NoSQL menggunakan cache-nya di dalam sistem memori.


Kekurangan MongoDB :

1. MongoDB harus diinstall di sebuah server.
2. MongoDB belum support di banyak hosting.
3. Tidak cocok untuk aplikasi proses transaksi.


Fitur utama dari mongoDB antara lain:

1. Model document-oriented storage
2. Dukungan penuh untuk indexing data
3. Mendukung replikasi database dan trafik data tinggi
4. Auto-sharding (partisi database otomatis)
5. Mendukung fitur map and reduce


Bilamana kita membutuhkan NoSQL (e.g. MongoDB) daripada database relasional (e.g. MySQL) dan sebaliknya ?
Pada saat apakah penggunaan NoSQL lebih cocok ketimbang database relasional  ?

Saat kita membutuhkan penyimpanan data yang “relatif” besar, namun terdapat keterbatasan resources (komputer/server). 

Mengapa saya tambahkan syarat “keterbatasan resources”? 
Karena sebenarnya relational database scalable adalah untuk data besar bahkan untuk skala >PetaByte (e.g. Facebook menggunakan MySQL). 

Namun demikian butuh resources yang sangat besar juga agar membuat database relasional memiliki performa yang baik akibat datanya besar tsb.

Solusinya dengan memakai data tidak terstruktur (dokumen) atau biasa disebut sebagai Schemaless Data Representation

Bayangkan data yang masuk ke database terkadang hanya memiliki 4 kolom, tapi dilain waktu memiliki jumlah kolom yang berbeda lagi. Artinya kita harus membuat tabel baru lagi dan baru lagi dst dst...

Pada kasus database relasional kejadian seperti ini akan memaksa kita mengubah struktur DB (schema) yang biasanya sangat fatal, terutama apabila datanya besar. 
Perubahan schema adalah bencana besar bagi sistem IT. Karena aplikasi harus direvisi mengikuti perubahan tersebut agar relationalnya nyambung...atau saling berkaitan...

Pada terminologi Big Data, ini terkait dengan “Variety”, yaitu semakin beragamnya tipe/struktur/format data yang masuk ke database.
NoSQL (MongoDB) sangat cocok dengan aplikasi yang berorientasi objek. Dengan tidak adanya Join di NoSQL dan query yang rumit, NoSQL terkenal mempercepat para developer dalam membangun sebuah aplikasi.

NoSQL sangat cocok bila aplikasi/system membutuhkan proses Write/Insert dalam jumlah yang sangat besar dan dalam waktu yang singkat. 

Dikaitkan dengan terminology di Big Data, NoSQL sangat cocok jika sistem kita memiliki Velocity data yang besar.

Data anda mengandung informasi lokasi (e.g. Latitude/Longitude).

Data complexity – data disimpan (& manage) tersebar di berbagai lokasi (data centres) yang berbeda (distributed).


Berikut beberapa contoh aplikasi/Web besar/terkenal yang menggunakan MongoDB sebagai gambaran untuk aplikasi seperti apakah ia cocok untuk digunakan: FourSquare, SourceForge, CraigList, BitLy, Forbes, Bosch, dll.


Bilamana NoSQL secara umum kurang cocok untuk digunakan:

Saat data yang diinput memiliki nilai yang sangat berharga (misal transaksi pemabayaran/transfer uang). NoSQL cepat dalam melakukan input namun tradeoff-nya ia tidak se-reliable tipe database lain.

Analytic: walau memiliki implementasi map reduce-nya sendiri, NoSQL bukan pengganti Hadoop atau analytic engine lainnya. Ia sifatnya komplementari (membantu) analytic engine.

Multi-Object Transactions: NoSQL (MongoDB) tidak mendukung input beberapa hal ke satu atau lebih “table”. Misal, MongoDB hanya support untuk penyimpanan ke sebuah dokumen.

Complex Query: Jika aplikasi yang dibangun membutuhkan query yang rumit (complex), biasanya NoSQL kurang cocok. Walau NoSQL memiliki querynya sendiri, namun lebih terbatas ketimbang database konvensional.

‘Nature’ dari datanya memang relasional (A==>nB, B==>nA).


Beberapa catatan penting lain :

NoSQL (e.g. MongoDB) bukanlah pengganti analytic engine seperti hadoop. 
NoSQL “umumnya” memerlukan memory lebih besar (beware).
Record yang dihapus di collection (noSQL) tidak langsung mengurangi ukuran file 
Diagram berikut ini menjelaskan lebih detail tentang berbagai tipe database yang ada saat ini:



FAQ:

Mengapa NoSQL tidak disarankan untuk transaksi berharga (Misal perbankan) ?
Bisa, tapi sebaiknya untuk data yang tidak crucial (Selain transaksi dengan nilai besar). 
Mengapa ? 

NoSQL (misal MongoDB) cepat, karena mengorbankan feature yg biasanya ada di database SQL. MongoDB hanya ACID compliance pada level document:

Artiny MongoDB tidak mendukung transactions — yaitu multiple update yg bisa di cancel (rolled back) dan ACID compliance.

Untuk meningkatkan performa insert, MongoDB tidak langsung write ke disk, ia simpan dulu di (virtual) memory (hence butuh more memory). 

Bayangkan user insert/update data, lalu ada pesan “insert/update success” , tapi kemudian ada failure (misal mati listrik/meledak smile emoticon ). 

maka data yang baru saja dimasukkan sebenarnya belum tersimpan di disk (hence durable issue). 

Tapi tentu saja ada NoSQL yg respect ACID transactions (misal CouchDB). 
Semua ada +/-nya masing². Jadi sebagai developer harus benar² memperhatikan kebutuhan.

All in All, trend teknologi Database kalau “menurut saya” beralih dari general purpose ke adhoc (specific).

Apakah Anda Gagal paham? jika ya...berartianda tidak sendirian..saya juga masih hehe....:-)


Perkembangan beberapa project Open Source untuk data besar:

Lucene: Java-based indexing dan search engine,

Hadoop: Untuk Reliable (terpercaya), scalable (Untuk data besar), distributed computing (data yang tidak terpusat),

Cassandra: Scalable, multi-master database with no single point of failure,

ZooKeeper: High performance coordination service for distributed applications,

Pig: High level dataflow language and execution framework for parallel computation.


INSTALASI MONGODB
Sebelum memulai, kita harus mengunduh dari link berikut ini (tersedia untuk 32-bit dan 64-bit) : http://www.mongodb.org/downloads

Untuk 32bit bisa juga dimari:
https://www.mongodb.org/dl/win32/i386

Setelah diunduh silahkan diekstrak di drive C (bisa juga di drive lainnya). Buatlah folder sebagai lokasi penyimpanan database misalnya folder DB, dengan path seperti ini :


Lalu di copas ke c:\ dan ubah nama foldernya menjadi (misalnya) Mongo


C:\Mongo\DB

Setelah folder di atas dibuat, lalu buka command prompt 



dan ketikkan perintah berikut ini:

C:\Mongo\bin>mongod –dbpath=C:\Mongo\DB

Jika ada error sbb:
2016-12-07T12:47:27.182+0700 I CONTROL  [main]
2016-12-07T12:47:27.183+0700 W CONTROL  [main] 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
2016-12-07T12:47:27.183+0700 I CONTROL  [main]
2016-12-07T12:47:27.188+0700 I CONTROL  [main] Hotfix KB2731284 or later update is not installed, will zero-out data files
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten] MongoDB starting : pid=324 port=27017 dbpath=c:\data\db\ 32-bit host=seven-PC
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten] targetMinOS: Windows Vista/Windows Server 2008
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten] db version v3.2.11-21-g9d33f57
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten] git version: 9d33f57c662bcae12326c693748ed11d07beb6ea
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten] allocator: tcmalloc
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten] modules: none
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten] build environment:
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten]     distarch: i386
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten]     target_arch: i386
2016-12-07T12:47:27.191+0700 I CONTROL  [initandlisten] options: {}
2016-12-07T12:47:27.192+0700 I STORAGE  [initandlisten] exception in initAndListen: 28663 Cannot start server. The default storage engine 'wiredTiger' is not available with this build of mongod. Please specify a different storage engine explicitly, e.g. --storageEngine=mmapv1., terminating
2016-12-07T12:47:27.192+0700 I CONTROL  [initandlisten] dbexit:  rc: 100

atau 

Silakan download versi  2xx atau dibawahnya...karena spesifikasi yag kita download mungkin versi untuk windows server xxx

Ok silakan download lagi terus extract dan mainkan.....copas di c:\ kasih nama Mongo
dan agar secara default nyambung...buatlah folder di c:\ dengan nama data\db
sehingga menjadi:

C:\data\db
lalu pada posisi C:\Mongo\bin\
ketik kembali 
mongod


Perintah di atas digunakan untuk menjalankan MongoDB, Agar selalu standby....jangan tutup jendela command prompt, tapi buka 1 lagi yang baru ( jadi ada 2 jendela command prompt dibuka). Ketik perintah berikut ini :

C:\Mongo\bin>mongo
MongoDB shell version: 2.6.3
connecting to: test
>


Untuk melihat database apa saja yang ada di MongoDB, ketikkan perintah berikut :

> show dbs;

Ingin menambahkan database baru? Coba ketik perintah ini (Anda dapat mengubah nama ‘universitas’ sesuai dengan nama yang Kita inginkan) :

> use universitas
switched to db universitas

Sekarang Kita sudah punya database universitas, sekarang saatnya kita membuat collection (bisa dianggap tabel) mahasiswa, caranya cukup mudah tak perlu membuat tipe data ataupun panjang data. Cukup ketik perintah seperti berikut ini :


> db.mahasiswa.save({nama:'Riadi Marta Dinata',NIM:'14002020',jurusan:'Sistem Informasi',Fakultas:'Teknologi Informasi'})

Dari perintah di atas kita sudah memiliki 1 data mahasiswa yaitu Riadi Marta Dinata. Intinya ketika kita membuat collection baru, kita juga sudah memiliki 1 data. Selanjutnya Kita bisa menambah data baru lagi, dengan perintah insert seperti ini :

>db.mahasiswa.insert({nama:'Khanza Humaira Dinata',NIM:'09325336',jurusan:'Sistem Infomasi',Fakultas:'Teknologi Informasi'})

Berarti kita sudah punya 2 baris data, nah kita juga bisa menampilkan data yang sudah Anda simpan tadi dengan perintah berikut :

> db.mahasiswa.find()

Maka datanya akan tampil seperti ini :

{ “_id” : ObjectId(“459c98a2d342c633c50c8eaa”), “nama” : ”Riadi Marta Dinata”, “NIM” :”14002020?, “jurusan” : “Sistem Informasi”, “Fakultas” : “Teknologi Informasi” }
{ “_id” : ObjectId(“459c995fd342c633c50c8eab”), “nama” : “Khanza Humaira Dinata”, “NIM” : “09325336?, “jurusan” : “Sistem Informasi”, “Fakultas” : “Teknologi Informasi” }

Nah, kok tiba-tiba muncul id ya? Kalau di MySQL itu namanya Primary Key yang harus dibuat, tapi di MongoDB, id muncul otomatis berikut datanya.
Selanjutnya kita akan mencoba untuk mengedit data, coba ketik perintah ini :

> person=db.mahasiswa.findOne({NIM:'14002020'})
{
"_id" : ObjectId("141a01ff14160055c633c50c8eaa"),
"nama" : "Riadi Marta Dinata",
"NIM" : "14002020",
"jurusan" : "Sistem Informasi",
"Fakultas" : "Teknologi Informasi"
}
> person.jurusan='Teknik Informatika'
> db.mahasiswa.save(person);

Sedangkan perintah untuk menghapus data bisa dengan cara seperti ini :

db.mahasiswa.remove({NIM:'14002020'})


Ohhhhh...Mudah yaaaaaaaa.....


+++++++++++++++++

Jika ada pesan error :

C:\Program Files\MongoDB\Server\3.4\bin>mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
2017-09-03T18:35:07.889+0700 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017 after 5000ms milliseconds, giving up.
2017-09-03T18:35:08.017+0700 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6


Solusi pada windows:


C:\Program Files\MongoDB\Server\3.4\bin>mkdir c:\mongo\data\db

C:\Program Files\MongoDB\Server\3.4\bin>mongod.exe --install --logpath c:\mongo\logs --logappend --bind_ip 127.0.0.1 --dbpath c:\mongo\data\db --directoryperdb

C:\Program Files\MongoDB\Server\3.4\bin>net start MongoDB
The MongoDB service is starting...
The MongoDB service was started successfully.


C:\Program Files\MongoDB\Server\3.4\bin>mongo.exe
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
Server has startup warnings:
2017-09-03T19:40:25.940+0700 I CONTROL  [initandlisten]
2017-09-03T19:40:25.940+0700 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-09-03T19:40:25.940+0700 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-09-03T19:40:25.940+0700 I CONTROL  [initandlisten]
MongoDB Enterprise >


  1. Buat directory:
    mkdir c:\mongo\data\db
  2. Buat service:
    mongod.exe --install --logpath c:\mongo\logs --logappend --bind_ip 127.0.0.1 --dbpath c:\mongo\data\db --directoryperdb
  3. Aktifkan MongoDB:
    net start MongoDB
4.Mankan Mongo Shell dari bin-nya:
Lalu setting path nya:
cd C:\Program Files\MongoDB\Server\3.4\bin

C:\Program Files\MongoDB\Server\3.4\bin>mongod -dbpath=C:\mongo\data\db

C:\Program Files\MongoDB\Server\3.4\bin>mongo

maka mongodb akan aktif dan standby



C:\Program Files\MongoDB\Server\3.4\bin>mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Server has startup warnings:
2017-09-03T19:40:25.940+0700 I CONTROL  [initandlisten]
2017-09-03T19:40:25.940+0700 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-09-03T19:40:25.940+0700 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-09-03T19:40:25.940+0700 I CONTROL  [initandlisten]
MongoDB Enterprise > show dbs
admin  0.000GB
local  0.000GB
MongoDB Enterprise >

selanjutnya mainkannnnnnnnnnnnnnnnnn.......