PVFS-Store - Um repositório chave-valor com garantia de localidade



Documentos relacionados
Interoperabilidade entre Bancos de Dados Relacionais e Bancos de Dados NoSQL

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Pollyanna Gonçalves. Seminário da disciplina Banco de Dados II

Por que? A WEB está substituindo o desktop Google Gmail, Google Docs, Amazon, Flickr, Facebook, Twitter, YouTube Mudança de Paradigma:

PEER DATA MANAGEMENT SYSTEM

Roteiro 2 Conceitos Gerais

Banco de Dados. Uma coleção de dados relacionados [ELMASRI/NAVATHE]

1

Sistemas Distribuídos

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

LINGUAGEM DE BANCO DE DADOS

Sistema de Bancos de Dados. Conceitos Gerais Sistema Gerenciador de Bancos de Dados

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

Banco de Dados I. Apresentação (mini-currículo) Conceitos. Disciplina Banco de Dados. Cont... Cont... Edson Thizon

Interoperabilidade entre Bancos de Dados Relacionais e Bancos de Dados NoSQL (Parte 2)

Disciplina: Tecnologias de Banco de Dados para SI s

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais

4 Um Exemplo de Implementação

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

MODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro.

Evolução. Tópicos. Bancos de Dados - Introdução. Melissa Lemos. Evolução dos Sistemas de Informação Esquemas Modelos. Características de SGBDs

Banco de Dados Arquiteturas para SGBDs

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

O que são DNS, SMTP e SNM

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Um SGBD com Armazenamento Distribuído de Dados Baseado em DHT

GBC043 Sistemas de Banco de Dados. Introdução. Ilmério Reis da Silva UFU/FACOM

3 Arquitetura do Sistema

Android e Bancos de Dados

ISO/IEC 12207: Gerência de Configuração

Prof. Daniela Barreiro Claro

Prof.: Clayton Maciel Costa

Introdução aos Bancos de Dados Não-Relacionais. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

Projeto de Banco de Dados Distribuído Proj o e j to t o de d B a B nc n o o d e d Da D do d s o D i D str t ibu b í u do d s

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

Persistência e Banco de Dados em Jogos Digitais

Sistemas Operacionais

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. DCC-IME-USP

Noções de. Microsoft SQL Server. Microsoft SQL Server

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Oficina. Praça das Três Caixas d Água Porto Velho - RO

AN IN-DEPTH STUDY OF MAP REDUCE IN CLOUD ENVIRONMENT. Sistemas Distribuídos e Tolerância a Falhas Nuno Garcia m6284, Tiago Carvalho m6294

Fundamentos dos Sistemas de Informação Organização de Dados e Informações

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

E N AT O M O L I N A T O T H

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Sistemas Operacionais 3º bimestre. Dierone C.Foltran Jr.

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

INTRODUÇÃO E CONCEITOS BÁSICOS. Prof. Ronaldo R. Goldschmidt

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2014

NOME SEXO CPF NASCIMENTO SALARIO

Conceitos básicos. Aplicações de banco de dados. Conceitos básicos (cont.) Dado: Um fato, alguma coisa sobre a qual uma inferência é baseada.

Conceitos de Banco de Dados

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

XDOC. Solução otimizada para armazenamento e recuperação de documentos

Sistema de Banco de Dados Distribuídos e DataGrid

Roteiro. Modelo de Dados Relacional. Processo de Projeto de Banco de Dados. BCC321 - Banco de Dados I. Ementa. Posicionamento.

Módulo 4: Gerenciamento de Dados

Fundamentos de Banco de Dados

Revisão de Banco de Dados

Armazenamento em nuvem é feito em serviços que poderão ser acessados de diferentes lugares, a qualquer momento e utilizando diferentes dispositivos,

Governança de TI. ITIL v.2&3. parte 1

Avaliação do desempenho de gerenciadores de bancos de dados multi modelo em aplicações com persistência poliglota

15/09/2015. Gestão e Governança de TI. Modelo de Governança em TI. A entrega de valor. A entrega de valor. A entrega de valor. A entrega de valor

