Marshalling vs ActiveRecord Serialisierung in Ruby On Rails

8

Was ist der Unterschied zwischen Marshalling und ActiveRecord Serialization?

Gibt es eine bestimmte Gelegenheit, wenn es vorzuziehen ist, übereinander zu verwenden, um ein Objekt in der Datenbank zu speichern?

    
collimarco 19.08.2009, 16:10
quelle

2 Antworten

10

IIRC:

Es wird nicht garantiert, dass Ruby Marshall über verschiedene Ruby-Versionen oder die gleichen Ruby-Versionen auf verschiedenen Plattformen funktioniert.

Weil Sie möglicherweise verschiedene Ruby-Versionen haben, die auf dieselbe serialisierte Spalte zugreifen, implementiert Rails seine Serialisierung mit YAML. Während dies langsamer ist, garantiert es, dass Ihre serialisierte Spalte von anderen Ruby-Versionen, Ruby auf anderen Betriebssystemen und auch anderen Programmiersprachen gelesen werden kann.

    
Olly 20.08.2009, 15:22
quelle
4

Marshhalling und Serialisierung sind beide allgemeine Begriffe, die dasselbe Grundprinzip beschreiben. Per Definition ist jeder Prozess, der in der Lage ist, ein Objekt und seine abhängigen Unterstrukturen in etwas zu speichern, das so gespeichert werden kann, dass es zu einem späteren Zeitpunkt wiederhergestellt werden kann, als Serialisierung oder Marshalling bezeichnet.

Es gibt ein bisschen Klarheit darüber, wie sich diese Begriffe unterscheiden können, aber im Wikipedia-Eintrag sind sie normalerweise identisch: Ссылка

Der spezifische Unterschied in Bezug auf Ruby besteht darin, dass das integrierte Modul Marshal für jede Anwendung verfügbar ist, während die ActiveRecord-Serialisierungsunterstützung spezifisch für die Rails-Plattform ist.

Da ActiveRecord über eine eigene eng integrierte Serialisierungsmethode verfügt, ist es im Allgemeinen vorzuziehen, diese zu verwenden.

    
tadman 19.08.2009 18:47
quelle