CrateDB es un sistema distribuido de administración de bases de datos SQL que integra un almacén de datos orientado a documentos con capacidad de búsqueda . Es de código abierto , escrito en Java , basado en una arquitectura de nada compartido y diseñado para una alta escalabilidad. CrateDB incluye componentes de Presto , Lucene , Elasticsearch y Netty .
Desarrollador (es) | Crate.io, Inc. |
---|---|
Lanzamiento estable | 4.5 / 31.03.2021 |
Repositorio | https://github.com/crate/crate |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | Almacén de datos |
Licencia | Licencia Apache 2.0 |
Sitio web | caja |
Historia
El proyecto CrateDB fue iniciado por Jodok Batlogg, un contribuyente y creador de código abierto que ha contribuido a la Iniciativa de código abierto Vorarlberg [1] mientras estaba en Lovely Systems en Dornbirn . El software es una base de datos agrupada de código abierto que se utiliza para análisis y búsquedas de texto rápidas. [2]
La compañía, ahora llamada Crate.io, obtuvo su primera ronda de financiamiento en abril de 2014. [3] En junio de ese año, Crate.io ganó el premio de elección del juez en la competencia GigaOm Structure Launchpad. [4] En octubre, Crate.io ganó el TechCrunch Disrupt Europe en Londres. [5]
Crate.io cerró una ronda de fundación de 4 millones de dólares en marzo de 2016. [6] En diciembre, se lanzó CrateDB 1.0 con más de un millón de descargas. [7] [8]
CrateDB 2.0, la primera edición empresarial de CrateDB, se lanzó en mayo de 2017 [9] [10] [11] después de una ronda de $ 2.5 millones de Dawn Capital, Draper Esprit, Speedinvest y Sunstone Capital. [12]
CrateDB 4.0 se lanzó en junio de 2019. [13]
Desde septiembre de 2020, Crate.io está dirigido por Eva Schönleitner como CEO. [14]
Descripción general
Arquitectura
CrateDB opera en una arquitectura de nada compartido como un grupo de servidores (nodos) configurados de manera idéntica. Los nodos se coordinan para distribuir automáticamente la ejecución de las operaciones de escritura y consulta en todo el clúster.
Consultando
La sintaxis SQL de CrateDB incluye JOIN, agregaciones, índices, subconsultas, funciones definidas por el usuario y vistas. También admite búsquedas de texto completo, consultas geoespaciales y columnas de objetos JSON anidadas.
Para la distribución de consultas, CrateDB implementa cachés de campo columnar residentes en memoria en cada fragmento. Los cachés le dicen al motor de consultas si hay filas en ese fragmento que cumplen con los criterios de consulta y dónde se encuentran las filas. Esto se realiza automáticamente.
Esquemas
CrateDB admite esquemas "estrictos", "dinámicos" o "ignorados":
- Esquema estricto: si una instrucción INSERT incluye una columna que no se definió en la tabla, CrateDB aplica el esquema original rechazando el INSERT y arrojando un error.
- Esquema dinámico: CrateDB actualiza automáticamente el esquema indexando la nueva columna.
- Esquema ignorado: CrateDB no indexa la columna, pero almacena el valor JSON simple.
Consistencia
CrateDB implementa un modelo de inserción de datos sin bloqueo y eventualmente consistente . Incluye control de versiones de registros, control de simultaneidad optimista y una configuración de frecuencia de actualización a nivel de tabla, que obliga a los datos de CrateDB a ser consistentes cada n milisegundos.
CrateDB admite la coherencia de lectura tras escritura: las consultas que recuperan una fila específica mediante su clave principal siempre reciben la fila más reciente. Todas las demás consultas (operaciones de búsqueda) devuelven datos eventualmente coherentes.
Las operaciones de búsqueda se realizan en IndexReaders compartidos , que proporcionan capacidades de almacenamiento en caché y búsqueda inversa para fragmentos. Un IndexReader siempre está vinculado al segmento de Lucene desde el que se inició, lo que significa que debe actualizarse para ver nuevos cambios. Por lo tanto, una búsqueda solo ve un cambio si el IndexReader asociado se actualizó después de que ocurriera ese cambio. De forma predeterminada, esto se hace una vez por segundo, pero se puede reconfigurar para que ocurra con más o menos frecuencia.
Cada fragmento de réplica se actualiza sincrónicamente con su fragmento principal y siempre lleva la misma información. Por lo tanto, en términos de coherencia, no importa si se accede al fragmento principal o de réplica. En CrateDB, solo la actualización del IndexReader afecta la coherencia.
Atomicidad y durabilidad
CrateDB implementa WAL ( registro de escritura anticipada):
- Las operaciones en filas (que se almacenan internamente en CrateDB como documentos JSON) son atómicas.
- Las operaciones en filas se conservan en el disco sin tener que emitir un compromiso de Lucene para cada operación de escritura. Cuando el translog se vacía, todos los datos se escriben en el almacenamiento de índice persistente de Lucene y el translog se borra.
- En el caso de un apagado incorrecto de un fragmento, las transacciones en el translog se reproducen al inicio, para garantizar que todas las operaciones ejecutadas sean permanentes.
- El translog también se transfiere directamente cuando una réplica recién asignada se inicializa a sí misma desde el fragmento principal.
Referencias
- ^ Franz Rüf, Clemens Peter, Jodok Batlogg, Roland Alton-Scheidl (eds.): Iniciativa de código abierto Vorarlberg. Perspektiven für Wirtschaft, Bildung und Verwaltung, 2005.
- ^ "CrateDB paquetes de flexibilidad NoSQL, familiaridad con SQL" InfoWorld. 19 de diciembre de 2016
- ^ "Datos de caja de inicio de almacén de datos de código abierto recauda 1,5 millones de dólares de Sunstone y DFJ Esprit" . TechCrunch . Consultado el 13 de enero de 2021 .
- ^ "Vorarlberger Startup" Crate Data "ausgezeichnet" . vol . a. Consultado el 13 de enero de 2021 .
- ^ "Datos de caja: Vorarlberger gewinnen bei Techcrunch Europe" . Horizont.at .
- ^ FinSMEs (15 de marzo de 2016). "La tecnología de cajas recauda 4 millones de dólares en financiación" . FinSMEs . Consultado el 13 de enero de 2021 .
- ^ Francisco, Thomas Claburn en San. "Crate.io desempaqueta SQL CrateDB agrupado, se traslada a California" . www.theregister.com . Consultado el 13 de enero de 2021 .
- ^ Kepes, Ben (14 de diciembre de 2016). "CrateDB: IoT y base de datos centrada en datos de la máquina" . Mundo de la red . Consultado el 13 de enero de 2021 .
- ^ Yegulalp, Serdar (16 de mayo de 2017). "CrateDB 2.0 Enterprise enfatiza la seguridad y el monitoreo, y el código abierto" . InfoWorld . Consultado el 13 de enero de 2021 .
- ^ "Crate.io incluye nuevas funciones, servicios en actualización de base de datos" . LinuxInsider . 2017-05-17 . Consultado el 13 de enero de 2021 .
- ^ "Con la versión 2.0, las herramientas de base de datos de Crate.io ponen énfasis en IoT" . TechCrunch . Consultado el 13 de enero de 2021 .
- ^ FinSMEs (2 de enero de 2017). "Crate.io recauda 2,5 millones de euros en financiación inicial" . FinSMEs . Consultado el 13 de enero de 2021 .
- ^ "Versión 4.0.0 - CrateDB: Referencia" . crate.io . Consultado el 13 de enero de 2021 .
- ^ Crate.io (9 de septiembre de 2020). "Eva Schönleitner se une a Crate.io como CEO" . Sala de noticias GlobeNewswire . Consultado el 13 de enero de 2021 .
enlaces externos
- Página web oficial