Modelos ricos: outro motivo para usar NoSQL

novembro 3rd, 2011 | by Thiago Avelino | couchdb, mongodb, nosql

nov
03

“A motivação mais comum que leva as empresas a usar NoSQL é a escalabilidade. Mas se você lida com objetos complexos em sua aplicação, como entidades espalhadas em dezenas de tabelas normalizadas, pode ser que uma alternativa NoSQL seja útil para o seu projeto, mesmo que ele não tenha zilhões de usuários simultâneos”. Essa pertinente colocação levouLuciano Ramalho, supervisor de desenvolvimento na BIREME/OPAS/OMS e referência no mundo Python, a apresentar noNoSQLBr 2011 o case OpenTrials para o Registro Brasileiro de Ensaios Clínicos. Trata-se de uma plataforma virtual de acesso livre financiada pelo Ministério da Saúde, entre outras entidades, e que tem por finalidade registrar estudos experimentais e não-experimentais realizados em seres humanos, por pesquisadores brasileiros e estrangeiros.

Luciano conta que a missão dele e de sua equipe era a de renovar métodos, práticas e ferramentas de desenvolvimento. Como primeiro passo, o desafio foi migrar do “PHP sem framework” para Python com Django. E explicou em detalhes como foi realizado esse projeto, desde a criação, a partir de ferramentas open source e práticas ágeis, até as lições aprendidas no processo fazendo uso da persistência poliglota com um “mix” de BD relacional com banco de dados NoSQL, e a “solução” para o OpenTrials com o CouchDB (considerando que o MongoDB também seria apropriado para o projeto em questão).

Assista ao vídeo com a íntegra da palestra de Luciano Ramalho no NoSQLBr 2011:

http://www.gonow.com.br/blog/2011/11/02/modelos-ricos-outro-motivo-para-usar-nosql/

 

No Comments »

Klaus Wuestefeld e o Prevayler: afinal, por que você ainda usa banco de dados?

novembro 3rd, 2011 | by Thiago Avelino | benchmark, nosql

nov
03

Em um teste de escalabilidade e resultados, enquanto o Prevayler, open source, retorna 228.369 queries por segundo, um sistema Oracle responde de forma 9983 vezes mais lenta que o Prevayler. Você acreditaria nesse cálculo impressionante? Esse é, contudo, um dos projetos de software livre brasileiros mais conhecidos no mundo. E quem o apresenta “sem maquiagem alguma”, como gosta de ressaltar, é Klaus Wuestefeld, pioneiro de Extreme Programming no Brasil e criador do Prevayler.

“O Prevayler é a implementação do conceito de prevalência. E a prevalência é o terceiro mecanismo de persistência mais simples possível”, resume ele. Em sua palestra com o provocativo nome “Você ainda usa banco de dados?”, na segunda edição do encontro NoSQLBr, em São Paulo, Klaus fez uma apresentação bastante inusitada dos conceitos que permeiam o produto. Preocupou-se mais em fornecer uma breve introdução sobre o que vem a ser esse pattern de prevalência de sistemas“1 mil a 10 mil vezes mais rápido que um banco de dados relacional” para, em seguida, listar as perguntas do público presente sobre a eficiência do Prevayler.

Ele anotou uma a uma e defendeu o uso do Prevayler com base nas seguintes contestações:

- Schema Evolution
- Dependência de um sistema externo
- Dados sem schema
- Meu sistema irá crescer “300 mil vezes”
- OLAP / Análise
- Clustering
- Sistema pesado em escrita
- Ambiente híbrido / Vários sistemas acessando os mesmos dados
- Paralelismo, concorrência
- Corrupção de dados
- Alta disponibilidade
- Segurança

E as duas perguntas mais intrigantes de todas:

1. Por que não tem mais gente usando?
2. Quem vai me ajudar se der tudo errado?

As respostas para essas e outras questões sobre o Prevayler, incluindo as características que definem sua persistência e espelhamento transparentes e transações ACID “ridiculamente simples”, você vê em detalhes no vídeo com a íntegra da palestra de Klaus Wuestefeld no NoSQLBr 2011:

http://www.gonow.com.br/blog/2011/10/31/klaus-wuestefeld-e-o-prevayler-afinal-por-que-voce-ainda-usa-banco-de-dados/

 

No Comments »

OpenShift: NoSQL “a la carte” em um PaaS 100% open source

