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 …..