Crud com Cassandra

BDNRAula02ModelagemNaoRelacional.pdf

TDC The Dev Conference

DESC keyspace;
USE default_keyspace;

CREATE TABLE mercadoria (
	categoria TEXT,
	id_mercadoria UUID,
	nome TEXT,
	valor DECIMAL,
	PRIMARY KEY (categoria, ID_MERCADORIA));
)
INSERT INTO mercadoria (categoria, nome, valor, id_mercadoria)
VALUES ('ALIMENTO','Presunto',15, now());

INSERT INTO mercadoria (categoria, nome, valor, id_mercadoria)
VALUES ('LIMPEZA','Desinfetante',5.5, now()); -- 2x

INSERT INTO mercadoria (categoria, nome, valor, id_mercadoria)
VALUES ('LIMPEZA','Pudim',5.5, now());

Criar a tabela RECEITA com nome_receita TEXT, data DATE, revisor TEXT, avaliacao INT e comentario TEXT.

CREATE TABLE receita (
		nome_receita TEXT,
		data DATE,
		revisor TEXT,
		avaliacao INT,
		comentario TEXT,
	PRIMARY KEY ((nome_receita), data, revisor)
)
WITH CLUSTERING ORDER BY (data DESC, revisor ASC)
INSERT INTO receita (nome_receita, data, revisor, avaliacao, comentario)
VALUES ('Pizza', '2024-04-01', 'João Pedro One', 10, 'Gostei da Pizza...');

INSERT INTO receita (nome_receita, data, revisor, avaliacao, comentario)
VALUES ('Pizza', '2024-04-01', 'João Pedro Two', 6, 'Poderia ser melhor...');

INSERT INTO receita (nome_receita, data, revisor, avaliacao, comentario)
VALUES ('Pastel', '2024-04-04', 'Gabriel One', 9, 'Poderia ser mais receado...') IF NOT EXISTS;

Atualização da nota de 6 para 9

UPDATE receita SET avaliacao = 8
WHERE nome_receita = 'Pizza'
AND data = '2024-04-01'
AND revisor = 'João Pedro Two'
IF avaliacao = 6;

Batches (Execução de várias instruções de forma atomica). Menos sobrecarga pois parte do mesmo nó usando comandos DML.

  1. Não tem rollback
  2. Não é uma transação, apesar de ser atômica
BEGIN BATCH
INSERT INTO receita (nome_receita, data, revisor, avaliacao, comentario)
VALUES ('Bolacha', '2024-04-02', 'Augusto', 7, 'Deliciosa');
INSERT INTO receita (nome_receita, data, revisor, avaliacao, comentario)
VALUES ('Café', '2024-04-03', 'Dioules', 0, 'Muito bom, odeie');
APPLY BATCH;

Begin Batch 
insert into receita (nome_receita, data, revisor, avaliacao, comentario) 
values ('Bolacha Maisena', '2024-04-04', 'Augusto', 10, 'Deliciosa'); 
Insert into receita (nome_receita, data, revisor, avaliacao, comentario) 
values ('Cafe', '2024-04-04', 'Jules', 7, 'Quente'); 
apply Batch;

Criação de índice chamado idx_receita para a coluna revisor

CREATE INDEX idx_receita

SET: conj. de dados onde armazenamos um grupo de elementos ELIMINANDO os valores duplicados

LIST: conj. de dados onde armazenamos um grupo de elementos, INCLUINDO os valores duplicados


Criar uma tabela aluno com matricula int, nome TEXT

CREATE TABLE aluno (
	matricula INT,
	nome TEXT,
	data DATE,
	email SET<TEXT>,
	curso LIST<TEXT>,
	PRIMARY KEY (matricula, nome)
);
INSERT INTO aluno (matricula, nome, data, email, curso)
VALUES (11, 'Shophia', '2024-04-04', {'[email protected]', '[email protected]'}, ['CD', 'CD'])

Alterar a tabela aluno acrescentando a nita

ALTER TABLE aluno