outubro 30th, 2011 | by Thiago Avelino | escalabilidade, java, mongodb, nosql, python

out
30

Edgar Silva é Solutions Architect Manager na Red Hat Brasil, responsável pelo time que define as tecnologias e soluções de plataformas Linux, middleware, virtualização e cloud computing. Na segunda edição do NoSQLBr, Edgar fez uma apresentação sobre o OpenShift, o PaaS da Red Hat, com demonstrações práticas de como utilizá-lo em conjunto com tecnologias como MongoDB e Infinispan para recurso de armazenamento de aplicações (que podem estar escritas em diversas linguagens, entre elas Python, PHP, Java e Ruby).

Edgar tem como missão na empresa pesquisar como combinar vários conceitos computacionais e de negócios para encontrar a solução mais adequada aos desafios de projetos propostos por seus clientes. “Até que ponto são relevantes questões como sistema operacional ou linguagem? As empresas querem ser bem atendidas, não importa muito tecnologia, linguagem ou sistema operacional. A questão está cada vez mais focada em negócios mesmo”, diz ele.

Com a “nova onda” de Cloud, várias soluções de PaaS surgem como alternativa para empreendedores e pequenos investidores atrairem negócios e transformar meras ideias em casos de sucesso. Projetos relacionados a dados públicos, jogos online em HTML5 para dispositivos móveis e geolocalização, entre outros, são casos de uso candidatos para começarem a ser desenvolvidos nesse tipo de infraestrutura – gratuita – como o OpenShift.

Assista ao vídeo com a íntegra da palestra de Edgar Silva no NoSQLBr 2011: clique aqui

Referência: Gonow Tecnologia - http://www.gonow.com.br/blog/2011/10/26/openshift-nosql-a-la-carte-em-um-paas-100-open-source/

 

No Comments »

Por que escolher um banco de dados baseado em grafos?

outubro 29th, 2011 | by Thiago Avelino | grafo, neo4j, nosql

out
29

Antes de responder a pergunta acima, pense primeiro numa questão mais abrangente: o que é modelagem de dados? E ainda numa segunda, esta um pouco mais específica: como devemos consultar e atualizar um banco de dados? As respostas certamente não são tão simples, mas pelo menos agora já existem alternativas mais flexíveis das que haviam em um passado não muito distante. A modelagem em grafos, para o engenheiro de software inglês Alistair Jones, é uma delas.

Alistair trabalha na Neo Technology, empresa desenvolvedora do neo4j, um banco de dados baseado em grafos open source “poderoso e expressivo para armazenar, consultar e manipular dados”. Ele é considerado um “expert” em metodologias ágeis – especificamente para testes de desempenho – e, no segundo encontro NoSQLBr, ocorrido em São Paulo na semana passada, Jones apresentou um overview sobre a modelagem baseada em grafos, pontuando princípios e diferenças em relação aos modelos tradicionais de modelagem de dados.

“O melhor modelo é o que melhor resolve o seu problema”

Esse “mantra” você já deve ter ouvido – e entoado – algumas vezes, e não só em se tratando de modelagem de dados. Mas não custa reforçar que apegar-se a um modelo único como sendo a tal “bala de prata” que solucionará todos os seus problemas é algo bastante arriscado. E a respeito disso, voltando à pergunta inicial, por qual motivo você escolheria um banco de dados baseado em grafos? Esse modelo facilita o acesso a dados em redes ou hierarquias, via múltiplos nós.

E o mais importante: você precisa de flexibilidade para acessar os dados no futuro (um modelo baseado em grafos, ressalva Alistair Jones, é mais fácil de mudar que os outros). Como exemplo, ele mostra como poderia ser a modelagem de dados para um site disponível em vários idiomas.

O que há de diferente?

- Você deixa a manutenção dos relacionamentos para o banco de dados
- Chaves substitutas desaparecem ou são desnecessárias (com exceção do ID)
- Relacionamentos ganham um nome explícito

Princípios da modelagem em grafos

Os “nós” representam conceitos múltiplos: com isso, é possível quebrá-los e distingui-los uns dos outros.

Adotar o paradigma > Nós por identidade (ID) >> Relacionamentos por acesso

Relacionamentos para consultas ao banco

- Relacionamentos devem ser o principal meio para acessar dados em nós
- Fazer traverse é barato: essa é a principal vantagem de usar um banco de dados baseado em grafos
- A modelagem em grafos é similar à modelagem relacional, só que mais fácil

