ポイント: CassandraでのJSONの使用は、ユーザーがJSON形式でデータを書き込むことを可能にすることで柔軟なデータ管理を実現します。このガイドには、キー空間とテーブルの作成、データの挿入、およびJSON構文を使用したクエリの例が含まれています。
- JSON形式でのデータの保存と書き込みをサポートします。
- JSON構文を使用してテーブルを作成し、レコードを挿入するための例が含まれています。
CassandraはJSONをサポートしています。当然のことながら、JSONテキストをCassandraのテキスト列に保存できます。しかし、ここで意味するのはそれだけではありません。ここでは、JSONを使用してCassandraテーブルに書き込むことができるということです。
例を示します。まず、キー空間を作成します。
create keyspace json with REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 2 };
シンプルなJSONの例
三つの列を持つテーブルを作成しましょう。そして、JSONキーワードを使用してデータを書き込みます。これにより、CassandraはJSON値を列名にマッピングします。これは、JSONで期待される通りです。
create table books (isbn text primary key, title text, publisher text);
insert into books JSON '{"isbn": "123",
"title": "The Magic Mountain",
"publisher": "Knofp"}';
次に、データをリストします。それは通常のカラムデータのように見え、JSONではありません。なぜなら、それは通常のデータだからです。私たちは単にJSONを使用して追加しただけであり、これはデータがしばしばJSONとして表現されるため便利です。
select * from books;
isbn | publisher | title
------+-----------+--------------------
123 | Knofp | The Magic Mountain
ネストされたJSON
より複雑な例を示します。顧客レコードには、リスト型の販売タイプがあります。明らかに、顧客は複数の販売を持つでしょう。したがって、これはそれを表現する良い方法です。
まず、販売タイプを作成します。次に、顧客テーブルを作成します。各販売取引は変更できないため、FROZENキーワードを使用する必要があります。つまり、それは不変です。販売取引を変更したい場合は、それを削除してから再追加する必要があります。
use json;
CREATE type json.sale ( id int, item text, amount int );
CREATE TABLE json.customers ( id int PRIMARY KEY, name text, balance int, sales list> );
今、値を追加します。販売アイテムはリストなので、1つ以上を追加できます。
INSERT INTO json.customers (id, name, balance, sales)
VALUES (123, 'Greenville Hardware', 700,
[{ id: 5544, item : 'tape', amount : 100},
{ id: 5545, item : 'wire', amount : 200}]) ;
アイテムをリストします。JSON内のキー値の周りに疑問符はないことに注意してください。これは、JSONオブジェクトであるためです。
select * from customers;
id | balance | name | sales
-----+---------+---------------------+--------------------------------------------------------------------------------
123 | 700 | Greenville Hardware | [{id: 5544, item: 'tape', amount: 100}, {id: 5545, item: 'wire', amount: 200}]
これをJSON文字列に変換したい場合は、toJson()を使用します。
select id, toJson(sales) from customers;
id | system.tojson(sales)
-----+--------------------------------------------------------------------------------------------
123 | [{"id": 5544, "item": "tape", "amount": 100}, {"id": 5545, "item": "wire", "amount": 200}]
Cassandraガイド
これらの投稿は私自身の意見であり、BMCの立場、戦略、または意見を必ずしも代表するものではありません。