Na primavera de 2020, lançamos a última reformulação do SDK do Couchbase: 3.0. Com o lançamento do Couchbase Server 6.5.0 e oferecendo suporte experimental antecipado para Scopes e Collections, ele também incluiu uma API completamente nova e consistência entre as diferentes plataformas. Embora o SDK 3.0 tenha sido um marco significativo na história do Couchbase, ele foi apenas mais um aprimoramento incremental para os desenvolvedores que trabalham com o Couchbase Server. O Couchbase Server continua a evoluir, adicionando novos recursos, e é por isso que agora estamos lançando o Couchbase SDK 3.1.0 com ainda mais aprimoramentos para coisas como o suporte ao FTS Geo Polygon e o Bucket Durability Management, entre outros.
Esta publicação analisa cada novo recurso adicionado em todos os SDKs do Couchbase. Os exemplos estão em C#, mas espere implementações idiomáticas semelhantes em todos os SDKs, seja em Java, Go ou outra linguagem.
Suporte ao polígono geográfico do FTS
Para aumentar os dois tipos de consultas geográficas, Distância do ponto e Retângulo delimitado, já suportado pelo Couchbase, na versão 6.5.0 Consultas de polígonos delimitados geograficamente foi adicionado. As consultas Point Distance são úteis para encontrar coisas como restaurantes perto de você e distância ordenada perto de você. As consultas Bounded Rectangle ajudam a encontrar restaurantes dentro de um limite retangular específico próximo a você, como um quarteirão. As consultas Geo Bounded Polygon permitem encontrar restaurantes dentro de um polígono delimitado aleatório usando uma matriz de pares de coordenadas como parâmetros de entrada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var consulta = novo GeoPolygonQuery(novo Lista<Coordenar> { Coordenar.DeLatLon(37.79393211306212, -122.44234633404847), Coordenar.DeLatLon(37.779958817339967, -122.43977141339417), Coordenar.DeLatLon(37.788031092020155, -122.42925715405579), Coordenar.DeLatLon(37.79026946582319, -122.41149020154114), Coordenar.DeLatLon(37.79571192027403, -122.40735054016113), Coordenar.DeLatLon(37.79393211306212, -122.44234633404847) }).Campo("geo"); var resultados = aguardar agrupamento.SearchQueryAsync("food-idx", consulta); antes de (var resultado em resultados) { //fazer algo com os resultados. } |
Você pode ler mais sobre as consultas do Geo Polygon em esta postagem do blog.
Gerenciamento da durabilidade da caçamba
Garantias de nível de durabilidade persistência para documentos; se um documento foi ou não persistido no disco e em quantas réplicas ele foi gravado.
Nas versões mais antigas do Couchbase Server e do SDK, as configurações de nível de durabilidade só podiam ser fornecidas por meio da operação K/V. Isso poderia se transformar rapidamente em um processo repetitivo e mundano, especialmente no caso em que as garantias de persistência deveriam ser as mesmas em todos os documentos de um Bucket. A partir do Couchbase Server 6.6, agora podemos adicionar Durabilidade como uma configuração no nível do Bucket. O Couchbase Server 6.6 adiciona durabilidade no nível do bucket, o que permite que uma determinada durabilidade seja aplicada a todos os documentos em um bucket. No Couchbase SDK 3.1.0, continuamos a oferecer suporte aos SDKs usando a API de gerenciamento de bucket.
1 2 3 4 5 6 7 8 9 10 11 |
var configurações = novo Configurações do balde { Nome = nome, Tipo de balde = Tipo de balde.Couchbase, RamQuotaMB = 100, Política de despejo = EvictionPolicyType.FullEviction, DurabilidadeNível Mínimo = Nível de durabilidade.Maioria }; // criar aguardar gerenciador de balde.CreateBucketAsync(configurações).ConfigureAwait(falso); |
Os níveis de durabilidade suportados são:
- Maioria - o documento deve ter sido replicado para a maioria dos nós configurados em um cluster
- MajorityAndPersistActive (Maioria e Persistência Ativa) - o mesmo que Majority, mas o documento também deve ser mantido no nó ativo para que os requisitos de durabilidade sejam atendidos.
- PersistToMajority (Persistir para a maioria) - o documento deve ser persistido em uma maioria dos nós configurados no disco.
O nível de persistência padrão é nenhum, mas você ainda pode especificar o nível de durabilidade na inserção ou atualização do documento.
Gerenciamento de baldes efêmeros
Esse recurso permite que a política de despejo de documentos seja definida para os Buckets efêmeros na criação usando a API de gerenciamento. Agora, há suporte para as seguintes políticas de despejo:
- Despejo da NRU - Quando a cota de memória é atingida, o Couchbase Server ejeta os dados que não foram usados recentemente.
- Sem despejo - O Couchbase Server mantém todos os dados até que sejam explicitamente excluídos, mas rejeitará todos os novos dados se você atingir a cota (memória dedicada) definida para o seu bucket.
Aqui está um exemplo de configuração de NRU Eviction:
1 2 3 4 5 6 7 8 9 10 |
var gerenciador de balde = agrupamento.Baldes; var configurações = novo Configurações do balde { Nome = "alguns-balde", Tipo de balde = Tipo de balde.Efêmera, RamQuotaMB = 100, Política de despejo = EvictionPolicyType.Não usado recentemente }; aguardar gerenciador de balde.CreateBucketAsync(configurações).ConfigureAwait(falso); |
O padrão é No Eviction se não for especificado.
Índice FTS Flex
Índice FTS Flex
Índice Flex oferece ao desenvolvedor a capacidade de usar o Couchbase Query Service para aproveitar os recursos de pesquisa. Por exemplo, o N1QL usa índices B-Tree porque eles têm seletividade e o FTS usa índices invertidos que fornecem baixa seletividade ou "fuzziness"; o Flex Index permite que você combine consultas exatas e fuzzy simplesmente fornecendo uma dica ao serviço sobre qual comportamento você deseja. No SDK, essa funcionalidade é exposta por meio da configuração de um sinalizador simples no objeto QueryOptions que informa ao serviço N1QL para considerar o uso de qualquer índice FTS para atender à consulta.
1 2 3 4 5 6 |
var resultado = aguardar agrupamento.QueryAsync<dinâmico>("SELECT * FROM `default` WHERE type=$name;", opções => { opções.Parâmetro("name" (nome), "pessoa"); opções.FlexIndex(verdadeiro); }).ConfigureAwait(falso); |
Para usar os índices flexíveis, basta definir a propriedade ou o método FlexIndex na classe QueryOptions.
Parâmetro de pontuação FTS
Como otimização, a pontuação agora pode ser desativada ao fazer consultas de pesquisa. Isso é exposto como um parâmetro de bloco de opções passado:
1 2 3 4 5 6 |
var resultados = aguardar agrupamento.SearchQueryAsync(IndexName, novo MatchQuery("pousada"), opções => { opções.Limite(10); opções.DisableScoring (Desativar pontuação)(verdadeiro); }); |
A pontuação será desativada se true for passado, caso contrário, será incluída na resposta.
GetResult.Expiry foi descontinuado
Finalmente, GetResult.Expiry
foi descontinuado e substituído por GetResult.ExpiryTime
que especifica uma instância no tempo, em vez de uma duração.
Comentários, por favor!
Esses são os novos recursos que foram adicionados ao Couchbase SDK 3.1 para o Couchbase Server 6.6 e 7.0. Esperamos que eles sejam úteis e sinta-se à vontade para fornecer feedback em nosso fóruns ou faça uma pergunta a um especialista em Couchbase.