列指向データベースとは何か?
まず、従来のRDMS(MySQL、Postgress、Oracleなど)は行指向データベースと呼ばれています。
これは行ごとの処理が基本(Insert, Update, Delete)が基本となり、列ごとの集計(MIN、MAX、AVG)は関数として処理された結果として抽出されます。
(左)行指向データベースは,行単位でデータを保持,また取り出しを行います。
(右)列指向データベースは列単位でデータを取得,取り出しを行います。
対して列指向データベースとは、主にデータ分析のために最適化されたデータベースです。
大規模なデータに対する集計処理を高速に行うことが可能です。
列指向データベースのメリット
-
- 列指向データベースはデータ分析のために最適化されたデータベース
列指向データベースのデメリット
整合性
トランザクションをサポートしない。
なのでCommitやRollbackなどの概念が存在しない。
Queryが微妙に異なる
条件句
!= (非等価)
NOT (論理否定)
OR (論理和)
IS NULL/ IS NOT NULL (NULL比較)
JOIN (結合)
OFFSET (相対位置指定)
列指向データベース
Cassandra
Scylla
Amazon SimpleDB
サンプルコマンド集
キースペースの作成
キースペースとは平たく言えばスキーマのこと。
名前空間という認識でよい。
CREATE KEYSPACE user_keyspace WITH replication = {'class': 'SimpleStrategy','replication_factor':3};
これでuser_keyspace
というキースペースができた。
キースペースを確認する。
DESC KEYSPACES
cqlsh:user_keyspace> DESC KEYSPACES keyspace_name system_distributed system_views system system_schema system_virtual_schema system_auth system_traces user_keyspace
キースペースの使用
キースペースを実際に使用するにはUSE
コマンドを使用する。
USE user_keyspace ;
テーブルの作成
通常のsqlと同様、create table
文を使用する。
CREATE TABLE user_keyspace.users ( userid int PRIMARY KEY, first_name text, last_name text);
データの挿入
INSERT INTO users (userid ,first_name, last_name) VALUES (1, 'taro', 'tanaka');
データの確認
SELECT * FROM table_name ;
cqlsh:user_keyspace> SELECT * FROM users ; userid | first_name | last_name --------+------------+----------- 1 | taro | tanaka (1 rows)
page:https://minegishirei.hatenablog.com/entry/2023/07/21/090604