¿Qué Es El PostgreSQL

11
¿Qué es el PostgreSQL? PostgreSQL es el componente de su ERP que se encarga de guardar la información de forma estructurada y que permite el acceso rápido a su información. Como el resto de los componentes de las instalaciones que ponemos en el servidor de nuestros clientes es software libre, como lo es el sistema operativo (Debian GNU / Linux) o el propio ERP. Nuestras instalaciones responden al siguiente esquema: Como ocurre con el ERP o el sistema operativo, el hecho que PostgreSQL sea de software libre y además gratuito no significa que sea un producto inferior a su competencia de software propietario. De hecho compite cara a cara con Microsoft SQL Server y Oracle Database. Además, en los últimos tiempos varias empresas han consolidado con fuerza en abastecer servicios profesionales y altamente cualificados en apoyo a PostgreSQL. Empresas como EnterpriseDB o 2ndQuadrant , permiten tener un servicio adicional de apoyo en el sistema, más allá de donde llega el conocimiento de NaN·tic. Estas empresas ofrecen apoyo a empresas tan importantes como Skype o Amazon, que utilizan PostgreSQL en sus entornos de producción. Esto nos lleva a una de las grandes ventajas del software libre y es que empresas pequeñas y medianas, tienen acceso gratuito a la misma tecnología que están utilizando grandes corporaciones cientos o miles de veces más grandes.

description

PostgreSQL conceptos fundamentales e investigación.

Transcript of ¿Qué Es El PostgreSQL

Page 1: ¿Qué Es El PostgreSQL

¿Qué es el PostgreSQL?

PostgreSQL es el componente de su ERP que se encarga de guardar la información de forma estructurada y que permite el acceso rápido a su información. Como el resto de los componentes de las instalaciones que ponemos en el servidor de nuestros clientes es software libre, como lo es el sistema operativo (Debian GNU / Linux) o el propio ERP. Nuestras instalaciones responden al siguiente esquema:

Como ocurre con el ERP o el sistema operativo, el hecho que PostgreSQL sea de software libre y además gratuito no significa que sea un producto inferior a su competencia de software propietario. De hecho compite cara a cara con Microsoft SQL Server y Oracle Database.

Además, en los últimos tiempos varias empresas han consolidado con fuerza en abastecer servicios profesionales y altamente cualificados en apoyo a PostgreSQL. Empresas como EnterpriseDB o 2ndQuadrant, permiten tener un servicio adicional de apoyo en el sistema, más allá de donde llega el conocimiento de NaN·tic. Estas empresas ofrecen apoyo a empresas tan importantes como Skype o Amazon, que utilizan PostgreSQL en sus entornos de producción.

Esto nos lleva a una de las grandes ventajas del software libre y es que empresas pequeñas y medianas, tienen acceso gratuito a la misma tecnología que están utilizando grandes corporaciones cientos o miles de veces más grandes.

Las nuevas versiones de PostgreSQL, como la reciente 9.2, además de aumentar sustancialmente el rendimiento del sistema, tienen características avanzadas como la replicación que ya están disfrutando algunos de nuestros clientes. La replicación en tiempo real, permite tener un segundo servidor con la misma información que el servidor principal y en caso de fallo del primer sistema poner en marcha el segundo en tan sólo unos minutos y sin pérdida de información.

El otro gran sistema gestor de bases de datos de software libre, más conocido y extendido, es el MySQL.

Page 2: ¿Qué Es El PostgreSQL

CARACTERÍSTICAS

La última serie de producción es la 9.1. Sus características técnicas la hacen una de las bases de datos más potentes y robustas del mercado. Su desarrollo comenzo hace más de 16 años, y durante este tiempo, estabilidad, potencia, robustez, facilidad de administración e implementación de estándares han sido las características que más se han tenido en cuenta durante su desarrollo. PostgreSQL funciona muy bien con grandes cantidades de datos y una alta concurrencia de usuarios accediendo a la vez a el sistema.A continuación teneis algunas de las características más importantes y soportadas por PostgreSQL:

Generales

Es una base de datos 100% ACID. 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.

Incluye herencia entre tablas, por lo que a este gestor de bases de datos se le incluye entre los gestores objeto-relacionales.

