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

TCO - MongoDB vs. Oracle
TCO - MongoDB vs. OracleTCO - MongoDB vs. Oracle
TCO - MongoDB vs. OracleJeremy Taylor
 
Basics of MongoDB
Basics of MongoDB Basics of MongoDB
Basics of MongoDB Habilelabs
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDBCésar Trigo
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptxSigit52
 
No SQL- The Future Of Data Storage
No SQL- The Future Of Data StorageNo SQL- The Future Of Data Storage
No SQL- The Future Of Data StorageBethmi Gunasekara
 
Creación de un servicio RESTful utilizando Java y WildFly -I PARTE-
Creación de un servicio RESTful utilizando Java y WildFly -I PARTE-Creación de un servicio RESTful utilizando Java y WildFly -I PARTE-
Creación de un servicio RESTful utilizando Java y WildFly -I PARTE-Desarrollo Escuintla
 
Hybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsHybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsSteven Francia
 
Introduction to MongoDB.pptx
Introduction to MongoDB.pptxIntroduction to MongoDB.pptx
Introduction to MongoDB.pptxSurya937648
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBMongoDB
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsSpringPeople
 
Mongo DB: Operational Big Data Database
Mongo DB: Operational Big Data DatabaseMongo DB: Operational Big Data Database
Mongo DB: Operational Big Data DatabaseXpand IT
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQLIsabel Gómez
 
SQL vs MongoDB
SQL vs MongoDBSQL vs MongoDB
SQL vs MongoDBcalltutors
 
Introducción a las bases de datos
Introducción a las bases de datosIntroducción a las bases de datos
Introducción a las bases de datosMaria Garcia
 

La actualidad más candente (20)

Mongo db intro.pptx
Mongo db intro.pptxMongo db intro.pptx
Mongo db intro.pptx
 
TCO - MongoDB vs. Oracle
TCO - MongoDB vs. OracleTCO - MongoDB vs. Oracle
TCO - MongoDB vs. Oracle
 
Basics of MongoDB
Basics of MongoDB Basics of MongoDB
Basics of MongoDB
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptx
 
No SQL- The Future Of Data Storage
No SQL- The Future Of Data StorageNo SQL- The Future Of Data Storage
No SQL- The Future Of Data Storage
 
HDFS Architecture
HDFS ArchitectureHDFS Architecture
HDFS Architecture
 
Creación de un servicio RESTful utilizando Java y WildFly -I PARTE-
Creación de un servicio RESTful utilizando Java y WildFly -I PARTE-Creación de un servicio RESTful utilizando Java y WildFly -I PARTE-
Creación de un servicio RESTful utilizando Java y WildFly -I PARTE-
 
Hybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsHybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS Applications
 
Introduction to MongoDB.pptx
Introduction to MongoDB.pptxIntroduction to MongoDB.pptx
Introduction to MongoDB.pptx
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
 
Mongo DB: Operational Big Data Database
Mongo DB: Operational Big Data DatabaseMongo DB: Operational Big Data Database
Mongo DB: Operational Big Data Database
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQL
 
Mongo db dhruba
Mongo db dhrubaMongo db dhruba
Mongo db dhruba
 
lecture_34e.pptx
lecture_34e.pptxlecture_34e.pptx
lecture_34e.pptx
 
SQL vs MongoDB
SQL vs MongoDBSQL vs MongoDB
SQL vs MongoDB
 
Bases de datos NoSQL en entornos Big Data
Bases de datos NoSQL en entornos Big DataBases de datos NoSQL en entornos Big Data
Bases de datos NoSQL en entornos Big Data
 
Mongo db
Mongo dbMongo db
Mongo db
 
Introducción a las bases de datos
Introducción a las bases de datosIntroducción a las bases de datos
Introducción a las bases de datos
 

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

MongoDB Avanzado
MongoDB AvanzadoMongoDB Avanzado
MongoDB Avanzado
 
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
 
Maual de instalacion mongodb
Maual de instalacion mongodbMaual de instalacion mongodb
Maual de instalacion mongodbGerzair García
 

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
 
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
 
Maual de instalacion mongodb
Maual de instalacion mongodbMaual de instalacion mongodb
Maual de instalacion mongodb
 

Último

Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 

Último (20)

Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 

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