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.

Relational to json with node dan mc ghan-ls

214 views

Published on

Relational to json with node dan mc ghan-ls

Published in: Technology
  • Login to see the comments

Relational to json with node dan mc ghan-ls

  1. 1. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Del modelo relacional a JSON con Node.js Dan McGhan Oracle Developer Advocate JavaScript y HTML5 8 de marzo de 2016 Aguarde un momento por favor. La sesión comenzará en breve en el horario señalado en el programa. Muchas gracias.
  2. 2. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Declaración relativa a la norma de Safe Harbor El objetivo de esta presentación es señalar la dirección general de nuestros productos. Se ofrece solo con fines informativos y no podrá incorporarse en ningún contrato. No constituye un compromiso de proporcionar materiales, código ni funcionalidades de ningún tipo, y no debería servir de fundamento para la toma de decisiones de compra. El desarrollo, lanzamiento y cronograma de cualquiera de las características o funcionalidades descritas para los productos de Oracle quedan a criterio exclusivo de Oracle. 3
  3. 3. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Temario Modelo relacional vs. JSON Node.js y node-oracledb Conversión de datos relacionales a JSON 1 2 3 4
  4. 4. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Temario Modelo relacional vs. JSON Node.js y node-oracledb Conversión de datos relacionales a JSON 1 2 3 5
  5. 5. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Modelo relacional • Basado en las matemáticas: Teoría de conjuntos y relacional • La normalización se usa para – eliminar datos redundantes – evitar anomalías relativas a la inserción, actualización y eliminación – maximizar la flexibilidad, evitar el rediseño de bases de datos Concepto Implementación de ~ RDBMS Relación Tabla Tupla Fila 6
  6. 6. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Proyecto Tarea Fecha de finalización programada Estado Asignada Ubicación Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa Dan McGhan y Shakeeb Rahman Brooklyn y Reston 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente Steven Feuerstein Chicago 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta Gerald Venzel San Francisco 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente Chris Jones Perth 3000 Tareas 7
  7. 7. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Tareas Id Proyecto Tarea Fecha de finalización programada Estado Asignada Ubicación Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa Dan McGhan y Shakeeb Rahman Brooklyn y Reston 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente Steven Feuerstein Chicago 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta Gerald Venzel San Francisco 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente Chris Jones Perth 3000 8
  8. 8. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Tareas Id Proyecto Tarea Fecha de finalización programada Estado Asignada Ubicación Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa Dan McGhan y Shakeeb Rahman Brooklyn y Reston 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente Steven Feuerstein Chicago 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta Gerald Venzel San Francisco 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente Chris Jones Perth 3000 9
  9. 9. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Proyecto Tarea Fecha de finalización programada Estado Asignada Ubicación Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa Dan McGhan y Shakeeb Rahman Brooklyn y Reston 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente Steven Feuerstein Chicago 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta Gerald Venzel San Francisco 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente Chris Jones Perth 3000 Tareas Tareas 10
  10. 10. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Tareas Tareas Proyectos Id Proyecto Tarea Fecha de finalización programada Estado Asignada Ubicación Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa Dan McGhan y Shakeeb Rahman Brooklyn y Reston 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente Steven Feuerstein Chicago 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta Gerald Venzel San Francisco 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente Chris Jones Perth 3000 11
  11. 11. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Proyecto Tarea Fecha de finalización programada Estado Asignada Ubicación Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa Dan McGhan y Shakeeb Rahman Brooklyn y Reston 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente Steven Feuerstein Chicago 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta Gerald Venzel San Francisco 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente Chris Jones Perth 3000 Tareas Tareas Proyectos Personas 12
  12. 12. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Nombre Fecha de finalización programada Estado 1 Migración a Oracle JET 08/03/2016 Completa 2 Pruebas de QA 21/05/2016 Pendiente 3 Actualización de DEV a 12c 15/04/2016 Abierta 4 Pruebas de regresión 22/04/2016 Pendiente Tareas Proyectos Id Nombre Presup . 1 Sitio web principal 15.000 2 Actualización de bases de datos 12.000 Personas Id Nombre Ubicación 1 Dan McGhan Brooklyn 2 Shakeeb Rahman Reston 3 Steven Feuerstein Chicago 4 Gerald Venzel San Francisco 5 Chris Jones Perth 13
  13. 13. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Nombre Fecha de finalización programada Estado 1 Migración a Oracle JET 08/03/2016 Completa 2 Pruebas de QA 21/05/2016 Pendiente 3 Actualización de DEV a 12c 15/04/2016 Abierta 4 Pruebas de regresión 22/04/2016 Pendiente Tareas Proyectos Id Nombre Presup. 1 Sitio web principal 15.000 2 Actualización de bases de datos 12.000 Id de proyecto Id de persona 1 Id de persona 2 Personas Id Nombre Ubicación 1 Dan McGhan Brooklyn 2 Shakeeb Rahman Reston 3 Steven Feuerstein Chicago 4 Gerald Venzel San Francisco 5 Chris Jones Perth
  14. 14. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Nombre Fecha de finalización programada Estado 1 Migración a Oracle JET 08/03/2016 Completa 2 Pruebas de QA 21/05/2016 Pendiente 3 Actualización de DEV a 12c 15/04/2016 Abierta 4 Pruebas de regresión 22/04/2016 Pendiente Tareas Proyectos Personas Id Nombre Presup. 1 Sitio web principal 15.000 2 Actualización de bases de datos 12.000 Id Nombre Ubicación 1 Dan McGhan Brooklyn 2 Shakeeb Rahman Reston 3 Steven Feuerstein Chicago 4 Gerald Venzel San Francisco 5 Chris Jones Perth Id de proyecto Id de persona 1 Id de persona 2 1 1 2 2 15
  15. 15. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Nombre Fecha de finalización programada Estado 1 Migración a Oracle JET 08/03/2016 Completa 2 Pruebas de QA 21/05/2016 Pendiente 3 Actualización de DEV a 12c 15/04/2016 Abierta 4 Pruebas de regresión 22/04/2016 Pendiente Tareas Proyectos Personas Id Nombre Presup. 1 Sitio web principal 15.000 2 Actualización de bases de datos 12.000 Id Nombre Ubicación 1 Dan McGhan Brooklyn 2 Shakeeb Rahman Reston 3 Steven Feuerstein Chicago 4 Gerald Venzel San Francisco 5 Chris Jones Perth Id de proyecto Id de persona 1 Id de persona 2 1 1 2 1 3 2 4 2 5 16
  16. 16. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Nombre Fecha de finalización programada Estado 1 Migración a Oracle JET 08/03/2016 Completa 2 Pruebas de QA 21/05/2016 Pendiente 3 Actualización de DEV a 12c 15/04/2016 Abierta 4 Pruebas de regresión 22/04/2016 Pendiente Tareas Proyectos Personas Id Nombre Presup. 1 Sitio web principal 15.000 2 Actualización de bases de datos 12.000 Id Nombre Ubicación 1 Dan McGhan Brooklyn 2 Shakeeb Rahman Reston 3 Steven Feuerstein Chicago 4 Gerald Venzel San Francisco 5 Chris Jones Perth Id de proyecto 1 1 2 2 Búsqueda de tareas por persona Id de persona Id de tarea 1 1 2 1 3 2 4 3 5 4 17
  17. 17. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Nombre Fecha de finalizaci ón program ada Estado 1 Migración a Oracle JET 08/03/2016 Completa 2 Pruebas de QA 21/05/2016 Pendiente 3 Actualización de DEV a 12c 15/04/2016 Abierta 4 Pruebas de regresión 22/04/2016 Pendiente Tareas Proyecto s Persona s Id Nombre Presup . 1 Sitio web principal 15.000 2 Actualización de bases de datos 12.000 Id Nombre Ubicación 1 Dan McGhan Brooklyn 2 Shakeeb Rahman Reston 3 Steven Feuerstein Chicago 4 Gerald Venzel San Francisco 5 Chris Jones Perth Id de proyecto 1 1 2 2 Búsqueda de tareas por persona Id de persona Id de tarea 1 1 2 1 3 2 4 3 5 4 Normalización 18
  18. 18. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Nombre Fecha de finalización programada Estado 1 Migración a Oracle JET 08/03/2016 Completa 2 Pruebas de QA 21/05/2016 Pendiente 3 Actualización de DEV a 12c 15/04/2016 Abierta 4 Pruebas de regresión 22/04/2016 Pendiente Tareas Proyectos Personas Id Nombre Presup. 1 Sitio web principal 15.000 2 Actualización de bases de datos 12.000 Id Nombre Ubicación 1 Dan McGhan Brooklyn 2 Shakeeb Rahman Reston 3 Steven Feuerstein Chicago 4 Gerald Venzel San Francisco 5 Chris Jones Perth Id de proyecto 1 1 2 2 Búsqueda de tareas por persona Id de persona Id de tarea 1 1 2 1 3 2 4 3 5 4 19
  19. 19. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | select t.id, t.nombre, t.f_final, t.estado from tareas t Id Nombre Fecha de finalización programada Estado 1 Migración a Oracle JET 08/03/2016 Completa 2 Pruebas de QA 21/05/2016 Pendiente 3 Actualización de DEV a 12c 15/04/2016 Abierta 4 Pruebas de regresión 22/04/2016 Pendiente SQL 20
  20. 20. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | select t.id, p.nombre proyecto, t.nombre tarea, t.f_final, t.estado, p.presup from tareas t join proyectos p on t.proyecto_id = p.id Id Proyecto Tarea Fecha de finalización programada Estado Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente 3000 SQL 21
  21. 21. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | SQL select t.id, p.nombre proyecto, t.nombre tarea, t.f_final, t.estado, listagg(pp.nombre, ' & ') within group (order by pp.nombre) asignada, listagg(pp.ubicacion, ' & ') within group (order by pp.nombre) ubicacion, p.presup from tareas t join proyectos p on t.proyecto_id = p.id join persona_tarea_lookup ptl on t.id = ptl.tarea_id join personas pp on ptl.persona_id = pp.id group by t.id, p.nombre, t.nombre, t.f_final, t.estado, p.presup Id Proyecto Tarea Fecha de finalización programada Estado Asignada Ubicación Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa Dan McGhan y Shakeeb Rahman Brooklyn y Reston 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente Steven Feuerstein Chicago 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta Gerald Venzel San Francisco 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente Chris Jones Perth 3000 22
  22. 22. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Cómo se siente un desarrollador de soluciones front-end 23
  23. 23. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Reseña de JSON • Se basa en 2 estructuras (pueden ser recursivas) • Los objetos están formados por pares de clave y valor • Los tipos de valores posibles son los siguientes objeto: {} matriz: [] estructura: objeto o matriz Booleano: verdadero o falsoalfanumérico: "prueba" numérico: 100 sin valor: nulo 24
  24. 24. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Id Proyecto Tarea Fecha de finalización programada Estado Asignada Ubicación Presup. 1 Sitio web principal Migración a Oracle JET 08/03/2016 Completa Dan McGhan y Shakeeb Rahman Brooklyn y Reston 15.000 2 Sitio web principal Pruebas de QA 21/05/2016 Pendiente Steven Feuerstein Chicago 10.000 3 Actualización de bases de datos Actualización de DEV a 12c 15/04/2016 Abierta Gerald Venzel San Francisco 12.000 4 Actualización de bases de datos Pruebas de regresión 22/04/2016 Pendiente Chris Jones Perth 3000 Tareas 25
  25. 25. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | [ { "id": 1, "proyecto": "Sitio web principal", "tarea": "Migración a Oracle JET", “fecha de finalización programada": "08/03/2016", "estado": "Completa", "asignada": "Dan McGhan y Shakeeb Rahman", "ubicación": "Brooklyn y Reston", "presup": 15000 }, ... ] Tareas JSONal estilo 26
  26. 26. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | var tareas; tareas = JSON.parse(insert JSON here); tareas.forEach(function(tarea) { doSomethingAwesome(tarea); }); JSON .parse() 27
  27. 27. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Temario Modelo relacional vs. JSON Node.js y node-oracledb Conversión de datos relacionales a JSON 1 2 3 28
  28. 28. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | ¿Qué es Node.js? • Una plataforma de desarrollo de JavaScript – Basada en el motor de JavaScript V8 de Google – Permite que los desarrolladores usen JavaScript en el servidor • Grandioso para crear sitios web – Conecta sistemas diferentes • Tiene módulos incorporados para – Comunicación HTTP(s) – Acceso al sistema de archivos – Cifrado y compresión – Mucho más 29
  29. 29. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | ¿Qué es NPM? • Node Package Manager – Se usa para instalar y gestionar dependencias – Como yum/apt para Node.js • Hoy hay alrededor de 240.000 paquetes disponibles – Servidores web, servidores proxy – Controladores de bases de datos – Generación de documentos – Casi cualquier cosa... 30
  30. 30. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Servidor web sencillo Node.js HTTP(S)/REST Navegador web 31
  31. 31. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | var express = require('express'); var app = express(); app.use('/', function(req, res) { res.end('Hello World!'); }); app.listen(3000, function() { console.log('Listening at http://localhost:3000/'); }); Express 32
  32. 32. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Servidor web sencillo Node.js Navegador web http://localhost:3000/ Hello World! 33
  33. 33. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Arquitectura Navegador web Node.js Oracle HTTP(S)/REST SQL*Net 34
  34. 34. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Reseña de la ///clase de controladores para Oracle/Node.js Parámetros de configuración Pool de conexiones Ejecución de SQL y PL/SQL Compatibilidad con variables de enlace Recuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle Gestión de transacciones Objetos ResultSet desplazables y actualizables Compatibilidad con objetos LOB de Oracle mediante flujos de Node.js Oracledb Pool Conexión ResultSet Lob 35
  35. 35. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Reseña de la ///clase de controladores para Oracle/Node.js Parámetros de configuración Pool de conexiones Ejecución de SQL y PL/SQL Compatibilidad con variables de enlace Recuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle Gestión de transacciones Objetos ResultSet desplazables y actualizables Compatibilidad con objetos LOB de Oracle mediante flujos de Node.js Oracledb Pool Conexión ResultSet Lob 36
  36. 36. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Reseña de la ///clase de controladores para Oracle/Node.js Parámetros de configuración Pool de conexiones Ejecución de SQL y PL/SQL Compatibilidad con variables de enlace Recuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle Gestión de transacciones Objetos ResultSet desplazables y actualizables Compatibilidad con objetos LOB de Oracle mediante flujos de Node.js Oracledb Pool Conexión ResultSet Lob 37
  37. 37. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Reseña de la ///clase de controladores para Oracle/Node.js Parámetros de configuración Pool de conexiones Ejecución de SQL y PL/SQL Compatibilidad con variables de enlace Recuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle Gestión de transacciones Objetos ResultSet desplazables y actualizables Compatibilidad con objetos LOB de Oracle mediante flujos de Node.js Oracledb Pool Conexión ResultSet Lob 38
  38. 38. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Reseña de la ///clase de controladores para Oracle/Node.js Parámetros de configuración Pool de conexiones Ejecución de SQL y PL/SQL Compatibilidad con variables de enlace Recuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle Gestión de transacciones Objetos ResultSet desplazables y actualizables Compatibilidad con objetos LOB de Oracle mediante flujos de Node.js Oracledb Pool Conexión ResultSet Lob 39
  39. 39. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Reseña de la ///clase de controladores para Oracle/Node.js Parámetros de configuración Pool de conexiones Ejecución de SQL y PL/SQL Compatibilidad con variables de enlace Recuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle Gestión de transacciones Objetos ResultSet desplazables y actualizables Compatibilidad con objetos LOB de Oracle mediante flujos de Node.js Oracledb Pool Conexión ResultSet Lob 40
  40. 40. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Reseña de la ///clase de controladores para Oracle/Node.js Parámetros de configuración Pool de conexiones Ejecución de SQL y PL/SQL Compatibilidad con variables de enlace Recuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle Gestión de transacciones Objetos ResultSet desplazables y actualizables Compatibilidad con objetos LOB de Oracle mediante flujos de Node.js Oracledb Pool Conexión ResultSet Lob 41
  41. 41. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | var express = require('express'); var app = express(); var oracledb = require('oracledb'); app.get('/api/empleados', function(req, res, next) { oracledb.getConnection( {user: 'hr', password: 'oracle', connectString: 'localhost/XE'}, function(err, connection) { connection.execute( 'select * from empleados', {},//no binds function(err, results) { res.send(results.rows); } ); } ); }); node-oracledb 42
  42. 42. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | var express = require('express'); var app = express(); var oracledb = require('oracledb'); app.get('/api/empleados', function(req, res, next) { oracledb.getConnection( {user: 'hr', password: 'oracle', connectString: 'localhost/XE'}, function(err, connection) { connection.execute( 'select * from empleados', {},//no binds function(err, results) { res.send(results.rows); } ); } ); }); node-oracledb 43
  43. 43. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | var express = require('express'); var app = express(); var oracledb = require('oracledb'); app.get('/api/empleados', function(req, res, next) { oracledb.getConnection( {user: 'hr', password: 'oracle', connectString: 'localhost/XE'}, function(err, connection) { connection.execute( 'select * from empleados', {},//no binds function(err, results) { res.send(results.rows); } ); } ); }); node-oracledb 44
  44. 44. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | var express = require('express'); var app = express(); var oracledb = require('oracledb'); app.get('/api/empleados', function(req, res, next) { oracledb.getConnection( {user: 'hr', password: 'oracle', connectString: 'localhost/XE'}, function(err, connection) { connection.execute( 'select * from empleados', {},//no binds function(err, results) { res.send(results.rows); } ); } ); }); node-oracledb 45
  45. 45. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | var express = require('express'); var app = express(); var oracledb = require('oracledb'); app.get('/api/empleados', function(req, res, next) { oracledb.getConnection( {user: 'hr', password: 'oracle', connectString: 'localhost/XE'}, function(err, connection) { connection.execute( 'select * from empleados', {},//no binds function(err, results) { res.send(results.rows); } ); } ); }); node-oracledb 46
  46. 46. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | var express = require('express'); var app = express(); var oracledb = require('oracledb'); app.get('/api/empleados', function(req, res, next) { oracledb.getConnection( {user: 'hr', password: 'oracle', connectString: 'localhost/XE'}, function(err, connection) { connection.execute( 'select * from empleados', {},//no binds function(err, results) { res.send(results.rows); } ); } ); }); node-oracledb 47
  47. 47. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Temario Modelo relacional vs. JSON Node.js y node-oracledb Conversión de datos relacionales a JSON 1 2 3 48
  48. 48. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Esquema de RRHH 49
  49. 49. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Desde empleados hacia abajo 50
  50. 50. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Desde departamentos hacia abajo 51
  51. 51. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Código JSON resultante 52
  52. 52. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Cómo usar Node.js para crear código JSON – toma 1 • La estructura del código será similar a la de la solución PL/SQL • Se usará el controlador node-oracledb para ejecutar las consultas • Los resultados del controlador se usarán para construir un objeto JS • El objeto final se serializará y devolverá 53
  53. 53. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Cómo usar Node.js para crear código JSON – toma 2 • Se modificará la solución anterior para emplear un pool de conexiones • ¡Y listo! 54
  54. 54. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Cómo usar Node.js para crear código JSON – toma 3 • Ahora vamos a sumar los datos del lado del cliente • El sistema RDBMS lo va a hacer por nosotros • Reduce las consultas de 7 a 3 55
  55. 55. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Cómo usar Node.js para crear código JSON – toma 4 • Node.js permite ejecutar consultas en paralelo – Requiere conexiones individuales del pool 56
  56. 56. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Resumen • Para numerosas aplicaciones, el modelo relacional es la mejor manera de almacenar datos – Pero son muchos quienes preferirán tener los datos en formato JSON • Node.js puede usarse para generar fácilmente código JSON a partir de bases de datos relacionales – Es recomendable que los desarrolladores dediquen tiempo a aprender sobre bases de datos para maximizar el rendimiento • Próximos pasos – Obtenga más información sobre el controlador Node.js para Oracle Database 57
  57. 57. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Preguntas y respuestas
  58. 58. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Siga aprendiendo con las capacitaciones de Oracle University • Capacitación práctica presencial o en línea a cargo de instructores de trayectoria de todo el mundo • Nuevos servicios de aprendizaje con suscripción para brindarle acceso a la capacitación en todo momento • Programas de certificación para validar sus competencias education.oracle.com 59
  59. 59. Copyright © 2015 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | 60

×