SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
´
                Introduccion
                   MongoDB
               Conclusiones




              ´
Una introduccion a NoSQL con MongoDB

                          ´
             Antonio Nicolas Pina




        Murcia, 23 de mayo de 2012



                      ´
         Antonio Nicolas Pina                 ´
                                Una introduccion a NoSQL con MongoDB   1 / 23
´
                           Introduccion
                                           Problemas a evitar
                              MongoDB
                                           Bases de datos
                          Conclusiones


Fallos hardware


  Tolerancia a fallos
     ´
  ¿Como debemos actuar ante un fallo?

                       ´
  El peor fallo ocurrira en el peor momento, sobre todo en una
                                                           ´
  startup. Es obligatorio disponer de protocolos de actuacion.

               ´
  Disponer de mas servidores empeora las cosas
  La probabilidad de que un fallo ocurra es directamente
  proporcional al numero de servidores que manejemos y a la
                   ´
  carga que soporten.



                                 ´
                    Antonio Nicolas Pina                 ´
                                           Una introduccion a NoSQL con MongoDB   2 / 23
´
                           Introduccion
                                           Problemas a evitar
                              MongoDB
                                           Bases de datos
                          Conclusiones


Requisitos inesperados


  La unica constante es el cambio
      ´
                     ´                     ´
  Si nuestra aplicacion funciona bien, habra que modificarla.

             ´                   ´
  Cuanto mas grande seamos, mas cambios sobre el diseno ˜
                                   ´               ´
  inicial deberemos acometer, y mas complicados seran los
  mismos.

  Un ’alter table’ tiene un alto coste
  Deben evitarse a toda costa, bloquean la base de datos
  mientras se ejecutan.



                                 ´
                    Antonio Nicolas Pina                 ´
                                           Una introduccion a NoSQL con MongoDB   3 / 23
´
                      Introduccion
                                      Problemas a evitar
                         MongoDB
                                      Bases de datos
                     Conclusiones


Tipos de bases de datos




              Figura: Tipos de bases de datos.


                            ´
               Antonio Nicolas Pina                 ´
                                      Una introduccion a NoSQL con MongoDB   4 / 23
´
                          Introduccion
                                          Problemas a evitar
                             MongoDB
                                          Bases de datos
                         Conclusiones


RDBMS


 MySQL
     ´
 La mas popular. MariaDB es un fork de MySQL, creado tras la
 compra de Sun por Oracle.

 PostgreSQL
 Algunos dicen que la mejor.

 Oracle
                             ´
 La base de datos privativa mas utilizada y conocida.




                                ´
                   Antonio Nicolas Pina                 ´
                                          Una introduccion a NoSQL con MongoDB   5 / 23
´
                         Introduccion
                                         Problemas a evitar
                            MongoDB
                                         Bases de datos
                        Conclusiones


NoSQL


 Orientadas a documentos
 MongoDB, Cassandra, CouchDB.

 Clave-valor
 Memcachedb, Redis.

 Muchos otros subtipos
 Orientadas a grafos como Neo4j; orientadas a columnas, como
 BigTable, etc.




                               ´
                  Antonio Nicolas Pina                 ´
                                         Una introduccion a NoSQL con MongoDB   6 / 23
´
                       Introduccion                           ˜
                                       Caracter´sticas de diseno
                                               ı
                          MongoDB      Estructura de la base de datos
                      Conclusiones     Programacion´


                  ˜
Principios de diseno




               ´
           ¿Que quieren los
           programadores?



                             ´
                Antonio Nicolas Pina                 ´
                                       Una introduccion a NoSQL con MongoDB   7 / 23
´
                       Introduccion                           ˜
                                       Caracter´sticas de diseno
                                               ı
                          MongoDB      Estructura de la base de datos
                      Conclusiones     Programacion´


                  ˜
Principios de diseno




                             ´
                Antonio Nicolas Pina                 ´
                                       Una introduccion a NoSQL con MongoDB   8 / 23
´
                           Introduccion                           ˜
                                           Caracter´sticas de diseno
                                                   ı
                              MongoDB      Estructura de la base de datos
                          Conclusiones     Programacion´


