Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Entendiendo y adoptando MongoDB

Entendiendo y adoptando MongoDB

Esta presentación tuvo lugar en ULADECH por motivo del FLISOL 2012 - Sede Chimbote.

Jorge Puente-Sarrín

April 28, 2012
Tweet

More Decks by Jorge Puente-Sarrín

Other Decks in Technology

Transcript

  1. NoSQL No relacional, distribuido, horizontalmente escalable y OpenSource Tipos: •Llave-valor

    y tuplas •Grafos •Orientados a columnas •Orientados a objetos •Orientado a documentos •Multimodelos IndexedDB
  2. MongoDB •Orientado a documentos – BSON (bsonspec.org) •Escrito en C++

    •Multiplataforma •RESTful API •Escalable •Fire-and-forget RDBMS MongoDB Tabla Colección Fila Documento Índice Índice
  3. Comandos básicos db.listCommands() db.runCommand() db.getLastError() db.stats() db.serverStatus() db.repairDatabase() db.getCollection('[collection]') db.getCollectionNames()

    db.[collection].getIndexes() db.help() Muestra todos los comandos. Ejecuta el comando ingresado como parámetro. db.runCommand({listDatabases: 1});
  4. Operaciones básicas CREATE TABLE Empleado ( IdEmpleado BIGINT IDENTITY(1,1) NOT

    NULL, Nombre VARCHAR(15) NULL, Email VARCHAR(MAX) NULL, Posicion CHAR(4) NULL ) INSERT INTO Empleado(Nombre, Email, Posicion) VALUES('Mirko Manrique', '[email protected]', 'Docente universitario'); { “nombre”: “Mirko Manrique”, “email”: “[email protected]”, “posicion”: “Docente universitario” } db.empleado.insert({“nombre”: “Mirko Manrique”, “email”: “[email protected]”, “posicion”: “Docente universitario”}); MongoDB SQL
  5. Operaciones básicas SELECT IdEmpleado, Nombre, Email, Posicion FROM Empleado; db.empleado.find();

    db.empleado.find({ “email”: /^m/ }); UDPATE Empleado SET Posicion='Analista de calidad' WHERE Email='mirko. [email protected]'; db.empleado.update({ “email”: “[email protected]” }, { “$set”: { “posicion”: “Analista de calidad” } }); db.empleado.update({ “email”: “[email protected]” }, { “$set”: { “posicion”: “Analista de calidad” } }, false); //upsert parameter db.empleado.update({ “email”: “[email protected]” }, { “$set”: { “posicion”: “Analista de calidad” } }, false, true); //multi parameter MongoDB SQL MongoDB SQL $set $unset $inc $push $pushAll $addToS et $pop $pull $pullAll
  6. Operaciones básicas DELETE FROM Empleado WHERE Email='[email protected]'; DELETE FROM Empleado;

    TRUNCATE TABLE Empleado; db.empleado.remove({"email":"[email protected]"}); db.empleado.remove(); MongoDB SQL
  7. Diseño de modelos Embedded document: Colleción de posts: { "_id":

    ObjectId("4f9c31753d32831252000000"), "text": "Mi primer post" "comments": [ { "date": ISODate("2012-04-28T13:49:33.512 Z"), "text": "Cool" }, { "date": ISODate("2012-04-28T13:49:38.719 Z"), "text": "Genial" } ], "date": ISODate("2012-04-28T13:05:41.137Z"), "likes": 5 } Index Linked Colección de posts: { "_id": ObjectId("4f9c31753d32831252000000"), "text": "Mi primer post", "date": ISODate("2012-04-28T13:05:41.137Z"), "likes": 5 } Colección de comentarios: { "_id": ObjectId("4f9c31753d32781252000000"), "postid": ObjectId("4f9c31753d32831252000000"), "date": ISODate("2012-04-28T13:49:33.512Z"), "text": "Cool" }, { "_id": ObjectId("4f9c31753d32565465000000"), "postid": ObjectId("4f9c31753d32831252000000"), "date": ISODate("2012-04-28T13:49:38.719Z"), "text": "Genial" }
  8. GridFS Almacenamiento de archivos con MongoDB. /* * default root

    collection usage - must be supported */ GridFS myFS = new GridFS(myDatabase); // returns a default GridFS (e.g. "fs" root collection) myFS.storeFile(new File("/tmp/largething.mpg")); // saves the file into the "fs" GridFS store /* * specified root collection usage - optional */ GridFS myContracts = new GridFS(myDatabase, "contracts"); // returns a GridFS where "contracts" is root myFS.retrieveFile("smithco", new File("/tmp/smithco_20090105.pdf")); // retrieves object whose filename is "smithco" http://www.mongodb.org/display/DOCS/GridFS
  9. Drivers Oficiales: •C •C++ •Erlang •Haskell •Java •Javascript •.NET (C#

    F#, PowerShell, etc) •Perl •PHP •Python •Ruby •Scala Desarrollados por la comunidad: •Delphi •Go •Lisp •Lua •Objective-C •R