Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MongoDB,	
  RabbitMQ	
  y	
  	
  
 aplicaciones	
  en	
  nube	
  
           Gustavo	
  Arjones	
  
 garjones@socialmetrix...
Arquitectura	
  orientada	
  a	
  msjs	
  
h8p://railsdog.com/blog/2009/12/generaAng-­‐pdfs-­‐on-­‐ec2-­‐with-­‐ruby/	
  
RabbitMQ	
  
•    Message	
  Queue	
  (AMQP	
  compliance)	
  
•    Arquitectura	
  orientada	
  a	
  mensajes	
  
•    De...
Direct	
  Message	
  
Matching	
  exact	
  key	
  




        Cerveza	
  




                               Cerveza	
  
...
Fanout	
  Exchange	
  
Copy	
  to	
  all	
  




            Cerveza	
  




                          Cerveza	
         C...
Topic	
  Exchange	
  
Route	
  by	
  Key	
  with	
  Key	
  Globbing	
  




       Bebida.Vino	
  



                    ...
Nanite	
  
•  Nanite	
  is	
  a	
  new	
  way	
  of	
  thinking	
  about	
  building	
  
   cloud	
  ready	
  web	
  appli...
MongoDB	
  es	
  …	
  
•  DB	
  Orientado	
  a	
  documentos	
  (schemaless)	
  
