SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
13
© MARZO 2015 EUGENIA BAHIT – CREATIVE COMMONS ATRIBUCIÓN COMPARTIRIGUAL
SILUETA DE MUJER CREADA POR LEONARDO B. CUNHA
Pocket Edition 2015
STORED PROCEDURES
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
2
PROBLEMA
En el desarrollo iterativo e 
incremental, la base de datos suele 
modificarse en cada sprint y esto 
conlleva errores de 
implementación, sobre todo, en el 
propio proceso de desarrollo
Mantenimiento de la base
de datos del sistema
Para los desarrolladores, no
basta con un simple pull.
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
3
SOLUCIÓNMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Los cambios en la base 
de datos siempre deben 
verse reflejados en un 
único archivo SQL
Base de
Datos
SQL Tabla
Agrega
Elimina
Modifica
datos
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
4
HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
El script SQL debe correrse siempre luego de
cada pull
mysql -u root -p DATABASENAME < path/to/myapp/myapp.sql
Tener en cuenta que
cualquier error arrojado por
MySQL tras la ejecución
del script, implicará que no
todas las sentencias se
habrán ejecutado
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
5
HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Utilizar las cláusulas IF NOT EXISTS e IF
EXISTS para crear y eliminar tablas
respectivamente
CREATE TABLE IF NOT EXISTS table_name (
…
)
Nunca hacer un DROP TABLE
“preventivo” antes de crear la
tabla. Si se modificará, utilizar
ALTER TABLE (se explica más
adelante)
DROP TABLE IF EXISTS table_name (
…
)
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
6
HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Utilizar la cláusula ALTER TABLE dentro de un
procedimiento almacenado (stored procedure)
para evitar fallos
DELIMITER //
DROP PROCEDURE IF EXISTS nombre_procedimiento //
CREATE PROCEDURE nombre_procedimiento()
BEGIN
CONDICION
THEN
ALTER TABLE...;
END IF;
END //
DELIMITER ;
CALL nombre_procedimiento();
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
7
HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Utilizar IF NOT EXISTS como condición del
stored procedure para agregar campos
DELIMITER //
DROP PROCEDURE IF EXISTS agregar_columna //
CREATE PROCEDURE agregar_columna()
BEGIN
IF NOT EXISTS (
SELECT NULL
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tabla'
AND table_schema = DATABASE()
AND column_name = 'columna_nueva'
) THEN
ALTER TABLE tabla ADD COLUMN columna_nueva INT(3);
END IF;
END //
DELIMITER ;
CALL agregar_columna();
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
8
HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Utilizar IF EXISTS como condición del stored
procedure para eliminar campos y/o modificarlos
DELIMITER //
DROP PROCEDURE IF EXISTS eliminar_columna //
CREATE PROCEDURE eliminar_columna()
BEGIN
IF EXISTS (
SELECT NULL
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tabla'
AND table_schema = DATABASE()
AND column_name = 'columna'
) THEN
ALTER TABLE tabla DROP COLUMN columna;
END IF;
END //
DELIMITER ;
CALL eliminar_columna();
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
9
HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Error «Thread stack overrun» al ejecutar un
procedimiento almacenado
; thread_stack = 128K
Localizar el archivo de configuración de MySQL
(generalmente llamado my.cnf) y comentar la variable
thread_stack colocando un punto y coma delante:
/etc/mysql/my.cnf
En Debian GNU/Linux y distribuciones derivadas (como
Ubuntu), este archivo podrá encontrarse en:
Reiniciar MySQL antes de volver a intentarlo:
Service mysql restart
SOLUCIÓN
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
10
HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Utilizar la cláusula IGNORE en todo INSERT
que se haga por defecto
INSERT IGNORE INTO tabla
(campo_id_pk, campo2, campo3)
VALUES
(1, 'dato 2.1', 'dato 3.1'),
(2, 'dato 2.2', 'dato 3.2'),
(3, 'dato 2.3', 'dato 3.3')
;
Procurar colocar todos los
“INSERT” al final del script
o en su defecto, en un
archivo fixture.sql
Utilizar IGNORE y agregar
las ID (claves primarias)
evitará registros duplicados y
dependencias insatisfechas
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
11
HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Sobre la inserción de datos: archivos SQL de
destino
Datos de inicialización
requeridos por la app
(ejemplo: tablas codificadoras de
países, etc.)
Datos de prueba
(ejemplo: usuarios para probar
la aplicación)
Datos antiguos
(ejemplo: backups)
fixture.sql
mock.sql
dump.sql
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
12
SABER MÁS
¿Te gustaría aprender más
sobre buenas prácticas de
programación y bases de
datos?
MANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA
Documentación oficial de
MySQL:
http://dev.mysql.com/doc/
Mis papers en PDF sobre
MySQL:
http://library.originalhacker.org/search/mysql
Ayuda y soporte gratuito:
http://forums.mysql.com
http://stackoverflow.org
Curso profesional de
Ingeniería de Software (a distancia):
http://cursos.eugeniabahit.com/curso-3
WEB PERSONAL:
www.eugeniabahit.com
TWITTER:
@eugeniabahit
REPOSITORIOS:
http://repo.eugeniabahit.com
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
13
Eugenia Bahit
GLAMP Hacker & programadora eXtrema
Especializada en seguridad
informática y desarrollo de
Software mediante
Ingeniería Inversa de
código en Python y PHP.
Miembro de
Free Software Foundation
presidida por Richard Stallman
(creador del proyecto GNU y el
Software Libre) y
The Linux Foundation presidida
por Linus Torvalds (creador del
kernel Linux).
Creadora de los proyectos
Europio Engine, Jack The
Stripper, python-printr y
Enhancement CLI for PHP.
Fundadora de las revistas
The Original Hacker y Hackers &
Developers Magazine.
Dedicada actualmente a la
docencia e investigación y
a la Formación
Profesional de Hackers y
Programadores
SOBRE LA AUTORA
© 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual
14
Eres libre de:
Compartir
copiar y distribuir este documento por cualquier medio y formato
Modificar
crear documentos derivados y distribuirlos
Pero:
Hazlo con respeto hacia al autor
Manteniendo la leyenda de copyright que ves al pie de cada página
(cuando hagas cambios, indica que eres el responsable de esos cambios)
No quites la libertad a otros
Cuando distribuyas este documento y/o tus modificaciones, deberás
mantener la licencia original
LICENCIA
Licencia Libre
Creative Commons Atribución CompartirIgual

