y
                              @CesarHgt
 César Hernández              CesarHernandezGt




Java Day Guatemala 2012
Agenda
•  Evolución
•  Retos
•  NoSQL
•  Tipos NoSQL
•  MongoDB
•  RDBMS / MongoDB
•  Integración con Java
Evolución de los
            sistemas de
            almacenamiento


http://justjacqui2.files.wordpress.com/2011/12/bored-girl-in-classroom.jpg
70's
                                Mainframes
                                Alto costo
                                No distribuido


                                ... +2 mujeres en
                                    el mismo cuarto
                                    de
                                    servidores :O


http://plyojump.com/classes/images/computer_history/1950sComputer.jpg
80's
                                                                                         http://www.db-

   Cliente/Servidor                                                                      convert.org/db-
                                                                                         convert/img/mysql-
                                                                                         oracle.jpg

   RDBMS
                          First 5¼" drive
                          5 MB $1500


                                            http://www.smallbusinessdelivered.com/wp-content/
                                            uploads/2011/10/free-internet-publicity.jpg




                                                                     90's
http://www.surelineelectric.com/
                                                                     Arquitectura 3n
                                                                     Despega Internet
images/pages/Computer-
Networking.jpg


                                                                                                         casi GB
2000's
WEB 2.0
BI Business Intelligence
OLAP On-Line Analytical
          Processing




                           2005 – First 500 GB
                           hard drive
                                     http://internet-map.net/
Actualidad
                                                             Retos
                                                             Alta transaccionalidad
                                                             Alto volumen datos
                                                             Alta disponibilidad
                                                             Tipo de data variable
http://m01.cariblogger.com/2010/08/social-networking-4.jpg
                                                             Objetos complejos
                                                             MetaData
Escalando



                                                                                  1.5 años




                                        1 año

         6 meses

                                                      http://www.oracle.com/us/assets/im07t1-sun-fire-x4170m3-1-1571069.png

 Día 1                                   http://regmedia.co.uk/2011/09/26/oracle_sparc_t4_4_server.jpg?x=300&y=200&crop=1
                                                          http://www8.pcmag.com/media/images/271798-oracle-sparc-server.jpg
                                    http://cdn1.computerworlduk.com/cmsdata/news/3282065/Oracle_Exadata_thumb230.PNG

         http://3.bp.blogspot.com/_BGeZdq-xPfk/TDvj9TiYOvI/AAAAAAAAAQ0/Ni8U_te6hzk/s1600/Mountain+climbing.jpg
NoSQL
Schema free
Escalable Horiz.
Administración sencilla
No Joins
Bajo costo

Coexistencia RDBMS y
  DataWarehouse
Tipos NoSQL

     Key/value

     Graph



     Column

     Document
Comparación
 Rendimiento y escalabilidad




                               memcached

                                    Key/value




                                                           RDBMS



                                           Funcionalidad
•  Orientado a Documentos
   o  JSON
   o  Schema free
   o  No utiliza Joins
•  Funcionalidad
   o  Conversión transparente de JSON a Objetos de aplicación
      (OO)
   o  Atomicidad transaccional (a nivel de Doc.)
   o  Map/Reduce (agregation)
•  Escalable y Bajo costo
   o  Replicación y alta disponibilidad
   o  AutoSharding (No custom hardware)
RDBMS y MongoDB

RDBMS           MongoDB
Table           Collection
Fila(s)         JSON Document
Index           Index
Join            Embedding
Partition       Shard
PArtition Key   Shard Key
 
	
  
       Documento
         {	
  	
  autor	
  :	
  "Mario	
  Donis	
  Navarro",	
  
              	
  Edad	
  :	
  25,	
  
              	
  email:	
  "md@mail.net",	
  
              	
  dirección	
  :	
  "1a	
  calle	
  10-­‐20	
  zona	
  30"	
  
                                       {	
              	
  	
  
                                       	
  	
  	
  	
  calle	
  :	
  "1",	
  
                                       	
  	
  	
  	
  Numero	
  :	
  "11-­‐20",	
  
                                       	
  	
  	
  	
  zona:	
  30	
  
                                       },	
  
                                       	
  
                                       	
  
                 seudónimos	
  :	
  ["md","madona"]	
  
         }	
  
	
  
DEMO 1
   Instalación, Mongod, Mongo Shell




http://insidemc.montgomerycollege.edu/attach/5649145e-eae7-0564-cdf3-8dd21ffede61/computer-praying-to-780774.jpg
http://www.mongodb.org/downloads
Modelling




            http://downloads.xdesktopwallpapers.com/wp-content/uploads/2010/12/Parvati-Vaze-Modeling-Pose.jpg
ER para un post
Post
{
    autor : "Mario",
         titulo : "Java Day 2012",
         texto : "Texto principal",
         tags : ["java", "day","TI"],
         votos : 1,
         comentarios : [ ]
}
Post
{
    autor : "Mario",
         titulo : "Java Day 2012",
         texto : "Texto principal",
         tags : ["java", "day","TI"],
         votos : 1,
         comentarios : [
                             {          quien : "Cesar",
                                        comentario : "excelente"
                             },
                             {          quien : "Paula",
                                        comentario : "interesante"
                             }
                   ]
}
DEMO 2
Inserción y Consultas
Cuando utilizar MongoDB
•  Problemas de perforance en tu BD, ejm:
     exceso de caching
•    Te encuentras haciendo batch y lo necesitas
     en tiempo real
•    Luego de varios intentos, consultores y
     gurus,tu data es dificil de modelar en un
     modelo relacional
¿Cuando no utilizarlo?
•  Cuando se necesita un estricto
     comportamiento transaccional
