<?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>Debugando.com &#187; Banco de Dados</title>
	<atom:link href="http://www.debugando.com/categoria/banco-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.debugando.com</link>
	<description>Noticias, dicas e tutorias do mundo da Tecnologia.</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:44:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Rússia aprova fusão da Oracle a Sun, mas com ressalvas</title>
		<link>http://www.debugando.com/russia-aprova-fusao-da-oracle-a-sun-mas-com-ressalvas/</link>
		<comments>http://www.debugando.com/russia-aprova-fusao-da-oracle-a-sun-mas-com-ressalvas/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 22:43:11 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Carreira]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[desenvolvedor mysql]]></category>
		<category><![CDATA[o]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[sun microsystems]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=947</guid>
		<description><![CDATA[


Comissão Europeia já havia aprovado fusão anteriormente.
Oracle prometeu continuar desenvolvendo MySQL; criador duvida.
A agência reguladora antitruste da Rússia, FAS, aprovou nesta         sexta-feira (19/03) a compra da Sun Microsystems pela Oracle por         US$ 7 bilhões sob a condição de que [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Comissão Europeia já havia aprovado fusão anteriormente.<br />
Oracle prometeu continuar desenvolvendo MySQL; criador duvida.</strong></p>
<p>A agência reguladora antitruste da Rússia, FAS, aprovou nesta         sexta-feira (19/03) a compra da <strong>Sun Microsystems</strong> pela <strong>Oracle</strong> por         US$ 7 bilhões sob a condição de que a Oracle continue         desenvolvendo a base de dados MySQL, da Sun.</p>
<p>O FAS afirmou que teria causa para ir à justiça e         pedir por uma invalidação do acordo, já aprovado         incondicionalmente pela União Europeia, caso a Oracle não cumpra         com suas exigências.</p>
<p>“O FAS analisou o pedido e &#8230; decidiu aprová-lo”, afirmou a         agência em comunicado, acrescentando que a aprovação seria         válida apenas se a Oracle cumprir suas exigências em relação ao         MySQL.</p>
<p>A agência afirmou que a Oracle deve continuar         criando novas versões da base de dados dentro das especificações         da licença normalmente acessível e que não deve forçar clientes         a contratar seus serviços caso queiram uma licença comercial         para o uso do MySQL.</p>
<p>O FAS ainda acrescentou que a condição vale por apenas         quatro anos após a conclusão formal do acordo.</p>
<p>Em janeiro, a Oracle conseguiu a aprovação da         União Europeia para a aquisição, após prometer que manterá o         mercado aberto para que outros produzam software de         armazenamento para o MySQL e que aumentará investimentos no         setor.</p>
<p>A empresa também prometeu criar um conselho         separado para consumidores usuários da base de dados do MySQL.         Essas concessões deixaram a reguladora europeia satisfeita de         que o negócio não afetará de maneira nenhuma o mercado.</p>
<p>Mas o criador do MySQL, Michael Widenius, que é         contra o plano de fusão, disse que a decisão executiva da União         Europeia foi errada e divulgou sua oposição na Rússia e na         China.</p>
<p><strong>Fonte:</strong> G1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/russia-aprova-fusao-da-oracle-a-sun-mas-com-ressalvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Operações básica de acesso a dados</title>
		<link>http://www.debugando.com/operacoes-basica-de-acesso-a-dados-2/</link>
		<comments>http://www.debugando.com/operacoes-basica-de-acesso-a-dados-2/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:19:24 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[ado.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[operaçoes basicas de acesso a dados]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=877</guid>
		<description><![CDATA[Como realizar as operações básicas de acesso e manutenção de  dados com C#? Tarefas simples como inserir, atualizar e excluir dados usando a ADO.NET  e C# são mais simples do que você pode pensar.  Abaixo um resumo básico destas operações com C#:

As operações serão feitas na tabela Clientes do banco  de [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: verdana;"><span style="font-size: x-small;">Como realizar as operações básicas de acesso e manutenção de  dados com C#? Tarefas simples como inserir, atualizar e excluir dados usando a ADO.NET  e C# são mais simples do que você pode pensar.  Abaixo um resumo básico destas operações com C#:<br />
</span></span></p>
<p><span style="font-family: verdana;"><span style="font-size: x-small;">As operações serão feitas na tabela <strong>Clientes</strong> do banco  de dados Access <strong>teste.mdb</strong> presente na pasta <a href="file:///c:/teste"> </a><strong>c:\teste</strong>. A seguir o código relacionado a cada operação:</span></span></p>
<p><span style="font-family: verdana;"><span style="font-size: x-small;"><strong>1-</strong> Inserindo dados em uma base de dados Access.</span></span></p>
<table id="AutoNumber1" border="1" cellspacing="0" cellpadding="0" width="76%" bordercolor="#111111">
<tbody>
<tr>
<td width="100%" bgcolor="#efefef"><span style="font-family: verdana; font-size: x-small;"> <span style="color: #00cc33;"><span style="color: #009933;">// definir a string de conexão</span><br />
</span><span style="color: #0000ff;">string</span> sDBstr = &#8220;Provider=Microsoft.Jet.OLEDB.4.0;Data      Source=c:\test.mdb&#8221;;</p>
<p><span style="color: #009933;">//definir a string SQL<br />
</span><span style="color: #0000ff;">string</span> sSQL = &#8220;SELECT * from Name&#8221;;</p>
<p><span style="color: #009933;">//criar o objeto connection</span><br />
OleDbConnection oCn = new OleDbConnection(sDBstr);</span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;"> //abrir a conexão</span><br />
oCn.Open(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//criar o data adapter e executar a consulta</span><br />
OleDbDataAdapter oDA = new OleDbDataAdapter(sSQL,oCn); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//criar o DataSet<br />
</span>DataSet oDs = new DataSet(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//Preencher o dataset coom o data adapter<br />
</span>oDA.Fill(oDs,&#8221;Name&#8221;);</p>
<p><span style="color: #009933;">//criar um objeto Data Row<br />
</span>DataRow oDR = oDs.Tables["Name"].NewRow(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//Preencher o datarow com valores<br />
</span>oDR["Name"] = &#8220;Yateen&#8221; </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;">oDR["Id"] = &#8220;10&#8243;; </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//Incluir um datarow ao dataset<br />
</span>oDs.Tables["Name"].Rows.Add(oDR); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//Usar o objeto Command Bulder para gerar o      Comandop Insert<br />
</span>OleDbCommandBuilder oCB = new OleDbCommandBuilder(oDA);</span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//Atualizar      o BD com valores do Dataset<br />
</span>oDA.Update(oDs,&#8221;Name&#8221;);</p>
<p><span style="color: #009933;">//liberar o data adapter , o dataset , o comandbuilder      e a conexao<br />
</span>oDA.Dispose(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;">oDs.Dispose(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;">oCB.Dispose(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;">oCn.Dispose(); </span></td>
</tr>
</tbody>
</table>
<p><span style="font-size: x-small;"><strong>2- </strong>Atualizar dados em uma base de dados Access.</span></p>
<table id="AutoNumber2" border="1" cellspacing="0" cellpadding="0" width="75%" bordercolor="#111111">
<tbody>
<tr>
<td width="100%" bgcolor="#efefef"><span style="font-family: Verdana;"> <span style="font-size: x-small;"> <span style="color: #00cc33;"><span style="color: #009933;">// definir a string de conexão</span><br />
</span><span style="color: #0000ff;">string</span> sDBstr = &#8220;Provider=Microsoft.Jet.OLEDB.4.0;Data      Source=c:\test.mdb&#8221;;</p>
<p><span style="color: #009933;">//definir a string SQL<br />
</span><span style="color: #0000ff;">string</span> sSQL = &#8220;SELECT * from Name&#8221;;</p>
<p><span style="color: #009933;">//criar o objeto connection</span><br />
OleDbConnection oCn = new OleDbConnection(sDBstr);</span></span><span style="font-family: Verdana; font-size: x-small;"><span style="color: #009933;"> //abrir a conexão</span><br />
oCn.Open();</p>
<p><span style="color: #009933;">//criar o data adapter e executar a consulta</span><br />
OleDbDataAdapter oDA = new OleDbDataAdapter(sSQL,oCn);</p>
<p><span style="color: #009933;">//criar o DataSet<br />
</span>DataSet oDs = new DataSet();</p>
<p></span> <span style="font-family: verdana; font-size: xx-small;"><span style="font-family: Verdana; font-size: x-small;"> <span style="color: #009933;">//Preencher o dataset coom o data adapter<br />
</span>oDA.Fill(oDs,&#8221;Name&#8221;); </span></p>
<p></span> <span style="font-family: Verdana; font-size: x-small;"> </span><span style="font-family: Verdana; font-size: x-small;"> <span style="color: #009933;">//cria o DataSet atribuindo ao DataRow o valor da      linha que desejamos atualizar<br />
</span>DataRow oDR = oDs.Tables["Name"] <span style="color: #009933;"> <span style="color: #000000;">.Rows[3];</span></p>
<p>//Preenche o datarow with valores<br />
</span>oDR["Name"] = &#8220;Macoratti&#8221; </span></p>
<p><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"> <span style="font-family: verdana; font-size: x-small;"> </span></span></span><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//Usar o objeto Command Bulder para gerar o Comando      Update<br />
</span>OleDbCommandBuilder oCB = new OleDbCommandBuilder(oDA);</span></span></span></p>
<p><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;"> </span></span></span><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//Atualizar      o BD com valores do Dataset<br />
</span>oDA.Update(oDs,&#8221;Name&#8221;);</p>
<p><span style="color: #009933;">//liberar o data adapter , o dataset , o comandbuilder      e a conexao<br />
</span>oDA.Dispose(); </span></span></span></p>
<p><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;"> </span></span></span><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;">oDs.Dispose(); </span></span></span></p>
<p><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;"> </span></span></span><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;">oCB.Dispose(); </span></span></span></p>
<p><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;"> </span></span></span><span style="font-family: Verdana; font-size: x-small;"><span style="font-family: verdana;"><span style="font-family: verdana; font-size: x-small;">oCn.Dispose(); </span> </span> </span></td>
</tr>
</tbody>
</table>
<p><span style="font-family: Verdana; font-size: x-small;">3- Excluir dados de uma base de dados Access.</span></p>
<table id="AutoNumber3" border="1" cellspacing="0" cellpadding="0" width="75%" bordercolor="#111111">
<tbody>
<tr>
<td width="100%" bgcolor="#efefef"><span style="font-family: Verdana; font-size: x-small;"> <span style="font-family: Verdana;"> <span style="font-size: x-small;"> <span style="color: #00cc33;"><span style="color: #009933;">// definir a string de conexão</span><br />
</span><span style="color: #0000ff;">string</span> sDBstr = &#8220;Provider=Microsoft.Jet.OLEDB.4.0;Data      Source=c:\test.mdb&#8221;;</p>
<p><span style="color: #009933;">//definir a string SQL<br />
</span><span style="color: #0000ff;">string</span> sSQL = &#8220;SELECT * from Name&#8221;;</p>
<p><span style="color: #009933;">//criar o objeto connection</span><br />
OleDbConnection oCn = new OleDbConnection(sDBstr);</span></span></span><span style="font-family: Verdana; font-size: x-small;"><span style="color: #009933;"> //abrir a conexão</span><br />
oCn.Open(); </span></p>
<p><span style="font-family: Verdana; font-size: x-small;"> </span><span style="font-family: Verdana; font-size: x-small;"><span style="color: #009933;">//criar o data adapter e executar a consulta</span><br />
OleDbDataAdapter oDA = new OleDbDataAdapter(sSQL,oCn); </span></p>
<p><span style="font-family: Verdana; font-size: x-small;"> </span><span style="font-family: Verdana; font-size: x-small;"><span style="color: #009933;">//criar o DataSet<br />
</span>DataSet oDs = new DataSet(); </span></p>
<p><span style="font-family: Verdana; font-size: x-small;"> <span style="font-family: verdana; font-size: xx-small;"><span style="font-family: Verdana; font-size: x-small;"> <span style="color: #009933;">//Preencher o dataset coom o data adapter<br />
</span>oDA.Fill(oDs,&#8221;Name&#8221;); </span></p>
<p></span> </span><span style="font-family: Verdana; font-size: x-small;"> <span style="color: #009933;">//Exclui a linha desejada<br />
</span>oDs.Tables["Name"]</span><span style="font-family: Verdana; font-size: xx-small;"><span style="color: #009933; font-size: x-small;"><span style="color: #000000;">.Rows[3].Delete();</span></p>
<p></span></span> <span style="font-family: verdana; font-size: x-small;"> <span style="color: #009933;">/Usar o objeto Command Bulder para gerar o Comandop      Delete<br />
</span>OleDbCommandBuilder oCB = new OleDbCommandBuilder(oDA);</span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;"><span style="color: #009933;">//Atualizar      o BD com valores do Dataset<br />
</span>oDA.Update(oDs,&#8221;Name&#8221;);</p>
<p><span style="color: #009933;">//liberar o data adapter , o dataset , o comandbuilder      e a conexao<br />
</span>oDA.Dispose(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;">oDs.Dispose(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;">oCB.Dispose(); </span></p>
<p><span style="font-family: verdana; font-size: x-small;"> </span><span style="font-family: verdana; font-size: x-small;">oCn.Dispose(); </span></td>
</tr>
</tbody>
</table>
<p>Sao operaçoes simples, mais muito valiosas!</p>
<p><span style="font-family: Verdana; font-size: x-small;"><strong>Fonte:</strong> Macoratti.NET<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/operacoes-basica-de-acesso-a-dados-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dica: Migrando MySQL para PostgreSQL</title>
		<link>http://www.debugando.com/dica-migrando-mysql-para-postgresql/</link>
		<comments>http://www.debugando.com/dica-migrando-mysql-para-postgresql/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 12:08:32 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[migrando mysql]]></category>
		<category><![CDATA[migrando MySQL para PostgreSQL]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=800</guid>
		<description><![CDATA[Migrando MySQL para PostgreSQL
Você pode já ter lido vários artigos sobre esse assunto na web, mas provavelmente conseguiu apenas partes da informação necessária. É hora de colocar tudo junto e na prática.
Você tem um projeto/sistema rodando no MySQL e de repente você descobre que você precisa migrar para PostgreSQL. E você se depara com um [...]]]></description>
			<content:encoded><![CDATA[<h1><a href="http://www.debugando.com/wp-content/uploads/2010/01/postgresql_logo.png"><img class="alignleft size-full wp-image-801" style="margin: 5px;" title="postgresql_logo" src="http://www.debugando.com/wp-content/uploads/2010/01/postgresql_logo.png" alt="" width="192" height="149" /></a>Migrando MySQL para PostgreSQL</h1>
<p>Você pode já ter lido vários artigos sobre esse assunto na web, mas provavelmente conseguiu apenas partes da informação necessária. É hora de colocar tudo junto e na prática.</p>
<p>Você tem um projeto/sistema rodando no MySQL e de repente você descobre que você precisa migrar para PostgreSQL. E você se depara com um SQL diferente para cada plataforma, o MySQL trabalha com SQL e o PostgreSQL trabalha com <strong>PL/SQL</strong>, mas você não tem tempo para reescrever o código do zero e, logicamente, se você tiver tempo de reestruturar o seu projeto para PostgreSQL, o seu Data Base vai ficar mais organizado e, como um bom Data Base deve ser com relacionamento entre tabelas, trigger, functions e etc.</p>
<p>Na verdade, pode haver boas razões para migrar um Data Base de MySQL para PostgreSQL:</p>
<ul>
<li>Você podera vender o seu produto com total tranquilidade (<a href="http://www.postgresql.org/about/licence">PostgreSQL é licenciada BSD</a>, <a href="http://www.mysql.com/about/legal/">o diferente de  MySQL</a>)</li>
<li> Você pode encontrar artigos &#8220;Migrando MySQL para PostgreSQL&#8221; na web, mas você não vai encontrar nenhuma &#8220;Migrando PostgreSQL para MySQL&#8221;</li>
<li>PostgreSQL não pode ser apenas mais um péssimo banco de dados se o Skype, Cisco, Juniper, IMDb, Pandora ou NOVA TV decidiram confiar nele, além de a Sun Microsystems tê-lo tornado como base de dados de escolha (o que é extremamente hilario, já que em janeiro de 2008 ela comprou o MySQL)</li>
</ul>
<p>No PostgreSQL você ainda pode sentir um pouco como se senti uma pessoa com segurança particular. Existem alguns grandes projetos como o Asterisk, Horde ou DBMail que já reconheceram suas qualidades e que, embora o MySQL tenha sido sua primeira escolha de Banco de Dados, eles estão demonstrando grande esforço para fazer tudo funcionar corretamente.</p>
<h4>Convertendo Base de Dados MySQL para PostgreSQL</h4>
<p>Primeiro vamos fazer Backup de nossa Data Base MySQL com o software mysqldump do próprio MySQL:</p>
<div>
<pre><strong><code>"mysqldump --compatible=postgresql bancodedados &gt; bkp-bancodedados.sql"</code></strong></pre>
</div>
<p>Convertendo caracteres para o SQL ficar funcional no PostgreSQL:</p>
<div>
<pre><code><strong>"sed "s/\\\'/\'\'/g" bkp-bancodedados.sql"</strong>

<strong>*</strong> Este processo vai demorar muito tempo porque o software "sed" varrerá
 todo o arquivo para fazer a conversão</code></pre>
<p>Colocando para funcionar: importando para o PostgreSQL</p>
<div>
<pre><strong><code>"psql -h server -d databasename -U username -W &lt; bkp-bancodedados.sql"</code></strong></pre>
</div>
<p>Com isso você migrou sua estrutura de Dados de MySQL para PostgreSQL.</p>
<p>Fonte: iMasters</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/dica-migrando-mysql-para-postgresql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle acalma clientes da Sun, mas descontinua Projeto Kenai</title>
		<link>http://www.debugando.com/oracle-acalma-clientes-da-sun-mas-descontinua-projeto-kenai/</link>
		<comments>http://www.debugando.com/oracle-acalma-clientes-da-sun-mas-descontinua-projeto-kenai/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 15:28:25 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Carreira]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[oracle compra sun]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=786</guid>
		<description><![CDATA[Segundo o presidente da Oracle, Charles Phillips, a compra da Sun pela Oracle, que foi concluída esta semana e cujo valor foi de US$ 7,4 bilhões, não deve preocupar os clientes da companhia adquirida.
Em evento transmitido ontem para a imprensa mundial via webcast, o executivo afirmou que não haverá demissões em massa, nem perda de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.debugando.com/wp-content/uploads/2010/01/oracle_use.jpg"><img class="alignleft size-full wp-image-787" title="oracle" src="http://www.debugando.com/wp-content/uploads/2010/01/oracle_use.jpg" alt="" width="170" height="106" /></a>Segundo o presidente da Oracle, Charles Phillips, a compra da Sun pela Oracle, que foi concluída esta semana e cujo valor foi de US$ 7,4 bilhões, não deve preocupar os clientes da companhia adquirida.</p>
<p>Em evento transmitido ontem para a imprensa mundial via webcast, o executivo afirmou que não haverá demissões em massa, nem perda de produtos em uso, e sim um upgrade das soluções e serviços.</p>
<p>O CEO da Oracle, Larry Ellison, disse ao Wall Street Journal que a ideia da empresa é contratar, nos próximos meses, mais dois mil funcionários, nos setores de vendas e engenharia.</p>
<p>O porém fica por conta do <strong>Projeto Kenai</strong>, que, de acordo com a Oracle, será descontinuado. Em um FAQ voltado à aquisição da Sun, a Oracle afirmou que continuará utilizando o projeto apenas internamente e vai buscar meios para que seus clientes possam tirar algum proveito disso. O cronograma para que usuários retirem dados e projetos do Kenai será disponibilizado no site do projeto.</p>
<p>Com a tecnologia da Sun, a Oracle lança o <strong>Exadata Database Machine 2</strong>, uma solução de hardware e software capaz de processar em até dez vezes menos tempo do que os equipamentos tradicionais. O objetivo da Oracle é concorrer em pé de igualdade com concorrentes como IBM e EMC.</p>
<p><strong>Fonte:</strong> iMasters</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/oracle-acalma-clientes-da-sun-mas-descontinua-projeto-kenai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Os maiores bancos de dados do mundo</title>
		<link>http://www.debugando.com/os-maiores-bancos-de-dados-do-mundo/</link>
		<comments>http://www.debugando.com/os-maiores-bancos-de-dados-do-mundo/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 21:09:32 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[maior banco de dados]]></category>
		<category><![CDATA[o maior banco de dados do mundo]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=776</guid>
		<description><![CDATA[Quem trabalha com banco de dados ja deve ter tido a curiosidade de saber qual o maior banco de dados do mundo, para ter noção do tamanho, da grandeza da administração e do tempo que deve executar uma instrução SQL, rebuild de índice e tudo mais.
Entao, achei alguns materiais na internet que falam justamente desses [...]]]></description>
			<content:encoded><![CDATA[<p>Quem trabalha com banco de dados ja deve ter tido a curiosidade de saber qual o maior banco de dados do mundo, para ter noção do tamanho, da grandeza da administração e do tempo que deve executar uma instrução SQL, rebuild de índice e tudo mais.</p>
<p>Entao, achei alguns materiais na internet que falam justamente desses bancos de dados, que podem ser de diferentes fabricantes,<strong> </strong>tanto<strong> Oracle, IBM, Microsoft, PostGreSQL</strong> e etc. O mais interessante são os números ou métricas que chegaram nessas conclusões e relatam um pouco da infra-estrutura utilizada para cada ambiente de banco de dados.</p>
<p>È importante também é saber que esses artigos e documentos não são de fontes oficiais das empresas ou de alguma organização responsável e séria sobre esse específico tipo de assunto. Como hoje em dia temos o TPC.ORG, que corresponde aos benchmarks sobre Performance vs Custo, esses documentos são meramente para matarmos algumas curiosidades, mas nada confirmado pelas empresas ou estabelecimentos que utilizam esses bancos de dados.</p>
<p>O documento que está abaixo relata o TOP 10 dos maiores bancos de dados do Mundo, e o mais interessante do documento são os números que os tornam gigantescos. O documento pode ser lido aqui: <strong>Top Largest Databases in the World We all collected</strong></p>
<p>Porém, se continuar navegando um pouco mais na internet, irá se deparar com um artigo da ComputerWorld falando que o maior banco de dados do mundo é do <strong>Yahoo!</strong>, que possui um banco de dados na casa dos 2 PB (PetaBytes). Veja:</p>
<p><strong>Yahoo! The database 2 PetaBytes</strong>.</p>
<p>Mas, como é um artigo do ano de 2008, talvez esses números já estejam bem maiores. E sou da opinião que devem existir bancos de dados bem maiores dos que os divulgados e analisados. Um exemplo para ampliar a curiosidade são as bases de dados de organizações como:</p>
<p><strong>*</strong> Organizações que cuidam do clima (Cálculos e Imagens);<br />
<strong>*</strong> Empresas que trabalham com tecnologia GIS (Mapeamento &#8211; GPS);<br />
<strong>*</strong> Empresas de Media Center.</p>
<p>E por último o DETRAN-SP, se o estado tem a terceira maior frota de automóveis do mundo e a cidade tem radar para tudo que é lado, imagina a quantidade de transações diárias (com imagem da placa do seu carro) que é gerada por hora para cada multa? Fico curioso para saber o tamanho dessa base.</p>
<p><strong>Fonte:</strong> iMasters</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/os-maiores-bancos-de-dados-do-mundo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uma solução para problemas de charset com Oracle e Rails</title>
		<link>http://www.debugando.com/uma-solucao-para-problemas-de-charset-com-oracle-e-rails/</link>
		<comments>http://www.debugando.com/uma-solucao-para-problemas-de-charset-com-oracle-e-rails/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 16:08:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[problemas de charset com Oracle e Rails]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=130</guid>
		<description><![CDATA[Ontem comentei o meu problema com charset entre Oracle e uma aplicação web que estou fazendo. O problema era o seguinte: ao preencher campos de texto de um formulário com caracteres acentuados, os mesmos eram inseridos como se fossem dois caracteres de interrogação (??).
Essa aplicação tem como pré-requisito o uso de UTF-8, pois é feita [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem comentei o meu problema com charset entre Oracle e uma aplicação web que estou fazendo. O problema era o seguinte: ao preencher campos de texto de um formulário com caracteres acentuados, os mesmos eram inseridos como se fossem dois caracteres de interrogação (??).</p>
<p>Essa aplicação tem como pré-requisito o uso de UTF-8, pois é feita com o framework Ruby on Rails. Minhas buscas pelo Google tinham me colocado apenas em uma direção: modificar o charset do banco de dados a partir de um penoso procedimento de backup/restore. Mas, conversando com o meu colega de trabalho Luiz (que não tem blog, infelizmente) descobri que ele já havia tido o mesmo problema antes e a solução, aparentemente, era bem mais simples (e mágica).</p>
<p>O Rails interage com o Oracle por intermédio da biblioteca Ruby <a href="http://ruby-oci8.rubyforge.org/">oci8</a>. A solução mágica consiste em definir a variável de ambiente <code>NLS_LANG</code> com o valor <code>BRAZILIAN PORTUGUESE_BRAZIL.UTF8</code> antes que o código da biblioteca seja carregado. Mais informações oficiais sobre a variável <a href="http://www.oracle.com/webapps/online-help/reports/10.1.2/state/content/navId.3/navSetId._/vtTopicFile.htmlhelp_rwbuild_hs%7Crwrefex%7Cenvvars%7Cenvvar_nls_lang%7Ehtm/">aqui</a> e <a href="http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm">aqui</a>.</p>
<p>De acordo com a documentação oficial, essa variável não especifica apenas 1, mas <strong>3 valores</strong>: <code>LINGUAGEM_TERRITÓRIO.CHARSET</code>. No meu caso, portanto, foram especificados:</p>
<ul>
<li>LINGUAGEM: <code>BRAZILIAN PORTUGUESE</code></li>
<li>TERRITÓRIO: <code>BRAZIL</code></li>
<li>CHARSET: <code>UTF8</code></li>
</ul>
<p>Note que, para a minha aplicação web, apenas o <code>CHARSET</code> é relevante. Até onde li na documentação, <code>LINGUAGEM</code> e <code>TERRITÓRIO</code> servem mais para indicar ao Oracle como ele deve exibir mensagens de erro ou formatar datas para apresentação. <code>CHARSET</code> <em>parece</em> indicar ao Oracle que faça uma conversão entre o charset real do banco de dados e o valor do charset especificado em <code>NLS_LANG</code> <em>no momento da leitura de dados</em>. Portanto, os dados continuam sendo armazenados com o charset original, mas quando o Rails solicita esses dados a partir da biblioteca oci8, o Oracle os converte para UTF-8 (neste caso) e depois os entrega. Essa parece ser uma boa explicação para o correto funcionamento da aplicação <em>após</em> a definição dessa variável, mas o problema que relato ao fim do artigo mostra que, na prática, a teoria é outra.</p>
<p>Testei duas maneiras de definir essa variável. A primeira é colocar a seguinte linha no arquivo ~/.bashrc do usuário no qual o servidor de aplicação roda:</p>
<pre><code>export NLS_LANG='BRAZILIAN PORTUGUESE_BRAZIL.UTF8'
</code></pre>
<p>Mas acho mais interessante embutir essa declaração dentro do próprio código da aplicação. Não sei qual o local mais apropriado para isso, mas inserir esta linha no início do arquivo <code>config/environment.rb</code> funcionou:</p>
<pre><code>ENV['NLS_LANG']='BRAZILIAN PORTUGUESE_BRAZIL.UTF8'
</code></pre>
<p>Essa solução resolveu o problema completamente? <strong>Não</strong>. Para textos inseridos a partir da aplicação web, caracteres acentuados são gravados no banco de dados e lidos da forma correta (não são substituídos por um ou dois sinais de interrogação). Mas essa solução estava simples demais para ser verdade, certo?</p>
<p>Como estou desenvolvendo a aplicação web sobre um banco de dados já existente, e que já possui dados, rodei o servidor de aplicação em modo de produção para ver se os dados <em>já existentes</em> eram apresentados corretamente também. Resultado: <strong>problemas de acentuação novamente</strong>. Os caracteres acentuados lidos do banco de dados são trocados por pontos de interrogação.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/uma-solucao-para-problemas-de-charset-com-oracle-e-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Conectando C# ao MySQL</title>
		<link>http://www.debugando.com/conectando-c-ao-mysql/</link>
		<comments>http://www.debugando.com/conectando-c-ao-mysql/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 20:42:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=635</guid>
		<description><![CDATA[Quem está habituado a programar C# normalmente utiliza SQL Server como banco de dados, uma vez que ela está integrada no Visual Studio e, por isso mesmo, existe grande facilidade em trabalhar com as duas ferramentas.
Por vezes existem projetos em que se torna conveniente (por várias razões) utilizar outro tipo de base de dados. Seja [...]]]></description>
			<content:encoded><![CDATA[<p>Quem está habituado a programar C# normalmente utiliza SQL Server como banco de dados, uma vez que ela está integrada no Visual Studio e, por isso mesmo, existe grande facilidade em trabalhar com as duas ferramentas.</p>
<p>Por vezes existem projetos em que se torna conveniente (por várias razões) utilizar outro tipo de base de dados. Seja que banco de dados for, a sua integração é sempre diferente do SQL Server.</p>
<p>Neste caso vou mostrar como fazer a integração entre o C# e o MySQL.</p>
<p>Supondo que já existe uma instalação do MySQL na máquina, precisamos instalar um intermediário entre o C# e a base de dados. Neste caso necessitamos instalar o MySQL Connector NET.</p>
<p><a class="ext" href="http://dev.mysql.com/downloads/connector/net/6.0.html">Download</a></p>
<p>A <a class="ext" href="http://dev.mysql.com/downloadshttp://dev.mysql.com/downloads/connector/net/5.2.html">versão 5.2</a> já tem suporte ao Visual Studio 2008, mas eu vou utilizar a última versão (6.0).</p>
<p>Instalamos o Connector Net 6.0.</p>
<p>Devemos já ter uma base de dados com uma tabela (users por exemplo), em que os campos da tabela são: id, nome, email.</p>
<p>Como exemplo criamos um projecto Windows Forms Application.</p>
<p>Antes de mais nada, devemos fazer uma referência à classe que vai ligar o C# ao MySQL. Para isso vamos ao painel Solution Explorer, na raiz do projeto, clicamos com o lado direito do mouse e selecionamos Add Reference.</p>
<p><img src="http://conteudo.imasters.uol.com.br/13681/mysqlcsharp1.gif" alt="" /></p>
<p>Na primeira divisória (.NET) selecionamos a referência MySQL.Data e damos OK.</p>
<p>Não esquecer: incluir no início do código as classes:</p>
<p><em>using  System.Data; </em></p>
<p><em>using MySql.Data.MySqlClient;</em></p>
<p>Sem adicionar a referência à MySQL.Data, a classe MySql.Data.MySqlClient não será reconhecida.</p>
<p>Para exemplificar fazemos um formulário de inserção de dados (nome e e-mail) na base de dados.</p>
<p>No form colocamos duas caixas de texto, uma para o nome (txtNome) e outra para o e-mail (txtMail) e um botão que terá a ação de inserir os dados na base de dados.</p>
<p><img src="http://conteudo.imasters.uol.com.br/13681/mysqlcsharp2.gif" alt="" /></p>
<p>Vamos então definir, em primeiro lugar, o dataset e a string de conexão à base de dados.</p>
<div class="codigo">
<pre><em><code><span class="kwd">private</span><span class="pln"> </span><span class="typ">MySqlConnection</span><span class="pln"> bdConn</span><span class="pun">;</span><span class="pln"> </span><span class="com">//MySQL</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">MySqlDataAdapter</span><span class="pln"> bdAdapter</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">DataSet</span><span class="pln"> bdDataSet</span><span class="pun">;</span><span class="pln"> </span><span class="com">//MySQL</span></code></em></pre>
</div>
<p><em>Na ação do botão:</em></p>
<div class="codigo">
<pre><em><code><span class="com">//Definição do dataset</span><span class="pln">
bdDataSet </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DataSet</span><span class="pun">();</span><span class="pln">
 </span><span class="com">//Define string de conexão</span><span class="pln">
bdConn </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">MySqlConnection</span><span class="pun">(</span><span class="str">"Persist Security  Info=False;server=localhost;database=rfidapp;uid=root;server=localhost;database=rfidapp;uid=root;pwd=''"</span><span class="pun">);</span></code></em></pre>
</div>
<p><em>Neste caso a base de dados não tem password.</em></p>
<div class="codigo">
<pre><em><code><span class="com">//Abre conecção</span><span class="pln">
 </span><span class="kwd">try</span><span class="pun">{</span><span class="pln">
        bdConn</span><span class="pun">.</span><span class="typ">Open</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="kwd">catch</span><span class="pun">{</span><span class="pln">
 </span><span class="typ">MessageBox</span><span class="pun">.</span><span class="typ">Show</span><span class="pun">(</span><span class="str">"Impossível estabelecer conexão"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">//Verifica se a conexão está aberta</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">bdConn</span><span class="pun">.</span><span class="typ">State</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="typ">ConnectionState</span><span class="pun">.</span><span class="typ">Open</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
        </span><span class="com">//Se estiver aberta insere os dados na BD</span><span class="pln">
</span><span class="typ">MySqlCommand</span><span class="pln"> commS </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">MySqlCommand</span><span class="pun">(</span><span class="str">"INSERT INTO regists VALUES('',\\'"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> txtNome </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\\',\\'"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> txtMail </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\\')"</span><span class="pun">,</span><span class="pln"> bdConn</span><span class="pun">);</span><span class="pln">
commS</span><span class="pun">.</span><span class="typ">BeginExecuteNonQuery</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span></code></em></pre>
</div>
<p>Tome atenção na sintaxe do SQL para o MySQL (INSERT) que é um pouco diferente do C#/SQL Server.</p>
<p>Neste momento o formulário deverá  inserir dados no BD.</p>
<p><img src="http://www.pplware.com/wp-content/images/ico_04.jpg" alt="" width="32" height="35" />Fonte: <a href="http://imasters.uol.com.br/artigo/13681/mysql/conectando_c_ao_mysql/" target="_blank">Imasters</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/conectando-c-ao-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Liferay Portal &#8211; Configuração da ligação a uma base de dados MySQL</title>
		<link>http://www.debugando.com/liferay-portal-configuracao-da-ligacao-a-uma-base-de-dados-mysql/</link>
		<comments>http://www.debugando.com/liferay-portal-configuracao-da-ligacao-a-uma-base-de-dados-mysql/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 21:36:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Liferay]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=539</guid>
		<description><![CDATA[1. Criação da Base de Dados MySQL
Criem a base de dados com o nome lportal.
Poderão fazer isto utilizando o MySQL Administrator (a ferramenta de administração do MySQL) ou usando a seguinte linha de comando:
mysqladmin &#8211;default-character-set=utf8 create lportal
2. Configuração do acesso  à base de dados com o eclipse
Abram o Data Source Explorer do eclipse (Window [...]]]></description>
			<content:encoded><![CDATA[<h4>1. Criação da Base de Dados MySQL</h4>
<p>Criem a base de dados com o nome <em>lportal</em>.</p>
<p>Poderão fazer isto utilizando o MySQL Administrator (a ferramenta de administração do MySQL) ou usando a seguinte linha de comando:</p>
<p>mysqladmin &#8211;default-character-set=utf8 create lportal</p>
<h4>2. Configuração do acesso  à base de dados com o eclipse</h4>
<p>Abram o Data Source Explorer do eclipse (Window -&gt; Show view -&gt; Data Source Explorer).</p>
<p>Selecionem o ícone &#8216;New Connection Profile&#8217; ou usem o botão direito do mouse sobre &#8216;Databases&#8217; e depois selecionem &#8216;New&#8217;.</p>
<p>Na janela &#8216;New Connection Profile&#8217; selecionem o tipo SQL Model-JDBC Connection.</p>
<p>No quadro seguinte, indiquem um nome para o perfil (ex: &#8216;Liferay &#8211; Mysql&#8217;).</p>
<p>No último quadro, usem o botão de procura (&#8216;?&#8217;) na lista &#8220;Select a browser&#8221;.</p>
<p>Adicionem uma nova definição:</p>
<ul>
<li>Localizem o template para bases de dados MySQL na árvore (Database -&gt; MySQL -&gt; 5.0 -&gt; MySQL JDBC Driver).</li>
</ul>
<ul>
<li>Alterem as definições do driver:- Alterem o nome para &#8216;Liferay MySQL Driver&#8217;;
<p>- Removam o driver &#8216;default&#8217; e adicionem um novo Jar correspondente ao arquivo $WORKSPACE/ext/lib/development/mysql.jar ($WORKSPACE corresponde à localização da pasta do seu <em>workspace</em> no sistema de arquivos);</p>
<p>- Configurem o valor das propriedades de acesso (username, password, etc?) tendo em atenção que o valor do &#8216;Database Name&#8217; e, por consequência, o final da linha do &#8216;Connection URL&#8217; deverá ser &#8216;lportal&#8217;.</li>
<li> Confirmem as alterações e selecionem agora este driver nas definições do driver (Database -&gt; MySQL -&gt; 5.0 -&gt; Liferay MySQL Driver).</li>
</ul>
<p>Voltem de novo à janela de criação do perfil e validem que todas as informações estão de acordo com a sua configuração (podem testar a ligação a partir desta janela).</p>
<h4>3. Criação do modelo de dados</h4>
<p>Editem o arquivo create-mysql.sql na pasta /sql/create do projecto &#8216;ext&#8217;. Caso não tenham memória para desperdiçar (é o meu caso), respondam afirmativamente quando o eclipse perguntar se pretendem desligar a validação de sintaxe do arquivo.</p>
<p>No topo da janela de edição do ficheiro está a configuração do &#8216;Connection profile&#8217;. Selecionem o tipo Generic JDBC_1.x, o driver &#8216;Liferay &#8211; Mysql&#8217; e a base de dados lportal.</p>
<p><strong>Nota</strong>: caso o status não seja &#8216;Connected&#8217; , vocês não vão conseguir ver o nome da base de dados.<br />
Neste caso devem acessar o Data Source Explorer ( Window -&gt; Show View -&gt; Data Source Explorer), selecionar a Database &#8216;Liferay &#8211; MySQL&#8217; e fazer connect (botão direito do mouse)</p>
<p>Comentem as três primeiras linhas do ficheiro, uma vez que a base de dados já foi criada</p>
<ul>
<li>drop database if exists lportal;</li>
<li>create database lportal character set utf8;</li>
<li>use lportal;</li>
</ul>
<p>Gravem e executem o sql (ctrl+alt+X ou Execute All no menu contextual).</p>
<h4>4. Configuração do datasource no tomcat</h4>
<p>Editem o arquivo Root.xml localizado na pasta servers/tomcat/conf/Catalina/localhost do projeto &#8216;ext&#8217;.</p>
<p>Comentem o datasource do Hypersonic e  descomentem o datasource do MySQL.</p>
<p>Preencham os atributos username e password e, caso não estejam usando os valores <em>default</em> do MySQL, editem também o valor do atributo url, de acordo com a sua configuração.</p>
<p>Gravem as alterações.</p>
<h4>5. Deploy da configuração para o servidor</h4>
<p>Copiem o arquivo Root.xml para a pasta conf/Catalina/localhost do tomcat.</p>
<p>Copiem e o arquivo mysql.jar para para a pasta lib/ext do tomcat.</p>
<p><em>Fonte: <a onclick="javascript:urchinTracker ('/outbound/article/www.pplware.com');" href="http://imasters.uol.com.br/artigo/12283/mysql/liferay_portal_-_configuracao_da_ligacao_a_uma_base_de_dados_mysql/" target="_blank">Imasters</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/liferay-portal-configuracao-da-ligacao-a-uma-base-de-dados-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cluster no MySQL &#8211; Parte 2</title>
		<link>http://www.debugando.com/cluster-no-mysql-parte-2/</link>
		<comments>http://www.debugando.com/cluster-no-mysql-parte-2/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 14:14:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Cluster]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=537</guid>
		<description><![CDATA[Antes de entrar nos detalhes técnicos, recomendo a todos que estiverem lendo esta coluna que confiram a primeira parte da configuração do cluster, onde mostro qual é a arquitetura da solução e discuto alguns aspectos de um cluster MySQL. A primeira parte pode ser encontrada aqui.
A partir do diagrama mostrado no artigo anterior precisamos fazer [...]]]></description>
			<content:encoded><![CDATA[<p>Antes de entrar nos detalhes técnicos, recomendo a todos que estiverem lendo esta coluna que confiram a primeira parte da configuração do cluster, onde mostro qual é a arquitetura da solução e discuto alguns aspectos de um cluster MySQL. A primeira parte pode ser encontrada <a href="http://imasters.uol.com.br/artigo/11673/mysql/cluster_no_mysql_-_parte_01/">aqui</a>.</p>
<p>A partir do diagrama mostrado no artigo anterior precisamos fazer uma instalação nova do MySQL no servidor 192.168.1.35. O servidor 192.168.1.15 conterá as ferramentas administrativas do cluster e não precisa do MySQL instalado. Contudo, as ferramentas administrativas do cluster são distribuídas junto com os arquivos do MySQL.</p>
<p>A instalação do MySQL no servidor 192.168.1.35 deve ser feita da mesma maneira que o servidor já existente, isto é, o MySQL no servidor 192.168.1.35 deve conter todas as opções e configurações do servidor 192.168.25, pois a idéia é que o cluster funcione de forma transparente para a aplicação. Além disso, também é preciso transferir os usuários, objetos e permissões, pois o banco de dados será criado posteriormente. Em resumo, é preciso primeiro duplicar o ambiente do servidor 192.168.1.25 para o servidor 192.168.1.35, tomando cuidado com as configurações.</p>
<p>Uma vez que os dois servidores MySQL estiverem configurados e sendo executados nos servidores 192.168.1.25 e 192.168.1.35 podemos começar a configuração do cluster. O primeiro passo é configurar o serviço que fará a administração do cluster chamado <strong>mgmd </strong>(management deamon) no servidor 192.168.1.15. Antes de iniciar este serviço é preciso cadastrar os endereços I.P. dos nós do cluster no arquivo de configurações chamado <strong>config.ini</strong>, que está no mesmo diretório dos binários do mysql.</p>
<p>O arquivo <strong>config.ini</strong> possui várias sessões e chaves de configuração. De acordo com a arquitetura do exemplo, precisamos indicar neste arquivo que o servidor 192.168.1.15 conterá as ferramentas administrativas do cluster e que os servidores 192.168.1.25 e 192.168.1.35 serão os nós do cluster. Fazemos isso modificando a chave <strong>HostName</strong> da sessão <strong>[NDB_MGMD]</strong> de modo a colocar o endereço do servidor que conterá as ferramentas administrativas. Para cada nó do cluster devemos colocar o seu endereço na chave <strong>HostName</strong> da sua respectiva sessão <strong>[NDBD]</strong>. A Figura 1 mostra como ficará o arquivo <strong>config.ini</strong> do servidor que contém as ferramentas administrativas do cluster após a modificação de seu conteúdo em um simples editor de texto. As mudanças na seção <strong>[NDB_MGMD]</strong> são destacadas pelo retângulo amarelo e as modificações nas duas seções <strong>[NDBD]</strong> são destacadas pelo retângulo branco.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11901/Parte2_Figura1.png" alt="Figura 1. Modificações no arquivo de configuração config.ini" /><span class="imgdesc">Figura 1. Modificações no arquivo de configuração config.ini</span></p>
<p>Após acertar os endereços IP dos servidores no arquivo de configuração config.ini é preciso iniciar o serviço mgmd (management deamon). Antes de iniciá-lo é preciso ter certeza que os MySQL dos servidores indicados como nós do cluster não estão sendo executados. Para iniciar o serviço mgmd no servidor 192.168.1.15 basta executar o deamon pelo comando ndb_mgmd, como as últimas linhas da Figura 2 mostram. Para verificar se o serviço foi iniciado sem problemas podemos utilizar o seguinte comando que verifica os processos do servidor: ps -A | grep mgm.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11901/Parte2_Figura2.png" alt="Figura 2. Iniciando o servidor ndb_mgmd." /><span class="imgdesc">Figura 2. Iniciando o servidor ndb_mgmd.</span></p>
<p>Após iniciar o serviço podemos nos conectar localmente ou remotamente na ferramenta de administração do cluster. Esta ferramenta chama-se Management Client e é executada pelo comando ndb_mgm. Após iniciar a ferramenta devemos enviar o comando SHOW para verificar o estado do cluster, como mostra a Figura 3.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11901/Parte2_Figura3.png" alt="Figura 3. Executando o Management Client do cluster MySQL." /><span class="imgdesc">Figura 3. Executando o Management Client do cluster MySQL.</span></p>
<p>A ferramenta Management Client é um console para a administração do cluster MySQL no Linux. Após a execução do comando SHOW ela mostra os nós que estão conectados ao cluster. Pode-se notar pela Figura 3 que o cluster colocou o id 2 para o servidor 192.168.1.25 e o id 3 para o servidor 192.168.1.35. A ferramenta também mostra que o id 1 corresponde ao servidor 192.168.1.5, pois ele contém o serviço de administração do cluster (ndb_mdmd). É possível modificar as configurações do cluster, inclusive adicionar ou remover nós, por meio de comandos enviados ao Management Client.</p>
<p>Agora que já configuramos o serviço de administração do cluster é preciso modificar as configurações em cada um dos nós. Estas configurações são armazenadas no arquivo de configuração do MySQL chamado my.cnf. Não devemos nos esquecer de parar o serviço do MySQL antes de alterar o arquivo my.cnf. No exemplo este arquivo estava localizado no diretório /etc/mysql, porém esta localização pode variar de acordo com a instalação do MySQL.</p>
<p>Para configurar um nó de modo que ele faça parte de um cluster MySQL é preciso alterar três chaves em duas sessões do arquivo my.cnf. As duas primeiras chaves são a ndbcluster e a ndb-connectstring, sendo que esta última deve receber o endereço 192.168.1.15, que é o servidor onde o serviço de administração do cluster está instalado. Por padrão, estas chaves estão comentadas com o símbolo cerquilha (#) e estão dentro da sessão [MYSQLD]. Basta retirar os comentários e colocar o valor o endereço IP 192.168.1.15, como mostrado na parte esquerda da Figura 4 e destacada pelo retângulo vermelho.</p>
<p>Também é preciso alterar a chave ndb-connectionstring da sessão [MYSQL_CLUSTER], que também está comentada por padrão e se encontra abaixo da sessão [MYSQLD] no arquivo my.cnf. Da mesma forma que a chave anterior, é preciso colocar o endereço do servidor que contém o serviço de administração do cluster na chave ndb-connectionstring da sessão [MYSQLD]. Esta chave é mostrada à direita na Figura 4 e destacada pelo retângulo preto.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11901/Parte2_Figura4.png" alt="Figura 4. Chaves que devem ser modificadas no arquivo my.cnf" /><span class="imgdesc">Figura 4. Chaves que devem ser modificadas no arquivo my.cnf</span></p>
<p>Após a modificação das chaves no arquivo my.cnf é preciso iniciar o serviço do MySQL. No exemplo iniciei o serviço utilizando o comando mysqld_safe -user=mysql &amp;. Além disso também é preciso iniciar o serviço ndbd nos nós do cluster, pois ele é o responsável por gerenciar o acesso aos arquivos com os dados compartilhados. Os comandos que iniciam os serviços mysql e ndbd são mostrados na Figura 5.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11901/Parte2_Figura5.png" alt="Figura 5. Iniciando os serviços MySQL e ndbd em um dos nós do cluster" /><span class="imgdesc">Figura 5. Iniciando os serviços MySQL e ndbd em um dos nós do cluster</span></p>
<h3>Nota importante:</h3>
<p>é preciso repetir os passos anteriores para cada nó do cluster. Ou seja, tanto para o servidor 192.168.1.25 como para o servidor 192.168.1.35 é preciso alterar o arquivo de configuração my.cnf e iniciar os serviços MySQL e ndbd.</p>
<p>A partir deste momento o cluster já está sendo executado. Podemos enviar o comando SHOW na interface console do Management Client do cluster e verificar que os dois nós já são considerados parte do cluster, como mostra a Figura 6.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11901/Parte2_Figura6.png" alt="Figura 6. Verificando os nós do cluster." /></p>
<p><span class="imgdesc">Figura 6. Verificando os nós do cluster.</span></p>
<p>Apesar de o cluster já estar configurado, a partir desde momento os dois servidores MySQL ainda estão trabalhando de forma independente. Para que possamos usufruir das funcionalidades do cluster é preciso criar manualmente um banco de dados com o mesmo nome em cada servidor e, dentro deste banco de dados, criar tabelas que utilizem o engine de banco de dados NDBCLUSTER. Mas atenção: o banco de dados deve ser criado manualmente nos dois nós com o comando CREATE DATABASE, porém as tabelas precisam ser criadas apenas uma vez em qualquer um dos nós do cluster. A Figura 7 mostra a criação do banco de dados chamado CLUSTER e da tabela TB_ONE em um dos nós do cluster e utilizando os comandos CREATE DATABASE e CREATE TABLE, respectivamente.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11901/Parte2_Figura7.png" alt="Figura 7. Criando o banco de dados CLUSTER e a tabela TB_ONE." /><span class="imgdesc">Figura 7. Criando o banco de dados CLUSTER e a tabela TB_ONE.</span></p>
<p>Como a tabela TB_ONE foi criada utilizando o engine de banco de dados NDBCLUSTER todas as modificações nos dados realizadas em qualquer um dos nós será replicada automaticamente para os demais. Podemos fazer um teste simples incluindo uma linha na tabela TB_ONE em um dos nós e verificar que esta linha foi automaticamente enviada para a tabela TB_ONE do outro nó.</p>
<p>Com o cluster conseguimos montar uma solução que atende a requisitos de alta disponibilidade, pois caso um nó do cluster não esteja operacional isso não será um problema para a aplicação, uma vez que os outros nós funcionaram de forma independente. Quando o nó que apresentou um problema foi iniciado novamente o próprio serviço NDBD irá procurar as informações perdidas e tentará sincronizar os dados da tabela.</p>
<p>Um detalhe importante de ser lembrando é que com o cluster os usuários podem se conectar tanto no servidor 192.168.1.25 (ubuntu02) como no servidor 192.168.1.35 (ubuntu03). Mas se eles tentarem se conectar ao servidor que possui as ferramentas administrativas, cujo endereço é 192.168.1.5 (ubuntu01), eles não conseguiram se conectar. Por isso é recomendável utilizar o serviço MySQLProxy, explicado anteriormente <a href="http://imasters.uol.com.br/artigo/11161/mysql/balanceamento_de_carga_no_mysql_-_parte_1/">aqui</a>, de modo que as aplicações possam se conectar em apenas um servidor que conterá tanto o software de balanceamento de carga como as ferramentas administrativas do cluster. Este é o cenário descrito na primeira parte do artigo, onde sugiro colocar o MySQL Proxy e as ferramentas administrativas do cluster no servidor 192.168.1.5 para montar uma solução completa de balanceamento de carga, tolerância a falhas e replicação dos dados por meio do cluster.</p>
<p>Com isso terminamos a segunda parte do artigo que explica como montar um cluster no MySQL. Nas próximas colunas veremos passo a passo como configurar o serviço de replicação do MySQL.</p>
<p><em>Fonte: <a onclick="javascript:urchinTracker ('/outbound/article/www.pplware.com');" href="http://imasters.uol.com.br/artigo/11901/mysql/cluster_no_mysql_-_parte_2/" target="_blank">Imasters</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/cluster-no-mysql-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cluster no MySQL &#8211; Parte 01</title>
		<link>http://www.debugando.com/cluster-no-mysql-parte-01/</link>
		<comments>http://www.debugando.com/cluster-no-mysql-parte-01/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 14:11:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Cluster]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=535</guid>
		<description><![CDATA[A necessidade de se montar um cluster no MySQL está relacionada à alta disponibilidade das informações e à tolerância a falhas. Com dois ou mais servidores MySQL sendo executados em cluster os dados são automaticamente replicados entre os servidores e cada nó que pertence ao cluster pode ser removido sem afetar a disponibilidade da aplicação.
O [...]]]></description>
			<content:encoded><![CDATA[<p>A necessidade de se montar um cluster no MySQL está relacionada à alta disponibilidade das informações e à tolerância a falhas. Com dois ou mais servidores MySQL sendo executados em cluster os dados são automaticamente replicados entre os servidores e cada nó que pertence ao cluster pode ser removido sem afetar a disponibilidade da aplicação.</p>
<p>O MySQL possui recursos para implementar o cluster nativamente, ou seja, não é preciso instalar nenhum software adicional, além da versão do MySQL já preparada para receber o cluster. O nome utilizado para identificar o componente do MySQL que permite a criação de clusters é NDBCluster e funciona como um engine do banco de dados. Neste artigo utilizarei o MySQL versão 5.0.51 sendo executado em servidores Linux com a distribuição Ubuntu 8.04 (Hard Heron).</p>
<p>O conceito de engine pode confundir alguns usuários que estão acostumados com o SQL Server ou mesmo o Oracle, pois estes produtos não permitem que o usuário escolha o engine do banco de dados. A idéia é que cada engine proporcione características próprias que tragam algum benefício. Por exemplo, no MySQL temos um engine que permite a utilização de transações. Para criar o cluster é preciso indicar que as tabelas que apresentaram a replicação automática utilizam o engine NDBCLUSTER. Notem que não é preciso nenhum hardware específico para a criação de um cluster MySQL.</p>
<p>O cluster do MySQL age de forma transparente, ou seja, a aplicação cliente não precisa saber que o cluster do MySQL está sendo utilizado. Esta característica facilita a utilização desta ferramenta e expande o leque de possibilidades tanto para o desenvolvedor como para quem administra o MySQL. Do ponto de vista de desenvolvimento, não há nenhuma mudança significativa: basta apenas continuar conectando em um endereço IP normalmente. Já para quem administra é preciso cuidados especiais, pois algumas configurações não são replicadas pelo cluster. Por exemplo, os logins e as permissões devem ser configuras nos servidores de forma independente.</p>
<p>É possível utilizar o cluster do MySQL em conjunto com o MySQL Proxy, apresentado em uma <a class="ext" href="http://imasters.uol.com.br/artigo/11161/mysql/balanceamento_de_carga_no_mysql_-_parte_1/">coluna anterior aqui no iMasters</a>. Como o cluster apenas replica as instruções para todos os nós ele não distribui a carga entre os servidores. A utilização do MySQL Proxy com o cluster fornece a consistência ao ambiente, pois desta maneira o cluster garante que as bases de dados ficaram iguais. Já o MySQL Proxy permite dividir a carga entre os servidores de acordo com alguma regra específica. Porém cabe aqui dizer que o MySQL Proxy possui recursos para programar como será feita a distribuição de carga por meio da programação na linguagem LUA.</p>
<p>Os principais componentes de um cluster MySQL são os nós, ou seja, servidores MySQL já instalados. Também é preciso dispor de um servidor que receberá o serviço de administração do cluster. Este servidor que administrará o cluster não requer um MySQL instalado, pois apenas os arquivos binários do servidor NDBCluster precisam ser executados. É possível realizar a manutenção e checar o status do cluster conectando-se ao servidor NDBCluster, remotamente ou não.</p>
<p>Para entender o exemplo que será apresentado vamos observar o diagrama da Figura 1, que traz um cenário onde um sistema qualquer é utilizado por vários usuários. Neste cenário os clientes utilizam a aplicação normalmente se conectando no servidor Linux chamado ubuntu02 cujo endereço I.P é 192.168.1.25. Este cenário não contém nenhum tipo de replicação, balanceamento de carga ou tolerância a falhas. Caso aconteça alguma indisponibilidade do banco de dados do servidor ubuntu02 o uso da aplicação ficará comprometido.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11673/Figura1_OK.png" alt="Figura 1. Ambiente sem balanceamento de carga, replicação e tolerância a falhas." /><span class="imgdesc">Figura 1. Ambiente sem balanceamento de carga, replicação e tolerância a falhas.</span></p>
<p>A partir do ambiente apresentado na Figura 1 vamos montar um cluster com três servidores: um que conterá as ferramentas de administração do cluster e dois servidores MySQL com o mesmo banco de dados que está sendo utilizado pela aplicação. Notem que poderíamos utilizar mais de dois servidores de bancos de dados de acordo com a necessidade. A idéia aqui é que o servidor que conterá as ferramentas administrativas do cluster replique as instruções enviando igualmente os dados entre os dois servidores de bancos de dados de forma simultânea. Desta maneira o cenário contará com a tolerância a falhas, pois se um servidor não estiver disponível o cluster permite que a aplicação ainda continue sendo utilizada, uma vez que um servidor ainda está disponível. A Figura 2 apresenta o cenário com a configuração do cluster.</p>
<p><img src="http://conteudo.imasters.uol.com.br/11673/Figura2_OK.png" alt="Figura 2. Ambiente com um cluster MySQL composto de dois nós." /><span class="imgdesc">Figura 2. Ambiente com um cluster MySQL composto de dois nós.</span></p>
<p>Do ponto de vista da aplicação a única mudança que deve ser feita é a mudança da conexão com o banco de dados: antes a conexão era feita diretamente para o servidor 192.168.1.25 e agora a conexão será para o servidor 192.168.1.15. Novamente, o cluster não requer que o MySQL seja instalado no servidor na qual as aplicações vão se conectar, ou seja, o servidor 192.168.1.15 não precisar ter o MySQL instalado. É preciso apenas contar com os arquivos binários que compõem o serviço do cluster. Estes arquivos binários são encontrados junto com os arquivos de instalação do MySQL.</p>
<p>O funcionamento do cluster evita a falta de sincronia entre os dois servidores. Por exemplo, se um usuário A se conectar ao cluster e fizer uma instrução UPDATE nos dados de uma tabela este UPDATE será automaticamente enviado para os servidores 192.168.1.25 e 192.168.1.35, deixando os bancos de dados em sincronia. Caso algum dos servidores não possa executar a instrução UPDATE por algum motivo um erro é gerado e automaticamente a instrução é cancelada nos dois servidores.</p>
<p>Outra questão a ser considerada é o ponto de falha representado pelo servidor ubuntu01. Se ele ficar off-line a aplicação não poderá se conectar a nenhum dos bancos de dados. Para isso existe como configurar a tolerância de falha para o serviço de cluster em outro servidor de modo que ele detecte esta falha. Porém no exemplo não apresentarei como fazer isso, pois se trata de um tópico mais avançado.</p>
<p>Existem várias formas de se trabalhar com tolerância a falhas nos servidores Linux. Para quem desejar se aprofundar recomendo soluções que envolvem a configuração de endereços I.P virtuais diretamente no kernel. Apenas para referência, uma dessas aplicações que fazem a criação de endereços I.P. virtuais no Linux é o <a class="ext" href="http://www.ultramonkey.org/">Ultra Monkey</a> com os módulos do kernal IPVS. Outra alternativa mais fácil de se configurar é o pacote do <a class="ext" href="http://www.vivaolinux.com.br/artigo/Load-Balancer-com-Failover-Perlbal-e-Heartbeat-para-servidores-web/?pagina=5">HeartBet + PerlBal</a></p>
<p>Com isso terminamos a primeira parte do artigo que explicará como montar um cluster no MySQL. Na próxima coluna veremos passo a passo como configurar o MySQL e o serviço de cluster, além da criação do banco de dados e do teste de instruções.</p>
<p>Referência:  HOWTO set up a MySQL Cluster for two servers (three servers required for true redundancy):</p>
<p><a class="ext" href="http://dev.mysql.com/tech-resources/articles/mysql-cluster-for-two-servers.html">http://dev.mysql.com/tech-resources/articles/mysql-cluster-for-two-servers.html</a></p>
<p><em>Fonte: <a onclick="javascript:urchinTracker ('/outbound/article/www.pplware.com');" href="http://imasters.uol.com.br/artigo/11673/mysql/cluster_no_mysql_-_parte_01/" target="_blank">Imasters</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/cluster-no-mysql-parte-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