Assista ao vídeo com a íntegra da apresentação de Alistair Jones no NoSQLBr para entender em detalhes como funciona a modelagem de dados baseada em grafos:

 

Referência: Gonow Tecnologia - http://www.gonow.com.br/blog/2011/10/25/por-que-escolher-um-banco-de-dados-baseado-em-grafos/

 

 

No Comments »

Sistema de prioridades em PHP e MongoDB

maio 29th, 2010 | by suissa | mongodb, nosql

mai
29

Eu queria começar a aprender sobre NoSQL especificamente sobre o MongoDB e nada melhor como fazer algo na pratica. Passei por alguns momentos de dificuldade especialmente no update, já que era a primeira vez.

Eu fiz ele  todo orientado a objetos, primeiro comecei com a conexão com o banco de dados

[php]
class conexao{
function __construct(){
$nome_banco = ‘prioridades’;
$nome_collection = ‘tarefas’;

$this->conexao = new Mongo();
$this->db = $this->conexao->$nome_banco;
$this->collection = $this->db->$nome_collection;

header (‘Content-type: text/html; charset=utf-8′);
}
}
[/php]

Sem muitos problemas aqui, a unica coisa, foi o utf8, pois tive alguns problemas de codificação na hora de inserir os dados, se você rodar esse código, ele já vai criar o banco e a collection automaticamente caso ela não exista.

O metodo de mostrar um registro especifico tem um segredinho, que é a criação de um MongoID, sem ele não consegui encontrar o registro. O findOne, só retorna 1 documento.

[php]
function mostrar($_id){
$mongo_id = new MongoID($_id);
return $this->collection->findOne(array(‘_id’ => $mongo_id));
}
[/php]

O metodo que usei para listar é bem simples

[php]
function listar($filter){
return $this->collection->find($filter);
}
[/php]

A parte de inserir um documento no banco de dados, foi bem fácil também. Para inserir, você coloca em um array todas as informações, o campo e o valor dele.

[php]
function inserir(){
$this->query = array(
‘UsuarioID’ => $this->UsuarioID,
‘Usuario’ => $this->Usuario,
‘Tarefa’ => $this->Tarefa,
‘Tipo’ => $this->Tipo,//Obrigatório, idéia, outro
‘Prioridade’ => $this->Prioridade
);
$this->collection->insert($this->query);
}
[/php]

O método de exclusão também não tem segredos, é só criar o MongoID que esta tudo certo

[php]
function excluir(){
$this->mongo_id = new MongoID($this->_id);
$this->collection->remove(array(‘_id’ => $this->mongo_id));
}
[/php]

Agora vamos lá, a parte que eu tive mais dificuldade que foi o update. No update, é preciso usar o $set para alterar um campo especifico da collection, sem ele, ele vai alterar o documento todo, vai remover todo o resto e vai manter apenas o campo que você passar ali. Uma dificuldade que eu tive, foi que o $set só funciona com aspas simples, com aspas duplas ele definitivamente não funcionou.

[php]
function mudar_tarefa(){
$this->mongo_id = new MongoID($this->_id);
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$set’ => array(‘Tarefa’ => $this->Tarefa)), false);
}

function mudar_prioridade(){
$this->mongo_id = new MongoID($this->_id);

if($this->modo==’up’){
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$inc’ => array(‘Prioridade’ => 1)), false);
}elseif($this->modo==’down’){
$this->collection->update(array(‘_id’ => $this->mongo_id), array(‘$inc’ => array(‘Prioridade’ => -1)), false);
}
}
[/php]

O $inc, serve para incrementar um valor em mais 1 ou menos 1, isso ai você pode especificar da maneira que você quiser. Lembrando que você tem que criar o MongoID para poder alterar o documento.

Essa ai é a classe que usei para fazer o sisteminha. As minhas dificuldades foram bobas, mas só vendo isso agora, pois não consegui encontrar em nenhum lugar sobre isso, principalmente sobre as aspas simples.

Ta aqui o download para quem quiser baixar.

http://www.megaupload.com/?d=5I0VX4I4

No Comments »

Mitos sobre NoSQL

maio 29th, 2010 | by alex | escalabilidade, mysql, nosql, sql

mai
29