Más contenido relacionado

Similar a The Original Hacker no. 13.

24 HOP edición Español -Database Unit Testing -Carlos Lone
24 HOP edición Español -Database Unit Testing -Carlos Lone24 HOP edición Español -Database Unit Testing -Carlos Lone
24 HOP edición Español -Database Unit Testing -Carlos LoneSpanishPASSVC
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosJosé Antonio Sandoval Acosta
 
Actividad No. 1.7: Creación de usuarios en MySQL
Actividad No. 1.7: Creación de usuarios en MySQLActividad No. 1.7: Creación de usuarios en MySQL
Actividad No. 1.7: Creación de usuarios en MySQLFrancisco Medina
 
UDA-Componentes RUP. Mantenimiento (v2.1.1 deprecado)
UDA-Componentes RUP. Mantenimiento  (v2.1.1 deprecado)UDA-Componentes RUP. Mantenimiento  (v2.1.1 deprecado)
UDA-Componentes RUP. Mantenimiento (v2.1.1 deprecado)Ander Martinez
 
Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3Ciencias
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosiluijo
 
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
 
Instalación service manager (mysql enterprise monitor)
Instalación service manager (mysql enterprise monitor)Instalación service manager (mysql enterprise monitor)
Instalación service manager (mysql enterprise monitor)Felix Ernesto Orduz Grimaldo
 

Similar a The Original Hacker no. 13. (20)

Framework
FrameworkFramework
Framework
 
SQLite3
SQLite3SQLite3
SQLite3
 
24 HOP edición Español -Database Unit Testing -Carlos Lone
24 HOP edición Español -Database Unit Testing -Carlos Lone24 HOP edición Español -Database Unit Testing -Carlos Lone
24 HOP edición Español -Database Unit Testing -Carlos Lone
 
09 24 hopes_2014_carloslone
09 24 hopes_2014_carloslone09 24 hopes_2014_carloslone
09 24 hopes_2014_carloslone
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 
Capitulo 6
Capitulo 6Capitulo 6
Capitulo 6
 
