C++ SDKfor Couchbase の一般提供 (GA) を発表できることを嬉しく思います。このリリースでは、11 のプログラミング言語の既存の包括的な SDK ライブラリ セットにネイティブ C++ 言語のサポートが追加され、最新のスケーラブルなアプリケーションを構築するための堅牢で高性能なツールを開発者に提供するという当社の取り組みにおける重要なマイルストーンとなります。実際、この C++ SDK は、既存の Python、NodeJS、Ruby、および PHP SDK の背後にあるコア ライブラリであり、これらすべてのプログラミング言語にわたって一貫したパフォーマンスと効率的なエクスペリエンスを提供するよう努めています。
C++ は、そのパフォーマンス、効率性、システム リソースの制御により、多くの開発者にとって依然として重要な言語です。 C++ SDK を導入することで、Couchbase は開発者がこれらの利点を活用しながら、Couchbase の高度な NoSQL 機能を最大限に活用できるようになります。このリリースがゲームチェンジャーである主な理由をいくつか示します:
C++ はその速度と低レベルのメモリ管理で知られており、パフォーマンスが重要なアプリケーションに最適です。 C++ SDK for Couchbase を使用すると、速度や効率を犠牲にすることなく、高パフォーマンスのアプリケーションを構築できます。
C++ SDK は Couchbase Server とのシームレスな統合を提供し、開発者が KV 操作、SQL++ クエリ、トランザクションなどの操作を簡単に実行できるようにします。この緊密な統合により、アプリケーションは高いパフォーマンスを維持しながら効果的に拡張できます。
C++ SDK は、最新の C++ 標準に準拠した最新の慣用的な API を備えています。これにより、C++ 開発者にとって強力なだけでなく直感的なものとなり、学習曲線が短縮され、アプリケーションの構築を迅速に開始できるようになります。
ここでは、Couchbase 用 C++ SDK の優れた機能をいくつか紹介します。
C++ SDK は接続管理を簡素化し、最小限の労力で Couchbase クラスターへの接続を確立および管理できるようにします。これには、接続プーリング、負荷分散、フェイルオーバーの処理が含まれており、アプリケーションの回復力とパフォーマンスを確保します。これは、SDK がクラスターのトポロジを自動的に読み取り、クラスターのサイズ変更やクラスターのアップグレードなどのトポロジーの変更中にシームレスな接続を提供できることを意味します。以下は、couchbase データベースに接続するための C++ コードの例です。
// 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(); }
C++ SDK は、キー値操作の実行をネイティブにサポートしています。キーと値の操作は couchbase に固有であり、couchbase に保存されているドキュメントに対して非常に高速な CRUD 操作を提供します。以下は、ドキュメントの単純な KV 取得と更新/挿入を実行する C++ コードの例です。
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();
C++ SDK は SQL++ クエリ、全文検索 (FTS)、およびベクトル検索をサポートし、複雑なデータ操作を実行するための強力なツールを提供します。高度なクエリを実行する必要がある場合でも、全文検索を実行する必要がある場合でも、SDK が対応します。
以下は、航空会社のコレクションからレコードを取得するための単純な SQL++ クエリを実行するコード スニペットです。
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"; }
以下は、FTS クエリを実行して、ランドマーク コレクションに作成されたインデックス「素敵なレストラン」の全文検索を実行するコード スニペットです。
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"; }
以下は、ベクトル検索クエリを実行するコード スニペットです:
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"; }
SDK は非同期プログラミング モデルをサポートしており、応答性の高いノンブロッキング アプリケーションを構築できます。これは、応答性の維持が不可欠な高スループットのアプリケーションに特に役立ちます。以下は、非同期コンテキストでトランザクションを実行する例です:
std::shared_ptr<async_attempt_context> ctx) -> couchbase::error { ctx->get( collection, some_id, // do something in this transaction }
この新しい C++ SDK にはトランザクションのサポートが含まれており、パフォーマンスの向上と機能を追加することで既存の C++ トランザクション サポートを置き換えます。以下は、トランザクション コンテキストを作成するためのサンプル コード スニペットです:
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”) }
エラー処理はどのアプリケーションでも重要です。C++ SDK は、他の SDK と同様に、接続ドロップの再試行、接続プーリング、有益なエラー メッセージなどの包括的なエラー処理機能を提供します。これにより、エラーを適切に処理して回復できるようになり、アプリケーションの安定性と信頼性が向上します。
C++ SDK for Couchbase を使い始めるのに役立つように、ドキュメント Web サイトに詳細なスタート ガイドを用意しました。開始方法の簡単な概要は次のとおりです:
私たちはコミュニティとオープンソース開発の力を信じています。 Couchbase 用の C++ SDK はオープンソースです。貢献し、フィードバックを提供し、会話に参加することをお勧めします。サポートについては、エンタープライズ ライセンスを取得した顧客の場合はサポート経由で問い合わせることができます。そうでない場合は、包括的なドキュメントにアクセスするか、Couchbase フォーラムまたは Couchbase Discord に参加するか、サポート ポータル経由で問い合わせることができます。
詳細については、ドキュメント Web サイトをご覧ください。 API、特にトランザクションと非同期操作について詳しく説明し、さらに深く掘り下げるための他の参考資料とサンプル バインディングのリンクを提供します。
サポートされているオペレーティング システムは、ドキュメント Web サイトにリストされています。
コーディングを楽しんでください!
Couchbase チーム
Couchbase 用 C++ SDK の一般提供を発表するという投稿は、The Couchbase Blog に最初に掲載されました。
以上がCouchbase 用 C++ SDK の一般提供の発表の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。