lanzamiento de una base de datos orientada a documentos distribuida , relacionada con la clase de sistemas NoSQL. Los textos fuente del proyecto bajo la licencia Apache 2.0.
, implementados en Apache CouchDB 3.0:
- Se ha mejorado la seguridad en la configuración predeterminada.
Al iniciar, debe definirse obligatoriamente un usuario admin, sin el cual el servidor finalizará con un error (esto resuelve problemas de inicio de servidores que accidentalmente dejan acceso sin autenticación). Para acceder a las llamadas '/_all_dbs' ahora se requieren derechos de administrador, y todas las bases de datos se crean de forma predeterminada solo accesibles para el usuario admin (los permisos de acceso pueden modificarse a través del objeto '_security'). Por defecto, se prohíbe la edición de objetos en la base de datos _users; - posibilidad de crear bases de datos segmentadas (particionadas) definidas por el usuario, que permiten establecer sus propias reglas de distribución de documentos por segmentos (rango de fragmentos). Se han añadido optimizaciones especiales para bases de datos segmentadas en vistas e índices Mango;
- modo de división automática al segmentar (sharding). En las bases de datos ahora es posible redistribuir datos entre segmentos teniendo en cuenta el incremento del valor del factor q, que se usa para definir el nivel de partición;
- subsistema ken para la indexación automática en segundo plano y el mantenimiento de índices secundarios (JavaScript, Mango, índices de búsqueda de texto) sin la necesidad de iniciar explícitamente las operaciones de construcción;
- Se ha reescrito por completo el proceso smoosh, utilizado para empaquetar automáticamente las bases de datos;
- Se ha propuesto un nuevo subsistema , utilizado para alterar la prioridad de entrada/salida para ciertas operaciones;
- Se ha implementado un sistema de pruebas regresivas;
- Se ha añadido soporte oficial para las plataformas arm64v8 (aarch64) y ppc64le (ppc64el);
- Se ha agregado soporte para enlazarse con el motor JavaScript SpiderMonkey 1.8.5 (rama ESR de Firefox 60) con mejor soporte para ES5, ES6 y ES2016+;
- Se ha incluido un motor de búsqueda basado en Lucene, que simplifica considerablemente la implementación de un sistema de búsqueda basado en CouchDB;
- Se ha añadido un backend para la gestión de logs utilizando systemd-journald;
- Se ha añadido la configuración '[couchdb] single_node' al instalar, que permite a CouchDB crear automáticamente bases de datos del sistema si no existen;
- Se ha optimizado el rendimiento del proceso couch_server;
- Se ha mejorado significativamente el instalador para la plataforma Windows;
- El tamaño de las vistas está limitado a 2^28 (268435456) resultados. Este límite se puede ajustar por separado para vistas normales y segmentadas mediante las opciones query_limit y partition_query_limit en la sección «[query_server_config]»;
- Se ha eliminado la interfaz HTTP separada para la gestión del nodo local, que se ejecutaba en el puerto de red 5986, cuya funcionalidad ahora está disponible a través de la interfaz común de gestión del clúster;
- El tamaño máximo del documento se ha reducido a 8 MB, lo que puede ocasionar problemas de replicación de datos desde servidores antiguos después de la actualización a CouchDB 3.0. Para aumentar el límite, se puede usar la configuración «[couchdb] max_document_size»;
- Se ha llevado a cabo una gran limpieza de características obsoletas, como las llamadas _replicator y _external, los campos disk_size y data_size, la opción delayed_commits;
- Para iniciar CouchDB ahora se requiere Erlang/OTP 20.3.8.11+, 21.2.3+ o 22.0.5. Teóricamente, se ha mantenido la funcionalidad con la rama Erlang/OTP 19, pero está sujeta a pruebas.
Recordemos que CouchDB almacena datos en formato de lista ordenada y permite la replicación parcial de datos entre múltiples bases de datos en modo «maestro-maestro» con la detección y resolución simultánea de conflictos. Cada servidor mantiene su propio conjunto de datos local, sincronizado con otros servidores, que pueden ser trasladados al modo offline y replicar cambios periódicamente. En particular, esta capacidad hace que CouchDB sea una solución atractiva para organizar la sincronización de configuraciones de programas entre diferentes computadoras. Las soluciones basadas en CouchDB están implementadas en empresas como BBC, Apple y CERN.
Las consultas a CouchDB y la indexación de datos pueden realizarse de acuerdo con la paradigma , utilizando el lenguaje JavaScript para formular la lógica de selección de datos. El núcleo del sistema está escrito en Erlang, optimizado para crear sistemas distribuidos que manejen múltiples solicitudes paralelas. El servidor de vistas está escrito en C y se basa en el motor de JavaScript del proyecto Mozilla. El acceso a la base de datos se realiza a través del protocolo HTTP utilizando RESTful JSON API, lo que permite acceder a los datos incluso desde aplicaciones web ejecutadas en el navegador.
Como unidad de almacenamiento de datos, actúa un documento que tiene un identificador único, una versión y contiene un conjunto arbitrario de campos nombrados en formato clave/valor. Para organizar un conjunto de datos pseudo-estructurado a partir de documentos arbitrarios (agregación y formación de selecciones), se aplica la concepción de formación de vistas (view), para cuyas definiciones se utiliza el lenguaje JavaScript. También se pueden definir funciones en JavaScript para verificar la validez de los datos al agregar nuevos documentos en el marco de una vista determinada.
Fuente: opennet.ru
