Базы данных: Apache Cassandra
Apache Cassandraopen in new window (GitHubopen in new window) — колоночная база данных. Cassandra применяется для распределенных систем в которых требуется высокая скорость записи и менее высокие требования к чтению и агрегации данных. Cassandra направлена на OLTP.
Вместо SQL в Cassandra используется CQL (Cassandra Query Language) который очень похож на SQL.
Запуск
Запустить Cassandra проще всего через [docker]https://hub.docker.com/_/cassandra).
docker run -d --name cassandra \
-p 9042:9042 \
cassandra:latest
1
2
3
2
3
Пример на Python
Пример использования библиотеки cassandra-driveropen in new window:
from cassandra.cluster import Cluster
from uuid import uuid4
# Подключение к кластеру Cassandra с указанием порта
cluster = Cluster(['localhost'], port=9042)
session = cluster.connect()
# Создание ключевого пространства
session.execute("""
CREATE KEYSPACE IF NOT EXISTS test_keyspace
WITH REPLICATION = { 'class': 'SimpleStrategy', 'replication_factor': 1 }
""")
# Подключение к созданному ключевому пространству
session.set_keyspace('test_keyspace')
# Создание таблицы
session.execute("""
CREATE TABLE IF NOT EXISTS users (
id UUID PRIMARY KEY,
name text,
age int
)
""")
# Вставка данных
session.execute("""
INSERT INTO users (id, name, age) VALUES (%s, %s, %s)
""", (uuid4(), 'Alice', 30))
session.execute("""
INSERT INTO users (id, name, age) VALUES (%s, %s, %s)
""", (uuid4(), 'Bob', 25))
# Запрос данных
rows = session.execute("SELECT * FROM users")
for row in rows:
print(f'ID: {row.id}, Name: {row.name}, Age: {row.age}')
# ID: e938b62d-fcfa-4da2-82ac-facea5bf3188, Name: Alice, Age: 30
#ID: 9ed6cd1b-d44b-4d28-b5ae-e900f83d42b4, Name: Bob, Age: 25
# Закрытие соединения
cluster.shutdown()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43