CUBRID ( / k Ju b r ɪ d / "cubo-rid") es una de fuente abierta basado en SQL sistema de gestión de base de datos relacional (RDBMS) con extensiones de objetos desarrollados por CUBRID Corp. para OLTP . El nombre CUBRID es una combinación de las dos palabras cubo y puente , cubo que representa un espacio para datos y puente que representa un puente de datos . [ cita requerida ]
Desarrollador (es) | CUBRID Corp. |
---|---|
Versión inicial | 20 de noviembre de 2008 |
Lanzamiento estable | 11.0 / enero de 2021 [1] |
Repositorio | github |
Escrito en | C , C ++ , Java |
Sistema operativo | Linux , Windows |
Disponible en | Inglés, coreano |
Tipo | RDBMS |
Licencia | Licencia Apache para Server Engine y licencia BSD para API y herramientas GUI |
Sitio web | cubrid |
Política de licencia
CUBRID tiene una licencia separada para su motor de servidor y sus interfaces. El motor del servidor adopta la licencia Apache 2.0, que permite la distribución, modificación y adquisición del código fuente. Las API de CUBRID y las herramientas de GUI tienen la licencia de distribución de software de Berkeley en la que no hay obligación de abrir trabajos derivados. La razón de adoptar dos sistemas de licencias separados 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 3 niveles que consiste en el servidor de la base de datos, el intermediario de conexión y la capa de aplicación.
Servidor de base de datos
El servidor de la base de datos es el componente del sistema de administración de la base de datos CUBRID que es responsable de las operaciones de almacenamiento y la ejecución de declaraciones. Una instancia de servidor de base de datos CUBRID puede montar y utilizar una sola base de datos, lo que imposibilita las consultas entre bases de datos. Sin embargo, se puede ejecutar más de una instancia en una máquina.
A diferencia de otras soluciones, el servidor de bases de datos no compila las consultas por sí mismo, sino que las ejecuta precompiladas en un lenguaje de especificación de acceso personalizado. [ cita requerida ]
Agente de conexión
Las funciones principales del broker de conexiones CUBRID son:
- gestión de las conexiones de la aplicación cliente
- almacenamiento en caché y retransmisión de información (por ejemplo, resultados de consultas)
- análisis de sintaxis de consultas, optimización y generación de planes de ejecución
Además, un grupo de objetos local permite que algunas partes de la ejecución se difieran del servidor de la base de datos (por ejemplo, inserción y eliminación de tuplas, declaraciones DDL), lo que reduce la carga del servidor de la base de datos.
Dado que el intermediario de conexión no está vinculado a la misma máquina que el servidor de la base de datos, CUBRID puede aprovechar los recursos de hardware de varias máquinas mientras procesa consultas en una sola base de datos.
Capa de aplicación
Las aplicaciones pueden utilizar una de las API disponibles para conectarse a un agente de conexión CUBRID.
Características
Alta disponibilidad
CUBRID High Availability proporciona disponibilidad de servicio continua, tolerante a fallas y con equilibrio de carga a través de su agrupación en clústeres de nada compartido, conmutación por error automatizada y mecanismos de conmutación por recuperación manual.
La arquitectura de 3 niveles de CUBRID permite el soporte nativo para alta disponibilidad con conmutación por error automática de dos niveles: la conmutación por error del intermediario y la conmutación por error del servidor. [3]
Conmutación por error del agente
Al conectarse a un intermediario a través de una API de cliente, los usuarios pueden especificar, en la URL de conexión, una lista de hosts alternativos donde los intermediarios están escuchando las solicitudes entrantes. En caso de falla de hardware, red, sistema operativo o software en uno de los hosts, la API del cliente subyacente falla automáticamente al siguiente host que haya proporcionado un usuario.
Conmutación por error del servidor
El entorno de alta disponibilidad se puede construir con nodos de servidor maestro-esclavo 1: N. Cada nodo esclavo se comunica con el maestro a través del protocolo CUBRID Heartbeat. Cuando un nodo maestro no responde, el primero de los nodos esclavos será promovido a un rol de maestro. La replicación entre nodos se puede lograr en uno de dos modos: sincrónico y asincrónico.
Los administradores pueden especificar una lista de hosts de servidor a los que cada corredor puede conectarse y, en caso de falla 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
Equilibrio de carga a nivel de API
Debido a que un intermediario de conexión se puede configurar en cuatro modos diferentes (lectura-escritura, solo lectura, solo esclavo, host preferido solo lectura), la lista de hosts alternativos que un usuario ha proporcionado a través de la URL de conexión se puede utilizar como método para equilibrar la carga. Cuando se usa el equilibrio de carga , la API del cliente elegirá aleatoriamente un host entre los especificados en la URL de conexión, excepto el que se usó para conectarse la última vez. Si el host elegido no está disponible, la selección continuará hasta que se determine que todos los hosts no están disponibles. En tal caso, el controlador informará un error.
Almacenamiento en caché del plan de consultas
Se implementa una caché del plan 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. Debido a que las consultas se parametrizan durante el análisis, dos consultas que se diferencian solo por los valores de las constantes literales comparten la misma entrada de caché. [4]
Almacenamiento
Índices
CUBRID admite índices de árbol B + , tanto de una 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 usar índices para producir planes de ejecución más rápidos usando métodos como:
- Identificación de índices de cobertura
- Exploraciones de índice descendente
- PEDIR POR SALTAR
- GRUPO POR saltar
- Optimizaciones de límites de rango múltiple [ cita requerida ]
- Índice de escaneo suelto
- Escaneo de salto de índice
Partición de la mesa
CUBRID admite particiones horizontales 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 que son 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 gran subconjunto del estándar ANSI SQL: 1999 , ampliado con características de estándares SQL posteriores y características personalizadas. [ cita requerida ]
Funciones de ventana
CUBRID proporciona soporte para funciones de ventana como se define 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
Las consultas jerárquicas que utilizan la sintaxis no estándar START WITH ... CONNECT BY Oracle son compatibles con CUBRID. Se proporcionan una serie de pseudocolumnas y operadores especializados para controlar el comportamiento de la ejecución de la consulta.
Contador de clics integrado
CUBRID optimiza el escenario común en aplicaciones web donde los campos de la base de datos deben incrementarse en ciertos eventos (por ejemplo, visitas a la página). En contraste con el enfoque habitual de usar una combinación de instrucciones SELECT / UPDATE, CUBRID puede incrementar campos desde dentro de la ejecución de la instrucción SELECT, evitando algunos costosos gastos de compilación, ejecución y bloqueo asociados con una instrucción UPDATE. [5]
Procedimientos almacenados de Java
El único lenguaje de procedimiento almacenado admitido en CUBRID es Java , que requiere la instalación de una máquina virtual Java en el sistema. [6] La máquina virtual es iniciada y administrada por el servidor y se utiliza para la ejecución de código.
El código de procedimiento almacenado que requiere acceso a la base de datos debe usar el controlador JDBC , ya sea usando la transacción principal o emitiendo una nueva.
Expresión regular
Además del operador LIKE, CUBRID proporciona el operador REGEXP para la coincidencia de patrones de expresión regular . Por defecto, el operador hace un caso insensible a juego en la cadena de entrada, pero el BINARIO modificador se puede utilizar para sensibles de casos escenarios. Un alias opcional de REGEXP es RLIKE. [7]
En la versión anterior de CUBRID 11, CUBRID no admite REGEXP en cadenas Unicode . [ cita requerida ]
Desde CUBRID 11, CUBRID agrega las siguientes funciones de expresión regular y las admite en cadenas Unicode . [8]
- 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 bit), INTEGER (32 bit), BIGINT (64 bit)
- números de coma flotante : FLOAT (32 bits), DOBLE (64 bits)
- numéricos de precisión arbitraria : NUMERIC
- valores monetarios: MONETARIO ( coma flotante de doble precisión )
- Para valores de cadena:
- Caracteres de longitud fija y cadenas de bits: CHAR , BIT
- caracteres de longitud variable y cadenas de bits: CHAR VARYING , BIT VARYING
- Para valores de fecha y hora:
- valores de fecha: DATE
- valores de tiempo: TIME
- valores de fecha y hora: DATETIME , TIMESTAMP (almacenado internamente como una marca de tiempo de Unix )
- Para colecciones: SET , MULTISET , LIST
- Enumeraciones definidas por el usuario : ENUM
- Para objetos grandes: BLOB , CLOB
- Para la notación de objetos de 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 comando
CUBRID viene con una interfaz de línea de comandos incorporada llamada csql que se puede usar para ejecutar sentencias SQL en el servidor CUBRID. [9] La herramienta se puede utilizar en uno de dos modos:
- Modo CS ( cliente / servidor ), que puede conectarse a servidores CUBRID locales o remotos
- Modo SA ( independiente ), utilizado principalmente con fines de administración, que monta una base de datos local emulando una instancia de servidor
El 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, el tiempo de consulta y más.
Programación
CUBRID proporciona una serie de interfaces de programación de aplicaciones específicas del lenguaje : [10] controlador C (también llamado CCI , el controlador nativo de CUBRID), JDBC , controlador PHP / PDO, ODBC , OLEDB , ADO.NET , controlador Ruby , controlador Python , Node. js controlador y controlador Perl .
Gráfico
Se han desarrollado varias herramientas de interfaz gráfica de usuario para CUBRID:
- CUBRID Manager [11] es un navegador de consultas y una herramienta de administración de bases de datos distribuida bajo la licencia BSD en macOS y Linux.
- CUBRID Admin es una herramienta de administración distribuida bajo la licencia BSD en Windows.
- SQLGate es una herramienta de búsqueda de consultas desarrollada por CHECKER en Windows.
- CUBRID Migration Toolkit [12] es una herramienta que permite la migración de datos desde Oracle, MS-SQL, MySQL y versiones anteriores de bases de datos CUBRID al último servidor de bases de datos CUBRID.
Historial de versiones
Versión | Fecha de lanzamiento | Fecha de lanzamiento beta | Adiciones |
---|---|---|---|
11,0 | Enero de 2021 | Seguridad: TDE (Cifrado transparente de datos) y otros. [13] | |
10,2 | Diciembre de 2019 | Nuevo tipo de datos: JSON (JavaScript Object Notation) y otros. [14] | |
10.1 | Julio de 2017 | Incluye útiles extensiones SQL: CTE (Common Table Expressions) y otras. [15] | |
10.0 | Febrero de 2016 | Proporciona aislamientos de instantáneas basados en el protocolo MVCC. Incluye muchas extensiones de SQL y funciones / operadores. | |
9.3 | Mayo de 2014 | Nuevas funciones de SQL, bloqueo de esquema de soporte, compatibilidad con varias sintaxis SHOW, mejora del rendimiento. | |
9.2 | Septiembre 2013 | Creación de perfiles SQL, Nuevo soporte SQL, Varias mejoras | |
9.1 | Marzo de 2013 | Nuevas funciones SQL y sugerencia de índice, mejoras y optimizaciones de rendimiento. | |
9.0 | Octubre 2012 | Soporte de internacionalización, índice de función, índice de filtro, escaneo de omisión de índice, declaración MERGE, funciones de ventana. | |
8.4.3 | 20 de noviembre de 2012 | Fragmentación de bases de datos , equilibrio de carga a nivel de API, administrador web integrado con soporte de monitoreo | |
8.4.1 | 24 de febrero de 2012 | 1 de febrero de 2012 | Optimizaciones de rendimiento importantes, extensiones SQL, operador REGEXP. |
8.4.0 | 1 de julio de 2011 | 12 de mayo de 2011 | Mejoras de alta disponibilidad, mejoras de la API CUBRID C, optimizaciones de rendimiento notables, índice de cobertura [16] [17] |
3.1 | 31 de diciembre de 2010 | 12 de noviembre de 2010 | Soporte BLOB y CLOB , soporte de monitoreo de alta disponibilidad, mejoras de controladores (JDBC, ODBC y CUBRID C API) [18] |
3,0 | 4 de octubre de 2010 | 19 de julio de 2010 | Extensiones de SQL, mejoras de alta disponibilidad [19] [20] |
2.2 | 30 de abril de 2010 | Mejoras de alta disponibilidad, mejoras de la API CUBRID C, algunas mejoras de rendimiento [21] | |
2.1 | Diciembre de 2009 | ||
2.0 | Agosto de 2009 | ||
1.4 | Marzo de 2009 | ||
1.3 | Febrero de 2009 | ||
1.2 | Enero de 2009 | ||
1.1 | Noviembre de 2008 | CUBRID se convirtió en un proyecto de código abierto | |
1.0 | Octubre de 2008 | Primera versión estable |
Aplicaciones
Algunas aplicaciones y sitios web que han agregado compatibilidad con CUBRID o funcionan con CUBRID:
- jOOQ [22]
- Estadísticas SOFA [23]
- SIDU [24]
- ARTE [25]
- Scriptella
- JWhoisServer [26]
- Marco PHP Yii2 [27]
- RedBeanPHP [28]
- DBeaver [29]
Ver también
- Comparación de sistemas de gestión de bases de datos relacionales
- Comparación de sistemas de gestión de bases de datos relacionales de objetos
- Lista de sistemas de gestión de bases de datos relacionales
Referencias
- ^ "Lanzamiento de CUBRID" . Consultado el 21 de mayo de 2020 .
- ^ "Licencia CUBRID" .
- ^ "CUBRIDHA" . Consultado el 27 de mayo de 2020 .
- ^ "Almacenamiento en caché de planes de consultas compartidos en CUBRID" . Archivado desde el original el 22 de junio de 2014 . Consultado el 9 de febrero de 2013 .
- ^ "Manual CUBRID - Contador de clics CUBRID" . Archivado desde el original el 14 de febrero de 2013 . Consultado el 11 de febrero de 2013 .
- ^ "Procedimientos almacenados Java CUBRID" . Archivado desde el original el 14 de febrero de 2013 . Consultado el 11 de febrero de 2013 .
- ^ "Manual CUBRID - Expresiones condicionales REGEXP / RLIKE" . Archivado desde el original el 4 de junio de 2013 . Consultado el 11 de febrero de 2013 .
- ^ "Manual CUBRID 11 - Operadores y funciones de expresiones regulares" .
- ^ "Cómo utilizar las utilidades CSQL" . Archivado desde el original el 14 de febrero de 2013 . Consultado el 8 de febrero de 2013 .
- ^ "Wiki de API de CUBRID" . Archivado desde el original el 26 de junio de 2014 . Consultado el 8 de febrero de 2013 .
- ^ "Administrador CUBRID" . Archivado desde el original el 16 de enero de 2013 . Consultado el 8 de febrero de 2013 .
- ^ "Kit de herramientas de migración CUBRID" . Archivado desde el original el 10 de febrero de 2013 . Consultado el 8 de febrero de 2013 .
- ^ "Se ha lanzado CUBRID 11.0" . Consultado el 2 de febrero de 2021 .
- ^ "Se ha lanzado CUBRID 10.2" . Consultado el 21 de mayo de 2020 .
- ^ "Lanzamiento de CUBRID 10.1" . Consultado el 21 de mayo de 2020 .
- ^ "¡CUBRID 8.4.0 ha llegado con un motor de base de datos x2 más rápido!" . Archivado desde el original el 20 de mayo de 2011 . Consultado el 17 de mayo de 2011 .
- ^ "CUBRID 8.4.0 GA ya está disponible para descargar" . Archivado desde el original el 25 de agosto de 2011 . Consultado el 14 de julio de 2011 .
- ^ "¡CUBRID 3.1 Stable ya está disponible!" . Archivado desde el original el 7 de enero de 2011 . Consultado el 3 de enero de 2011 .
- ^ "¡Ha llegado CUBRID 3.0 Stable!" . Archivado desde el original el 8 de octubre de 2010 . Consultado el 5 de octubre de 2010 .
- ^ "Se ha lanzado el nuevo CUBRID 2008 R3.0 Beta" . Archivado desde el original el 27 de agosto de 2011 . Consultado el 21 de julio de 2010 .
- ^ "Lanzamiento de nueva versión - CUBRID 2008 R2.2" . Archivado desde el original el 25 de julio de 2011 . Consultado el 7 de mayo de 2010 .
- ^ "Cómo simular extensiones de sentencias INSERT de MySQL" . Lukas Eder. 2012-05-15 . Consultado el 4 de febrero de 2013 .
- ^ "Estadísticas SOFA" . sofastatistics.com. 2012-11-20 . Consultado el 17 de noviembre de 2010 .
- ^ "Cliente SQL basado en Web intuitivo increíblemente simple de SIDU" . SIDU. 2012-05-25 . Consultado el 4 de febrero de 2013 .
- ^ "ART herramienta de generación de informes de código abierto simple pero eficaz" . art.sourceforge.net. 2012-06-10 . Consultado el 4 de febrero de 2013 .
- ^ "Ejecute su propio servidor Whois con JWhoisServer" . Klaus Zerwes. 2012-07-06 . Consultado el 4 de febrero de 2013 .
- ^ "Constructor de consultas Cubrid" . yii.com . Consultado el 20 de marzo de 2015 .
- ^ "RedBeanPHP PHP ORM súper fácil de usar" . Archivado desde el original el 29 de marzo de 2013 . Consultado el 4 de febrero de 2013 .
- ^ "DBeaver 4.2.5" . Consultado el 27 de mayo de 2020 .
enlaces externos
- Página web oficial