61

Relational to json with node dan mc ghan-ls

Embed Size (px)

Citation preview

Page 1: Relational to json with node  dan mc ghan-ls
Page 2: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Del modelo relacional a JSON con Node.jsDan McGhanOracle Developer AdvocateJavaScript y HTML58 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.

Page 3: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Declaración relativa a la norma de Safe HarborEl 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

Page 4: Relational to json with node  dan mc ghan-ls

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

Page 5: Relational to json with node  dan mc ghan-ls

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

Page 6: Relational to json with node  dan mc ghan-ls

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

ConceptoImplementación de

~ RDBMS

Relación Tabla

Tupla Fila

6

Page 7: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id Proyecto TareaFecha 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

Page 8: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

TareasId 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

Page 9: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

TareasId 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

Page 10: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id Proyecto TareaFecha 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

Page 11: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Tareas

Tareas Proyectos

Id Proyecto TareaFecha 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

Page 12: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id Proyecto TareaFecha 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

Page 13: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id NombreFecha 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

Page 14: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id NombreFecha 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

Page 15: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id NombreFecha 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

Page 16: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id NombreFecha 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

Page 17: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id NombreFecha 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

Page 18: Relational to json with node  dan mc ghan-ls

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

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 4Normalización

18

Page 19: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id NombreFecha 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

Page 20: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

select t.id, t.nombre, t.f_final, t.estadofrom tareas t

Id NombreFecha 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

Page 21: Relational to json with node  dan mc ghan-ls

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.presupfrom tareas tjoin proyectos p on t.proyecto_id = p.id

Id Proyecto TareaFecha 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

Page 22: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

SQLselect 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.presupfrom tareas tjoin proyectos p on t.proyecto_id = p.idjoin persona_tarea_lookup ptl on t.id = ptl.tarea_idjoin personas pp on ptl.persona_id = pp.idgroup by t.id, p.nombre, t.nombre, t.f_final, t.estado, p.presup

Id Proyecto TareaFecha 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

Page 23: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Cómo se siente un desarrolladorde soluciones front-end

23

Page 24: Relational to json with node  dan mc ghan-ls

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

Page 25: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Id Proyecto TareaFecha 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

Page 26: Relational to json with node  dan mc ghan-ls

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

Page 27: Relational to json with node  dan mc ghan-ls

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

Page 28: Relational to json with node  dan mc ghan-ls

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

Page 29: Relational to json with node  dan mc ghan-ls

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

Page 30: Relational to json with node  dan mc ghan-ls

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

Page 31: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Servidor web sencillo

Node.js

HTTP(S)/REST

Navegador web

31

Page 32: Relational to json with node  dan mc ghan-ls

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

Page 33: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Servidor web sencillo

Node.jsNavegador web

http://localhost:3000/

Hello World!

33

Page 34: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Arquitectura

Navegador web

Node.jsOracle

HTTP(S)/REST SQL*Net

34

Page 35: Relational to json with node  dan mc ghan-ls

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/SQLCompatibilidad con variables de enlaceRecuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle

Gestión de transacciones

Objetos ResultSet desplazablesy actualizables

Compatibilidad con objetos LOB de Oraclemediante flujosde Node.js

Oracledb

Pool

Conexión

ResultSet Lob

35

Page 36: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Reseña de la ///clase de controladores para Oracle/Node.jsParámetros de configuración

Pool de conexiones

Ejecución de SQL y PL/SQLCompatibilidad con variables de enlaceRecuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle

Gestión de transacciones

Objetos ResultSet desplazablesy actualizables

Compatibilidad con objetos LOB de Oraclemediante flujosde Node.js

Oracledb

Pool

Conexión

ResultSet Lob

36

Page 37: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Reseña de la ///clase de controladores para Oracle/Node.jsParámetros de configuración

Pool de conexiones

Ejecución de SQL y PL/SQLCompatibilidad con variables de enlaceRecuperación de filas como objetos o matrices de JavaScript Conversión de tipos de JavaScript y Oracle

Gestión de transacciones

Objetos ResultSet desplazablesy actualizables

