Bases de datos en Software Libre
Bases de datos en Software Libre
Modelando aplicaciones
Bases de datos en Software Libre
Haz intentado recuperar alguna vez una base de datos Oracle?
Bases de datos en Software Libre
Trivia ●
¿Cual fué la primera base de datos de código abierto?
Bases de datos en Software Libre
Respuesta: INGRES De hecho, INGRES existe bajo una modalidad de “modico pago” por su codigo fuente desde 1980; cambiando luego a una licencia BSD (1985) y posteriormente (2006) a una licencia GPL v2. ●
Históricamente a INGRES y a System R se las conoce como las “mamás” de todas las bases de datos relacionales. ●
Bases de datos en Software Libre
Trivia ●
¿Qué proyectos se originaron de la Universidad de Berkeley, Ingres y de System R?
Bases de datos en Software Libre
Respuesta: Muchos!
Eric Allman funda Sybase, de donde nace MS SQL Server
●
Michael Stonebraker a partir de Ingres y System R crea Illustra (que es reformulada como Informix); de donde posteriormente IBM obtendría DB/2 y de donde se basa el ANSI SQL 2003 y mySQL. ●
Robert Epstein se une a Larry Ellison (que venía de trabajar en el proyecto “Oraculo” de la CIA) y fundan Oracle Corp. ●
Michael Stonebraker retorna a Berkeley en 1985 y funda el proyecto “más allá de Ingres” (postGres) que se convertiría en la actual PostgreSQL. ●
Bernstein se une a Jim Starkey (que viene de DECVMS) y desarrollan Interbase
●
Margo Seltzer en su tesis (con tutor a Stonebreaker) usa código libre de System R y desarrolla una disertación sobre bases de datos de archivos; de donde nace Berkeley DB ●
Keith Bostic (socio de Margo en Sleepycat) crea BSD.LFS y Unix BSD
●
●
Bases de datos en Software Libre
Trivia ●
¿De donde se origina Firebird?
Bases de datos en Software Libre
Respuesta: De Borland Interbase Borland Libera el código de su base de datos Interbase bajo licencia pública Mozilla; pero posteriormente la compañia “se divide” y queda Interbase 6 sin avance, con una nueva licencia (cerrada); su licencia no es ni BSD ni GPL, no permite su uso comercial y es completamente limitada a la exploración del código fuente. La fundación Firebird (creada por Jim Starkey) hace un “fork” del código “abandonado” de Interbase 6.0 y desarrolla Firebird 1.0 (2004) Actualmente se encuentra en la versión 2.0.3
Bases de datos en Software Libre
Trivia ●
¿Actualmente SAP corre primordialmente sobre Oracle?
Bases de datos en Software Libre
Respuesta: No SAP se une a mySQL para crear un “mySQL Max a medida” (llamado originalmente sapDB (2003)); dicha RDBMS es orientada fuertemente al las exploraciones OLTP y ser compatible con OLAP; agregando funcionalidades que para la época mySQL no poseía (triggers, procedimientos almacenados, control concurrente, transacciones serializables, etc). En 2004 sapDB es renombrado como maxDB y el control del proyecto pasa directamente a las manos de mySQL. En 2006 el control del proyecto vuelve a las manos de SAP.
Actualmente maxDB se encuentra en la versión 7.6 y el Database Studio de SAP
Bases de datos en Software Libre
Trivia ●
¿Es verdad que las bases de datos
propietarias son técnicamente mejores que las libres?
Bases de datos en Software Libre
Respuesta: No Una investigación imparcial de una empresa consultora de sistemas (contratada por el Departamento del Tesoro y la Secretaría de Defensa de EUA) encontró que entre los desarrolladores de manejadores de bases de datos ocurren:
Software libre: 0.434 errores por cada 1,000 líneas de código Propietario: de 20 a 30 errores por cada 1,000 líneas de código
Además que ocurren ciertos vicios como arrastrar bugs durante años
Bases de datos en Software Libre
Trivia ●
¿Cada base de datos sirve para todas las necesidades?
Bases de datos en Software Libre
Respuesta: No cada DBMS (Database model System) tiene su nicho de mercado y está implementada y pensada para cubrir unas demandas y necesidades específicas.
Aquí trataremos de develar algunas!
Bases de datos en Software Libre Primeros Conceptos
Base de datos ●
●
Técnicamente una base de datos es el conjunto de datos que están almacenados y organizados bajo un mismo contexto y de manera sistemática para su posterior uso. Algunos Tipos: – –
Relacionales Fuente: wikipedia
Jerárquicas
Bases de datos en Software Libre Primeros Conceptos
SGBD (Sistema Gestor de BD) ●
●
El sistema intermedio de gestión entre el usuario, las aplicaciones y sus bases de datos son los SGBD. Son software muy específico dedicado exclusivamente al almacenamiento, gestión y recuperación de datos en bancos de datos.
Fuente: wikipedia
Bases de datos en Software Libre Primeros Conceptos
Almacén de datos ●
●
●
Almacén de datos (del ingles, Data Warehousing) es una simple colección de datos muy variable tanto en dimensiones como en el tiempo dedicada a un ámbito específico de la empresa. Permiten tener colecciones de datos para su análisis empresarial Lo integran: Metadatos, ETL y Middleware
Bases de datos en Software Libre Primeros Conceptos
OLAP (OnLine Analytical Processing) ●
●
●
Permite la consulta de grandes almacenes de datos mediante estructuras de vectores asociados y estructuras multidimensionales (cubos OLAP) Por lo general, servidores dedicados resumen y crean almacenes para ser “atacados” por un analizador OLAP OpenOLAP (ROLAP y MOLAP) existe para
Bases de datos en Software Libre Primeros Conceptos
Data Mining (Minería de datos) ●
●
La minería de datos es simplemente ejecutar búsquedas de información especializada dentro de nuestras bases de datos usando algoritmos estadísticos (de varianza, clustering) o informáticos (genéticos, IA, neuronales). Existen herramientas como Weka (java) o R (python) que permiten ejecutar data mining sobre
Bases de datos en Software Libre file:///home/jalcala/Documentos/ASL/ensl/ingres.gif
Ingres ●
Primera base de datos relacional en cumplir los principios de Codd
●
Estuvo 10 años relegada por su hijo “PostgreSQL”
●
en 2006 se reabrió el proyecto bajo la GPL
●
Soporta ACID y ANSI:SQL92
Bases de datos en Software Libre
Entendiendo mySQL file:///home/jalcala/Documentos/ASL/ensl/mysql.png
mySQL ●
Motor basado en Oracle
●
Interpretador basado en DB/2
●
Usa un PL basado en Transact
●
Storage Engine separados para cada necesidad
●
Actualmente cuenta con vistas, vistas actualizables, subselects, etc
Bases de datos en Software Libre Características file:///home/jalcala/Documentos/ASL/ensl/mysql.png
●
●
●
Storage Engines (innoDB, Maria(*), Falcon(*), ndb(*), federated, heap, BDB, myISAM, merge, Archive) Independencia del analizador (SQL modes: MS SQL, Oracle, postgresql, sybase, informix, DB2) Soporta GIS, XML y Full Search Text de manera nativa
Bases de datos en Software Libre file:///home/jalcala/Documentos/ASL/ensl/mysql.png
●
Ejemplos
Veamos un ejemplo de mySQL en acción
Bases de datos en Software Libre
Eventos en mySQL file:///home/jalcala/Documentos/ASL/ensl/mysql.png
CREATE EVENT computar_nomina ON SCHEDULE EVERY 1 DAY DO IF MONTH(CURRENT_DATE) MONTH(CURRENT_DATE +INTERVAL '1' DAY) THEN
CALL `nomina`.`pre_nomina`();
END IF;
Bases de datos en Software Libre Particionamiento Lógico file:///home/jalcala/Documentos/ASL/ensl/mysql.png
PARTITION BY LIST(id_entidad) (
PARTITION p2 VALUES IN (14, 20, 21)
PARTITION p0 VALUES IN (1)
INDEX DIRECTORY = '/home/mysql/cne/caracas'
INDEX DIRECTORY = '/home/mysql/cne/andes'
DATA DIRECTORY = '/home/mysql/cne/andes',
DATA DIRECTORY = '/home/mysql/cne/caracas',
...
PARTITION p1 VALUES IN (24, 15, 22)
PARTITION p6 VALUES IN (2, 4, 9, 10, 23)
INDEX DIRECTORY = '/home/mysql/cne/mirandazulia'
DATA DIRECTORY = '/home/mysql/cne/mirandazulia',
INDEX DIRECTORY = '/var/lib/mysql/cne/resto'
DATA DIRECTORY = '/var/lib/mysql/cne/resto'
Bases de datos en Software Libre Entendiendo PostgreSQL file:///home/jalcala/Documentos/ASL/ensl/postgresql.png
postgreSQL ●
Base de datos ObjetoRelacional
●
Basada en Ingres
●
Posee muchas características de alto nivel como dominios, campos seriales, PL en más de 16 lenguajes distintos, tipos compuestos y arreglos
●
Usa una versión modificada de PL/SQL
●
Guarda en tablespaces y permite MVCC
Bases de datos en Software Libre Características file:///home/jalcala/Documentos/ASL/ensl/postgresql.png
●
Tipos compuestos y arreglos
●
Constraints
●
Herencia a nivel de tabla
●
Soporta separación en esquemas
●
ANSI SQL 92, 99 y parte de 2003 (> 8.2)
●
El máximo tamaño de registro es de 1.6TB y 32TB
Bases de datos en Software Libre Ejemplos file:///home/jalcala/Documentos/ASL/ensl/postgresql.png
●
Veamos ejemplos de postgreSQL
Bases de datos en Software Libre Constraints Check file:///home/jalcala/Documentos/ASL/ensl/postgresql.png
●
nombre: ~* '^[az]+$')
●
string: ~* '^[AZaz09]+$'
●
domain_name: ~* '\w{1,60}[.]?'
●
ip: ~ '^([19]|[19]\d|1\d{2}|2[04]\d|25[05])[.]?([09]|[19]\d|1\d{2}|2[04]\d|25[05])[.]? ([09]|[19]\d|1\d{2}|2[04]\d|25[05])[.]?([09]|[19]\d|1\d{2}|2[04]\d|25[05])$'
●
email:
~* '^([azAZ09_'+*$%\^&!\.\])+\@(([azAZ09\])+\.)+([azAZ09:]{2,4})+$'
Bases de datos en Software Libre Un Benchmark Errado?
file:///home/jalcala/Documentos/ASL/ensl/mysql.png
file:///home/jalcala/Documentos/ASL/ensl/postgresql.png
Bases de datos en Software Libre
Un Benchmark de Storages
InnoDB vs. MyISAM vs. Falcon file:///home/jalcala/Documentos/ASL/ensl/mysql.png
Bases de datos en Software Libre Y existe uno con Oracle?
Specs “oficiales” de Sun ●
●
Basado en velocidad, cantidad de Hardware adquirido, necesidad de optimizaciones adicionales, modificaciones y tunning al hardware, software y database + rendimiento general de las consultas jAppServer 2007
Bases de datos en Software Libre Cuanto cuesta MySQL?
mySQL ●
Sun Fire X4100 (2x285,4x2GB,2X73GB) (2)
●
Sun StorEdge 3320, 12x73GB, 1 RAID CONT
●
SinglePort PCI Ultra320 SCSI HBA
●
Costo: 59.260 US$
Puntuación Total: 720.56 Unidades Costo de Unidad (Costo/Puntuación): 82 US$ por Unidad JOPS
Bases de datos en Software Libre Cuanto cuesta Oracle?
Oracle ●
Server HP Integrity rx2660 1.6Ghz 18GB 4core (2)
●
12GB DDR2 memory pair
●
SAN Array 1000
●
Costo: 70.701 US$
●
Oracle 10g Enterprise + Oracle App Server + Oracle Partition Option
●
Costo: 110.000 US$!!
Puntuación: 874 Unidades
Costo de Unidad (Costo/Puntuación): 206.75 US$ por unidad
Bases de datos en Software Libre
Cuanto cuesta postgreSQL?
PostgreSQL ●
Server HP Integrity rx2660 1.6Ghz 18GB 4core (2)
●
12GB DDR2 memory pair
●
SAN Array 1000
●
Costo: 70.701 US$
●
PostgreSQL 8.2 (0 US$)
Puntuación: 778.14 Unidades
Costo de Unidad (Costo/Puntuación): 90.85 US$ por unidad
Bases de datos en Software Libre file:///home/jalcala/Documentos/ASL/ensl/ds-firebird-logo-200.png
Firebird ●
●
●
Basada en Borland Interbase Su PL es PL/I aunque acepta lenguajes del dominio empresarial/financiero como ADA, COBOL, etc Actualmente el proyecto se esfuerza en llevar a la completa adopción de ANSI::SQL 2003
Bases de datos en Software Libre file:///home/jalcala/Documentos/ASL/ensl/942.gif
Berkeley DB ●
Base de datos Objeto de alta velocidad
●
Su fín principal es estar imbuida en aplicaciones
●
openLDAP, ADS, Bind y mucho hardware llevan imbuida una base de datos Berkeley DB
●
Su licencia es BSD
●
Tiene una versión especial para XML
Bases de datos en Software Libre
SapDB ●
●
●
●
Desarrollado en conjunto con mySQL AB Implementa características necesarias para la plataforma SOA de SAP Como mySQL, SapDB es GPL y además es auto administrado (bajo costo, no requiere un DBA permanente, etc) Toda la plataforma de desarrollo viene sobre
Bases de datos en Software Libre
SQLite ●
Base de datos Imbuida de alta velocidad
●
Soporta muchas características de ANSI:SQL 92
●
●
●
Viene imbuida en la gran mayoría de los lenguajes libres (perl, python, php, etc) Es de mucha utilidad a la hora de desarrollar aplicaciones
Bases de datos en Software Libre
Apache Derby ●
●
●
●
Database desarrollada en Java Sistema de datos mixto (imbuido o cliente servidor) que corre en la JVM junto a la aplicación Java Centrada en datos, permite gestión relacional (ANSI:SQL92) y jerárquica/objeto (XMLXQuery) Al ser imbuida, solo viene con JDBC
Bases de datos en Software Libre
Tabla “General” de Migración Desde:
Hasta:
Oracle 10g
PostgreSQL 8.3
MS SQL Server
MySQL 5.0/5.1
IBM DB2 / Sybase
MySQL 5.0/5.1
Paradox / Interbase / Informix
Firebird
Privative OEM Databases
Berkeley DB / BDB XML / Derby / SQLite
?
Escoge!
Bases de datos en Software Libre
¿y si quiero mi Access? Entonces tienes OpenOffice Base! ●
Permite múltiples conexiones a DB
●
Soporta postgreSQL, mySQL, Almacenes ISAM
●
Asistentes, formularios
Bases de datos en Software Libre
Paquete Vs. Tecnología
Vs.
Bases de datos en Software Libre
Conclusiones ●
Cada base de datos posee una utilidad nativa
●
Cada una se adapta a necesidades específicas
●
●
●
Los “benchmarks” representan estados de cada implementación y no necesariamente acorde a las necesidades actuales del cliente Se puede hacer convivir sistemas heterogeneos
Bases de datos en Software Libre
Gracias por su atención Jesús Ignacio Lara celular: 0424 7332593 celular: correo:
[email protected] correo: blog:
http://www.jesuslara.com.ve/blog/