Mais Um Ano, Mais Novidades

Como todos sabem, devemos sempre inovar, estar em constantes mudanças, evolutivas de preferência e se você acompanha esse blog a algum tempo deve ter notado que isso é fato.

Então mantendo esse padrão e melhor ainda, padronizando estas mudanças, resolvi ajustar meu plano pessoal e profissional, que de forma alguma representa empresas ou marcas que eu represente. trata-se de um ajuste pessoal.

Neste alinhamento profissional aos meus 33 anos de idade, resolvi evoluir e me dedicar a nichos específicos, mantendo a sabedoria abrangente dos melhores profissionais do Mundo.

Minha dedicação será focada como organização, metodologias e a ciência dos dados com bigdata e nosql e mobile. Como organizador tenho em criação um blog específico, que também terá outras informações e que a tempos queria muito escrever, onde adiciono claro, muito de metodologias como 5s, GTD, …

Peço desculpas a todos os demais meios que vinham recebendo minhas contribuições e que já foram comunicados, e lamentaram muito a perda, mas chega uma hora que temos que focar na vida e pensar na aposentadoria, rsrsrsrs.

Evento Cassandra Trip Brasil 2013

Grande evento pena que falta aqui no SUL, mas quem poder curtir:

O Cassandra é um banco de dados NoSQL orientado à família de coluna que nasceu para resolver problemas com aplicações que precisam operar com gigantescas cargas de dados além de poder escalar com grande facilidade. Ele nasceu no facebook e hoje vem sendo usado intensamente por empresas dos mais variados portes, tais como Netflix, Twitter, Instagram, HP, IBM, dentre muitas outras. Um fator importante que vale ser citado é a sua adoção crescente inclusive em mercados mais conversadores tais como, instituições financeiras e agências governamentais como a NASA.

Fonte(s): http://otaviojava.github.io/cassandra-trip-brasil/

 

cassandraTripBrasil_edersonmelo

noSQL

Primeiramente utilizado em 1998 o termo noSQL surgiu como o nome de um banco de dados relacional de código aberto que não possuía uma interface SQL. Seu autor, Carlo Strozzi, alega que o movimento noSQL “é completamente distinto do modelo relacional e portanto deveria ser mais apropriadamente chamado “NoREL” ou algo que produzisse o mesmo efeito”(segundo wiki).

O termo noSQL foi re-introduzido no início de 2009 por um funcionário do Rackspace, Eric Evans, quando Johan Oskarsson da Last.fm queria organizar um evento para discutir bancos de dados open source distribuídos. O nome — uma tentativa de descrever o surgimento de um número crescente de banco de dados não relacionais.

nosql-edersonmelo

Arquitetura noSQL

Modernas base de dados relacionais parecem ter uma limitação a transações com grandes volumes de dados e cargas de trabalhos, incluindo o dimensionamento do conjuntos destes dados.

NoSQL provén interfaces muito simples, como arrays associativos ou pares chave-valor (Key-Value pairs).
Os bancos de dados que estão sob estes rótulos não podem exigir esquemas de tabela fixa e, geralmente, não suportam instruções e operações de junção SQL e suas operações são restritas a itens individuais.

MongoDB

Tomando como exemplo uma operação no MongoDB, o equivalente aos registros são os documentos, que utilizam a sintaxe JSON. No item abaixo vamos criar um “documento” chamado Ederson com 3 atributos(nome, sobreNome e cidade), criado de forma muito simples.

Ederson = {

nome: “Ederson”,

sobreNome: “Melo”,

cidade: “Canoas/RS”

}

 

Para armazena-lo em banco, bastaria executar: db.nomeDoMeuBanco.save(Ederson)
Neste mesmo banco poderíamos armazenar documento abaixo. Que é completamente diferente do documento anteriormente criado. E que será da mesma forma aceito.

Pedro = {
nome: “Pedro”,
sobreNome: “Haack”,
cidade: “Canoas/RS”,
caes:[{nome:”Lilica”, raça:”vira-lata”}, {nome:”Scott”, raça:”Labrador”}]}
}

Para salvar: db.nomeDoMeuBanco.save(Pedro)

Temos diversas formas de utilização para o noSQL:

  • Gerenciamento de grandes streams de dados não-transicionais: logs Apache, logs de aplicativos, logs MySQL, clickstreams etc.
  • Sincronização de dados online e offline. Este é um nicho que CouchDB segmentou.
  • Rápido tempo de reposta em todos os carregamentos.
  • Evite joins pesados quando o carregamento da query se tornar
  • muito grande para RDBMS.
  • Sistemas simples de tempo real no quais a baixa latência é crítica.

couchDB_black

Mesmo parecendo muito simples e interessante é importante entender que o noSQL não elimina o bancos de dados relacionais, mas coexiste como uma alternativa.

Veja também a entrevista brilhante com o criador do SQL, Michael “Monty” Widenius.
Conduzido por Dmitry Sotnikov, COO da Jelastic.:http://blog.websolute.com.br/entenda-melhor-o-nosql-e-o-big-data/

