Pergunta

Nossos Amores Empresa relatórios que calcular as métricas obscuros - métricas que não podem ser calculados com localizadores de ActiveRecord (exceto find_by_sql) e onde capacidades baseadas rubi do Ruport são muito lento.

Existe um plugin ou gem ou db adaptador lá fora, que vai fazer grandes cálculos na camada de banco de dados? Qual é a sua solução para a criação de relatórios intrincados?

Foi útil?

Solução

Você pode querer olhar usando DataMapper ou Sequel para o seu ORM Se você está encontrando que ActiveRecord não tem a expressividade que você precisa para consultas complexas. Alternando longe de ActiveRecord não seria uma decisão a tomar provável, mas pode valer a pena investigar, pelo menos.

Outras dicas

Apesar de não ser agnóstico banco de dados, a nossa solução é funções plpgsql onde se torna muito lento para usar Ruby e ActiveRecord.

Squirrel plug-in do Thoughtbot adiciona um monte de funcionalidade Rubi-ish ao método find de ActiveRecord, com multi-camadas condicionais, escalas, e associações modelo aninhado:

www.thoughtbot.com/projects/squirrel /

Há algo inerente sobre seus relatórios que impede o uso de uma visão SQL ou procedimento armazenado?

Em um projeto particular, uma técnica muitas vezes eu achar útil é criar sua consulta SQL (que pode ser bastante complexo) como uma vista nomeada no banco de dados, e então usar

 YourModel.connection.select_all(query)

para puxar a dados. Não é uma abordagem ideal; Estou ansioso para explorar melhorias a ele.

Infelizmente, como você sugeriu, o apoio para fazer computação relatórios baseados em banco de dados complexos dentro de rails parece bastante limitado.

Soa como se suas tabelas poderia ser normalizado. Em um lugar que eu trabalhei, a quantidade de normalização que fizemos foi impactando nossas necessidades de relatórios, por isso criamos algumas tabelas sombra que continham um monte dos dados agregados, e se reportar contra isso.

Eu concordo com o comentário de Neil N que a questão é um pouco vago, mas talvez isso você fica se movendo na direção certa?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top