Com essa onda de NoSQL pra cá, NoSQL pra lá, muitos ainda tem muitas duvidas em relação ao NoSQL, de quando usar, como usar e etc. E como não podia deixar de ser, vários mitos estão rodeando esse novo conceito de banco de dados.

Afinal o que é NoSQL?

NoSQL é uma nova forma de bancos de dados, que não usam apenas os comandos SQL que você está acostumado, SELECT, UPDATE, DELETE e todas as váriaveis dele. Normalmente essas instruções foram trocadas por funções e muitas vezes já em oop.

Não é só porque ele não usa instruções SQL que ele é melhor que o banco de dados que você usa. Os bancos de dados atuais, são muito antigos,  o MySQL por exemplo começou em 1994, utilizando o modelo relacional de tabelas, isso é um conceito tão antigo quanto esses bancos de dados. Os bancos de dados NoSQL aproveitam e corrigem erros como a dificuldade de escalar esses bancos de dados.

Pra que serve?

Um dos mitos do NoSQL é que só 10% dos sites de hoje em dia, devem usar o NoSQL. Isso na verdade é uma interpretação errada, a idéia na afirmação é que 90% dos sites não sentiriam uma melhora consideravel de performance. Isso é verdade imagine um blog com 10 visitas diárias, qualquer banco de dados atual serve pra essa aplicação, até mesmo se você tiver 10mil visitas diárias.

Mas isso não siguinifica que você não possa usar um banco de dados NoSQL para a sua aplicação. Se você quiser usar um banco de dadso NoSQL no seu blog de 10 visitas diárias, isso não te impede de nada.

Se não preciso porque usar?

Você pode ter um site, que é bastante visitado o seu banco de dados estar aguentando bem, mas você quer gerar alguns logs, seja para estatisticas ou para qualquer outra coisa. Seria bastante viavel usar um banco de dados desses, porque você vai ter muitos dados, você vai precisar consultar de forma rápida e fácil, um NoSQL seria ótimo para isso.

Onde usar?

Muito se tem visto sobre usar o NoSQL em aplicações web de grande porte, porem ela pode ser usada em qualquer tipo de aplicação, você pode usar na web ou no desktop, não tem limites para isso.

Não posso usar NoSQL com um banco de dados relacional

Você pode e deve usar um NoSQL com algum banco de dados relacional que você use. Você pode até usar vários tipos de NoSQL e um MySQL por exemplo. Pode usar um NoSQL para cache dos dados, outro para os registros de logs e assim por diante, claro que você não precisa disso, mas você pode fazer.

Qual posso usar?

Você pode usar qualquer NoSQL, porem se você quer começar no mundo NoSQL eu aconselharia um banco de dados orientado a documentos, eu creio que seja o mais próximo de um banco de dados relacional, e são extremamente faceis de se usar. Apesar de serem bastante parecidos, eles tem conceitos diferentes, por exemplo, você não precisa de uma tabela para comentarios e uma para posts, você coloca tudo no mesmo documento(como se fosse uma tabela).

Considerações finais

Como vocês puderam ver, um NoSQL pode ser usado para qualquer tipo de aplicação, seja web como desktop, pequena, média ou grande. Porem as vezes você pode sentir mais diferença estruturando corretamente o seu banco de dados atual do que mudando completamente para um NoSQL.

A vatagem de um NoSQL é a alta escalabilidade a velocidade de inserção e de consulta desses bancos são absurdos. Eles vieram para arrumar problemas que os bancos de dados relacionais tem e que não foram projetados nem imaginados na época que o sistema relacional foi criado.

8 Comments »

VoltDB: Escalabilidade de NoSQL em SQL

maio 29th, 2010 | by suissa | nosql, sql, voltdb

mai
29

A empresa VoltDB (uma empresa fundada pelo Mike Stonebraker, o mesmo que criou  o PostgreSQL) anunciou ontem o release oficial do VoltDB: um banco de dados relacional com suporte à ACID e, segundo a empresa, facilmente escalável como alguns bancos de dados NoSQL.

VoltDB

A premissa principal do VoltDB é simples: ele é diferente da maioria dos bancos de dados relacionais de hoje, que se baseiam em designs antigos e que foram concebidos bem antes dos bancos de dados com workloads “web-scale”. Os bancos de dados tradicionais podem “desperdiçar” mais de 90% do seu tempo com tarefas burocráticas, como logging, lagging e gerenciamento de buffer.  O VoltDB utiliza processamento in-memory e elimina vários destes overheads que ocorrem em bancos de dados relacionais e ainda consegue manter a consistencia transacional (ACID). Com isso, o VoltDB consegue ser 50x mais rápido do que RDBMS tradicionais.

Em alguns testes, o VoltDB conseguiu se sair tão bem ou melhor se comparado com bancos de dados NoSQL que utilizam armazenamento key-value. Os mesmos testes demonstram que o VoltDB pode escalar quase linearmente: em uma determinada máquina, ele conseguiu processar 56.000 TPS e em um cluster com 12 máquinas, ele conseguiu processar 560.000 TPS.

Ao que parece, o VoltDB é uma grande promessa, pois possibilita uma escalabilidade fácil e eficiente sem abandonar o modelo relacional, no qual a maioria dos desenvolvedores hoje está acostumada e no qual boa parte dos sistemas é baseado.

artigo retirado de: http://escalabilidade.com/2010/05/26/voltdb-escalabilidade-de-nosql-em-sql/

Acho válido fazer alguns testes com ele pois ele possui 2 licensas a free e a paga(que por sinal é meio carinha)

Open-Source Community Project Commercial Subscription
Recommended for developers and proof of concept deployments. This edition is unsupported and most likely to be used in non-mission critical applications. Recommended for production environments that demand scale and availability. Professional support, maintenance and commercial licensing terms make the Enterpise Edition the right choice for critical deployments.
Base System
High-performance, ACID-compliant DBMS Yes Yes
Scale-out capability Yes Yes
High availability, node failover (K-safety) Yes Yes
Disk snap-shot persistence Yes Yes
Data connector to file system (spooling) Yes Yes
Support SLA
Community forums Yes Yes
Email, Phone Yes
Operating system certification Yes
Support hours 8AM – 5PM
Response time 8 hours
License
License GPL Commercial
Commercial embedding rights Within GPL products only Yes
Annual Subscription Price Community Edition Commercial Edition
Base-system – 4-node cluster (“node” = a server of any type, with any number of CPU cores, RAM, etc.) Free $15,000 USD/year
Additional nodes (“node” = a server of any type, with any number of CPU cores, RAM, etc.)
Price per node for nodes 5 through 12 Free $3,200/node/year
Price per node for nodes 13 and above Free $2,800/node/year
Three-year subscription discount 25%

Additional Support Offerings

Enhanced Premium Support

Extends the standard support SLA to include 24 x 7 support hours and 2-hour response time. Price is in addition to annual subscription above.

$18,000
Quick Start Service

Five day professional services engagement to build initial proof of concept (POC), install it into the environment and run benchmarks. Includes full training on using and building VoltDB applications. Additional T&E charges may apply.

$25,000
Onsite Group Training (2 day)

Onsite two-day training class on using and building VoltDB applications. Additional T&E charges may apply.

$7,500
Live Instructor-Led Online Training Classes

VoltDB instructor-led online training in various aspects of VoltDB from installation and operation to building VoltDB client libraries and VoltDB applications. Each 3-hour course will include training materials, interactive training and question and answer.

$500

2 Comments »

Converter MySQL para MongoDB

maio 20th, 2010 | by suissa | converter, mongodb, mysql, nosql, sql

mai
20

Notando que a maioria dos programadores PHP utilizam MySQL e para você começar a usar o MongoDB ncessita de uma base de dados para começar a programar sua funções, tive a idéia de criar um conversor simples de MySQL para MongoDB. Aqui vou explicar o seu código e como é simples utilizar o MongoDB com PHP.

Criei uma interface bem simples para que possamos enviar os dados sem precisar ficar mudando no código.

Interface do meu conversor

Interface do meu conversor

Essa interface enviará, via POST, as variáveis de conexão com o banco de dados MySQL.

$host = isset($_REQUEST['host_mysql']) ? $_REQUEST['host_mysql'] : “localhost”;

$user = isset($_REQUEST['user_mysql']) ? $_REQUEST['user_mysql'] : “usuario”;

$pass = isset($_REQUEST['pass_mysql']) ? $_REQUEST['pass_mysql'] : “senha”;

$db   = isset($_REQUEST['db_mysql']) ? $_REQUEST['db_mysql'] : “teste_latin”;

