Adabas, acrónimo de Adaptable Data Base System, es un sistema de gestión de bases de datos que se distingue por su modelo de datos de lista invertida. A diferencia de las bases de datos relacionales más comunes, Adabas organiza y accede a los datos de una manera particular, lo que lo hace especialmente adecuado para ciertos tipos de cargas de trabajo, como el procesamiento de grandes volúmenes de datos o entornos de procesamiento analítico en línea de alta transacción.

Desde su introducción, Adabas ha evolucionado, adaptándose a las necesidades cambiantes de las aplicaciones empresariales, aunque conserva sus características fundamentales que lo diferencian de los sistemas basados puramente en el modelo relacional. Su arquitectura subyacente y los métodos de acceso a los datos son clave para entender cómo funciona y por qué ha mantenido su relevancia en ciertos nichos.

El Modelo de Datos de Adabas
En Adabas, la terminología utilizada para describir la estructura de los datos difiere de la de los modelos relacionales. Lo que comúnmente se conoce como tablas en el mundo relacional, en Adabas se denominan ficheros (files). De manera similar, las filas (rows) de una tabla se conocen como registros (records), y las columnas (columns) se llaman campos (fields).
Una característica distintiva del modelo de datos de Adabas es su soporte nativo para la desnormalización a través de dos estructuras específicas dentro de un registro:
- Grupos Periódicos (Repeating Groups): Permiten almacenar múltiples ocurrencias de un grupo de campos relacionados dentro de un único registro.
- Campos Multivalor (Multi-value Fields): Permiten almacenar múltiples valores para un único campo dentro de un registro.
Estas estructuras facilitan el manejo de datos jerárquicos o repetitivos sin necesidad de crear tablas separadas y uniones complejas, lo que puede simplificar el diseño de ciertas aplicaciones y mejorar el rendimiento para ciertos tipos de consultas. Sin embargo, esta flexibilidad viene con la particularidad de que Adabas no impone restricciones de integridad referencial de forma nativa. La gestión de las relaciones entre registros y la integridad de los datos a menudo recae en el código de la aplicación que interactúa con la base de datos.
Otra diferencia fundamental es la ausencia de un motor SQL embebido nativo. El acceso a los datos en Adabas tradicionalmente se ha realizado a través de sus propias interfaces de programación y lenguajes específicos. Aunque hoy en día es posible acceder a Adabas utilizando SQL, esto se logra mediante pasarelas como Adabas SQL Gateway (introducida a través de la adquisición de CONNX en 2004), que proporciona acceso vía ODBC, JDBC y OLE DB, permitiendo incluso el acceso SQL desde programas COBOL.
Acceso a Datos en Adabas: Principalmente con Natural
El acceso principal a los datos almacenados en Adabas se realiza típicamente a través de programas escritos en Natural, un lenguaje de programación de cuarta generación (4GL) propietario de Software AG, introducido en 1979. Natural no formó parte de la versión inicial de Adabas en 1971, pero su popularidad creció conjuntamente, convirtiéndose en el lenguaje de facto para interactuar con Adabas.
Natural proporciona sentencias específicas para operar con datos de Adabas, como:
READ: Para leer registros secuencialmente.FIND: Para buscar registros basándose en criterios de búsqueda complejos.HISTOGRAM: Para obtener información sobre la distribución de valores en campos indexados.
Estas sentencias de Natural se traducen internamente en comandos de bajo nivel para Adabas (como abrir y cerrar ficheros). Aunque Natural es la forma más común de acceso, los datos de Adabas también pueden recuperarse mediante llamadas directas a su API.
El lenguaje Natural es estructurado y menos procedimental que lenguajes como COBOL. Los programas de Natural pueden ejecutarse de forma interpretada o compilada. La ejecución compilada permite un uso más directo de los servicios del sistema operativo y generalmente ofrece un mejor rendimiento.
Un ejemplo simple de un programa Natural buscando datos en Adabas podría ser:
FIND EMPLOYEE WITH NAME = 'JONES' OR = 'BAKER' AND CITY = 'BOSTON' THRU 'NEW YORK' AND CITY NE 'CHAPEL HILL' SORTED BY NAME WHERE SALARY < 28000 DISPLAY NAME FIRST-NAME CITY SALARY END-FIND ENDEn este ejemplo, la cláusula WITH es procesada directamente por Adabas, aprovechando sus capacidades de búsqueda eficientes, especialmente en campos indexados. La cláusula WHERE, sin embargo, indica un filtrado adicional que es realizado por el propio lenguaje Natural después de que Adabas ha devuelto los registros que cumplen los criterios WITH. Este es un ejemplo de cómo Natural y Adabas trabajan juntos para procesar consultas.
Natural: El Compañero de Adabas
Natural es más que un simple lenguaje; es un entorno de desarrollo completo. Incluye un editor integrado orientado a pantalla y se compone de dos elementos principales: el sistema y el lenguaje. El sistema Natural actúa como el vehículo central de comunicación entre el usuario/desarrollador y los componentes del entorno de procesamiento.
Los objetos de Natural (programas, mapas de pantalla, áreas de datos, etc.) se almacenan en bibliotecas, organizadas de forma similar a directorios. Estos objetos se guardan en un fichero de sistema de Natural. Este fichero de sistema es típicamente un fichero de Adabas, aunque Natural también puede almacenar sus objetos en otros sistemas de ficheros o bases de datos como VSAM en mainframes, o sistemas de ficheros nativos en entornos Unix/Linux y Windows.
El fichero de sistema de Natural contiene, entre otras cosas:
- Todos los programas de Natural, tanto en formato fuente como compilado.
- Módulos de Definición de Ficheros (FDM) o Módulos de Definición de Datos (DDM), que describen la estructura de los campos en Adabas (o en otras bases de datos soportadas por Natural) y las vistas de usuario (subconjuntos de campos).
- Mensajes de error de Natural.
- Textos de la función de ayuda.
El lenguaje Natural es fuertemente tipado, requiriendo la declaración explícita del tipo de datos para las variables. Soporta una variedad de tipos de datos, incluyendo Alfanumérico, Numérico (decimal empaquetado y de zona), Entero (de varios tamaños), Fecha, Hora (que incluye fecha), Lógico, Binario, y Punto Flotante.
Un ejemplo de código Natural que muestra la definición de datos y una operación simple:
DEFINE DATA LOCAL 01 EMPLOYEES VIEW OF EMPLOYEES 02 SALARY (1) END-DEFINE READ EMPLOYEES BY NAME AT END OF DATA DISPLAY MIN (EMPLOYEES.SALARY (1)) (EM=ZZZ,ZZZ,ZZ9) AVER (EMPLOYEES.SALARY (1)) (EM=ZZZ,ZZZ,ZZ9) MAX (EMPLOYEES.SALARY (1)) (EM=ZZZ,ZZZ,ZZ9) END-ENDDATA END-READ ENDEste código define una vista de datos sobre el fichero EMPLOYEES de Adabas, lee los registros ordenados por nombre y, al finalizar los datos, muestra el salario mínimo, promedio y máximo. La sintaxis concisa y las sentencias orientadas a datos son características de los lenguajes de cuarta generación como Natural.
Historia y Contexto
La introducción de Natural en 1979 contribuyó significativamente a la popularidad y el crecimiento de las bases de datos Adabas. Para 1990, incluso SAS (Statistical Analysis System) ya ofrecía soporte para Adabas, lo que demuestra su presencia en el ámbito del análisis de datos.
Aunque Adabas es anterior al auge de las bases de datos relacionales y IBM llegó a comentar en 2015 que las aplicaciones escritas para bases de datos pre-relacionales como Adabas "ya no son mayoritarias y no siguen los estándares aceptados de la industria TI", es importante notar que una base de datos Adabas *puede* ser diseñada siguiendo principios del modelo relacional, aunque su naturaleza subyacente sea de lista invertida.
La migración de sistemas Adabas a bases de datos relacionales (como Oracle, DB2, etc.), aunque es posible y existen herramientas para facilitarla, a menudo es un proceso costoso y complejo debido a las diferencias fundamentales en el modelo de datos, la lógica de acceso y la integración con aplicaciones Natural.
Interesantemente, la tecnología ha permitido puentes entre Adabas y el mundo relacional. Por ejemplo, los procesadores especializados zIIP (System z Integrated Information Processor) de IBM permiten acceso SQL directo y en tiempo real a datos Adabas, incluso si los datos no están almacenados en un formato puramente relacional.
Características Clave de Adabas
En resumen, Adabas se caracteriza por:
- Ser una base de datos de lista invertida, optimizada para búsquedas rápidas en campos indexados.
- Utilizar la terminología ficheros, registros y campos.
- Soportar nativamente grupos periódicos y campos multivalor para desnormalización.
- No imponer integridad referencial de forma nativa (gestionada por la aplicación).
- Ser típicamente accedida a través del lenguaje Natural.
- Ofrecer acceso SQL a través de pasarelas externas.
- Ser adecuada para entornos de alto volumen de datos y transacciones.
Su arquitectura de lista invertida le permite realizar búsquedas complejas y rápidas sobre campos indexados de manera muy eficiente, lo que la hace valiosa en aplicaciones donde el rendimiento de las consultas es crítico. Aunque el modelo de datos es diferente al relacional, su rendimiento y robustez la han mantenido como una opción viable para muchas organizaciones, especialmente aquellas con grandes inversiones en aplicaciones Natural.
Productos Relacionados
Las instalaciones de Adabas y Natural a menudo se complementan con otros productos de Software AG para mejorar la gestión, seguridad y desarrollo de aplicaciones:
- Natural Security: Un producto para administrar la seguridad de usuarios, bibliotecas de Natural y ficheros de Adabas (y otras bases de datos).
- Predict: Un diccionario de datos utilizado para definir y documentar ficheros, relaciones, programas y otros objetos del sistema.
- Natural Construct: Un generador de código utilizado para automatizar la creación de aplicaciones Natural.
Estos productos forman un ecosistema que rodea a Adabas y Natural, proporcionando herramientas para el ciclo de vida completo del desarrollo y la operación de aplicaciones.
Preguntas Frecuentes sobre Adabas
- ¿Es Adabas una base de datos relacional?
- No, Adabas es fundamentalmente una base de datos de lista invertida. Aunque puede ser diseñada para seguir principios relacionales y se puede acceder a ella vía SQL mediante pasarelas, su arquitectura y modelo de datos nativo difieren del modelo relacional.
- ¿Cómo se accede a los datos en Adabas?
- Principalmente a través de programas escritos en el lenguaje de programación Natural, utilizando sentencias como
READyFIND. También es posible el acceso vía SQL mediante pasarelas como Adabas SQL Gateway. - ¿Qué es Natural?
- Natural es un lenguaje de programación de cuarta generación (4GL) desarrollado por Software AG, diseñado específicamente para interactuar con Adabas y otras bases de datos. Es el entorno de desarrollo principal para muchas aplicaciones que utilizan Adabas.
- ¿Adabas soporta SQL de forma nativa?
- No, Adabas no tiene un motor SQL embebido nativo. El acceso SQL se proporciona a través de productos adicionales o pasarelas que traducen las consultas SQL a las operaciones internas de Adabas.
- ¿Adabas impone integridad referencial?
- No de forma nativa. La integridad referencial y la gestión de relaciones entre registros deben ser manejadas por el código de la aplicación que utiliza Adabas.
- ¿Qué son los campos multivalor y los grupos periódicos?
- Son estructuras de datos nativas en Adabas que permiten almacenar múltiples valores para un solo campo (campos multivalor) o múltiples ocurrencias de un grupo de campos (grupos periódicos) dentro de un único registro. Son formas de desnormalización soportadas directamente por el modelo de Adabas.
Entender Adabas implica reconocer su arquitectura de lista invertida y su estrecha relación con el lenguaje Natural. Aunque diferente de las bases de datos relacionales, Adabas sigue siendo una tecnología potente y eficiente para cargas de trabajo específicas, respaldada por un ecosistema de herramientas de desarrollo y gestión.
Si quieres conocer otros artículos parecidos a ¿Qué es Adabas? Una Base de Datos Única puedes visitar la categoría Bases de datos.

Aprende mas sobre MySQL