anúncios

Mostrando postagens com marcador SQLite. Mostrar todas as postagens
Mostrando postagens com marcador SQLite. Mostrar todas as postagens

segunda-feira, 26 de novembro de 2018

Conhecendo o DBeaver

O que é DBeaver?

DBeaver é um software cliente SGBD (Sistema Gerenciador de Banco de Dados). Para bancos de dados relacionais, ele usa a API do JDBC para interagir com bancos de dados por meio de um driver JDBC. Para outros bancos de dados (NoSQL), ele usa drivers de banco de dados proprietários. Ele fornece um editor que suporta o preenchimento de código e o realce de sintaxe. Este software foi escrito em Java e baseado na IDE Eclipse.

O DBeaver é um software livre, open source, distribuído pela licença do Apache. Uma edição corporativa de código fechado do DBeaver é distribuída sob uma licença comercial, nesse caso é para bancos de dados (NoSQL).

O DBeaver foi iniciado em 2010 como um projeto de hobby. Era para ser livre, de código aberto, ter uma interface de usuário elegante e conveniente e incluir recursos usados com freqüência para desenvolvedores de banco de dados. O primeiro lançamento oficial foi em 2011

Em 2014, a versão Enterprise Edition (EE) foi lançada. A versão EE é baseada no CE, mas também fornece suporte a bancos de dados NoSQL / BigData (Cassandra, MongoDB e Redis) e inclui alguns plug-ins adicionais do Eclipse.

Em 2015, o código fonte do DBeaver foi transferido para o GitHub .

Em 2017, o DBeaver CE foi relicenciado sob a licença Apache (a partir da versão 4.x).

Em julho de 2017, a versão do DBeaver EE tornou-se comercial para suportar a versão CE.

Suporte e versões

O DBeaver é software multiplataforma e trabalha com suporte no Eclipse. Disponível para os sistemas operacionais: Windows, GNU/Linux, MacOS X, Solaris. Suporta aos idiomas: Inglês, Chinês, Russo, Italiano e Alemão.

Community Edition

Community Edition (CE) é a versão inicial do DBeaver. Foi lançado em 2010 e tornou-se open-source (GPL) em 2011.

A versão CE inclui suporte estendido dos seguintes SGBDs:
  • MySQL/MariaDB
  • PostgreSQL
  • Oracle
  • MS SQL Server
  • SQLite
  • Firebird
  • DB2 (LUW)
  • Sybase
  • Teradata
  • Informix
  • Apache Derby
  • Apache Phoenix
  • Qualquer outro SGBD que tenha driver JDBC ou ODBC.
Eclipse Plugin Edition

A versão do plug-in do Eclipse foi lançada no Eclipse Marketplace. Essa versão é usada por programadores que usam o Eclipse IDE para desenvolvimento de software e que precisam de uma ferramenta de gerenciamento de banco de dados diretamente em seu IDE. O plug-in do Eclipse inclui a maioria dos recursos do Community Edition e também é liberado sob licença GPL.

Enterprise Edition

O DBeaver 3.x anunciou o suporte de bancos de dados NoSQL (Cassandra e MongoDB na versão inicial). Desde então, o DBeaver foi dividido nas edições Community e Enterprise. O Enterprise Edition tem suporte a bancos de dados NoSQL, gerenciador de consultas persistente e alguns outros recursos de nível corporativo. A versão EE não é de código aberto e requer a compra de uma licença (uma licença de avaliação pode ser gerada gratuitamente).

A versão Enterprise Edition inclui suporte aos bancos NoSQL:
  • Cassandra
  • MongoDB
  • Redis
Recursos
Os recursos do DBeaver incluidos são:
  • Execução de querys SQL ANSI
  • Numeração de linhas no editor
  • Sintaxe highlighting e SQL autocompletar
  • Gerenciamento de scripts SQL
  • Gera DDL
  • Redesenha o DER
  • Tunelamento SSH
  • SSL (MySQL e PostgreSQL)
  • Exportar e importar bases de dados
Instalação do DBeaver
Pré requisitos

Como o DBeaver foi implementado em Java, então para poder executar é necessário ter o JRE instalado e configurado no PATH. Caso você programa em Java, certamente já deve ter o JDK, então já está com o pré requisito instalado.

Resumindo: Para quem não programa em Java, instale o JRE e configure no PATH no seu sistema operacional.

Já para quem programa em Java, configure o JDK no PATH do seu sistema operacional.

Após ter o JRE ou JDK configurado no PATH do seu sistema operacional, faça o download do DBeaver e o processo de instalação é basicamente extrair em algum diretório de sua preferência e executar o arquivo dbeaver. Obviamente que poderá adicionar como atalho no menu, porém não será mostrado nesse post, porque varia de ambiente desktop (Gnome, KDE, XFCE, LXDE, etc).

No meu caso extrair no diretório downloads e a versão até a data de publicação deste post é 5.1.3, basicamente só troca a versão.

