Julián Duque
Developer and Educator
Julián Duque : @julian_duque
Alex Ramirez : @RamirezAlex_
$ npm install pg
$ npm install mysql
$ npm install mariasql
$ npm install sqlite2
$ npm install sequelize
$ npm install redis
$ npm install hiredis
$ npm install request
$ npm install nano
$ npm install firebase
Es un sistema de base de datos NoSQL orientado a documentos En vez de
guardar los datos en tablas como se hace en las base de datos
relacionales, MongoDB guarda estructuras de datos en documentos tipo
JSON con un esquema dinámico (MongoDB llama ese formato BSON - Binary
JSON)
Document
Let's face it, writing MongoDB validation, casting and business logicboilerplate is a drag. That's why we wrote Mongoose.
// Dependencies - Driver
var mongoose = require('mongoose');
// Connection
mongoose.connect('mongodb://localhost/7db');
var db = mongoose.connection;
db.on('error',console.error.bind(console,'connection error:'));
db.once('open', function callback(){
console.log('Connected');
});
// Schema
var dogSchema = mongoose.Schema({ name: String });
// Model
var Dog = mongoose.model('Dog', dogSchema);
// Instanciate 2 new dogs.
var basko = new Dog({ name: 'Basko' }); var matilda = new Dog({ name: 'Matilda' });
// Save dogs in db
basko.save(function(err, basko){ if(err) return console.error(err);
console.log(basko.name + " was saved!");
});
matilda.save();
Queries
// Query all dogs
Dog.find(function (err, dogs){
if(err) return console.error(err);
console.log(dogs);
});
// Find dogs starting with 'Bas'
Dog.find({ name: /^Bas/ }, function(err,dogs){
// console.log(dogs);
});
// Delete
Dog.find({ _id: '53574eaac1c57183679370b9' }).remove().exec();
r.db('Disney')
.table('StarWars')
.get('Luke')
.update({'father':'Vader'})
.run()
Cuando se necesitan schemas de manera distribuída que van a estar en nodo o en un cluster de hasta 16 nodos
Cuando no es bueno usar RethinkDB
Cuando se necesitan schemas que requieran ACID
$ npm install rethinkdb
// Connection
var r = require('rethinkdb');
r.connect({
host: 'localhost',
port: 28015,
db: 'marvel',
authKey: 'hunter2' }, function(err, conn) { ... });
// Insert
r.table("posts")
.insert({ id: 1,
title: "Lorem ipsum",
content: "Dolor sit amet"
}).run(conn, callback);
// Update
r.table("posts")
.get(1)
.update({status: "published"})
.run(conn, callback);
// Delete
r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59")
.delete().run(conn, callback);
var level = require('levelup');
var db = level('./DatabaseDirectory');
db.put('key', 'value', function (err) { /* ... */ });
db.get('key', function(error, data){ //data == 'value' });
db.del('key' , function (err) { /* ... */ });
// a Batch operation made up of 3 Puts
db.batch([
{ type: 'put', key: 'spouse', value: 'Ri Sol-ju' }
, { type: 'put', key: 'dob', value: '8 January 1983' }
, { type: 'put', key: 'occupation', value: 'Clown' }
], function (err) {
});
By Julián Duque