Sincronização entre ElasticSearch e Cassandra
Criar um virtualenv (virtualenv ou virtualenvwrapper) e instalar as dependencias desse desafio:
pip install -r requirements.txt
O arquivo simb_runner.py
fica responsável por iniciar o script de sincronização. Por padrão, o script ira verificar mudanças a cada 10 segundos.
python simb_runner.py start
ou se quiser mudar o tempo de verificação:
python simb_runner.py start --interval n # n = intervalo de verificações em segundos
A partir desse momento, qualquer novo registro ou alteração em tabelas/indices definidas no datamodel ou fora dele, serão sincronizados em ambos os bancos.
Os seguintes pacotes foram usados como dependências:
- APScheduler - Agendador de tarefas escrita em Python
- click - Interface de linha de comando escrita em Python
- cassandra-driver - Modulo Python do Cassandra
- cqlengine - Object Mapper do Cassandra
- elasticsearch - Modulo Python do ElasticSearch
- elasticsearch-dsl - Object Mapper do ElasticSearch
- blist - Dependencia direta do cassandra-driver
.
|-- README.md
|-- requirements.txt
|-- simb_daemon.py
|-- simb_datamodel
| |-- __init__.py
| |-- config_datamodel.py
| |-- simb_cassandra.py
| `-- simb_elasticsearch.py
`-- simb_runner.py
1 directory, 8 files
simb_daemon.py
: Contém manipuladores do Cassandra e Elasticsearch e classe que executa a tarefa de sincronização.simb_runner.py
: Contém interface da linha de comandosimb_datamodel/config_datamodel.py
: Cria conexão com Cassandra e Elasticsearch, criando tabelas e indices.simb_datamodel/simb_cassandra.py
: Contém data model do Cassandra e dicionario com os tipos CQL, mapeados com os tipos Pythonsimb_datamodel/simb_elasticsearch.py
: Contém data model com Elasticsearch