$ tar -xzvf dbeaver-ce-5.1.3-linux.gtk.x86_64.tar.gz
$ cd dbeaver
$ ./dbeaver

Screenschot DBeaver



Feito!

segunda-feira, 23 de outubro de 2017

A importância de usar migrations/seeds no projeto de sistema web

Vocês utilizam migrations nas tabelas do sistema?

Não? Então precisar ler o howto [1] seguinte sobre migrations com Phinx para automatizar e versionar as tabelas do sistema. Os frameworks PHP tradicionais já inclui migrations, mas pode ser que esteja em um sistema já construído que não foi pensado em migrations, imagina como é quando necessita fazer uma alteração de uma estrutura nas tabelas específica e/ou criar um tabela, enviar ALTER TABLE tabela ADD campo tipo AFTER campo; e/ou CREATE TABLE table tabela ... para todos né. Depois no deploy precisa lembrar qual foi a ordem que executou para poder executar no BD de produção.

Com migrations com Phinx, isso é mais prático e versionado, pois com um comando atualiza o BD de desenvolvimento, homologação e produção, bastando alterar o argumento especificando qual BD deseja aplicar.

Então, como aplicar o uso do migrations com Phinx na equipe de desenvolvimento? Cria um repositório a parte no Github ou Bitbucket com nome migrations. Os integrantes do time fazem fork, o clone do seu fork, adiciona o remote oficial do migrations.

