Parametrizando el archivo DATABASES.CONF

1 comentario

Como ya hemos visto en artículos anteriores, el archivo DATABASES.CONF es el antiguo archivo ALIASES.CONF que ahora en Firebird 3 tiene un nuevo nombre y nuevas funcionalidades.

En ALIASES.CONF lo que hacíamos era darle un alias, apodo, nombre abreviado, o sobrenombre a las bases de datos. Hacíamos esto por dos motivos principalmente:

  1. Para usar el nombre abreviado cuando queríamos conectarnos a una Base de Datos, pues era más corto y más fácil de recordar
  2. Para dificultar el trabajo de algún intruso, pues conocer el alias no le permitía conocer la ubicación de la Base de Datos

Ejemplo de contenido del archivo ALIASES.CONF


ADMIN=D:\DATABASES\ADMINISTRATIVO.FDB

CONTA=E:\SISTEMAS\CONTABILIDAD\DATABASES\CONTA.FDB

En DATABASES.CONF podemos hacer eso mismo pero además podemos determinar el comportamiento de cada Base de Datos, de forma individual. Si lo deseas puedes renombrar a un antiguo archivo ALIASES.CONF como DATABASES.CONF y funcionará perfectamente. Pero además puedes parametrizarlo.

Los parámetros que especificamos en DATABASES.CONF pueden afectar al Servidor o al Cliente.

Parámetros de DATABASES.CONF que afectan al Servidor

  • DatabaseGrowthIncrement
  • DeadlockTimeout
  • DefaultDbCachePages
  • EventMemSize
  • FileSystemCacheThreshold
  • ExternalFileAccess
  • GCPolicy
  • LockAcquireSpins
  • LockHashSlots
  • LockMemSize
  • MaxUnflushedWrites
  • MaxUnflushedWriteTime
  • SecurityDatabase
  • SharedCache
  • SharedDatabase
  • UserManager
  • WireCrypt
  • WireCryptPlugin

Parámetros de DATABASES.CONF que afectan al Cliente

  • AuthClient
  • Providers

¿Cómo se especifican los parámetros?

