sexta-feira, janeiro 27, 2017

Alguns SGBD NoSQL com Docker

ArangoDB e OrientDB são SGBD multi-modelo, ou seja, trabalham, conforme configuração, orientados a documento, chave-valor e até grafo. O Neo4J trabalha com o modelo de grafo somente.
Se quiser fuçar, e encorajo a isso!, você pode instalar diretamente no su sistema operacional ou usar o Docker e manter o isolamento da instalação.

Instalação stand alone dos SGBD acima usando seu container Docker:

ArangoDB:
docker run -p 8529:8529 arangodb/arangodb:3.1.9

OrientDB:
docker run -d --name orientdb -p 2424:2424 -p 2480:2480 -e ORIENTDB_ROOT_PASSWORD=root orientdb:latest

Neo4J:
docker run \
    --publish=7474:7474 --publish=7687:7687 \
    --volume=$HOME/neo4j/data:/data \
    --volume=$HOME/neo4j/logs:/logs \
    neo4j:3.1

sexta-feira, janeiro 20, 2017

Opções leves para abstração de banco de dados em PHP

Gosto de soluções simples e leves para meus projetos. No caso de abstração de banco de dados tradicionais (relacionais), vejo duas escolhas: ou trabalhar com o PDO (nativo do PHP) ou com uma abstrção simples que facilite o trabalho. Como nem sempre deseja-se um mapeamento objeto-relacional, não há como pensar que a solução deve ser um ORM (object relational mapper); é uma opção. Como restrição para essa lista é a leveza, a relativa estabilidade e a simplicidade da solução. Coloquei "relativa estabilidade" pois a evolução é e deve ser constante. Segue uma lista do que achei mais interessante:

ORM simples e estável em um único arquivo de fácil configuração e métodos estáticos. Já está na versão 4 e tem bastante recurso interessante além do básico que todos os ORMs possuem. Como ORM, recomendo.

Mapeador de Dados feito sobre o Doctrine BAL, possui uma característica que gosto como opção de trabalho: a definição da estrutura de dados (campos da tabela). Isso pode ser muito útil, pois essa restrição aos dados pode lhe dar flexibilidade na sua solução.

Inpirado no NotORM, foi escrito a partir de suas características de uma forma a agregar alguns benefícios dos ORMs sem estragar o conceito. A nomentclatura dos métodos não me agrada muito, mas possue um padrão que facilita o trabalho. Apesar de a PK, por exemplo, ser "id" por padrão, é customizável, o que também é interessante. Como eu curtia o NotORM, sou suspeito a opinar.

Se intitula como o framework PHP mais leve para acelerar o desenvolvimento. Realmente é bem simples e fácil de configurar. Possui, assim com o o RedBean um único arquivo a ser incluído no seu script ou na sua classe. Tem os métodos simples para trabalho com os dados e que ajudam em vários aspectos.

Todos dessa lista trabalham com os principais bancos como MySQL, SQLite e Postgres (e outros a ver em seus sites), pois usam o PDO por trás dos panos. 

quarta-feira, janeiro 04, 2017

Agilidade é um meio, não o fim

Esse excelente artigo escrito por Alisson Vale, trata bem da questão que sofremos por conta do modismo e das ideologias.

https://medium.com/software-zen/a-morte-do-agilismo-e-o-que-isso-pode-significar-pra-voc%C3%AA-4b365a289301#.4p6aj68pf

Ignorar o contexto e "usar por usar" ou "fazer por fazer" tem um custo alto e que muitas vezes fica imperceptível até surgir aos nossos olhos como fracasso.
Para os desenvolvedores, sendo mais específico: metodologias, frameworks, patterns, práticas... entenda em que podem ser usados e o porque de seu uso, além das interdependências de seus pedaços. Entenda o conceito por trás de cada coisa sem ficar preso a ela. Abra sua mente. Isso amplia seu conhecimento e, consciente de seus problemas reais, permite que a ferramenta certa seja usada na hora e na situação mais adequada. Como dizem: não pense fora da caixa; pense como se não houvesse caixa.
É uma tarefa árdua para quem aprendeu que existe um "melhor", um "correto" e vive na zona de conforto sem desafiá-la como se o mundo tivesse que mudar aos moldes de seu restrito conhecimento. Somos moldados assim e é difícil lidar com isso.
Nosso objetivo está claro? Vamos atender ao cliente? Vamos desenvolver o melhor produto dadas as restrições? Sendo assim, podemos utilizar técnicas e ferramentas de um grande leque que temos disponível. Mas quais? Simplesmente... depende! Temos acesso a muito conhecimento explícito hoje em dia (a internet a total disposição!), que junto ao nosso conhecimento tácito, à nossa experiência e à consciência do meio que nos cerca podemos conseguir muito e garantir a melhoria contínua!

E a agilidade? Continua ajudando muito, obrigado! Ela auxilia a alcançarmos o objetivo. Ninguém e nenhuma empresa deve ter como meta simplesmente ser ágil. Não devemos ser por ser. O objetivo é resolver o problema; entregar a solução para o cliente. Então, agilidade é um meio, não o fim.