Mostrando entradas con la etiqueta Firebird. Mostrar todas las entradas
Mostrando entradas con la etiqueta Firebird. Mostrar todas las entradas

lunes, 26 de marzo de 2012

GBridge - La VPN de Google

Uno de nuestros proyectos debía de integrar los aplicativos clientes (Facturación) con la sede central  (Contabilidad) ubicada geográficamente en otro lugar, para esto debíamos de implementar una VPN para que las operaciones puedan verse en tiempo real. Siendo así comencé a evaluar diferentes software que permitan crear una VPN, de los cuales, el que me sorprendió por su rápida configuración y los servicios que ofrecía fue GBridge (http://www.gbridge.com/).


GBridge es un software gratuito que te permite controlar a distancia las PC, las carpetas de sincronización, compartir archivos y chatear de forma segura y sencilla. Una extensión del servicio de Google es el servicio GTalk, GBridge forma automáticamente una colaboración, cifrada VPN (Virtual Private Network) que conecta los ordenadores y los ordenadores de tus amigos directamente y de forma segura con la tecnología patentada. 


GBridge tiene muchas características únicas, y se mencionan a continuación:

DesktopShare (VNC) : Accede a tu computadora de escritorio de forma remota o compartir su escritorio con su amigo de cualquier parte del mundo. GBridge automáticamente atraviesa firewalls y routers NAT sin necesidad de configuración.
SecureShare : Tiene una forma segura de compartir archivos entre sus ordenadores, por lo que puede tener acceso remoto a sus archivos, por ejemplo, reproducir mp3, con la máxima privacidad. Forma segura de compartir archivos a su amigo designado, por lo que el amigo seleccionado pueden ver instantáneamente las imágenes en miniatura generados automáticamente y presentación de diapositivas de forma remota. No web de carga / descarga es necesario.
AutoSync : Transferencia de archivos de gran tamaño y la sincronización de carpetas desde y hacia cualquier lugar nunca ha sido tan fácil. AutoSync soporta programación automática, las transferencias de carpetas de manera incremental y no hay restricciones de tamaño. 
EasyBackup : Instalación de una copia de seguridad automática periódica de la carpeta importante para un PC local o remoto es muy sencillo.

GBridge utiliza los servidores GTalk de Google por ello para utilizarlo lo único que vamos a necesitar es disponer de una cuenta de Google. 

Al abrir por primera vez nos mostrará esta pantalla 
Lo único que tenemos que hacer es poner el nombre de usuario y password de nuestra cuenta Google, nos apuntamos el nombre de Hostname porque luego lo usaremos desde el cliente. 


Una vez dentro podemos ver los equipos conectados con las mismas credenciales que nosotros.
Para este caso, si hacemos clic derecho sobre la PC a la que nos queremos conectar, y seleccionamos "Browse Gbridge SecureShares", podremos visualizar los archivos y las carpetas compartidas desde el otro equipo, a través de nuestro navegador.

También podemos ver los detalles de la conexión (Bridge) en el centro de redes y recursos compartidos.




El cliente "Gbridge" puede configurarse para que los demás clientes se conecten a este y puedan acceder a sus archivos directamente, para esto debe tener activado en la parte de Opciones -> Advanced Options..

Y en la ventana de Opciones avanzadas, debemos seleccionar "Windows Share Folder", con lo que le indicamos a Gbridge que habilite el compartir carpetas mediante la VPN.


A continuación una aplicación cliente (IbExpert), conectándose a una base de datos (Firebird)  ubicada en una red remota, mediante Gbridge.



Sin duda es una excelente herramienta para la creación de una VPN.



Servidos.

martes, 20 de marzo de 2012

¿Dónde está la Transacción de Firebird?

Está entrada la dedico a mi socio CSP, quién acostumbrado a gestores como Oracle o SQL Server, tuvo un problema al tratar de encontrar una transacción bloqueada en Firebird, lo cual le causó una molestia porque me indicó que los demás gestores si tenían esta funcionalidad. 

Pues, Firebird a partir de la versión 2.1, a incluido nuevas tablas referidas al "Monitoreo" del sistema, que justamente permitirán a los administradores acceder a información muy importante como son las conexiones existentes, las consultas ejecutadas, las transacciones activas, y muchas más. A continuación las tablas mencionadas:




  • MON$DATABASE: base de datos conectada. Con información como ruta de la base de datos, versión de ODS, identificadores de proceso, etc.

  • MON$ATTACHMENTS: Conexiones realizadas. Con información de estado, usuario que hace la conexión, protocolo de conexión, etc.
  • MON$STATEMENTS: Sentencias preparadas para ejecutar. Con información como identificadores, texto, estado, etc.
  • MON$CALL_TACK: Pila de llamadas de las sentencias PSQL activas.
  • MON$IO_STATS: Estadísticas de I/O.
  • MON$RECORD_STATS: Estadísticas a nivel de fila.
  • MON$MEMORY_USAGE: Uso de memoria actual.
  • MON$CONTEXT_VARIABLES: Variables de contexto conocida.

Ejemplos de consultas que se pueden realizar con estas tablas:
  • Para saber todos los identificadores de procesos con carga de CPU actuales:
SELECT MON$SERVER_PID
FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION
AND MON$STATE = 1


  • Para obtener información sobre las aplicaciones clientes
SELECT MON$USER, MON$REMOTE_ADDRESS,
MON$REMOTE_PID,
MON$TIMESTAMP
FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION


  • Para obtener el nivel de aislamiento de la transacción actual
SELECT MON$ISOLATION_MODE
FROM MON$TRANSACTIONS
WHERE MON$TRANSACTION_ID = CURRENT_TRANSACTION


  • Para obtener las sentencias actualmente activas
SELECT ATT.MON$USER,
ATT.MON$REMOTE_ADDRESS,
STMT.MON$SQL_TEXT,
STMT.MON$TIMESTAMP
FROM MON$ATTACHMENTS ATT
JOIN MON$STATEMENTS STMT
ON ATT.MON$ATTACHMENT_ID = STMT.MON$ATTACHMENT_ID
WHERE ATT.MON$ATTACHMENT_ID <> CURRENT_CONNECTION
AND STMT.MON$STATE = 1 



Realizando las consultas indicadas podemos obtener los siguientes resultados.


Servidos.

sábado, 14 de mayo de 2011

El Gestor de Base de Datos, Firebird

Firebird, es un sistema de administración de base de datos relacional (o RDBMS) SQL de código abierto, basado en la versión 6 de Interbase, cuyo código fue liberado por Borland en 2000. Su código fue reescrito de C a C++. 


Características

  • Es multiplataforma, y actualmente puede ejecutarse en los sistemas operativos: Linux, HP-UX, FreeBSD, Mac OS, Solaris y Microsoft Windows.
  • Ejecutable pequeño, con requerimientos de hardware bajos.
  • Arquitectura Cliente/Servidor sobre protocolo TCP/IP y otros (embedded).
  • Soporte de transacciones y claves foráneas.
  • Es medianamente escalable.
  • Buena seguridad basada en usuarios/roles.
  • Diferentes arquitecturas, entre ellas el Firebird empotrado (embedded server) que permite ejecutar aplicaciones monousuario en ordenadores sin instalar el software Firebird.
  • Bases de datos de sólo lectura, para aplicaciones que corran desde dispositivos sin capacidad de escritura, como cd-roms.
  • Existencia de controladores ODBC, OLEDB y JDBC.
  • Controlador nativo para PHP.
  • Requisitos de administración bajos, siendo considerada como una base de datos libre de mantenimiento, al margen de la realización de copias de seguridad y restauraciones periódicas.
  • Pleno soporte del estándar SQL-92, tanto de sintaxis como de tipos de datos.
  • Completo lenguaje para la escritura de disparadores (triggers) y procedimientos almacenados.
  • Capacidad de almacenar elementos BLOB (binary large objects).
Tipos de servidor
Existen dos tipos de servidor Firebird para ser instalados: “Classic” y “Super Server”. Si bien tienen varias diferencias menores entre si, la principal consiste en que el super server maneja hilos de ejecución individuales para cada conexión. Por lo tanto para un número reducido de conexiones el recomendado sería el classic porque consumirá menor cantidad de recursos.
Los propios desarrolladores de Firebird recomiendan lo siguiente a la hora de decidirse por uno de estos servidores:

•     En plataformas Windows seleccionar el Superserver.
•     En Linux simplemente elegir cualquiera, según las conexiones estimadas. En la mayoría de las situaciones no se notará diferencias en la ejecución.

Podría considerarse un tercer tipo, el Embedded. Éste consiste en una única DLL (de unos 2 MB de tamaño) que contiene todo el servidor. De esta forma se puede tener un DBMS completo disponible y distribuíble junto con aplicaciones de usuario.

Conceptos básicos
Para empezar, hay que entender que un servidor de base de datos -como Firebird/InterBase- es un proceso -es decir, un programa- ejecutándose en la computadora que se utiliza como servidor. Este proceso servirá de "intermediario" entre el programa cliente -que puede estar hecho con Power Builder, Java, Delphi, C++Builder, etc- y la base de datos física -en este caso, el archivo de base de datos, generalmente con extensión gdb-.
Este programa -Firebird/InterBase-, debe atender todas las órdenes que le hacen los programas cliente. Estas órdenes tienen que ver con alguna base de datos, por ejemplo: insertar un registro, modificar el valor de una columna de una tabla, modificar la estructura de una tabla, eliminar un registro, obtener un conjunto de registros, etcétera.
En el caso de los servidores de base de datos SQL, las órdenes deben ser escritas en ese lenguaje (SQL), pues es el único que el servidor entiende. Por ejemplo, para insertar un registro se debe escribir una orden INSERT, para eliminar uno o más registros se le debe dar una orden DELETE, etc.

Diferencias entre formatos de archivos y servidores SQL
Cuando utilizamos un formato de archivos (Paradox, dBase, Access), el programa cliente (hecho con Delphi/C++ Builder) utiliza una interfaz prefabricada de acceso a los archivos, como la BDE. Menciono el término prefabricada porque son bibliotecas de funciones precompiladas (DLL) las cuales al ser utilizadas por el programa cliente, permiten abrir, modificar y obtener datos de los archivos de datos (los archivos DB, DBF, MDB). Cuando utilizamos programas cliente que acceden a una base de datos localizada en un servidor de archivos, lo que estamos haciendo es que todos los programas cliente abren físicamente el archivo de datos, mediante un proceso que se ejecuta en cada computadora cliente.

Esta situación conlleva algunas “desventajas” como las siguientes:
  • Si alguna conexión de red o programa cliente tiene un problema, puede dañar el archivo de datos, ya que lo está abriendo directamente.
  • Las consultas a datos pueden llegar a ser muy lentas, ya que para seleccionar los registros de una consulta, cada programa cliente debe de pedir todo el archivo al servidor de archivos y toda esta información debe viajar por la red.
  • No se están aprovechando los recursos del servidor, solamente aquellos que optimizan el acceso a los archivos, dado que la máquina que ejecuta la consulta es la máquina cliente, además de que se crean cuellos de botella en la red, como se explica en el punto anterior.
Ahora veamos las “ventajas” de utilizar un servidor SQL:
  • Se minimizan los daños a la base de datos cuando falla uno de los programas clientes, pues lo peor que puede pasar es que se quede abierta una o más transacciones, las cuales posteriormente se pueden recuperar o eliminar.
  • Se aprovecha al máximo las capacidades del hardware del servidor, debido a que el proceso de consulta de datos es ejecutado por el servidor SQL, el cual corre sobre el servidor de hardware.
  • Se optimiza el tráfico en la red, debido a que cuando el servidor SQL devuelve los datos de una consulta al programa cliente, solamente envía el conjunto de datos producto de la consulta, y no el total de los datos de la tabla, como sucede cuando se utiliza un servidor de archivos.
  • Estas son únicamente las ventajas a nivel de acceso y transmisión de datos, ya que a nivel de seguridad e integridad tiene muchas más ventajas.
Programa para Administración de la Base de Datos
Personalmente utilizo IBExpert versión 2006.12.13, el cual es un gran Administrador para manejar las bases de datos de Firebird, es intuitivo y permite una gestión rápida de los objetos de la BD. En cuanto a la programación de disparadores y procedimientos almacenados presenta seguimiento paso a paso para identificar errores (debug).