Estamos encantados de anunciar la Disponibilidad General (AG) del SDK PARA C ¡para Couchbase! Esta versión añade soporte para el lenguaje nativo C++ a nuestro completo conjunto de Bibliotecas SDK en 11 lenguajes de programación y marca un hito importante en nuestro compromiso de ofrecer herramientas sólidas y de alto rendimiento para que los desarrolladores creen aplicaciones modernas y escalables. De hecho, este kit de desarrollo de software para C++ es la biblioteca central de nuestro actual kit de desarrollo de software para C++. Python, NodeJS, Rubyy PHP SDK y se esfuerza por ofrecer una experiencia coherente, eficaz y eficiente en todos estos lenguajes de programación.
¿Por qué C++ SDK?
C++ sigue siendo un lenguaje vital para muchos desarrolladores debido a su rendimiento, eficiencia y control sobre los recursos del sistema. Con la introducción del SDK de C++, Couchbase permite a los desarrolladores aprovechar estas ventajas y sacar el máximo partido de las avanzadas capacidades NoSQL de Couchbase. Estas son algunas de las razones por las que esta versión cambia las reglas del juego:
Rendimiento
C++ es conocido por su velocidad y su gestión de memoria de bajo nivel, lo que lo hace ideal para aplicaciones donde el rendimiento es crítico. El SDK de C++ para Couchbase garantiza que puedas crear aplicaciones de alto rendimiento sin sacrificar la velocidad ni la eficiencia.
Integración perfecta
El SDK de C++ proporciona una integración perfecta con Couchbase Server, permitiendo a los desarrolladores realizar fácilmente operaciones como operaciones KV, consultas SQL++ y transacciones. Esta estrecha integración garantiza que tus aplicaciones puedan escalar eficazmente manteniendo un alto rendimiento.
Diseño moderno de API
El SDK de C++ presenta una API moderna e idiomática que se ajusta a los últimos estándares de C++. Esto hace que no solo sea potente, sino también intuitivo para los desarrolladores de C++, lo que reduce la curva de aprendizaje y permite empezar a crear aplicaciones rápidamente.
Características principales
Estas son algunas de las características más destacadas del SDK de C++ para Couchbase:
Gestión sencilla de las conexiones
El SDK de C++ simplifica gestión de conexioneste permite establecer y gestionar conexiones a tu clúster de Couchbase con el mínimo esfuerzo. Esto incluye el manejo de la agrupación de conexiones, el equilibrio de carga y la conmutación por error, lo que garantiza que tu aplicación siga siendo resistente y tenga un buen rendimiento. Esto significa que el SDK puede leer automáticamente la topología de su clúster y proporcionar conexiones sin problemas durante los cambios de topología, tales como cambios de tamaño de clúster o actualizaciones de clúster. A continuación se muestra un ejemplo de código C++ para conectarse a su base de datos 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(); } |
Soporte de operaciones clave-valor (KV)
El SDK de C++ soporta de forma nativa la realización de operaciones clave-valor. Las operaciones clave-valor son exclusivas de couchbase y proporcionan operaciones CRUD muy rápidas para documentos almacenados en couchbase. A continuación se muestra un ejemplo de código C++ para ejecutar una simple KV consiga & upsert de un 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(); |
Soporte enriquecido para consultas, búsquedas y búsquedas vectoriales
El SDK de C++ admite Consultas SQL, búsqueda de texto completo (FTS), y búsqueda vectorialle proporciona potentes herramientas para realizar operaciones de datos complejas. Tanto si necesita ejecutar consultas sofisticadas como realizar búsquedas de texto completo, el SDK tiene todo lo que necesita.
Búsqueda de consultas
A continuación se muestra un fragmento de código para ejecutar un simple Consulta SQL para obtener registros de la colección de aerolíneas:
|
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"; } |
Búsqueda de texto completo (FTS)
A continuación se muestra un fragmento de código para ejecutar un Consulta FTS para realizar una búsqueda de texto completo de "buenos restaurantes" el índice creado en la colección de puntos de referencia:
|
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"; } |
Búsqueda vectorial
A continuación se muestra un fragmento de código para ejecutar un búsqueda vectorial 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"; } |
Programación asíncrona
El SDK admite programación asíncrona lo que permite crear aplicaciones con capacidad de respuesta y sin bloqueos. Esto es especialmente útil para aplicaciones de alto rendimiento en las que es esencial mantener la capacidad de respuesta. He aquí un ejemplo de ejecución de una transacción en un contexto así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 } |
Transacciones
Este nuevo SDK de C++ incluye compatibilidad con transacciones y reemplaza nuestro soporte de transacciones C++ existente añadiendo más mejoras de rendimiento y características. A continuación se muestra un fragmento de código de ejemplo para crear un contexto de transacción:
|
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”) } |
Gestión de errores robusta
Tratamiento de errores es crucial en cualquier aplicación, y el SDK de C++, al igual que nuestros otros SDK, proporciona funciones completas de gestión de errores, como reintentos en caso de caída de la conexión, agrupación de conexiones y mensajes de error informativos. De este modo, podrá gestionar los errores con elegancia y recuperarse de ellos, mejorando la estabilidad y fiabilidad de sus aplicaciones.
Primeros pasos
Para ayudarte a empezar con el SDK de C++ para Couchbase, hemos preparado una detallada guía de inicio en nuestro sitio web de documentación. Aquí tienes un resumen rápido de cómo empezar:
-
- Instalar el SDK: Siga las instrucciones de instalación de la documentación para configurar el SDK en su entorno de desarrollo.
- Conéctese a su clúster: Conéctese a su clúster Couchbase.
- Realice Operaciones CRUD, ejecutar consultasy aprovechando las potentes funciones de Couchbase.
Comunidad y apoyo
Creemos en el poder de la comunidad y el desarrollo de código abierto. El SDK de C++ para Couchbase es de código abiertoy le animamos a que contribuya, aporte sus comentarios y se una a la conversación. Para obtener asistencia, si es cliente con licencia para empresas, puede ponerse en contacto con nosotros a través del servicio de asistencia. documentaciónúnete al Foros de Couchbase o Couchbase Discordo a través de nuestro portal de asistencia.
Lecturas complementarias
Para obtener más información, consulte nuestro sitio web de documentación. En ella encontrarás más información sobre la API, especialmente sobre transacciones y operaciones asíncronas, así como material de referencia y enlaces a enlaces de ejemplo para que puedas profundizar en el tema:
Sistemas operativos compatibles figuran en nuestro sitio web de documentación.
¡Feliz codificación!
El equipo de Couchbase