Zum Beispiel, ich habe {id, name}
in Minnesota gespeichert und möchte auf {id, name, age}
aktualisieren, muss ich transform_table
jedes Mal aufrufen, wenn ich Schema ändere?Was ist der einfachste Weg, um MNS-Schema zu aktualisieren?
Antwort
Der einfachste Weg ist, die Tabelle zu löschen und neu zu erstellen. Wenn Sie die Daten in der Tabelle behalten müssen, ist mnesia:transform_table
der Weg zu gehen.
Glaubst du nicht, dass das Löschen und Wiederherstellen der Tabellen das Produktionssystem durchbrechen könnte? –
In den meisten Fällen ja, es sei denn, Sie haben keinen Zugriff auf die Datenbank, während Sie die Tabellen neu erstellen. 'transform_table' vermeidet solche Probleme. – legoscia
Ja, transform_table ist der vernünftige Ansatz, um ein solches Problem anzugehen. Ich gab der Antwort nur eine breitere Perspektive. –
Was würden Sie sonst noch erwarten? Sie müssen die Tabelle durch einen Funktionsaufruf ändern, richtig? transform_table/{3-4} gibt Ihnen jedoch einige Optionen, um den Ansatz zum Anpassen des Schemas zu ändern. – d11wtq
ja. Sie müssen diese Tabelle transformieren –
Wird transform_table sehr lange dauern, wenn die mnesia-Tabelle sehr groß wird? Wenn dies der Fall ist, wirkt sich dies auf den Vorteil von Hot-Code-Upgrades aus. Wenn Sie über eine andere Lösung die Datensatzversion verfolgen und nur die geladenen Datensätze aktualisieren, kann der Upgrade-Code langwierig und fehleranfällig sein. –