SlideShare una empresa de Scribd logo
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.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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. |
Cómo se
siente
un
desarrollador
de
soluciones
front-end
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
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
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
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
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
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
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
Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. |
Servidor web sencillo
Node.js
HTTP(S)/REST
Navegador web
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. |
Esquema de RRHH
49
Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. |
Desde empleados hacia abajo
50
Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. |
Desde departamentos hacia abajo
51
Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. |
Código JSON resultante
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
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
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
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
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
Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. |
Preguntas y respuestas
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
Copyright © 2015 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | 60
Relational to json with node  dan mc ghan-ls

Más contenido relacionado

PDF
Solucionario
DOC
____2016 CV Osipov Aleksey PMM
PDF
english
PDF
Normas de trabalho 7º congresso tocantinense de cardiologia
PDF
12 Convoi - Interim Report en
PDF
Prevision mercredi 04 juin 2014
PDF
Zbulesa 11
PDF
KISHA KOMPROMETUESE E TIATIRËS -
Solucionario
____2016 CV Osipov Aleksey PMM
english
Normas de trabalho 7º congresso tocantinense de cardiologia
12 Convoi - Interim Report en
Prevision mercredi 04 juin 2014
Zbulesa 11
KISHA KOMPROMETUESE E TIATIRËS -

Destacado (7)

PDF
Recommendation letter Sandrine Pinaud - HRD
ODP
Mësuesit e rremë (2 Timoteut 3)
DOC
Vijayababu-Resume
PDF
Ungjillëzimi - Pjesa 3 (Kisha sipas Dhiatës së Re)
PDF
A Non-Traditional Analysis of the Craft Beer Industry
ODP
παρουσίαση 2ης δραστηριότητας
PPT
Hurricanes and Tornadoes
Recommendation letter Sandrine Pinaud - HRD
Mësuesit e rremë (2 Timoteut 3)
Vijayababu-Resume
Ungjillëzimi - Pjesa 3 (Kisha sipas Dhiatës së Re)
A Non-Traditional Analysis of the Craft Beer Industry
παρουσίαση 2ης δραστηριότητας
Hurricanes and Tornadoes
Publicidad

Similar a Relational to json with node dan mc ghan-ls (20)

PDF
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
PPTX
Presentación Linked data BCN - Red linked data españa
PPTX
6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua
PPTX
Migrando grandes KB
PPTX
Talend Solutions
PPTX
Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...
PPTX
Mejores Prácticas de SQL Server para implementar SharePoint Server
PDF
Portal de datos abiertos de la ugr
PPTX
STATUS DE PROYECTO TECNOLOGICO PARA LA SEMANA
PPTX
ESTATUS DE PROYECTO DE TI PARA EL SECTOR JURIDICO
PDF
Web logic multi tenancy fundamentals
PDF
Weblogic arquitectura-orientada-soa-427129-esa(1)
PPTX
Integrando los servicios REST a nuestras aplicaciones APEX
PDF
Introducción a U-SQL lenguaje que hace fácil el procesamiento de Big Data
PPTX
Explorando los Sabores de SSIS 2016
PDF
Construcción de nuevo Sistema de Regulación - Ejecución
PPTX
Stretch data base - Jorge Muchaypiña G.
PPTX
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
PDF
Non-Relational Database Management System | T1
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Presentación Linked data BCN - Red linked data españa
6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua
Migrando grandes KB
Talend Solutions
Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...
Mejores Prácticas de SQL Server para implementar SharePoint Server
Portal de datos abiertos de la ugr
STATUS DE PROYECTO TECNOLOGICO PARA LA SEMANA
ESTATUS DE PROYECTO DE TI PARA EL SECTOR JURIDICO
Web logic multi tenancy fundamentals
Weblogic arquitectura-orientada-soa-427129-esa(1)
Integrando los servicios REST a nuestras aplicaciones APEX
Introducción a U-SQL lenguaje que hace fácil el procesamiento de Big Data
Explorando los Sabores de SSIS 2016
Construcción de nuevo Sistema de Regulación - Ejecución
Stretch data base - Jorge Muchaypiña G.
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
Non-Relational Database Management System | T1
Publicidad

Más de CJava Peru (11)

PDF
Desarrollo de Software usando Patrones y JDBC 4.0
PDF
"Desarrollo de Microservicios con Spring Boot y Spring MVC"
PPTX
Oracle DataBase Hacking Etico
PDF
Java on mobile
PDF
From zero to oracle zfs storage appliance backup and recovery in 60 minutes
PDF
Practical security hands on with oracle solaris
PDF
Down to-earth microservices with java ee
PDF
Módulo I fundamentals I
DOCX
Syllabus fundamentals I
PDF
Internet of things architecture and impact
PDF
Sql tuning without trying arup nanda ls
Desarrollo de Software usando Patrones y JDBC 4.0
"Desarrollo de Microservicios con Spring Boot y Spring MVC"
Oracle DataBase Hacking Etico
Java on mobile
From zero to oracle zfs storage appliance backup and recovery in 60 minutes
Practical security hands on with oracle solaris
Down to-earth microservices with java ee
Módulo I fundamentals I
Syllabus fundamentals I
Internet of things architecture and impact
Sql tuning without trying arup nanda ls

Último (20)

PPTX
Presentación de Redes de Datos modelo osi
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
Maste clas de estructura metálica y arquitectura
PDF
Diapositiva proyecto de vida, materia catedra
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
CyberOps Associate - Cisco Networking Academy
PDF
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Presentación de Redes de Datos modelo osi
Historia Inteligencia Artificial Ana Romero.pptx
SAP Transportation Management para LSP, TM140 Col18
historia_web de la creacion de un navegador_presentacion.pptx
Propuesta BKP servidores con Acronis1.pptx
Presentación PASANTIAS AuditorioOO..pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
El-Gobierno-Electrónico-En-El-Estado-Bolivia
la-historia-de-la-medicina Edna Silva.pptx
Presentacion de Alba Curso Auditores Internos ISO 19011
Maste clas de estructura metálica y arquitectura
Diapositiva proyecto de vida, materia catedra
Influencia-del-uso-de-redes-sociales.pdf
CyberOps Associate - Cisco Networking Academy
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Power Point Nicolás Carrasco (disertación Roblox).pptx
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf

Relational to json with node dan mc ghan-ls

  • 2. 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.
  • 3. 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
  • 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 4
  • 5. 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
  • 6. 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
  • 7. 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
  • 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 8
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 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 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
  • 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 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
  • 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 2 15
  • 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 Id de persona 1 Id de persona 2 1 1 2 1 3 2 4 2 5 16
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Cómo se siente un desarrollador de soluciones front-end 23
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Servidor web sencillo Node.js HTTP(S)/REST Navegador web 31
  • 32. 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
  • 33. 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
  • 34. 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
  • 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 35
  • 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 36
  • 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 37
  • 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 38
  • 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 39
  • 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 40
  • 41. 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
  • 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 42
  • 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 43
  • 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 44
  • 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 45
  • 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 46
  • 47. 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
  • 48. 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
  • 49. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Esquema de RRHH 49
  • 50. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Desde empleados hacia abajo 50
  • 51. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Desde departamentos hacia abajo 51
  • 52. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Código JSON resultante 52
  • 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 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
  • 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 2 • Se modificará la solución anterior para emplear un pool de conexiones • ¡Y listo! 54
  • 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 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
  • 56. 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
  • 57. 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
  • 58. Copyright © 2016 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | Preguntas y respuestas
  • 59. 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
  • 60. Copyright © 2015 Oracle y/o sus compañías afiliadas.Todos los derechos reservados. | 60