Firebird 3: software de 32 bits y de 64 bits

8 comentarios

Si nuestro Servidor es Firebird 3, debemos recordar lo siguiente:

  1. Si la aplicación que deseamos ejecutar fue compilada en 32 bits (nuestra propia aplicación, IBExpert, FlameRobin, etc.) entonces se requiere el archivo FBCLIENT.DLL de 32 bits, aún cuando el Servidor del Firebird 3 sea de 64 bits. Si es nuestra aplicación la que fue compilada en 32 bits entonces lo aconsejable es que el archivo FBCLIENT.DLL de 32 bits se encuentre en la misma carpeta en la cual se encuentra nuestro .EXE, así evitamos confusiones con otros archivos FBCLIENT.DLL que pudieran encontrarse en la misma computadora.
  2. Un Servidor Firebird 3 de 64 bits puede aceptar conexiones de un FBCLIENT.DLL de 32 bits o de 64 bits, indistintamente. Un Servidor Firebird 3 de 32 bits solamente puede aceptar conexiones de un FBCLIENT.DLL de 32 bits.
  3. La ODS (On Disk Structure) de una Base de Datos creada con Firebird 3 es exactamente la misma, sea que esa Base de Datos haya sido creada con la versión de 32 bits o con la versión de 64 bits.
  4. No se debe permitir la conexión a una Base de Datos con el Servidor de 32 bits y con el Servidor de 64 bits al mismo tiempo. O con el uno, o con el otro, pero no con ambos a la vez porque eso corromperá a la Base de Datos.

Artículos relacionados:

¿Qué es la versión de ODS?

Firebird 3: usando bases de datos anteriores

El índice del blog Firebird21

El foro del blog Firebird21

 

 

 

Firebird 3: verificando el restore antes del backup completo

Deja un comentario

Si ya tienes una Base de Datos creada con una versión anterior del Firebird y deseas utilizarla con Firebird 3 deberás hacer un ciclo backup/restore pero en bases de datos muy grandes ese ciclo puede demorar mucho tiempo, varias horas inclusive.

Y lo peor … después de muchos minutos o de muchas horas de haberse iniciado el ciclo te muestra un mensaje de error, de que la Base de Datos no puede ser restaurada porque encontró algún problema.

¿Por qué?

Porque el Firebird no verifica los metadatos durante las operaciones normales que realizan los usuarios (INSERT, UPDATE, DELETE, SELECT), sino cuando hace un restore con el programa GBAK.EXE o una verificación con el programa GFIX.EXE

¿Qué son los metadatos?

Son los datos usados internamente por el Firebird. Eso incluye a los dominios, las estructuras de las tablas, los índices, los stored procedures, los triggers, etc.

Todos ellos se encuentran dentro de la Base de Datos y fueron colocados allí por el propio Firebird para su manejo interno o por nosotros cuando diseñamos esa Base de Datos.

Los metadatos, así como cualquier dato introducido por los usuarios, pueden dañarse. Eso es muy raro que ocurra, pero no es imposible, ningún archivo de computadora es inmune a la corrupción.

¿Cómo podemos verificar rápidamente que los metadatos estén ok?

Haciendo un ciclo backup/restore pero usando la opción -meta_data

Cuando usamos la opción -meta_data solamente los metadatos son copiados y restaurados, los datos introducidos por los usuarios son ignorados. Con esto por supuesto se consigue que el proceso sea rapidísimo porque los metadatos ocupan una porción ínfima de la Base de Datos en bases de datos muy grandes.

Por ejemplo, podríamos tener una Base de Datos cuyo tamaño es de 20 Gb pero sus metadatos ocupan solamente 20 Mb, es decir 1000 veces menos. Eso implica que el ciclo backup/restore será 1000 veces más rápido.

Haciendo un ciclo backup/restore de los metadatos

GBAK -backup -verbose -meta_data -user SYSDBA -password masterkey MiBaseDatos.FDB MiBackup.FBK

GBAK -create -verbose -meta_data -user SYSDBA -password masterkey MiBackup.FBK MiNuevaBaseDatos.FDB

Si hay algún problema con los metadatos entonces con los dos comandos anteriores “saltará” el error. El programa GBAK nos dirá cual fue el error (o los errores) que encontró y nos dedicaremos a solucionar eso antes de hacer el ciclo backup/restore definitivo.

La ganancia de tiempo puede ser impresionante. Un ciclo backup/restore solamente de los metadatos típicamente no durará más que 2 ó 3 minutos, mientras que un ciclo backup/restore completo puede durar varias horas.

Entonces, lo más inteligente es hacer primero un ciclo backup/restore de solamente los metadatos y en el caso de que todo esté bien hacer el ciclo backup/restore completo. Por supuesto que si al hacer el ciclo backup/restore de los metadatos se encontró algún error (o algunos errores) hay que corregir eso antes de hacer el ciclo backup/restore completo.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

 

Firebird 3: usando bases de datos anteriores

7 comentarios

Ok, ya hemos instalado a Firebird 3, ahora queremos empezar a utilizarlo. ¿Cómo lo hacemos?

Lo más probable es que tengamos bases de datos creadas con versiones anteriores de Firebird. Entonces hay que convertir esas bases de datos al formato que usa Firebird 3.

El Firebird utiliza un número interno llamado ODS (On Disk Structure) para saber con cual versión de Firebird fue creada una Base de Datos. Cada versión del Firebird tiene un número único de ODS. Esos números son:

FIREBIRD3_15

Captura 1. Si haces clic en la imagen la verás más grande

Si no coincide la ODS de una Base de Datos con la versión del Servidor del Firebird entonces no podremos conectarnos a esa Base de Datos.

¿Cómo cambiamos la ODS de una Base de Datos?

Mediante un ciclo backup/restore. Hacemos el backup con la versión actual y el restore con la nueva versión.

IMPORTANTE: Esto solamente funciona en una dirección: de una ODS menor a una ODS mayor.

Ejemplo: Usar una Base de Datos creada con Firebird 2.5 en Firebird 3

firebird3_16

Captura 2. Si haces clic en la imagen la verás más grande

Como podemos ver en la Captura 2. la conexión falló porque la ODS de la Base de Datos es 11.2 y la ODS que reconoce el Servidor del Firebird es 12.0

Entonces lo que debemos hacer es convertir la ODS de esa Base de Datos a 12.0, para que pueda ser reconocida. Para ello necesitaremos realizar un ciclo backup/restore.

FIREBIRD3_17

Captura 3. Si haces clic en la imagen la verás más grande

En la Captura 3. hicimos el backup con la versión 2.5 del Firebird ¿cómo sabemos eso? Por dos pistas: a) la carpeta donde se encuentra el programa GBAK.EXE y b) el puerto que usamos para conectarnos a la Base de Datos. En nuestros ejemplos usamos el puerto 3050 para Firebird 2.5 y el puerto 3053 para Firebird 3.

Ahora que ya tenemos el backup realizado el siguiente paso es restaurarlo. Para ello, nos ubicamos en la carpeta donde instalamos al Firebird 3 y escribimos:

FIREBIRD3_18

Captura 4. Si haces clic en la imagen la verás más grande

Cuando la restauración finalice tendremos una nueva Base de Datos, de nombre PRUEBA1-3.FDB y cuya ODS será 12.0 y por lo tanto nos podremos conectar a ella usando Firebird 3.

FIREBIRD3_19

Captura 5. Si haces clic en la imagen la verás más grande

Como podemos ver en la Captura 5. no fue necesario especificar el puerto 3053 ¿por qué no? porque para la conexión usamos el programa ISQL.EXE que se instala junto con el Firebird 3. Sin embargo, en otros casos sí necesitaremos especificar dicho puerto:

FIREBIRD3_20

Captura 6. Si haces clic en la imagen la verás más grande

En el string de conexión que vemos en la Captura 6. indicamos la dirección IP de la computadora donde se encuentra la Base de Datos y también el puerto de esa computadora que usa el Servidor del Firebird 3.

Como siempre, hay que indicar además el path completo a la Base de Datos (ese path es desde el punto de vista del Servidor), el nombre de un usuario, y la contraseña de ese usuario.