•    La información es muy relational-oriented
•    Necesidad de triggers
•    Cuando necesitemos Integridad referencial
Integración con Java
  mongo-java-driver



  Jongo



  Spring MongoDB
DEMO 3
                     mongo java driver



            git://github.com/cesarhernandezgt/JavaDay2012.git
www.mongodb.org/display/DOCS/Java+Language+Center
PREGUNTAS?
                          @CesarHgt
 César Hernández          CesarHernandezGt




Java Day Guatemala 2012

Introducción MongoDB con Java

  • 1.
    y @CesarHgt César Hernández CesarHernandezGt Java Day Guatemala 2012
  • 2.
    Agenda •  Evolución •  Retos • NoSQL •  Tipos NoSQL •  MongoDB •  RDBMS / MongoDB •  Integración con Java
  • 3.
    Evolución de los sistemas de almacenamiento http://justjacqui2.files.wordpress.com/2011/12/bored-girl-in-classroom.jpg
  • 4.
    70's Mainframes Alto costo No distribuido ... +2 mujeres en el mismo cuarto de servidores :O http://plyojump.com/classes/images/computer_history/1950sComputer.jpg
  • 5.
    80's http://www.db- Cliente/Servidor convert.org/db- convert/img/mysql- oracle.jpg RDBMS First 5¼" drive 5 MB $1500 http://www.smallbusinessdelivered.com/wp-content/ uploads/2011/10/free-internet-publicity.jpg 90's http://www.surelineelectric.com/ Arquitectura 3n Despega Internet images/pages/Computer- Networking.jpg casi GB
  • 6.
    2000's WEB 2.0 BI BusinessIntelligence OLAP On-Line Analytical Processing 2005 – First 500 GB hard drive http://internet-map.net/
  • 7.
    Actualidad Retos Alta transaccionalidad Alto volumen datos Alta disponibilidad Tipo de data variable http://m01.cariblogger.com/2010/08/social-networking-4.jpg Objetos complejos MetaData
  • 8.
    Escalando 1.5 años 1 año 6 meses http://www.oracle.com/us/assets/im07t1-sun-fire-x4170m3-1-1571069.png Día 1 http://regmedia.co.uk/2011/09/26/oracle_sparc_t4_4_server.jpg?x=300&y=200&crop=1 http://www8.pcmag.com/media/images/271798-oracle-sparc-server.jpg http://cdn1.computerworlduk.com/cmsdata/news/3282065/Oracle_Exadata_thumb230.PNG http://3.bp.blogspot.com/_BGeZdq-xPfk/TDvj9TiYOvI/AAAAAAAAAQ0/Ni8U_te6hzk/s1600/Mountain+climbing.jpg
  • 9.
    NoSQL Schema free Escalable Horiz. Administraciónsencilla No Joins Bajo costo Coexistencia RDBMS y DataWarehouse
  • 10.
    Tipos NoSQL Key/value Graph Column Document
  • 11.
    Comparación Rendimiento yescalabilidad memcached Key/value RDBMS Funcionalidad
  • 12.
    •  Orientado aDocumentos o  JSON o  Schema free o  No utiliza Joins •  Funcionalidad o  Conversión transparente de JSON a Objetos de aplicación (OO) o  Atomicidad transaccional (a nivel de Doc.) o  Map/Reduce (agregation) •  Escalable y Bajo costo o  Replicación y alta disponibilidad o  AutoSharding (No custom hardware)
  • 13.
    RDBMS y MongoDB RDBMS MongoDB Table Collection Fila(s) JSON Document Index Index Join Embedding Partition Shard PArtition Key Shard Key
  • 14.
        Documento {    autor  :  "Mario  Donis  Navarro",    Edad  :  25,    email:  "md@mail.net",    dirección  :  "1a  calle  10-­‐20  zona  30"   {              calle  :  "1",          Numero  :  "11-­‐20",          zona:  30   },       seudónimos  :  ["md","madona"]   }    
  • 15.
    DEMO 1 Instalación, Mongod, Mongo Shell http://insidemc.montgomerycollege.edu/attach/5649145e-eae7-0564-cdf3-8dd21ffede61/computer-praying-to-780774.jpg
  • 16.
  • 17.
    Modelling http://downloads.xdesktopwallpapers.com/wp-content/uploads/2010/12/Parvati-Vaze-Modeling-Pose.jpg
  • 18.
  • 19.
    Post { autor : "Mario", titulo : "Java Day 2012", texto : "Texto principal", tags : ["java", "day","TI"], votos : 1, comentarios : [ ] }
  • 20.
    Post { autor : "Mario", titulo : "Java Day 2012", texto : "Texto principal", tags : ["java", "day","TI"], votos : 1, comentarios : [ { quien : "Cesar", comentario : "excelente" }, { quien : "Paula", comentario : "interesante" } ] }
  • 21.
  • 22.
    Cuando utilizar MongoDB • Problemas de perforance en tu BD, ejm: exceso de caching •  Te encuentras haciendo batch y lo necesitas en tiempo real •  Luego de varios intentos, consultores y gurus,tu data es dificil de modelar en un modelo relacional
  • 23.
    ¿Cuando no utilizarlo? • Cuando se necesita un estricto comportamiento transaccional •  La información es muy relational-oriented •  Necesidad de triggers •  Cuando necesitemos Integridad referencial
  • 24.
    Integración con Java mongo-java-driver Jongo Spring MongoDB
  • 25.
    DEMO 3 mongo java driver git://github.com/cesarhernandezgt/JavaDay2012.git www.mongodb.org/display/DOCS/Java+Language+Center
  • 26.
    PREGUNTAS? @CesarHgt César Hernández CesarHernandezGt Java Day Guatemala 2012