- Guilherme de Abreu - RA: 22.222.028-7
Este projeto realiza a migração de dados de um banco de dados PostgreSQL para um banco de dados NoSQL utilizando o DataStax Desktop e criando um docker do Apache Cassandra. Ele manipula informações sobre alunos, professores, cursos, departamentos, disciplinas e grupos de TCC, transferindo esses dados para tabelas otimizadas para consultas específicas.
-
Instalar Dependências:
- Utilize o Python 3.8 até o 3.12 conforme a documentação oficial do datastax, clique aqui.
- Instale as bibliotecas necessárias com o seguinte comando:
pip install psycopg2 cassandra-driver
-
Configurar o PostgreSQL e o DataStax:
- PostgreSQL: Certifique-se de que seu banco de dados PostgreSQL está funcionando corretamente e possui os dados necessários.
- Apache Cassandra: Siga as intruções iniciais no DataStax Desktop, com o docker criado, certifique-se de criar um keyspace.
CREATE KEYSPACE meu_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
-
Rodar os Scripts:
-
Para limpar tabelas existentes no Cassandra, execute:
python limpeza.py
-
Primeiro, popule o banco de dados relacional PostgreSQL com o codigo do meu semestre passado.:
python criacao_tabela.py python data_generator.py
-
Em seguida, execute os scripts para criar tabelas no Cassandra, migrar dados e realizar consultas:
python criacao.py python migracao.py python queries.py
-
- As queries para criar as tabelas no Cassandra estão no arquivo criacao.py.
- O código de migração para o Cassandra está no arquivo migracao.py.
- As consultas que atendem aos requisitos específicos estão no arquivo queries.py.
- Para validar que os dados foram migrados corretamente, execute as queries no arquivo queries.py.
- Também pode usar ferramentas como o CQL Shell no DataStax Desktop e verificar as tabelas.
Armazena informações sobre os alunos, incluindo dados pessoais e situação de graduação.
CREATE TABLE alunos (
id TEXT PRIMARY KEY,
nome TEXT,
email TEXT,
data_nascimento DATE,
data_matricula DATE,
situacao_graduacao BOOLEAN
);Armazena o histórico de disciplinas cursadas por cada aluno.
CREATE TABLE historico_escolar (
aluno_id TEXT,
ano INT,
semestre INT,
disciplina_id TEXT,
nome_disciplina TEXT,
nota_final FLOAT,
PRIMARY KEY (aluno_id, ano, semestre, disciplina_id)
) WITH CLUSTERING ORDER BY (ano DESC, semestre DESC);Armazena informações sobre os professores.
CREATE TABLE professores (
id TEXT PRIMARY KEY,
nome TEXT,
email TEXT,
data_nascimento DATE,
data_contratacao DATE
);Tabela de suporte para facilitar consultas sobre disciplinas ministradas por professores.
CREATE TABLE resumo_disciplinas_professor (
professor_id TEXT,
disciplina_id TEXT,
nome_disciplina TEXT,
ano INT,
semestre INT,
PRIMARY KEY (professor_id, disciplina_id)
);Armazena informações sobre os departamentos.
CREATE TABLE departamentos (
id TEXT PRIMARY KEY,
nome TEXT
);Armazena informações sobre professores que são chefes de departamento.
CREATE TABLE chefes_departamento (
departamento_id TEXT PRIMARY KEY,
professor_id TEXT,
nome_departamento TEXT,
nome_professor TEXT
);Armazena informações sobre os grupos de TCC, incluindo orientador e alunos participantes.
CREATE TABLE grupos_tcc (
grupo_numero TEXT PRIMARY KEY,
alunos LIST<TEXT>,
orientador_id TEXT
);Armazena informações sobre as disciplinas.
CREATE TABLE disciplinas (
id TEXT PRIMARY KEY,
nome TEXT,
cursos LIST<TEXT>
);Armazena informações sobre os cursos.
CREATE TABLE cursos (
id TEXT PRIMARY KEY,
nome TEXT,
departamentos LIST<TEXT>
);Armazena informações sobre os alunos graduados.
CREATE TABLE alunos_graduados (
id TEXT PRIMARY KEY,
nome TEXT,
ano_formatura INT,
semestre_formatura INT
);