Conclusión:

Para que en Firebird 3 podamos usar una Base de Datos creada con una versión anterior del Firebird debemos hacer un ciclo backup/restore. El backup lo hacemos con la versión anterior del Firebird y el restore lo hacemos con Firebird 3.

Para conectarnos a la Base de Datos restaurada a veces será necesario especificar el puerto que utiliza el Firebird 3.

Artículos relacionados:

Instalando Firebird 3 (1)

Instalando Firebird 3 (2)

El índice del blog Firebird21

El foro del blog Firebird21

Desinstalando Firebird 3

Deja un comentario

Si por algún motivo quieres desinstalar a Firebird 3, los pasos a seguir son los siguientes:

  1. Hacer clic en Inicio | Panel de Control | Programas y características | Firebird 3.0.0
  2. Hacer clic con el botón derecho
  3. Hacer clic en la opción Desinstalar

FIREBIRD3_D_1

Captura 1. Si haces clic en la imagen la verás más grande

Alternativamente, puedes ubicarte en la carpeta donde instalaste al Firebird 3 y ejecutar el archivo UNINS000.EXE

FIREBIRD3_D_2

Captura 2. Si haces clic en la imagen la verás más grande

Debes hacerlo como se muestra en la Captura 1. o como se muestra en la Captura 2. porque cuando se instala el Firebird 3, a) se modifica el Registro del Windows y b) se lo instala como un Servicio. Al desinstalarlo correctamente esas entradas son eliminadas. Si lo desinstalas entonces incorrectamente quedará “basura” en la computadora.

Artículos relacionados:

Instalando Firebird 3 (1)

Instalando Firebird 3 (2)

El índice del blog Firebird21

El foro del blog Firebird21

Instalando Firebird 3 (2)

10 comentarios

En un artículo anterior ya hemos visto como instalar al Firebird 3 si será la única instancia del Firebird que se ejecutará en una computadora. Si en esa computadora debe coexistir con otra versión (u otras versiones) entonces los pasos a seguir son un poco más complicados y los detallaremos en este artículo.

Para tener a Firebird 3 y a una versión anterior del Firebird en la misma computadora

  1. Detener el servicio actual del Firebird
  2. Descargar el instalador del Firebird 3
  3. Instalar al Firebird 3
  4. En el archivo FIREBIRD.CONF elegir el puerto que usará Firebird 3
  5. Registrar al Firebird 3 en el Registro del Windows
  6. Instalar al Firebird 3 como un servicio del Windows
  7. Reiniciar el servicio del Firebird detenido en el paso 1.

1. Detener el servicio actual del Firebird

Esto solamente deberías hacer si quieres tener dos (o más) versiones del Firebird en la misma computadora. Si quieres tener una sola versión del Firebird (por ejemplo, si solamente quieres tener a Firebird 3) no debes hacer lo que dice en este apartado sino desinstalar la otra versión (u otras versiones).

Inicio | Panel de Control | Herramientas administrativas | Servicios | Firebird Server – Default Instance

Clic derecho para que aparezca el menú contextual

FIREBIRD3_8

Captura 1. Si haces clic en la imagen la verás más grande

Al hacer clic con el botón derecho del mouse aparecerá un menú contextual, una de cuyas opciones es Detener. Haciendo clic allí se detendrá el servicio.

No se puede instalar a Firebird 3 si hay alguna versión del Firebird ejecutándose, por ese debemos detener a esa versión (y si hay más de una versión, debemos detenerlas a todas). Eso es lo que se hace en la Captura 1.

2. Descargar el instalador del Firebird 3

Nos vamos a la página oficial de descargas:

http://www.firebirdsql.org/en/firebird-3-0-0/

Y descargamos el que corresponde a los bits de nuestro Sistema Operativo (32 bits ó 64 bits).

3. Instalar el Firebird 3

Para asegurarte de que Firebird 3 pueda ser ejecutado debes instalarlo con derecho de Administrador. Para ello, haz clic con el botón derecho sobre el nombre del archivo que descargaste y luego elige la opción Ejecutar como administrador

FIREBIRD3_1

Captura 2. Si haces clic en la imagen la verás más grande