Actividad No. 1.7: Creación de usuarios en MySQL
Actividad No. 1.7: Creación de usuarios en MySQLActividad No. 1.7: Creación de usuarios en MySQL
Actividad No. 1.7: Creación de usuarios en MySQL
 
Trabajo zabi xs.docx
Trabajo zabi xs.docxTrabajo zabi xs.docx
Trabajo zabi xs.docx
 
UDA-Componentes RUP. Mantenimiento (v2.1.1 deprecado)
UDA-Componentes RUP. Mantenimiento  (v2.1.1 deprecado)UDA-Componentes RUP. Mantenimiento  (v2.1.1 deprecado)
UDA-Componentes RUP. Mantenimiento (v2.1.1 deprecado)
 
Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3
 
Herramientas de control,monitoreoy estadistica de bd
Herramientas de control,monitoreoy estadistica de bdHerramientas de control,monitoreoy estadistica de bd
Herramientas de control,monitoreoy estadistica de bd
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)
 
Db2 10 afinamiento
Db2 10   afinamientoDb2 10   afinamiento
Db2 10 afinamiento
 
Sesion n°6
Sesion n°6Sesion n°6
Sesion n°6
 
Exposicionsqlite1 (1)
Exposicionsqlite1 (1)Exposicionsqlite1 (1)
Exposicionsqlite1 (1)
 
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
 
Taller2
Taller2Taller2
Taller2
 
Instalación service manager (mysql enterprise monitor)
Instalación service manager (mysql enterprise monitor)Instalación service manager (mysql enterprise monitor)
Instalación service manager (mysql enterprise monitor)
 
Manual
ManualManual
Manual
 

Más de Huehue 1

Gimp magazine número 10
Gimp magazine número 10Gimp magazine número 10
Gimp magazine número 10Huehue 1
 
Gimp magazine 9
Gimp magazine 9Gimp magazine 9
Gimp magazine 9Huehue 1
 
Tuxinfo número 71.
Tuxinfo número 71.Tuxinfo número 71.
Tuxinfo número 71.Huehue 1
 
Gimp magazine número 7
Gimp magazine número 7Gimp magazine número 7
Gimp magazine número 7Huehue 1
 
Gimp magazine número 6.
Gimp magazine número 6.Gimp magazine número 6.
Gimp magazine número 6.Huehue 1
 
The Original Hacker número 11.
The Original Hacker número 11.The Original Hacker número 11.
The Original Hacker número 11.Huehue 1
 
TuxInfo número 70
TuxInfo número 70TuxInfo número 70
TuxInfo número 70Huehue 1
 
Tux Info número 69.
Tux Info número 69.Tux Info número 69.
Tux Info número 69.Huehue 1
 
Full Circle número 90
Full Circle número 90Full Circle número 90
Full Circle número 90Huehue 1
 
Full Circle 89
Full Circle 89Full Circle 89
Full Circle 89Huehue 1
 
The Original Hacker número 9.
The Original Hacker número 9.The Original Hacker número 9.
The Original Hacker número 9.Huehue 1
 
The Original Hacker número 8.
The Original Hacker número 8.The Original Hacker número 8.
The Original Hacker número 8.Huehue 1
 
Full Circle 88
Full Circle 88Full Circle 88
Full Circle 88Huehue 1
 
Curso linux
Curso linuxCurso linux
Curso linuxHuehue 1
 
TuxInfo número 68
TuxInfo número 68TuxInfo número 68
TuxInfo número 68Huehue 1
 
Full Circle 87
Full Circle 87Full Circle 87
Full Circle 87Huehue 1
 
Primeros pasos con Libre Office
Primeros pasos con Libre OfficePrimeros pasos con Libre Office
Primeros pasos con Libre OfficeHuehue 1
 
Full Circle 86
Full Circle 86Full Circle 86
Full Circle 86Huehue 1
 
Manual Inkscape
Manual InkscapeManual Inkscape
Manual InkscapeHuehue 1
 
Aprenda Gimp a los tropezones.
Aprenda Gimp a los tropezones.Aprenda Gimp a los tropezones.
Aprenda Gimp a los tropezones.Huehue 1
 

Más de Huehue 1 (20)

Gimp magazine número 10
Gimp magazine número 10Gimp magazine número 10
Gimp magazine número 10
 
