jueves, 31 de marzo de 2011

Diseño de Bases de datos

    Todos los cursos de DBA, libros de certificación y currículas que conozco, comienzan con una introducción a Oracle, y los fundamentos del modelo relacional. Sin embargo, en los exámenes de certificación no existe ninguna pregunta que debamos responder acerca de entidad - relación, normalización ni otro punto relacionado


No me pondré a preguntar el porqué de esto, sino a advertirles que todo lo que aprendamos y apliquemos sobre dicho tema no será importante: será fundamental


Temas a tener en consideración:


Muchas veces ni nos acordamos que Oracle es un sistema de administración de bases de datos relacionales, pero que además admite tipos de datos complejos ya que agrega el paradigma "orientado a objetos" al mismo tiempo que el "relacional", con lo que nos "venden" que este sistema híbrido toma lo mejor de ambos modelos

Otra cosa que frecuentemente nos han dicho es que la normalización de una base de datos tiene múltiples formas, pero que cumpliendo con las tres primeras obtenemos un sistema eficiente y funcional

Finalmente, nos advierten que una base de datos que cumple estrictamente la "tercera forma normal" puede ser ineficiente, así que seamos realistas antes de puristas y no exageremos normalizando hasta el infinito

Descartado el modelo orientado a objetos, la normalización más allá de la tercera forma normal, y la des-normalización voluntaria, nos quedamos con el habitual modelo relacional, el cual en mi larga experiencia trabajando con bases de datos alcanzó para resolver cualquier problema que se me hubiese presentado


Teniendo en cuenta además que normalizar una base de datos es un proceso bastante intuitivo y guiado por reglas, ¿qué más puede agregarse?


Para mi gusto podemos agregar varias cosas, pero gustos aparte, cualquier equivocación incurrida al momento de crear el "modelo de datos", hará ineficiente el sistema de información, llevando al fracaso la aplicación que maneje la base de datos

Dado mi fanatismo en enfatizar el diseño de la base de datos, permítanme entonces ofrecerles el siguiente rejunte de...

    Recetas y/o consejos:

    Piensen por sí mismos: no crean en las recetas y consejos que les ofrecen. En todo caso evalúen las justificaciones que las preceden y en caso de duda, desconfíen
    Siéntanse culpables si sienten la tentación de des-normalizar una base de datos: no recuerdo ningún caso de pérdida de desempeño por haber exagerado en la normalización, y si piensan que el desempeño puede agravarse trabajando en un ambiente de altísimo volumen de transacciones, piensen que dichos volúmenes sólo se manejan en empresas con un nivel de ganancias proporcional al volumen de sus datos, y en tal caso no deberían tener problemas en adquirir la infraestructura para manejar ágilmente 10 millones de transacciones por segundo. ¿Será suficiente?
    Sean coherentes: tómense todo el tiempo necesario para normalizar los nombres de tablas y sus columnas, y el tipo de datos. Una vez definidas las normas, ¡a cumplirlas!
    Creen para cada tabla una columna sin otro propósito que el de almacenar las claves primarias. En caso de necesitar restringir valores únicos a través de una o más columnas de datos, utilicen claves únicas
    Utilicen tipos de datos numéricos para las claves primarias y ajenas
    No se dejen llevar por las costumbres: crear una columna llamada "sexo" que almacene valores "M" o "F" nunca será mejor que la columna sea numérica que almacene "unos" y "dos"
    Reserven en las claves primarias, únicas y ajenas los valores con el número "0" (no lo utilicen como dato). Disponer de este número libre me ha ayudado a encontrar la forma más eficiente de realizar búsquedas (cláusula "WHERE")
    No se confíen en la automatización. Busquen una alternativa antes de utilizar disparadores (triggers), los cuales seguramente dejarán de funcionar al agregar o quitar una columna, o peor aún, podrían seguir funcionando pero arrojando resultados diferentes a los deseados
    Planifiquen su base de datos a futuro: una aplicación sencilla para una empresa pequeña debería crecer junto con el negocio, o en todo caso debería poder ser "reciclada" para un proyecto de mayor escala, por lo tanto piensen en todos los "multi" que puedan: multi-usuario, multi-moneda, multi-empresa, multi-plataforma, y diseñen con el crecimiento en mente: piensen en la incomodidad que sería tras 3 años de funcionamiento de un sistema, tener que adaptar todas las columnas que almacenen montos de dinero, para agregar la posibilidad de manejar distintas "monedas" y que la cosa pueda seguir funcionando. Piensen también en lo que podría pasar si en un país conviven 2 o más monedas, o si de repente una saludable economía se contagia de inflación
    Piensen de qué manera poder integrar otros sistemas que son imprescindibles para algunos usuarios, tales como aplicaciones impositivas administradas por agencias gubernamentales, o aplicaciones técnicas tales como administración de proyectos o CAD-CAM, las cuales, casualmente son "compatibles" con Oracle, o en el peor de los casos con ODBC
    Piensen qué pasaría si su sistema de repente debe acoplarse a un nuevo sistema, el cual se encargará de manejar módulos que hasta ahora estaban bajo su exclusiva administración

