Pular para o conteúdo principal

Tendências: NoSQL

Muitos de nós já fomos testemunhas e presenciamos tendências tecnológicas virem com intensidade e se dispersarem tão rapidamente como surgiram.

Há alguns anos acompanho a popularização e a adesão de padrões de infraestruras e plataformas para suportar aplicações web. A decisão de usar uma ou outra solução é com freqüência respaldada por casos de sucessos. Notadamente é considerável o peso dado ao que a start-up de sucesso do momento está utilizando. Tais decisões levam a uma reação em cadeia que direciona o mercado de desenvolvimento de software de uma maneira bem significativa.

Uns dos mais populares stacks de hoje tem uma abreviação peculiar: LAMP. Esta combinação de letras são, na verdade, atalhos para os mais famosos projetos open source que se tem conhecimento: Linux, Apache (servidor HTTP) e MySQL. A última letra desta seqüência merece um destaque pela sua ambigüidade pois pode simbolizar a inicial de uma entre as mais populares linguagens script (Python, PHP e Perl).

Particularmente acredito que esta decisão arquitetural é acertada para 95% (se não mais) dos casos, mas ter a certeza que não estaremos entre os 5% restantes em nenhuma condição, é uma resposta que poderíamos obter apenas vinda de uma divindade suprema.

A web e sua intrínseca dimensão global tem o potencial de levar os mais experientes dos arquitetos de sistemas de volta aos bancos altos de suas pranchetas, carregando consigo um problema que pode consumir muito capital, humano e não, que deve ser amenizado idealmente em questão de horas ou, no mais tardar, em dias.

Escalabilidade é um tema bastante complexo e armazenamento e processamento de grandes volumes de dados são focos de pesquisas que estão bem aquecidas hoje em dia. Um dos mais ativos movimentos nesta linha está tomando forma, encorpando e sendo batizado. Chama-se NoSQL.

Em um livro recém lançado intitulado “Hadoop: The Definitive Guide” (escrito por Tom White) há uma passagem digna de nota (em uma tradução livre):


...”Este é o resumo de como a história acerca de escalabilidade no uso de um banco de dados relacional se desenrola. A seguinte lista assume uma aplicação de sucesso, de demanda crescente.
  • Lançamento ao público inicial:
    Cópia da instância MySQL de desenvolvimento para o ambiente de produção, compartilhado e remoto, tendo um esquema de dados bem definido.

  • A aplicação se torna mais popular; requisições demasiadas de leitura atingindo o banco de dados:
    Adiciona-se “memcached” ao sistema para que as requisições mais comuns se mantenham em memória. As leituras ao banco de dados não são mais estritamente ACID; dados armazenados em memória devem ser invalidados por algum mecanismo.

  • A aplicação continua com crescente demanda; requisições demasiadas de escrita atingindo o banco de dados:
    Escala-se verticalmente o MySQL através da atualização de hardware do servidor com 16 núcleos, 128 GB de RAM e bancos de discos rígidos com 15000 RPMs. Oneroso.
  • Novos recursos implementados no sistema aumentam a complexidade das consultas SQL; agora temos muitos “joins”:
    Desnormalização dos dados para reduzir “joins” (Isto não é o que eles ensinam na escola para DBA).
  • Demanda da aplicação cresce e derruba o servidor; tudo está muito lento:
    Pára-se com qualquer processamento no lado do servidor.
  • Algumas consultas ainda estão lentas:
    Cria-se periodicamente “views” materializadas das consultas mais complexas, tenta-se eliminar “joins” na maioria dos casos.
  • Leituras estão aceitáveis mas escritas estão cada vez mais lentas e lentas:
    Elimina-se índices secundários e “triggers” (sem índices?).”...

Quantos de nós estamos envolvidos com sistemas que estão nesta rota? Será mesmo que nossas aplicações nunca atingirão tais níveis?

Nessa discussão, surgiu por acaso a opinião de um especialista em bancos de dados que fez seu discurso sustentado pelos mais altos títulos acadêmicos. Nesse almoço informal, em uma roda de nerds, a variável derradeira eleita foi a de volume de dados, sendo um bilhão de registros a fronteira limite que deveria definir o uso do tradicional ou de alternativas NoSQL. É uma fórmula simples, fácil de monitorar mas ingênua por demais.

