Absorto em pensamentos

O teu rosto vem a mente

Tanto que me perco nas lembranças

De um passado tão presente

 

Tão ausência insiste em ser presença

À fazer do meu peito moradia

Transformando meus raros dias de sol

Nas mais solitárias noites frias

Continue lendo

Saindo da zona de conforto

Existe um lugar onde é muito fácil viver: os especialistas o chamam de zona de conforto. É a denominação dada para um ambiente ou situação que dominamos e por isso nos sentimos à vontade. Nesse lugar as pessoas acostumam-se com certas rotinas, conformam-se com um determinada forma de vida.

Entretanto a vida não é estática,  está sempre mudando. Por isso é preciso que nos adeqüemos a essas mudanças. Se você quer crescer na vida precisa sair da zona de conforto.

O primeiro motivo para isso é que você será obrigado a sair de lá um dia. Ninguém passa a vida sem encontrar dificuldades. A incerteza é um fato da vida, a única coisa da qual podemos ter certeza. Nada é permanente há não ser a mudança.

Por isso precisamos nos permitir correr riscos positivos em busca de crescimento e progresso. Não podemos optar por uma vida calma sem nenhuma turbulência. Corra risco não espere sempre uma garantia. Depois de um erro, sacuda o pó e caminhe para o sucesso. O pior fracasso é não tentar.

O segundo motivo é que nós, seres humanos, procuramos sempre maneira de nos refinar e melhorar. Temos enraizado em nós o desejo e a capacidade de nos tornamos melhores a cada dia. E como se consegue isso? Nós esforçando e testando.

Experimentar. Tentar algo novo. A única forma de medir a nossa capacidade e alcance é mirando no alvo e tentando alcançá-lo.

E finalmente o fato de você sair da zona de conforto tornará a sua vida bem mais interessante. Deixando de lado aquela vida monótona e previsível. Desafios servem para serem vencidos e você só saberá se pode vencê-los se tentar.

De vez em quando é preciso subir num galho perigoso, porque é lá que estão as frutas. (Will Rogers)


Introdução ao NoSQL

O termo NoSQL foi usado pela primeira vez  por Carlo Strozzi,em 1998, para fazer referência a um banco de dados relacional de código aberto que não possuía uma interface SQL. Contudo o termo só voltou a ser usado em 2009, por Eric Evans, em um evento para discutir bancos de dados open source distribuídos.

Os bancos de dados NoSQL surgiram como uma forma de criar novas alternativas em aplicações em que se exigiam alta performance e principalmente uma alta escalabilidade, já que os atuais banco de dados relacionais são bastante deficientes em tais pontos.

A principal promessa desses bancos é a alta escalabilidade. Os RDMS (relational database management system) não escalam facilmente. Quando o número de usuários do sistema cresce consideravelmente existem normalmente duas possibilidades:

  • Aumentar o poder do servidor, aumentando sua memória, processamento. Conhecido como escalabilide vertical.
  • Dividir o processamento entre diversos servidores. Conhecido como escalabilidade horizontal.

Nos RDMS normalmente para se buscar determinada informação faz-se necessário um relacionamento entre várias tabelas, o que dependendo do tamanho de terminadas tabelas pode-se tornar algo praticamente inviável. Nos bancos de dados NoSQL não existe tal separação,ou seja, todos os dados são incluídos em único registro, aumentando assim a capacidade de escrita e leitura nesses bancos.

Os bancos de dados NoSQL podem ser divididos em basicamente quatro tipos:

  • Key /Store – O tipo mais simples. Armazenam apenas uma chave e um respectivo valor. São os que possuem maior escalabilidade.

o   Berkeley DB

o   Tokyo Cabinet

o   Project Voldemort

o   MemcachedDB

 

  • Wide Columns Store – Inspirados pelo BigTable do Google. Suportam um grande número de colunas e linhas, permitindo buscas pelas colunas.

o   SimpleDB

o   HBase

o   Hypertable

