Pular para o conteúdo principal

no:sql(br).["Eu fui"] = "e estava SENSACIONAL!";

O primeiro #nosqlbr foi um evento que realmente excedeu a expectativa de muitos, e acredito que até mesmo do @porcielli(organizador e curador de fato do movimento aqui no Brasil)! Com um público de tecnologia eclético, reuniu em torno de 170 pessoas para discutir assuntos vinculados a bancos de dados que não atendem ao modelo SQL/relacional.

De forma resumida, tais solucões de armazenamento e recuperação de dados normalmente possuem as seguintes qualidades sistêmicas:

  • Atendem aos requisitos basicos de cloud computing, como disponibilidade, tolerância a falhas, escalabilidade horizontal elástica(a quente) e baixa latência;
  • Armazenam dados normalmente no formato chave valor. Alguns são mais orientados a estruturas de dados, outros a documentos;
  • Falam, em muitos casos, protocolos baseados na web, como HTTP, JSON e XML;
  • Alguns aderem mais fielmente a web, implementando conceitos REST;
  • Considere soluções open source e livres, por questões de licenciamento e custo ao escalar;
  • Nem tudo deve ser ACID;
  • Modelos relacionais não priorizam o perfil de acesso a dados da aplicação, que é desnormalizado;
  • Dados centralizados solucionam apenas consistência, mas trazem problemas que inviabilizam o uso em soluções nosql/cloud computing;
  • Latência é o que importa em primeiro lugar! Depois vazão(throughtput/escalabilidade)! E depois elasticidade(crescer a quente)! Porém, todos são importantes!
  • Particionamento, replicação inteligente e sharding(particionamento de um mesmo grupo de dados) são fundamentais;
  • Facilite a leitura;
  • Escolha entre latência e consistência;
Você encontra mais informações no artigo da wikipedia sobre NoSQL

Minha palestra foi a respeito de uma avaliação que estamos fazendo no SPC Brasil a respeito de Apache Cassandra como cache distribuído(cuidado, "quase" NSFW). De forma simples, o Apache Cassandra junta o modelo de dados oferecido pelo Google BigTable com as capacidades de armazenamento do Amazon Dynamo.

Quero ainda disponibilizar um material adicional, como arquivos de configuração prontos para setup em cluster. De qualquer forma, uma coisa que citei é que a configuração do Apache Cassandra é muito simples e, seguindo os comentários para cada configuração dentro do arquivo $CASSANDRA_HOME/conf/storage-conf.xml, configurando o logfile em $CASSANDRA_HOME/conf/log4j.properties, lendo o quickstart, modelo de dados, arquitetura e codificando alguns clientes devem ser o suficiente para fazer um bom setup inicial e rápido. Acredito que em 1h no maximo você já consegue ter um cluster e cliente funcionando, além do que é um excelente exercício caso você esteja comecando nessa área! Estou a disposilção para ajudar em caso de dificuldades nisso!

Logo após a minha palestra, a Globalcode sorteou um curso Hands-On(prático) de Google App Engine com Java, e o ganhador foi o @handrus! Parabéns! ;)

O clima foi extremamente informal e descontraído, com todos os convidados se sentindo muito a vontade para fazer perguntas e participarem das palestras. No final houve uma desconferência, onde palestrantes e platéia se uniram para falar a respeito dessas novas tecnologias, cultura corporativa, DBAs, cloud computing, agile, universo, e outras coisas... :) Houve um happy hour depois, mas como eu já estava muito cansado, se ficasse bêbado ainda por cima a essa altura, iria dormir na rua mesmo! :)

Bati ainda um papo com o Alberto Lerner, um dos desenvolvedores do MongoDB, que foi desenvolvedor do BigTable quando ainda era funcionário do Google. Ele falou quais critérios devem ser considerados na adoção de uma solução NoSQL, dizendo que devemos focar muito mais análise de como sua aplicação acessa dados, e menos na moda ou até mesmo em funcionalidades de mais alto nível que podem ser irrelevantes na solução de problemas de latência e disponibilidade ao recuperar/modificar informações no seu repositório de dados.