Um sistema ao atingir tamanha proporções será inevitavelmente complexo e rico em recursos que foram implementados durante sua natural evolução. Isto tornará inviável qualquer mudança de porte a um custo aceitável. Reescrever o sistema pode até ser mais econômico em alguns casos.

O fundamental da arquitetura, seja ela de sistema ou não, é primar pelo alicerce. Escalabilidade é um dos muitos requisitos que costumamos subjulgar, deixando-o de lado, delegando completamente ao hardware e a soluções out-of-the-box essa incumbência.

A promessa NoSQL consiste em endereçar os requisitos de escalabilidade através de camadas de software que implementam suporte a processamento e sistema de arquivos distribuidos em uma rede de servidores comuns. Em conjução, um efetivo sistema de gerecencimento de recursos enfatiza que a adição, remoção ou uma eventual falha de qualquer um desses componentes não comprometam ou exijam qualquer intervenção na aplicação.

Há várias empresas sérias já fazendo uso dessas tecnologias e até mesmo oferecendo-as como serviços a preços competitivos.

O questionamento agora girará em torno de qual platforma usar em nossos novos projetos: LAMP ou LANP.


Referências:
Hadoop: http://hadoop.apache.org/
HBase: http://hadoop.apache.org/hbase/
CouchDB: http://couchdb.apache.org/
HyperTable: http://www.hypertable.org/
MongoDB: http://www.mongodb.org/
Cassandra: http://incubator.apache.org/cassandra/


PS.: Sugestões de temas para os próximos posts serão bem vindas!

Comentários

Yara Senger disse…
Bene,

Seu post foi muito interessante e fez refletir. Mas, pelo menos para mim ainda ficou uma interrogação... ou melhor, uma nuvem (risos).

O que é utilizado para recuperar os dados ? Fazer uma busca ou inserção no lugar do SQL ?

[]s
Yara
Yara,

A sua pergunta é provavelmente merecedora de um outro "post".
Resumidamente, cada solução NoSQL implementa um conjunto próprio de APIs que por hora, não são padronizadas.
Estas APIs são expostas à aplicação através de classes em Java, pelo uso de "frameworks" que encapsulam serviços como o Thrift ou via web service (RESTFul).
Uma característica importante desses sistemas está no fato que eles são orientados a documentos tendo tuples (conjuntos de chave/valor) como estrutura de dados fundamental.
A grande maiorias dessas soluções são baseadas ou inspiradas por um componente crítico para o Google conhecido como Bigtable.

[]s,

Bene.
Yara Senger disse…
Bene,

Estas soluções são indicadas / utilizadas apenas para aplicações Web / sites ou também são utilizadas com eficiência para soluções corporativas com transações mais complexas ?

Um abraço,
Yara,

A adoção destas soluções em ambiente corporativos ainda engatinha mas há alguns casos de sucesso em empresas como Visa, JPMorganChase, New York Times e outros.
Em todos esses casos, estas soluções são utilizadas principalmente para análise, agregação e classificação de grandes volumes de dados para a obtenção de informações estratégicas e padrões estatíscos. Após estes enriquecimentos, tais informações são utilizados para determinar comportamento de usuários, autenticidade de transações financeiras ou como dados de treino para aplicações que se utilizam de algorítmos como o de machine learning.
Em ambientes OLTP, haverá uma espera pelo amadurecimento destas soluções alternativas até que provem serem tão robustas quanto os bancos de dados tradicionais de hoje.

[]s,

Bene.
Unknown disse…
Este comentário foi removido pelo autor.
Unknown disse…
Legal o post Benedicto, parabéns! Gostaria só de deixar um comentário (ok, 1 ano e meio após o post mas que ainda é atual...) sobre a minha pouquíssima experiência sobre o uso de BDs noSQL (realmente sou um newbie no assunto).

Há um tempo atrás eu comecei a estudar um pouco de noSQL porque tinha interesse em utilizar uma solução desse tipo em um projeto open source que participo. Como eu não gosto muito de fazer as coisas às cegas, fui pesquisar em alguns livros sobre MongoDB, Cassandra e CouchDB, para saber onde estava pisando. Um ponto interessante que todos abordam é exatamente onde se encaixam as soluções noSQL e, uma coisa fica clara em toda literatura: os bancos noSQL não vêm para substituir bancos relacionais, mas sim para preencher uma lacuna que sempre era (e ainda é) preenchida com os BDs relacionais mas exige um malabarismo imenso, torto e complexo. O que acontece é que existem certos problemas que justificam o uso de soluções noSQL e outros não, por exemplo, se você tem um sistema no qual não há manipulação massiva de dados e escalabilidade não é necessariamente um problema, então é provável que um banco de dados relacional deve funcionar sem problemas! Outro fator que entendi (claro que eu posso estar totalmente errado) é que se eu pretendo utilizar somente uma máquina como banco de dados então não faz sentido utilizar um banco noSQL. Isso a princípio me deixou relativamente desapontado porque parece que os noSQLs não servem para o tipo de problema que eu quero resolver (na verdade eu realmente queria usar um noSQL), mas por outro lado fiquei satisfeito porque pelo menos foi definido um contexto mais claro de uso dessa solução. Por essas razões eu acabei optando por ficar no bom e velho MySQL, mas reitero que eu realmente gostaria de utilizar um banco noSQL!!!

Resumindo, na minha opinião, eu acho que os bancos de dados noSQL vieram para ficar e já são realidade. Acredito que ainda falta explorar um pouco mais essa fronteira de onde e como eles podem ser utilizados, mas creio que isso é questão de tempo. De qualquer forma, o assunto é muito interessante e acho que realmente vale a pena estudar e entender um pouco mais sobre.

Desculpem as bobagens que eu provavelmente escrevi :-)

Abraços,
Wellington.

Postagens mais visitadas deste blog

Você já pensou em ser palestrante em algum evento ?

Você já deve ter participado de algum evento e pensado como deve ser legal ser palestrante... E para falar a verdade, é muito bom mesmo. Eu adoro, o Vinicius adora e conheço muitas pessoas que curtem cada minuto da participação no evento como palestrante. Com certeza é uma responsabilidade a mais. Você sente medo, adrenalina, tem que se preparar. Literalmente coloca a cara a tapa para qualquer pessoa te avaliar em todos os sentidos. Qual o seu tom de voz?  Seus slides são legais? Você manja mesmo ?  Seu português está ok?  E as palavras em inglês ?  Teve algum deslize técnico? E MUITO mais.  Mas é claro que a exposição tem dois lados... e os resultados podem ser ótimos. Normalmente conhecemos mais pessoas como palestrantes e podem surgir boas oportunidades de negócio. É sempre positivo ter uma nova referência positiva quando as pessoas buscam nosso nome no Google, podemos fazer a diferença para quem está assistindo a palestra e muito mais.  No The Developer's

TDC INNOVATION lança University Pass

Modalidade de ingresso tem como objetivo ajudar na capacitação dos universitários Uma pesquisa realizada em 2020 pela Associação Brasileira das Empresas de Tecnologia da Informação e Comunicação (Brasscom) diz que até o ano de 2024 o Brasil precisará de cerca de 420 mil profissionais na área de Tecnologia da Informação. Porém, por ano, a mesma pesquisa diz que o país forma apenas 46 mil profissionais capacitados no nicho. Pensando nisso, para ajudar na formação e capacitação desses jovens profissionais, o TDC INNOVATION, segunda edição do ano do The Developer's Conference, lança o University Pass, modalidade de ingresso que possibilita aceso digital gratuito a todas as palestras do evento, ou com 50% de desconto para quem preferir ir pessoalmente. Com o tema central “Desafios para a criação do futuro Digital”, o TDC INNOVATION ocorrerá entre 1 e 3 de junho, de forma híbrida: presencialmente no Centro de Convenções CentroSul, em Florianópolis, e com transmissão simultaneamente pela

Inscrever sua equipe em eventos de TI vale a pena? Entenda aqui

Os eventos de TI são importantes para o aprendizado contínuo, especialmente em uma área tão dinâmica, como a de tecnologia. A necessidade de estar sempre por dentro das tendências pode esbarrar em algumas objeções, como investir em especializações pouco práticas ou opções pulverizadas de mercado. Por isso, participar de conferências e assistir palestras de especialistas é uma excelente oportunidade para sua equipe se desenvolver. O melhor de participar de eventos de TI é expandir os conhecimentos e habilidades independentemente da experiência específica, seja um desenvolvedor web ou full stack, por exemplo, as conferências de tecnologia podem ajudar o profissional a se aperfeiçoar. Isso ocorre devido ao contato com outros especialistas e colegas da mesma área. Além disso, é possível descobrir novas soluções e fazer networking . Neste artigo, você conhecerá as vantagens da sua equipe participar em eventos de TI. Aproveite a leitura! Vantagens de participar de eventos de TI Se o seu ob

Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados

Nesse post, diferente dos últimos que foram mais enfáticos nas experiências com tecnologias, vou focar um pouco mais nos profissionais que estão começando, ou pretendem ingressar na área de desenvolvimento de software, falando sobre conceitos fundamentais relacionados a programação em geral . Mercado de trabalho para programação Conforme já sabemos, o mercado de desenvolvimento de software, especialmente no Brasil, continua em franca expansão, sendo que cada vez mais as empresas buscam desenvolver seus próprios sistemas usando as mais diferentes e novas tecnologias. Algumas matérias interessantes: As seis profissões mais valorizadas em 2010 no IDG Now! Muitas vagas e sensação de reaquecimento da economia Por isso, a área de desenvolvimento de software tem despertado interesse em muitos profissionais de outras áreas que desejam mudar de profissão, já que as oportunidades de trabalho tendem a ser maiores. Esse é um perfil presente em muitos dos clientes da Globalcode que acabou m

Segurança da informação no alvo: o que esperar do futuro?

A segurança da informação não se trata apenas de proteger os dados contra acesso não autorizado. Na prática, refere-se aos recursos que impedem: uso; registro; inspeção; divulgação; interrupção; modificação; destruição de dados. O uso de dados pode abranger desde um perfil nas redes sociais a detalhes financeiros, biometrias ou novos projetos. Por isso, a preocupação com a proteção dos dados é crescente, tanto para empresas quanto clientes. Para muitas pessoas, a coleta de dados é considerada invasão de privacidade, criando desconfiança do titular dos dados, pois o uso dos dados pode ser facilmente corrompido, utilizado para fins não declarados. Apesar de o uso dos dados terem impulsionado os avanços tecnológicos na última década, as organizações lidam com o desafio de distinguir dados de informações pessoais de modo a proteger a privacidade e as preferências dos clientes. Neste artigo, abordaremos o impacto da segurança da informação e o que esperar do futuro. Confira casos conhecido

TDC ONLINE: SUA PLATAFORMA DE PALESTRAS GRAVADAS DO TDC DISPONÍVEL

Além do conteúdo ao vivo transmitido online nas edições do TDC, agora você pode ter acesso à centenas de palestras gravadas, através da nossa nova plataforma de vídeos - o TDC Online, que reúne todas as Trilhas premium, Stadium e Salas dos Patrocinadores das edições anteriores de 2022, TDC Innovation e TDC Connections.  Para acessar, basta clicar na edição em que você participou ( TDC Innovation ou TDC Connections ); Fazer o mesmo login (com e-mail e senha) cadastrados na hora de adquirir ou resgatar o seu ingresso no TDC; E clicar na Trilha de sua opção, e de acordo com a modalidade do seu ingresso. Logo em seguida, você será direcionado para a seguinte página com a lista de todas as palestras por Trilha: Pronto! Agora você tem acesso à centenas de palestras gravadas da sua área de interesse, para assistir como e quando quiser! Caso tenha esquecido a senha, clique na opção "Esqueci a senha" , insira o e-mail que você realizou para o cadastro no evento, e aparecerá a op