Como ya existe otra versión del Firebird instalada, aunque no esté siendo usada en este momento, verás un mensaje de advertencia:

FIREBIRD3_9

Captura 3. Si haces clic en la imagen la verás más grande

Debes hacer clic en el botón No. Con eso el Firebird será instalado, pero no configurado. Por esa razón deberemos configurarlo manualmente más tarde.

FIREBIRD3_2

Captura 4. Si haces clic en la imagen la verás más grande

Cuando veas la pantalla donde te pregunta por el nombre de la carpeta es recomendable elegir una carpeta que no esté debajo de “Program Files”. En este caso la carpeta es C:\FIREBIRD3 aunque desde luego puedes elegir cualquier disco y cualquier nombre para la carpeta donde realizarás la instalación.

FIREBIRD3_3

Captura 5. Si haces clic en la imagen la verás más grande

En la Captura 5. vemos las opciones que deberán estar marcadas para instalar al Servidor del Firebird 3.

FIREBIRD3_5

Captura 6. Si haces clic en la imagen la verás más grande

En la Captura 6. vemos las opciones que deben estar seleccionadas si queremos instalar al Cliente del Firebird 3. En una computadora debemos instalar o el Servidor o el Cliente, jamás ambos.

4. En el archivo FIREBIRD.CONF elegir el puerto que usará Firebird 3

El archivo FIREBIRD.CONF lo encontrarás en la misma carpeta donde instalaste al Firebird 3, en este artículo esa carpeta es C:\FIREBIRD3

En el archivo FIREBIRD.CONF hay una entrada llamada RemoteServicePort, que indica el puerto que usará el Servidor del Firebird para comunicarse con los Clientes del Firebird. Por defecto se utiliza el puerto 3050 pero si hay más de una instancia del Firebird ejecutándose cada instancia debe usar un puerto diferente ya que si usan el mismo puerto eso ocasionará conflictos y las bases de datos se corromperán.

FIREBIRD3_13

Captura 7. Si haces clic en la imagen la verás más grande

Aquí se usa el puerto 3053 pero es solamente un ejemplo, tú puedes usar cualquier puerto que quieras. Si ningún programa lo está usando (ni el Servidor del Firebird ni ningún otro programa) entonces todo funcionará ok. Los números bajos no debes usar porque están reservados para el Sistema Operativo, que ya tiene asignados los puertos del 0 al 1023. En general, usar números entre 3050 y 3099 para las instancias del Firebird es muy seguro.

Recuerda que debes borrar el símbolo # que se encuentra a la izquierda. El símbolo # indica que todo lo escrito a su derecha es un comentario.

5. Registrar al Firebird 3 en el Registro del Windows

Para esto debemos abrir una ventanita Símbolo del Sistema con derechos de Administrador y luego ubicarnos en la unidad y en la carpeta donde instalamos al Firebird 3. Recuerda que debes abrirla con derechos de Administrador o no funcionará.

FIREBIRD3_10

Captura 8. Si haces clic en la imagen la verás más grande

FIREBIRD3_11

Captura 9. Si haces clic en la imagen la verás más grande

Después de escribir INSTREG INSTALL, como vemos en la Captura 9., el Firebird 3 quedará guardado en el Registro del Windows.

6. Instalar al Firebird 3 como un servicio del Windows

FIREBIRD3_12

Captura 10. Si haces clic en la imagen la verás más grande

En las Captura 10. se muestra como instalar al Servidor del Firebird 3 como un servicio del Windows y también como iniciar ese servicio. Cada servicio debe tener un nombre, ese nombre puede ser cualquiera que no esté repetido. En nuestro ejemplo el nombre es SERVIDOR_FIREBIRD3 aunque tú puedes elegir otro nombre si lo deseas.

7. Reiniciar el servicio del Firebird detenido en el paso 1.

Después de instalar al Firebird 3 y de haber elegido en el archivo FIREBIRD.CONF el puerto que usará el Firebird 3, debemos reiniciar el servicio que habíamos detenido, para que puedan utilizarse ambas versiones del Firebird (la versión 3 y la versión que habíamos detenido).

