CUBRID ( / ˈ k juː b r ɪ d / "cube-rid") es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto basado en SQL con extensiones de objetos desarrollado por CUBRID Corp. para OLTP . El nombre CUBRID es una combinación de las palabras cube y bridge , donde cube representa un espacio para datos y bridge representa un puente de datos .
Política de licencias
CUBRID cuenta con una licencia independiente para su motor de servidor y sus interfaces. El motor de servidor adopta la Licencia Apache 2.0, que permite la distribución, modificación y adquisición del código fuente. Las API y las herramientas GUI de CUBRID cuentan con la Licencia de Distribución de Software de Berkeley, que no exige la publicación de obras derivadas. El motivo de adoptar dos sistemas de licencias independientes es brindar total libertad a los proveedores de software independientes (ISV) para desarrollar y distribuir aplicaciones basadas en CUBRID. [ 2 ]
Arquitectura
La característica que distingue a la base de datos CUBRID de otros sistemas de bases de datos relacionales es su arquitectura cliente-servidor de tres niveles, que consta del servidor de base de datos, el agente de conexión y la capa de aplicación.
Agente de conexión
Las funciones principales del agente de conexión CUBRID son:
- gestión de conexiones de aplicaciones de cliente
- almacenamiento en caché y retransmisión de información (por ejemplo, resultados de consultas)
- Análisis de la sintaxis de la consulta, optimización y generación de planes de ejecución.
Para optimizar aún más el rendimiento, el agente de conexión utiliza un grupo de objetos local, lo que permite que ciertas operaciones, como la inserción y eliminación de tuplas y las sentencias DDL, se ejecuten de forma diferida desde el servidor de base de datos. Esto reduce la carga del servidor y mejora la capacidad de respuesta.
A diferencia de los sistemas de bases de datos tradicionales, donde el intermediario de conexión y el servidor de base de datos se encuentran en la misma máquina, el intermediario de CUBRID puede ejecutarse en máquinas independientes. Esta arquitectura distribuida permite una mejor utilización de los recursos, escalabilidad y alta disponibilidad, al permitir que varias máquinas procesen consultas en una única base de datos. Al descargar tareas y distribuir la capacidad de procesamiento, el intermediario de conexión mejora significativamente la eficiencia y el rendimiento de la base de datos.
Características
Alta disponibilidad
CUBRID High Availability proporciona disponibilidad de servicio continua, tolerante a fallos y con equilibrio de carga mediante su agrupación sin recursos compartidos, conmutación por error automatizada y mecanismos de recuperación manual.
La arquitectura de tres niveles de CUBRID permite la compatibilidad nativa con alta disponibilidad mediante conmutación por error automática de dos niveles: la conmutación por error del broker y la conmutación por error del servidor. [ 3 ]
conmutación por error del agente
Al conectarse a un intermediario mediante una API de cliente , los usuarios pueden especificar, en la URL de conexión , una lista de hosts alternativos donde los intermediarios están a la espera de solicitudes entrantes. En caso de fallo de hardware, red, sistema operativo o software en uno de los hosts, la API de cliente subyacente conmuta automáticamente al siguiente host que el usuario haya proporcionado. [ 4 ]
conmutación por error del servidor
El entorno de alta disponibilidad se puede configurar con una relación maestro-esclavo de 1:N. Cada nodo esclavo se comunica con el maestro mediante el protocolo CUBRID Heartbeat. Si un nodo maestro no responde, el primero de los nodos esclavos que lo haga asumirá el rol de maestro. La replicación entre nodos se puede realizar en dos modos: síncrono y asíncrono.
Los administradores pueden especificar una lista de servidores a los que cada agente puede conectarse y, en caso de fallo del nodo maestro, se utilizará otro.
Escalabilidad y mantenibilidad
Respaldo
CUBRID admite copias de seguridad en línea, fuera de línea e incrementales.
Actuación
Balanceo de carga a nivel de API
Dado que un agente de conexión puede configurarse en cuatro modos diferentes (lectura-escritura, solo lectura, solo esclavo, host preferido de solo lectura), la lista de hosts alternativos que el usuario ha proporcionado a través de la URL de conexión puede utilizarse para equilibrar la carga. Cuando se utiliza el equilibrio de carga , la API del cliente selecciona aleatoriamente un host entre los especificados en la URL de conexión, excepto el que se utilizó para la conexión anterior. Si el host seleccionado no está disponible, la selección continúa hasta que se determine que todos los hosts no están disponibles. En tal caso, el controlador informará de un error.
Almacenamiento en caché del plan de consulta
Se implementa una caché de planes de ejecución de consultas en el intermediario para omitir la mayoría de los pasos de compilación en las consultas de uso frecuente. Dado que las consultas se parametrizan durante el análisis, dos consultas que difieren únicamente en los valores de las constantes literales comparten la misma entrada de caché. [ 5 ]
Almacenamiento
Índices
CUBRID admite índices de árbol B+ , tanto de una sola columna como de varias columnas. Se pueden crear los siguientes tipos de índices:
- Índices e índices invertidos
- Índices únicos e índices únicos inversos
- Índices basados en funciones
- Índices filtrados
El optimizador de consultas puede utilizar índices para producir planes de ejecución más rápidos mediante métodos como:
- Identificación de índices de cobertura
- Escaneos de índice descendente
- ORDENAR POR omitir
- AGRUPAR POR saltar
- Optimizaciones de límites de rango múltiple
- Índice de escaneos sueltos
- Índice Saltar escaneo
Particionamiento de tablas
CUBRID admite particionamiento horizontal por rango, hash y listas de valores, con un máximo de 1024 particiones por tabla. Se puede acceder a las particiones de forma independiente y admiten la mayoría de las operaciones válidas en una tabla normal.
A partir de la versión 9.0, CUBRID implementa la poda de particiones en tiempo de ejecución .
Soporte SQL
CUBRID implementa un subconjunto importante del estándar ANSI SQL:1999 , ampliado con características de estándares SQL posteriores y características personalizadas.
Funciones de ventana
CUBRID ofrece soporte para funciones de ventana según lo definido en el estándar SQL:2003 . Las funciones implementadas son ROW_NUMBER , COUNT , MIN , MAX , SUM , AVG , STDDEV_POP , STDDEV_SAMP , VAR_POP , VAR_SAMP , RANK , DENSE_RANK , LEAD , LAG y NTILE .
Consultas jerárquicas
CUBRID admite consultas jerárquicas que utilizan la sintaxis no estándar de Oracle . Se proporcionan varias pseudocolumnas y operadores especializados para controlar el comportamiento de la ejecución de la consulta.STARTWITH...CONNECTBY
Contador de clics incorporado
CUBRID optimiza el escenario común en aplicaciones web donde los campos de la base de datos necesitan incrementarse en ciertos eventos (por ejemplo, visitas a páginas). A diferencia del enfoque habitual de usar una combinación de sentencias SELECT/UPDATE, CUBRID puede incrementar campos desde la ejecución de la sentencia SELECT, evitando así la costosa sobrecarga de compilación, ejecución y bloqueo asociada con una sentencia UPDATE. [ 6 ]
Procedimientos almacenados de Java
El único lenguaje de procedimientos almacenados compatible con CUBRID es Java , lo que requiere la instalación de una máquina virtual Java en el sistema. [ 7 ] La máquina virtual es iniciada y administrada por el servidor y se utiliza para la ejecución del código.
El código de los procedimientos almacenados que requieren acceso a la base de datos debe utilizar el controlador JDBC , ya sea usando la transacción principal o creando una nueva.
Expresión regular
Además del operador LIKE, CUBRID proporciona el operador REGEXP para la coincidencia de patrones mediante expresiones regulares . Por defecto, el operador realiza una coincidencia sin distinción entre mayúsculas y minúsculas en la cadena de entrada, pero se puede usar el modificador BINARY para casos que sí distinguen entre mayúsculas y minúsculas . Un alias opcional de REGEXP es RLIKE . [ 8 ]
En la versión anterior de CUBRID 11, CUBRID no admite expresiones regulares en cadenas Unicode .
A partir de CUBRID 11, CUBRID agrega las siguientes funciones de expresiones regulares y las admite en cadenas Unicode . [ 9 ]
- REGEXP_COUNT , REGEXP_INSTR , REGEXP_LIKE , REGEXP_REPLACE , REGEXP_SUBSTR
Tipos de datos
CUBRID admite una variedad de tipos de datos :
- Para valores numéricos:
- Números enteros: SMALLINT (16 bits), INTEGER (32 bits), BIGINT (64 bits)
- Números de punto flotante : FLOAT (32 bits), DOUBLE (64 bits)
- Numéricos de precisión arbitraria : NUMÉRICO
- Valores monetarios: MONETARIO ( punto flotante de doble precisión )
- Para valores de cadena:
- Cadenas de caracteres y bits de longitud fija: CHAR , BIT
- Cadenas de caracteres y bits de longitud variable: CHAR VARYING , BIT VARYING
- Para valores de fecha y hora:
- valores de fecha: FECHA
- valores de tiempo: TIEMPO
- Valores de fecha y hora: DATETIME , TIMESTAMP (almacenados internamente como una marca de tiempo Unix ).
- Para colecciones: CONJUNTO , MULTICONJUNTO , LISTA
- Enumeraciones definidas por el usuario : ENUM
- Para objetos grandes: BLOB , CLOB
- Para la notación de objetos JavaScript: JSON
Plataformas compatibles
CUBRID está disponible para Microsoft Windows y Linux (la mayoría de las distribuciones), para arquitecturas de 32 y 64 bits.
Interfaces
Línea de comandos
CUBRID viene con una interfaz de línea de comandos integrada llamada csql que se puede usar para ejecutar sentencias SQL en el servidor CUBRID. [ 10 ] La herramienta se puede usar en uno de dos modos:
- Modo CS ( cliente/servidor ), que permite la conexión a servidores CUBRID locales o remotos.
- Modo SA ( autónomo ), utilizado principalmente para fines administrativos, que monta una base de datos local emulando una instancia de servidor.
La biblioteca csql de CUBRID también implementa algunos comandos internos relacionados con la información del esquema, la generación de planes, la depuración, el control de transacciones, la sincronización de consultas y mucho más.
Programación
CUBRID proporciona una serie de interfaces de programación de aplicaciones específicas para cada lenguaje : [ 11 ] controlador C (también llamado CCI , el controlador nativo de CUBRID), JDBC , controlador PHP /PDO, ODBC , OLEDB , ADO.NET , controlador Ruby , controlador Python , controlador Node.js y controlador Perl .
Gráfico
Se han desarrollado varias herramientas de interfaz gráfica de usuario para CUBRID:
- CUBRID Manager [ 12 ] es un navegador de consultas y una herramienta de administración de bases de datos distribuidos bajo la licencia BSD en macOS y Linux.
- CUBRID Admin es una herramienta de administración distribuida bajo la licencia BSD para Windows.
- SQLGate es una herramienta de navegador de consultas desarrollada por CHEQUER en Windows utilizando el lenguaje de programación Delphi [ 13 ] ..
- CUBRID Migration Toolkit [ 14 ] es una herramienta que permite la migración de datos desde Oracle, MS-SQL, MySQL y versiones anteriores de bases de datos CUBRID al servidor de base de datos CUBRID más reciente.
Historial de lanzamientos
Aplicaciones
Algunas aplicaciones y sitios web que han añadido compatibilidad con CUBRID o que funcionan con CUBRID:
Véase también
Referencias
- ↑ "Lanzamiento de CUBRID" . GitHub . Consultado el 19 de mayo de 2025 .
- ↑ "Licencia CUBRID" .
- ↑ "CUBRIDHA" . 22 de mayo de 2020. Consultado el 27 de mayo de 2020 .
- ↑ "Configuración del agente AMQ | Documentación de productos de Red Hat" . docs.redhat.com . Consultado el 4 de marzo de 2025 .
- ↑ "Almacenamiento en caché de planes de consulta compartidos en CUBRID" . Archivado del original el 22 de junio de 2014. Consultado el 9 de febrero de 2013 .
- ↑ "Manual de CUBRID - Contador de clics de CUBRID" . Archivado del original el 14 de febrero de 2013. Consultado el 11 de febrero de 2013 .
- ↑ "Procedimientos almacenados de CUBRID Java" . Archivado del original el 14 de febrero de 2013. Consultado el 11 de febrero de 2013 .
- ↑ "Manual de CUBRID - Expresiones condicionales REGEXP/RLIKE" . Archivado del original el 4 de junio de 2013. Consultado el 11 de febrero de 2013 .
- ↑ "Manual de CUBRID 11 - Funciones y operadores de expresiones regulares" .
- ↑ "Cómo usar las utilidades de CSQL" . Archivado del original el 14 de febrero de 2013. Consultado el 8 de febrero de 2013 .
- ↑ "Wiki de las API de CUBRID" . Archivado del original el 26 de junio de 2014. Consultado el 8 de febrero de 2013 .
- ↑ "Administrador CUBRID" . Archivado del original el 16 de enero de 2013. Consultado el 8 de febrero de 2013 .
- ↑ "SQLGate es un IDE de bases de datos líder creado en Delphi" . Embarcadero Technologies.
- ↑ "Kit de herramientas de migración de CUBRID" . Archivado del original el 10 de febrero de 2013. Consultado el 8 de febrero de 2013 .
- ↑ "Se ha lanzado CUBRID 11.4" . 19 de mayo de 2025. Consultado el 19 de mayo de 2025 .
- ↑ "Se ha lanzado CUBRID 11.3" . 27 de septiembre de 2023. Consultado el 27 de septiembre de 2023 .
- ↑ "Se ha lanzado CUBRID 11.2" . 23 de mayo de 2022. Consultado el 23 de mayo de 2022 .
- ↑ "Se ha lanzado CUBRID 11.0" . 27 de enero de 2021. Consultado el 2 de febrero de 2021 .
- ↑ "Se ha lanzado CUBRID 10.2" . 20 de marzo de 2020. Consultado el 21 de mayo de 2020 .
- ↑ "Se lanza CUBRID 10.1" . 20 de marzo de 2020. Consultado el 21 de mayo de 2020 .
- ↑ "¡CUBRID 8.4.0 ha llegado con un motor de base de datos dos veces más rápido!" . Archivado del original el 20/05/2011 . Recuperado el 17/05/2011 .
- ↑ "CUBRID 8.4.0 GA ya está disponible para su descarga" . Archivado del original el 25/08/2011 . Consultado el 14/07/2011 .
- ↑ "¡CUBRID 3.1 Stable ya está disponible!" . Archivado del original el 7 de enero de 2011. Consultado el 3 de enero de 2011 .
- ↑ "¡La versión estable de CUBRID 3.0 ya está aquí!" . Archivado del original el 8 de octubre de 2010. Consultado el 5 de octubre de 2010 .
- ↑ "Se ha lanzado la nueva versión beta de CUBRID 2008 R3.0" . Archivado del original el 27 de agosto de 2011. Consultado el 21 de julio de 2010 .
- ↑ "Lanzamiento de nueva versión - CUBRID 2008 R2.2" . Archivado del original el 25/07/2011 . Consultado el 07/05/2010 .
- ↑ "Cómo simular extensiones de sentencias INSERT de MySQL" . Lukas Eder. 15 de mayo de 2012. Consultado el 4 de febrero de 2013 .
- ↑ "Estadísticas de SOFA" . sofastatistics.com. 2012-11-20 . Consultado el 2010-11-17 .
- ↑ "SIDU Cliente SQL basado en web increíblemente simple e intuitivo" . SIDU. 25 de mayo de 2012. Archivado del original el 26 de enero de 2013. Consultado el 4 de febrero de 2013 .
- ↑ "ART Herramienta de informes de código abierto simple pero efectiva" . art.sourceforge.net. 10 de junio de 2012. Consultado el 4 de febrero de 2013 .
- ↑ "Ejecute su propio servidor Whois con JWhoisServer" . Klaus Zerwes. 6 de julio de 2012. Consultado el 4 de febrero de 2013 .
- ↑ "Cubrid Query Builder" . yii.com . Consultado el 20 de marzo de 2015 .
- ↑ "RedBeanPHP ORM PHP súper fácil de usar" . Archivado del original el 29/03/2013 . Consultado el 04/02/2013 .
- ↑ "DBeaver 4.2.5" . Consultado el 27 de mayo de 2020 .
Enlaces externos
- Sitio web oficial
- Sistemas de gestión de bases de datos gratuitos
- Sistemas de gestión de bases de datos relacionales
- Sistemas de gestión de bases de datos cliente-servidor
- Software multiplataforma
- Software ORDBMS para Linux