Compatibilidad con objetos LOB de Oraclemediante flujosde Node.js

Oracledb

Pool

Conexión

ResultSet Lob

37

Page 38: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Reseña de la ///clase de controladores para Oracle/Node.jsParámetros de configuración

Pool de conexiones

Ejecución de SQL y PL/SQLCompatibilidad con variables de enlaceRecuperación de filas como objetoso matrices de JavaScript Conversión de tipos de JavaScript y Oracle

Gestión de transacciones

Objetos ResultSet desplazablesy actualizables

Compatibilidad con objetos LOB de Oraclemediante flujosde Node.js

Oracledb

Pool

Conexión

ResultSet Lob

38

Page 39: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Reseña de la ///clase de controladores para Oracle/Node.jsParámetros de configuración

Pool de conexiones

Ejecución de SQL y PL/SQLCompatibilidad con variables de enlaceRecuperación de filas como objetoso matrices de JavaScript Conversión de tipos de JavaScript y Oracle

Gestión de transacciones

Objetos ResultSet desplazablesy actualizables

Compatibilidad con objetos LOB de Oraclemediante flujosde Node.js

Oracledb

Pool

Conexión

ResultSet Lob

39

Page 40: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Reseña de la ///clase de controladores para Oracle/Node.jsParámetros de configuración

Pool de conexiones

Ejecución de SQL y PL/SQLCompatibilidad con variables de enlaceRecuperación de filas como objetoso matrices de JavaScript Conversión de tipos de JavaScript y Oracle

Gestión de transacciones

Objetos ResultSet desplazablesy actualizables

Compatibilidad con objetos LOB de Oraclemediante flujosde Node.js

Oracledb

Pool

Conexión

ResultSet Lob

40

Page 41: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Reseña de la ///clase de controladores para Oracle/Node.jsParámetros de configuración

Pool de conexiones

Ejecución de SQL y PL/SQLCompatibilidad con variables de enlaceRecuperación de filas como objetoso matrices de JavaScript Conversión de tipos de JavaScript y Oracle

Gestión de transacciones

Objetos ResultSet desplazablesy actualizables

Compatibilidad con objetos LOB de Oraclemediante flujosde Node.js

Oracledb

Pool

Conexión

ResultSet Lob

41

Page 42: Relational to json with node  dan mc ghan-ls

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 bindsfunction(err, results) {res.send(results.rows);

});

});

});

node-oracledb

42

Page 43: Relational to json with node  dan mc ghan-ls

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 bindsfunction(err, results) {res.send(results.rows);

});

});

});

node-oracledb

43

Page 44: Relational to json with node  dan mc ghan-ls

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 bindsfunction(err, results) {res.send(results.rows);

});

});

});

node-oracledb

44

Page 45: Relational to json with node  dan mc ghan-ls

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 bindsfunction(err, results) {res.send(results.rows);

});

});

});

node-oracledb

45

Page 46: Relational to json with node  dan mc ghan-ls

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 bindsfunction(err, results) {

res.send(results.rows);}

);}

);});

node-oracledb

46

Page 47: Relational to json with node  dan mc ghan-ls

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 bindsfunction(err, results) {res.send(results.rows);

});

});

});

node-oracledb

47

Page 48: Relational to json with node  dan mc ghan-ls

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

Page 49: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Esquema de RRHH

49

Page 50: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Desde empleados hacia abajo

50

Page 51: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Desde departamentos hacia abajo

51

Page 52: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Código JSON resultante

52

Page 53: Relational to json with node  dan mc ghan-ls

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

Page 54: Relational to json with node  dan mc ghan-ls

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

Page 55: Relational to json with node  dan mc ghan-ls

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

Page 56: Relational to json with node  dan mc ghan-ls

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

Page 57: Relational to json with node  dan mc ghan-ls

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

Page 58: Relational to json with node  dan mc ghan-ls

Copyright © 2016 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. |

Preguntas y respuestas

Page 59: Relational to json with node  dan mc ghan-ls

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

Page 60: Relational to json with node  dan mc ghan-ls

Copyright © 2015 Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 60

Page 61: Relational to json with node  dan mc ghan-ls