Home > Backend Development > C++ > body text

Announcing General Availability of the C++ SDK for Couchbase

王林
Release: 2024-07-19 16:37:42
Original
478 people have browsed it

Announcing General Availability of the C++ SDK for Couchbase

We are thrilled to announce the General Availability (GA) of the C++ SDKfor Couchbase! This release adds support for native C++ language to our existing comprehensive set of SDK libraries in 11 programming languages and marks a significant milestone in our commitment to providing robust, high-performance tools for developers to build modern, scalable applications. In fact, this C++ SDK is the core library behind our existing Python, NodeJS, Ruby, and PHP SDKs and strives to provide a consistent, performant and efficient experience across all these programming languages.

Why C++ SDK?

C++ remains a vital language for many developers due to its performance, efficiency, and control over system resources. By introducing the C++ SDK, Couchbase empowers developers to leverage these advantages while taking full benefit of Couchbase’s advanced NoSQL capabilities. Here are some key reasons why this release is a game-changer:

Performance

C++ is renowned for its speed and low-level memory management, making it ideal for applications where performance is critical. The C++ SDK for Couchbase ensures that you can build high-performance applications without sacrificing speed or efficiency.

Seamless Integration

The C++ SDK provides seamless integration with Couchbase Server, enabling developers to easily perform operations such as KV operations, SQL++ queries, and transactions. This tight integration ensures that your applications can scale effectively while maintaining high performance.

Modern API Design

The C++ SDK features a modern, idiomatic API that aligns with the latest C++ standards. This makes it not only powerful but also intuitive for C++ developers, reducing the learning curve and allowing you to start building applications quickly.

Key Features

Here are some of the standout features of the C++ SDK for Couchbase:

Easy Connection Management

The C++ SDK simplifies connection management, allowing you to establish and manage connections to your Couchbase cluster with minimal effort. This includes handling connection pooling, load balancing, and failover, ensuring your application remains resilient and performant. This means that the SDK can automatically read the topology of your cluster and provide seamless connections during topology changes such as cluster resizes or cluster upgrades. Below is an example of C++ code to connect to your couchbase database.

// 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();
}
Copy after login

Key-Value (KV) Operation Support

The C++ SDK natively supports performing key value operations. Key-value operations are unique to couchbase and provide very fast CRUD operations for documents stored in couchbase. Below is an example of C++ code to run a simple KV get & upsert of a document.

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();
Copy after login

Rich Query, Search and Vector Search Support

The C++ SDK supports SQL++ queries, full-text search (FTS), and vector search, providing you with powerful tools to perform complex data operations. Whether you need to run sophisticated queries or perform full-text searches, the SDK has you covered.

Query Search

Below is a code snippet to execute a simple SQL++ query to fetch records from airlines collection:

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";
  }
Copy after login

Full Text Search (FTS)

Below is a code snippet to execute a FTS query to do a full text search for “nice restaurants” the index created on the landmark collection:

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";
}
Copy after login

Vector Search

Below is a code snippet to execute a vector search query:

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";
}
Copy after login

Asynchronous Programming

The SDK supports asynchronous programming models, enabling you to build responsive, non-blocking applications. This is particularly useful for high-throughput applications where maintaining responsiveness is essential. Here’s an example of running a transaction in a asynchronous context:

std::shared_ptr<async_attempt_context> ctx) -> couchbase::error {
  ctx->get(
    collection,
    some_id,
    // do something in this transaction
}
Copy after login

Transactions

This new C++ SDK includes support for transactions and replaces our existing C++ transaction support by adding more performance improvements and features. Below is a sample code snippet for create a transaction context:

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”)
}
Copy after login

Robust Error Handling

Error handling is crucial in any application, and the C++ SDK, just like our other SDKs, provides comprehensive error handling capabilities including retry for connection drops, connection pooling and informative error messages. This ensures that you can gracefully handle and recover from errors, enhancing the stability and reliability of your applications.

入門

為了幫助您開始使用 Couchbase 的 C++ SDK,我們在我們的文件網站上準備了詳細的入門指南。以下是如何開始的快速概述:

    • 安裝SDK : 依照文件中的安裝說明在您的開發環境中設定SDK。
    • 連接到您的叢集:連接到您的 Couchbase 叢集。
    • 執行 CRUD 操作、執行查詢並利用 Couchbase 的強大功能。

社區和支持

我們相信社群和開源開發的力量。 Couchbase 的 C++ SDK 是開源的,我們鼓勵您做出貢獻、提供回饋並加入對話。如需支援,如果您是我們的企業許可客戶,您可以透過支援聯繫,否則,您可以存取我們的綜合文件、加入 Couchbase 論壇或 Couchbase Discord,或透過我們的支援入口網站聯繫。

進一步閱讀

要了解更多信息,請查看我們的文檔網站。它更詳細地介紹了 API,特別是圍繞事務和非同步操作,並提供了其他參考資料和示例綁定鏈接,供您深入挖掘:

    • Couchbase C++ SDK 程式碼範例
    • Couchbase C++ SDK 文件
    • 下載並安裝 Couchbase C++ SDK

我們的文件網站上列出了支援的作業系統。

快樂編碼!

Couchbase 團隊

宣布 Couchbase 的 C++ SDK 全面可用的帖子首先出現在 Couchbase 博客上。

The above is the detailed content of Announcing General Availability of the C++ SDK for Couchbase. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!