FIREBIRD3_14

Captura 11. Si haces clic en la imagen la verás más grande

Conclusión:

Si lo deseamos o lo necesitamos, podemos tener instalados en una sola computadora al Firebird 3 y a otras versiones del Firebird. O a varias versiones del Firebird 3, también.

La forma de conseguirlo la hemos visto en este artículo.

Quizás lo más importante a recordar es que el puerto que usará cada versión debe ser único. Eso porque si dos o más programas usan al mismo puerto solamente podrán ocurrir problemas. Por defecto el Firebird usa el puerto 3050. Si una sola versión del Firebird está en ejecución no hay problema con eso. Pero si dos o más versiones están en ejecución entonces cada versión debe usar un puerto diferente. En este artículo le hemos asignado el puerto 3053 al Firebird 3 pero podríamos haber elegido otro número. En general, números entre 3050 y 3099 son muy seguros y podemos usarlos con tranquilidad.

Artículos relacionados:

¿Por qué Firebird 3?

Los archivos de configuración del Firebird 3

Entendiendo a los plug-in del Firebird 3

Parametrizando el archivo DATABASES.CONF

El tipo de datos BOOLEAN en Firebird 3

El índice del blog Firebird21

El foro del blog Firebird21

Instalando Firebird 3 (1)

7 comentarios

Ahora que ¡¡¡por fin!!! Firebird 3.0 ha sido liberado queremos empezar a usarlo. El primer paso, desde luego, es instalarlo.

Tenemos dos opciones:

  • Tener en nuestra computadora solamente a Firebird 3
  • Tener en nuestra computadora a Firebird 3 y también a una versión anterior de Firebird

En este artículo veremos el caso más sencillo, que es el primero. En el siguiente artículo veremos el segundo caso.

Lo que debemos hacer es:

  1. Desinstalar la versión del Firebird que tenemos
  2. Descargar el instalador del Firebird 3
  3. Instalar el Firebird 3

1. Desinstalar la versión del Firebird que tenemos

Inicio | Panel de Control | Programas y características | Firebird 2.5.5.26952 (o la versión que sea)

Botón derecho para que aparezca un menú contextual y elegir Desinstalar

2. Descargar el instalador del Firebird 3

Nos vamos a la página oficial de descargas:

http://www.firebirdsql.org/en/firebird-3-0-0/

Y descargamos el que corresponde a los bits de nuestro Sistema Operativo (32 bits ó 64 bits).

3. Instalar el Firebird 3

Para asegurarte de que Firebird 3 pueda ser ejecutado debes instalarlo con derecho de Administrador. Para ello, haz clic con el botón derecho sobre el nombre del archivo que descargaste y luego elige la opción Ejecutar como administrador

FIREBIRD3_1

Captura 1. Si haces clic en la imagen la verás más grande

Cuando veas la pantalla donde te pregunta por el nombre de la carpeta es recomendable elegir una carpeta que no esté debajo de “Program Files”.

FIREBIRD3_2

Captura 2. Si haces clic en la imagen la verás más grande

En este caso la carpeta es C:\FIREBIRD3 aunque desde luego puedes elegir cualquier disco y cualquier nombre para la carpeta donde realizarás la instalación.

FIREBIRD3_3

Captura 3. Si haces clic en la imagen la verás más grande

En la Captura 3. vemos las opciones que deberán estar marcadas para instalar al Servidor del Firebird 3.

FIREBIRD3_5

Captura 4. Si haces clic en la imagen la verás más grande

En la Captura 4. vemos las opciones que deben estar seleccionadas si queremos instalar al Cliente del Firebird 3. En una computadora debemos instalar o el Servidor o el Cliente, jamás ambos.

FIREBIRD3_4

Captura 5. Si haces clic en la imagen la verás más grande

 En la Captura 5. vemos las opciones que podemos elegir si lo que estamos instalando es el Servidor.

FIREBIRD3_6

Captura 6. Si haces clic en la imagen la verás más grande

Y en la Captura 6. vemos las opciones que podemos elegir si lo que estamos instalando es el Cliente

 FIREBIRD3_7

