Basedatos Libres

46
 Bases de datos en Software Libre

Transcript of Basedatos Libres

Page 1: Basedatos Libres

 

Bases de datos en Software Libre

Page 2: Basedatos Libres

 

Bases de datos en Software LibreModelando aplicaciones

Page 3: Basedatos Libres

 

Bases de datos en Software Libre

Haz intentado recuperaralguna vez unabase de datos Oracle?

Page 4: Basedatos Libres

 

Bases de datos en Software Libre

Trivia● ¿Cual fué la primera base de datos de código 

abierto?

Page 5: Basedatos Libres

 

Bases de datos en Software Libre

Respuesta:●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.

INGRES

Page 6: Basedatos Libres

 

Bases de datos en Software Libre

Trivia● ¿Qué proyectos se originaron de la 

Universidad de Berkeley, Ingres y de System R?

Page 7: Basedatos Libres

 

Bases de datos en Software Libre

Respuesta:●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

●Jim Starkey vende los derechos de Interbase a Asthon­Tate (Dbase) que luego es vendido a Borland

Muchos!

Page 8: Basedatos Libres

 

Bases de datos en Software Libre

Trivia● ¿De donde se origina Firebird?

Page 9: Basedatos Libres

 

Bases de datos en Software Libre

Respuesta: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

De Borland Interbase

Page 10: Basedatos Libres

 

Bases de datos en Software Libre

Trivia● ¿Actualmente SAP corre primordialmente 

sobre Oracle?

Page 11: Basedatos Libres

 

Bases de datos en Software Libre

Respuesta: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 se libera bajo licencia Eclipse (abierta).

No

Page 12: Basedatos Libres

 

Bases de datos en Software Libre

Trivia● ¿Es verdad que las bases de datos 

propietarias son técnicamente mejores que las libres?

Page 13: Basedatos Libres

 

Bases de datos en Software Libre

Respuesta: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 debido a los costos de re­implementación; etc

No

Page 14: Basedatos Libres

 

Bases de datos en Software Libre

Trivia● ¿Cada base de datos sirve para todas las 

necesidades?

Page 15: Basedatos Libres

 

Bases de datos en Software Libre

Respuesta: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!

No

Page 16: Basedatos Libres

 

Bases de datos en Software Libre

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– Jerárquicas– Orientadas a Objeto

Fuente: wikipedia

Primeros Conceptos

Page 17: Basedatos Libres

 

Bases de datos en Software Libre

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

Primeros Conceptos

Page 18: Basedatos Libres

 

Bases de datos en Software Libre

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

Primeros Conceptos

Page 19: Basedatos Libres

 

Bases de datos en Software Libre

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 mySQL y postgreSQL

Primeros Conceptos

Page 20: Basedatos Libres

 

Bases de datos en Software Libre

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 base de datos relacionales.

Primeros Conceptos

Page 21: Basedatos Libres

 

Bases de datos en Software Libre

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

Page 22: Basedatos Libres

 

Bases de datos en Software Libre

● 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● ANSI::SQL 2003 (de los más apegados)

Entendiendo mySQL

mySQL

Page 23: Basedatos Libres

 

Bases de datos en Software Libre

● 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

● Cluster Carrier Grade ahora es libre!

Características

Page 24: Basedatos Libres

 

Bases de datos en Software Libre

● Veamos un ejemplo de mySQL en acción

Ejemplos

Page 25: Basedatos Libres

 

Bases de datos en Software Libre

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;

Eventos en mySQL

Page 26: Basedatos Libres

 

Bases de datos en Software Libre

  PARTITION BY LIST(id_entidad) (

    PARTITION p0 VALUES IN (1)

     INDEX DIRECTORY = '/home/mysql/cne/caracas'

       DATA DIRECTORY = '/home/mysql/cne/caracas',

    PARTITION p1 VALUES IN (24, 15, 22)

     INDEX DIRECTORY = '/home/mysql/cne/miranda­zulia'

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

Particionamiento Lógico

    PARTITION p2 VALUES IN (14, 20, 21)

     INDEX DIRECTORY = '/home/mysql/cne/andes'

       DATA DIRECTORY = '/home/mysql/cne/andes',    

...

    PARTITION p6 VALUES IN (2, 4, 9, 10, 23)

     INDEX DIRECTORY = '/var/lib/mysql/cne/resto'

       DATA DIRECTORY = '/var/lib/mysql/cne/resto' 

);

Page 27: Basedatos Libres

 

Bases de datos en Software Libre

● 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

Entendiendo PostgreSQL

postgreSQL

Page 28: Basedatos Libres

 

Bases de datos en Software Libre

● 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 

para una tabla

Características

Page 29: Basedatos Libres

 

Bases de datos en Software Libre

● Veamos un ejemplo de postgreSQL

Ejemplos

Page 30: Basedatos Libres

 

Bases de datos en Software Libre

● 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})+$'

Constraints Check

Page 31: Basedatos Libres

 

Bases de datos en Software LibreUn Benchmark Errado?

Page 32: Basedatos Libres

 

Bases de datos en Software Libre

InnoDB vs. MyISAM vs. Falcon

Un Benchmark de Storages

Page 33: Basedatos Libres

 

Bases de datos en Software Libre

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

Y existe uno con Oracle?

Page 34: Basedatos Libres

 

Bases de datos en Software Libre

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

Cuanto cuesta MySQL?

Page 35: Basedatos Libres

 

Bases de datos en Software Libre

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

Cuanto cuesta Oracle?

Page 36: Basedatos Libres

 

Bases de datos en Software Libre

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

Cuanto cuesta postgreSQL?

Page 37: Basedatos Libres

 

Bases de datos en Software Libre

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

Page 38: Basedatos Libres

 

Bases de datos en Software Libre

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

Page 39: Basedatos Libres

 

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 Eclipse

Page 40: Basedatos Libres

 

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● Symbian (smartphones) usan SQLite imbuido

Page 41: Basedatos Libres

 

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

Page 42: Basedatos Libres

 

Bases de datos en Software Libre

Tabla “General” de MigraciónDesde: 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!

Page 43: Basedatos Libres

 

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

Page 44: Basedatos Libres

 

Bases de datos en Software Libre

Paquete Vs. Tecnología

Vs.Vs.

Page 45: Basedatos Libres

 

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● Evitemos “los paquetes!”

Page 46: Basedatos Libres

 

Bases de datos en Software Libre

Gracias por su atención

Jesús Ignacio Lara celular:celular: 0424 7332593 

correo:correo: [email protected]

blog:blog:

http://www.jesuslara.com.ve/blog/