Figura 1 - Arquitetura multi-camadas do SIE

Google s Globally-Distributed Database. (Banco de Dados Globalmente Distribuído da Google)

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Disciplina de Banco de Dados Introdução

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Microsoft Access XP Módulo Um

Prof. Daniela Barreiro Claro

Modelos. Comunicação com clientes

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

SISTEMAS DISTRIBUIDOS

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

SISTEMA GERENCIADOR DE BANCO DE DADOS

Modelos de Arquiteturas. Prof. Andrêza Leite

Anexo VI Edital nº 03361/2008. Projeto de Integração das informações de Identificação Civil. 1. Definições de interoperabilidade adotadas pela SENASP

INTRODUÇÃO BANCO DE DADOS. Prof. Msc. Hélio Esperidião

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 1, 2 e 3) Clodis Boscarioli

Demonstrativo de Informações Previdenciárias e Repasses

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Introdução ao Modelos de Duas Camadas Cliente Servidor

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Roteiro. Conceitos e Arquitetura de Sistemas de Banco de Dados. Conceitos e Arquiteturas de Sistemas de Banco de Dados. BCC321 - Banco de Dados I

Prof. Marcelo Machado Cunha

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

3 SCS: Sistema de Componentes de Software

Banco de Dados. Conceitos e Arquitetura de Sistemas de Banco de Dados. Profa. Flávia Cristina Bernardini

Transcrição:

paper:66 PVFS-Store - Um repositório chave-valor com garantia de localidade Ricardo M. Maeda 1 Orientadora: Carmem Satie Hara 1 1 PPGInf - Programa de Pós-Graduação em Informática Departamento de Informática Universidade Federal do Paraná Caixa Postal 19.081 81.531-990 Curitiba PR Brasil {rmmaeda, carmem}@inf.ufpr.br Nível: Mestrado Ingresso no programa: Março/2013 Previsão de conclusão: Março/2015 Etapas concluídas: Créditos em disciplinas Resumo. Há uma demanda crescente por soluções distribuídas de armazenamento, que preservem a localidade dos dados nos servidores espalhados geograficamente. Grande parte das soluções NoSQL distribuídas são baseadas em uma DHT e possuem pouco ou nenhum controle sobre a colocação dos dados. A garantia da localização é importante para permitir que as informações sejam posicionadas próximas às aplicações consumidoras e agrupadas semanticamente para acessos otimizados. Este trabalho propõe o PVFS-Store, um sistema de armazenamento distribuído baseado no modelo chave-valor, cujo objetivo é permitir o controle da localidade dos dados pela aplicação. Palavras-chaves. Armazenamento distribuído em nuvem, sistemas de arquivos distribuídos, repositório chave-valor, NoSQL, proximidade dos dados, localidade dos dados 332

