sábado, 4 de abril de 2009

MacPorts y Postgresql 8.3

Al preparar la entrada sobre Talend me quedé un poco apenado por no disponer de ningún ejemplo de la herramienta trabajando sobre una base de datos. En realidad debido a que, simple y llanamente, a estas alturas aún no había instalado ningún motor de gestión de bases de datos en mi equipo de uso personal. Cierto que hacía muchísimo tiempo que no usaba mi ordenador doméstico para cosas profesionales. Algo que, sin embargo, parece estar cambiando estas últimas semanas, en las que me entretengo con cosillas nuevas; o revisitando algunas viejas con enfoques distintos.

Las herramientas/aplicativos que he venido usando durante mi experiencia profesional han estado siempre muy ligados a la empresa en la que he trabajado. Como le habrá pasado a todo cristo viviente en esta profesión. La presumible diferencia es que yo cambio de empresa, de promedio, cada dos años. Aunque creo haber encontrado la definitiva, aclaro. Aclaro para los posibles compañeros de empresa que sepan que ya se acerca la fecha de mi segundo aniversario en ella. De momento me quedo.

En el apartado de bases de datos, durante casi tres años hice uso, casi en exclusiva, de PostgreSQL. Hasta su versión 7.1, si no recuerdo mal. Desde mediados de 2002 hasta mediados de 2007 trabajé en exclusiva con SQL Server y apenas me he mantenido al día en los avances implantados o realizados en el primero. Quitando pequeñas cosas realizadas con otros SGBD, como Interbase, Oracle, MySQL, etc., en los que más cómo puedo llegar a sentirme son en los dos mencionados antes. Especialmente en el de Microsoft, dado que es el que mas tiempo -y recientemente- he usado. Pero como es de pago y, para colmo, sólo existe en su encarnación para el sistema operativo de las ventanas, queda descartado.

MacPorts

Desde el sitio de PostgreSQL puedes descargarte un instalador para Mac. Es por todos conocido lo maravilloso que resulta el sistema operativo de la manzana cuando se trata de instalar y desinstalar software. Ahora bien, aquellos que hayan tenido roces, especialmente de índole íntima, con Linux, sabrán lo cojonudo que es disponer de un repositorio de paquetes al que recurrir y evitarte, de esta forma, estar andando con tropecientos instaladores, o desinstalando la versión anterior cuando sale una nueva del software, etc., etc.

Buscando algo por ese estilo para Mac, encontré 'The MacPorts Project' (también en la Wikipedia). Y confieso que me ha entusiasmado. No es Linux, claro está, pero a estas alturas hay unos cuantos (más de cinco mil) ports disponibles. Y tiene una cantidad considerable de opciones. Habrá que profundizar un poco más en él.

La instalación es muy sencilla. Aunque no tan sencilla como las aplicaciones que simplemente funcionan con un arrastrar y soltar. El proceso requiere de un instalador. Si estás acostumbrado a Mac verás que sigue el mismo esquema de varios pasos de todos los instaladores.

Una vez concluye la instalación, el siguiente paso es entrar en una sesión de terminal. En mi caso uso mucho el Spotlight para estas cosas. Con apenas un par de pulsaciones tengo una ventana de terminal abierta (seguro que habrá un camino más rápido para hacerlo). A partir de ahí, port help y a ver qué nos depara el futuro.

Instalando PostgreSQL...

Ya en la ventana de terminal, lo primero es buscar lo que se quiere. En mi caso, como lo que quiero es el gestor de bases de datos PostgreSQL, con un port list postgresql* obtuve la lista de todos los paquetes que empiezan con ese texto.

Dado que no tengo software en producción que deba mantener, y que soy un verdadero kamikaze en lo referente a las versiones, opté por instalar la última versión, que en el momento de escribir esto es la 8.3.7. Así, con dos eggs y sin importarme lo más mínimo cuánto ha cambiado desde la versión 7.x.

Para instalar paquetes es conveniente -y necesario- hacerlo usando el programa sudo, anteponiéndolo en la línea de comando, antes de invocar la aplicación port.

Yo instalé los tres paquetes que hay para la versión 8.3:

sudo port install postgresql83
sudo port install postgresql83-server

sudo port install postgresql83-doc


Cada uno de ellos descarga, además del paquete solicitado, los paquetes de los que depende. MacPorts se a Gentoo Linux en su filosofía, donde por defecto te descargas la versión en código fuente del paquete que se compilará para tu máquina en particular. Lo que puede suponer achicharrar, sea dicho de paso, la CPU de tu carísimo Mac. Por muy doble-núcleo-dos-a-tropecientos-gigaherzios que sea ésta.