Gimp magazine 9
Gimp magazine 9Gimp magazine 9
Gimp magazine 9
 
Tuxinfo número 71.
Tuxinfo número 71.Tuxinfo número 71.
Tuxinfo número 71.
 
Gimp magazine número 7
Gimp magazine número 7Gimp magazine número 7
Gimp magazine número 7
 
Gimp magazine número 6.
Gimp magazine número 6.Gimp magazine número 6.
Gimp magazine número 6.
 
The Original Hacker número 11.
The Original Hacker número 11.The Original Hacker número 11.
The Original Hacker número 11.
 
TuxInfo número 70
TuxInfo número 70TuxInfo número 70
TuxInfo número 70
 
Tux Info número 69.
Tux Info número 69.Tux Info número 69.
Tux Info número 69.
 
Full Circle número 90
Full Circle número 90Full Circle número 90
Full Circle número 90
 
Full Circle 89
Full Circle 89Full Circle 89
Full Circle 89
 
The Original Hacker número 9.
The Original Hacker número 9.The Original Hacker número 9.
The Original Hacker número 9.
 
The Original Hacker número 8.
The Original Hacker número 8.The Original Hacker número 8.
The Original Hacker número 8.
 
Full Circle 88
Full Circle 88Full Circle 88
Full Circle 88
 
Curso linux
Curso linuxCurso linux
Curso linux
 
TuxInfo número 68
TuxInfo número 68TuxInfo número 68
TuxInfo número 68
 
Full Circle 87
Full Circle 87Full Circle 87
Full Circle 87
 
Primeros pasos con Libre Office
Primeros pasos con Libre OfficePrimeros pasos con Libre Office
Primeros pasos con Libre Office
 
Full Circle 86
Full Circle 86Full Circle 86
Full Circle 86
 
Manual Inkscape
Manual InkscapeManual Inkscape
Manual Inkscape
 
Aprenda Gimp a los tropezones.
Aprenda Gimp a los tropezones.Aprenda Gimp a los tropezones.
Aprenda Gimp a los tropezones.
 

Último

TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 

Último (20)

TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 

