Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Computación voluntaria con CouchDB

1.440 Aufrufe

Veröffentlicht am

Charla en el evento Codemotion 2012, construyendo paso a paso una aplicación para computación voluntaria basada en CouchDB

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Computación voluntaria con CouchDB

  1. 1. CouchDB y la computación voluntariaJuan Julián Merelo Guervós Oficina de Software Libre & Grupo GeNeura Universidad de Granada @jjmerelo
  2. 2. Lecciones de andaluz (oriental) Para programadoresComputación voluntaria + @CouchDB by @jjmerelo 2
  3. 3. Github GitComputación voluntaria + @CouchDB by @jjmerelo 3
  4. 4. CouchDBComputación voluntaria + @CouchDB by @jjmerelo 4
  5. 5. JavaScriptComputación voluntaria + @CouchDB by @jjmerelo 5
  6. 6. ¿Por qué?Computación voluntaria + @CouchDB by @jjmerelo 6
  7. 7. Lista de deseosBajo umbral de entradaEscalabilidad masivaSistema todo-en-unoTolerancia a fallos (salvo fallos bizantinos)Computación voluntaria + @CouchDB by @jjmerelo 7
  8. 8. Por tanto... Necesitamos un almacén de objetosComputación voluntaria + @CouchDB by @jjmerelo 8
  9. 9. Deshojando la margaritaComputación voluntaria + @CouchDB by @jjmerelo 9
  10. 10. ¿Qué tiene de bueno CouchDB?Fácil de instalar (sudo apt-get install couchdb) Posiblemente ya lo está (desktopcouch): /usr/lib/desktopcouch/desktopcouch- get-port http://localhost:<port>/_utils Más seguro: file:///home/{username}/.local/share/ desktop-couch/couchdb.htmlHosting gratuito: CloudAnt, IriscouchComputación voluntaria + @CouchDB by @jjmerelo 10
  11. 11. Y ademásFácil de usar (interfaz REST)Versionado de documentosActualizaciones en tiempo real mediante _changesSoporte profesional con CouchBaseNo se vayan todavía, aún hay más.Computación voluntaria + @CouchDB by @jjmerelo 11
  12. 12. Volvamos a la computación (in)voluntariaBOINC, paradigmático.Infraestructura basada en PHP/ MySQLCapaz de manejar 8 millones de peticiones al díaComputación voluntaria + @CouchDB by @jjmerelo 12
  13. 13. Venga, confiesa, ¿para qué lo quieres? Ciencia low-cost. Ciencia ciudadana. Experimentos con algoritmos evolutivos Ciencia web: redes sociales + sistemas computacionalesComputación voluntaria + @CouchDB by @jjmerelo 13
  14. 14. Vale, me has convencido. ¿Qué necesitas?TareasUsuarios GruposEstadísticasGUIComputación voluntaria + @CouchDB by @jjmerelo 14
  15. 15. ¿Podrá my CouchDB con esto?Computación voluntaria + @CouchDB by @jjmerelo 15
  16. 16. O, dicho de otro modo ¡Enséñanos ya el código, cohone!Computación voluntaria + @CouchDB by @jjmerelo 16
  17. 17. Toma código bzr branch lp:couchdb-codemotion-ejemplos https://launchpad.net/couchdb-codemotion-ejemplosComputación voluntaria + @CouchDB by @jjmerelo 17
  18. 18. Venga, vamos a ello.Creemos la base de datosComputación voluntaria + @CouchDB by @jjmerelo 18
  19. 19. Chuck Norris no usaría el GUI curl -X PUT http://127.0.0.1:5984/dameargojmerelo@sheldon:~/$ lwp-request -m PUT http://localhost:5984/dameargoPlease enter content (text/plain) to be PUTed:[^D]Computación voluntaria + @CouchDB by @jjmerelo 19
  20. 20. Voluntaria sí, pero no involuntariajmerelo@penny:~/txt/docencia/tutoriales$ curl -X PUT http://CvavBlnCni:yBJzPFKYie@localhost:47143/u na_nuevajmerelo@penny:~/txt/docencia/tutoriales$ curl -X PUT https://jjmerelo:atitelavoyadeci@jjmerelo.cloudant. com/otra_masComputación voluntaria + @CouchDB by @jjmerelo 20
  21. 21. Ya está bien de crear bases de datos. O algo de eso.CouchDB almacena objetos JSON.Cada objeto tiene un _idMás metadatos: _revisionComputación voluntaria + @CouchDB by @jjmerelo 21
  22. 22. Computación voluntaria: tareas + usuariosComencemos con las tareas Objetos JSON en una base de datos ID de tarea Datos de tareajmerelo@penny:~/txt/docencia/tutoriales$ curl -X POST https://jjmerelo:unapass@jjmerelo.iriscouch.com/a hora_no -H "Content-Type: application/json" -dComputación voluntaria + @CouchDB by @jjmerelo 22
  23. 23. Entonces, ¿qué va a ser? 10110101 10101101 10110101 10101101 00110101 10111101 10110101=5 10101111=6 10101101 10110101 10101101 10101101=5 10100001 10111101 10101101 10111101 00110101 00110101#sofea via @jjmerelo @aiesparcia 23
  24. 24. Chuck Norris también se cansa de la línea de órdenesY usa, por supuesto, node.jsjmerelo@penny:~$ sudo apt-get install nodejsjmerelo@penny:~$ curl http://npmjs.org/install.sh | sudo shComputación voluntaria + @CouchDB by @jjmerelo 24
  25. 25. Se acabaron los one-linersComputación voluntaria + @CouchDB by @jjmerelo 25
  26. 26. Las tareas hay que hacerlasComputación voluntaria + @CouchDB by @jjmerelo 26
  27. 27. Poco a poco, va hilando la vieja el copoComputación voluntaria + @CouchDB by @jjmerelo 27
  28. 28. Espera ¿todo eso tiene que hacer el voluntario?Hay voluntarios muy voluntariosos.Pero tampoco hay que abusar.Usemos los adjuntos de CouchDBCualquier objeto puede llevar documentos binarios adjuntos.Computación voluntaria + @CouchDB by @jjmerelo 28
  29. 29. Cucha, que no sé como hacer peticionesPeticiones en CouchDB === Vistas.Las vistas son documentos de diseño.Vistas escritas en JavaScript En cualquier otro lenguaje, también.Dos partes: map y reduce Map: función sobre cada documento Reduce: aplicada a lista de documentos/clavesComputación voluntaria + @CouchDB by @jjmerelo 29
  30. 30. Cómodamente, desde nuestro colchónCreamos una vista temporal para evaluarla.Computación voluntaria + @CouchDB by @jjmerelo 30
  31. 31. Aún más comodamente, desde la línea de órdenesUsando CouchApp: sudo pip install couchappjmerelo@penny:~$ couchapp push https://usuario:clave@jjmerelo.iriscouch.com/ahora_noComputación voluntaria + @CouchDB by @jjmerelo 31
  32. 32. Vamos a bajarnos del sillónEn la variedad está el gusto: npm install cradleComputación voluntaria + @CouchDB by @jjmerelo 32
  33. 33. Finalmente, llegamos a la computación voluntaria de verasRecuperar del servidor al navegadorHacer cosas en el navegadorDevolver.Por supuesto, ¡con JQuery!Computación voluntaria + @CouchDB by @jjmerelo 33
  34. 34. ¿Tú de quién eres?Computación voluntaria + @CouchDB by @jjmerelo 34
  35. 35. Volvamos a la pescaComputación voluntaria + @CouchDB by @jjmerelo 35
  36. 36. Y ahora, a hacer sushiComputación voluntaria + @CouchDB by @jjmerelo 36
  37. 37. No te lo quedes todo, quiyoComputación voluntaria + @CouchDB by @jjmerelo 37
  38. 38. … y así sucesivamenteSegunda fase de verifificación.Particionado probabilístico para muchos clientes.Replicación de ida y vuelta para menor latencia(usar desktopcouch).Predicción de prestaciones social...Computación voluntaria + @CouchDB by @jjmerelo 38
  39. 39. Lo más importante Ni siquiera tiene que ser voluntariaComputación voluntaria + @CouchDB by @jjmerelo 39
  40. 40. Esto es todo Muchas graciasComputación voluntaria + @CouchDB by @jjmerelo 40
  41. 41. ¿Preguntas? + PerfilSocio de Digital Learning, enseñanza virtual: http://dlformacion.comLujoyglamour.net, la única novela que te puedes descargar de CPAN: cpan Net::LujoyglamourOficina de software libre de la UGR: http://osl.ugr.esGrupo de investigación GeNeuraComputación voluntaria + @CouchDB by @jjmerelo 41

×