Facilidad

  Aprendizaje
                                                    ´
  Muchos conceptos de RDBMS se mantienen, haciendo facil e
                      ´
  intuitiva la migracion.

           ´                ´
  Instalacion y administracion
                                                ´     ´
  Para ello, la base de datos tiene que ser lo mas autonoma
  posible.

            ´
  Programacion
                      ˜                          ´
  Los drivers son disenados para que su uso sea comodo para el
  programador.


                                 ´
                    Antonio Nicolas Pina                 ´
                                           Una introduccion a NoSQL con MongoDB   9 / 23
´
                           Introduccion                           ˜
                                           Caracter´sticas de diseno
                                                   ı
                              MongoDB      Estructura de la base de datos
                          Conclusiones     Programacion´


Alto rendimiento

  No JOINs
                           ´
  Un JOIN es una operacion muy costosa, es mejor evitarlos en
  la medida de lo posible.

            ´
  Organizacion de datos adecuada
  La forma de estructurar los datos debe propiciar un acceso
  eficiente.

  No transacciones
  Las transacciones suponen un gran esfuerzo para la base de
  datos.


                                 ´
                    Antonio Nicolas Pina                 ´
                                           Una introduccion a NoSQL con MongoDB   10 / 23
´
                        Introduccion                           ˜
                                        Caracter´sticas de diseno
                                                ı
                           MongoDB      Estructura de la base de datos
                       Conclusiones     Programacion´


Nomenclatura



          No se llama                                    Se llama
  Base de datos
  Tabla
  Fila
  Indice
        Cuadro: Nomenclatura de elementos en MongoDB.




                              ´
                 Antonio Nicolas Pina                 ´
                                        Una introduccion a NoSQL con MongoDB   11 / 23
´
                        Introduccion                           ˜
                                        Caracter´sticas de diseno
                                                ı
                           MongoDB      Estructura de la base de datos
                       Conclusiones     Programacion´


Nomenclatura



          No se llama                            Se llama
  Base de datos                         Base de datos
  Tabla
  Fila
  Indice
        Cuadro: Nomenclatura de elementos en MongoDB.




                              ´
                 Antonio Nicolas Pina                 ´
                                        Una introduccion a NoSQL con MongoDB   11 / 23
´
                        Introduccion                           ˜
                                        Caracter´sticas de diseno
                                                ı
                           MongoDB      Estructura de la base de datos
                       Conclusiones     Programacion´


Nomenclatura



          No se llama                             Se llama
  Base de datos                         Base de datos
  Tabla                                        ´
                                        Coleccion
  Fila
  Indice
        Cuadro: Nomenclatura de elementos en MongoDB.




                              ´
                 Antonio Nicolas Pina                 ´
                                        Una introduccion a NoSQL con MongoDB   11 / 23
´
                        Introduccion                           ˜
                                        Caracter´sticas de diseno
                                                ı
                           MongoDB      Estructura de la base de datos
                       Conclusiones     Programacion´


Nomenclatura



          No se llama                             Se llama
  Base de datos                         Base de datos
  Tabla                                        ´
                                        Coleccion
  Fila                                  Documento
  Indice
        Cuadro: Nomenclatura de elementos en MongoDB.




                              ´
                 Antonio Nicolas Pina                 ´
                                        Una introduccion a NoSQL con MongoDB   11 / 23
´
                        Introduccion                           ˜
                                        Caracter´sticas de diseno
                                                ı
                           MongoDB      Estructura de la base de datos
                       Conclusiones     Programacion´


Nomenclatura



          No se llama                             Se llama
  Base de datos                         Base de datos
  Tabla                                        ´
                                        Coleccion
  Fila                                  Documento
  Indice                                Indice
        Cuadro: Nomenclatura de elementos en MongoDB.




                              ´
                 Antonio Nicolas Pina                 ´
                                        Una introduccion a NoSQL con MongoDB   11 / 23
´
                      Introduccion                           ˜
                                      Caracter´sticas de diseno
                                              ı
                         MongoDB      Estructura de la base de datos
                     Conclusiones     Programacion´


Forma de un documento

{
    _id: ObjectId("4fb0239b963a756b48000000"),
    name: "ANPez",
    nacimiento: ISODate("1985-12-15T18:25:01.0Z"),
    busca_trabajo: true,
    gustos: ["musica", "formula1"]
    experiencia:
    {
        nosql: 1.7,
        php: 3.4,
        emacs: 0.3
    }
}

                            ´
               Antonio Nicolas Pina                 ´
                                      Una introduccion a NoSQL con MongoDB   12 / 23
