BT

A sua opinião é importante! Por favor preencha a pesquisa do InfoQ!

Cloudant libera um servidor baseado em Java para o CouchDB

| por Michael Hunger Seguir 1 Seguidores , traduzido por Lucas Souza Seguir 0 Seguidores em 15 set 2010. Tempo estimado de leitura: 2 minutos |

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

Cloudant a empresa por trás do CouchDB liberou uma versão do Java View Server para o CouchDB. Isto significa que não apenas Erlang e linguagens interpretadas como Javascript e Python podem ser usadas para escrever Map-Reduce jobs mas também linguagens baseadas na JVM. A abordagem será discutida no encontro da comunidade CouchDB neste semana. Atualmente ele pode ser somente usado no serviço BigCouch hospedado pela própria Cloudant.

A principal vantagem que é citada é a grande quantidade de bibliotecas Java que estão disponíveis para todos os tipos de funcionalidades que podem ser relevantes em tarefas de map reduces. A segunda vantagem é uma maior segurança com aspecto dos tipos estáticos.

Uma comparação de performance seria interessante, mas ainda não existem benchmark de performance para isto. É experado que a performance seja mais baixa do que em linguagens nativas como o Erlang (Java e Erlang pode ser juntadas em uma única view). Existe uma certa sobrecarga no processo de serialização e deserialização pelo uso da biblioteca org.json.

Para usar as views de Map Reduce baseadas no Java basta apenas implementar uma simples JavaView Interface que oferece callbacks para map, reduce e rereduce. Por exemplo, uma simples view que agregue palavras em campos de um JSON.

{
  "_id":"_design/splittext",
  "language":"java",
  "views" : {
  "title" : {"map":"{\"classname\":\"com.cloudant.javaviews.SplitText\",\"configure\":\"title\"}","reduce":"com.cloudant.javaviews.SplitText"},
	}    
}

InfoQ falou com David Hardtke, o diretor de busca da Cloudant, que é responsável pelo projeto.

InfoQ: CouchDB roda sobre o Erlang, como é esta iteração com código da JVM? Quais foram os desafios na implementação?

David: O Java View Servers, como todos das views do CouchDB (exceto a nativa em Erlang), rodam como processos externos. Existe um protocolo bem definido para a comunicação entre CouchDB e os view servers. Normalmente, a comunição acontece através de padrões de io, mas nós na verdade usamos a biblioteca OptErlang java-erlang por razões de performanvce (permite múltiplas threads).

InfoQ: Quais limitações no código e bibliotecas podem ser usadas neste contexto?

David: O principal desafio foi a segurança, tanto no nível de sistema quanto no nível do usuário. Nós estamos rodando em um cluster compartilhada. Nós usamos class loading dinâmico para carregar as bibliotecas do usuário. O clas loader tem um sistema de segurança bem rídigo que restringe chamadas maliciosas. Não existe acesso ao FS e um número limitado de chamadas ao System são permitadas.

A arquitetura atual deste view server é completamente simples, ele utiliza apenas threads java que são direcionadas pelas chamadas das instâncias do CouchDB baseado em Erlang. Se o servidor Java falha ele é apenas parado e ligado novamente. Abordagens interessantes para tal seria o servidor usar o framework baseado Akka framework ou as requisições não blocantes do Jetty.

Um grande potencial reside no uso de linguagens como Clojure, Scala ou Groovy para fazer um trabalho que ficará muito mais conciso e poderoso que em Java, pelo fato de odar em qualquer JVM. De acordo com David um servidor baseado em Clojure está em desenvolvimento.

Para avaliar o novo Java View Server uma conta gratuita está disponível no site do Cloudant e pode ser usada. instruções detalhadas pode ser encontradas no couchjava github.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT