PythonでCassandraを操作!初心者でもできるデータの読み書き基本ガイド
生徒
「Pythonを使って、Apache Cassandraというデータベースにデータを保存したり、中身を見たりしたいです!難しいのでしょうか?」
先生
「大丈夫ですよ。Cassandraは巨大なデータを扱うのが得意なNoSQLデータベースですが、Pythonから操作する命令は意外とシンプルなんです。」
生徒
「データを読み書きする時の決まった書き方があるんですか?」
先生
「はい。基本となる追加、取得、更新、削除のやり方があります。まずはデータの入れ物を作るところから、ゆっくり学んでいきましょう!」
1. Cassandraのデータ操作の仕組みをイメージしよう
Apache Cassandra(アパッチ・カッサンドラ)は、大量の情報を整理して保管するのが得意なデータベースです。パソコンを触ったことがない方には、「巨大な名簿」をイメージしてもらうと分かりやすいでしょう。この名簿には、名前や住所といった項目が横に並び、一人ひとりのデータが縦に積み重なっています。
Pythonを使ってこの名簿に書き込みをする際、CQL(Cassandra Query Language)という専用の言葉を使います。これは、データベースに対して「この行に新しい人を追加して!」や「この人の年齢を教えて!」とお願いするための言葉です。Pythonのプログラムの中に、このCQLという魔法の言葉を書き込むことで、自由自在にデータを読み書きできるようになります。
2. データの住所!キースペースとテーブルの基本
データを読み書きする前に、まずはデータの「住所」を指定する必要があります。Cassandraでは、一番大きな区切りをキースペース(Keyspace)と呼びます。これは、家でいうところの「部屋」のようなものです。そして、その部屋の中に置かれている、実際にデータを書き込む表のことをテーブル(Table)と呼びます。
例えば、「リビング」という部屋(キースペース)の中に「家計簿」という表(テーブル)があるようなイメージです。Pythonから操作するときは、まずどの部屋(キースペース)を使うかを決め、その中にあるどの表(テーブル)に書き込むかを指定します。この二段階の指定を最初に行うことで、たくさんのデータがあっても迷わずに操作ができるようになります。
3. データを新しく追加する:INSERT命令の基本
表に新しいデータを書き込むことを、専門用語でインサート(INSERT)と呼びます。これは、名簿の新しい行に鉛筆で情報を書き加える作業です。Pythonでは execute という命令を使って、Cassandraに「これを追加してね」と伝えます。
以下のプログラムは、ユーザーの名前と年齢を保存する例です。命令文の中に「どの項目に」「どんな値を入れるか」を順番に書いていきます。プログラミング未経験の方でも、この型を覚えればすぐにデータを増やしていくことができますよ。
from cassandra.cluster import Cluster
# Cassandraに接続
cluster = Cluster(['127.0.0.1'])
session = cluster.connect('my_keyspace')
# データを追加する命令(INSERT)
# user_idが1、名前が「田中」、年齢が25のデータを入れます
query = "INSERT INTO users (user_id, name, age) VALUES (1, '田中', 25)"
session.execute(query)
print("データの追加が完了しました!")
4. 保存されたデータを読み出す:SELECT命令の使い方
次に、保存したデータを確認してみましょう。これをセレクト(SELECT)と呼びます。これは名簿の中から特定の人の情報を「見つけ出して読み上げる」作業です。全てのデータを見ることもできますし、特定の項目だけを選んで見ることもできます。
Pythonでこの命令を実行すると、Cassandraが該当するデータをまとめて返してくれます。届いたデータは for という仕組みを使って、一人ずつ順番に画面に表示させていきます。まるで、先生がクラス名簿を一人ずつ読み上げて出席を取るような流れに似ていますね。
# ユーザー全員の名前と年齢を取り出す命令(SELECT)
rows = session.execute("SELECT name, age FROM users")
# 取り出したデータを1行ずつ表示します
for row in rows:
print(f"お名前: {row.name}, 年齢: {row.age}歳")
お名前: 田中, 年齢: 25歳
5. 条件に合うデータだけを探す:WHERE句での絞り込み
名簿が数万人分になったとき、全員分を読み上げるのは大変です。「IDが1番の人だけ見せて」といったように条件を付けるときに使うのが WHERE(ウェア) という言葉です。これを使えば、膨大なデータの中からお目当ての情報を一瞬で探し出せます。
Cassandraは非常に高速ですが、この「条件付きの検索」を行うときには、主キー(Primary Key)という、データ一人ひとりを区別するための特別な番号(背番号のようなもの)を使うのがルールです。このルールを守ることで、どんなにデータが増えても迷子にならずに情報を読み取ることができます。
# user_idが1の人だけを特定して探します
user_id = 1
query = f"SELECT name FROM users WHERE user_id = {user_id}"
result = session.execute(query)
# 見つかった結果を表示
for row in result:
print(f"ID {user_id} のお名前は {row.name} です。")
6. 既存のデータを書き換える:UPDATE命令の手順
「誕生日が来たので年齢を1歳増やしたい」「引っ越したので住所を変えたい」という時に使うのが、 アップデート(UPDATE) です。これは名簿に書かれた内容を消しゴムで消して、新しい情報に書き直す作業です。
この時も「誰の情報を変えるのか」をしっかり指定しないと、全員の情報が変わってしまうような事故が起きかねません。そのため、先ほどの WHERE を使って、「どの行を書き換えるか」を厳密に指示します。Pythonからこの命令を送ることで、常に最新の状態を保つことができます。
# IDが1の人の年齢を26歳に更新します
query = "UPDATE users SET age = 26 WHERE user_id = 1"
session.execute(query)
print("データの更新が完了しました。")
7. 不要になったデータを消去する:DELETE命令
退会したユーザーの情報など、いらなくなったデータを消すのが デリート(DELETE) です。名簿からその人の行を丸ごと切り取るようなイメージです。削除はやり直すことができないため、慎重に行う必要があります。
Pythonで削除を行う際も、対象を特定するために WHERE を使います。特定の項目(例えば住所だけ)を消すこともできますし、その人に関する全ての情報を一度に消すことも可能です。データベースを整理整頓して、常に使いやすい状態にしておくために欠かせない操作です。
# IDが1の人のデータを完全に削除します
query = "DELETE FROM users WHERE user_id = 1"
session.execute(query)
print("指定されたデータを削除しました。")
8. データの種類に合わせた注意点:データ型
Cassandraに書き込むときは、データの「種類」に気を付ける必要があります。これをデータ型と呼びます。文字を保存したいときは ' '(シングルクォーテーション)で囲む必要がありますが、数字の場合は囲まずにそのまま書きます。
例えば、名前の「田中」は文字なので '田中' と書きますが、年齢の 25 は数字なのでそのまま書きます。もし数字を入れるべき場所に文字を入れてしまうと、Cassandraは「種類が違います!」とエラーを出して受け取ってくれません。初心者の方は、まずこの「文字か数字か」の区別を意識することから始めましょう。
9. Cassandraならではの書き込みの速さ:分散の恩恵
Cassandraは、実は「書き込み」が世界トップクラスで速いデータベースです。なぜそんなに速いのかというと、データを一つの場所に溜め込まず、複数のサーバーに「分散」して一斉に書き込むからです。これを分散処理と呼びます。
Pythonから一つの INSERT 命令を送った裏側で、Cassandraは効率よくデータをコピーして保存してくれます。これにより、何百万人もの人が同時に書き込みをしても、アプリが止まることなくスムーズに動き続けることができます。この力強い安定感こそが、Cassandraが選ばれる理由です。
10. 安全な操作のために:実行後の確認
最後に、データの読み書きを行った後は、本当に正しく反映されたかを確認する習慣をつけましょう。書き込んだ直後に SELECT 命令を使ってみて、画面に期待通りのデータが出てくるかチェックするのです。
もし思った通りにいかない場合は、スペルミスがないか、キースペースの名前が合っているか、セミコロンを忘れていないかなどを見直します。一つひとつ確認しながら進めることで、未経験の方でも着実にCassandraを使いこなせるようになります。Pythonという強力な道具を使って、データの海を自由に冒険してみてくださいね!