Download Software libre y bases de datos

Document related concepts
Transcript
Software libre y
bases de datos
Juan Vidal Belén
Pedro J. Cambronero Vázquez
Indice
„
„
„
„
„
Historia
Definición
Licencias
Productos
Bibliografía
Historia
„
„
„
Entre los años 60 y 70 el software era considerado
un añadido que los vendedores añadían a las
computadoras de la época. En estos años los
programadores y desarrolladores compartían
libremente sus programas.
Es a finales de 1970, algunas empresas empiezan
a imponer restricciones con el uso de acuerdos de
licencia.
Universidades y empresas siguen creando y
compartiendo libremente sin restricciones.
Historia
„
Todo cambió nada mas llegar los años 80.
Las computadoras modernas incorporaban
sistemas operativos primitivos, lo cual forzaba a los
usuarios a aceptar las condiciones restrictivas que
impedían modificar este software. Si un usuario
encontraba un error como mucho solo podía
notificarlo a la empresa creadora.
Historia
„
Richard Stallman en 1984 comenzó a trabajar en el
proyecto GNU y fue el fundador de la Free
Software Foundation.
Historia
„
„
La Free Software Foundation es una organización
creada en octubre de 1985 por Richard Stallman y otros
entusiastas del software libre con el propósito de difundir
este movimiento.
La Fundación para el software libre se dedica a eliminar
las restricciones sobre la copia, redistribución,
entendimiento, y modificación de programas de
computadoras. Con este objeto, promociona el desarrollo
y uso del software libre en todas las áreas de la
computación, pero muy particularmente, ayudando a
desarrollar el sistema operativo GNU.
¿Qué es el software libre?
Podemos encontrar definiciones variadas de software libre.
Una posible definición:
Se considera software libre cuando el usuario que lo obtiene
puede crear, modificar, distribuir o mejorar dicho software.
Para que se considere libre debe cumplir:
- Tener la libertad de usar el programa con cualquier
propósito.
- Poder estudiar libremente el funcionamiento del programa,
poder adaptarlo y modificarlo sin restricciones. Código fuente
disponible.
¿Qué es el software libre?
- Total disponibilidad de distribuir copias( con o sin
animo de lucro)
- La posibilidad de mejorar el programa.
Licencias
„
GNU GPL. Una de las más utilizadas. El autor
conserva los derechos de autor, permite
redistribuir y modificar el código. El resultado
siempre será bajo licencia GNU GLP.
Licencias
„
BSD. Mantiene los derechos de autor. Permite la
distribución y modificación. Son muy permisivas y
permiten el cambio de licencia.
„
El copyleft obliga a que todas las modificaciones y
versiones extendidas del programa sean también
software libre, garantizando así las libertades de los
usuarios.
Este tipo de licencia fue ideada por Richard
Stallman.
Código abierto
La idea del código abierto se centra en la premisa
de que al compartir el código, el programa
resultante tiende a ser de calidad superior al
software propietario.
El código abierto y el software libre comparten la
mayoría de las licencias. Sin embargo, las
diferencias entre lo que abarcan ambas categorías
son pocas: casi todo el software libre es de código
abierto, y casi todo el software de código abierto es
libre.
Código abierto
Se deben cumplir 10 condiciones.
-Distribución libre.
-Código fuente abierto.
-Trabajos derivados (Redistribución permitida).
-Integridad del código autor.
-Ninguna exclusión (personas).
-Ninguna excusión a otras iniciativas.
-Mantener la distribución de la licencia.
-La licencia no puede ser exclusiva del producto.
-La licencia debe ser neutral con respecto a otras licencias.
Productos
„
-
Podemos dividir el software en dos tipos:
Software libre: Se dice de aquel cuyo código fuente
está disponible. Estos productos se pueden modificar,
distribuir y utilizar libremente.
-
Software no libre:
Los usuarios tienen limitadas sus
posibilidades de usarlo, modificarlo o redistribuirlo y su
código fuente no está disponible.
Productos
¿Qué productos hay disponibles?
Hay una gran variedad de estos productos. Además la mayoría de
ellos son bastante conocidos y utilizados. Algunos ejemplos son:
„ Sun java DB (Apache Derby)
„ Berkeley DB
„ DB2 Express-C
„ Firebird
„ H2
„ HSQLDB
„ InnoDB
„ MySQL
„ PostgreSQL
„ SQLite
„ Tora
MySQL:
MySQL es un sistema de gestión de bases de datos
relacional. Ha obtenido tal popularidad debido a su
participación como aplicación web, eso si, siempre ligada
al lenguaje PHP.
Pero además, MySQL dispone de dos características muy
importantes:
„ es software libre (con licencia GPL)
„ es muy rápido en la lectura (esto hace que sea muy
eficiente y cómodo).
Sun java DB
Es un sgbd relacional, escrito en java. Esta licenciado
bajo la licencia Apache license (requiere autor, pero
no hace falta código).
Características:
„
„
„
„
„
„
Emplea sintaxis SQL
Su código mide alrededor de 2000KB comprimido.
Soporta cifrado completo, roles y permisos.
Soporta internamente procedures, cifrado y compresión.
Trae soporte multilenguaje y localizaciones específicas.
Transacciones y recuperación ante errores ACID.
PostgreSQL
PostgreSQL es un servidor de base de datos relacional
orientada a objetos de software libre, liberado bajo la licencia
BSD que ha tenido una larga evolución, comenzando con el
proyecto Ingres en la Universidad de Berkeley.
PostgreSQL
Historia:
Este proyecto, liderado por Michael Stonebraker, fue uno de los
primeros intentos en implementar un motor de base de datos
relacional.
Después de haber trabajado un largo tiempo en Ingres y de haber
tenido una experiencia comercial con el mismo, Michael decidió volver
a la Universidad para trabajar en un nuevo proyecto sobre la
experiencia de Ingres, dicho proyecto fue llamado post-ingres o
simplemente Postgres.
PostgreSQL
Cuando el proyecto Postgres terminó, dos graduados empezaron a
trabajar sobre el código Postgres y lo primero que hicieron fue añadir
soporte para el lenguaje SQL a Postgres, creando así el sistema al
cual denominaron Postgres95.
Éste, lo modificaron más tarde para reflejar las características del
lenguaje SQL y lo terminan llamando PostgreSQL.
Con el paso del tiempo muchos desarrolladores se unieron al
proyecto. Gracias a ello se pudieron incorporar nuevas mejoras.
PostgreSQL
Propiedades:
Licencia BSD: PostgreSQL está bajo licencia BSD (Berkeley
Software Distribution), esta licencia tiene menos restricciones en
comparación con otras como la GPL estando muy cercana al dominio
público. La licencia BSD al contrario que la GPL permite el uso del
código fuente en software no libre.
Ventajas de esta licencia:
„ PostgreSQL se puede usar para fines comerciales de cualquier
tipo.
„ Se puede revender.
„ Se puede rebautizar.
PostgreSQL
™
Amplia variedad de tipos nativos
PostgreSQL provee nativamente soporte para:
•
Números de precisión arbitraria.
Texto de largo ilimitado.
Figuras geométricas
Direcciones IP
Bloques de direcciones estilo CIDR.
Direcciones MAC.
Arrays.
™
Soporte nativo para los lenguajes más populares:
•
C, C++, Java, Perl, Python, etc.
•
•
•
•
•
•
PostgreSQL
™
Soporte de todas las características de una base de datos
profesional:
„
Claves ajenas, triggers, secuencias relaciones, reglas, tipos de datos
definidos por usuarios, vistas, etc..
™
Mejor soporte que los proveedores comerciales:
„
PostgreSQL tiene una importante comunidad de profesionales y
entusiastas de los que las compañías pueden obtener beneficios y
contribuir.
PostgreSQL
Instalación Ilimitada:
Es frecuente que las bases de datos comerciales sean instaladas en
más servidores de lo que permite la licencia. Algunos proveedores
comerciales consideran a esto la principal fuente de incumplimiento de
licencia. Con PostgreSQL, nadie puede demandarlo por violar
acuerdos de licencia, puesto que no hay costo asociado a la licencia
del software.
™
PostgreSQL
Instalación Ilimitada (II):
Esto hace que tenga varias ventajas adicionales:
™
•
•
•
Modelos de negocios más rentables con instalaciones a gran
escala.
No existe la posibilidad de ser auditado para verificar
cumplimiento de licencia en ningún momento.
Flexibilidad para hacer investigación y desarrollo sin necesidad
de incurrir en costos adicionales de licenciamiento.
PostgreSQL
™
Ahorros considerables en costos de operación:
El software ha sido diseñado y creado para tener un mantenimiento
y ajuste mucho menor que los productos de los proveedores
comerciales, conservando todas las características, estabilidad y
rendimiento.
™
Estabilidad:
En contraste a muchos sistemas de bases de datos comerciales,
PostgreSQL nunca ha presentado caídas en varios años de
operación de alta actividad.
PostgreSQL
Extensible:
El código fuente está disponible para todos sin costo. El usuario
puede extender o personalizar PostgreSQL con un mínimo esfuerzo,
sin costos adicionales.
™
Multiplataforma:
PostgreSQL está disponible en casi cualquier Unix, y una versión
nativa de Windows está actualmente en estado beta de pruebas.
™
PostgreSQL
™
Diseñado para ambientes de alto volumen:
usa una estrategia de almacenamiento de filas llamada MVCC para
conseguir una mejor respuesta en ambientes de grandes
volúmenes. Los principales proveedores de sistemas de bases de
datos comerciales usan también esta tecnología.
™
Herramientas gráficas de diseño y administración de bases de
datos: Existen varias herramientas gráficas de alta calidad para
administrar las bases de datos (pgAdmin , pgAccess) y para hacer
diseño de bases de datos (Tora , Data Architect).
PostgreSQL
™
Límites de PostgreSQL:
Límites
Valores
Tamaño máximo de base de datos
Ilimitado
El cuadro Tamaño máximo
32 TB
Tamaño máximo de fila
1,6TB
Máximo tamaño del campo
1 GB
Máxima de filas por tabla
Ilimitado
Columnas máximo por mesa
250 – 1600
Máximo índices por tabla
Ilimitado
SQLite
SQLite es un sistema de gestión de bases de datos relacional
compatible con ACID, y que está contenida en una relativamente
pequeña biblioteca en C. SQLite es un proyecto de
dominio público creado por D. Richard Hipp.
SQLite
Propiedades:
Extensiones del lenguaje SQL en SQLite
SQLite proporciona una serie de mejoras en el lenguaje SQL, que no
se encuentran normalmente en otros sistemas de gestión de bases de
datos. Provee declaraciones como REPLACE y ON CONFLICT
™
(cláusulas que permiten añadir para el control de la limitación de resolución de
conflicto).
SQLite también soporta ATTACH y DETACH, que son comandos que
permiten que múltiples Bases de Datos independientes sean utilizadas
en una misma consulta.
SQLite
™
Dominio público de SQLite
El código fuente de SQLite es de dominio público, esto es, cualquiera
puede acceder al código fuente del programa, modificarlo, mejorarlo,
compartirlo y distribuir sus mejoras.
Todos los contribuyentes que participaron en la creación de SQLite,
han firmado una declaración jurada específicamente que desmiente
cualquier interés de derecho de autor en el código. Esto significa que
ninguno de los creadores es capaz de utilizar el código fuente de
SQLite con fines lucrativos u otros tipos de intereses.
SQLite
™
Sentencias SQL compiladas en una Máquina Virtual
El uso de una máquina virtual en SQLite ha sido un gran beneficio
para el desarrollo de la librería, ya que permite a los desarrolladores
ver claramente y de forma de fácil qué es lo que intentamos hacer con
cada declaración compilada, lo cual es una gran ayuda en la
depuración del programa.
SQLite
SQLite con código legible
El código fuente de SQLite está diseñado y codificado para ser legible
y accesible para un programador de nivel medio. Todos sus
procedimientos, estructuras de datos y variables están
cuidadosamente comentadas con información útil para que se pueda
comprender la estructura y el significado de cada una de las partes de
la aplicación.
™
Registros de Longitud Variable
El uso de registros de longitud variable tiene una serie de ventajas,
hace que la base de datos funcione más rápido, debido a que hay
menos información desperdiciada que leer y recorrer.
™
SQLite
Tipado dinámico en SQLite
La mayoría de los sistemas de gestión de bases de datos SQL utilizan
un tipado estático de datos. ¿Qué significa esto? Un tipo de dato se
asocia con cada columna de una tabla de valores y solo se permite
almacenar ese tipo de dato en esa columna. Sin embargo utiliza el
tipo de dato como propiedad del valor a almacenar y no de la columna
en la que se va a almacenar.
™
Por lo tanto SQLite permite al usuario almacenar cualquier valor de
cualquier dato en cualquier columna, independientemente de la
declaración del tipo de la columna.
SQLite
SQLite es compacto
El código de SQLite se optimizó para que su tamaño fuera menor de
225 KB.
™
La mayoría de los sistemas de gestión de bases de datos SQL, son
muchísimo mas grandes que éste.
Incluso existen sistemas que, sin todas las características y las
funcionalidades que incluye SQLite, son el doble de pesados que
éste.
SQLite
Usa un único archivo de base de datos
Una Base de Datos SQLite es un único archivo ordinario que además
puede estar situado en cualquier parte del sistema. Esto conlleva
como ventaja que el archivo de base de datos pueda ser fácilmente
copiado en algún dispositivo de memoria USB o enviado por correo
electrónico.
Otros sistemas de gestión de bases de datos tienden a almacenar una
colección de archivos, a los que solo el sistema de la base de datos
es capaz de acceder, lo que hace que los datos sean más seguros y
más difíciles de acceder.
™
SQLite
SQLite es Serverless
La mayoría de los motores de base de datos SQL se ejecutan como
un proceso separado del servidor. Por lo tanto, los programas que
quieren acceder a la base de datos deben comunicarse con el
servidor mediante el uso de algún tipo de vía de acceso (normalmente
TCP/IP) para enviarle peticiones y recibir de vuelta los resultados. Sin
embargo, SQLite no trabaja de esa manera, el proceso que quiere
acceder a la base de datos lee y escribe directamente de los archivos
de base de datos en el disco. No existe un servidor intermediario.
™
SQLite
Existen muchas ventajas y desventajas con respecto a los servidores.
La principal ventaja es que no existe ningún proceso de instalación de
servidor, así como su configuración, inicialización, etc. Cualquier
programa que sea capaz de acceder al disco puede utilizar una base
de datos SQLite.
Por otro lado, el uso de un servidor puede proporcionar una mejor
protección frente a fallos en la aplicación del cliente.
SQLite
Configuración
SQLite NO necesita ser "instalado", tampoco tenemos la necesidad de
encender, reiniciar o apagar algún servidor e incluso configurarlo.
Otro dato importante es que no es necesario un administrador de la
Base de datos para crearlas y dar permisos de acceso a los usuarios.
™
Además no es necesario adoptar medidas para recuperar datos tras
una caída del sistema o de la red eléctrica.
Tora
Tora es un conjunto de herramientas multiplataforma de software libre
creado para ayudar a los Administradores y Desarrolladores de
aplicaciones de Bases de Datos Oracle. También suministra soporte
para MySQL y PostgreSQL.
Tora
Propiedades:
Es una herramienta muy valorada por los mismos ya que la
herramienta que proporciona Oracle, el Enterprise Manager, no es
demasiado intuitiva. Los desarrolladores para Oracle de Red Hat
Linux afirman hacer un uso intensivo de la misma.
Independientemente del sistema operativo sobre el que se instale,
necesita como paso previo que esté instalado el cliente de Oracle
correspondiente a la misma o superior versión de base de datos sobre
la que queremos actuar. Dicho cliente se puede instalar en su forma
mínima, de modo Runtime.
Tora
Está disponible para los siguientes sistemas operativos:
•
•
•
Microsoft Windows 32-bits (95/98/NT/2000/XP)
All POSIX (Linux/BSD/Sistemas Operativos tipo UNIX)
Linux, Solaris
Firebird
„
Firebird es un sistema de administración de base
de datos relacional de código abierto, cuyo código
fue liberado por Borland en 2000. Su código fue
reescrito de C a C++.
„
El proyecto se desarrolla activamente, el 18 de abril
de 2008 fue liberada la versión 2.1 y el 26 de
diciembre de 2009 fue liberada la versión 2.5.0
RC1.
Firebird
„
Características:
- Es multiplataforma
- Ejecutable pequeño, con requerimientos de hardware bajos
- Arquitectura Cliente/Servidor sobre protocolo TCP/IP y otros
(embedded)
- Buena seguridad
- Es medianamente escalable
- Capacidad de almacenar elementos BLOB (Binary Large OBjects)
- Versión autoejecutable, sin instalación
- Requisitos de administración bajos, siendo considerada como una
base de datos libre de mantenimiento, al margen de la realización
de copias de seguridad.
Firebird
„
Tipos de servidor
Existen dos tipos de servidor Firebird para ser
instalados: Classic y Super server. Si bien tienen
varias diferencias menores entre sí, la principal consiste
en que el super server maneja hilos de ejecución
individuales para cada conexión. Por lo tanto para un
número reducido de conexiones el recomendado sería
el classic porque consumirá menor cantidad de
recursos.
Firebird
„
Metas
Debido a que el proyecto original no aprovecha
adecuadamente las máquinas con varios procesadores
o SMP, se espera que después de la estabilización de
la versión 2 se integre con el proyecto Vulcan (un
brazo de desarrollo nacido de firebird), añadiendo
soporte para esta característica, lanzando así la versión
de Firebird 3.0
Conclusión
El software libre y el no libre nos puede ofrecer los
mismos servicios.
¿Es realmente libre?
Para mantenerlos libres es preciso el uso de las
licencias.
¿Por qué utilizar software libre?
Por el coste económico, por el tipo de licencias, por
seguridad y estabilidad, independencia del
proveedor y por contribuir con la humanidad.
Bibliografia
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
http://www.sqlite.org/
http://www.postgresql.org/
http://es.wikipedia.org/
http://es.wikipedia.org/wiki/SQLite
http://es.wikipedia.org/wiki/Tora_%28Bases_de_Datos_Oracle%29
http://es.wikipedia.org/wiki/MySQL
http://es.wikipedia.org/wiki/PostgreSQL
Preguntas
…..