Banco de dados: processos distribuídos

Para garantir durabilidade e integridade das informações, bancos de dados SQL oferecem registros e replicação de dados
 

Quando se trata de processos distribuídos de grandes conjuntos de dados, o Hadoop Map-Reduce se tornou a tecnologia do momento. Os pesquisadores do Yahoo!, por exemplo, usaram 3,8 mil nódulos com ele para separar cerca de 1 Petabyte em 16.25 horas.  Recentemente, o Google desenvolveu e patenteou o MapReduce. A função de mapeamento produz uma lista de pares de valores-chave que o sistema transforma em uma lista de valores. O Apache Hadoop Project inclui o HDFS (Hadoop Distributed File System), MapReduce, banco de dados HBase, linguagem de análise Pig, pesquisa Hive e ferramentas de análises e outros softwares. O HBase é uma coluna de armazenamento distribuída, modelada com inspiração no Bitable, do Google, que serve como input ou output para o MapReduce. O HBase é uma das várias colunas de armazenamento competindo no mercado de análise e inteligência de negócio. Armazenar tabelas ordenadas em grandes colunas oferece aperfeiçoamento substancial no desempenho sobre armazenando em grandes filas. Benefícios como localização aperfeiçoada e desempenho de cachê tornam aceleram as pesquisas orientadas em retorno, mas não se pode dizer o mesmo para inserção de pesquisas. Outras colunas de armazenamento incluem Sybase IQ, Vertica e CStore, colaboração em código aberto entre diversas universidades. O aumento no interesse de buscas semânticas e Linked Data deram destaque ao armazenamento triplo RDF. Essas ofertas incluem AllegroGraph, Bigdata, Garlik, Jena, Ontotext Big-OWLIM, OpenLink Virtuoso, Oracle 11g e Sesame. Muitos deles foram implementados no EC2, da Amazon, para explorar o poder dos processos distribuídos na nuvem. Pesquisadores da Raytheon BBN também usaram o Hadoop MapReduce para criar armazenamento RDF distribuído que suporta o processo de pesquisa SPARQL. Restrições e melhores práticasPara garantir a durabilidade e a integridade das informações, os bancos de dados SQL oferecem registros e replicação de dados. As ofertas NoSQL precisam de uma rede de segurança similar. O Cassandra, por exemplo, suporta registros de transações e replicação automática. Tokyo, Cabinet e HBase suportam registros WAL (write-ahead logging). Tokyo, Cabinet e CouchDB suportam replicação master-master, enquanto o MongoDB a replicação master-slave e pares replicados. Arquitetos usando banco de dados orientado a documento devem lidar com as diferentes formas de armazenar diversos tipos de documentos e se devem ou não ter bancos de dados separados para cada um deles. Alternativas para separar bancos de dados incluem usar um atributo para especificar os tipos ou coleções separadas. A nova geração de armazenamento de dados é direcionada para as necessidades de disponibilidade e escalabilidade. Com o Amazon SimpleDB, por exemplo, o tempo limite de resposta de pesquisa é de cinco segundos. Se a resposta levar mais tempo, ele retorna com resultados parciais e o aplicativo deve fazer chamadas adicionais para obter os resultados completos. O SimpleDB restringe os resultados das pesquisas a um máximo de 250 itens, enquanto o Google, recentemente, aumentou o limite do AppEngine para mil itens. Em sistemas particionados horizontalmente, as pesquisas exigem cruzamento de junções particionadas, o que é caro, portanto, o design e algoritmos para o particionamento exigem habilidade e conhecimento de padrões de uso de dados. Quando pesquisas complexas, como agrupamento, são necessárias, os bancos de dados operacionais NoSQL não são uma boa opção, mas podem oferecer fonte de dados para soluções separadas para análises. As empresas que usam armazenamento de valores-chave podem, às vezes, precisar das habilidades de pesquisa e indexação do SQL.Elas podem recorrer a outros softwares que suportam pesquisa e indexação, como o Apache Lucene. Independentemente de sua empresa usar banco de dados SQL ou NoSQL, ainda é uma boa ideia usar versões de bancos de dados controlados e separados para testes e produção. Para todas as áreas endereçadas pelas opções NoSQL, ainda temos que pensar sobre qual software de banco de dados adotar. A resposta depende de questões fundamentais: Quanto e qual o tipo de dado será armazenado? Eles serão usados em pesquisas complexas? Quantos usuários concomitantes precisará suportar? E seu banco de dados irá escalar se aceitar mais dados e usuários? Seja SQL ou NoSQL, é aqui que começamos. 

Fonte: Banco de dados: processos distribuídos