e timestamp. Todos os dados são armazenados em columns. A column não precisa ser criada em arquivo de configuração, basta inserir uma nova column com chave/valor que o banco de dados cria automaticamente. Column - ['id']['chave'] = ['valor']- SuperColumn: Armazena chave = chave/valor/timestamp. É como se fosse um conjunto de columns. A SuperColumn na verdade é uma ColumnFamily do tipo Super. Possui duas chaves. SuperColumn - ['id']['chave1']['chave2'] = valor- ColumnFamily: É uma família de colunas, ou seja, é o agrupamento de várias chave = valor. É necessário criar a ColumnFamily dentro das configurações do cassandra (storage-conf.xml). Ou seja, as Columns ficam armazenadas em uma ColumnFamily.Exemplo:ColumnFamily: Usuarios['junior']['login'] = ['junior'] ['junior']['nome'] = ['Nivaldo'] ['junior']['sobrenome'] = ['Montenegro'] ['junior']['email'] = ['nivaldomjunior@gmail.com'] ['usuario2']['login'] = ['usuario2'] ['usuario2']['nome'] = ['Fulano'] ['usuario2']['sobrenome'] = ['de tal'] ['usuario2']['email'] = ['fulano@gmail.com'] ['usuario2']['fone'] = ['(83)1234-1234'] Usuarios = { // ColumnFamily junior: { // Esta é a chave da CF (id) // Dentro da CF podemos ter um número infinito de chave/valor login: "junior", nome: "Nivaldo", sobrenome: "Montenegro", email: "phatduckk@example.com", }, // Fim usuario2: { // Esta é a chave para outra linha na CF (id) // Podemos inserir outro número infinito de chave/valor e não precisa ter as mesmas chaves/valor que outras linhas da CF login: "junior", nome: "Nivaldo", sobrenome: "Montenegro", email: "phatduckk@example.com", fone: "(83) 1234-1234" }, }- KeySpace: É um conjunto de ColumnFamily. Analogamente, é como se fosse um banco de dados criado dentro do cassandra. É necessário realizar configurações no arquivo storage-conf.xml para criar as KeySpaces e realizar um restart no Cassandra.Evoluindo o exemplo dado para a ColumnFamily, podemos transformar a ColumnFamily em uma SuperColumn e termos dados mais organizados sobre os clientes.Exemplo SuperColumn:Exemplo:SuperColumn: Agenda['junior']['amigo1']['nome'] = ['Amigo 1']['junior']['amigo1']['telefone'] = ['(88)1234-1234']['junior']['amigo2']['nome'] = ['Amigo 2']['junior']['amigo2']['telefone'] = ['(99)4312-4312']['usuario2']['amigox']['nome'] = ['amigox']['usuario2']['amigox']['telefone'] = ['(77)9987-0987']['usuario2']['amigoy']['nome'] = ['Amigo y']['usuario2']['amigoy']['email'] = ['fulano@gmail.com']['usuario2']['amigoy']['fone'] = ['(83)1234-1234'] Agenda = { // SuperColumn junior: { // ColumnFamily amigo1: { //Chave da ColumnFamily // Dentro da CF podemos ter um número infinito de chave/valor nome: "Amigo 1", telefone: "(88)1234-1234", } //Fim do amigo1 amigo2: { //Outra chave na ColumnFamily nome: "Amigo 2", telefone: "(99)4312-4312", } // Fim do amigo 2 }, // Fim da CF junior usuario2: { // Outra ColumnFamily amigox: { //Chave da ColumnFamily // Podemos inserir outro número infinito de chave/valor e não precisa ter as mesmas chaves/valor que outras linhas da CF nome: "amigox", telefone: "(77)99870987", } //Fim amigox amigoy: { //Outra CF nome: "Amigo Y", fone: "(83)1234-1234" email: "fulano@gmail.com", } //Fim amigoy }, //Fim da CF usuario2}Ou seja, temos os seguintes níveis no Cassandra:KeySpaces ColumnFamily Columns SuperColumn ColumnFamily Columns Um fato importante é que as buscas necessariamente precisam ser realizadas usando os índices, ou seja, as chaves das ColumnFamilys. Não tem como fazermos as consultas usando os valores finais das chaves diretamente no banco de dados. Para isso é necessário buscarmos todos os dados e realizarmos a consulta usando a linguagem de programação. Por isso, é extremamente importante criar índices que realmente sejam utilizados e não usar números sequencias como costumamos fazer nos campos id das tabelas em um banco de dados tradicional.3- Configurando o cassandra para atender o exemplo