Captura 7. Si haces clic en la imagen la verás más grande

En las versiones anteriores del Firebird la contraseña (password) del usuario SYSDBA era siempre masterkey en el momento de la instalación del Servidor. Eso ya no es así con Firebird 3, ahora en el momento de la instalación se puede elegir una contraseña (password). Si ninguna contraseña es elegida entonces se seguirá usando masterkey. Sin embargo hay que tener mucho cuidado con un detalle: las versiones anteriores solamente usaban las primeras 8 letras de la contraseña y por lo tanto masterke y masterkey eran idénticas, exactamente lo mismo. Eso ya no es así con Firebird 3, ahora masterke es diferente de masterkey, son dos contraseñas diferentes.

Artículos relacionados:

¿Por qué Firebird 3?

Los archivos de configuración del Firebird 3

Entendiendo a los plug-in del Firebird 3

Parametrizando el archivo DATABASES.CONF

El tipo de datos BOOLEAN en Firebird 3

El índice del blog Firebird21

El foro del blog Firebird21

 

¡¡¡Firebird 3 es más rápido que MySQL!!!

6 comentarios

Hace muchos años que quienes usamos Firebird deseábamos que su velocidad en Internet fuera comparable a la velocidad de MySQL. La muy buena noticia es que no solamente se lo alcanzó ¡¡¡sino que se lo superó!!!

Firebird 3 es mucho más rápido que Firebird 2.5.x y también ya es más rápido que MySQL.

Con las nuevas capacidades de seguridad y la gran velocidad que posee Firebird 3, ya no hay excusas para no usarlo en Internet.

Más información (en inglés) puedes encontrar en:

http://www.firebirdnews.org/firebird-3-protocol-benchmark/

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

El tipo de datos BOOLEAN en Firebird 3

6 comentarios

Un tipo de datos que siempre le faltó a Firebird fue el BOOLEAN… hasta ahora.

Desde siempre contábamos con los tipos de datos: SMALLINT, INTEGER, BIGINT, FLOAT, DOUBLE PRECISION, NUMERIC, DECIMAL, DATE, TIME, TIMESTAMP, CHAR, VARCHAR, BLOB, pero no contábamos con BOOLEAN, entonces si lo necesitábamos (algo muy frecuente al crear una tabla) lo simulábamos creando un dominio como el siguiente:

CREATE DOMAIN D_BOOLEAN AS
   CHAR(1)
      CHECK (VALUE = 'F' OR VALUE = 'T');

Funcionaba bien, claro que sí, pero no es realmente un tipo de datos BOOLEAN.

¿Por qué no?

Porque le faltan los predicados lógicos. Es decir las comparaciones por verdadero o falso.

Un ejemplo de lo que ahora podemos hacer:

UPDATE
   MiTabla
SET
   MiColumnaBoolean = (MiValor1 IS DISTINCT FROM MiValor2)

Una comparación puede darnos uno de estos tres resultados posibles:

  • Verdadero
  • Falso
  • Nulo o desconocido

(Recuerda que en SQL un valor nulo significa: “desconocido”)

En el ejemplo anterior, si MiValor1 es distinto de MiValor2 en MiColumnaBoolean se guardará Verdadero, ya que la condición se cumplió. Si alguno de esos valores era nulo entonces se guardará Desconocido (porque el resultado de comparar un valor desconocido con cualquier otro valor siempre es desconocido).

Valores posibles de una columna de tipo BOOLEAN

Si declaramos que una columna será de tipo BOOLEAN, en ella podremos guardar cualquiera de los siguientes valores:

  • TRUE
  • FALSE
  • UNKNOWN

TRUE significa “verdadero”, FALSE significa “falso” y UNKNOWN significa “desconocido”.

IMPORTANTE: podemos usar NULL o UNKNOWN, como nos guste más, ambas palabras son sinónimos y pueden usarse intercambiablemente, así que usar una u otra depende del gusto de cada quien.

El operador IS

Para hacer las comparaciones podemos usar el operador IS [NOT], escribiendo algo como:

