Amazon Keyspacesのキースペースを作成してみました
Amazon Keyspaces(Apache Cassandra互換のマネージドデータベースサービス)開発者ガイドのチュートリアルをやってみました。
目次
キースペースの作成
マネジメントコンソールのAmazon Keyspacesにアクセスして、[キースペースの作成]ボタンをクリックしました。
キースペースの名前をcatalogにしました。
単一リージョンとして作成しました。
リージョン内の複数AZ(アベイラビリティゾーン)で自動レプリケートされます。
デフォルトで高可用性が実装されていますね。
マルチリージョンにすると最大5つのリージョンへのレプリケーションもできます。
タグをつけて、下にスクロールすると、設定した値込みでCQL(Cassandra クエリ言語)で作成する場合が出力されていました。
キースペースを作成しました。
テーブルの作成
作成したキースペースを選択して[テーブルを作成]をクリックしました。
テーブル名、列名、列タイプを設定しました。
プライマリキーとしてパーティションキーと、ソート可能なクラスタリング列を設定しました。
こちらもCQLが生成されていて、テーブルを作成しました。
マネジメントコンソールで設定してCQLを生成して実行しているイメージですね。
CRUD操作
データを操作するCRUD操作はCQLで実行します。
CloudShellから実行します。
cqlshのインストール
CloudShellにCQlを実行するためのcalshをインストールします。
1 2 |
python3 -m pip install --user cqlsh-expansion |
出力例
Collecting cqlsh-expansion
Downloading cqlsh_expansion-0.9.6-py3-none-any.whl (153 kB)
|████████████████████████████████| 153 kB 1.2 MB/s
Requirement already satisfied: boto3 in /usr/local/lib/python3.9/site-packages (from cqlsh-expansion) (1.35.45)
Collecting cassandra-driver
Downloading cassandra_driver-3.29.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB)
|████████████████████████████████| 4.1 MB 6.1 MB/s
Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.9/site-packages (from cqlsh-expansion) (1.16.0)
Collecting cassandra-sigv4>=4.0.2
Downloading cassandra_sigv4-4.0.2-py2.py3-none-any.whl (9.8 kB)
Requirement already satisfied: botocore<1.36.0,>=1.35.45 in /usr/local/lib/python3.9/site-packages (from boto3->cqlsh-expansion) (1.35.45)
Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /usr/local/lib/python3.9/site-packages (from boto3->cqlsh-expansion) (1.0.1)
Requirement already satisfied: s3transfer<0.11.0,>=0.10.0 in /usr/local/lib/python3.9/site-packages (from boto3->cqlsh-expansion) (0.10.3)
Collecting geomet<0.3,>=0.1
Downloading geomet-0.2.1.post1-py3-none-any.whl (18 kB)
Requirement already satisfied: urllib3<1.27,>=1.25.4 in /usr/local/lib/python3.9/site-packages (from botocore<1.36.0,>=1.35.45->boto3->cqlsh-expansion) (1.26.20)
Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.9/site-packages (from botocore<1.36.0,>=1.35.45->boto3->cqlsh-expansion) (2.9.0.post0)
Requirement already satisfied: click in /usr/local/lib/python3.9/site-packages (from geomet<0.3,>=0.1->cassandra-driver->cqlsh-expansion) (8.1.7)
Installing collected packages: geomet, cassandra-driver, cassandra-sigv4, cqlsh-expansion
Successfully installed cassandra-driver-3.29.2 cassandra-sigv4-4.0.2 cqlsh-expansion-0.9.6 geomet-0.2.1.post1
1 2 |
cqlsh-expansion --version |
バージョン確認しました。
出力
cqlsh 6.1.0
1 2 |
cqlsh-expansion.init |
設定完了のスクリプトを実行しました。
出力例
Initializing .cassandra directory with SSL cert and cqlshrc file in user directory
Directory already exists /home/cloudshell-user/.cassandra
Copying cert from /home/cloudshell-user/.local/lib/python3.9/site-packages/cqlsh_expansion/sf-class2-root.crt to /home/cloudshell-user/.cassandra/sf-class2-root.crt
Copying cqlshrc from /home/cloudshell-user/.local/lib/python3.9/site-packages/cqlsh_expansion/cqlshrc_template to /home/cloudshell-user/.cassandra/cqlshrc
Post installation configuration for expansion utility completed
1 2 |
cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl |
接続しました。
出力例
Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
[cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh current consistency level is ONE.
cqlsh>
整合性の指定
1 2 |
CONSISTENCY LOCAL_QUORUM; |
出力例
Consistency level set to LOCAL_QUORUM.
作成
1つのレコード挿入
1 2 3 |
INSERT INTO catalog.book_awards (award, year, category, rank, author, book_title, publisher) VALUES ('Wolf', 2023, 'Fiction',3,'Shirley Rodriguez','Mountain', 'AnyPublisher') ; |
挿入確認
1 2 |
SELECT * FROM catalog.book_awards ; |
挿入できました。
サンプルファイルをダウンロード
1 2 3 |
wget https://docs.aws.amazon.com/ja_jp/keyspaces/latest/devguide/samples/samplemigration.zip unzip samplemigration.zip |
接続します。
1 2 |
cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl |
キースペースの指定
1 2 |
USE catalog ; |
cqlsh:catalog> となります。
整合性の指定
1 2 |
CONSISTENCY LOCAL_QUORUM; |
CSVからの挿入実行
1 2 |
COPY book_awards (award, year, category, rank, author, book_title, publisher) FROM '/home/cloudshell-user/keyspaces_sample_table.csv' WITH header=TRUE ; |
エラーは出ましたが成功しました。
出力
cqlsh current consistency level is LOCAL_QUORUM.
Reading options from /home/cloudshell-user/.cassandra/cqlshrc:[copy]: {‘numprocesses’: ’16’, ‘maxattempts’: ‘1000’}
Reading options from /home/cloudshell-user/.cassandra/cqlshrc:[copy-from]: {‘ingestrate’: ‘1500’, ‘maxparseerrors’: ‘1000’, ‘maxinserterrors’: ‘-1’, ‘maxbatchsize’: ’10’, ‘minbatchsize’: ‘1’, ‘chunksize’: ’30’}
Reading options from the command line: {‘header’: ‘TRUE’}
Using 16 child processes
Starting copy of catalog.book_awards with columns [award, year, category, rank, author, book_title, publisher].
OSError: handle is closed 0 rows/s; Avg. rate: 0 rows/s
OSError: handle is closed
OSError: [Errno 9] Bad file descriptor
OSError: handle is closed
Processed: 9 rows; Rate: 0 rows/s; Avg. rate: 0 rows/s
9 rows imported from 1 files in 0 day, 0 hour, 0 minute, and 28.110 seconds (0 skipped).
確認できました。
読み取り
特定の列
1 2 |
SELECT award, category, year FROM catalog.book_awards ; |
特定の行
1 2 |
SELECT * FROM catalog.book_awards WHERE year=2020 AND award='Wolf' ; |
更新
1 2 |
UPDATE book_awards SET publisher='new Books' WHERE year = 2020 AND award='Wolf' AND category='Non-Fiction' AND rank=1; |
削除
1 2 |
DELETE book_title FROM catalog.book_awards WHERE year=2020 AND award='Richard Roe' AND category='Fiction' AND rank=1; |
cqlも通常のSQLとほぼ変わりなく実行できました。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
T2.microからT3.nanoに変更(メモリエラーも対応)
このブログのEC2インスタンスをT2.micro 1インスタンスからT3.nan …
-
Amazon Location Service入門ワークショップ-マップの操作
関連記事 Amazon Location Service入門ワークショップの前提 …
-
EC2 プレイスメントグループを試してみました
やったことないのでやってみたやつです。 プレイスメントグループの作成 まず、EC …
-
WordPressの年ごとのブログ投稿数を調べるSQL
毎年年末に使いそうなのでメモです。 [crayon-678f4402d47da5 …
-
「JAWS-UG in AWS Cloud Roadshow 2017 大阪」で運営をしました
AWS Cloud Roadshow 2017 大阪のナイトイベントで、「JAW …
-
AWS Backupで取得したAMIとスナップショットの削除
個人で使っているAWSリソースの断捨離をしてました。 Cloud9も複数アカウン …
-
AWS CDK とにかくサンプルでやってみる
Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …
-
ヤマムギ vol.8 (AWS)EC2でLinuxサーバー構築ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
AWS Storage Gatewayボリュームゲートウェイを作成してWindowsから使用
ボリュームゲートウェイの作成 Storage Gateway作成メニューからボリ …
-
AWS Toolkit for Eclipseをセットアップする
AWSでそろそろ課金がされつつありますので、夜中はインスタンスを自動停止して朝自 …