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 re­formulada 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” (post­Gres) que se convertiría en la actual PostgreSQL. ●

Bernstein se une a Jim Starkey (que viene de DEC­VMS) 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 (On­Line Analytical Processing) ●





Permite la consulta de grandes almacenes de  datos mediante estructuras de vectores asociados  y estructuras multi­dimensionales (cubos OLAP) Por lo general, servidores dedicados resumen y  crean almacenes para ser “atacados” por un  analizador OLAP OpenOLAP (R­OLAP y M­OLAP) 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, sub­selects, 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/miranda­zulia'

       DATA DIRECTORY =  '/home/mysql/cne/miranda­zulia',  

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 Objeto­Relacional



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:  ~* '^[a­z]+$')



string:  ~* '^[A­Za­z0­9]+$'



domain_name:  ~* '\w{1,60}[.]?'



ip:  ~ '^([1­9]|[1­9]\d|1\d{2}|2[0­4]\d|25[0­5])[.]?([0­9]|[1­9]\d|1\d{2}|2[0­4]\d|25[0­5])[.]? ([0­9]|[1­9]\d|1\d{2}|2[0­4]\d|25[0­5])[.]?([0­9]|[1­9]\d|1\d{2}|2[0­4]\d|25[0­5])$'



email: 

 

~* '^([a­zA­Z0­9_'+*$%\^&!\.\­])+\@(([a­zA­Z0­9\­])+\.)+([a­zA­Z0­9:]{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



Single­Port 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 4­core (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 4­core (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 (XML­XQuery)   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/