1. Introdução O crescimento vertiginoso no volume de dados manipulados atualmente vem trazendo desafios consideráveis no desenvolvimento de soluções escaláveis e globalmente distribuídas. Estima-se que até 2020 a quantidade de informação digital passará de 130 exabytes (cálculo estimado em 2005) para 40.000 exabytes gerados por ano. Aproximadamente 40% desta informação será armazenada na nuvem 1. Manter a escalabilidade e a consistência dos dados distribuídos globalmente são desafios crescentes e acompanhados pela comunidade científica. Implementações tradicionais de bases de dados distribuídas estudadas nas últimas décadas não apresentaram escalabilidade aceitável. Isso se deve em grande parte aos impactos em desempenho causados pelos custos da sincronização e tratamento de falhas. Tais implementações acabaram não sendo utilizadas amplamente na indústria [Agrawal et al. 2010], o que resultou no aparecimento de soluções projetadas para escalar horizontalmente e prover operações simples de leitura/escrita. Estas novas soluções são referenciadas como bases de dados NoSQL (Not Only SQL). A maior parte destas soluções NoSQL optou pelo armazenamento baseado em DHT (Distributed Hash Table) [Wehrle et al. 2005]) como mecanismo de distribuição e localização dos dados pelo fato de proverem escalabilidade, tolerância a falhas e alta disponibilidade. A distribuição é fundamentada através de uma função de espalhamento, o que torna o controle da localidade dos dados pela aplicação muito baixo ou praticamente nulo. Em sistemas distribuídos geograficamente a proximidade das informações com as aplicações usuárias é fator essencial para evitar a alta latência de redes WAN (Wide Area Network) [Corbett et al. 2013]. Devido à DHT ser desenvolvida para dar suporte a consultas de correspondência exata da chave, ao efetuar buscas baseadas em intervalos ou conjunto de valores, múltiplos servidores acabam sendo acessados. Métodos de indexação sobre a DHT foram propostos [Tang et al. 2010], porém o intuito destas abordagens é possibilitar buscas por intervalo e não diminuir o acesso a múltiplos servidores. Outra alternativa é a adoção de funções de espalhamento que mantêm a ordem lexicográfica das chaves como encontrado no Scalaris 2. Uma outra consequência da adoção de uma DHT é o fato da alocação dos dados ser realizada de maneira aleatória. Isto faz com que a aproximação de dados afins não seja considerada. O agrupamento de dados relacionados já é explorado nos SGBDs relacionais tradicionais, através de índices cluster e particionamento por intervalos para aproximação física dos blocos de dados. Em sistemas distribuídos globalmente, o mesmo conceito de agrupar informações semanticamente próximas em um mesmo servidor também é benéfica. Quando as informações acessadas em conjunto são agrupadas, a quantidade de servidores envolvidos na operação é minimizada, evitando transações distribuídas com protocolos de alto custo computacional [Shute et al. 2013]. Permitir o controle sobre a localidade dos dados é, portanto, essencial para a escalabilidade e desempenho da solução em ambientes distribuídos geograficamente. O objetivo deste trabalho é implementar um repositório distribuído baseado em um modelo 1 http://idcdocserv.com/1414 2 https://code.google.com/p/scalaris 333

chave-valor, cuja localidade seja garantida e controlada pela aplicação. A ideia primária é avaliar os benefícios do agrupamento de informações correlatas em um mesmo servidor e da proximidade dos dados com a aplicação consumidora. Este trabalho está organizado da seguinte maneira: o capítulo 2 aborda os trabalhos relacionados, o capítulo 3 descreve a proposta de implementação deste trabalho e por fim o capítulo 4 apresenta as considerações finais. 2. Trabalhos Relacionados Entre os sistemas de armazenamento distribuído presentes na literatura e relacionados com este trabalho, existem os sistemas de arquivos distribuídos, as bases de dados relacionais distribuídas e os sistemas NoSQL. Uma importante característica destas soluções é a forma como os dados são dispersos. Em geral, elas utilizam uma distribuição homogênea e uniforme dos dados. Os sistemas de arquivos distribuídos apresentam uma estrutura não centralizada e os dados são dispersos em um conjunto de servidores, que compõem o sistema de armazenamento, aumentando consideravelmente a capacidade computacional da solução. Os clientes e aplicações usuárias não possuem acesso direto à estrutura de disco subjacente e a interação é realizada através de um protocolo pré-estabelecido. A dispersão dos arquivos é transparente e é encargo da solução distribuída localizar o arquivo e transportá-lo até a aplicação que solicitou a informação. Soluções de código aberto como HDFS (Hadoop Distributed File System) [Shvachko et al. 2010], Ceph [Weil et al. 2006] e PVFS [Ross et al. 2000], ou proprietário como GFS (Google File System) [Ghemawat et al. 2003] não são em essência estruturados para dar ciência à aplicação sobre onde o arquivo ou um fragmento dele será armazenado. O HDFS e o GFS não implementam meios efetivos de alocação dos arquivos. Eles dividem os arquivos em fragmentos e estes são alocados em servidores com maior disponibilidade de recursos (menor carga no caso do HDFS ou menor uso de armazenamento no caso do GFS). O Ceph é um sistema de armazenamento distribuído baseado em objetos, que são espalhados por uma função de dispersão sobre um número de identificação associado a cada objeto. Este sistema provê uma flexibilidade maior, quando comparado às outras soluções, pois o administrador pode definir políticas de colocação dos objetos na estrutura do sistema distribuído (por exemplo, discos, servidores, datacenters, etc). O PVFS é proposto para fragmentação dos arquivos e distribuição uniforme dos fragmentos para desempenho. Ele possui uma forma efetiva de garantia da colocação do arquivo em determinado servidor. Esta colocação é definida através da interface do PVFS, na qual é possível especificar o nome do servidor no momento da criação do arquivo. Isto motivou a sua utilização como repositório de armazenamento, para estudo deste trabalho de mestrado. Para os sistemas NoSQL, o modelo de armazenamento chave-valor é encontrado nas soluções MemcacheDB 3 e Amazon DynamoDB 4. Elas utilizam DHT como mecanismo de dispersão e o fato da colocação das informações considerar uma função de espalhamento (hash), o posicionamento dos dados em determinado servidor não é garantido. Outros sistemas baseados em chave-valor, 3 http://memcachedb.org 4 http://aws.amazon.com/dynamodb 334