1. fork do repositório migrations criado no Github ou Bitbucket
2. git clone < url repositório migrations do fork >
3. git remote add upstream < url repositório oficial migrations >
4. composer install (obviamente irá colocar o diretório vendor do projeto migrations no arquivo .gitignore, então por isso terá que executar o passo 4

Assim para cada alteração na estrutura da tabela ou criar uma tabela, cria um migrations, executa e faz o commit no seu fork e o pull request no oficial. Provavelmente no time de desenvolvimento deve ter um grupo no Slack com canais direcionados sobre o projeto, deve ter um #canal banco de dados, então nesse canal comunica para atualizar com os seguintes comandos abaixo.

O Phinx também permite popular dados na tabela, que é chamado de seed, na qual é utilizado para popular as tabelas que tem dados fixos no sistema, e.g: estados, cidades, CNAES e etc.

cd /path/diretorio/onde/salvou/clone-migrations;
git pull upstream master;
git push origin master;
vendor/bin/phinx migrate

Caso tiver seed execute
vendor/bin/phinx seed:run

Viu como fica mais organizado, automatizado e versionado usando migrations/seeds com Phinx no sistema web com PHP? Com certeza, vale a pena utilizar o migrations/seeds com Phinx no sistema web com PHP.
Ok, como usar o migrations/seeds com Phinx?
Acesse o howto [1] e tenha a certeza que se perguntará, por que não pensei nisso antes? Logo vai começar a utilizar o migrations e seeds com Phinx.

[1] https://mundodacomputacaointegral.blogspot.com.br/2017/09/automatizando-e-versionalizando-tabelas-bd-com-phinx.html

Feito!

segunda-feira, 25 de setembro de 2017

Automatizando e versionalizando as tabelas do banco de dados com Phinx

O que é Phinx ?

É uma ferramenta para escrever e executar migrations, usada inclusive pelo plugin de migrations do framework CakePHP. Atualmente os frameworks PHP populares possui recurso de migrations incluso, mas caso você esteja em um projeto que não utilize nenhum framework PHP e precisa de uma forma organizada e atualizada de controlar as alterações na base de dados, nesse caso o Phinx pode ajudar.

SGBD suportados
O Phinx suporte aos SGBDs: MySQL, PostgreSQL, SQLite, SQL Server
  • MySQL: use mysql adapter.
  • PostgreSQL: use pgsql adapter.
  • SQLite: use sqlite adapter.
  • SQL Server: use sqlsrv adapter.
Instalação do Composer
Para instalar o Phinx, precisa instalar o Composer que pode ser obtido no site https://getcomposer.org/
Windows: Após fazer o download do executável, execute e segue Next, Next e Finish

Linux
Debian:
# apt-get install curl

CentOS:
# yum install curl

Download do Composer
# curl -sS https://getcomposer.org/installer | php
Setar permissão de execução
$ chmod +x composer.phar
Mover para o diretório local
# mv composer.phar /usr/local/bin/composer

Instalação do Phinx
No diretório do projeto, execute
$ composer require robmorgan/phinx

Execute o comando seguinte para gerar o arquivo phinx.yml
$ vendor/bin/phinx init .

O arquivo phinx.yml é onde armazena as informações do banco de dados, vem montado base de produção, desenvolvimento e testes, cabe preencher as credencias do banco de dados.
Na configuração default_database define o ambiente da base default, por boas práticas, coloca-se development como default.

Assim ao executar o migrate não precisa especificar o argumento. Para atualizar a base de testes e produção, faça:
$ vendor/bin/phinx migrate -e testing
$ vendor/bin/phinx migrate -e production

Para cada tabela nova e/ou alterações na tabela já existente deve criar um migrate com o padrão CamelCase.
Estando no diretório onde instalou o phinx, o comando para criar uma migration é: vendor/bin/phinx create NomeDaMigrationCorrespondente
Com isso, irá gerar um arquivo template no diretório db/migrations com o nome da migration incluindo timestamp no nome do arquivo criado. É nesse arquivo que irá criar a tabelas e os campos. Veja o arquivo de exemplo para se basear. Após a implementação do arquivo da migrations correspondente, pode executar o comando para criar a migrations no banco, com o comando vendor/bin/phinx migrate

Tipos das colunas inclusos nas migrations (tabelas)
  • biginteger
  • integer
  • boolean
  • date
  • datetime
  • decimal
  • float
  • string
  • text
  • time
  • timestamp
  • uuid

Criar uma migration para uma tabela correspondente
$ vendor/bin/phinx create NomeDaMigrationCorrespondente
Irá gerar o arquivo correspondente ao nome da migration com timestamp no diretório db/migrations

Implementar a migration criada
Edita o arquivo db/migrations/< TIMESTAMP_nome_migration_criada >.php
Para uma nova tabela, coloca no método up() e no final aplica com o método save().
Para alteração de uma tabela já existente, coloca no método change() e no final aplica com o método update().
Nova tabela
public function up()
{
$nome_tabela = $this->table('nome_tabela');
$nome_tabela->addColumn('nome', 'string', array('limit' => 100))
->addColumn('sobrenome', 'string', array('limit' => 100))
->addColumn('email', 'string', array('limit' => 100))
->addColumn('d_criado', 'datetime')
->addColumn('d_atualizado', 'datetime', array('null' => true))
->save();
}

Alteração na tabela
public function change()
{
$nome_tabela = $this->table('nome_tabela');
$nome_tabela->addColumn('nome_coluna', 'tipo', array('after' => 'nome_coluna'))
->update();
}

Adicionar um FK na tabela
->addForeignkey('id_campo', 'tabela_relacionada', 'id', array('delete'=>'RESTRICT', 'delete'=>'RESTRICT'))


Método down
Esse método faz o oposto do método up() e change(), por exemplo, se up() esta fazendo a criação de uma tabela, no down() faz o drop table, e no change(), no down() faria retornar a alteração anterior. Veja um exemplo claro no item seguinte.
O método down() é executado quando executar o comando de roolback
vendor/bin/phinx rollback

Renomear uma tabela
Após criar a migration
public function up()
{
$nome_tabela = $this->table('nome_tabela');
$table->rename('nome_nova_tabela');
}
public function down()
{
$nome_tabela = $this->table('nome_tabela_nova');
$table->rename('nome_tabela_antiga');
}

Renomear uma coluna da tabela
public function up()
{
$nome_tabela = $this->table('nome_tabela');
$nome_tabela->renameColumn('campo_antigo', 'campo_novo');
}
public function down()
{ $nome_tabela = $this->table('nome_tabela');
$nome_tabela->renameColumn('campo_novo', 'campo_antigo');
}

Executando a(s) migration(s) para criar a(s) tabela(s) correspondente
$ vendor/bin/phinx migrate

Criar Seeds
Vimos a criação do migration que cria e/ou altera tabelas, mas se quisermos popular dados na tabela? É nesse tópico que será visto como fazer.
Criar um seed: vendor/bin/phinx seed:create NomeSeedCorrespondente
Irá gerar o arquivo para o seed correspondente no diretório db/seeds/.php

Exemplo de seed para tabela usuarios
$ vendor/bin/phinx seed:create CriaUsuarioZeferino
public function run()
{
$dados = array(
array('nome' => 'Zeferino',
'prenome' => "",
'sobrenome' => 'Silva',
'apelido' => 'Testador',
'email' => 'zeferino.silva@hotmail.com',
'senha' => '$2a$08$R2Tzm7EugyNcquA7BYIyVetLdji4XFTAhsA1A3M85zt0IUDlQis86',
'cpf' => '61813735786',
'id_usrt' => 1,
'acesso' => 0,
'status' => 1)
);
$user = $this->table("usuarios");
$user->insert($dados)
->save();
}

Executar o seed criado na tabela:
vendor/bin/phinx seed:run -s CriaUsuarioZeferino
Verifique se a(s) tabela(s) foram criadas e/ou populadas no seu BD, se foram, está correto.

Considerações finais

Após utilizar o Phinx no projeto, notou-se no time de desenvolvimento uma organização e automação no deploy na base de dados local garantindo a mesma estrutura das tabelas nos ambientes de desenvolvimento, homologação e produção.
Espera-se que possa ser útil no seu time de desenvolvimento no projeto em PHP também.

Referência
http://docs.phinx.org/en/latest
Feito!