Agora é hora de criar a conexão com o MongoDB utilizando uma extensão instalada no php: http://github.com/downloads/mongodb/mongo-php-driver/mongo-1.0.6-r1-php5.3vc6ts.zip

try{

$conexao = new Mongo(); //abre conexão com o MongoDB

$db_mongo = $conexao->$db; //cria a database com o mesmo nome do MySQL

}

catch(MongoConnectionException $e){

die(“<h1 class=’erro’>Erro do banco de dados MONGODB – Inicie o servidor do MongoDD!</h1><span class=’dica’>Dica: Entre no prompt do windows<br />

cd \ <br />

cd mongodb<br />

cd bin<br />

mongod </span>”);

}
Caso o seu MongoDB não esteja rodando o script indicará o erro e mostrará a forma como iniciar seu MongoDB no Windows.

Para conseguirmos pegar o nome de todas as tabelas da nossa database no MySQL utilizamos a seguinte query:

$query_pega_tabelas = “SHOW TABLES”;

O nome do nosso campo contendo as tabelas será:

$index_tabelas = “Tables_in_”.$db; //nome do array com o valor do nome das tabelas via SHOW TABLES
Onde a variável $db será o nome da nossa database no MySQL. Após pegarmos os nomes das nossas tabelas é hora de irmos tabela por tabela pegando seus dados e inserindo-os, não será necessário pegar os metadados(tipo, tamanho) dos campos pois o MongoDB não necessita dessas informações.

if($result_pega_tabelas=mysql_query($query_pega_tabelas)){

while($arr_pega_tabelas[] = mysql_fetch_assoc($result_pega_tabelas)){

}

$rs_charset=mysql_query($query_charset);

foreach($arr_pega_tabelas as $c=>$v){

if(is_array($v)){

foreach($v as $a => $b){

echo “<h3>Tabela: “.$b.”</h3>”;

$nome_tabela = $b;

$query_pega_dados = “EXPLAIN “.$nome_tabela;

if($result_pega_dados=mysql_query($query_pega_dados)){

$arr_pega_dados = array();

while($arr_pega_dados = mysql_fetch_assoc($result_pega_dados)){

$arr_totalis[$nome_tabela][] = $arr_pega_dados;

}//fim while

}//fim if query pega dados

}//fim foreach

}//fim if array

}//fim foreeach

Geramos uma collection para cada tabela existente no MySQL.

foreach($arr_totalis as $c => $v){

$query = ‘select * from ‘.$c;

$collection = $db_mongo->$c;

$rs_select = mysql_query($query);

echo “Inserindo em “.$c.”<br />”;

echo “<pre>”;

while($arr_dados = mysql_fetch_assoc($rs_select)){

Precisamos codificar nossos valores, assim como os campos, em utf8. Porém caso nosso banco já esteja em utf8 não será necessária a conversão. Para isso criei um pequena função utilizando iconv.

foreach($arr_dados as $c => $v){

$obj[utf8_encode_suissa($c)] = utf8_encode_suissa($v);

}//fim foreach

$arr[] = $obj;

}//fim while

$erro = 0;

No caso meu banco que será convertido está codificado em latin1, correspondente ao charset iso-8859-1. Essa função vai ao final do script.

function utf8_encode_suissa($s) {

return iconv(‘iso-8859-1′, ‘utf-8′, $s);

}

Após a conversão para utf8 inserimos o objeto codificado, com a função insert(), na nossa collection que terá o mesmo nome que a tabela correspondente no MySQL.

foreach($arr as $cc => $vv){

if(!$collection->insert($vv)){

echo “Não inseriu”.print_r($c) ;

$erro++;

$var_erro[] = var_dump($vv);

}//fim if

}//fim foreach

Caso tenha ocorrido algum erro mostrará-o com var_dump, só para ter uma noção de como os dados estão estruturados.

if($erro > 0){

echo “<h3>Aconteceram os seguintes erros:</h3>”;

foreach($var_erro as $f => $g){

var_dump($g);

}//fim foreach

}//fim if

echo “</pre>”;

}//fim foreach

}//fim if

Ao término do script você poderá entrar no phpMoAdmin, ferramenta para manipular as bases e as collections do MongoDB, e ver na lista das databases sua nova base criada.

phpMoAdmin

phpMoAdmin

O scrip completo com a interface para inserir os dados se encontra em: http://www.nosqlbr.com.br/conversor_mysql_mongodb.zip

1 Comment »