Fonte(s):

http://pt.wikipedia.org/wiki/NoSQL

http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html

Node.js, sim ou não?

Node, para que ele serve e para que ele é bom ou não.

Para o que ele é bom
O Node é extremamente bem projetado para situações em que um grande volume de tráfego é esperado e a lógica e o processamento necessários do lado do servidor não são necessariamente volumosos antes de responder ao cliente.

Seguindo os textos(copiados das fontes citadas abaixo), que muito bem exemplificam.

Para que ele serve:

Uma API RESTful

Um serviço da Web que forneça uma API RESTful recebe alguns parâmetros, interpreta-os, monta uma resposta e envia-a (normalmente uma quantidade relativamente pequena de texto) de volta ao usuário. Esta é uma situação ideal para o Node, pois você poderá criá-lo para tratar dezenas de milhares de conexões. Ela também não requer um grande volume de lógica; ela simplesmente procura valores em um banco de dados e monta uma resposta. Como a resposta é uma pequena quantidade de texto e a solicitação de entrada é uma pequena quantidade de texto, o volume de tráfego não é grande, e um computador poderá provavelmente tratar as demandas de API mesmo da API da empresa mais movimentada.

nodejs-logo

Pense em uma empresa como a Twitter, que precisa receber tweets e gravá-los em um banco de dados. Existem literalmente milhares de tweets chegando a cada segundo e o banco de dados não consegue acompanhar o número de gravações necessárias durante os momentos de pico de uso. O Node torna-se uma engrenagem importante na solução deste problema. Como vimos, o Node consegue tratar dezenas de milhares de tweets que chegam. Ele pode gravá-los rápida e facilmente em um mecanismo de enfileiramento em memória (memcached, por exemplo), a partir do qual outro processo separado pode gravá-los no banco de dados. A função do Node é rapidamente coletar o tweet e passar essa informação para outro processo, responsável por gravá-lo. Imagine outro projeto — um servidor PHP normal que tenta tratar gravações no banco de dados em si — cada tweet causaria um pequeno atraso ao ser gravado pelo banco de dados, pois a chamada ao banco de dados estaria sendo bloqueada. Uma máquina com este design só poderia ser capaz de tratar 2000 tweets por segundo, devido à latência do banco de dados. Um milhão de tweets por segundo requer 500 servidores. O Node, em vez disso, trata cada conexão e não bloqueia, possibilitando que ele capture o máximo de tweets possível. Uma máquina com Node, capaz de tratar 50.000 tweets por segundo, requer somente 20 servidores.

Technically-Speaking-Node-Js
Servidor de arquivos de imagem

Uma empresa que tem um grande Web site distribuído (pense no Facebook ou Flickr) poderia decidir dedicar servidores inteiros a simplesmente servir imagens. O Node seria uma boa solução para esse problema, pois a empresa pode usá-lo para codificar um recuperador de arquivos fácil e, a seguir, tratar dezenas de milhares de conexões. O Node procuraria pelo arquivo de imagem, retornaria o próprio arquivo ou um erro 404 e não faria mais nada. Essa configuração permitiria que esses tipos de Web sites distribuídos reduzissem o número de servidores necessários para servir arquivos estáticos, como imagens, arquivos .js e arquivos .css.

Para o que ele não serve

É claro, o Node não é a escolha ideal em algumas situações. Eis alguns cenários em que o Node não seria bom:

Páginas criadas dinamicamente

Atualmente, o Node não fornece uma forma padrão para criar páginas dinâmicas. Por exemplo, ao usar a tecnologia JavaServer Pages (JSP), é possível criar uma página index.jsp que contenha loops em snippers JSP, como <% for (int i=0; i<20; i++) { } %>. O Node não permite esses tipos de páginas dinâmicas direcionadas a HTML. Novamente, o Node não é idealmente adequado para ser um servidor de páginas da web, como o Apache e o Tomcat o são. Portanto, se quisesse fornecer uma solução no lado do servidor para isto no Node, teria que codificar a solução inteira você mesmo. Um programador PHP não gostaria de programar um conversor PHP para o Apache toda vez que implementasse um aplicativo da web, mas, neste momento, é o que o Node exigiria que você fizesse.
Aplicativos pesados em bancos de dados relacionais

O Node foi projetado para ser rápido, assíncrono e sem bloqueio. Os bancos de dados não necessariamente compartilham desses objetivos. Eles são síncronos e com bloqueio, pois chamadas ao banco de dados para leitura e gravação bloqueiam até que um resultado seja gerado. Portanto, um aplicativo da Web que solicite muitas chamadas ao banco de dados, muitas leituras e muitas gravações com cada solicitação seria uma aplicação ruim para o Node, pois o banco de dados relacional em si estaria negando muitos dos pontos fortes do Node. (Os novos bancos de dados NoSQL são uma escolha melhor para o Node, mas este é um tópico totalmente diferente).

 

Fonte(s):

http://nodejs.org

http://nodebr.com

http://www.ibm.com/developerworks/br/library/os-nodejs/