⚙️ CHAVES: PARTITION KEY VS CLUSTERING KEY
A essência de toda a magia distribuída, de por que o Cassandra alcança performance na casa dos milissegundos operando em Petabytes, jaz inteiramente no Design Matemático da sua Primary Key Composta (Chave Primária). 🛡️🧩
Objetivo: Diferenciar o comportamento físico dos discos quando criamos Partition Keys (Localizador Global de Nó) e Clustering Keys (Localizador Magnético Interno / Ordem).
📗 PASSO 1: A Dissecção da Chave Primária CQL
Na linguagem CQL, a Primary Key base não significa "Valor Único Aleatório Auto-Increment" como estamos moldados a pensar no MySQL Clássico. Aqui, uma "Chave Primária" é o controle total sobre o Motor Físico do cluster.
Se declararmos a tabela pedidos_by_cliente:
CREATE TABLE pedidos_by_cliente (
cliente_id UUID,
data_compra TIMESTAMP,
produto TEXT,
valor DECIMAL,
PRIMARY KEY ((cliente_id), data_compra)
);
- A primeira parte isolada em parênteses
(cliente_id)é a Partition Key (K-Hash). - A segunda parte
data_compraé a Clustering Key (K-Ordem).
📗 PASSO 2: O Agrupamento de Discos Virtuais
O papel vital dessas chaves para o desenvolvedor Cloud:
- Partition Key (A Viagem Geográfica): Determina em GIGABYTES ONDE (em qual computador/Nó físico de Tóquio, NY ou SP) aquele registro viverá. Registros com o mesmo
cliente_idcairão infalivelmente no mesmo servidor da rede. - Clustering Key (A Viagem Magnética): Uma vez que fomos enviados ao Nó correto de Tóquio, ela dita a Ordem exata em que as linhas serão gravadas fisicamente juntas lado a lado. Por padrão (ASC).
⚠️ NÃO EXISTE JOIN NO CASSANDRA! Portanto, agrupar fisicamente (Via Partition e Clustering) os dados que você deseja resgatar na sua tela inicial se torna vitalícia a regra do engenheiro da Alta Disponibilidade.
📗 PASSO 3: Lógica Visual do Motor (Diagrama de Chato)
Abaixo vemos as dependências matemáticas geradas pela criação exata de chaves. O Nó que reter a Partição "X" reterá todas as ordenações magnéticas vinculadas a essa "Partição K".
📊 Modelagem Híbrida de Escala
erDiagram
TABELA_PEDIDOS ||--o{ REGISTRO_FISICO : "Contém (Via Partition/Clustering)"
TABELA_PEDIDOS {
UUID cliente_id "PK (Partition_Key) - Hashing Token"
TIMESTAMP data_compra "CK (Clustering_Key) - Order ASC"
TEXT produto "Payload Data"
DECIMAL valor "Payload Data"
}
REGISTRO_FISICO {
Disco log_sequencial_node
Ordenamento data_crescente
}
💡 Dica de Engenheiro: Um "Ponto de Atenção" fatal na carreira de um Analista de Dados Distribuído! Ao criar a Query, o
WHEREno Cassandra é Obrigatório e Engessado. Você não pode buscar com umWHERE data_compra = Xsem ANTES dizerWHERE cliente_id = Y. Você precisa informar primeiro ao Motor Distribuído qual país ele deve ir voar (Partition), para então ele ordenar e varrer a porta. 🚀🛡️