Npgsql2 Beta 3

Acaban de anunciar una nueva beta del conector libre de .NET para PostgreSQL, el cual trae algunas mejoras de rendimiento y algunas novedades, entre las cuales están:
  • Soporte para conexiones con autenticación integrada de Windows, esta característica naturalemente se debe a que PostgreSQL 8.3 agregó esta funcionalidad para la versión de Windows. Lo único que se tiene que hacer para usar este tipo de autenticación es agregar Integrated Security=true a la cadena de conexión
  • Soporte para el manejo de arreglos unidimensionales y multidimensionales:
    csharp:
    NpgsqlCommand d = new NpgsqlCommand();

    Int32[] a = new Int32[2];

    a[0] = 4;
    a[1] = 2;

    NpgsqlCommand command = new NpgsqlCommand("select :arrayParam", conn);

    command.Parameters.Add(new NpgsqlParameter("arrayParam", NpgsqlDbType.Array | NpgsqlDbType.Integer));

    command.Parameters[0].Value = a;
  • Nuevos tipos de datos para fechas que soportan tiempos que están fuera del rango 0001-01-01T00:00:00 - 9999-12-31T23:59:59.
  • Mejoras de rendimiento y corrección de funcionalidades de la clase NpgsqlDataReader.
  • Soporte para CommandBehavior.SequentialAccess
  • El único valor que podrá tomar client_encoding es UTF-8 debido a problemas que se presentan usando otras codificaciones. No estoy seguro del impacto que vaya a tener esto en aplicaciones existentes, pero habrá que hacer las pruebas respectivas para evitar problemas. 🙂
  • Soporte para añadir un valor a search_path desde la cadena de conexión.

Nueva revista sobre PostgreSQL

Para los que suelen trabajar con PostgreSQL, acaba de salir el primer número de la revista Postgres OnLine Journal, que trata sólo temas relacionados a PostgreSQL. Esta edición incluye los siguientes artículos:

El siguiente número todavía está en progreso pero se puede estar leyendo parte de los artículos.

Beta 2 de PostgreSQL 8.3

Ya está disponible una nueva beta de PostgreSQL, por lo que leí trae bastantes mejoras en rendimiento con respecto a versiones anteriores. Pueden ver una traducción -- pésima -- de las "Release Notes" en las siguientes líneas:

Nueva funcionalidad

  • Soporte integrado de las búsquedas de texto completo (estaba como módulo tsearch2).
  • Soporte para el estandar SQL/XML, incluyendo nuevos operadores y el tipo XML.
  • Soporte para enumerados.
  • Nuevo tipo de dato UUID.
  • Soporte para arreglos de tipos compuestos.
  • Control para la ordenación de campos NULL (ORDER BY ... NULLS FIRST/LAST).
  • Soporte para cursores actualizables (UPDATE/DELETE WHERE CURRENT OF cursor_name).
  • La configuración de los parámetros del servidor ahora puede establecerse para el ámbito de una función.
  • Los tipos de datos personalizados pueden tener parámetros.
  • Invalidación de funciones cacheadas cuando la definición de las tablas o estadísticas varien (ya no hay necesidad de utilizar EXECUTE para trabajar con tablas temporales en PL/pgSQL).
  • Múltiples mejoras en el registro y colección de estadísticas.
  • Soporte de SSPI para la autenticación en dominios Windows.
  • Soporte para múltiples procesos concurrentes de autovacuum.
  • El código se puede compilar sin problemas con Microsoft Visual C++

Mejoras de rendimiento

  • Asynchronous commit: permite que las transacciones sean comprometidas pero los cambios en disco retrasados, esto permite mayor rendimiento para las consultas de modificación de datos pero con el riesgo de pérdida de datos.
  • Distributed checkpoints: Reduce la actividad de I/O durante los checkpoints.
  • Heap-Only Tuples: por cuestiones de concurrencia, PostgreSQL retiene las versiones antiguas de las tuplas actualizadas y el espacio muerto dejado por éstas sólo era posible recuperarlas con VACUUM. HOT acelera la reutilización del espacio usado por los UPDATEs.
  • Just-in-time background writer hace más eficiente la escritura en disco.
  • Reducción del tamaño usado por campo y tupla (los campos que contengan menos de 128 bytes reducirán de 3 a 6 bytes, las tuplas serán 4 bytes más pequeños).
  • Mejora en el manejo de recorridos secuenciales.
  • Permitir que las operaciones ORDER BY ... LIMIT se realicen sin necesidad de ordenar toda la tabla.
  • Reducción de la necesidad de hacer vacuum.

Las descargas, como siempre, están disponibles en el sitio web del proyecto.