Criou página com '== Cassandra == <br> <center>Arquivo:Cassandra.jpg</center> <br><br><br> *Cassandra é uma plataforma open source de banco de dados NoSQL mantida pela Apache *Foi pro...'
 
Sem resumo de edição
 
Linha 4: Linha 4:
<br><br><br>
<br><br><br>


*Cassandra é uma plataforma open source de banco de dados [[NoSQL]] mantida pela Apache
Cassandra é uma plataforma open source de banco de dados [[NoSQL]] mantida pela Apache e baseada no BigTable(Google) e Dynamo(Amazon). Foi criada originalmente pelo Facebook, visando um sistema de banco de dados que pudesse suportar grandes quantidades de informação e que pudesse ser facilmente escalável. Alguns dos aspectos positivos do Cassandra são:
*Foi projetada para trabalhar com grandes cargas de dados por meio de sistemas distribuídos
*Altas escalabilidade e disponibilidade, sem um ponto único de falha
*Os dados são distribuídos em vários servidores, ou nós, que formam um aglomerado
*Rendimento de gravação muito alto e bom rendimento de leitura
*Os nós comunicam-se entre si a todo o momento
*Linguagem de consulta semelhante a SQL (desde 0.8) e suporte para procura por índices secundários
*Consistência ajustável e suporte para replicação
*Esquema flexível
 
[[Arquivo:Modelodedadoscassandra.gif|frame|Modelo de dados do Cassandra]]
<br><br>
 
== Modelo de Dados ==
<br>
 
Cassandra armazena dados de acordo com o modelo de dados de família de colunas, demonstrado na figura ao lado:
 
*Coluna - a unidade mais básica do modelo de dados do Cassandra, contendo um nome, um valor e um registro de data e hora.
*Linha - uma coleção de colunas rotuladas com um nome.
*Família de colunas - uma coleção de linhas rotuladas com um nome.
*Keyspace – um grupo de várias famílias de colunas juntas. É apenas um agrupamento lógico de famílias de colunas e fornece um escopo isolado para nomes.
 
<br><br>
 
== Diferenças quanto ao modelo relacional ==
<br>
 
*No modelo relacional as colunas são homogêneas, existindo um relacionamento vertical claro entre as linhas, diferente do Cassandra que pode ter diferentes colunas em cada linha
*Com o modelo relacional, o esquema é predefinido e não pode ser mudado enquanto estiver em operação, enquanto o Cassandra permite alterações em tempo de execução
*O modelo relacional suporta consultas sofisticadas, como agrupamento de tabelas e diversas funções, já no Cassandra os tipos de consulta possíveis dependem da estrutura do banco e devem ser implementadas na aplicação


<br><br>
<br><br>
Linha 13: Linha 37:
== Arquitetura ==
== Arquitetura ==
<br>
<br>
*O Cassandra foi projetado para trabalhar com grandes cargas de dados por meio de sistemas distribuídos
*Os dados são distribuídos em vários nós. Qualquer nó pode aceitar qualquer solicitação (leitura, gravação ou exclusão) e encaminhá-la ao nó correto, mesmo que os dados não estejam armazenados nesse nó.
*Os nós comunicam-se entre si a todo o momento
*Cassandra é capaz de evitar problemas causados por falha em algum dos servidores, por usar um sistema homogeneamente distribuído. Os nós trocam informação a todo momento por meio de um protocolo gossip a fim de obter e compartilhar informações sobre a localização e o estado de outros nós no aglomerado.
*Cassandra é capaz de evitar problemas causados por falha em algum dos servidores, por usar um sistema homogeneamente distribuído. Os nós trocam informação a todo momento por meio de um protocolo gossip a fim de obter e compartilhar informações sobre a localização e o estado de outros nós no aglomerado.
*Um arquivo de commit log é sequencialmente escrito para rastrear as atividades de entrada de dados, garantindo assim sua durabilidade, logo então os dados são armazenados em uma estrutura na memória que, quando cheia, os escreve no disco. As escritas são então particionadas e replicadas pelo aglomerado.
*Um arquivo de commit log é sequencialmente escrito para rastrear as atividades de entrada de dados, garantindo assim sua durabilidade, logo então os dados são armazenados em uma estrutura na memória que, quando cheia, os escreve no disco. As escritas são então particionadas e replicadas pelo aglomerado.
Linha 18: Linha 45:


