Grails Modelagem NoSQL
01/08/2013 19:59
1
Boa tarde a todos,

Alguém já está usando NoSQL com Grails? Como estão utilizando para modelar / acessar os dados?

O GORM cai em desuso nesse caso, mas nao conclui alguma modelagem que seguisse o mesmo padrao ou algum outro padrao que se adaptasse melhor.

Eu estava estudando o MongoDB e o plugin do MongoDB para Grails, e achei bem interessante a adaptação dos Models com o plugin, mas não cheguei a parar para criticar se estava tirando as vantagens do NoSQL.
E ainda apanhei por não lembrar que estou em uma modelagem não-relacional e sem transacoes hehe.
Tags: NoSQL, modelagem


2
Estou trabalhando em um projeto não Grails usando MongoDB.

Vou te passar algumas das lições que aprendi da pior forma possível.

1) Esqueça o ACID: não necessáriamente você terá no MongoDB. Na realidade, você tem pouquíssimo disto.

2) Pare de pensar em relacionamentos e comece a pensar em agregações. Torna sua vida muito mais fácil.

3) Evite documentos ultra complexos, isto é, com muito documento embutido e, pior ainda, quando você tem listas com documentos embutidos. As consultas ficam muito complicadas e os comandos para editar apenas parte dos documentos se torna infernal.

4) Tire proveito do modelo documental. Você não tem esquema, então pode incluir MUITO MAIS metadados nos seus documentos. Por metadados digo informações que só a lógica interna do seu sistema usa, e que seu usuário sequer precisa saber que existe. Eu tiro muito proveito disto: torna sua vida tão mais simples, que olhar pro relacional de novo fica esquisito.

5) Integridade referencial: crie a sua a mão. MongoDB não tem isto, e as bibliotecas de acesso também não. Eu obtenho integridade por AOP por exemplo, a nível de aplicação.

6) Esqueça lazy loading. Você pode criar relacionamento entre os objetos, mas nas bibliotecas que usei (driver nativo e Spring Data) você sempre carrega o grafo inteiro. E isto é uma merda.

7) Crie índices: as pessoas se esquecem, mas índice não é algo existente só no modelo relacional. Conforme a base de dados cresce, estes se tornam fundamentais.


0
Falando de MongoDB, caso interesse alguém:
https://education.10gen.com/

Recomendo o MongoDB for developers, é em python =)
02/08/2013 14:55


2
Fala Mussato, tudo bem?

Cara, estou começando agora um projeto Grails que usa o mongoDB como uma de suas bases.
O sistema possui um banco relacional convencional para os objetos do negócio, e o mongo entra para servir como base de dados para persistir endereços. O mongo provê algumas funcionalidades pois possui index Geográfico, ou seja, a aplicação persiste no mongo Lat e Long, e depois eu consigo fazer buscas geoespaciais, tais como ponto mais próximo, raio, etc...

Bom, estou usando o GORM para gerenciar isso. Não tirei todo o proveito do mongo, pois uso ele "basicamente" como banco geográfico, então não sei lhe dizer como ele se comporta como base dados única no sistema.

Eu achei muito fácil utilizá-lo com o grails, e o plugin mongo. Pelo que vi na documentação, mesmo que você tenha se documento bem definido (Seu domínio), o plugin lhe permite alterações na estrutura do documento em tempo de execução, que seria tranquilo de fazer fora do Grails.

Como estou no início do projeto, ainda não tenho muitas informações. Mas caso tenha alguma novidade, ou algo bacana, compartilho aqui para vocês!

Em seu projeto o mongo será a única base de dados?

[]'s
03/08/2013 14:22


1
Luciano, já deu uma olhada no projeto PostGIS? http://postgis.net/

Ele te fornece funcionalidades de geo referência no modelo relacional se estiver usando o PostgreSQL. Se bobear, facilita sua vida.


1
Sim... já sim, mas acho mais "simples" trabalhar com o mongo que com essa camada sobre o postgres. Fora que a instalação e configuração do postGIS costuma dar um pouco de dor de cabeça.
Pelo que andei lendo, o mongo é bem funcional para trabalhar com geolocalização, além de muito escalável. O Foursquare usa o mongo para gerenciar os check-ins de usuários =].

Como estou começando agora minha dúvida é quanto a segurança... vc já tem trabalhando com esse banco, o que tem a dizer sobre isso Kico?
05/08/2013 12:45


1
Poxa, bacana saber desta dificuldade na instalação Luciano.
Um amigo meu trabalhou com o PostGIS algum tempo atrás e me falou maravilhas a respeito, por isto indiquei. :)


0
O PostGIS é bem completo, bem robusto. Mas como ele é uma camada sobre o banco, não é tão tranquilo sua instalação. Então, decidi usar um banco simples, eficiente e que conseguisse cobrir o propósito de forma nativa, buscas por geolocalização.
05/08/2013 13:06


1
Bom dia Luciano,

Estou cogitando fazer tudo em cima do MongoDB.

Algumas idéias ainda estão meio verdes, e não sei direito como modelar algumas coisas pra tirar o proveito, preciso aprender a pensar diferente ainda hehe

Vou fazer uma tentativa no plugin + GORM e posto a experiência aqui
05/08/2013 15:06


0
e muito obrigado pelas dicas!

foram otimos pontos para levar quando estiver desenvolvendo
05/08/2013 15:07


1
Um ótimo começo é o post do blog do Kico... caso você ainda não tenha esclarecido ou nunca tenha trabalhado com uma base documental, ta bem explicadinho lá os conceitos básicos (E caso você já não tenha lido, rs).

Achei muito tranquila a integração com o Grails, quase que transparente. Mas como disse, no meu caso não tiro todo o proveito de um banco documental.

Boa sorte nessa empreitada!

[]'s
05/08/2013 17:30



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto