lançamento da base de dados orientada a documentos distribuída , relacionada à classe de sistemas NoSQL. Os códigos-fonte do projeto estão sob a licença Apache 2.0.
, implementados no Apache CouchDB 3.0:
- Foi reforçada a segurança na configuração padrão.
Agora, ao iniciar, deve obrigatoriamente ser definido um usuário admin, sem o qual o servidor encerrará com erro (solucionando problemas de servidores que, por descuido, deixavam acesso sem autenticação). Para chamadas a “/_all_dbs” agora é necessário ter privilégios de administrador, e todos os bancos de dados são criados por padrão acessíveis apenas para o usuário admin (os parâmetros de acesso podem ser alterados através do objeto “_security”). A edição de objetos no banco de dados _users é desabilitada por padrão; - a possibilidade de criação de bancos de dados segmentados (particionados) definidos pelo usuário, permitindo estabelecer regras próprias de distribuição de documentos por segmentos (intervalo de shard). Foram adicionadas otimizações especiais para bancos de dados segmentados em visões e índices Mango;
- modo de divisão automática ao segmentar (sharding). Agora é possível redistribuir dados entre segmentos considerando o aumento do fator q, aplicado para determinar o nível de divisão;
- subsistema ken para indexação em segundo plano automática e manutenção atualizada de índices secundários (JavaScript, Mango, índices de busca textual) sem a necessidade de iniciar explicitamente operações de construção;
- Processo smoosh reescrito completamente, aplicado para empacotar automaticamente bancos de dados;
- Uma nova subsistema foi proposta , aplicada para alterar a prioridade de entrada/saída para operações específicas;
- Sistema de testes de regressão implementado;
- Suporte oficial adicionado para plataformas arm64v8 (aarch64) e ppc64le (ppc64el);
- Suporte adicionado ao motor JavaScript SpiderMonkey 1.8.5 (ramo ESR do Firefox 60) com suporte aprimorado a ES5, ES6 e ES2016+;
- Incluído o motor de busca baseado em Lucene, que simplifica significativamente a implantação de um sistema de busca baseado em CouchDB;
- Adicionado backend para registro de logs usando systemd-journald;
- Adicionada a configuração “[couchdb] single_node” na qual, ao ser instalada, o CouchDB criará automaticamente bancos de dados do sistema se estes não existirem;
- O desempenho do processo couch_server foi otimizado;
- O instalador para a plataforma Windows foi significativamente aprimorado;
- O tamanho das visualizações é limitado a 2^28 (268435456) resultados. Este limite pode ser configurado separadamente para visualizações normais e segmentadas usando as opções query_limit e partition_query_limit na seção «[query_server_config]»;
- A interface HTTP separada para gerenciar o nó local, que operava na porta de rede 5986, foi removida, e sua funcionalidade agora está disponível através da interface de gerenciamento do cluster;
- O tamanho máximo do documento foi reduzido para 8 MB, o que pode causar problemas de replicação de dados de servidores antigos após a atualização para CouchDB 3.0. Para aumentar esse limite, pode-se utilizar a configuração «[couchdb] max_document_size»;
- Uma extensa limpeza de recursos obsoletos foi realizada, como chamadas _replicator e _external, os campos disk_size e data_size, e a opção delayed_commits;
- Agora, para executar o CouchDB, é necessário o Erlang/OTP 20.3.8.11+, 21.2.3+ ou 22.0.5. Teoricamente, a compatibilidade com a versão Erlang/OTP 19 foi mantida, mas ela é coberta por testes.
Lembramos que o CouchDB armazena dados em formato de lista ordenada e permite realizar replicação parcial de dados entre vários bancos de dados em modo 'mestre-mestre', com detecção e resolução simultâneaa de conflitos. Cada servidor armazena seu próprio conjunto local de dados, que é sincronizado com outros servidores, que podem ser colocados em modo offline e replicar as alterações periodicamente. Especialmente, essa capacidade torna o CouchDB uma solução atraente para organizar a sincronização de configurações de programas entre diferentes computadores. Soluções baseadas em CouchDB foram implementadas em empresas como BBC, Apple e CERN.
Consultas ao CouchDB e indexação de dados podem ser executadas de acordo com a paradigma , usando a linguagem JavaScript para formar a lógica de recuperação de dados. O núcleo do sistema é escrito em Erlang, otimizado para criar sistemas distribuídos que atendem a múltiplas solicitações paralelas. O servidor de visualizações é escrito em C e se baseia no mecanismo JavaScript do projeto Mozilla. O acesso ao banco de dados é feito através do protocolo HTTP, utilizando a API RESTful JSON, permitindo o acesso aos dados também de aplicações web executadas no navegador.
Uma unidade de armazenamento de dados é um documento que possui um identificador único, uma versão e contém um conjunto arbitrário de campos nomeados no formato chave/valor. Para organizar um conjunto de dados pseudo-estruturado a partir de documentos arbitrários (agregação e formação de seleções), é aplicada a concepção de formação de visões (view), cuja definição utiliza a linguagem JavaScript. Em JavaScript, também é possível definir funções para verificar a validade dos dados ao adicionar novos documentos dentro de uma determinada visão.
Fonte: opennet.ru
