SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

Recommendation letter Sandrine Pinaud - HRD
Recommendation letter Sandrine Pinaud - HRDRecommendation letter Sandrine Pinaud - HRD
Recommendation letter Sandrine Pinaud - HRDSabrina Rolland
 
Mësuesit e rremë (2 Timoteut 3)
Mësuesit e rremë (2 Timoteut 3)Mësuesit e rremë (2 Timoteut 3)
Mësuesit e rremë (2 Timoteut 3)Asambleja Biblike
 
Ungjillëzimi - Pjesa 3 (Kisha sipas Dhiatës së Re)
Ungjillëzimi - Pjesa 3 (Kisha sipas Dhiatës së Re)Ungjillëzimi - Pjesa 3 (Kisha sipas Dhiatës së Re)
Ungjillëzimi - Pjesa 3 (Kisha sipas Dhiatës së Re)Asambleja Biblike
 
A Non-Traditional Analysis of the Craft Beer Industry
A Non-Traditional Analysis of the Craft Beer IndustryA Non-Traditional Analysis of the Craft Beer Industry
A Non-Traditional Analysis of the Craft Beer IndustryMarissa Kotar
 
παρουσίαση 2ης δραστηριότητας
παρουσίαση 2ης δραστηριότηταςπαρουσίαση 2ης δραστηριότητας
παρουσίαση 2ης δραστηριότηταςMarthaBoo
 
Hurricanes and Tornadoes
Hurricanes and TornadoesHurricanes and Tornadoes
Hurricanes and Tornadoesjmu101211
 

En vedette (7)

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

Similaire à Relational to json with node dan mc ghan-ls

Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...Software Guru
 
Presentación Linked data BCN - Red linked data españa
Presentación Linked  data BCN  - Red linked data españaPresentación Linked  data BCN  - Red linked data españa
Presentación Linked data BCN - Red linked data españaFrancisco Cifuentes Silva
 
6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua
6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua
6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector InsuaLuis Du Solier
 
Talend Solutions
Talend SolutionsTalend Solutions
Talend SolutionsStratebi
 
Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...
Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...
Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...GeneXus
 
Mejores Prácticas de SQL Server para implementar SharePoint Server
Mejores Prácticas de SQL Server para implementar SharePoint ServerMejores Prácticas de SQL Server para implementar SharePoint Server
Mejores Prácticas de SQL Server para implementar SharePoint ServerSpanishPASSVC
 
Web logic multi tenancy fundamentals
Web logic multi tenancy fundamentalsWeb logic multi tenancy fundamentals
Web logic multi tenancy fundamentalsCJava Peru
 
Weblogic arquitectura-orientada-soa-427129-esa(1)
Weblogic arquitectura-orientada-soa-427129-esa(1)Weblogic arquitectura-orientada-soa-427129-esa(1)
Weblogic arquitectura-orientada-soa-427129-esa(1)Ellizz Lsc
 
Integrando los servicios REST a nuestras aplicaciones APEX
Integrando los servicios REST a nuestras aplicaciones APEXIntegrando los servicios REST a nuestras aplicaciones APEX
Integrando los servicios REST a nuestras aplicaciones APEXA+ Steel, SRL
 
Introducción a U-SQL lenguaje que hace fácil el procesamiento de Big Data
Introducción a U-SQL lenguaje que hace fácil el procesamiento de Big DataIntroducción a U-SQL lenguaje que hace fácil el procesamiento de Big Data
Introducción a U-SQL lenguaje que hace fácil el procesamiento de Big DataJohn Bulla
 
Construcción de nuevo Sistema de Regulación - Ejecución
Construcción de nuevo Sistema de Regulación - EjecuciónConstrucción de nuevo Sistema de Regulación - Ejecución
Construcción de nuevo Sistema de Regulación - EjecuciónDharma Consulting
 
Stretch data base - Jorge Muchaypiña G.
Stretch data base - Jorge Muchaypiña G.Stretch data base - Jorge Muchaypiña G.
Stretch data base - Jorge Muchaypiña G.jorge Muchaypiña
 
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...SpanishPASSVC
 
Non-Relational Database Management System | T1
Non-Relational Database Management System | T1Non-Relational Database Management System | T1
Non-Relational Database Management System | T1Rubén Gilmar Mendoza Jayo
 
Aplicaciones Web con Spring Boot
Aplicaciones Web con Spring BootAplicaciones Web con Spring Boot
Aplicaciones Web con Spring BootCarlos E. Salazar
 

Similaire à Relational to json with node dan mc ghan-ls (20)

Kick off
Kick offKick off
Kick off
 
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
 
Presentación Linked data BCN - Red linked data españa
Presentación Linked  data BCN  - Red linked data españaPresentación Linked  data BCN  - Red linked data españa
Presentación Linked data BCN - Red linked data españa
 
6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua
6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua
6 - Migracion a SharePoint 2010, por Ricardo Muñoz y Hector Insua
 
Migrando grandes KB
Migrando grandes KBMigrando grandes KB
Migrando grandes KB
 
