Skip to content

Repository files navigation

img.png

SqlToNoSQL

NoSQL

Neo4j => OK | Funcional
Mongo => Parcial (Requer otimização)
Cassandra => Parcial (Requer otimização) | Não testado
Redis => Parcial (Requer otimização) | Não testado
SimpleDB => Parcial (Requer otimização) | Não testado
Voldemor => Parcial (Requer otimização) | Não testado

Rodando Programa

  • Baixar DOCKER
  • Rodar Arquivo docker-compose.yml, instâncias dos bancos de dados utlizados (Mongo e Neo4j)
docker-compose up docker-compose.yml
  • MONGO: acessível através do localhost:8081 (utilizado para armazenar dicionario)
    • User: root
    • PWS: root
  • NEO4J(Enterprise): acessível através da localhost:7474
    • User: neo4j
    • PWS: pAsSw0rD
  • API SQLTONOKEYNOSQL: é possível utilizar o SWAGGER, POSTAM ou a Interface Web.
  • O arquivo bd_matConstru.sql contém alguns exemplos de SQL
  • O arquivo Setup contém exemplo de utilização da API com JS

PASSOS

1 Criar Conexão com SGBD através da rota POST/no-sql-target

Através do GET/connectors é possível obter os SGBDs suportados Dados de conexão Neo4j

{
"connector": "NEO4J",
"name": "neo4j",
"password": "pAsSw0rD",
"url": "bolt://localhost:7687",
"user": "neo4j"
}

É possivel verificar criaçao através GET/no-sql-targets

2 Criar e definir o banco de dados através POST/database

{
"name": "bd_matConstru",
"connector": "NEO4J"
}

É possivel verificar criaçao através GET/databases

É possível verificar se está definido através GET/current-database

2.1 Alterar o banco de execução através POST/current-database

{
"name": "bd_matConstru",
"connector": "NEO4J"
}

3 Rodar os Scripts através /query

É possível executar arquivos SQL através /query-file-sql-script

  • Exemplo
createtablefuncao(
id_funcao intnot nullprimary key auto_increment,
desc_funcao varchar(50),
salario double,
carga_horaria varchar(30)
);

Entrada API

{
"value": "create table funcao(id_funcao int not null primary key auto_increment,desc_funcao varchar(50),salario double,carga_horaria varchar(30));"
}

4 Realizando o Transferência para Banco NoSQL

A camada não faz a leitura automatica das definições das tabelas de um banco.

4.1 Script DDL

  • CREATE
  • ALTER
  • DROP

4.1 Script DML

  • INSERT
  • UPDATE
  • SELECT
  • DELETE

5 Sintaxe Suportada

O Parse SQL utilizado suporta um conjunto limitado de sintaxe, para mais detalhes JSqlParser.

Exemplo utilizados no Experimento:

CREATE

CREATETABLEusuario(
-- TODOS os campos devem ser declarados, os tipos São ignorados
user_id intprimary key auto_increment, -- Declaração Primary Key
func_id intnot null,
constraint fk_us_fun -- Declaração Foreign Keyforeign key(func_id) -- Declaração Foreign Key, especificar ATRIBUTOreferences funcionario(id), -- Declaração Foreign Key, especificar TABELE E ATRIBUTO
user_log varchar(30),
user_pwd varchar(20)
);

ALTER

-- Não é permitido alterar CHAVE PRIMARIA-- Pertimido Renomear Coluna-- Pertimido Remover Coluna-- Pertimido Adicionar Coluna-- Suporta mais de uma InstruçãoALTERTABLE funcionario
RENAME COLUMN razao_social TO nome_pessoa_juridica,
DROP COLUMN nome_pessoa_juridica,
ADD razao_social varchar(100);

DROP

-- Não é permitido deletar registros que são chaves estrangeiras de outros registrosDROPTABLE funcionario

INSERT

-- Obrigatório Declarar todas as colunas, inclusive a Chave Primaria mesmo Sendo Id-- Auto incremento ainda não é suportado-- Suporta N Values-- Não é permitido inserir registros com Chaves estrangeiras inexistentes.INSERT INTO usuario (user_id, func_id, user_log, user_pwd) --VALUES (1,1,'adm','adm'), (2,1,'adm','adm')

UPDATE

-- Não é permitido atulizar registros com Chaves estrangeiras inexistentes.UPDATE funcionario
SET razao_social ='Razão Social', nome ="Homer Simpsons"WHERE id =1;

SELECT

SELECT*FROM funcionario;
SELECT id FROM funcionario WHERE nome ="Nome";

DELETE

-- Não é permitido deletar registros que são Chaves estrangeiras de outros registros.DELETEFROM funcionario WHERE id >="1";

Interface WEB

img.pngimg.pngimg_2.pngimg_3.png

Releases

Packages

Contributors

Languages