Esta nueva release de PostgreSQL tiene tantas mejoras que la comunidad de desarrolladores decidió saltear lo que sería la siguiente versión -PostgreSQL 8.5- pasando directamente a la 9.0, ya que se introdujeron más de 200 mejoras en dicha versión.

Para ir preparándonos y estar al tanto de todas estas mejoras, habilitaron en la wiki de PostgreSQL una sección especial donde se explican estos cambios con sus correspondientes ejemplos.

Entre los cambios más importantes tenemos la incorporación de características como:

  • Hot Standby: Esta característica nos permite crear una base de datos ‘Standby’. Esto es una segunda instancia de la base de datos: normalmente en un servidor separado a partir del log binario de la primera base de datos, permientiendo que el servidor standby esté disponible para consultas de sólo lectura.
  • Streaming Replication: Es un complemento de Hot Standby. Si bien existen varias soluciones de replicación de terceros disponibles para PostgreSQL, ésta nueva versión trae una simple e integrada versión que probablemente será usada como default en la mayoría de las soluciones de High Availability de PostgreSQL.

Más info de las características nuevas y ejemplos en What’s new in PostgreSQL 9.0

Cuando se trabajan con grandes volúmenes de datos restaurar suele ser un trabajo que demanda muchas horas,para resolver esto Postgresql creo una manera sencilla de editar los dumps que lo veremos en este Post.

Read the rest of this entry »

En un post anterior vimos cómo crear un cluster de servidores PostgreSQL con Hearbeat y DRBD. Un problema que podemos llegar a tener es que se corte la comunicación entre los nodos del cluster: cada uno de los nodos cree que el otro cayó y por lo tanto levanta los servicios que tiene asignado. Cuando el enlace vuelve a levantarse los nodos no saben qué hacer porque son todos nodos primarios. Esto se llama split brain o cerebros divididos.

Read the rest of this entry »

mediumEl equipo de desarrollo de Groovy liberó el viernes pasado la versión 1.6.5 de este magnífico lenguaje que corre sobre la JVM.

Tal como ellos dicen, esta no es una versión con nuevas características de relevancia, sino que es una versión que principalmente integra bug-fixes.

La nueva versión puede ser descargada desde el lugar habitual.

Vía javamexico.org

En este post vamos a ver cómo armar un cluster de alta disponibilidad de servidores PostgreSQL, con DRBD y Heartbeat.

Como en IPCorp nos gusta dormir tranquilos toda la solución va a estar soportada por GNU/Linux y en este ejemplo utilizaremos Ubuntu Server 9.04.

Read the rest of this entry »

Una característica poco conocida pero muy útil de PostgreSQL es la posibilidad de crear índices parciales, la mayor motivación de estos índices es evitar indexar valores comunes, esto reduce su tamaño lo cual acelerará las búsquedas que usen el índice. También acelerará muchas operaciones de actualización porque el índice no necesita ser actualizado en todos los casos.

Read the rest of this entry »

El motor de base de datos MySQL tiene incorporado de manera nativa un opción para volcar los datos de una consulta a un archivo, esto se puede hacer mediante la directiva “SELECT … INTO OUTFILE”, sin embargo esta manera tiene una desventaja importante y es que guarda el archivo de salida en el servidor debiendo tener los permisos necesarios en el server como para poder realizar la operación, la otra desventaja es que no podemos hacerlo conectados desde un cliente.
Una manera rápida resolver es usar la opción “-e” del cliente de consulta de mysql.

$ mysql -e "SELECT * FROM clientes ORDER BY dni" > clientes.txt

microsoft_access_2002
Existen en la actualidad una amplia gama de sistemas legacy que utilizan MS Access como repositorio de datos, si bien hay un sinnúmero de razones por las cuales se desaconseja utilizar MS Access como aplicación de base de datos, es cierto que hay que tener en cuenta que MS Access fué diseñado a medidados de los 90 para hardware i386 y que todavía existe muchas aplicaciones bien escritas que todavía lo utilizan.

Hoy les voy a presentar un conjunto de herramientas y librerías que permiten la interacción con bases de datos MS Access desde Linux, estas herramientas están agrupadas dentro del proyecto MDB Tools.

Requisitos

Para este pequeño tutorial vamos a utilizar un base de datos de ejemplo: Music Collection Database disponible para descargarse en el sitio de Microsoft, este archivo viene en formato .cab así que vamos a instalar una aplicación para poder descomprimirlo.

sudo aptitude install cabextract
cabextract 01018629.cab

