2013-04-14 9 views
5

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?

+2

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

+1

ja. Sie müssen diese Tabelle transformieren –

+0

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. –

Antwort

1

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.

+1

Glaubst du nicht, dass das Löschen und Wiederherstellen der Tabellen das Produktionssystem durchbrechen könnte? –

+0

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

+0

Ja, transform_table ist der vernünftige Ansatz, um ein solches Problem anzugehen. Ich gab der Antwort nur eine breitere Perspektive. –