Eu queria saber se existem boas soluções para gravar dados em um banco de dados NoSQL e, em seguida, convertê-los em um RDBMS?
Por exemplo, se você deseja capturar alguns dados rapidamente, como logs de sessão, mas deseja criar relatórios sobre eles posteriormente.
Meu banco de dados favorito é o Postgres, portanto, se sua resposta for relevante no Postgres, seria ótimo.
A Resposta Rápida - Sim. Acontece o tempo todo.
Existem muitas boas soluções. Quais soluções já estão em seu ambiente? Estou ajudando um cliente que pega as informações de atividade do site/sessão de seu aplicativo da web, escreve-as em xml e desserializa esse xml no Hadoop. Eles então usam o Hive em cima do Hadoop para criar agregações e fatos (juntando esses dados de log para referenciar dados de seu site que eles armazenam em um banco de dados Postgres). Essas agregações e fatos são então carregados em um RDBMS (eles usam o SQL Server, devido à rica análise fornecida na pilha do SQL Server).
Eu exploraria o Hadoop, examinaria o Hive, que é um mecanismo de consulta sobre o Hadoop que permite escrever consultas declarativas que se assemelham muito ao SQL e são traduzidas em tarefas MapReduce nos bastidores. Em seguida, veja o Sqoop, que é outra ferramenta da família Hadoop que auxilia na exportação/importação de dados.
http://hadoop.apache.org/ http://www.amazon.com/Hadoop-Definitive-Guide-Tom-White/dp/1449389732/ref=sr_1_1?s=books&ie=UTF8&qid=1319160463&sr=1-1 http ://www.cloudera.com/blog/2009/06/introducing-sqoop/ http://hive.apache.org/
Tem outras opções por aí também...
Nem todos os NoSQL são iguais. Por exemplo, o MongoDB tem recursos de consulta muito bons. é muito fácil recuperar dados, classificá-los de uma maneira que lembra o SQL. Então, o que estou dizendo é que você não deveria estar pensando - SQL para relatórios, a menos que você tenha ferramentas disponíveis no mercado que exijam dados compatíveis com SQL, é claro. Alguns dos outros NoSQL estão um pouco mais envolvidos no que diz respeito a obter resultados semelhantes a SQL de sua loja, CouchDB por exemplo, não é trivial definir uma consulta simples do tipo cláusula where. MongodDB - usei o driver Python - é muito fácil. Portanto, estou achando menos importante me preocupar em portar meus dados para um armazenamento relacional.