o   Cassandra

 

  • Document Store – São baseados em documentos XML ou JSON,  podem ser buscados por uma chave única ou por qualquer outro valor contido no documento.

o   CouchDB

o   MongoDB

 

  • Graph Store – São os mais complexos devido ao fato de que os documentos não são armazenados em listas, mas em objetos. Os quais são buscados navegando-se nesses objetos.

o   Neo4J

o   InfoGrid

 

  • Column Oriented Store – São bancos de dados relacionais, porém assemelham-se aos bancos NoSQL pelo fato de armazenarem os dados em colunas, aumentado-se assim a escalabilidade.

o   Vertica

o   MonetDB

o   LucidDB

o   Infobright

o   Ingres /Vectorwise

 

Como pode se observar no gráfico acima os key-value são os que suportam um maior número de registros, contudo possuem uma menor complexidade. Já os Graph são os que possuem uma maior complexidade, entretanto, são os que armazenam menos registros. Nota-se também pelo gráfico que os bancos NoSQL são necessários em apenas 10% dos sistemas, ou seja, os outros 90% podem usar sem nenhum problema o modelo relacional.

Muito mais…

Essa foi apenas uma pequena introdução sobre os bancos de dados NoSQL. É um assunto bem amplo e há muito mais o que ser explorado.

Pra quem quer deseja saber mais sobre o assunto recomendo o blog NoSQL Brasil.

Pretendo continuar uma série me aprofudando mais nesse assunto, principalmente sobre o MongoDB que é o banco que eu estou utilizando na implementação do meu projeto de TCC. Então até a próxima.


Programar exige concentração

Programar é uma atividade que exige bastante envolvimento cerebral e uma palavra é crucial nesse ponto: concentração. Quanto maior a concentração maior a produtividade de um programador.

Diversos fatores podem atrapalhar a concentração, desde telefones, barulho de pessoas conversando. Então busque sempre programar em lugares onde você pode se concentrar o máximo possível.

Vivemos na chamada geração Y, crescemos numa época de grandes avanços tecnológicos e prosperidade economia. Habituamo-nos a viver em ação, estimulados por atividades e principalmente a fazer múltiplas tarefas simultaneamente. Enquanto programamos ouvimos música, conversamos no MSN, visitamos redes sociais, conversamos. Mas a questão é que não somos robôs, máquinas, computadores que realizam diversas tarefas perfeitamente ao mesmo tempo. No final das contas não conseguimos realizar nenhuma com agrado.

Nosso cérebro, por mais potente que seja só consegue se concentrar perfeitamente em uma tarefa, ou você programa ou realiza outra tarefa. Podemos até realizar mais de uma simultaneamente, mas com isso perderemos em produtividade, pois não conseguiremos programar e nem realizar nenhuma outra tarefa com a qualidade almejada.

Programar exige concentração. E como exige. Alguns programadores têm o hábito de ouvir música enquanto programam, será que alguém pode prestar atenção na letra de uma música e programar ao mesmo tempo? Ou o nosso cérebro presta atenção na música e joga a programação pra segundo plano ou vice-versa.

Música agrada, mas também atrapalha. Se for para você fazer um trabalho fácil, não tem problemas. Mas quando precisar realmente de concentração desligue-a.

Programadores odeiam telefones e eles têm razão. Nada mais incomoda do que perder 40 minutos. O pior de tudo é quando o inconveniente é dado bem quando você estava empolgado e programando como poucas vezes o fez.

Programar é algo mágico. Por isso quando estiver programando faça o máximo para que seja apenas você e o código. Tente evitar ao máximo fatores que de alguma forma tirem sua concentração. Com isso você terá um ganho inigualável na produtividade dos seus códigos, pois perdera menos tempo com coisas desnecessárias e principalmente um ganho na qualidade dos mesmos.


Um passo de cada vez…

Aqui dou início ao meu novo blog.  Estarei sempre atualizando-o com tudo que acontece no mundo tecnológico. Sejam bem-vindos. Volte sempre. =)


%d blogueiros gostam disto: