Rails polymorphe Assoziation ohne Typ (eindeutige ID)

8

In meiner App habe ich eine eindeutige ID für jedes Objekt (Tabellen).

Aus diesem Grund weiß ich, wenn ich die ID sehe, welchen Objekttyp es ist, ob es ein Benutzer oder ein Hotel ist.

Ich habe mich gefragt, ob ich die Suche nach dem item_type in polymorphen Zuordnungen speichern könnte, patch die Suche mit einer ID-Sequenz-Suche im Speicher und spart so den Platz in der Datenbank und im Index.

Kann das gemacht werden?

Ich arbeite mit Rails 3.0.9, Ruby 1.9.2

    
KensoDev 16.12.2011, 13:17
quelle

2 Antworten

1

Dies ist möglicherweise nicht die Antwort, nach der Sie suchen. Ich bin sicher, dass dies irgendwie möglich ist, aber Sie würden gegen den Strich kämpfen, wie Polymorphismus in ActiveRecord entworfen wurde, und das würde wahrscheinlich eine Last von Schmerz verursachen.

Die erste Frage, die mir kommt, ist warum? Sie fordern eine Leistungsoptimierung. Sehen Sie ein Leistungsproblem? Haben Sie mit Instrumentation, New Relic, dem Ruby-Profiler und anderen Tools verifiziert, dass diese zweite Suche wirklich Ihre Leistung zunichte macht? Wenn Sie nichts davon getan haben, verschwenden Sie wahrscheinlich Ihre Zeit. Die Vorhersage von Leistungsengpässen ist eine ungenaue Wissenschaft und unterliegt der 80-20-Regel.

Wenn Sie dieses Problem wirklich und wirklich haben und Ihre Logs, Ihre New Relic-Diagramme, gründlich analysiert haben, haben Sie das Problem isoliert und Performance-Tests dagegen durchgeführt, wenn Sie all das und Sie getan haben Wenn Sie ein Leistungsproblem bei diesem Problem sehen, würde ich vorschlagen, dass eine Lösung zur Denormalisierung wahrscheinlich zu einer Verbesserung führt. Denormalisierung ist ein gängiges Tool zur Optimierung von Datenbankleistungsproblemen. Sie würden Daten an mehr als einer Stelle speichern, aber Ihre Abfragen würden weniger Tabellen (schneller) berühren, mit dem zusätzlichen Aufwand, die mehreren Bits synchron zu halten, wenn Datensätze aktualisiert werden (komplexerer Anwendungscode).

Wenn Sie etwas ausführlicher über Ihr Beispiel schreiben könnten, wäre es einfacher, konkretere Vorschläge zu machen oder Beispiele zu nennen.

    
Wolfram Arnold 19.01.2012, 00:41
quelle
1

Ich denke, dass dieser Artikel für Sie nützlich sein kann:

Polymorphe Assoziationen in Rails mit Hilfe von xid (eindeutige IDs im System) Ссылка

    
flowdelic 21.02.2012 15:53
quelle

Tags und Links