´
                           Introduccion                           ˜
                                           Caracter´sticas de diseno
                                                   ı
                              MongoDB      Estructura de la base de datos
                          Conclusiones     Programacion´


Tipos (I)

  Fuertemente tipada
  MongoDB maneja tipos, as´ que cuidado en lenguajes de
                          ı
  scripting como PHP.

                   ´
  Orden de evaluacion de tipos
                                                         ´
  Debido a lo anterior, se establece un orden de evaluacion. Esto
  es, un entero se compara primero con enteros, y luego con
  floats, pero nunca con cadenas de texto.

  UTF8, UTF8 everywhere
  MongoDB no entiende cadenas que no sean UTF8, aunque se
                                       ´
  pueden almacenar, el servidor no sabra trabajar con ellas.

                                 ´
                    Antonio Nicolas Pina                 ´
                                           Una introduccion a NoSQL con MongoDB   13 / 23
´
                           Introduccion                           ˜
                                           Caracter´sticas de diseno
                                                   ı
                              MongoDB      Estructura de la base de datos
                          Conclusiones     Programacion´


Tipos (y II)

  Fechas en UTC
  Las fechas no almacenan la zona horaria, si la queremos, la
  debemos guardar nosotros aparte.

  Arrays y subdocumentos
            ´
  La parte mas interesante, nos permiten anidar tanto como
  queramos y desnormalizar nuestros datos.

  L´mites
   ı
                         ´
  No podemos almacenar mas de 16MB por documento.
           ´
  Tampoco mas de 2GB en un servidor de 32 bits.


                                 ´
                    Antonio Nicolas Pina                 ´
                                           Una introduccion a NoSQL con MongoDB   14 / 23
´
                         Introduccion                           ˜
                                         Caracter´sticas de diseno
                                                 ı
                            MongoDB      Estructura de la base de datos
                        Conclusiones     Programacion´


ObjectId
     Reemplazo eficiente del autoincrement de MySQL.
         ´    ˜
     Esta disenado para no ser bloqueante y a la vez ser unico
                                                         ´
     e incremental.
     Longitud de 12 bytes, nos da
                        212∗8 = 296 ≈ 7,9 ∗ 1028
     documentos diferentes.
     Compuesto por varias partes:
              4fb0239b 963a75 6b48 000000

     Timestamp.
     Machine Id.
     Process Id.
     Autoincrement.

                               ´
                  Antonio Nicolas Pina                 ´
                                         Una introduccion a NoSQL con MongoDB   15 / 23
´
                         Introduccion                           ˜
                                         Caracter´sticas de diseno
                                                 ı
                            MongoDB      Estructura de la base de datos
                        Conclusiones     Programacion´


Escalabilidad




           Figura: Arquitectura completa con sharding.
                               ´
                  Antonio Nicolas Pina                 ´
                                         Una introduccion a NoSQL con MongoDB   16 / 23
´
                      Introduccion                           ˜
                                      Caracter´sticas de diseno
                                              ı
                         MongoDB      Estructura de la base de datos
                     Conclusiones     Programacion´


 ˜                             ´
Anadir documentos a una coleccion

db.users.insert
({
    name: "ANPez",
    nacimiento: ISODate("1985-12-15T18:25:01.0Z"),
    busca_trabajo: true,
    gustos: ["musica", "formula1"]
    experiencia:
    {
        nosql: 1.7,
        php: 3.4,
        emacs: 0.3
    }
});

                            ´
               Antonio Nicolas Pina                 ´
                                      Una introduccion a NoSQL con MongoDB   17 / 23
´
                      Introduccion                           ˜
                                      Caracter´sticas de diseno
                                              ı
                         MongoDB      Estructura de la base de datos
                     Conclusiones     Programacion´


Recuperar y eliminar documentos


rs.slaveOk();
var user = db.users.findOne
({
    name: "ANPez",
    experiencia.php:
    {
        $gt: 3
    }
}).sort({nacimiento: -1});

db.good_databases.remove({_id: mysql._id});



                            ´
               Antonio Nicolas Pina                 ´
                                      Una introduccion a NoSQL con MongoDB   18 / 23