com noções de localidade para distribuição dos dados, são explorados nos trabalhos [Ribas et al. 2011, Arnaut et al. 2011, Schroeder et al. 2012] e estão presentes em soluções comerciais envolvendo servidores espalhados geograficamente, como Cassandra [Lakshman and Malik 2010] e Spanner [Corbett et al. 2013]. A localidade dos dados nestes repositórios distribuídos tem sido proposta com o intuito de permitir a proximidade das aplicações com seus dados, e minimizar as requisições e controle de acesso quando múltiplos servidores são necessários para atender uma consulta do usuário. Estas soluções, que adotaram noções de localidade na distribuição dos dados, são baseadas em um modelo, em que a aplicação utiliza a ordem lexicográfica das chaves para organização das informações. Ao utilizá-las para armazenamento sobre um sistema DHT com distribuição baseada em intervalo, a criação das chaves com prefixos comuns permite à aplicação o agrupamento dos dados em servidores próximos ou no mesmo servidor. Porém não há garantias de que chaves similares necessariamente serão alocadas em um único servidor. As soluções existentes não proveem garantias de localidade na alocação das informações. As soluções que mais se aproximam em atender este requisito distribuem os dados agrupando pela ordem lexicográfica das chaves. Esta abordagem obriga a aplicação a modificar ou adequar as chaves, adicionando prefixos a elas para possibilitar seus agrupamentos e, apesar de as aproximarem, não há garantias na localidade delas no mesmo servidor. A ausência de uma solução distribuída com suporte a localidade dos dados motivou a proposta do PVFS-Store, apresentado a seguir. 3. PVFS-Store PVFS-Store é uma proposta de implementação de repositório de dados distribuído, cujo armazenamento possui como base o modelo chave-valor. Este modelo é utilizado como estrutura de armazenamento físico para grande parte das soluções NoSQL citadas na seção 2 devido a sua flexibilidade, simplicidade e escalabilidade. O PVFS-Store permite a alocação de um conjunto de pares chave-valor agrupados em uma única estrutura, cuja localidade é ministrada de maneira controlada e orientada pela aplicação usuária do sistema. Esta estrutura é denominada bucket e ela representa a unidade básica de armazenamento e transferência da solução. 3.1. Modelo A arquitetura do sistema satisfaz a separação em níveis dos SGBDs tradicionais. A camada física descreve as estruturas físicas do banco de dados e é implementada sobre o repositório distribuído, PVFS-Store. A camada lógica abstrai os detalhes físicos de armazenamento. Ela se concentra em descrever como os dados são estruturados e como eles são apresentados para a aplicação. Para garantir a compatibilidade com outras soluções NoSQL, o modelo chave-valor é adotado nesta camada. Uma aplicação sobre o PVFS-Store consegue acessar este repositório, através de uma interface de manipulação dos atributos chave-valor. Ela inclui além destes atributos, alterações e adições de métodos para prover suporte ao bucket e ao servidor: create bucket(bucket, servidor): criação e inicialização do bucket em um servidor do repositório. drop bucket(bucket): remoção do bucket juntamente com as chaves. 335

