Para PostgreSQL la extensión AGE (AgensGraph-Extension) con implementación del lenguaje de consultas para manipular conjuntos de datos jerárquicos relacionados que forman un grafo. En lugar de columnas y filas, las bases de datos orientadas a grafos utilizan una estructura similar a una red: se definen nodos, sus propiedades y las relaciones entre nodos. AGE bajo la licencia Apache 2.0, transferido por la empresa Bitnine bajo el patrocinio de la Fundación Apache y actualmente en el incubador de Apache.
El proyecto continúa desarrollando la base de datos , que es una modificación reestructurada de PostgreSQL para el procesamiento de grafos. La principal diferencia es la implementación de AGE como una extensión universal que funciona como un complemento sobre las versiones estándar de PostgreSQL. La versión publicada hace poco soporta el trabajo con PostgreSQL 11.
En el estado actual, AGE ofrece capacidades del lenguaje de consultas Cypher, como el uso de la expresión 'CREATE' para definir nodos y relaciones, la expresión 'MATCH' para buscar datos en el grafo bajo condiciones específicas (WHERE), en un orden determinado (ORDER BY) y con restricciones establecidas (SKIP, LIMIT). El conjunto de datos resultante devuelto por la consulta se especifica con la expresión 'RETURN'. Para encadenar múltiples consultas, está disponible la expresión 'WITH'.
Es posible crear bases de datos multimodelo que combinan modelos de almacenamiento jerárquico en forma de grafo, modelo relacional y modelo de almacenamiento de documentos en formato JSON. Se admite la ejecución de consultas integradas que incluyen elementos de los lenguajes SQL y Cypher.
Está disponible la creación de índices para propiedades de nodos y aristas del grafo.
Para su uso, se ofrece un conjunto ampliado de tipos Agtype, que incluye tipos para aristas, nodos y caminos en el grafo. Las expresiones agregadas aún no están implementadas. Entre las funciones especializadas disponibles se encuentran: id, start_id, end_id, type, properties, head, last, length, size, startNode, endNode, timestamp, toBoolean, toFloat, toInteger y coalesce.
Fuente: opennet.ru