´
                      Introduccion                           ˜
                                      Caracter´sticas de diseno
                                              ı
                         MongoDB      Estructura de la base de datos
                     Conclusiones     Programacion´


Actualizando documentos



db.users.update
(
    {
        name: "ANPez"
    },
    {
        experiencia.charlas: 1
    }
);




                            ´
               Antonio Nicolas Pina                 ´
                                      Una introduccion a NoSQL con MongoDB   19 / 23
´
                         Introduccion                           ˜
                                         Caracter´sticas de diseno
                                                 ı
                            MongoDB      Estructura de la base de datos
                        Conclusiones     Programacion´


Actualizando documentos

db.users.update
(
    {
        name: "ANPez"
    },
    {
        experiencia.charlas: 1
    }
);

                        ´                        ´
     ¡MAL! Sobreescribira todo el documento, no solo ese
     campo.


                               ´
                  Antonio Nicolas Pina                 ´
                                         Una introduccion a NoSQL con MongoDB   19 / 23
´
                      Introduccion                           ˜
                                      Caracter´sticas de diseno
                                              ı
                         MongoDB      Estructura de la base de datos
                     Conclusiones     Programacion´


Actualizando documentos

db.users.update
(
    {
        name: "ANPez"
    },
    {
        $set:
        {
            experiencia.charlas: 1
        }
    }
);


                            ´
               Antonio Nicolas Pina                 ´
                                      Una introduccion a NoSQL con MongoDB   20 / 23
´
                                    Introduccion                           ˜
                                                    Caracter´sticas de diseno
                                                            ı
                                       MongoDB      Estructura de la base de datos
                                   Conclusiones     Programacion´


      ´
¡¿Y que hago yo sin bloqueos?!

 1   f o r ( $ i = 0 ; $ i < 3 ; ++ $ i )
 2   {
 3           $promo = $ t h i s −>m−>promo−>g e t ( $code ) ;
 4
 5        / / T r a b a j a r con e l c o n t e n i d o de $promo .
 6
 7        i f ( $ t h i s −>m−>promo−>consume ( $code , $promo [ ’ l e f t ’ ] ) )
 8        {
 9              break ; / / The update t o o k p l a c e .
10        }
11
12        / / Another user i s u p d a t i n g c o n c u r r e n t l y , r e t r y .
13        usleep ( 1 0 0 0 ) ;
14   }




                                          ´
                             Antonio Nicolas Pina                 ´
                                                    Una introduccion a NoSQL con MongoDB   21 / 23
´
                      Introduccion                           ˜
                                      Caracter´sticas de diseno
                                              ı
                         MongoDB      Estructura de la base de datos
                     Conclusiones     Programacion´


O mejor aun: findAndModify
         ´

var promo = db.users.findAndModify
({
    query:
    {
        promo: "promocode",
        left: {$gt: 0}
    },
    update:
    {
        $dec: {left:1}
    },
    new: false
});

                            ´
               Antonio Nicolas Pina                 ´
                                      Una introduccion a NoSQL con MongoDB   22 / 23
´
                           Introduccion
                              MongoDB      Conclusiones
                          Conclusiones


Conclusiones


      ˜
  Disenada para web
                       ˜
  MongoDB ha sido disenada para la web, y es la base de datos
   ´
  mas adecuada para la mayor parte de proyectos.

  A pesar de ser muy joven, tiene un gran soporte y estabilidad.
                        ´
  Con cada nueva version se introducen nuevas e interesantes
                                                  ´
  caracter´sticas (Aggregation framework aparecera en 2.2).
          ı

  Tiene algunas peculiaridades y trucos que es preciso conocer,
  pero en general tiene un manejo sencillo e intuitivo.



                                 ´
                    Antonio Nicolas Pina                 ´
                                           Una introduccion a NoSQL con MongoDB   23 / 23

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Modern Web Development
Modern Web DevelopmentModern Web Development
Modern Web Development
 
React / Redux Architectures
React / Redux ArchitecturesReact / Redux Architectures
React / Redux Architectures
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case study
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
Git Workflow With Gitflow
Git Workflow With GitflowGit Workflow With Gitflow
Git Workflow With Gitflow
 
