• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Greach 2011 - Engrandeciendo Grails con MongoDB
 

Greach 2011 - Engrandeciendo Grails con MongoDB

on

  • 1,015 views

Ponencia de Enrique Medina en Greach 2011

Ponencia de Enrique Medina en Greach 2011
Engrandeciendo Grails con MongoDB

Statistics

Views

Total Views
1,015
Views on SlideShare
1,015
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
2

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * En la pregunta final, la estrategia de acceso a datos se refiere a si quieres un lenguaje de alto nivel para hacer consultas, tipo SQL, o te sientes mejor trabajando a bajo nivel, con Map/Reduce o incluso operaciones sobre colecciones\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * Mencionar el uso de Spring Datastore como API por debajo de la integración de Grails con NoSQL\n* Recomendar no usar GORM; sólo ‘embedded’ cuando se necesite, pero el resto propiedades de clase normales (generan un DBRef)\n
  • * TRANSACCIONALIDAD --> Consiste en mantener una lista de cambios pendientes que no se mandan realmente a MongoDB hasta que no se hace el flush. Sin embargo, no solucionan la atomicidad del lado de MongoDB en el caso de varias operaciones. Por ejemplo, transferencias entre cuentas de dos bancos\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * Hacer notar que no se puede obtener la colección de Detalles de un Maestro ordenada, ya que la colección del Maestro simplemente tiene las referencias --> Workaround: definir ‘detalles’ en Maestro como una Lista, de forma que se guarde ordenada en MongoDB\n* Demostrar que si cambio el hasMany por un simple List detalles, no funciona porque MongoDB no sabe cómo convertir un Detalle a BSON (habría que usar un ‘Custom Type’ - ver documentación del plugin)\n* Comentar que más adelante veremos el tema de los índices para optimizar las búsquedas\n
  • * Matizar que la colección embebida tiene el “_embeddedClassName” para que Grails sepa cómo transformar el BSON de vuelta a un ‘detalle’\n* Fijarse en que al haber usado una colección de tipo List, los ‘detalles’ están ordenados\n* Comentar que por defecto vuelve a guardar la colección entera cuando añadimos un elemento, con lo que quizás sería mucho más óptimo usar la API de bajo nivel y hacer un $push\n
  • * Comentar que el nombre del Detalle es su identificador ahora, pero lo ideal sería crearle uno realmente único (por si permite nombres duplicados - por ejemplo, los artículos de una factura)\n
  • * El ejemplo típico de usar M:1 para definir una 1:M sería el de Factura y Artículos --> Factura.getArticulos() { Articulo.findAllByFactura(this) }\n* Comentar que se miren los Trees como diseño embebido en relaciones estrictas de padre/hijo\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * Queremos buscar los detalles cuyo maestro sea “Maestro1”\n* Notar que el plugin hace la query contra el $id, no contra la referencia, con lo que la indexación definida como constraint en la clase no sirve de nada\n
  • * Queremos buscar los detalles cuyo maestro sea “Maestro1”\n* Notar que el plugin hace la query contra el $id, no contra la referencia, con lo que la indexación definida como constraint en la clase no sirve de nada\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * Explicar que al estar embebido el Detalle, se recupera la colección contenedora y entonces se busca el Detalle específico porque puede tener otros campos de los cuales queremos saber su valor\n
  • * Explicar que al estar embebido el Detalle, se recupera la colección contenedora y entonces se busca el Detalle específico porque puede tener otros campos de los cuales queremos saber su valor\n
  • * Explicar que al estar embebido el Detalle, se recupera la colección contenedora y entonces se busca el Detalle específico porque puede tener otros campos de los cuales queremos saber su valor\n
  • * Explicar que al estar embebido el Detalle, se recupera la colección contenedora y entonces se busca el Detalle específico porque puede tener otros campos de los cuales queremos saber su valor\n
  • * Explicar que al estar embebido el Detalle, se recupera la colección contenedora y entonces se busca el Detalle específico porque puede tener otros campos de los cuales queremos saber su valor\n
  • * Comentar que hay dos formas de modelar esto: la primera es la que se muestra aquí, donde embebemos parte del Articulo (codigo, descripcion) en la Factura, de forma que podemos buscar directamente en la Factura por descripción de Articulo\n* Destacar el hecho de usar el ‘collect’ para recuperar los objetos Articulos como tal, ya que en Factura sólo tenemos una parte del Articulo y queremos ver todas las características de todos los artículos\n
  • * Comentar que hay dos formas de modelar esto: la primera es la que se muestra aquí, donde embebemos parte del Articulo (codigo, descripcion) en la Factura, de forma que podemos buscar directamente en la Factura por descripción de Articulo\n* Destacar el hecho de usar el ‘collect’ para recuperar los objetos Articulos como tal, ya que en Factura sólo tenemos una parte del Articulo y queremos ver todas las características de todos los artículos\n
  • * Comentar que hay dos formas de modelar esto: la primera es la que se muestra aquí, donde embebemos parte del Articulo (codigo, descripcion) en la Factura, de forma que podemos buscar directamente en la Factura por descripción de Articulo\n* Destacar el hecho de usar el ‘collect’ para recuperar los objetos Articulos como tal, ya que en Factura sólo tenemos una parte del Articulo y queremos ver todas las características de todos los artículos\n
  • * Comentar que hay dos formas de modelar esto: la primera es la que se muestra aquí, donde embebemos parte del Articulo (codigo, descripcion) en la Factura, de forma que podemos buscar directamente en la Factura por descripción de Articulo\n* Destacar el hecho de usar el ‘collect’ para recuperar los objetos Articulos como tal, ya que en Factura sólo tenemos una parte del Articulo y queremos ver todas las características de todos los artículos\n
  • * Comentar que hay dos formas de modelar esto: la primera es la que se muestra aquí, donde embebemos parte del Articulo (codigo, descripcion) en la Factura, de forma que podemos buscar directamente en la Factura por descripción de Articulo\n* Destacar el hecho de usar el ‘collect’ para recuperar los objetos Articulos como tal, ya que en Factura sólo tenemos una parte del Articulo y queremos ver todas las características de todos los artículos\n
  • * La query busca las facturas donde todavía no hay cobros, es decir, las facturas sin cobrar.\n
  • * La query busca las facturas donde todavía no hay cobros, es decir, las facturas sin cobrar.\n
  • * Rendimiento penalizado: se ejecuta el código JS para cada uno de los objetos escaneados.\n* Comentar el db.eval() para ‘server side processing’\n
  • * Rendimiento penalizado: se ejecuta el código JS para cada uno de los objetos escaneados.\n* Comentar el db.eval() para ‘server side processing’\n
  • * Notar el uso de la API en DBRef, con especial énfasis en el segundo parámetro, que puede dar lugar a confusión\n
  • * Notar el uso de la API en DBRef, con especial énfasis en el segundo parámetro, que puede dar lugar a confusión\n
  • * Comentar que el Map/Reduce no tiene mucho sentido implementarlo en el plugin\n* Explicar que Map/Reduce es una tecnología mediante la cual se puede agrupar información de manera óptima en paralelo y que viene de las BigTable de Google\n
  • * Comentar que es una alternativa rápida al Map/Reduce, pero que no funciona en configuraciones ‘sharded’\n
  • * Comentar que es una alternativa rápida al Map/Reduce, pero que no funciona en configuraciones ‘sharded’\n
  • * No permite ‘sharding’ debido sobre todo al tema de los ‘write lock’\n* Comentar que podemos almacenar la definición de la función JS mediante --> db.system.js.insert({_id: “nombre”, value: function(x) { return x * x; }});\n
  • * No permite ‘sharding’ debido sobre todo al tema de los ‘write lock’\n* Comentar que podemos almacenar la definición de la función JS mediante --> db.system.js.insert({_id: “nombre”, value: function(x) { return x * x; }});\n
  • * No permite ‘sharding’ debido sobre todo al tema de los ‘write lock’\n* Comentar que podemos almacenar la definición de la función JS mediante --> db.system.js.insert({_id: “nombre”, value: function(x) { return x * x; }});\n
  • \n
  • \n