Luego instalamos el paquete mdbtools, el cual consta también con una herramienta gráfica lo suficientemente amigable como para que no necesite un post dedicado a la GUI, para este ejemplo nos vamos a centrar en las herramientas de líneas de comando, primero instalamos mdbtools:

sudo aptitude install mdbtools

Visualizar las tablas de una base de datos

Para listar todas las tablas de una base de datos utilizamos el comando mbd-tables:

mdb-tables 01018629.mdb
Music Categories Recording Artists Recordings Switchboard Items Tracks

Es una práctica común cuando se diseñan bases de datos en MS Access es la utilización de nombres de tablas con espacios intermedios, mdb-tables nos permite determinar un separador al listar las tablas para ver bien los nombres de las tablas:

>mdb-tables -d '|' 01018629.mdb
Music Categories|Recording Artists|Recordings|Switchboard Items|Tracks|

Obteniendo el DDL de la base de datos

Para obtener el DDL (Data Definition Language) de una tabla o de toda la base de datos podemos utilizar mdb-schema, esto será de suma utilidad si queremos migrar la base de datos a otro entorno como MySQL o PostgreSQL.

mdb-schema -T 'Recording Artists' 01018629.mdb
DROP TABLE Recording Artists;
CREATE TABLE Recording Artists
(
RecordingArtistID	 Long Integer,
RecordingArtistName	 Text (100),
Photograph	 OLE (255),
Birthdate	 DateTime (Short),
Birthplace	 Text (100),
DateofDeath	 DateTime (Short),
Notes	 Memo/Hyperlink (255)
);

Exportando los datos

mbd-export nos sirve para exportar a formato CSV los datos de una tabla:

mdb-export 01018629.mdb 'Recording Artists'
RecordingArtistID,RecordingArtistName,Photograph,Birthdate,Birthplace,DateofDeath,Notes
1,"Karen Archer",,"","Greenville, SC","",""
2,"Deborah Poe",,"","New Orleans, LA","",""
3,"George Jiang",,"","Traveler's Rest, SC","",""
4,"Stefan Delmarco",,"03/15/65 00:00:00","Ann Arbor, MI","",""

Si ejecutamos mbd-export sin parámetros podemos ver más opciones de exportación.

Seleccionando y manipulando datos de la base de datos

Si lo que necesitamos es filtrar datos de la base de datos con mdb-sql podremos realizar consultas en SQL a la base de datos de manera dinámica a través de una consola. La consulta luego de ingresar la sentencia GO

mdb-sql 01018629.mdb
1 => select RecordingArtistName from "Recording Artists" where Birthplace like 'New%'
2 => go
+----------------------------------+
|RecordingArtistName              |
+----------------------------------+
|Deborah Poe                       |
+----------------------------------+
1 Row retrieved
1 =>

Microsoft no pierde las mañas

Septiembre 18th, 2009

logo-codeplex
Todos vimos con buenos ojos la creación de la Fundación CodePlex esponsoreada por Microsoft, CodePlex para aquél que no lo sepa es un sitio donde los usuarios pueden alojar proyectos open source de igual manera que lo podemos hacer en SourceForge, Google Code ó Launchpad de Canonical. Esto sin duda es muy beneficioso para promover su plataforma de desarrollo .NET o simplemente un buen intento de mejorar su imágen, sin embargo leyendo el borrador del acuerdo de contribución podemos encontrar este párrafo:

“You grant Foundation a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license in the Submission to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute the Submission and such derivative works, and to sublicense those rights to third parties.”

Traducido:

“Ud. otorga a la Fundación un licencia perpetua, internacional, no exclusiva, libre de regalías, licencia irrevocable en la Presentación para reproducir, preparar trabajos derivados, mostrar públicamente, ejecutar públicamente, y distribuir la Presentación y tales trabajos derivados, y sublicenciar estos derechos a terceros.”

En otras palabras una vez que subiste tu proyecto a CodePlex, Microsoft se queda con todos los derechos del mismo. Me gustaría poder decir que me extraña, pero de Microsoft me lo esperaba. Si quieren un análisis mas completo pueden leer este artículo de Josh Berkus Codeplex: Stay Away.

Relational Algebra

Julio 16th, 2009

Relational es una herramienta educativa de Álgebra Relacional.

Ofrece una interfaz que permite cargar y almacenar relaciones, ejecutar consultas y ver el resultado de las mismas.

También provee un módulo con álgebra relacional para python, de manera que pueda agregarse esto a otros proyectos de software libre.

Puede descargar y encontrar más información en: http://galileo.dmi.unict.it/wiki/relational/doku.php