GDI - Intro to WordPress
GDI - Intro to WordPressGDI - Intro to WordPress
GDI - Intro to WordPress
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
MongoDB WiredTiger Internals: Journey To Transactions
  MongoDB WiredTiger Internals: Journey To Transactions  MongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To Transactions
 
Full stack web development
Full stack web developmentFull stack web development
Full stack web development
 
Tipos de archivos y extensiones
Tipos de archivos y extensionesTipos de archivos y extensiones
Tipos de archivos y extensiones
 
Jenkins
JenkinsJenkins
Jenkins
 
Introduction to Joomla
Introduction to JoomlaIntroduction to Joomla
Introduction to Joomla
 
Node js
Node jsNode js
Node js
 
Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_js
 
Php ppt
Php pptPhp ppt
Php ppt
 
WEB DEVELOPMENT.pptx
WEB DEVELOPMENT.pptxWEB DEVELOPMENT.pptx
WEB DEVELOPMENT.pptx
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Hibernate presentation
Hibernate presentationHibernate presentation
Hibernate presentation
 
React web development
React web developmentReact web development
React web development
 
Html5-Web-Storage
Html5-Web-StorageHtml5-Web-Storage
Html5-Web-Storage
 

Destacado

NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBVictor Cuervo
 
Filtrado con grep y cut
Filtrado con grep y cutFiltrado con grep y cut
Filtrado con grep y cutermendalirenda
 
Tema1 redhat
Tema1 redhatTema1 redhat
Tema1 redhatmmartinv
 
Introducción a NoSQL y MongoDB Webinar
Introducción a NoSQL y MongoDB WebinarIntroducción a NoSQL y MongoDB Webinar
Introducción a NoSQL y MongoDB WebinarMongoDB
 
Mongo db
Mongo dbMongo db
Mongo dbUPCI
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db.. ..
 
Modificación de registros comando sed
Modificación de registros   comando sedModificación de registros   comando sed
Modificación de registros comando sedPablo Macon
 
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASHCOMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASHUniversidad de Guayaquil
 
Rutas absolutas y relativas
Rutas absolutas y relativasRutas absolutas y relativas
Rutas absolutas y relativasermendalirenda
 

Destacado (17)

MongoDB Avanzado
MongoDB AvanzadoMongoDB Avanzado
MongoDB Avanzado
 
NoSQL - MongoDB
NoSQL - MongoDBNoSQL - MongoDB
NoSQL - MongoDB
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDB
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
Filtrado con grep y cut
Filtrado con grep y cutFiltrado con grep y cut
Filtrado con grep y cut
 
Tema1 redhat
Tema1 redhatTema1 redhat
Tema1 redhat
 
Introducción a NoSQL y MongoDB Webinar
Introducción a NoSQL y MongoDB WebinarIntroducción a NoSQL y MongoDB Webinar
Introducción a NoSQL y MongoDB Webinar
 
Mongo db
Mongo dbMongo db
Mongo db
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
Shell exposición
Shell exposiciónShell exposición
Shell exposición
 
NoSql y MongoDB
NoSql y MongoDBNoSql y MongoDB
NoSql y MongoDB
 
Modificación de registros comando sed
Modificación de registros   comando sedModificación de registros   comando sed
Modificación de registros comando sed
 
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASHCOMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
 
Rutas absolutas y relativas
Rutas absolutas y relativasRutas absolutas y relativas
Rutas absolutas y relativas
 
Linux Programacion en Shell
Linux Programacion en ShellLinux Programacion en Shell
Linux Programacion en Shell
 
MongoDB: la BBDD NoSQL más popular del mercado
MongoDB: la BBDD NoSQL más popular del mercadoMongoDB: la BBDD NoSQL más popular del mercado
MongoDB: la BBDD NoSQL más popular del mercado
 
Graficos de control
Graficos de controlGraficos de control
Graficos de control
 

Similar a Introducción a NoSQL con MongoDB

Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9Daniel Moo Moo
 
Lunch & Learn: El poder de las NoSQL con mongoDB
Lunch & Learn:  El poder de las NoSQL con mongoDBLunch & Learn:  El poder de las NoSQL con mongoDB
Lunch & Learn: El poder de las NoSQL con mongoDBSoftware Guru
 
Presentacion taller de programacion
Presentacion taller de programacionPresentacion taller de programacion
Presentacion taller de programacionSaulSoto19
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrolloJuan Ladetto
 