The Original Hacker no. 13.

  • 1. 13 © MARZO 2015 EUGENIA BAHIT – CREATIVE COMMONS ATRIBUCIÓN COMPARTIRIGUAL SILUETA DE MUJER CREADA POR LEONARDO B. CUNHA Pocket Edition 2015 STORED PROCEDURES
  • 2. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 2 PROBLEMA En el desarrollo iterativo e  incremental, la base de datos suele  modificarse en cada sprint y esto  conlleva errores de  implementación, sobre todo, en el  propio proceso de desarrollo Mantenimiento de la base de datos del sistema Para los desarrolladores, no basta con un simple pull.
  • 3. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 3 SOLUCIÓNMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Los cambios en la base  de datos siempre deben  verse reflejados en un  único archivo SQL Base de Datos SQL Tabla Agrega Elimina Modifica datos
  • 4. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 4 HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA El script SQL debe correrse siempre luego de cada pull mysql -u root -p DATABASENAME < path/to/myapp/myapp.sql Tener en cuenta que cualquier error arrojado por MySQL tras la ejecución del script, implicará que no todas las sentencias se habrán ejecutado
  • 5. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 5 HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Utilizar las cláusulas IF NOT EXISTS e IF EXISTS para crear y eliminar tablas respectivamente CREATE TABLE IF NOT EXISTS table_name ( … ) Nunca hacer un DROP TABLE “preventivo” antes de crear la tabla. Si se modificará, utilizar ALTER TABLE (se explica más adelante) DROP TABLE IF EXISTS table_name ( … )
  • 6. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 6 HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Utilizar la cláusula ALTER TABLE dentro de un procedimiento almacenado (stored procedure) para evitar fallos DELIMITER // DROP PROCEDURE IF EXISTS nombre_procedimiento // CREATE PROCEDURE nombre_procedimiento() BEGIN CONDICION THEN ALTER TABLE...; END IF; END // DELIMITER ; CALL nombre_procedimiento();
  • 7. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 7 HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Utilizar IF NOT EXISTS como condición del stored procedure para agregar campos DELIMITER // DROP PROCEDURE IF EXISTS agregar_columna // CREATE PROCEDURE agregar_columna() BEGIN IF NOT EXISTS ( SELECT NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tabla' AND table_schema = DATABASE() AND column_name = 'columna_nueva' ) THEN ALTER TABLE tabla ADD COLUMN columna_nueva INT(3); END IF; END // DELIMITER ; CALL agregar_columna();
  • 8. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 8 HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Utilizar IF EXISTS como condición del stored procedure para eliminar campos y/o modificarlos DELIMITER // DROP PROCEDURE IF EXISTS eliminar_columna // CREATE PROCEDURE eliminar_columna() BEGIN IF EXISTS ( SELECT NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tabla' AND table_schema = DATABASE() AND column_name = 'columna' ) THEN ALTER TABLE tabla DROP COLUMN columna; END IF; END // DELIMITER ; CALL eliminar_columna();
  • 9. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 9 HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Error «Thread stack overrun» al ejecutar un procedimiento almacenado ; thread_stack = 128K Localizar el archivo de configuración de MySQL (generalmente llamado my.cnf) y comentar la variable thread_stack colocando un punto y coma delante: /etc/mysql/my.cnf En Debian GNU/Linux y distribuciones derivadas (como Ubuntu), este archivo podrá encontrarse en: Reiniciar MySQL antes de volver a intentarlo: Service mysql restart SOLUCIÓN
  • 10. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 10 HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Utilizar la cláusula IGNORE en todo INSERT que se haga por defecto INSERT IGNORE INTO tabla (campo_id_pk, campo2, campo3) VALUES (1, 'dato 2.1', 'dato 3.1'), (2, 'dato 2.2', 'dato 3.2'), (3, 'dato 2.3', 'dato 3.3') ; Procurar colocar todos los “INSERT” al final del script o en su defecto, en un archivo fixture.sql Utilizar IGNORE y agregar las ID (claves primarias) evitará registros duplicados y dependencias insatisfechas
  • 11. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 11 HOW TOMANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Sobre la inserción de datos: archivos SQL de destino Datos de inicialización requeridos por la app (ejemplo: tablas codificadoras de países, etc.) Datos de prueba (ejemplo: usuarios para probar la aplicación) Datos antiguos (ejemplo: backups) fixture.sql mock.sql dump.sql
  • 12. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 12 SABER MÁS ¿Te gustaría aprender más sobre buenas prácticas de programación y bases de datos? MANTENIMIENTO DE LA BASE DE DATOS DEL SISTEMA Documentación oficial de MySQL: http://dev.mysql.com/doc/ Mis papers en PDF sobre MySQL: http://library.originalhacker.org/search/mysql Ayuda y soporte gratuito: http://forums.mysql.com http://stackoverflow.org Curso profesional de Ingeniería de Software (a distancia): http://cursos.eugeniabahit.com/curso-3
  • 13. WEB PERSONAL: www.eugeniabahit.com TWITTER: @eugeniabahit REPOSITORIOS: http://repo.eugeniabahit.com © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 13 Eugenia Bahit GLAMP Hacker & programadora eXtrema Especializada en seguridad informática y desarrollo de Software mediante Ingeniería Inversa de código en Python y PHP. Miembro de Free Software Foundation presidida por Richard Stallman (creador del proyecto GNU y el Software Libre) y The Linux Foundation presidida por Linus Torvalds (creador del kernel Linux). Creadora de los proyectos Europio Engine, Jack The Stripper, python-printr y Enhancement CLI for PHP. Fundadora de las revistas The Original Hacker y Hackers & Developers Magazine. Dedicada actualmente a la docencia e investigación y a la Formación Profesional de Hackers y Programadores SOBRE LA AUTORA
  • 14. © 2015 Eugenia Bahit, The Original Hacker Pocket Edition Nro. 13 – Creative Commons Atribución CompartirIgual 14 Eres libre de: Compartir copiar y distribuir este documento por cualquier medio y formato Modificar crear documentos derivados y distribuirlos Pero: Hazlo con respeto hacia al autor Manteniendo la leyenda de copyright que ves al pie de cada página (cuando hagas cambios, indica que eres el responsable de esos cambios) No quites la libertad a otros Cuando distribuyas este documento y/o tus modificaciones, deberás mantener la licencia original LICENCIA Licencia Libre Creative Commons Atribución CompartirIgual