<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4814632945482468952</id><updated>2012-03-21T10:55:00.288-07:00</updated><title type='text'>semi- estruturado</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://semiestruturado.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4814632945482468952/posts/default'/><link rel='alternate' type='text/html' href='http://semiestruturado.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Luciano Ramalho</name><uri>http://www.blogger.com/profile/03172292086633100747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_5tQI-F_WJ-U/Shn_mTVyKhI/AAAAAAAAAAM/bjsfVIAJO3Q/S220/luciano-ramalho-2008-100x100.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4814632945482468952.post-1430694149452545187</id><published>2011-10-03T12:07:00.000-07:00</published><updated>2011-10-03T13:24:30.602-07:00</updated><title type='text'>Python, noSQL e o 2º noSQL Brasil</title><content type='html'>Pela 2ª vez teremos em SP o &lt;b&gt;Encontro noSQL Brasil&lt;/b&gt;, oficialmente &lt;b&gt;&lt;a href="http://nosqlbr.com/"&gt;no:sql(br)/v2&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;As comunidades &lt;b&gt;Python&lt;/b&gt; e &lt;b&gt;noSQL&lt;/b&gt; têm em comum a convicção de que a tecnologia que &lt;b&gt;todo mundo&lt;/b&gt; usa não é necessariamente &lt;b&gt;a&lt;/b&gt; solução para &lt;b&gt;todos os problemas&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Estive na 1ª edição do &lt;b&gt;no:sql(br)&lt;/b&gt; e foi muito bom, com vários palestrantes internacionais e nacionais que não estão brincando, estão usando noSQL para resolver problemas reais em &lt;b&gt;sistemas de missão crítica&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Para quem está chegando agora, os proponentes do noSQL não tem &lt;b&gt;nada contra SQL&lt;/b&gt; em si: a questão é deixar claro que o &lt;b&gt;modelo relacional&lt;/b&gt; não resolve bem todos os problemas de persistência de dados. Então &lt;b&gt;noSQL=not only SQL&lt;/b&gt; (não só SQL) virou a bandeira de vários projetos de bancos de dados não relacionais muito diferentes entre si, mas unidos pela causa de espalhar a notícia de que existe coisa boa além (ou aquém) da primeira forma normal.&lt;br /&gt;&lt;br /&gt;A comunidade &lt;b&gt;Python&lt;/b&gt; tem uma longa tradição de buscar alternativas quando o modelo relacional não atende. Temos APIs robustas para acesso a bases chave-valor e serialização de objetos na própria biblioteca padrão, suporte de primeira classe no &lt;b&gt;Google Datastore&lt;/b&gt; via App Engine, além do &lt;b&gt;ZODB&lt;/b&gt;, um BD OO transacional &lt;b&gt;ACID&lt;/b&gt; em produção desde 1998, usado nos projetos &lt;b&gt;Plone&lt;/b&gt; e &lt;b&gt;ERP5&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Por isso e pelas características dinâmicas da linguagem, Python está surfando &lt;b&gt;muito&lt;/b&gt; &lt;b&gt;bem&lt;/b&gt; a onda do noSQL, e os fornecedores sabem disso, tanto que Python costuma ser uma das primeiras linguagens com &lt;b&gt;suporte oficial&lt;/b&gt; na maioria dos produtos noSQL.&lt;br /&gt;&lt;br /&gt;Assim como dominar Python ajuda a te &lt;b&gt;diferenciar&lt;/b&gt; profissionalmente, conhecer alternativas ao modelo relacional pode &lt;b&gt;abrir portas&lt;/b&gt; para excelentes oportunidaes, e o &lt;a href="http://nosqlbr.com/"&gt;no:sql(br)/v2&lt;/a&gt; é o melhor evento para se atualizar sobre essa &lt;b&gt;tendência irreversível&lt;/b&gt;, como afirma o próprio Mike Stonebraker, pai do PostgreSQL (&lt;a title="The End of an Architectural Era (It’s Time for a Complete Rewrite)" href="http://bit.ly/o5vO16"&gt;PDF&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;E eu não perco por nada nesse mundo a palestra do grande &lt;b&gt;Klaus Wuestefeld &lt;/b&gt;sobre o &lt;b&gt;Prevayler&lt;/b&gt;, o sistema de &lt;a href="http://en.wikipedia.org/wiki/System_Prevalence"&gt;prevalência de objetos&lt;/a&gt; que ele inventou &lt;b&gt;há 10 anos&lt;/b&gt; e que o &lt;b&gt;Martin Fowler&lt;/b&gt; resolveu &lt;a href="https://gist.github.com/1186975"&gt;reinventar sem dar crédito&lt;/a&gt;, mesmo depois de ser avisado de estar reinventado.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4814632945482468952-1430694149452545187?l=semiestruturado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semiestruturado.blogspot.com/feeds/1430694149452545187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://semiestruturado.blogspot.com/2011/10/python-e-nosql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4814632945482468952/posts/default/1430694149452545187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4814632945482468952/posts/default/1430694149452545187'/><link rel='alternate' type='text/html' href='http://semiestruturado.blogspot.com/2011/10/python-e-nosql.html' title='Python, noSQL e o 2º noSQL Brasil'/><author><name>Luciano Ramalho</name><uri>http://www.blogger.com/profile/03172292086633100747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_5tQI-F_WJ-U/Shn_mTVyKhI/AAAAAAAAAAM/bjsfVIAJO3Q/S220/luciano-ramalho-2008-100x100.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4814632945482468952.post-3922095388149498359</id><published>2010-05-18T14:18:00.000-07:00</published><updated>2010-05-18T14:41:21.231-07:00</updated><title type='text'>Primeiro encontro no:sql(br)</title><content type='html'>Sábado passado (15/5/2010) aconteceu em São Paulo o 1º encontro no:sql(br). Tinha umas 120-170 pessoas na platéia. Tive que ir embora às 15h então assisti:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Abertura, Alexandre Porcelli, OpenSpotLight&lt;/b&gt;&lt;br /&gt;O Porcelli está de parabéns pela iniciativa, coragem de ter organizado tudo com grana própria, e pela qualidade do evento. Também está de parabéns por ter garantido ao final de cada palestra um bom tempo para perguntas do público.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;noSQL anti-patterns, Gleicon Moraes, Locaweb&lt;/b&gt;&lt;br /&gt;A melhor palestra que eu assisti, na verdade deveria se chamar "SQL anti-patterns", porque o objetivo do Gleicon era mostrar casos de uso comuns e totalmente equivocados de bancos relacionais, "soluções" que criam ainda mais problemas e que deveriam ser implementadas usando bancos não relacionais. Para cada anti-pattern, ele mencionava arquiteturas alternativas usando diferentes ferramentas NoSQL. Excelente.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Performance e simplicidade com Chave/Valor utilizando REDIS, Luiz Fernando Teston, OpenSpotLight&lt;/b&gt;&lt;br /&gt;O Teston sabia do que falava e seu entusiasmo é evidente, mas ele perdeu tempo com detalhes como a compilação do Redis e acabou levando 30 minutos até finalmente começar a mostrar porque um banco de chave-valor é melhor do que um MySQL com uma tabela de duas colunas, id e blob.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;O papel do REST no Neo4J e CouchDB, um comparativo, Guilherme Silveira, Caelum&lt;/b&gt;&lt;br /&gt;O Guilherme é um palestrante e instrutor muito bom, mas nessa palestra ele perdeu muito tempo com analogias nem sempre felizes e não mostrou quase nada dos produtos, muito menos fez comparações. Assim o evento ficou bem prejudicado como um todo porque o CouchDB é um dos produtos NoSQL mais comentados e ele acabou não sendo bem representado no evento.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Introdução ao MongoDB - direto da fonte! - Alberto Lerner&lt;/b&gt;&lt;br /&gt;O Alberto Lerner é um engenheiro da 10gen que desenvolve o MongoDB, e antes trabalhou no Google no próprio BigTable. A palestra foi muito boa também, e fiquei mais interessado no MongoDB do que antes. No coffee-break o Cristiano Anderson e o Henrique Bastos (que não trabalham juntos) contaram que tem produtos rodando MongoDB quase em fase de produção. Fiquei com a impressão que acontece aquele lance de Ruby x Python. Tem mais gente falando de Ruby, porém muito mais gente usando Python. Entre CouchDB e MongoDB, o mesmo: o primeiro é mais citado e o segundo é mais usado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tio: um NoSQL made in Brasil - Rodrigo Strauss, 1bit&lt;/b&gt;&lt;br /&gt;O Rodrigo é um programador C++ das trincheiras do mercado financeiro, ou seja, aplicações de missão crítica onde não pode haver latência alta e muito menos perda de dados. Ele é ativo no grupo de usuários de C++ que o Alberto Fabiano agita. Fiquei muito bem impressionado com o Tio, que é como ele mesmo define um "servidor de estruturas de dados que implementa publish/subscribe", ou seja, serve de infra-estrutura para serviços de troca de mensagens entre sistemas distribuídos. Python é a segunda linguagem favorita dele, portanto muito bem suportada no Tio.&lt;br /&gt;&lt;br /&gt;Infelizmente não pude ficar para as palestras sobre Hadoop e Cassandra. O Akita twitou que o Cassandra é o nosql favorito dele.&lt;br /&gt;&lt;br /&gt;Na verdade, a maioria dos produtos que foram apresentados não são exatamente concorrentes diretos e mal podem ser comparados. O que eles tẽm em comum é serem servidores para compartilhamento de dados entre sistemas distribuídos, e portanto cada um à sua maneira pode substituir com vantagens um banco de dados relacional em situações específicas. Mas os casos de uso indicados são muito distintos.&lt;br /&gt;&lt;br /&gt;É mais ou menos como fazer um evento sobre "NoCar", ou seja, veículos automotivos que não são carros de passeio, e aí tentar comparar tratores, scooters, caminhões, rebocadores de avião, carrinhos de golfe, varredores de rua e tanques de guerra. Cada um deles funciona melhor que um carro de passeio em determinadas funções, mas dificilmente um substitui o outro, e nenhum substitui o carro de passeio na maioria de seus usos cotidianos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4814632945482468952-3922095388149498359?l=semiestruturado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semiestruturado.blogspot.com/feeds/3922095388149498359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://semiestruturado.blogspot.com/2010/05/priemeiro-encontro-nosqlbr.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4814632945482468952/posts/default/3922095388149498359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4814632945482468952/posts/default/3922095388149498359'/><link rel='alternate' type='text/html' href='http://semiestruturado.blogspot.com/2010/05/priemeiro-encontro-nosqlbr.html' title='Primeiro encontro no:sql(br)'/><author><name>Luciano Ramalho</name><uri>http://www.blogger.com/profile/03172292086633100747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_5tQI-F_WJ-U/Shn_mTVyKhI/AAAAAAAAAAM/bjsfVIAJO3Q/S220/luciano-ramalho-2008-100x100.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4814632945482468952.post-4029619869528134660</id><published>2010-03-15T13:14:00.000-07:00</published><updated>2010-03-15T13:45:05.212-07:00</updated><title type='text'>E se o banco de dados se adaptasse aos dados?</title><content type='html'>Depois de anos trabalhando com bancos de dados relacionais eu cansei. Aprendi programação orientada a objetos, e as regras de normalização deixaram de fazer sentido. Porque o registro de um livro não pode ter vários campos de autor? É natural que a relação de autores seja um atributo do livro.&lt;br /&gt;&lt;br /&gt;Não é natural que os autores fiquem em outra tabela, com chaves apontando para o livro, enquanto no registro do livro propriamente dito não tem nem menção de autor algum. Isso é bizarro. A gente só não acha bizarro depois de muito adestramento, pelo qual eu também passei.&lt;br /&gt;&lt;br /&gt;O modelo relacional tem muitos méritos, não precisa de mais um defensor. Mas para muitas aplicações, existe um outro modelo de dados mais apropriado, chamado "semiestruturado" (&lt;span style="font-style: italic;"&gt;semistructured&lt;/span&gt;: este é o melhor termo para pesquisar na literatura científica).&lt;br /&gt;&lt;br /&gt;No modelo semiestruturado, podemos ter campos repetitivos (por exemplo, vários campos de autor) e sub-campos, ou campos compostos (um campo autor pode ter sub-campos para o nome e a data de nascimento). Essas duas coisas são proibidas no modelo relacional, como foi definido por Codd.&lt;br /&gt;&lt;br /&gt;Na blogosfera há muito sobre o &lt;a href="http://couchdb.apache.org/"&gt;CouchDB &lt;/a&gt;e outros bancos de dados semiestruturados. Eu trabalho na &lt;a href="http://regional.bvsalud.org/php/index.php"&gt;BIREME&lt;/a&gt;, uma instituição que vem construindo há décadas e com muito sucesso grandes bases de dados bibliográficas com CDS/ISIS, um banco de dados semiestruturado criado pela OIT e Unesco. Nos próximos posts vou contar algo do que tenho aprendido sobre este modelo de dados alternativo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4814632945482468952-4029619869528134660?l=semiestruturado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semiestruturado.blogspot.com/feeds/4029619869528134660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://semiestruturado.blogspot.com/2010/03/e-se-o-banco-de-dados-se-adaptasse-aos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4814632945482468952/posts/default/4029619869528134660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4814632945482468952/posts/default/4029619869528134660'/><link rel='alternate' type='text/html' href='http://semiestruturado.blogspot.com/2010/03/e-se-o-banco-de-dados-se-adaptasse-aos.html' title='E se o banco de dados se adaptasse aos dados?'/><author><name>Luciano Ramalho</name><uri>http://www.blogger.com/profile/03172292086633100747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_5tQI-F_WJ-U/Shn_mTVyKhI/AAAAAAAAAAM/bjsfVIAJO3Q/S220/luciano-ramalho-2008-100x100.jpg'/></author><thr:total>0</thr:total></entry></feed>