miércoles, 2 de marzo de 2011

Técnicas de estudio para un DBA

Un profesor mío enumeraba las tareas previas a ponerse a estudiar: preparación del área de trabajo, organizar las tareas del día, acomodar el material didáctico, colocar bien a mano los útiles, ambientar la iluminación y la música, y prepararse un juguito de naranja con snacks.
Tanto interés en la planificación no significa otra cosa que debemos agotar las excusas hasta posponer lo máximo posible lo más aburrido: estudiar.
Afortunadamente, ya no sufrimos al agarrar los libros, sino que en ese momento comenzamos un proceso de felicidad inexplicable, quizá producida por la relación libro -> endorfinas.
Lo paradójico es que ahora que disfrutamos más con el proceso de aprendizaje, es cuando más útiles son las técnicas de organizar el estudio, según lo enumerado más arriba, jugo de naranja incluido para garantizar el aprovechamiento de lo estudiado.
Una vez comenzado el estudio, es conveniente no perder el ritmo por lo que evitemos los teléfonos celulares, presencia de parientes y por qué no, desconectémonos del “Messenger”.
Una alternativa tan eficiente como esta, puede ser cambiar el ambiente calco de casa por un sitio público tal como un local de venta de hamburguesas o un largo viaje en ferrocarril donde un “suave murmullo de fondo” ayudará a ganar concentración.
Cada uno tendrá su situación preferida, pero les enumero mis lugares favoritos de estudio:
1. Tomar clases en una academia especializada en cursos oficiales de TI (siempre que el instructor ponga buena onda)
2. Leer el tema del día durante una hora previo a asistir a clase desayunando (o merendando) en McDonald’s siempre teniendo la bibliografía impresa
3. Tener material on-line relacionado con la clase a tomar, y leerlo durante una hora el día previo al curso, en horario de trabajo, por supuesto.
4. Releer los libros mientras viajo en tren.

Certificación Base de datos Oracle 11g: SQL Fundamentals I