Como o evento foi organizado de forma rápida e sem muito planejamento financeiro, o Alexandre Porcelli acabou por assumir um custo de R$ 8.000,00 sozinho, e a partir daí começou uma corrida para obter patrocinadores e doações individuais para bancar o evento. Durante o evento ainda houve uma momento ilustre: o Porcelli passou o chapéu(literalmente, pena que não há foto, mas várias testemunhas presenciaram isso, inclusive eu) e conseguiu arrecadar próximo de R$ 1.000,00, o que considerando um público presente de 170 pessoas em um evento gratuito aqui no Brasil é algo de se admirar! Isso mostra o quanto o público estava comprometido com o movimento e também significa uma coisa: o nosqlbr 2011 vai ser algo ainda melhor! Porém ainda há um rombo de R$ 2.500,00 nas finanças pessoais dele, portanto se você foi e não colaborou, ainda há chance de ajudar!

Outros posts a respeito do primeiro NoSQL Brasil(se estiver faltando algum, me avisem que eu atualizo):


Ainda durante o evento, o Porcelli citou um novo encontro em algum futuro próximo. Dessa vez com o tema "linguagens dinâmicas". Certamente estarei lá!

Abs,
JV -- julioviegas.com

Comentários

suissa disse…
ahhh como eu queria ter ido, apenas ótimos reviews. Fico muito feliz pela cena do nosqlbr estar começando tão bem!
Wagner Santos disse…
Fala Júlio!

Posso dizer que o evento superou minhas expectativas, foi muito bom, principalmente o conteúdo.

O papo com o Alberto Lerner e contigo no final me ajudou a tirar algumas dúvidas, =)

Parabéns pela palestra e na próxima estaremos lá...

Abraço,
Unknown disse…
Realmente o #nosqlbr foi muito bom, "evento da comunidade para a comunidade".

Ótima oportunidade de rever vários camaradas e adquirir um bocado de conhecimento.

Como vc citou Julio, a mistura de tribos foi bem interessante.

[]s
Juliana disse…
Não fui na palestra mas fiquei sabendo do ocorrido.
Eu como mulher, e como também faço parte do mundo da programação me senti extremamente ofendida com a imagem de uma mulher nua utilizada para representar a 'Cassandra', isso foi extremamente vulgar e anti-ético os fatos não justificam o meio, em nenhum contexto plausível isso se encaixa. Se eu estivesse na platéia simplesmente iria me levantar e sair da sala.
Na próxima vez coloque a foto de um homem nu em plena ereção. Aposto que todos os homens presentes no recinto irão se sentir bem confortáveis. ;-)
Bom saber que foi você quem deu a palestra e que você dá aulas na GlobalCode, porque nunca irei participar de nada que envolva o seu nome.
Julio Viegas disse…
Oi Juliana,

Sem querer polemizar mais, a mulher em questao nao estava nua. Eu nao iria colocar uma mulher nua em um slide, pois haviam outras mulheres na plateia, e as mesmas nao se sentiram ofendidas.

Os slides ilustrando belas mulheres foi uma forma de descontrair a plateia. Tirando isso, meu proposito foi de repassar o conhecimento a respeito do software que apresentei.

Peço desculpas se vc entendeu a mensagem de forma errada.

Att,
JV
Juliana disse…
Ok, olhando com atenção as fotos que foram tiradas por alguns conhecidos que compareceram haviam tarjas minúsculas nas partes íntimas, retratando : são fotos de seminu!

Que bom que as mulheres que foram não se sentiram ofendidas, ainda bem que existe democracia e que ninguém foi criado e nem pensa da mesma forma.

Não vou entender a mensagem de forma errônea o dia em que esse preconceito acabar e as mulheres não serem mais tratadas e vistas como objetos. O dia em que uma mulher der uma palestra e colocar fotos de homens para "descontrair" nos mesmo moldes em que você fez, eu irei entender.

Não tenho nada contra a sua pessoa, apenas não achei certa essa atitude e não compartilho do seu ponto de vista, para não polemizar mais paro por aqui.

Sucesso e tudo de bom para vc!

Atenciosamente.
Handrus disse…
Uma excelente palestra a sua! Embora eu não tenha uso prático imediato para "o" cassandra adorei saber mais sobre a tecnologia e a forma como você pretende usa-la no SPC.
Obrigado pela palestra, toda a comunidade vai com certeza se beneficiar muito.

Postagens mais visitadas deste blog

O que é Lógica de programação?

Este é o segundo de uma série de posts voltados aos leitores do blog que estão dando início à carreira de desenvolvimento de software. O assunto de hoje é a lógica de programação. Para ler antes: Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados A lógica de programação é um pré-requisito para quem quer se tornar um desenvolvedor de software, independente da linguagem de programação que se pretende utilizar. Mas o que é de fato a Lógica de Programação e como saber se eu tenho esse pré-requisito? A lógica de programação nada mais é do que a organização coerente das instruções do programa para que seu objetivo seja alcançado. Para criar essa organização, instruções simples do programa, como mudar o valor de uma variável ou desenhar uma imagem na tela do computador, são interconectadas a estruturas lógicas que guiam o fluxo da execução do programa. Isso é muito próximo ao que usamos em nosso cotidiano para realizar atividad...

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...