NodeJS y MongoDB
NodeJS y MongoDBNodeJS y MongoDB
NodeJS y MongoDBArsys
 
ANALISIS DE BI CON Y SIN BD se comapara.pdf
ANALISIS DE BI CON Y SIN BD se comapara.pdfANALISIS DE BI CON Y SIN BD se comapara.pdf
ANALISIS DE BI CON Y SIN BD se comapara.pdfexpertoleonelmartine
 
NoSQL: Un Cambio de Paradigma - Apache Cassandra
NoSQL: Un Cambio de Paradigma - Apache CassandraNoSQL: Un Cambio de Paradigma - Apache Cassandra
NoSQL: Un Cambio de Paradigma - Apache CassandraWladimir Cabarcas
 
No más "programación copy&paste". Generación automática de código con MOSKitt
No más "programación copy&paste". Generación automática de código con MOSKittNo más "programación copy&paste". Generación automática de código con MOSKitt
No más "programación copy&paste". Generación automática de código con MOSKittJavier Muñoz
 
Capitulo 8 soporte spring jdbc 0
Capitulo 8   soporte spring jdbc 0Capitulo 8   soporte spring jdbc 0
Capitulo 8 soporte spring jdbc 0Carlos Zambrano
 
Dprn3 u3 a1_vimu
Dprn3 u3 a1_vimuDprn3 u3 a1_vimu
Dprn3 u3 a1_vimuvicmanull
 

Similar a Introducción a NoSQL con MongoDB (20)

Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9
 
Tarea de Tarea taller de base de datos
Tarea de Tarea taller de base de datosTarea de Tarea taller de base de datos
Tarea de Tarea taller de base de datos
 
Lunch & Learn: El poder de las NoSQL con mongoDB
Lunch & Learn:  El poder de las NoSQL con mongoDBLunch & Learn:  El poder de las NoSQL con mongoDB
Lunch & Learn: El poder de las NoSQL con mongoDB
 
Presentacion taller de programacion
Presentacion taller de programacionPresentacion taller de programacion
Presentacion taller de programacion
 
MVC
MVCMVC
MVC
 
Mongodb
MongodbMongodb
Mongodb
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 
¿que es mongodb?
¿que es mongodb?¿que es mongodb?
¿que es mongodb?
 
NodeJS y MongoDB
NodeJS y MongoDBNodeJS y MongoDB
NodeJS y MongoDB
 
ANALISIS DE BI CON Y SIN BD se comapara.pdf
ANALISIS DE BI CON Y SIN BD se comapara.pdfANALISIS DE BI CON Y SIN BD se comapara.pdf
ANALISIS DE BI CON Y SIN BD se comapara.pdf
 
NoSQL: Un Cambio de Paradigma - Apache Cassandra
NoSQL: Un Cambio de Paradigma - Apache CassandraNoSQL: Un Cambio de Paradigma - Apache Cassandra
NoSQL: Un Cambio de Paradigma - Apache Cassandra
 
No más "programación copy&paste". Generación automática de código con MOSKitt
No más "programación copy&paste". Generación automática de código con MOSKittNo más "programación copy&paste". Generación automática de código con MOSKitt
No más "programación copy&paste". Generación automática de código con MOSKitt
 
Meteor
MeteorMeteor
Meteor
 
Capitulo 8 soporte spring jdbc 0
Capitulo 8   soporte spring jdbc 0Capitulo 8   soporte spring jdbc 0
Capitulo 8 soporte spring jdbc 0
 
MongoDB
MongoDBMongoDB
MongoDB
 
Dprn3 u3 a1_vimu
Dprn3 u3 a1_vimuDprn3 u3 a1_vimu
Dprn3 u3 a1_vimu
 
MongoDB
MongoDBMongoDB
MongoDB
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Mongodb
MongodbMongodb
Mongodb
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 

Último

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Último (13)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

Introducción a NoSQL con MongoDB

  • 1. ´ Introduccion MongoDB Conclusiones ´ Una introduccion a NoSQL con MongoDB ´ Antonio Nicolas Pina Murcia, 23 de mayo de 2012 ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 1 / 23
  • 2. ´ Introduccion Problemas a evitar MongoDB Bases de datos Conclusiones Fallos hardware Tolerancia a fallos ´ ¿Como debemos actuar ante un fallo? ´ El peor fallo ocurrira en el peor momento, sobre todo en una ´ startup. Es obligatorio disponer de protocolos de actuacion. ´ Disponer de mas servidores empeora las cosas La probabilidad de que un fallo ocurra es directamente proporcional al numero de servidores que manejemos y a la ´ carga que soporten. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 2 / 23
  • 3. ´ Introduccion Problemas a evitar MongoDB Bases de datos Conclusiones Requisitos inesperados La unica constante es el cambio ´ ´ ´ Si nuestra aplicacion funciona bien, habra que modificarla. ´ ´ Cuanto mas grande seamos, mas cambios sobre el diseno ˜ ´ ´ inicial deberemos acometer, y mas complicados seran los mismos. Un ’alter table’ tiene un alto coste Deben evitarse a toda costa, bloquean la base de datos mientras se ejecutan. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 3 / 23
  • 4. ´ Introduccion Problemas a evitar MongoDB Bases de datos Conclusiones Tipos de bases de datos Figura: Tipos de bases de datos. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 4 / 23
  • 5. ´ Introduccion Problemas a evitar MongoDB Bases de datos Conclusiones RDBMS MySQL ´ La mas popular. MariaDB es un fork de MySQL, creado tras la compra de Sun por Oracle. PostgreSQL Algunos dicen que la mejor. Oracle ´ La base de datos privativa mas utilizada y conocida. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 5 / 23
  • 6. ´ Introduccion Problemas a evitar MongoDB Bases de datos Conclusiones NoSQL Orientadas a documentos MongoDB, Cassandra, CouchDB. Clave-valor Memcachedb, Redis. Muchos otros subtipos Orientadas a grafos como Neo4j; orientadas a columnas, como BigTable, etc. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 6 / 23
  • 7. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ ˜ Principios de diseno ´ ¿Que quieren los programadores? ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 7 / 23
  • 8. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ ˜ Principios de diseno ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 8 / 23
  • 9. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Facilidad Aprendizaje ´ Muchos conceptos de RDBMS se mantienen, haciendo facil e ´ intuitiva la migracion. ´ ´ Instalacion y administracion ´ ´ Para ello, la base de datos tiene que ser lo mas autonoma posible. ´ Programacion ˜ ´ Los drivers son disenados para que su uso sea comodo para el programador. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 9 / 23
  • 10. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Alto rendimiento No JOINs ´ Un JOIN es una operacion muy costosa, es mejor evitarlos en la medida de lo posible. ´ Organizacion de datos adecuada La forma de estructurar los datos debe propiciar un acceso eficiente. No transacciones Las transacciones suponen un gran esfuerzo para la base de datos. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 10 / 23
  • 11. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Nomenclatura No se llama Se llama Base de datos Tabla Fila Indice Cuadro: Nomenclatura de elementos en MongoDB. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 11 / 23
  • 12. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Nomenclatura No se llama Se llama Base de datos Base de datos Tabla Fila Indice Cuadro: Nomenclatura de elementos en MongoDB. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 11 / 23
  • 13. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Nomenclatura No se llama Se llama Base de datos Base de datos Tabla ´ Coleccion Fila Indice Cuadro: Nomenclatura de elementos en MongoDB. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 11 / 23
  • 14. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Nomenclatura No se llama Se llama Base de datos Base de datos Tabla ´ Coleccion Fila Documento Indice Cuadro: Nomenclatura de elementos en MongoDB. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 11 / 23
  • 15. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Nomenclatura No se llama Se llama Base de datos Base de datos Tabla ´ Coleccion Fila Documento Indice Indice Cuadro: Nomenclatura de elementos en MongoDB. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 11 / 23
  • 16. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Forma de un documento { _id: ObjectId("4fb0239b963a756b48000000"), name: "ANPez", nacimiento: ISODate("1985-12-15T18:25:01.0Z"), busca_trabajo: true, gustos: ["musica", "formula1"] experiencia: { nosql: 1.7, php: 3.4, emacs: 0.3 } } ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 12 / 23
  • 17. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Tipos (I) Fuertemente tipada MongoDB maneja tipos, as´ que cuidado en lenguajes de ı scripting como PHP. ´ Orden de evaluacion de tipos ´ Debido a lo anterior, se establece un orden de evaluacion. Esto es, un entero se compara primero con enteros, y luego con floats, pero nunca con cadenas de texto. UTF8, UTF8 everywhere MongoDB no entiende cadenas que no sean UTF8, aunque se ´ pueden almacenar, el servidor no sabra trabajar con ellas. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 13 / 23
  • 18. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Tipos (y II) Fechas en UTC Las fechas no almacenan la zona horaria, si la queremos, la debemos guardar nosotros aparte. Arrays y subdocumentos ´ La parte mas interesante, nos permiten anidar tanto como queramos y desnormalizar nuestros datos. L´mites ı ´ No podemos almacenar mas de 16MB por documento. ´ Tampoco mas de 2GB en un servidor de 32 bits. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 14 / 23
  • 19. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ ObjectId Reemplazo eficiente del autoincrement de MySQL. ´ ˜ Esta disenado para no ser bloqueante y a la vez ser unico ´ e incremental. Longitud de 12 bytes, nos da 212∗8 = 296 ≈ 7,9 ∗ 1028 documentos diferentes. Compuesto por varias partes: 4fb0239b 963a75 6b48 000000 Timestamp. Machine Id. Process Id. Autoincrement. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 15 / 23
  • 20. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Escalabilidad Figura: Arquitectura completa con sharding. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 16 / 23
  • 21. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ ˜ ´ Anadir documentos a una coleccion db.users.insert ({ name: "ANPez", nacimiento: ISODate("1985-12-15T18:25:01.0Z"), busca_trabajo: true, gustos: ["musica", "formula1"] experiencia: { nosql: 1.7, php: 3.4, emacs: 0.3 } }); ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 17 / 23
  • 22. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Recuperar y eliminar documentos rs.slaveOk(); var user = db.users.findOne ({ name: "ANPez", experiencia.php: { $gt: 3 } }).sort({nacimiento: -1}); db.good_databases.remove({_id: mysql._id}); ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 18 / 23
  • 23. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Actualizando documentos db.users.update ( { name: "ANPez" }, { experiencia.charlas: 1 } ); ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 19 / 23
  • 24. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Actualizando documentos db.users.update ( { name: "ANPez" }, { experiencia.charlas: 1 } ); ´ ´ ¡MAL! Sobreescribira todo el documento, no solo ese campo. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 19 / 23
  • 25. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ Actualizando documentos db.users.update ( { name: "ANPez" }, { $set: { experiencia.charlas: 1 } } ); ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 20 / 23
  • 26. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ ´ ¡¿Y que hago yo sin bloqueos?! 1 f o r ( $ i = 0 ; $ i < 3 ; ++ $ i ) 2 { 3 $promo = $ t h i s −>m−>promo−>g e t ( $code ) ; 4 5 / / T r a b a j a r con e l c o n t e n i d o de $promo . 6 7 i f ( $ t h i s −>m−>promo−>consume ( $code , $promo [ ’ l e f t ’ ] ) ) 8 { 9 break ; / / The update t o o k p l a c e . 10 } 11 12 / / Another user i s u p d a t i n g c o n c u r r e n t l y , r e t r y . 13 usleep ( 1 0 0 0 ) ; 14 } ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 21 / 23
  • 27. ´ Introduccion ˜ Caracter´sticas de diseno ı MongoDB Estructura de la base de datos Conclusiones Programacion´ O mejor aun: findAndModify ´ var promo = db.users.findAndModify ({ query: { promo: "promocode", left: {$gt: 0} }, update: { $dec: {left:1} }, new: false }); ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 22 / 23
  • 28. ´ Introduccion MongoDB Conclusiones Conclusiones Conclusiones ˜ Disenada para web ˜ MongoDB ha sido disenada para la web, y es la base de datos ´ mas adecuada para la mayor parte de proyectos. A pesar de ser muy joven, tiene un gran soporte y estabilidad. ´ Con cada nueva version se introducen nuevas e interesantes ´ caracter´sticas (Aggregation framework aparecera en 2.2). ı Tiene algunas peculiaridades y trucos que es preciso conocer, pero en general tiene un manejo sencillo e intuitivo. ´ Antonio Nicolas Pina ´ Una introduccion a NoSQL con MongoDB 23 / 23