put pair(chave, valor, bucket): inclusão de um par chave-valor ao bucket. get pair(chave): obtenção de um valor a partir de uma chave. rem pair(chave): exclusão de um par chave-valor a partir da chave. Tais instruções são similares às encontradas nos sistemas DHT, com uma importante diferença de que a localidade dos registros é controlada pela aplicação, através dos métodos de criação de um bucket e inclusão de um par chave-valor. Além disso, uma interface e repositório adicionais serão desenvolvidos para armazenar as informações do metadado. put md(chave, bucket): inclusão no metadado da chave e do bucket, onde ela será inserida. Este método será chamado toda vez que a função put pair for executada. get md(chave): obtenção do bucket, onde está localizada a chave. Ele será executado nas chamadas à função get pair. rem md(chave): exclusão da chave do metadado. Sempre que um par chave-valor for removido através do rem pair esta instrução será executada. A disposição do PVFS-Store em relação à aplicação e ao sistema distribuído pode ser visualizado na figura 1. Entre a aplicação e a interface do PVFS-Store as informações sobre bucket, chave e valor são utilizadas na interação com o repositório de dados. Já a comunicação do PVFS-Store com o PVFS utiliza uma API do sistema de arquivos distribuído e possui como unidade o bucket. Figura 1. Arquitetura do PVFS-Store Na implementação do PVFS-Store, um bucket é fisicamente um arquivo no sistema de arquivos PVFS. Todo bucket está associado a um servidor, necessário para a colocação deste arquivo na solução distribuída. As informações sobre buckets e servidores são armazenadas em uma estrutura de dados compondo o metadado do PVFS-Store. O metadado é responsável pela associação de uma chave ao bucket e ao servidor, nos quais ela está armazenada. A dispersão e localização dos dados são controladas pela aplicação através deste metadado, ao invés de uma DHT. Cada bucket possui no cabeçalho meta-informações, como número máximo de chaves, um mapa de bits para controle do espaço livre e uma estrutura de tamanho fixo contendo as chaves existentes no bucket. Os valores associados às chaves são salvos justapostos, no corpo do bucket, após o cabeçalho. 336

O PVFS-Store está sendo desenvolvido sobre o sistema de arquivos distribuídos PVFS. 3.2. Estudo de Caso Para avaliação do PVFS-Store como um repositório distribuído será implementado um módulo de armazenamento customizado do MySQL 5 (MySQL Custom Storage Engine), que utiliza o PVFS-Store como armazenamento físico. A escolha do MySQL se deve à sua arquitetura modular, na qual é possível acoplar módulos de armazenamento de maneira transparente para a aplicação. Como base deste estudo de caso serão utilizadas abordagens semelhantes às existentes em [Ribas et al. 2011] e [Chang et al. 2008] para mapeamento das relações em pares chave-valor. O módulo de armazenamento MySQL sobre o PVFS-Store será responsável por este mapeamento. Todas as operações existentes na base de dados relacional deverão ser convertidas para instruções do repositório chave-valor. Desta forma, tuplas deverão ser mapeadas para chave-valor no momento de uma operação de inserção e de forma inversa ao obtê-las. Outras aplicações sobre o PVFS-Store podem ser desenvolvidas. O modelo proposto de chave-valor com garantia de localidade (por meio de buckets) permite utilizá-lo como repositório de uma aplicação NoSQL ou até implementações mais complexas de SGBD sobre ele, que adotem fragmentações horizontais (por linhas) ou verticais (por colunas). Como validação da proposta deste trabalho e realização de experimentos, a solução será comparada a um armazenamento sobre uma DHT, cuja distribuição é uniforme e homogênea. 4. Considerações Finais Este trabalho propõe o desenvolvimento de uma solução distribuída armazenada sobre um repositório chave-valor e um metadado para localização das chaves nos respectivos buckets. Esta solução pretende avaliar os impactos do controle da localidade dos dados em um ambiente distribuído e compará-la com uma abordagem que não leva em consideração a localidade. O PVFS-Store possibilita à aplicação a alocação exata em um determinado servidor das tuplas no repositório distribuído. As soluções atuais possuem pouco ou nenhum controle sobre a colocação das informações nos servidores e implementam mecanismos de distribuição uniforme dos dados ou baseados em ordenação lexicográfica. Com a abordagem proposta é possível otimizar aplicações distribuídas globalmente, aproximando os dados das aplicações usuárias. O agrupamento das informações semanticamente relacionadas evita o acesso a múltiplos servidores e ajuda a diminuir a incidência de transações distribuídas. Portanto, é esperado que a distribuição controlada pela aplicação traga benefícios em uma rede distribuída geograficamente. O repositório PVFS-Store e seu metadado estão sendo implementados sobre um ambiente em nuvem. Para a validação da proposta será desenvolvido um módulo de armazenamento MySQL sobre o PVFS-Store. 5 http://www.mysql.com 337