Melhorando Performance de JPA com Spring Web Flow

No TDC2009 realizado pela Globalcode em São Paulo foi apresentado um Lightning Talk sobre um problema específico de performance em aplicações Web com JPA e uma possível solução usando o Spring Web Flow . Num período de 15 minutos, os slides a seguir foram apresentados e seguidos de alguns vídeos de demonstração de uma aplicação Web em execução. Melhorando performance do JPA com Spring Web Flow View more presentations from Dr. Spock . Nesta apresentação foi dito que temos encontrado problemas de performance em aplicações Web que utilizam as tecnologias JSF + JPA + Ajax quando precisamos gerenciar um contexto de persistência (EntityManager). Estes problemas se manifestam quando aplicamos uma resposta errada para a pergunta: Como gerenciar o contexto de persistência numa aplicação Web? Se as aplicações não usam Ajax e limitam-se ao modelo orientado a requisições, a solução mais comum é o uso do design pattern chamado "Open Session In View Filter". Através deste design...

Saiba como programar para Arduino sem ter nenhum hardware disponível

O Arduino já é uma tecnologia muito difundida entre os amantes de tecnologia. É difícil encontrar um profissional da computação que não brincou um pouco com esta ferramenta de prototipagem ou, que gostaria de fazer isso. Porém, em alguns casos, o programador quer conhecer o arduino mas não dispõe de nenhum hardware, nem mesmo da placa. Como isso poderia ser resolvido? A primeira resposta seria aquela mais simples e direta: ir as compras. Isso pode ser feito em uma loja física ou pela internet. No meu caso, por exemplo, tive a felicidade de encontrar em um site (não me lembro qual) um kit arduino, com um conjunto de sensores e um DVD com 41 vídeo aulas. Mas digamos que o profissional não esteja passando por um bom momento financeiro, ou ainda, simplesmente não queira comprar o Arduino sem antes conhecê-lo um pouco melhor. Para a última situação também já existe uma resposta, e diga-se de passagem, uma excelente resposta. Trata-se do site 123D Circuits.io . Depois de criar seu u...

Fazer networking em eventos pode transformar a sua carreira! Saiba como

O networking em eventos é vital ao desenvolvimento da sua carreira para construir relacionamentos de longo prazo, bem como uma boa reputação no mercado . Construir uma forte rede de contatos pode te ajudar a se tornar um nome conhecido no mercado, que influencia e causa impacto na sua área de interesse. Além disso, o networking colabora para: aprendizado contínuo; relacionamentos profissionais duradouros; troca de conhecimento com pessoas renomadas no mercado. O bom networking em eventos tem base de confiança e apoio — e pode significar a diferença entre uma carreira comum e fenomenal. Uma maneira de potencializar o networking, é pelo aprendizado continuado , que permite se especializar na área de atuação e expandir o leque de oportunidades. Neste artigo, reunimos algumas dicas para você saber como tirar o melhor proveito de eventos e fortalecer sua carreira. Aproveite a leitura! O que é networking? Networking é sobre construir relacionamentos profissionais de longo prazo, que sejam...

Dica rápida: Apagando registros duplicados no MySQL

Ola pessoal, Sei que vocês estão acostumados a ver posts meus sobre tecnologia móvel ou algo relacionado, mas hoje vou falar sobre um pequeno "truque" que usei esse final de semana com o MySQL. Eu estava desenvolvendo o lado servidor de uma nova aplicação mobile (ahh, então "tem a ver" com mobile hehe), e quando fui fazer alguns testes percebi que tinha quase 7 mil registros duplicados (!!!) na minha base de dados! Bom, o meu primeiro reflexo como programador foi pensar em fazer um "programinha" Java para buscar e deletar todos esses registros duplicados. Mas ai, resolvi tirar as teias de aranha dos neurônios e usar os vários anos de experiência que passei com SQL e criar uma query que fizesse esse trabalho todo de uma vez!! E a query ficou assim: delete from TABLE_NAME USING  TABLE_NAME, TABLE_NAME  AS  auxtable WHERE   ( NOT  TABLE_NAME.id  =  auxtable.id ) AND   ( TABLE_NAME.name  =  auxtable.name ) Explicação di...