MiColumna1 IS TRUE
MiColumna2 IS FALSE
MiColumna3 IS NOT TRUE
MiColumna4 IS NOT FALSE
MiColumna5 IS UNKNOWN
MiColumna6 IS NULL
MiColumna7 IS DISTINCT FROM MiColumna1

Los operadores de comparación

Además del operador IS que vimos en el apartado anterior, también podemos comparar con: “=”, “<“, “<=”, “>”, “>=”, “!=”, “<>”

Comparación abreviada

Cuando comparamos por “verdadero”, podemos escribir algo como:

WHERE
   MiColumnaBoolean1

Fíjate que no escribimos MiColumnaBoolean1 IS TRUE, ya que el IS TRUE está implícito. Podemos escribirlo, si queremos, pero no es necesario. Similarmente, para comparar con “falso” podríamos escribir:

WHERE
   NOT MiColumnaBoolean1

En este caso, la condición se cumplirá cuando el valor guardado en la columna MiColumnaBoolean1 sea “falso”. También podríamos haber escrito: MiColumnaBoolean1 IS FALSE, al igual que antes, es cuestión de gustos usar una forma u otra.

Valores devueltos por el comando SELECT

Cuando en la lista de columnas que muestra nuestro SELECT existe alguna de tipo BOOLEAN, los valores que podemos ver son los siguientes:

<true>

<false>

<null>

Convirtiendo un tipo de datos BOOLEAN a CHAR o VARCHAR

Solamente podemos convertir el valor de una columna de tipo BOOLEAN a CHAR o a VARCHAR, no se puede convertir a alguno de los demás tipos de datos.

Para ello, usamos la función CAST()

Ejemplo 1. Creando una tabla que tendrá una columna de tipo BOOLEAN

CREATE TABLE
   MiTabla (
      MiColumnaEntera   INTEGER,
      MiColumnaBoolean1 BOOLEAN
) ;

COMMIT;

Ejemplo 2. Insertando valores en una columna de tipo BOOLEAN

INSERT INTO
   MiTabla
      VALUES (1, TRUE);

INSERT INTO
   MiTabla
      VALUES (2, 5 IS DISTINCT FROM 4);

INSERT INTO
   MiTabla
      VALUES (3, NULL);

Ejemplo 3. Asignando valores a una columna de tipo BOOLEAN

UPDATE
   MiTabla
SET
   MiColumnaBoolean1=TRUE,
   MiColumnaBoolean2=FALSE,
   MiColumnaBoolean3=2=4,
   MiColumnaBoolean4=NULL,
   MiColumnaBoolean5=UNKNOWN,
   MiColumnaBoolean6=5 > 1
WHERE
   MiCondición

Ejemplo 4. Consultando los valores de una columna de tipo BOOLEAN

SELECT
   *
FROM
   MiTabla
WHERE
   MiColumnaBoolean1

Esta consulta nos mostrará todas las filas que tengan TRUE en la columna MiColumnaBoolean1.

Ejemplo 5. Consultando por FALSE

SELECT
   *
FROM
   MiTabla
WHERE
   MiColumnaBoolean1 IS FALSE

Ejemplo 6. Consultando por UNKNOWN

SELECT
   *
FROM
   MiTabla
WHERE
   MiColumnaBoolean1 IS UNKNOWN

SELECT
   *
FROM
   MiTabla
WHERE
   MiColumnaBoolean1 IS NULL

Conclusión:

Algo que siempre le había faltado a Firebird era tener un verdadero tipo de datos BOOLEAN, podíamos suplir esa carencia creando un dominio pero hacerlo así no era del todo completo. Ahora, con Firebird 3 sí ya tenemos un verdadero tipo de datos BOOLEAN.

Los resultados de una comparación pueden ser: “verdadero”, “falso”, “desconocido”. Y esos son justamente los valores que podemos guardar en una columna definida como de tipo BOOLEAN, aunque desde luego que usaremos las palabras reservadas: TRUE, FALSE, UNKNOWN.

Para las comparaciones podemos usar el operador IS [NOT] o los operadores de comparación matemáticos.

El resultado de un SELECT que contenga columnas de tipo BOOLEAN puede ser: <true>, <false>, <null>

