É com grande satisfação que anunciamos a disponibilidade geral (GA) do SDK C++ para o Couchbase! Esta versão adiciona suporte para a linguagem C++ nativa ao nosso conjunto abrangente existente de Bibliotecas do SDK em 11 linguagens de programação e representa um marco significativo em nosso compromisso de fornecer ferramentas robustas e de alto desempenho para que os desenvolvedores criem aplicativos modernos e dimensionáveis. De fato, esse SDK C++ é a biblioteca principal por trás de nosso Python, NodeJS, Rubie PHP SDKs e se esforça para oferecer uma experiência consistente, eficiente e de alto desempenho em todas essas linguagens de programação.
Por que o SDK do C++?
O C++ continua sendo uma linguagem vital para muitos desenvolvedores devido ao seu desempenho, eficiência e controle sobre os recursos do sistema. Com a introdução do SDK C++, o Couchbase permite que os desenvolvedores aproveitem essas vantagens e, ao mesmo tempo, tirem o máximo proveito dos recursos avançados de NoSQL do Couchbase. Veja a seguir alguns dos principais motivos pelos quais esse lançamento é um divisor de águas:
Desempenho
O C++ é conhecido por sua velocidade e gerenciamento de memória de baixo nível, o que o torna ideal para aplicativos em que o desempenho é fundamental. O SDK C++ para Couchbase garante que você possa criar aplicativos de alto desempenho sem sacrificar a velocidade ou a eficiência.
Integração perfeita
O SDK C++ oferece integração perfeita com o Couchbase Server, permitindo que os desenvolvedores executem facilmente operações como operações KV, consultas SQL++ e transações. Essa integração estreita garante que seus aplicativos possam ser dimensionados com eficiência, mantendo o alto desempenho.
Design moderno de API
O SDK C++ apresenta uma API moderna e idiomática que se alinha aos mais recentes padrões C++. Isso o torna não apenas avançado, mas também intuitivo para os desenvolvedores de C++, reduzindo a curva de aprendizado e permitindo que você comece a criar aplicativos rapidamente.
Principais recursos
Aqui estão alguns dos recursos de destaque do SDK C++ para Couchbase:
Fácil gerenciamento de conexões
O SDK C++ simplifica gerenciamento de conexõespermitindo que você estabeleça e gerencie conexões com o cluster do Couchbase com o mínimo de esforço. Isso inclui a manipulação do pooling de conexões, o balanceamento de carga e o failover, garantindo que seu aplicativo permaneça resiliente e com bom desempenho. Isso significa que o SDK pode ler automaticamente a topologia do seu cluster e fornecer conexões contínuas durante alterações na topologia, como redimensionamento ou atualização do cluster. Abaixo está um exemplo de código C++ para conectar-se ao seu banco de dados couchbase.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Attempt to connect to the Couchbase cluster auto [connect_err, cluster] = couchbase::cluster::connect(config.connection_string, options).get(); if (connect_err) { // Output the error message if connection fails std::cout << "Unable to connect to the cluster. Error code: " << connect_err.message() << "\n"; } else { auto collection = cluster.bucket(config.bucket_name) .scope(config.scope_name) .collection(config.collection_name); // d something interesting cluster.close().get(); } |
Suporte à operação de chave-valor (KV)
O SDK do C++ suporta nativamente a execução de operações de valor-chave. As operações de valor-chave são exclusivas do couchbase e fornecem operações CRUD muito rápidas para documentos armazenados no couchbase. Abaixo está um exemplo de código C++ para executar uma KV simples obter e upsert de um documento.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
auto collection = cluster.bucket(config.bucket_name) .scope(config.scope_name) .collection(config.collection_name); // KV- get auto record = collection.get(document_id); std::cout << record.content_as() << "\n"; // create a new document const std::string document_id{ "minimal_example" }; const tao::json::value basic_doc{ { "a", 1.0 }, { "b", 2.0 }, }; // KV auto [err, resp] = collection.upsert(document_id, basic_doc, {}).get(); if (err.ec()) { std::cout << "ec: " << err.message() << ", "; } else { std::cout << "id: " << document_id << ", CAS: " << resp.cas().value() << "\n"; } cluster.close().get(); |
Suporte avançado a consultas, pesquisas e pesquisas vetoriais
O SDK C++ oferece suporte a Consultas SQL++, pesquisa de texto completo (FTS), e pesquisa vetorialO SDK é uma ferramenta poderosa para executar operações de dados complexas. Não importa se você precisa executar consultas sofisticadas ou fazer pesquisas de texto completo, o SDK tem tudo o que você precisa.
Pesquisa de consulta
Abaixo está um trecho de código para executar um simples Consulta SQL++ para buscar registros da coleção de companhias aéreas:
|
1 2 3 4 5 6 |
auto scope = cluster.bucket(config.bucket_name).scope(config.scope_name); auto [err, resp] = scope.query("SELECT * FROM airline LIMIT 10").get(); std::cout << "--- Iterating as JSON objects:\n"; for (auto row : resp.rows_as_json()) { std::cout << "Airline(id: " << row["airline"]["id"] << ", name: \"" << row["airline"]["name"] << "\")\n"; } |
Pesquisa de texto completo (FTS)
Abaixo está um trecho de código para executar um Consulta FTS para fazer uma pesquisa de texto completo para "bons restaurantes" o índice criado na coleção de referência:
|
1 2 3 4 5 6 7 8 9 10 |
auto scope = cluster.bucket(config.bucket_name).scope(config.scope_name); auto [err, resp] = scope .search("travel-inventory-landmarks", couchbase::search_request(couchbase::query_string_query("nice restaurants")), couchbase::search_options{}.fields({ "content" })) .get(); for (const auto& row : resp.rows()) { auto fields = row.fields_as<couchbase::codec::tao_json_serializer>(); std::cout << "score: " << row.score() << ", id: \"" << row.id() << "\", content: \"" << fields["content"].get_string() << "\"\n"; } |
Pesquisa de vetores
Abaixo está um trecho de código para executar um pesquisa vetorial consulta:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
auto scope = cluster.bucket(config.bucket_name).scope(config.scope_name); // weights could be retrieved from your llm model or openAI std::vector<double> weights{ 0.1, 0.2, 0.3, 0.4 }; auto [err, resp] = scope .search("travel-inventory-landmarks", couchbase::search_request(couchbase::vector_search( couchbase::vector_query(field_name, weights)))) .get(); for (const auto& row : resp.rows()) { auto fields = row.fields_as<couchbase::codec::tao_json_serializer>(); std::cout << "score: " << row.score() << ", id: \"" << row.id() << "\", content: \"" << fields["content"].get_string() << "\"\n"; } |
Programação assíncrona
O SDK oferece suporte a programação assíncrona permitindo que você crie aplicativos responsivos e sem bloqueio. Isso é particularmente útil para aplicativos de alto rendimento em que a manutenção da capacidade de resposta é essencial. Veja a seguir um exemplo de execução de uma transação em um contexto assíncrono:
|
1 2 3 4 5 6 |
std::shared_ptr<async_attempt_context> ctx) -> couchbase::error { ctx->get( collection, some_id, // do something in this transaction } |
Transações
Esse novo SDK C++ inclui suporte para transações e substitui nosso suporte a transações C++ existente, acrescentando mais recursos e aprimoramentos de desempenho. Abaixo está um exemplo de trecho de código para criar um contexto de transação:
|
1 2 3 4 |
std::shared_ptr<couchbase::transactions::attempt_context> ctx) -> couchbase::error { ctx.insert(collection, "doc-a", nlohmann::json({})); couchbase::transactions::transaction_get_result doc_a = ctx->get( collection, “doc-a”) } |
Tratamento robusto de erros
Tratamento de erros é crucial em qualquer aplicativo, e o SDK do C++, assim como nossos outros SDKs, oferece recursos abrangentes de tratamento de erros, incluindo novas tentativas para quedas de conexão, pooling de conexões e mensagens de erro informativas. Isso garante que você possa manipular e se recuperar de erros de forma elegante, aumentando a estabilidade e a confiabilidade dos seus aplicativos.
Primeiros passos
Para ajudá-lo a começar a usar o SDK C++ para Couchbase, preparamos um guia de introdução detalhado em nosso site de documentação. Aqui está uma visão geral rápida de como começar:
-
- Instalar o SDK: Siga as instruções de instalação na documentação para configurar o SDK em seu ambiente de desenvolvimento.
- Conecte-se ao seu cluster: Conecte-se ao seu cluster do Couchbase.
- Executar Operações CRUD, executar consultase aproveitando os recursos avançados do Couchbase.
Comunidade e suporte
Acreditamos no poder da comunidade e no desenvolvimento de código aberto. O SDK C++ para o Couchbase é de código abertoe incentivamos você a contribuir, fornecer feedback e participar da conversa. Para obter suporte, se você for nosso cliente licenciado empresarial, poderá entrar em contato por meio do suporte; caso contrário, poderá acessar nosso abrangente documentação, junte-se ao Fóruns do Couchbase ou Discórdia do Couchbaseou entre em contato por meio de nosso portal de suporte.
Leitura adicional
Para saber mais, consulte nosso site de documentação. Ele detalha mais a API, especialmente no que se refere a transações e operações assíncronas, e fornece outros materiais de referência e links de vinculação de amostra para você se aprofundar:
Sistemas operacionais suportados estão listados em nosso site de documentação.
Boa codificação!
A equipe do Couchbase