•  “Facil”	
  escalar	
  horizontal	
  (s...
MongoDB	
  NO	
  es	
  …	
  
•  Para	
  transaciones	
  
•  Para	
  OLAP	
  
•  RDBMS	
  (AcAveRecord?)	
  
Select	
  
SELECT	
  first_name,	
  last_name	
  	
  
FROM	
  authors	
  
WHERE	
  zipcode	
  =	
  1234	
  
ORDER	
  BY	
  ...
Select	
  
SELECT	
  *	
  
FROM	
  authors	
  
WHERE	
  dob	
  BETWEEN	
  ‘1970-­‐1-­‐1’	
  AND	
  ‘1990-­‐1-­‐1’	
  
AND	...
Upsert	
  (Update	
  +	
  Insert)	
  

>	
  db.tweets.update(	
  query,	
  modify,	
  upsert?,	
  mul2ple?	
  );	
  

>	
 ...
Indexes	
  
>	
  db.	
  tweets.ensureIndex(	
  
     	
  {"user.Ame_zone"	
  :	
  1},	
  {background:true});	
  

>	
  db....
Prós	
                         Contras	
  
•  Schemaless	
                •  Map-­‐Reduce	
  MUY	
  lento	
  
•  Rápida	
 ...
Tips	
  
•    Pensar	
  BIEN	
  el	
  schema	
  antes	
  de	
  empezar	
  
•    Guardar	
  calculaAon	
  
•    Evitar	
  m...
Referencias	
  
•  h8p://www.rabbitmq.com/	
  
•  h8p://www.mongodb.org/	
  
•  h8p://github.com/ezmobius/nanite	
  
•  h8...
Muchas	
  gracias	
  

          Gustavo	
  Arjones	
  
garjones@socialmetrix.com	
  |	
  @arjones	
  
MongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en Nube
Upcoming SlideShare
Loading in …5
×

MongoDB, RabbitMQ y Applicaciones en Nube

1,927 views

Published on

Review de las principales tecnologías que estamos usando en cloud

Published in: Technology
  • Be the first to comment

  • Be the first to like this

MongoDB, RabbitMQ y Applicaciones en Nube

  1. 1. MongoDB,  RabbitMQ  y     aplicaciones  en  nube   Gustavo  Arjones   garjones@socialmetrix.com  |  @arjones  
  2. 2. Arquitectura  orientada  a  msjs  
  3. 3. h8p://railsdog.com/blog/2009/12/generaAng-­‐pdfs-­‐on-­‐ec2-­‐with-­‐ruby/  
  4. 4. RabbitMQ   •  Message  Queue  (AMQP  compliance)   •  Arquitectura  orientada  a  mensajes   •  Desacoplado,  Aislado   •  Facil  escalabilidad  horizontal   •  “AlternaAva”:  Kestrel  /  Twi8er  (NO  AMQP!)  
  5. 5. Direct  Message   Matching  exact  key   Cerveza   Cerveza   Cerveza   Vino  
  6. 6. Fanout  Exchange   Copy  to  all   Cerveza   Cerveza   Cerveza   Bebida   Bebida  
  7. 7. Topic  Exchange   Route  by  Key  with  Key  Globbing   Bebida.Vino   Bebida.Vino   Bebida.Vino   Bebida.#   Comida.*   #.Vino  
  8. 8. Nanite   •  Nanite  is  a  new  way  of  thinking  about  building   cloud  ready  web  applicaAons.  Having  a   scalable  message  queueing  back-­‐end  with  all   the  discovery  and  dynamic  load  based   dispatch  that  Nanite  has  is  a  very  scalable  way   to  construct  web  applicaAon  back-­‐ends.    
  9. 9. MongoDB  es  …   •  DB  Orientado  a  documentos  (schemaless)   •  “Facil”  escalar  horizontal  (shard)   •  Para  mantener  estructuras  complejas   (jerarquicas)   •  Para  estadísAcas  “simples”   •  Para  mantener  archivos  (GridFS)  
  10. 10. MongoDB  NO  es  …   •  Para  transaciones   •  Para  OLAP   •  RDBMS  (AcAveRecord?)  
  11. 11. Select   SELECT  first_name,  last_name     FROM  authors   WHERE  zipcode  =  1234   ORDER  BY  last_name  DESC   LIMIT  2,  1;   >  db.authors.find({"zipcode"  :  1234},      {"first_name"  :  1,  "last_name"  :  1  }).sort({"last_name"  :  -­‐1  })    .skip(2).limit(1);  
  12. 12. Select   SELECT  *   FROM  authors   WHERE  dob  BETWEEN  ‘1970-­‐1-­‐1’  AND  ‘1990-­‐1-­‐1’   AND  address  IS  NULL;   >  db.authors.find({"dbo"  :  {  $gte  :  new  Date(“1970-­‐1-­‐1”),  $lte  :   new  Date(“1990-­‐1-­‐1”)},  “address”  :  {  $exists  :  false  }  }  );  
  13. 13. Upsert  (Update  +  Insert)   >  db.tweets.update(  query,  modify,  upsert?,  mul2ple?  );   >  db.setup.update({},  {  $set  :  {  "in_progress"  :  false  }  },  false,   true);   >  db.setup.update({},  {  "opAons.last_status"  :  -­‐1},  false,  true);  
  14. 14. Indexes   >  db.  tweets.ensureIndex(    {"user.Ame_zone"  :  1},  {background:true});   >  db.tweets.ensureIndex(    {"created_at"  :  1,  "user.Ame_zone"  :  1,  "tokens"  :  1},    {background:true});   background:true    no  lock  para  crear  indices   >  db.tweets.getIndexes()  
  15. 15. Prós   Contras   •  Schemaless   •  Map-­‐Reduce  MUY  lento   •  Rápida  instalación   •  Sharding  es  BETA   •  Muchos  Drivers   •  Nuevo  set  de   disponibles   commandos  
  16. 16. Tips   •  Pensar  BIEN  el  schema  antes  de  empezar   •  Guardar  calculaAon   •  Evitar  map-­‐reduce  (unAl  r.  1.8)   •  Indexes  TIENEN  que  entrar  en  RAM   >  db.  tweets.totalIndexSize();   1187423168  (~1.1Gb)   >  db.  tweets.storageSize();   16670199040  (~15.5  Gb)  
  17. 17. Referencias   •  h8p://www.rabbitmq.com/   •  h8p://www.mongodb.org/   •  h8p://github.com/ezmobius/nanite   •  h8p://github.com/robey/kestrel   •  h8p://www.slideshare.net/somic/introducAon-­‐ to-­‐amqp-­‐messaging-­‐with-­‐rabbitmq   •  h8p://www.slideshare.net/ma8ma8/rabbitmq-­‐ and-­‐nanite  
  18. 18. Muchas  gracias   Gustavo  Arjones   garjones@socialmetrix.com  |  @arjones  

×