Greach 2011 - Engrandeciendo Grails con MongoDB Greach 2011 - Engrandeciendo Grails con MongoDB Presentation Transcript

  • Welcome to the Jungle! Dav Glass, Hacker @davglassMonday, November 7, 2011
  • Welcome to the Jungle - GnRMonday, November 7, 2011
  • Welcome to the Jungle - GnR "Imagine youre hearing awesome music here, because imagining it is a lot cheaper than getting licenses to actually play it." @yaypieMonday, November 7, 2011
  • Welcome to YUIConf 2011Monday, November 7, 2011
  • Welcome to YUIConf 2011Monday, November 7, 2011
  • Welcome to YUIConf 2011 @yuilibrary #yuiconfMonday, November 7, 2011
  • Welcome to YUIConf 2011 @yuilibrary #yuiconf yuiconf yuiconf2011Monday, November 7, 2011
  • Conference Events Today 9:00 - 5:30 - Talks 12:00 - 1:00 - Lunch 5:30 - 6:30 - Dinner 6:30 - 8:30 -Douglas Crockford Tomorrow 9:00 - 5:30 - Talks 12:00 - 1:00 - LunchMonday, November 7, 2011
  • YUI Conf brought to you by: Lunch both days provided by: Yahoo! Mail Dinner tonight provided by:Monday, November 7, 2011
  • Special Shout OutsMonday, November 7, 2011
  • Special Shout OutsMonday, November 7, 2011
  • Special Shout OutsMonday, November 7, 2011
  • Special Shout OutsMonday, November 7, 2011
  • Special Shout OutsMonday, November 7, 2011
  • Back in Black - AC/DCMonday, November 7, 2011
  • Back in Black - AC/DC "Imagine youre hearing awesome music here, because imagining it is a lot cheaper than getting licenses to actually play it." @yaypieMonday, November 7, 2011
  • New MembersMonday, November 7, 2011
  • New MembersMonday, November 7, 2011
  • New MembersMonday, November 7, 2011
  • Gallery GrowthMonday, November 7, 2011
  • Gallery GrowthMonday, November 7, 2011
  • Gallery Growth Last YUIConf: 206 modulesMonday, November 7, 2011
  • Gallery Growth Last YUIConf: 206 modules Today: 350 modulesMonday, November 7, 2011
  • Gallery Growth Last YUIConf: 206 modules Today: 350 modules New CLA’s: 76Monday, November 7, 2011
  • Top Gallery ContributorsMonday, November 7, 2011
  • Top Gallery Contributors AlloyUI - Liferay 70 modulesMonday, November 7, 2011
  • Top Gallery ContributorsMonday, November 7, 2011
  • Top Gallery Contributors Anthony Pipkin 29 modulesMonday, November 7, 2011
  • Top Gallery ContributorsMonday, November 7, 2011
  • Top Gallery Contributors John Lindal 26 modulesMonday, November 7, 2011
  • Top Gallery ContributorsMonday, November 7, 2011
  • Top Gallery Contributors Luke Smith 17 modulesMonday, November 7, 2011
  • Top Gallery ContributorsMonday, November 7, 2011
  • Top Gallery Contributors Caridy Patino 12 modulesMonday, November 7, 2011
  • Forum GrowthMonday, November 7, 2011
  • Forum GrowthMonday, November 7, 2011
  • Forum GrowthMonday, November 7, 2011
  • Forum Growth +25,000 posts +10,000 usersMonday, November 7, 2011
  • New ComponentsMonday, November 7, 2011
  • New Components ✦ App Framework ✦ Graphics ✦ Autocomplete ✦ Highlight ✦ Calendar ✦ Panel ✦ Charts ✦ Resize* ✦ DataTable ✦ Scrollview ✦ Dial ✦ Text ✦ EscapeMonday, November 7, 2011
  • UpdatesMonday, November 7, 2011
  • Updates ✦ Core System ✦ Loader Refactor ✦ GBS UpdatesMonday, November 7, 2011
  • GBS UpdateMonday, November 7, 2011
  • GBS Update As of our last update (7/12/11), weve decoupled the Graded Browser Support development strategy from the testing methodology. The "Browser Test Baseline" is a representative set of browsers chosen to provide the maximum testing coverage over the minimal testing surface.Monday, November 7, 2011
  • Today - Smashing PumpkinsMonday, November 7, 2011
  • Today - Smashing Pumpkins "Imagine youre hearing awesome music here, because imagining it is a lot cheaper than getting licenses to actually play it." @yaypieMonday, November 7, 2011
  • Faster ReleasesMonday, November 7, 2011
  • Faster ReleasesMonday, November 7, 2011
  • Faster ReleasesMonday, November 7, 2011
  • Faster Releases ✦ Sprint based releases ✦ More PR releases ✦ Better scheduling ✦ More Community Involvement ✦ Schedule Announcing ✦ Github IntegrationMonday, November 7, 2011
  • Github IntegrationMonday, November 7, 2011
  • Github IntegrationMonday, November 7, 2011
  • Github IntegrationMonday, November 7, 2011
  • Github IntegrationMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • New ImageMonday, November 7, 2011
  • Livin on the Edge - AerosmithMonday, November 7, 2011
  • Livin on the Edge - Aerosmith "Imagine youre hearing awesome music here, because imagining it is a lot cheaper than getting licenses to actually play it." @yaypieMonday, November 7, 2011
  • NodeJSMonday, November 7, 2011
  • NodeJS ✦ First class environment ✦ Formal support in Y.UA ✦ Conditional Loading ✦ TestedMonday, November 7, 2011
  • NodeJSMonday, November 7, 2011
  • NodeJSMonday, November 7, 2011
  • NodeJSMonday, November 7, 2011
  • NodeJSMonday, November 7, 2011
  • Component Updates In 3.5.0, DataTable will be my primary focus. It will undergo an architectural overhaul, with plans to move it to a Model/ ModelList + View based internal structure, which will allow more flexibility in rendering and data interchange with server bound data.Monday, November 7, 2011
  • Component Updates ✦ Core ✦ Bidi/RTL/Skins ✦ Get ✦ Loader ✦ DataTable In 3.5.0, DataTable will be my primary focus. It will undergo ✦ App Framework an architectural overhaul, with plans to move it to a Model/ ModelList + View based internal structure, which will allow more flexibility in rendering and data interchange with server bound data.Monday, November 7, 2011
  • New ComponentsMonday, November 7, 2011
  • New Components ✦ HandlebarsMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ PjaxMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test ConsoleMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test Console ✦ TreeViewMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test Console ✦ TreeView ✦ Widget LiteMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test Console ✦ TreeView ✦ Widget Lite ✦ Uploader in HTML5Monday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test Console ✦ TreeView ✦ Widget Lite ✦ Uploader in HTML5 ✦ Button WidgetMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test Console ✦ TreeView ✦ Widget Lite ✦ Uploader in HTML5 ✦ Button Widget ✦ Windowing ComponentsMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test Console ✦ TreeView ✦ Widget Lite ✦ Uploader in HTML5 ✦ Button Widget ✦ Windowing Components ✦ TooltipMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test Console ✦ TreeView ✦ Widget Lite ✦ Uploader in HTML5 ✦ Button Widget ✦ Windowing Components ✦ Tooltip ✦ DialogMonday, November 7, 2011
  • New Components ✦ Handlebars ✦ Pjax ✦ Test Console ✦ TreeView ✦ Widget Lite ✦ Uploader in HTML5 ✦ Button Widget ✦ Windowing Components ✦ Tooltip ✦ Dialog ✦ PointerMonday, November 7, 2011
  • The Book of YUI 3 (not the real title)Monday, November 7, 2011
  • The YUI 3 Cookbook Evan Goer goer@yahoo-inc.com The YUI 3 Cookbook contains 150 recipes. Each recipe includes a self-contained working example. Most examples are deliberately very short, but have an extensive discussion.Monday, November 7, 2011
  • The YUI 3 Cookbook Evan Goer goer@yahoo-inc.com http://goer.org/YUI To download a free sample pack of three PDF chapters. These chapters are raw and contain typos, red TODOs, and errors. Youve been warned!Monday, November 7, 2011
  • YUI Easy Testing Interface - YetiMonday, November 7, 2011
  • YUI Easy Testing Interface - Yeti Video Here: www.youtube.com/watch?v=85Q06z7_B0wMonday, November 7, 2011
  • Talk Dirty to Me - PoisonMonday, November 7, 2011
  • Talk Dirty to Me - Poison "Imagine youre hearing awesome music here, because imagining it is a lot cheaper than getting licenses to actually play it." @yaypieMonday, November 7, 2011
  • Component TalksMonday, November 7, 2011
  • Component Talks Allen Rabinovich @allenrMonday, November 7, 2011
  • Component Talks Allen Rabinovich @allenr Architecting and building a module from scratch. Lessons in careful planning, optimization and feature- setting that go into module design.Monday, November 7, 2011
  • Component Talks Jeff ConniffMonday, November 7, 2011
  • Component Talks Jeff Conniff The Dial widget is a circular value input control. Its like a real-world, analog, volume control dial, but with much finer UI control.Monday, November 7, 2011
  • Component Talks Tripp BridgesMonday, November 7, 2011
  • Component Talks Tripp Bridges The API and feature set. Including some exciting demonstrations from Jeff ConniffMonday, November 7, 2011
  • Component Talks Eric Ferraiuolo @ericfMonday, November 7, 2011
  • Component Talks Eric Ferraiuolo @ericf YUI App Framework: Youve Been Wanting ThisMonday, November 7, 2011
  • Component Talks Luke Smith @ls_nMonday, November 7, 2011
  • Component Talks Luke Smith @ls_n From one, many; from many, one — class inheritance and composition in YUIMonday, November 7, 2011
  • Component Talks Derek Gathright @derekMonday, November 7, 2011
  • Component Talks Derek Gathright @derek Why YUI?Monday, November 7, 2011
  • Notable Talks YQLMonday, November 7, 2011
  • Notable Talks YQLMonday, November 7, 2011
  • Notable Talks YQLMonday, November 7, 2011
  • Notable Talks YQLMonday, November 7, 2011
  • Community TalksMonday, November 7, 2011
  • Community Talks Jeff Craig @foxxtrot Demystifying Loader: Advanced Module ConfigurationMonday, November 7, 2011
  • Community Talks Ryan Cannon @rcanine There is no off-season: NFL.coms move to YUIMonday, November 7, 2011
  • Community Talks Jeff Pihach @FromAnEgg YUI For DesignersMonday, November 7, 2011
  • Community Talks Jeff Pihach @FromAnEgg aka Hatch on irc YUI For DesignersMonday, November 7, 2011
  • Community Talks Pat Cavit @tivac Automating Website OptimizationMonday, November 7, 2011
  • Community Talks Eduardo Lundgren Introducing AlloyUI DiagramBuilderMonday, November 7, 2011
  • Community Talks Andrew Wooldridge @triptych YUI Hidden GemsMonday, November 7, 2011
  • Closing Time - SemisonicMonday, November 7, 2011
  • Closing Time - Semisonic "Imagine youre hearing awesome music here, because imagining it is a lot cheaper than getting licenses to actually play it." @yaypieMonday, November 7, 2011
  • Images All images used are copyright of the original publisher. Album artwork pulled from Wikipedia. Darth Vader image from bootspring.com Mobile device images from apple.com, google.com and motorola.com Harley image from harley- davidson.com Github images from github.comMonday, November 7, 2011
  • Enjoy The Conference Dav Glass, Hacker @davglassMonday, November 7, 2011