リストへのデータの挿入と更新
リストへのデータの挿入または更新方法。
データを格納するためのリストがテーブルに指定されている場合は、INSERT
またはUPDATE
を使用してデータを入力します。
手順
-
値を角かっこで囲んでデータをリストに挿入します。
INSERT INTO cycling.upcoming_calendar (year, month, events) VALUES (2015, 06, ['Criterium du Dauphine','Tour de Suisse']);
-
UPDATE
コマンドを使用して、値をリストに挿入します。要素を角かっこで囲み、加算(+)演算子を使用して、リストの先頭に1つの要素を追加します。cqlsh> UPDATE cycling.upcoming_calendar SET events = ['The Parx Casino Philly Cycling Classic'] + events WHERE year = 2015 AND month = 06;
-
新しい要素データと
UPDATE
コマンドのリスト名の順序を入れ替えて、リストに1つの要素を追加します。cqlsh> UPDATE cycling.upcoming_calendar SET events = events + ['Tour de France Stage 10'] WHERE year = 2015 AND month = 06;
これらの更新操作は、書き込み前の読み取りなしに内部で実装されます。リストの先頭および末尾に新しい要素を追加すると、新しい要素のみが書き込まれます。 -
角かっこで囲んだリストのインデックス位置を使用して、特定の位置に1つの要素を追加します。
cqlsh> UPDATE cycling.upcoming_calendar SET events[2] = 'Vuelta Ciclista a Venezuela' WHERE year = 2015 AND month = 06;
要素を特定の位置に追加するために、Cassandraではリスト全体を読み取ってから、新しいインデックス位置にシフトする必要のあるリストの部分を再度書き込みます。その結果として、特定の位置への要素の追加は、リストの末尾または先頭に要素を追加する場合に比べてレイテンシーが長くなります。 -
リストから要素を削除し、
DELETE
コマンドと、角かっこで囲んだリストのインデックス位置を使用します。たとえば、最後のステップでリストに配置したイベントを削除します。cqlsh> DELETE events[2] FROM cycling.upcoming_calendar WHERE year = 2015 AND month = 06;
インデックス位置を使用してリストから要素を削除するには、内部読み取りが必要です。さらに、クライアント側アプリケーションでは、リスト全体を読み取り、削除する値を検索することによってのみインデックス位置を検出できるため、操作のレイテンシーが増えます。操作の完了前に別のスレッドまたはクライアントがリストの先頭に要素を追加した場合には、誤ったデータが削除されます。 -
UPDATEコマンド、減算演算子(-)、角かっこで囲んだリスト値を使用して、特定の値を持つすべての要素を削除します。
cqlsh> UPDATE cycling.upcoming_calendar SET events = events - ['Tour de France Stage 10'] WHERE year = 2015 AND month = 06;
前の例ではなく、この例に示すようにUPDATE
コマンドを使用することを推奨します。その方が安全で高速であるためです。