Professional Documents
Culture Documents
En una empresa que abandono Windows XP por pasarse a Linux se encontró que ellos
trabajan con una aplicación cliente en Windows que está siendo emulada en cada
equipo Linux lo que hace que la aplicación corra un 20% más lenta que lo normal y se
generen errores inesperados, los datos de la aplicación se encuentran
almacenados en una base de datos PostgreSQL
.. siempre podeis usar una maquina virtual para correr windows y usar ese programa...
seria otra
2. PostGreSQL
2.1. ¿Qué es PostGreSQL?
PostGreSQL es un sistema de gestión de bases de datos objeto-relacional (ORDBMS)
basado en el proyecto POSTGRES, de la universidad de Berkeley. El director de este
proyecto es el profesor Michael Stonebraker, y fue patrocinado por Defense Advanced
Research Projects Agency (DARPA), el Army Research Office (ARO), el National Science
Foundation (NSF), y ESL, Inc.
PostGreSQL es una derivación libre (OpenSource) de este proyecto, y utiliza el lenguaje
SQL92/SQL99, así como otras características que comentaremos más adelante.
Fue el pionero en muchos de los conceptos existentes en el sistema objeto-relacional actual,
incluido, más tarde en otros sistemas de gestión comerciales. PostGreSQL es un sistema
objeto-relacional, ya que incluye características de la orientación a objetos, como puede ser
la herencia, tipos de datos, funciones, restricciones, disparadores, reglas e integridad
transaccional. A pesar de esto, PostGreSQL no es un sistema de gestión de bases de datos
puramente orientado a objetos.
2.2. Historia de PostGreSQL
PostGreSQL (llamado también Postgres95) fue derivado del proyecto Postgres, como ya se
ha comentado. A sus espaldas, este proyecto lleva más de una década de desarrollo, siendo
hoy en día, el sistema libre más avanzado con diferencia, soportando la gran mayoría de las
transacciones SQL, control concurrente, teniendo a su disposición varios "language
bindings" como por ejemplo C, C++, Java, Python, PHP y muchos más.
La implementación de Postgres DBMS comenzó en 1986, y no hubo una versión operativa
hasta 1987. La versión 1.0 fue liberada en Junio de 1989 a unos pocos usuarios, tras la cual
se liberó la versión 2.0 en Junio de 1990 debido a unas críticas sobre el sistema de reglas,
que obligó a su reimplementación. La versión 3.0 apareció en el año 1991, e incluyó una
serie de mejoras como una mayor eficiencia en el ejecutor de peticiones. El resto de
versiones liberadas a partir de entonces, se centraron en la portabilidad del sistema. El
proyecto se dio por finalizado en con la versión 4.2, debido al gran auge que estaba
teniendo, lo cual causó la imposibilidad de mantenimiento por parte de los desarrolladores.
En 1994, Andrew Yu y Jolly Chen añadieron un intérprete de SQL a este gestor.
Postgres95, como así se llamó fue liberado a Internet como un proyecto libre
(OpenSource). Estaba escrito totalmente en C, y la primera versión fue un 25% más
pequeña que Postgres, y entre un 30 y un 50% más rápida. A parte de la corrección de
algunos bugs, se mejoró el motor interno, se añadió un nuevo programa monitor, y se
compiló usando la utilidad GNU Make y el compilador gcc sin necesidad de parchearlo
(como había hecho falta en versiones anteriores).
En 1996, los desarrolladores decidieron cambiar el nombre a al DBMS, y lo llamaron
PostGreSQL (versión 6.0) para reflejar la relación entre Postgres y las versiones recientes
de SQL. Se crearon nuevas mejoras y modificaciones, que repercutieron en un 20-40% más
de eficiencia, así como la incorporación del estándar SQL92.
La versión que se ofrece a fechas de este escrito, es la versión 7.2.1. Se puede encontrar
más información acerca de las características e historia en [PostGreSQL_Manual].
2.3. Características de PostGreSQL
A continuación se enumeran las principales características de este gestor de bases de datos:
1. Implementación del estándar SQL92/SQL99.
2. Soporta distintos tipos de datos: además del soporte para los tipos base, también
soporta datos de tipo fecha, monetarios, elementos gráficos, datos sobre redes
(MAC, IP ...), cadenas de bits, etc. También permite la creación de tipos propios.
3. Incorpora una estructura de datos array.
4. Incorpora funciones de diversa índole: manejo de fechas, geométricas, orientadas a
operaciones con redes, etc.
5. Permite la declaración de funciones propias, así como la definición de disparadores.
6. Soporta el uso de índices, reglas y vistas.
7. Incluye herencia entre tablas (aunque no entre objetos, ya que no existen), por lo
que a este gestor de bases de datos se le incluye entre los gestores objeto-
relacionales.
8. Permite la gestión de diferentes usuarios, como también los permisos asignados a
cada uno de ellos.
2.4. ¿Qué es lo que le falta?
PostGreSQL es un magnífico gestor de bases de datos, capaz de competir con muchos
gestores comerciales, aunque carezca de alguna característica casi imprescindible. Ésta es,
bajo mi punto de vista, un conjunto de herramientas que permitan una fácil gestión de los
usuarios y de las bases de datos que contenga el sistema. Por otro lado, la velocidad de
respuesta que ofrece este gestor con bases de datos relativamente pequeñas puede parecer
un poco deficiente, aunque esta misma velocidad la mantiene al gestionar bases de datos
realmente grandes, cosa que resulta loable.
2.5. Opinión Personal
PostGreSQL es un magnífico gestor de bases de datos. Tiene prácticamente todo lo que
tienen los gestores comerciales, haciéndo de él una muy buena alternativa GPL. A pesar de
ello, el primer encuentro con este gestor es un poco "duro", ya que la sintaxis de algunos de
sus comandos no es nada intuitiva. También resulta engorroso las pequeñas variaciones que
presenta este gestor en algunos de los tipos de datos que maneja, siendo el problema más
comentado el referente al tipo "serial".
Una vez nos hayamos hecho con su sintaxis y fijándonos en estos pequeños detalles (que
por otro lado están totalmente documentados), PostGreSQL es un gestor magnífico, que
posee una gran escalabilidad, haciéndolo idóneo para su uso en sitios web que posean
alrededor de 500.000 peticiones por día.
PostgreSQL
De Wikipedia, la enciclopedia libre
Saltar a navegación, búsqueda
PostgreSQL
Desarrollador
Información general
Género RDBMS
Licencia BSD
En español
[editar] Funciones
Bloques de código que se ejecutan en el servidor. Pueden ser escritos en varios lenguajes,
con la potencia que cada uno de ellos da, desde las operaciones básicas de programación,
tales como bifurcaciones y bucles, hasta las complejidades de la programación orientada a
objetos o la programación funcional.
Los disparadores (triggers en inglés) son funciones enlazadas a operaciones sobre los datos.
Algunos de los lenguajes que se pueden usar son los siguientes:
• Un lenguaje propio llamado PL/PgSQL (similar al PL/SQL de oracle).
• C.
• C++.
• Java PL/Java web.
• PL/Perl.
• plPHP.
• PL/Python.
• PL/Ruby.
• PL/sh.
• PL/Tcl.
• PL/Scheme.
• Lenguaje para aplicaciones estadísticas R por medio de PL/R.
PostgreSQL soporta funciones que retornan "filas", donde la salida puede tratarse como un
conjunto de valores que pueden ser tratados igual a una fila retornada por una consulta
(query en inglés).
Las funciones pueden ser definidas para ejecutarse con los derechos del usuario ejecutor o
con los derechos de un usuario previamente definido. El concepto de funciones, en otros
DBMS, son muchas veces referidas como "procedimientos almacenados" (stored
procedures en inglés).
[editar] Productos alrededor de PostgreSQL
El PGDG solo desarrolla el Motor de Datos y un número pequeño de utilidades, para
potenciar el trabajo con PostgreSQL suele ser necesario añadir utilidades externas creadas
especialmente para este motor, algunas de estas herramientas son:
[editar] Alternativas Comerciales
Gracias a su licencia BSD, se permite la utilización del código para ser comercializado.
Uno de los casos ejemplo es la de Enterprise DB (Postgresql Plus), la cual incluye varios
agregados y una interfaz de desarrollo basada en Java. Entre otras empresas que utilizan
Postgresql para comercializar se encuentra CyberTech (alemania), con su producto
CyberCluster.
[editar] GIS
PostGIS
[editar] Replicación
PgCluster
Slony-I
PyReplica
PgAccess
PhpPgAdmin
Entorno web.
psql
Cliente de consola.
Database Master
[editar] XML
XML/XSLT soporte
Via XPath extensiones en la sección contrib.
[editar] Premios
PostgreSQL ha recibido los siguientes reconocimientos:[3]
• 1999 LinuxWorld Editor's Choice Award for Best Database
• 2000 Linux Journal Editors' Choice Awards for Best Database
• 2002 Linux New Media Editors Choice Award for Best Database
• 2003 Linux Journal Editors' Choice Awards for Best Database
• 2004 Linux New Media Award For Best Database
• 2004 Linux Journal Editors' Choice Awards for Best Database
• 2004 ArsTechnica Best Server Application Award
• 2005 Linux Journal Editors' Choice Awards for Best Database
• 2006 Linux Journal Editors' Choice Awards for Best Database
• 2008 Developer.com Product of the Year, Database Tool
[editar] Referencias
1. ↑ PostgreSQL affiliates.ORG domain
2. ↑ Sony Online opts for open-source database over Oracle
3. ↑ «PostgreSQL, Award Winning Software». postgresql.org (19-01-2008).
Consultado el 31-01-2008.
Herramientas personales
• Nuevas características
• Registrarse/Entrar
Espacios de nombres
• Artículo
• Discusión
Variantes
Vistas
• Leer
• Editar
• Ver historial
Acciones
Buscar
Principio del formulario
Especial:Buscar
Búsqueda
• Türkçe
• Українська
• Tiếng Việt
• 中文
• Esta página fue modificada por última vez el 28 oct 2010, a las 21:23.
• El texto está disponible bajo la Licencia Creative Commons
Reconocimiento Compartir Igual 3.0; podrían ser aplicables cláusulas
adicionales. Lee los términos de uso para más información.
• Política de privacidad
• Acerca de Wikipedia
• Descargo de responsabilidad
•
Hola, antes que nada, toda emulación corre el riesgo de perder estabilidad y
velocidad, creo que es algo que no se puede dejar de lado al momento de
realizar una migracion, y mas del calibre que nombras.
Evidentemente el analista/programador que realizó este trabajo no consideró la
importancia de perder eficiencia a pos de lograr un cambio de plataforma,
quizas pensando en "Ahorrar" o liberar a la empresa de costosas licencias.
Creo que ese es el precio que se debe pagar.
Entonces, por un lado tenes una ventaja y es que el sistema esta corriendo
bajo PostgreeSQL, por lo tanto es multiplataforma,
Actualmente arriesgaria a tratar de ir migrando esta aplicacion (ya sea por
modulos o por importancia) a un lenguaje con soporte multiplataforma,
empleando ya sea codigo para servidor o algun lenguaje interpretado, como
Python o Java.
Evidentemente la curva de aprendizaje de Python es mucho mas inferior que la
de JAVA . De ultima, podes llegar a meplar algun wrapper para PHP.
Te dejo una idea, actualmente trabajo en una empresa que posee 3 sistemas
distintos, uno es un Ardent (actualmente es de IBM bajo plataforma NT, las DB
no son relacionales sino Multivalue o Multidimencionales), y por otro lado
dispongo de un software enlatado que corre solamente bajo entorno XP por
disponer de una llave de licencia/habilitacion, que es practicamente no
emulable bajo Linux por disponer de un driver propietario.
Estoy gestando un servidor con software libre, y empleo PHP y Python para
replicar el sistema, es un gran trabajo, pero al final de todo, valdrá la pena,
quitandome de encima la tan costosas licencias, y todo el problema que
conlleva mantener un sistema CERRADO.