Módulo I: Tecnologías de Oracle Server y el Paradigma Relacional
Cito textualmente a Adrián Paenza (Matemática... ¿Estás ahí? Episodio 3,14) http://cms.dm.uba.ar/cep/libro-e314.html donde nos informa que “Los chicos que se gradúan hoy del colegio secundario, aun aquellos que tienen una sólida formación en álgebra, geometría y trigonometría, están casi 400 (cuatrocientos) años atrasados con respecto a lo que es la matemática de punta hoy. Es decir: aprenden lo que se sabía ya hace cuatrocientos años.”
Según estudié en mis cursos de DBA y lo que dice en Internet (si lo dice ahí debe ser cierto), una de la más recientes incorporaciones al mundo de la matemática es el álgebra relacional, producto del exceso de inteligencia de un tal Alfred Tarski, allá por 1940. Esta rama estuvo relativamente lejos de popularizarse hasta que el simpático Edgard Codd, mientras trabajaba en IBM, allá por 1970 creó el modelo relacional para administración de bases de datos, que es la base teórica para las bases de datos relacionales. Lo revolucionario de su trabajo es la utilización práctica de semejante “invento” del señor Tarski. La popularidad del modelo relacional llegó con la publicación en 1970 del trabajo "A Relational Model of Data for Large Shared Data Banks" y la posibilidad por parte de IBM de producir la primera base de datos relacional. El trabajo de Codd no solo lo utilizamos hoy para la representación de datos, sino que la publicación de las reglas para la normalización de datos, son un “instructivo paso a paso” para lograr la eficiencia de diseño de la base de datos, sin tener que pasar 6 meses en Stanford estudiando Algebra en la universidad como hizo mi amigo Javier (casi un Codd).
Resumiendo, el modelo relacional, la normalización, la utilización de operaciones de conjuntos y su extracción mediante SQL son evoluciones del trabajo de estos matemáticos. El trabajo de Oracle construyendo el motor de la base de datos es un ejemplo de aprovechamiento de una ciencia fabulosa que esperaba ser explotada. Tarski lo piensa, Codd lo aplica y hace la receta, Oracle lo codifica en el motor de la base de datos, y nosotros hacemos dibujitos con relaciones entre entidades para que los programadores consigan lo que quieran con 6 palabras básicas de SQL: select, from, where, group, having y order.
Si no van a ir a profundizar el tema en Stanford, pueden indagar en miles de sitios que hablan del Algebra relacional, de modelo entidad relación, la normalización, o quedarse con el contenido de los libros de estudio de Oracle: precisos e interesantes.
Ciertamente este tema me supera largamente, pero si Codd lo llevó a las “masas”, imaginen lo que podría hacer la didáctica de Adrián Paenza explicándolo para una serie en The History Channel! ¿Alguien conoce a Adrián para ver si hace un especial sobre base de datos?

El precio del conocimiento