<br><br>
<br><br>
== Características ==
<br>
* Escalável:
** Cassandra é incrementalmente e linearmente escalável
** Capacidade pode ser adicionada sem downtime
** O modelo de dados sem esquema aumenta a agilidade no desenvolvimento, aliviando a necessidade de atualizações
* Confiável:
** A falha de múltiplos nós pode ser tolerada
** Nós com falha podem ser trocados sem downtime
** Replicaçao de dados através de data centers é bem suportado
** Falhas de nós dentro do cluster sao monitoradas com um Accrual Style Failure Detector
** Como todos os nós sao simétricos e já que nao possuem nós master, nao existe nenhum SPOF
* Durável:
** Durabilidade é a propriedade que grava os dados, uma vez completados, irao sobreviver permanentemente mesmo face a uma falha de hardware
** Cassandra fornece durabilidade configurável pela adiçao de registros para um commitlog primeiro (que obviamente mantem a necessidade para pesquisa em disco já que esta é uma operaçao sequencial), usando entao a chamada do sistema fsync para nivelar os dados para o disco.
* Analítico sem ETL:
** Trabalhos Hadoop podem ser executados diretamente contra seu cluster
* Tunável:
** Consistencia é tunável por operaçao, permitindo níveis de consistencia para ser nbegociado para resposta rápida quando necessário
** Náo existem leituras ou pesquisas no caminho de gravaçao
** Opçoes de tuning de múltiplos cache permitem otimizaçao relativa a cargas de trabalho e modelos de dados específicos.
<br>

Edição atual tal como às 10h46min de 27 de maio de 2015

Cassandra





Cassandra é uma plataforma open source de banco de dados NoSQL mantida pela Apache e baseada no BigTable(Google) e Dynamo(Amazon). Foi criada originalmente pelo Facebook, visando um sistema de banco de dados que pudesse suportar grandes quantidades de informação e que pudesse ser facilmente escalável. Alguns dos aspectos positivos do Cassandra são:

  • Altas escalabilidade e disponibilidade, sem um ponto único de falha
  • Rendimento de gravação muito alto e bom rendimento de leitura
  • Linguagem de consulta semelhante a SQL (desde 0.8) e suporte para procura por índices secundários
  • Consistência ajustável e suporte para replicação
  • Esquema flexível
Modelo de dados do Cassandra



Modelo de Dados


Cassandra armazena dados de acordo com o modelo de dados de família de colunas, demonstrado na figura ao lado:

  • Coluna - a unidade mais básica do modelo de dados do Cassandra, contendo um nome, um valor e um registro de data e hora.
  • Linha - uma coleção de colunas rotuladas com um nome.
  • Família de colunas - uma coleção de linhas rotuladas com um nome.
  • Keyspace – um grupo de várias famílias de colunas juntas. É apenas um agrupamento lógico de famílias de colunas e fornece um escopo isolado para nomes.



Diferenças quanto ao modelo relacional


  • No modelo relacional as colunas são homogêneas, existindo um relacionamento vertical claro entre as linhas, diferente do Cassandra que pode ter diferentes colunas em cada linha
  • Com o modelo relacional, o esquema é predefinido e não pode ser mudado enquanto estiver em operação, enquanto o Cassandra permite alterações em tempo de execução
  • O modelo relacional suporta consultas sofisticadas, como agrupamento de tabelas e diversas funções, já no Cassandra os tipos de consulta possíveis dependem da estrutura do banco e devem ser implementadas na aplicação



Arquitetura


  • O Cassandra foi projetado para trabalhar com grandes cargas de dados por meio de sistemas distribuídos
  • Os dados são distribuídos em vários nós. Qualquer nó pode aceitar qualquer solicitação (leitura, gravação ou exclusão) e encaminhá-la ao nó correto, mesmo que os dados não estejam armazenados nesse nó.
  • Os nós comunicam-se entre si a todo o momento
  • Cassandra é capaz de evitar problemas causados por falha em algum dos servidores, por usar um sistema homogeneamente distribuído. Os nós trocam informação a todo momento por meio de um protocolo gossip a fim de obter e compartilhar informações sobre a localização e o estado de outros nós no aglomerado.
  • Um arquivo de commit log é sequencialmente escrito para rastrear as atividades de entrada de dados, garantindo assim sua durabilidade, logo então os dados são armazenados em uma estrutura na memória que, quando cheia, os escreve no disco. As escritas são então particionadas e replicadas pelo aglomerado.
  • Essa estrutura permite que qualquer usuário autorizado conecte-se a qualquer nó e acesse os dados usando a linguagem CQL (Cassandra Query Language).