Recuerda que NULL en SQL significa “desconocido”, y la palabra UNKNOWN también significa “desconocido”, por eso pueden usarse como sinónimos.

Artículos relacionados:

¿Por qué Firebird 3?

Los archivos de configuración del Firebird 3

Entendiendo a los plug-in del Firebird 3

Parametrizando el archivo DATABASES.CONF

Agregando el usuario SYSDBA en Firebird 3

El índice del blog Firebird21

El foro del blog Firebird21

Agregando el usuario SYSDBA en Firebird 3

8 comentarios

En las versiones anteriores de Firebird, ya por defecto en el archivo de seguridad (SECURITY.FDB en 1.x y SECURITY2.FDB en 2.x) existía un usuario llamado SYSDBA y con la contraseña masterkey.

Bien, ese ya no es el caso con Firebird 3, ahora ningún usuario predeterminado existe, ni siquiera SYSDBA. Por lo tanto, nosotros debemos crearlos.

Siempre el usuario SYSDBA tendrá acceso al 100% de las bases de datos, pero como no existe un usuario SYSDBA nosotros lo crearemos. ¿Cuál es la ventaja de esto? Que SYSDBA ya no tendrá por defecto la contraseña masterkey sino la contraseña que a nosotros se nos ocurra asignarle.

Con las versiones 1.x y 2.x si un intruso quería conocer el contenido de una Base de Datos lo tenía muy fácil:

  1. Copiaba o hacía un backup de la Base de Datos
  2. Copiaba o restauraba esa Base de Datos en otra computadora, en una donde conociera la contraseña del usuario SYSDBA.
  3. Listo

Ahora, con Firebird 3 algo así ya no le será posible. ¿Por qué no? Porque si copia o restaura la Base de Datos en otra computadora tendrá un gran problema ¿cuál es la contraseña del usuario SYSDBA que se necesita para conectarse a la Base de Datos? Desde luego que no será masterkey (salvo que el Administrador sea un verdadero bobo) y si no conoce esa contraseña no conseguirá el acceso. Claro, puede copiar también el archivo de seguridad (SECURITY3.FDB por defecto) pero estará en la misma: si no conoce la contraseña no conseguirá la conexión. Y además, en un entorno donde la seguridad sea muy importante el archivo de seguridad no será SECURITY3.FDB sino otro archivo con totalmente otra estructura y ubicado donde se haya especificado en DATABASES.CONF (quizás en otra carpeta de otro disco duro de otra computadora).

En síntesis, la tarea del intruso ahora será mucho más dificultosa. No imposible, porque en Informática la seguridad al 100% es imposible de conseguir, pero sí muchísimo más dificultosa que en las versiones anteriores del Firebird.

¿Cómo agrego al usuario SYSDBA?

Recuerda que al instalar Firebird 3 ningún usuario existe, ni siquiera SYSDBA, entonces ¿cómo hacemos para agregar al usuario SYSDBA y con la contraseña que se nos ocurra asignarle?

Mediante el siguiente comando:


GSEC -add SYSDBA -pw Secreto -user SYSDBA

El programa GSEC.EXE lo encontrarás en la misma carpeta donde instalaste el Firebird 3.

Y la contraseña que elijas no será Secreto, ese es solamente un ejemplo.

Conclusión:

Para hacerle la vida muchísimo más difícil a los intrusos ahora en Firebird 3 el usuario SYSDBA no existe por defecto sino que debemos crearlo nosotros. Así mismo tampoco tiene una contraseña por defecto, su contraseña inicial será la que le asignemos al crearlo, la muy famosa masterkey ya no existe (salvo que alguien sea muy bobo como para asignársela al usuario SYSDBA).

Para agregar al usuario SYSDBA y asignarle su contraseña inicial (la cual no debería ser masterkey) usamos el programa GSEC.EXE que se encuentra en la misma carpeta donde instalamos al Firebird 3.

Artículos relacionados:

¿Por qué Firebird 3?

Los archivos de configuración del Firebird 3

Entendiendo a los plug-in del Firebird 3

Parametrizando el archivo DATABASES.CONF

El índice del blog Firebird21

El foro del blog Firebird21

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

Older Entries