Al finalizar la instalación de paquete postgresql83-server tenemos la posibilidad de seguir las instrucciones que vuelca en la consola y establecer que el servicio arranque automáticamente cuando inicie el sistema operativo. Para ello, y tal como aparece en la captura anterior, debemos escribir la línea de comando: sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83.plist.

Una vez se ha indicado que quieres que cargue en el proceso de arranque, queda crear la primera instancia de PostgreSQL. Para ello se debe seguir los pasos indicados en la captura anterior, volcados en la consola por el mismo proceso de instalación del paquete servidor. Tras ello podrás arrancar el demonio desde línea de comando, tal como te indica al final de proceso de inicialización (ver siguiente captura).


Crear un usuario administrador y crear una base de datos


Por defecto el único usuario que puede acceder a las bases de datos creadas tras la inicialización es el usuario 'postgres', el mismo con el que se lanza el servicio del sistema y el único que existe asociado a las bases de datos. Si en este momento se intentara usar el comando psql83, que es el programa que te permite administrar las bases de datos, con el usuario autenticado, arrojaría un error.

Lo primero, por tanto, es crear un usuario con capacidades administrativas y una base de datos asociada a él. Lo segundo sería completamente opcional, ya que es administrador, pero es muy recomendable. En mi caso di de alta un usuario con el mismo nombre que tengo en el sistema y con poder absoluto. Primero haremos una suplantación y entramos con el usuario 'postgres' usando el comando sudo su postgres y, luego, entrando en la aplicación psql83. Dentro de la misma haremos uso de la sentencia CREATE USER. Para obtener la ayuda usaremos el comando \h seguido de aquello sobre lo que queremos informarnos, en este caso CREATE USER.

Ya podemos volver a nuestro usuario (para salir de la sesión de psql hay que usar \q). Pero si intentásemos entrar ahora, obtendríamos que no hay una base de datos con el nombre del usuario, que es la que, por defecto, intenta abrir si solo ponemos psql83. Con el parámetro -l (menos ele) podremos conocer las bases de datos existentes en todo momento.

Para poder crear nuestra primera base de datos deberemos conectarnos a alguna de las ya existentes. Aunque es recomendable no andar toqueteándolas. Para ello usaremos el parámetro -d seguido del nombre de la base de datos que queremos usar. Una vez dentro crearemos nuestra base de datos con la sentencia CREATE DATABASE, tal como se puede ver en la siguiente captura. Saliendo y usando el parámetro -l nuevamente, podrás apreciar que aparece una nueva base de datos en la que el propietario es el usuario que hayas indicado.

A partir de aquí ya queda que se definan las tablas que se deseen. De momento vamos a dejar el asunto aquí. En Internet hay muchos tutoriales SQL que te pueden instruir tanto en el uso del lenguaje de definición de datos (DDL), el de manipulación de datos (DML) como en del de control de datos (DCL).

Mirando al futuro...

Aunque dudo que esta entrada sea realmente de utilidad para alguien, lo cierto es que me he divertido escribiéndola; que al final de eso se trata. Hacía tanto tiempo que no jugueteaba con PostgreSQL que había olvidado la mitad de las cosas y al escribirlas también me aseguro que me servirán de apuntes en el futuro. La senilidad hace estragos en mi memoria a una velocidad vertiginosa.

Por otro lado, si PostgreSQL no es lo tuyo y prefieres algo del estilo de MySQL, solo tienes que hacer port list mysql* y a disfrutar. Y si quieres probar otras cosas, como Mono, siempre puedes intentarlo con sudo port install mono.

Igual dentro de un tiempo escribo algo sobre mis batacazos experiencias con Mono 2.4, o el que toque, en Mac. O, tal vez, me meta con MySQL, ya que se usa tanto y en tantos sitios. O, simplemente, me dedique a otra cosa. El que escribió mi futuro debió traspapelar algunas de las hojas.

4 comentarios:

sulaco dijo...

Cuando leo estas cosas me asusto. Yo pasé por el mismo sitio que tú y a mí no se me pegó nada de nada. Aunque para lo que valen los títulos de INformática hoy en día, tampoco me precoupa demasiado.

Uno+Cero dijo...

Yo es que me divierto con estas cosas. Ya sabes que cada uno tiene sus filias. La mía es mirar cosas relativas a la Informática...

sulaco dijo...

Yo me pasé ayer tres cuartos de hora para modificar una línea de código PHP para que mis comentarios tengan otro color y únicamente involucraba una sentencia IF y una variable. No veas como se me atragantan estas cosas. Por suerte hoy en día con software libre y miles de plugins se puede conseguir casi todo sin tanto esfuerzo.

Uno+Cero dijo...

Por eso tú maximizas y diversificas tu tiempo libre y yo me ataradeo (de volverse más tarado cada día) con estas cosas. ¿Pero qué le voy a hacer si es lo que -una de las cosas que- me gusta?