Ich wurde gebeten, irgendeine Art von Berichterstattung (Logging) zu machen. Der Mitarbeiter hat lokal eine Web-Anwendung (nur eine dynamische Website, in PHP geschrieben) in vielen Unternehmen installiert. Diese Web-App ist eine Art Umfrage. Alle Daten werden in der lokalen Datenbank gespeichert, aber jetzt müssen diese Daten (Ergebnis der Umfrage) auch nach jedem Senden an den zentralen Server gesendet werden.
Es gibt vier Arten von Umfragen. Sie haben es so organisiert, dass es viele Projekte gibt, und jedes Projekt kann nur eine Umfrage von jedem Typ haben (STI hier?) Und Survey gehört zu einem Projekt. Jede Umfrage erhält einen Bericht von der lokalen App, sodass sie viele Berichte enthält. Die Rails 3 App, die diese Berichte protokolliert, sollte diese Logik irgendwie nachahmen. Die erste Frage ist: Macht diese AR-Struktur für Sie Sinn?
%Vor% Die zweite Frage betrifft mehrere Tabellen für ein AR-Modell. Wenn alle Daten in reports
table gespeichert werden, wird die Tabelle sehr schnell sehr groß und eine effiziente Abfrage nach Berichten, die zu einer bestimmten Umfrage gehören, könnte nach einiger Zeit ein Problem darstellen. Vielleicht wäre es besser, separate Tabellen für jede Umfrage zu haben? Wie reports_<survey_id>
. Ist das möglich?
Ich bin auch irgendwie gezwungen, MySQL zu benutzen, aber wenn es eine andere, viel bessere Lösung dafür gibt, könnte ich versuchen, es durchzusetzen.
Wenn Sie noch hier sind, vielen Dank für das Lesen:)
Die zweite Frage betrifft mehrere Tabellen für ein AR-Modell. Wenn alle Daten in der Berichtstabelle gespeichert werden, wird die Tabelle sehr schnell sehr groß und eine effiziente Abfrage nach Berichten, die zu einer bestimmten Umfrage gehören, könnte nach einiger Zeit ein Problem darstellen. Vielleicht wäre es besser, separate Tabellen für jede Umfrage zu haben? Wie Berichte_. Ist das möglich?
Ja, das ist möglich.
Sie können es so machen:
%Vor%AKTUALISIEREN
%Vor%Setzen Sie einen Index auf jeden Ihrer Fremdschlüssel (z. B. Reports.survey_id) und atmen Sie durch. Sie machen sich gerade zu viel Sorgen um die Leistung. Sie werden mindestens mindestens Millionen von Datensätzen in Ihrer Berichtstabelle benötigen, bevor Leistungsprobleme von MySQL auftreten.
Tags und Links ruby-on-rails-3 activerecord