A continuación del alias otorgado a una Base de Datos abrimos llave, parametrizamos, cerramos llave. Al igual que en FIREBIRD.CONF podemos comentar una línea (o parte de una línea) si escribimos en ella el símbolo de numeral (#)

Ejemplo de contenido del archivo DATABASES.CONF


# Esta es la Base de Datos que uso para registrar los datos de uso administrativo

ADMIN=D:\DATABASES\ADMINISTRATIVO.FDB

{

LockMemSize=32M     # Esta Base de Datos necesita muchísimos bloqueos

LockHashSlots=19927     # y una "hash table" suficientemente grande para ellos

}

# Esta es la Base de Datos que uso para la Contabilidad

CONTA=E:\SISTEMAS\CONTABILIDAD\DATABASES\CONTA.FDB

{

# Aquí se guardarán los nombres de los usuarios y sus contraseñas

SecurityDatabase=E:\SISTEMAS\CONTABILIDAD\DATABASES\SEGURIDAD.FDB

}

Como puedes ver, es muy sencillo. Para que el Firebird 3 sepa cual Base de Datos estás parametrizando a continuación de su alias abres llave, parametrizas, cierras llave. Y si quieres, puedes escribir comentarios, todo lo que escribas a continuación de un símbolo de numeral (#) será tratado como un comentario.

Usando macro substitución

Lo anteriormente visto es interesante, pero no es todo, aún hay más. Y es que ahora también podemos usar macro substitución en los archivos de configuración.

¿Qué es macro substitución?

Es usar unos caracteres predeterminados para referirse a algo. Es muy similar a las variables que se usan en los lenguajes de programación. La sintaxis es la siguiente:

$(nombre_de_macro)

Las macro que pueden usarse en los archivos de configuración de Firebird3

  • $(root). El directorio raíz del Firebird
  • $(install). El directorio donde Firebird está instalado. Al inicio $(root) y $(install) son los mismos, son idénticos, pero $(root) puede ser cambiado con la variable de entorno FIREBIRD, en cuyo caso será diferente de $(install)
  • $(this). El directorio donde el actual archivo de configuración está ubicado
  • $(dir_conf). El directorio donde FIREBIRD.CONF y DATABASES.CONF están ubicados
  • $(dir_secdb). El directorio donde la Base de Datos de seguridad que se usa por defecto está ubicada
  • $(dir_plugins). El directorio donde se encuentran los plug-in
  • $(dir_udf). El directorio donde se encuentran por defecto las UDF (User Defined Functions=funciones definidas por el usuario)
  • $(dir_sample). El directorio donde se encuentran los ejemplos
  • $(dir_sampleDb). El directorio donde la Base de Datos de ejemplo (EMPLOYEE.FDB) se encuentra ubicada
  • $(dir_intl). El directorio donde los módulos internacionales se encuentran ubicados
  • $(dir_msg). El directorio donde el archivo de mensajes (FIREBIRD.MSG) se encuentra ubicado. Al inicio, $(dir_msg) es idéntido a $(root) pero puede cambiarse con la variable de entorno FIREBIRD_MSG

Ejemplo del uso de macro substitución


# La Base de Datos que el Firebird trae como ejemplo

EJEMPLO=$(dir_sampleDb)\employee.fdb

{

# La Base de Datos donde se encuentran los nombres de los usuarios y sus contraseñas

SecurityDatabase=$(root)\SEGURIDAD\SEGURIDAD.FDB

}

Aquí lo que dijimos es que al conectarse a la Base de Datos cuyo alias es EJEMPLO se conecte en realidad a la Base de Datos cuyo nombre es EMPLOYEE.FDB y usando los nombres de usuarios y contraseñas que se encuentran en la Base de Datos de nombre SEGURIDAD.FDB

Conclusión:

El antiguo archivo ALIASES.CONF era muy útil para escribir menos y para dificultarles las tareas a los intrusos, el moderno archivo DATABASES.CONF además de eso también nos permite parametrizar a cada Base de Datos de forma individual, para ello a continuación del alias abrimos llave, parametrizamos, y cerramos llave. Una ayuda en nuestra tarea es la macro substitución la cual también nos permite escribir menos y además no necesitamos recordar la ubicación física de los archivos porque la macro se encarga de eso.

Artículos relacionados:

¿Por qué Firebird 3?

Los archivos de configuración del Firebird 3

Entendiendo a los plug-in del Firebird 3

El índice del blog Firebird21

El foro del blog Firebird21

Anuncios

Usando alias para identificar a las tablas

Deja un comentario

En SQL tenemos la posibilidad de utilizar alias (apodos, sobrenombres, nombres alternativos) cuando nos referimos a una tabla. Esto tiene dos principales ventajas:

  1. Escribimos menos
  2. Facilita la lectura

Ejemplo 1:

SELECT
   C.CLI_CODSUC,
   S.SUC_NOMBRE AS CLI_NOMSUC,
   C.CLI_IDENTI,
   C.CLI_NOMBRE
FROM
   CLIENTES   C
JOIN
   SUCURSALES S
      ON C.CLI_CODSUC = S.SUC_CODIGO
ORDER BY
   C.CLI_NOMBRE

En el Ejemplo 1. el alias “C” identifica a la tabla CLIENTES y el alias “S” identifica a la tabla SUCURSALES. De esta manera jamás puede haber confusión, el Servidor del Firebird siempre sabrá si una columna pertenece a la tabla CLIENTES o si pertenece a la tabla SUCURSALES, porque el alias le dice a cual de esas tablas pertenece.

El alias siempre se escribe a continuación del nombre de la tabla que referencia. No se requiere que tenga una sola letra, puede tener varias letras e inclusive letras y números si así lo deseas.

El mismo ejemplo anterior, sin el uso de alias, quedaría así:

Ejemplo 2.

SELECT
   CLIENTES.CLI_CODSUC,
   SUCURSALES.SUC_NOMBRE AS CLI_NOMSUC,
   CLIENTES.CLI_IDENTI,
   CLIENTES.CLI_NOMBRE
FROM
   CLIENTES
JOIN
   SUCURSALES
      ON CLIENTES.CLI_CODSUC = SUCURSALES.SUC_CODIGO
ORDER BY
   CLIENTES.CLI_NOMBRE

Como puedes ver, tampoco hay confusión posible para saber a cual tabla pertenece cada columna, pero se escribe mucho más y es innecesario porque usando un alias ahorraríamos letras y también tiempo de escritura.

Ejemplo 3

SELECT
   C.CLI_CODSUC,
   C.CLI_IDENTI,
   C.CLI_NOMBRE
FROM
   CLIENTES   C
ORDER BY
   C.CLI_NOMBRE

 En el Ejemplo 3. hay un pequeño error, no afectará al resultado que obtengas pero demuestra que aún no has comprendido como funciona SQL. ¿Cuál es ese error? Que en el SELECT se especificó solamente una tabla y sin embargo se está usando un alias. Eso le hará trabajar al Servidor más de lo que debería, probablemente la diferencia en tiempo sea de unos milisegundos pero de todas maneras no es lo más eficiente. Y un buen profesional siempre busca la máxima eficiencia.

Entonces, la regla es: “Usar alias siempre que en el SELECT intervenga más de una tabla. No usar alias si interviene una sola tabla”.

Artículo relacionado:

El índice del blog Firebird21

 

Aumentando la seguridad con ALIASES.CONF

14 comentarios

En la carpeta donde instalaste el Firebird (por ejemplo en C:\ARCHIVOS DE PROGRAMA\FIREBIRD\FIREBIRD_2_5) encontrarás un archivo cuyo nombre es ALIASES.CONF

¿Para qué sirve el archivo ALIASES.CONF?

Para que les des un nombre abreviado a tus bases de datos y con eso conseguirás dos cosas:

  • Escribir menos cuando quieras conectarte a una Base de Datos
  • Aumentar la seguridad

¿Cómo especifico cuál será el alias de mi Base de Datos?

Abres el archivo ALIASES.CONF y escribes el nombre del alias, un símbolo igual y la ruta y el nombre completos de tu Base de Datos, por ejemplo:

CONTA=C:\MisBasesDatos\Contabilidad.fdb

Escribir menos cuando quieras conectarte a una Base de Datos

Como tu Base de Datos tiene un alias (es decir: un apodo, un sobrenombre, un nombre alternativo) entonces el Firebird puede usar ese alias para la conexión, por ejemplo:

CONNECT CONTA USER SYSDBA PASSWORD masterkey;

En cambio, si no usas un alias tendrías que escribir:

CONNECT C:\MisBasesDatos\Contabilidad.fdb USER SYSDBA PASSWORD masterkey;

Como puedes ver, se escribió mucho menos al usar un alias y además es más fácil recordar una sola palabra (en este caso: CONTA) que toda la ruta y el nombre de la Base de Datos (en este caso: C:\MisBasesDatos\Contabilidad.fdb)

Aumentar la seguridad

Al usar un alias también aumentas la seguridad de los datos, sobre todo si lo combinas con la entrada DatabaseAccess, tal como puedes leer en este artículo:

https://firebird21.wordpress.com/2013/04/25/restringiendo-el-acceso-a-las-bases-de-datos/

Si alguien quiere atacar tu Base de Datos y lo único que sabe de ella es que se llama CONTA (por ejemplo, claro) pero no tiene la menor idea de donde se encuentra le resultará mucho más difícil que si sabe que se llama Contabilidad.fdb y que se encuentra en la carpeta C:\MisBasesDatos\

Al usar un alias (CONTA, en este ejemplo) le das muy poca información y le complicas la vida al atacante. Y muchísimo más se la complicarías si en lugar de llamar a tu alias CONTA lo llamaras de forma mucho menos informativa como por ejemplo: XDFDRT

(Encontrar algo así le puede dar un ataque cerebral a cualquier atacante)

Conclusión

Que tus bases de datos tengan alias es muy bueno porque te permite escribir menos y aumentar la seguridad. El Firebird te da esa posibilidad, por algo está allí, deberías usarla.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21