Domanda

Sono preoccupato se Rails è in grado di gestire i tipi di aggregazioni complesse necessarie per un'applicazione finanziaria e in particolare se l'ORM può gestirle in modo efficace. In un'applicazione finanziaria per la quale sto pensando di utilizzarla, è necessario fare molte segnalazioni di dati finanziari dettagliati, aggregati in vari modi. Senza supporto in Rails ORM, avrei bisogno di scrivere SQL diretto. Ma sono preoccupato che una volta iniziato questo, altre parti di Rails potrebbero non funzionare altrettanto bene e che di conseguenza potrei finire per usare principalmente Rails per i suoi percorsi e pochissimo altro. È una preoccupazione valida o mi preoccupo inutilmente?

È stato utile?

Soluzione

Le limitazioni di ActiveRecord sono uno dei motivi per cui ho avuto problemi con l'utilizzo di Rails in un ambiente scientifico. Potresti voler controllare Ruby ORM alternativi che rendono un po 'più facile lavorare con un database legacy:

Alla fine però gli ORM di progettazione ti allontanano da SQL, quindi è possibile che nessuno di loro sia adatto.

Altri suggerimenti

Questa domanda illustra un problema RoR di cui si discute piuttosto ampiamente: il relativo disagio con i difficili requisiti di mappatura del database. (è proprio il modello ActiveRecord in cui si trovano le difficoltà.) Ama scomporre le query complesse in query più semplici che si adattano più strettamente al modello AR, che probabilmente già conosci è un'astrazione relativamente leggera sulle tabelle, con relazioni semplici basate su ad es. affermazioni di tipo uno-a-molti.

Quindi direi che ti sentirai più a tuo agio se accetti tu stesso il dovere SQL e poi lascia che RoR gestisca le parti di non persistenza.

Questo non è un dilemma limitato al RoR. Quasi tutti gli strumenti di modellazione relazionale di oggetti presentano le stesse domande.

(Nota a piè di pagina: ho quasi usato l'abbreviazione ORM, ma esiste un altro ORM che gestisce casualmente specificamente questi tipi di problemi di progettazione e astrazione di database concettuali: Object Role Modeling.)

È possibile che Rails non sia una piattaforma appropriata per questa applicazione. O potresti prendere in considerazione l'utilizzo di ActiveRecord rispetto alle visualizzazioni nel tuo database. Aggrega i tuoi dati nelle tue viste, quindi usando la gemma 'rails_sql_views' puoi trattarli come normali modelli. (Non l'ho mai usato, quindi non so quanto funzioni in pratica.)

Link: rails_sql_views

Modifica: per un'ulteriore ispezione, potresti non aver nemmeno bisogno di quella gemma o di qualsiasi altra configurazione speciale per eseguire semplicemente una query rispetto alle visualizzazioni.

Il motivo per cui mi piace il record attivo è che ti permette di dare un'occhiata all'astrazione. Devo ancora imbattermi in una situazione che non potrei gestire con AR. Sono sicuro che potrebbero esserci alcuni esempi estremamente esoterici, ma una domanda migliore sarebbe quella di dare un esempio del tipo di query che vuoi fare e lasciare che qualcuno ti mostri come farlo in AR.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top