Demostrar los conocimientos
Obtener la certificación como Oracle DBA es una meta muy buscada por la gente de tecnología de la información, puesto que el trata con quien obtuvo un OCA o un OCP sabe que esa persona debería tener un piso de conocimientos en bases de datos estandarizado.
Si no estás por encima de ese piso, y en el caso que algún día la oferta de DBA superara a la demanda, la falta de certificación podría convertirse en determinante a la hora de conseguir un puesto de trabajo.
Para llegar a certificar, deberían hacer falta muchas horas de estudio, una importante suma de dinero invertida y una adecuada experiencia laboral.
Entre las excusas para no certificar podría estar no disponer suficiente tiempo, pero a veces otros factores hacen que un candidato no cumpla o siquiera intente llegar: los costos, la necesidad de rendir exámenes en inglés, o el miedo al fracaso. Cada fracaso es muy duro de remontar, pero a eso debe sumarse que volver a intentar un examen implica volver a pagar U$S 125 o lo que sea!
Llegar a certificarse no debería ser más complicado que obtener un título terciario o llegar a correr 42 km, pero la diferencia es que además de poner todas las ganas, hay que pagar, por más barato que se consiga.
Se ha escrito mil veces, que un DBA Oracle certificado debe comenzar por el nivel inicial OCA (que consiste en aprobar dos exámenes) que cualquier persona puede presentarse a rendir con el único requisito de pagar la tasa de examen. Para llegar al nivel OCP, previamente hay que certificar como OCA, asistir a un curso oficial de Oracle (presencial u on-line), y aprobar un tercer examen. Otro nivel más avanzado (OCM) de expertos tiene requerimientos adicionales que hacen que no estén interesados en leer esta publicación, así que los dejamos para otro momento.
Nadie puede tomar por vos la determinación de hacer el esfuerzo, así que asumiremos que analizaste los costos y beneficios, y que decidiste que estudiar bases de datos Oracle puede ser lo adecuado para tu carrera laboral, o que simplemente crees que sería algo divertido o que te ayudaría a conocer gente.
En ese caso, te ayudaré publicando este estudio de mercado para que tengas una idea del costo que puedes llegar a tener en llegar a tu objetivo: ser un DBA (genuino)
El precio del conocimiento
Informe de la liga de amas de casa: carrera de certificación DBA
Pasando por el autoestudio, cursar  gratuitamente la carrera de administrador de bases de datos hasta tomar un curso que incluye estacionamiento para tu automóvil y merienda gratuita, existen todo tipo de posibilidades.
En Argentina por ejemplo, existe la posibilidad de obtener una beca para cursar gratuitamente 3 módulos de Administrador de Base de datos, en aula con instructores de la red Proydesa y material didáctico incluido. Aunque tiene una generosa duración de 240 horas, tiene como desventaja que el curso cubre la versión de la base de datos 9i, un tanto desactualizada para estos días.
Quienes tampoco quieran pagar un céntimo pero quieran capacitarse con la última versión disponible de Oracle (database 11g Release 2), tienen la posibilidad del curso de autoestudio online que está organizado la Comunidad Oracle Hispana. En este caso, el curso cubre 2 módulos: SQL Fundamentals y Administración I. Se le puede agregar como ventaja que está siendo preparado por voluntarios que potencian su capacidad con el entusiasmo de la tarea. Puede llegar a desilusionar el hecho que se trabajará con material de estudio en inglés.
Cuando prefiramos pagar, tomar un curso presencial de 80 horas por módulo (recordemos que son 3 (Oracle 10g y 11g) o 4 (Oracle 9i) en total) arranca en U$ 375, incluyendo libros y curso online en castellano, para la versión 10g. También por cada módulo se obtiene un voucher para rendir el examen de certificación con un 25% de descuento.
Si buscamos un servicio de lujo, nos encontraremos que la versión de la base de datos que se estudia es la 11g, pero lo nuevo es muy difícil de conseguir en castellano, dificultad que tienen que suplir los instructores cuando tratan los temas. El precio supera los U$ 800 por módulo pero además se trata de cursos muy acelerados, de 40 horas por módulo y aún menos, lo que supone cursarlo con una importante cantidad de conocimientos previos!. Dentro de este precio muchas veces podemos conseguir que esté incluido el voucher de certificación, refrigerios, bonitas lapiceras, y a veces interesantes descuentos, pero otras veces el precio aún puede ser más alto, por tener que adicionarse impuestos sobre el mismo.
Para sumar a la cuenta, aproximadamente U$S 125 por examen, multiplicados x 3 o por 4, sumándole la misma cantidad por cada reintento.
La satisfacción de tener el diploma, no tiene precio.

Estudiando Oracle

Hola mundo nerd:
Existe una inagotable cantidad de material de estudio para aquellos quienes pretendan estudiar bases de datos Oracle.
De hecho, tanto interés es sumamente interesante para quienes escriben libros, tienen institutos de capacitación, o ganamos dinero dando clases de la especialidad.
Habiendo tanta información profunda, precisa y hasta tan didácticamente presentada, ¿de qué queda para hablar?
Quiero presentar una serie de artículos referidos a técnicas de estudio, la relación entre el estudio y la vida real, temas salariales y porque no sindicales y el humor que produce a los no nerds observar el comportamiento de quienes enfrascados en su mundo tecnológico no nos damos cuenta de lo que la gente normal piensa de nosotros.
Dentro de lo específico de “estudiar Oracle”, haré el intento de presentar puntos clave de los principales temas de estudio de quienes buscan la certificación DBA tratados de una manera alternativa y amena. Veremos que sale de esto.
Si les divierte la tecnología y el estudio, quizá se identifiquen conmigo en algún punto aunque no creo que muchos compartan mi adicción al estudio.
Esta obsesión por divertirme a través de la adquisición de conocimientos no es gratuita: 25 años de educación formal le han costado al estado Argentino una pequeña fortuna tomada del bolsillo de los contribuyentes, y luego tanto dinero pagado por mi cuenta en capacitaciones en tecnología ha sido otra pequeña fortuna. Por “fortuna” en algún momento durante más de 30 años de trabajo habrá quedado saldada mi deuda con la sociedad, pero en cuanto a lo pagado de mi bolsillo, les aseguro ha sido la mejor inversión que pude haber hecho con mi dinero.