<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nullability.org</title>
	<atom:link href="http://nullability.org/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://nullability.org/blog</link>
	<description></description>
	<lastBuildDate>Tue, 31 Aug 2010 21:15:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Node.js Knockout 2010 &#8211; Vote em mim :)</title>
		<link>http://nullability.org/blog/?p=43</link>
		<comments>http://nullability.org/blog/?p=43#comments</comments>
		<pubDate>Tue, 31 Aug 2010 21:15:43 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[democracia]]></category>
		<category><![CDATA[eleições]]></category>
		<category><![CDATA[jean jacques rousseau]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[nodeko]]></category>
		<category><![CDATA[poderia estar roubando poderia estar matando mas estou aqui pedindo seu voto]]></category>
		<category><![CDATA[umeboshi]]></category>
		<category><![CDATA[vote em mim]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=43</guid>
		<description><![CDATA[Após 48 horas de pouco sono, muito café e bastante hacking usando Node.js, nossa equipe conseguiu entregar o projeto do Node.js Knockout, o Umeboshi Server. Mais tarde, pretendo escrever a minha experiência na competição, mas, agora, eu gostaria de pedir que você, meu caro leitor, participasse da votação e avaliasse não só o meu projeto, [...]]]></description>
			<content:encoded><![CDATA[<p>Após 48 horas de pouco sono, muito café e bastante hacking usando Node.js, <a href="http://nodeknockout.com/teams/umeboshi-fireteam" target="_blank">nossa equipe</a> conseguiu entregar o <a href="http://github.com/nko/umeboshi-fireteam" target="_blank">projeto</a> do <a href="http://nodeknockout.com/">Node.js Knockout</a>, o <a href="http://umeboshi-fireteam.no.de/" target="_blank">Umeboshi Server</a>. Mais tarde, pretendo escrever a minha experiência na competição, mas, agora, eu gostaria de pedir que você, meu caro leitor, participasse da votação e avaliasse não só o meu projeto,<a href="http://nodeknockout.com/teams" target="_blank"> mas também vários outros projetos realmente impressionantes da competição</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=43</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pequenos anúncios</title>
		<link>http://nullability.org/blog/?p=35</link>
		<comments>http://nullability.org/blog/?p=35#comments</comments>
		<pubDate>Fri, 27 Aug 2010 18:59:32 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[(011) 1406]]></category>
		<category><![CDATA[anúncios]]></category>
		<category><![CDATA[contest]]></category>
		<category><![CDATA[cursos]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[nodeko]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[publicidade é a alma do negócio]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=35</guid>
		<description><![CDATA[Este post é só para anunciar que amanhã estarei em São Carlos/SP participando do Node Knockout e que nos dias 23 e 24 de setembro estarei na 13a. Semana da Computação do ICMC ministrando um minicurso de Ruby e Ruby on Rails e uma palestra sobre NoSQL. Se você estiver de bobeira e/ou for da [...]]]></description>
			<content:encoded><![CDATA[<p>Este post é só para anunciar que amanhã estarei em São Carlos/SP participando do <a href="http://nodeknockout.com" target="_blank">Node Knockout</a> e que nos dias 23 e 24 de setembro estarei na <a href="http://pet.icmc.usp.br/semcomp13" target="_blank">13a. Semana da Computação do ICMC</a> ministrando um minicurso de Ruby e Ruby on Rails e uma palestra sobre NoSQL. Se você estiver de bobeira e/ou for da região, apareça lá e vamos bater um papo <img src='http://nullability.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>EDIT: Meu time no <a href="http://nodeknockout.com/teams/umeboshi-fireteam" target="_blank">NodeKO</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=35</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jogo rápido: Como fazer seu MongoDB iniciar como serviço no Debian</title>
		<link>http://nullability.org/blog/?p=32</link>
		<comments>http://nullability.org/blog/?p=32#comments</comments>
		<pubDate>Tue, 10 Aug 2010 15:48:08 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[jogo rapido]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[LSBscript]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[start me up]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=32</guid>
		<description><![CDATA[Recentemente fizemos uma aplicação, usando MongoDB e Rails 3, para coletar feedbacks de usuários para alguns produtos que estamos desenvolvendo aqui na Locaweb. A única preocupação que tivemos foi como colocar a instância do MongoDB para iniciar juntamente com o sistema, problema resolvido beeeem facilmente. O passo-a-passo é o seguinte: 1. Crie o LSB Script para o [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente fizemos uma aplicação, usando MongoDB e Rails 3, para coletar feedbacks de usuários para alguns produtos que estamos desenvolvendo aqui na Locaweb. A única preocupação que tivemos foi como colocar a instância do MongoDB para iniciar juntamente com o sistema, problema resolvido beeeem facilmente. O passo-a-passo é o seguinte:</p>
<p>1. Crie o <a href="http://wiki.debian.org/LSBInitScripts" target="_blank">LSB Script</a> para o MongoDB em &#8220;/etc/init.d&#8221; conforme abaixo:</p>
<blockquote>
<div id="_mcePaste">#! /bin/sh</div>
<div id="_mcePaste"># /etc/init.d/mongodb</div>
<div id="_mcePaste">#</div>
<div id="_mcePaste"># Carry out specific functions when asked to by the system</div>
<div id="_mcePaste">case &#8220;$1&#8243; in</div>
<div id="_mcePaste">start)</div>
<div id="_mcePaste">echo &#8220;Starting MongoDB&#8221;</div>
<div id="_mcePaste">mongod &#8211;fork &#8211;logpath /var/log/mongodb.log &#8211;logappend</div>
<div id="_mcePaste">;;</div>
<div id="_mcePaste">stop)</div>
<div id="_mcePaste">echo &#8220;Stopping Mongodb&#8221;</div>
<div id="_mcePaste">mongo localhost/admin &#8211;eval &#8220;db.shutdownServer();&#8221;</div>
<div id="_mcePaste">;;</div>
<div id="_mcePaste">*)</div>
<div id="_mcePaste">echo &#8220;Usage: /etc/init.d/mongodb {start|stop}&#8221;</div>
<div id="_mcePaste">exit 1</div>
<div id="_mcePaste">;;</div>
<div id="_mcePaste">esac</div>
<div id="_mcePaste">exit 0</div>
</blockquote>
<div>2. Abra o terminal e digite o seguinte comando como root:</div>
<blockquote>
<div>$ update-rc.d /etc/init.d/mongodb defaults</div>
</blockquote>
<div>E é isso <img src='http://nullability.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=32</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup do seu MongoDB</title>
		<link>http://nullability.org/blog/?p=28</link>
		<comments>http://nullability.org/blog/?p=28#comments</comments>
		<pubDate>Fri, 06 Aug 2010 03:01:35 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[amistad]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[master-slave]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[princesa isabel]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=28</guid>
		<description><![CDATA[Então você resolveu botar a cabeça para pensar um pouco, leu alguns blogs por aí, estudou as possibilidades e chegou à conclusão de que, apesar do hype, NoSQL é uma opção viável para guardar os dados da sua aplicação? Ótimo. Mas agora você está com a seguinte dúvida: como eu falo para meu, ermmmm, DBA, [...]]]></description>
			<content:encoded><![CDATA[<p>Então você resolveu botar a cabeça para pensar um pouco, leu alguns blogs por aí, estudou as possibilidades e chegou à conclusão de que, apesar do hype, NoSQL é uma opção viável para guardar os dados da sua aplicação? Ótimo. Mas agora você está com a seguinte dúvida: como eu falo para meu, ermmmm, DBA, fazer backup dos dados? Bom, se você estiver usando MongoDB, é muito fácil:</p>
<p>1. Abra o console do MongoDB para forçar que todos os dados sejam descarregados para o disco e colocar o banco em modo read-only:</p>
<blockquote><p>$ mongo</p>
<p>&gt; use admin;</p>
<p>&gt; db.runCommand({&#8220;fsync&#8221;:1,&#8221;lock&#8221;:1})</p></blockquote>
<p>2. Copie os seus dados para o seu dispositivo de backup</p>
<blockquote><p>$ cp -R /data/db /mnt/backup</p></blockquote>
<p>3. Destrave o seu banco e seja feliz:</p>
<blockquote><p>&gt; db.$cmd.sys.unlock.findOne();</p></blockquote>
<p>E é só. &#8220;Só isso?&#8221;. Sim, é só isso. A única coisa a se mencionar é para fazer estas operações sempre em um MongoDB slave, permitindo que os usuários da sua aplicação possam fazer escritas no MongoDB master (você está usando MongoDB em modelo Master-Slave, né?).</p>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=28</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mais uma apresentação</title>
		<link>http://nullability.org/blog/?p=24</link>
		<comments>http://nullability.org/blog/?p=24#comments</comments>
		<pubDate>Fri, 16 Apr 2010 00:27:14 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[apresentação]]></category>
		<category><![CDATA[document-oriented database]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[mongo_mapper]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[sem lenço e sem documento]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=24</guid>
		<description><![CDATA[Todas as quintas-feiras é dia de palestra técnica na Locaweb. E hoje, pela segunda vez, eu falei sobre Mongo, mas desta vez com um foco maior em desenvolvimento (queries, modelagem, índices, &#8230;) usando MongoMapper. Bom, eis a apresentação a seguir. Em caso de dúvidas, já sabe Mongo+mongo mapper View more presentations from Daniel Quirino Oliveira.]]></description>
			<content:encoded><![CDATA[<p>Todas as quintas-feiras é dia de palestra técnica na Locaweb. E hoje, pela segunda vez, eu falei sobre Mongo, mas desta vez com um foco maior em desenvolvimento (queries, modelagem, índices, &#8230;) usando <a href="http://github.com/jnunemaker/mongomapper/" target="_blank">MongoMapper</a>. Bom, eis a apresentação a seguir. Em caso de dúvidas, já sabe <img src='http://nullability.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="__ss_3738848" style="width: 425px;"><strong><a title="Mongo+mongo mapper" href="http://www.slideshare.net/danielqo/mongomongo-mapper">Mongo+mongo mapper</a></strong><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mongomongomapper-100415145142-phpapp01&amp;stripped_title=mongomongo-mapper" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mongomongomapper-100415145142-phpapp01&amp;stripped_title=mongomongo-mapper" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/danielqo">Daniel Quirino Oliveira</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=24</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apresentação sobre NoSQL e MongoDB</title>
		<link>http://nullability.org/blog/?p=21</link>
		<comments>http://nullability.org/blog/?p=21#comments</comments>
		<pubDate>Fri, 12 Mar 2010 02:50:30 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[apresentação]]></category>
		<category><![CDATA[document-oriented database]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[sem lenço e sem documento]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=21</guid>
		<description><![CDATA[Há uns dias eu fiz uma apresentação para a equipe da Locaweb sobre NoSQL e MongoDB. Para quem se interessar, eis a apresentação: Introduction to NoSQL and MongoDB View more presentations from danielqo.]]></description>
			<content:encoded><![CDATA[<p>Há uns dias eu fiz uma apresentação para a equipe da Locaweb sobre NoSQL e MongoDB. Para quem se interessar, eis a apresentação:</p>
<div id="__ss_3404510" style="width: 425px;"><strong style="display:block;margin:12px 0 4px"><a title="Introduction to NoSQL and MongoDB" href="http://www.slideshare.net/danielqo/intro-3404510">Introduction to NoSQL and MongoDB</a></strong><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nosql-mongodb-100311201523-phpapp02&amp;stripped_title=intro-3404510" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nosql-mongodb-100311201523-phpapp02&amp;stripped_title=intro-3404510" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/danielqo">danielqo</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=21</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NoSQL</title>
		<link>http://nullability.org/blog/?p=11</link>
		<comments>http://nullability.org/blog/?p=11#comments</comments>
		<pubDate>Fri, 12 Mar 2010 02:46:18 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[42]]></category>
		<category><![CDATA[agiotagem]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[divagações]]></category>
		<category><![CDATA[dogmas]]></category>
		<category><![CDATA[godfather]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[tech debt]]></category>
		<category><![CDATA[thugs]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=11</guid>
		<description><![CDATA[Até pouquíssimo tempo, ao definir a arquitetura de um novo sistema, a única coisa da qual tínhamos certeza é que usaríamos um banco de dados relacional para guardar o estado do nosso sistema, independente de qual linguagem ou design iríamos usar. Esta única &#8220;certeza&#8221; talvez derive um tanto por causa dos fracassos que outras abordagens [...]]]></description>
			<content:encoded><![CDATA[<p>Até pouquíssimo tempo, ao definir a arquitetura de um novo sistema, a única coisa da qual tínhamos certeza é que usaríamos um banco de dados relacional para guardar o estado do nosso sistema, independente de qual linguagem ou design iríamos usar. Esta única &#8220;certeza&#8221; talvez derive um tanto por causa dos fracassos que outras abordagens para armazenamento de dados estruturados tenham tido no passado (bancos hierárquicos complicados, bancos XML com performance ruim, bancos OO que nunca deixaram de ser vaporware&#8230;), mas principalmente por causa de uma atitude <em>mezzo</em> conservadora, <em>mezzo</em> &#8220;silver-bullet-driven&#8221; por parte do &#8220;mercado&#8221;, que preferiu assumir que bancos relacionais são a única solução decente e segura para armazenar dados.</p>
<p>O grande problema desta &#8220;verdade universal&#8221; é quando ela não se mostra tão universal assim (pois, como todos sabem, <a href="http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html" target="_blank">there is no silver bullet</a>) e, por falta de um melhor repertório tecnológico ou por basear decisões técnicas em dogmas, acabam recorrendo a alguns &#8220;jeitinhos&#8221; que, no fundo no fundo, nada mais são do que dívidas técnicas (dívidas pesadas, como aquelas que você contrai quando pede dinheiro emprestado a um mafioso) que um dia vão ter que ser pagas (imagine os capangas do mafioso batendo à sua porta).</p>
<div id="attachment_13" class="wp-caption alignnone" style="width: 489px"><img class="size-full wp-image-13 " src="http://nullability.org/blog/wp-content/uploads/2010/03/godfather.jpg" alt="Sim, eu *SEMPRE* vou usar Oracle, padrinho." width="479" height="383" /><p class="wp-caption-text">&quot;Si, io *SEMPRE* usarei Oracle, Don Vito.&quot;</p></div>
<p>Exemplos destas dívidas técnicas não faltam por aí, mas vou citar dois cenários nada incomuns:</p>
<ol>
<li><strong>Cenário</strong>: aplicação possui algumas entidades cujas estruturas não são bem definidas ou cujos atributos podem ser definidos/removidos pelo usuário final. <strong>Jeitinho</strong>: criar uma grande tabela do tipo chave-valor para armazenar o nome dos atributos, seus respectivos valores e a chave da entidade ao qual estes atributos pertecem. <strong>Problema</strong>: como seu banco se comporta quando você precisa fazer JOINs usando estas tabelas, que possuem centenas de milhões de registros?</li>
<li><strong>Cenário</strong>: aplicação permite que entidades sejam (re)definidas em tempo de execução pelo usuário. <strong>Jeitinho</strong>: (1) criar uma tabela nova para cada entidade (re)definida e (2) as informações sobre esta entidade (metadados) ficam guardadas em um outro conjunto de tabelas e&#8230; <strong>Problema</strong>: precisa explicar?</li>
</ol>
<p>Provavelmente você deve estar rindo porque você já se deparou com alguma destas aberrações e que lhe tiraram boas horas de sono. Horas estas que poderiam muito bem ter sido poupadas se ferramentas certas fossem usadas. E é nesta hora que ampliar um pouco os horizontes e, neste caso, conhecer um pouco sobre NoSQL iria resolver sua vida.</p>
<h3>No<span style="text-decoration: line-through;">SQL</span>ACID</h3>
<p><a href="http://en.wikipedia.org/wiki/NoSQL" target="_blank">NoSQL</a> é o termo usado para se referir a um conjunto de novas tecnologias de armazenamento de dados que não seguem as regras estabelecidas pela álgebra relacional e podem não conter todas as propriedades que caracterizam um banco de dados relacional como transacional.</p>
<p>Na verdade, embora o termo leve &#8220;SQL&#8221; no nome, seria muito mais correto se o nome fosse NoACID, uma vez que, em troca de obter coisas como <a href="http://en.wikipedia.org/wiki/Scalability#Scale_horizontally_.28scale_out.29" target="_blank">escalabilidade horizontal</a> e/ou habilidade para lidar com imensos conjuntos de dados (e considere algo como imenso a partir do momento em que você tiver que movimentar algumas dezenas de Terabytes) de maneira muito rápida, estes bancos de dados NoSQL abrem mão de coisas como consistência e o tamanho do escopo de uma transação (explicações sobre isso ficam para um próximo post). E, para o contexto em estes bancos foram criados (a maioria nasceu como solução de armazenamento de informações para redes sociais ou sites de mídia), o trade-off ACID x escalabilidade valia muito a pena. Afinal de contas, ninguém vai morrer se o Orkut perder uma ou duas atualizações de profiles. Por outro lado, este mesmo trade-off não faz o menor sentido para uma aplicação de compensação financeira, por exemplo (se fizer sentido para você, diga-me para qual banco você trabalha, por favor).</p>
<p>Além da questão de consistência, outra característica comum e muito interessante destes bancos é o fato de eles serem <em>schema-free</em>, i.e., diferentemente de um banco de dados relacional, em que entidades são mapeadas como tabelas, que possuem uma estrutura de dados bem definida usando colunas (que possuem um tamanho fixo), um banco de dados não-relacional pode guardar um vários tipos de entidades cada qual com estruturas diferentes. Por exemplo, você pode ter uma entidade Pessoa no seu sistema, mas as instâncias desta entidade podem ter estruturas diferentes entre si.</p>
<p>E, por fim, embora o nome (banco de dados não-relacional) sugira erradamente que estes bancos não  permitem relacionamento entre entidades, a maioria deles suporta os  mesmos tipos de relacionamentos que bancos relacionais suportam (1-1,  1-N, N-M,&#8230;), apesar das implementações destas poderem diferir um pouco  do jeito relacional de ser. Além disso, bancos orientados a  documentos permitem um tipo de relacionamento que não existe em  bancos relacionais que é a incorporação, ou seja, um documento pode embutir outros documentos em sua estrutura.</p>
<h3>E por onde começar?</h3>
<p>Primeiro de tudo, escolha uma das várias alternativas de bancos não-relacionais disponíveis por aí. Eu sou meio suspeito, gosto muito do <a href="http://mongodb.org" target="_blank">MongoDB</a> e do <a href="http://couchdb.apache.org/" target="_blank">CouchDB</a>, dois bancos de dados orientados a documentos e que usam Javascript como linguagem para manipulação de dados. Mas existem outras alternativas muito boas, como o <a href="http://incubator.apache.org/cassandra/">Apache Cassandra</a>, <a href="http://riak.basho.com/" target="_blank">Riak</a> ou <a href="http://code.google.com/p/redis/">Redis</a> (que são do tipo key-value) ou o <a href="http://neo4j.org/">Neo4J</a> (banco de dados de grafos). Em segundo lugar, esqueça por alguns instantes SQL, pare de pensar em forma de tabelas, projeções, JOINs, etc etc etc. Muitas vezes o desenho que estamos acostumados a dar às nossas entidades no mundo relacional são completamente diferentes do desenho a que teremos numa abordagem orientada a documentos, por exemplo. E, por fim, não entre no hype do NoSQL e comece a tentar enfiar bancos não-relacionais em qualquer lugar porque nem sempre eles serão a melhor solução. NoSQL não é silver bullet <img src='http://nullability.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=11</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>0/52 &#8230;</title>
		<link>http://nullability.org/blog/?p=4</link>
		<comments>http://nullability.org/blog/?p=4#comments</comments>
		<pubDate>Fri, 08 Jan 2010 17:17:53 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[x/52]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=4</guid>
		<description><![CDATA[Eu já fui um cara muito mais eloquente e bem pouco criterioso em relação ao que eu decidia escrever, e isso resultava em um blog cheio de atualizações (muitas vezes quase diárias) e um conteúdo relativamente pobre, proporcionalmente à quantidade de conteúdo gerado. Com o tempo, eu fui ficando, senão menos eloquente, pelo menos mais [...]]]></description>
			<content:encoded><![CDATA[<p>Eu já fui um cara muito mais eloquente e bem pouco criterioso em relação ao que eu decidia escrever, e isso resultava em um blog cheio de atualizações (muitas vezes quase diárias) e um conteúdo relativamente pobre, proporcionalmente à quantidade de conteúdo gerado. Com o tempo, eu fui ficando, senão menos eloquente, pelo menos mais criterioso em relação ao que eu publico, mesmo porque ficar apenas repetindo a mesma opinião de todo mundo não agrega muito, o que tem feito com que este blog ficasse sob espessa camada de poeira e com várias teias de aranha devido à pouca atualização.</p>
<p>Mas, o fato é que começamos 2010 e botei na minha cabeça que, além de me exercitar todos os dias, acordar cedo, parar de tomar refrigerantes e moderar o consumo de doces, eu vou passar a atualizar este blog regularmente, muito disso inspirado pelos meus colegas de Locaweb, como <a href="http://fabiokung.com/" target="_blank">Fábio Kung</a>, <a href="http://agileandart.blogspot.com" target="_blank">Daniel Cuckier</a> e <a href="http://akitaonrails.com/" target="_blank">Fábio Akita</a>. E, por &#8220;regularmente&#8221;, entenda-se 1 vez por semana, ao menos, o que, ao final deste ano vai resultar em, no mínimo, 52 posts.</p>
<p>Claro, eventualmente, posso acabar me atrasando e entregar dois posts em uma semana, mas o objetivo é ter 52 posts até 31/12/2010 <img src='http://nullability.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mas não 52 posts quaisquer. Minha idéia é que estes 52 textos tratem não só sobre tecnologia ou arquitetura de software, mas também tratem sobre vários outros aspectos que fazem parte do nosso mundinho de desenvolvimento de software, tais como relações humanas, aspectos econômicos ou qualquer outra coisa que nos afete <img src='http://nullability.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  E, lógico, aceito sugestões de temas também.</p>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=4</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De volta (novamente)</title>
		<link>http://nullability.org/blog/?p=3</link>
		<comments>http://nullability.org/blog/?p=3#comments</comments>
		<pubDate>Fri, 11 Dec 2009 03:08:38 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://nullability.org/blog/?p=3</guid>
		<description><![CDATA[Este blog está parcialmente de volta. Acabei de migrá-lo para os servidores da Locaweb, empresa para qual estou trabalhando desde novembro, embora ainda não tenha restaurado os meus antigos posts (e nem sei se vou). Mas, enfim, estou de volta]]></description>
			<content:encoded><![CDATA[<p>Este blog está parcialmente de volta. Acabei de migrá-lo para os servidores da Locaweb, empresa para qual estou trabalhando desde novembro, embora ainda não tenha restaurado os meus antigos posts (e nem sei se vou). Mas, enfim, estou de volta</p>
]]></content:encoded>
			<wfw:commentRss>http://nullability.org/blog/?feed=rss2&amp;p=3</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