Copias de seguridad en caliente (Online/hot backups) Unicode Juegos de caracteres internacionales Regionalización por columna Multi-Version Concurrency Control (MVCC) Multiples métodos de autentificación Acceso encriptado via SSL SE-postgres Completa documentación Licencia BSD Disponible para Linux y UNIX en todas sus variantes (AIX, BSD, HP-UX, SGI

IRIX, Mac OS X, Solaris, Tru64) y Windows 32/64bit.

Alta concurrencia

Mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una visión consistente de lo último a lo que se le hizo commit.

Page 3: ¿Qué Es El PostgreSQL

LIMITACIONES

Puntos de recuperación dentro de transacciones. Actualmente, las transacciones abortan completamente si se encuentra un fallo durante su ejecución.

No soporta tablespaces para definir dónde almacenar la base de datos, el esquema, los índices, etc. (versiones antes de la 9.0)

El soporte a orientación a objetos es una simple extensión que ofrece prestaciones como la herencia, no un soporte completo.

Ventajas:

  Ampliamente popular - Ideal para tecnologias Web. Fácil de Administrar. Su sintaxis SQL es estándar y fácil de aprender. Footprint bajo de memoria, bastante poderoso con  una configuración

adecuada. Multiplataforma. Capacidades de replicación de datos. Soporte empresarial disponible.

Page 4: ¿Qué Es El PostgreSQL

Estabilidad y confiabilidad legendarias. En contraste a muchos sistemas de bases de datos comerciales, es extremadamente común que compañías reporten que PostgreSQL nunca ha presentado caídas en varios años de operación de alta actividad. Ni una sola vez. Simplemente funciona.

Extensible.El código fuente está disponible para todos sin costo. Si su equipo necesita extender o personalizar PostgreSQL de alguna manera, pueden hacerlo con un mínimo esfuerzo, sin costos adicionales. Esto es complementado por la comunidad de profesionales y entusiastas de PostgreSQL alrededor del mundo que también extienden PostgreSQL todos los días.

Multiplataforma.PostgreSQL está disponible en casi cualquier Unix (34 plataformas en la última versión estable), y una versión nativa de Windows está actualmente en estado beta de pruebas.

Diseñado para ambientes de alto volumen.PostgreSQL usa una estrategia de almacenamiento de filas llamada MVCC para conseguir una mucho mejor respuesta en ambientes de grandes volúmenes. Los principales proveedores de sistemas de bases de datos comerciales usan también esta tecnología, por las mismas razones.

 DESVENTAJAS

En comparación con MySQL es más lento en inserciones y actualizaciones, ya que cuenta con cabeceras de intersección que no tiene MySQL.

Soporte en línea: Hay foros oficiales, pero no hay una ayuda obligatoria. Consume más recursos que MySQL. La sintaxtis de algunos de sus comandos o sentencias no es nada intuitiv

Page 5: ¿Qué Es El PostgreSQL

Instalación de PostgreSQL

Lo primero que tenemos que hacer es crear una cuenta que administrará la base de datos:

Cuenta de administración de la BD [localhost]$ su [localhost]$ /usr/sbin/adduser postgres [localhost]$ passwd postgres [localhost]$ exit

Una vez creada la cuenta Postgres crearemos los directorios que utilizaremos para instalar PostgreSQL con los permisos adecuados:

Creación de directorios para la correcta instalación de PostgreSQL [localhost]$ su [localhost]$ cd /usr/src [localhost]$ mkdir pgsql [localhost]$ chown postgres:postgres pgsql [localhost]$ cd /usr/local [localhost]$ mkdir pgsql [localhost]$ chown postgres:postgres pgsql [localhost]$ exit

Empezamos con el proceso de compilación/instalación:

Proceso de compilación/instalación [localhost]$ su postgres [localhost]$ cd /usr/src/pgsql [localhost]$ gunzip -c /local/download/postgresql-6.5.x.tar.gz | tar xvf -

[localhost]$ cd /usr/src/pgsql/postgresql-6.5.x/src [localhost]$ ./configure --prefix=/usr/local/pgsql --with-tcl --with-perl

[localhost]$ gmake all > make.log 2>&1 & [localhost]$ tail -f make.log

[localhost]$ gmake install > make.install.log 2>&1 & [localhost]$ tail -f make.install.log [localhost]$ exit

Ahora tenemos que decirle al sistema donde poder encontrar las librerias necesarias, para ello actualizamos el fichero /etc/ld.so.conf:

Actualización del fichero de configuración [localhost]$ su [localhost]$ echo /usr/local/pgsql/lib >> /etc/ld.so.conf

Page 6: ¿Qué Es El PostgreSQL

[localhost]$ /sbin/ldconfig. [localhost]$ exit

Tambien tendremos que actualizar el fichero ~/.bash_profile de la cuenta administradora de la base de datos, en este caso Postgres (si utilizais otro shell que no sea bash, tendreis que cambiar el archivo correspondiente, en vez de .bash_profile):

Actualización del fichero profile [localhost]$ su postgres

**************************************** Editar el archivo ~/.bash_profile y anadirle lo siguiente ****************************************

PATH=$PATH:/usr/local/pgsql/bin MANPATH=$MANPATH:/usr/local/pgsql/man PGLIB=/usr/local/pgsql/lib PGDATA=/usr/local/pgsql/data export PATH MANPATH PGLIB PGDATA

**************************************** Salir para que los cambios surtan efecto ****************************************

[localhost]$ exit

Una vez que hemos terminado de instalar la base de datos y configurar nuestro sistema, tenemos que inicializarla y arrancarla:

Inicialización y arranque de la BD [localhost]$ su postgres [localhost]$ initdb [localhost]$ cd [localhost]$ nohup postmaster -i > pgserver.log 2>&1 & [localhost]$ exit

Page 7: ¿Qué Es El PostgreSQL

Acceder a postgreSQL via PHP/web.

Lo primero es incluir en el archivo /usr/local/pgsql/data/pg_hba.conf la siguiente linea:

host all tu_maquina_IP tu_maquina_NETMASK trust

Y la segunda es dar privilegios de acceso en tu base de datos/tablas al usuario "Nobody"para que pueda coger los datos de la misma (Nobody es el usuario que ejecuta el servidor Apache por defecto). Para ello puedes hacer lo siguiente:

Dar privilegios a la BD *************************************** Suponemos que tenemos una base de datos llamada prueba, con una tabla llamada direcciones ***************************************

[localhost]$ su postgres [localhost]$ psql prueba prueba=> GRANT SELECT ON direcciones prueba=> TO nobody;

prueba=> z prueba=> q [localhost]$ exit

Instalación de Apache y PHP como módulo mismo

Pasamos a la segunda parte de este artículo, para ello procederemos como sigue:

Instalación de Apache/Php [localhost]$ su [localhost]$ cd /usr/src [localhost]$ gunzip -c /local/download/apache_1.3.x.tar.gz | tar xvf - [localhost]$ gunzip -c /local/download/php-3.0.x.tar.gz | tar xvf - [localhost]$ cd apache_1.3.x [localhost]$ ./configure --prefix=/usr/local/apache [localhost]$ cd ../php-3.0.x [localhost]$ ./configure --with-pgsql=/usr/local/pgsql --with-apache=../apache_1.3.x --enable-track-vars --enable-sysvsem --enable-sysvshm --enable-url-includes [localhost]$ make [localhost]$ make install [localhost]$ cd ../apache_1.3.x [localhost]$ ./configure --prefix=/usr/local/apache --activate-module=src/modules/php3/libphp3.a [localhost]$ make

Page 8: ¿Qué Es El PostgreSQL

[localhost]$ make install [localhost]$ cd ../php-3.0.x [localhost]$ cp php3.ini-dist /usr/local/lib/php3.ini [localhost]$ exit

Ya tenemos apache instalado y PHP como módulo del mismo. Ahora tenemos que hacer unos cuantos ajustes en la configuración para que todo funcione. Tenemos que editar el fichero /usr/local/apache/conf/httpd.conf y añadirle lo siguiente:

Actualización del fichero de configuración AddType application/x-httpd-php3 .php DirectoryIndex index.html index.php

Estas dos lineas son las únicas necesarias para que Apache sepa que hacer con un fichero que contenga código PHP. Existen otras opciones que deberias actualizar en vuestro fichero /usr/local/apache/conf/httpd.conf para terminar de configurar Apache, por ejemplo: ServerAdmin, ServerName, DocumentRoot, directivas "Directory", etc. Los comentarios incluidos en este fichero son autoexplicativos y no deberiais tener ningun problema para ajustar la configuración a vuestro sistema. Ahora sólo nos queda arrancar el servidor Apache:

Arranque del servidor

[localhost]$ su [localhost]$ /usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf [localhost]$ exit