O principal desafio na implementação deste trabalho é o desenvolvimento de um metadado descentralizado. Além disso, a especificação de uma interface chave-valor com suporte a localidade dos dados e o seu desenvolvimento sobre um repositório distribuído são desafios importantes na implementação desta solução. Referências Agrawal, D., El Abbadi, A., Antony, S., and Das, S. (2010). Data management challenges in cloud computing infrastructures. In Databases in Networked Information Systems. Arnaut, D. E., Schroeder, R., and Hara, C. S. (2011). Phoenix: A relational storage component for the cloud. In Cloud Computing (CLOUD), 2011 IEEE International Conference on. Chang, F., Dean, J., Ghemawat, S., Hsieh, W. C., Wallach, D. A., Burrows, M., Chandra, T., Fikes, A., and Gruber, R. E. (2008). Bigtable: A distributed storage system for structured data. Corbett, J. C., Dean, J., Epstein, M., Fikes, A., Frost, C., Furman, J., Ghemawat, S., Gubarev, A., Heiser, C., Hochschild, P., et al. (2013). Spanner: Google s globally distributed database. Ghemawat, S., Gobioff, H., and Leung, S.-T. (2003). The google file system. In ACM SIGOPS Operating Systems Review. Lakshman, A. and Malik, P. (2010). Cassandra: a decentralized structured storage system. Ribas, E. A., Uba, R., Reinaldo, A. P., et al. (2011). Layering a dbms on a dht-based storage engine. Ross, R. B., Thakur, R., et al. (2000). Pvfs: A parallel file system for linux clusters. In in Proceedings of the 4th Annual Linux Showcase and Conference. Schroeder, R., dos Santos Mello, R., and Hara, C. S. (2012). Affinitybased xml fragmentation. In WebDB. Shute, J., Vingralek, R., Samwel, B., Handy, B., Whipkey, C., Rollins, E., Oancea, M., Littlefield, K., Menestrina, D., Ellner, S., et al. (2013). F1: A distributed sql database that scales. Shvachko, K., Kuang, H., Radia, S., and Chansler, R. (2010). The hadoop distributed file system. In Mass Storage Systems and Technologies (MSST), 2010 IEEE 26th Symposium on. Tang, Y., Zhou, S., and Xu, J. (2010). Light: a query-efficient yet low-maintenance indexing scheme over dhts. Knowledge and Data Engineering, IEEE Transactions on, 22(1):59 75. Wehrle, K., Götz, S., and Rieche, S. (2005). 7. distributed hash tables. In Peer-to-Peer systems and applications. Weil, S. A., Brandt, S. A., Miller, E. L., Long, D. D. E., and Maltzahn, C. (2006). Ceph: A scalable, high-performance distributed file system. In Proceedings of the 7th Symposium on Operating Systems Design and Implementation. 338