最近書かれたブログで、開発者がそれぞれの言語API/SDKを使用して、Couchbase 7.0でデータ構造(リスト、マップなど)をどのように使うかのアウトラインが説明されている。
ほとんどのNoSQLデータベースと同様に、Couchbaseは元々、キーと値のペア、次にキーとドキュメント(通常はJSONまたは同様の形式のドキュメント)のためのデータストアを意図されていた。今では、データ構造で使用できるようになり、開発者にとってより使いやすくなった。ほとんどのNoSQLデータベースは、元々単純なキー/値とキー/ドキュメントのペアのシナリオを対象としていたが、よりプログラミング言語で使いやすいデータ構造をサポートするように進化した。プログラマーは、それぞれのデータモデルからデータ構造に、またはその逆に変換する負担があった。そのため、ボイラープレートコードを多く書く必要があった。
ドキュメントとカウンターに加えて、Couchbase言語APIは次の基本的なデータ構造をサポートするようになった。
- リスト
- マップ
- セット
- キュー
内部的には、Couchbaseはデータ構造をJSONドキュメントとして編成し、クラスター全体に分散して、それぞれの言語APIを介して言語ネイティブのデータ構造として利用できるようになる。以下のいくつかの例では、Couchbase Python SDKでデータ構造を使用する方法を示している。
まず、Pythonを使用したqueue
の例を見ていく。以下のDoc IDはfibonacci
であり、以下に示すように、値0、1、1をそれぞれプッシュする。
cb.queue_push("fibonacci", 0, create=True) # [0]
cb.queue_push("fibonacci", 0) # [0, 0]
cb.queue_push("fibonacci", 1) # [0, 0, 1]
cb.queue_size("fibonacci") # 3
cb.queue_pop("fibonacci") # 0 (in FIFO order)
cb.queue_pop("fibonacci") # 0
cb.queue_pop("fibonacci") # 1
同様に、以下はList APIの使用例である。
cb.list_append("qbs", "tom", create=True) # ["tom"]
cb.list_prepend("qbs", "josh") # ["josh","tom"]
cb.list_append("qbs", "patrick") # ["josh","tom", "patrick"]
cb.list_append("qbs", "aaron") # ["josh","tom", "patrick", "aaron"]
cb.list_size("qbs") # 4
cb.list_get("qbs", 0) # josh
cb.list_remove("qbs", 0) # ["tom", "patrick", "aaron"]
cb.list_get("qbs", 0) # tom
cb.list_get("qbs", 2) # aaron
以下に示すように、Map APIを使用してそれぞれの値をJSONドキュメントにすることができる。.
cb.map_add("quarterbacks", "bills", {'name': 'Josh Allen', 'age': 24}, Create=True)
cb.map_add("quarterbacks", "bucs", {'name': 'Tom Brady', 'age': 43})
cb.map_add("quarterbacks", "chiefs", {'name': 'Patrick Mahomes', 'age': 25})
cb.map_add("quarterbacks", "packers", {'name': 'Aaron Rogers', 'age': 37})
cb.map_get("quarterbacks", "chiefs") # {'name': 'Patrick Mahomes', 'age': 25}
Python用のその他のデータ構造APIは、データ構造のドキュメントで確認できる。以下に要約されている。
同様のAPIは、Couchbaseでサポートされている他の言語のSDKでも利用できる。
要約すると、Couchbaseとそれに付随する言語APIにより、開発者は容易にデータ構造APIを使用してデータ構造を永続化および取得できるようになる。APIとドキュメントのチートシートは、Couchbaseを使い始め、アプリケーションに組み込むために利用できる。