Talend Solutions
Talend SolutionsTalend Solutions
Talend Solutions
 
Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...
Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...
Migrando KB Grandes: Protegiendo los activos más valiosos para empresas de so...
 
Mejores Prácticas de SQL Server para implementar SharePoint Server
Mejores Prácticas de SQL Server para implementar SharePoint ServerMejores Prácticas de SQL Server para implementar SharePoint Server
Mejores Prácticas de SQL Server para implementar SharePoint Server
 
Portal de datos abiertos de la ugr
Portal de datos abiertos de la ugrPortal de datos abiertos de la ugr
Portal de datos abiertos de la ugr
 
Web logic multi tenancy fundamentals
Web logic multi tenancy fundamentalsWeb logic multi tenancy fundamentals
Web logic multi tenancy fundamentals
 
Weblogic arquitectura-orientada-soa-427129-esa(1)
Weblogic arquitectura-orientada-soa-427129-esa(1)Weblogic arquitectura-orientada-soa-427129-esa(1)
Weblogic arquitectura-orientada-soa-427129-esa(1)
 
Integrando los servicios REST a nuestras aplicaciones APEX
Integrando los servicios REST a nuestras aplicaciones APEXIntegrando los servicios REST a nuestras aplicaciones APEX
Integrando los servicios REST a nuestras aplicaciones APEX
 
Introducción a U-SQL lenguaje que hace fácil el procesamiento de Big Data
Introducción a U-SQL lenguaje que hace fácil el procesamiento de Big DataIntroducción a U-SQL lenguaje que hace fácil el procesamiento de Big Data
Introducción a U-SQL lenguaje que hace fácil el procesamiento de Big Data
 
Explorando los Sabores de SSIS 2016
Explorando los Sabores de SSIS 2016Explorando los Sabores de SSIS 2016
Explorando los Sabores de SSIS 2016
 
Construcción de nuevo Sistema de Regulación - Ejecución
Construcción de nuevo Sistema de Regulación - EjecuciónConstrucción de nuevo Sistema de Regulación - Ejecución
Construcción de nuevo Sistema de Regulación - Ejecución
 
Stretch data base - Jorge Muchaypiña G.
Stretch data base - Jorge Muchaypiña G.Stretch data base - Jorge Muchaypiña G.
Stretch data base - Jorge Muchaypiña G.
 
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
 
Non-Relational Database Management System | T1
Non-Relational Database Management System | T1Non-Relational Database Management System | T1
Non-Relational Database Management System | T1
 
Meetup - Azure Data Lake Analytics
Meetup - Azure Data Lake AnalyticsMeetup - Azure Data Lake Analytics
Meetup - Azure Data Lake Analytics
 
Aplicaciones Web con Spring Boot
Aplicaciones Web con Spring BootAplicaciones Web con Spring Boot
Aplicaciones Web con Spring Boot
 

Plus de CJava Peru

Desarrollo de Software usando Patrones y JDBC 4.0
Desarrollo de Software usando Patrones y JDBC 4.0Desarrollo de Software usando Patrones y JDBC 4.0
Desarrollo de Software usando Patrones y JDBC 4.0CJava Peru
 
"Desarrollo de Microservicios con Spring Boot y Spring MVC"
 "Desarrollo de Microservicios con Spring Boot y Spring MVC" "Desarrollo de Microservicios con Spring Boot y Spring MVC"
"Desarrollo de Microservicios con Spring Boot y Spring MVC"CJava Peru
 
Oracle DataBase Hacking Etico
Oracle DataBase Hacking EticoOracle DataBase Hacking Etico
Oracle DataBase Hacking EticoCJava Peru
 
Java on mobile
Java on mobileJava on mobile
Java on mobileCJava Peru
 
From zero to oracle zfs storage appliance backup and recovery in 60 minutes
From zero to oracle zfs storage appliance backup and recovery in 60 minutesFrom zero to oracle zfs storage appliance backup and recovery in 60 minutes
From zero to oracle zfs storage appliance backup and recovery in 60 minutesCJava Peru
 
Practical security hands on with oracle solaris
Practical security   hands on with oracle solarisPractical security   hands on with oracle solaris
Practical security hands on with oracle solarisCJava Peru
 
Down to-earth microservices with java ee
Down to-earth microservices with java eeDown to-earth microservices with java ee
Down to-earth microservices with java eeCJava Peru
 
Módulo I fundamentals I
Módulo I fundamentals IMódulo I fundamentals I
Módulo I fundamentals ICJava Peru
 
Syllabus fundamentals I
Syllabus fundamentals ISyllabus fundamentals I
Syllabus fundamentals ICJava Peru
 
Internet of things architecture and impact
Internet of things architecture and impactInternet of things architecture and impact
Internet of things architecture and impactCJava Peru
 
Sql tuning without trying arup nanda ls
Sql tuning without trying   arup nanda lsSql tuning without trying   arup nanda ls
Sql tuning without trying arup nanda lsCJava Peru
 

Plus de CJava Peru (11)

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

Dernier

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 

Dernier (10)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

Relational to json with node dan mc ghan-ls

  • 1.
  • 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