Das Ziel: Verwendung einer CRON-Aufgabe (oder eines anderen geplanten Ereignisses) zur Aktualisierung der Datenbank durch nächtlichen Export von Daten aus einem bestehenden System.
Alle Daten werden in einem bestehenden System erstellt/aktualisiert/gelöscht. Die Website ist nicht direkt mit diesem System verbunden, so dass die Rails-App lediglich die Aktualisierungen widerspiegeln muss, die im Datenexport erscheinen.
Ich habe eine .txt
Datei mit ~5.000 Produkten, die wie folgt aussieht:
"1234":"product name":"attr 1":"attr 2":"ABC Manufacturing":"2222"
"A134":"another product":"attr 1":"attr 2":"Foobar World":"2447"
...
Alle Werte sind Zeichenketten, die in doppelte Anführungszeichen ( "
), die durch Doppelpunkte getrennt sind ( :
)
Felder sind:
id
: eindeutige Kennung; alphanumerischname
: Produktname; beliebiges Zeichen- Attributspalten: Strings; beliebige Zeichen (z. B. Größe, Gewicht, Farbe, Dimension)
vendor_name
: Zeichenkette; beliebiges Zeichenvendor_id
: eindeutige Verkäufer-ID; numerisch
Die Lieferanteninformationen sind im derzeitigen System nicht normalisiert.
Was sind hier die besten Praktiken? Ist es in Ordnung, die Tabellen "Produkte" und "Lieferanten" zu löschen und bei jedem Zyklus mit den neuen Daten neu zu schreiben? Oder ist es besser, nur neue Zeilen hinzuzufügen und bestehende zu aktualisieren?
Anmerkungen:
- Diese Daten werden verwendet, um
Orders
die durch nächtliche Datenbankimporte erhalten bleiben.OrderItems
muss mit den in der Datendatei angegebenen Produkt-IDs verknüpft werden, so dass wir uns nicht darauf verlassen können, dass ein automatisch inkrementierender Primärschlüssel bei jedem Import derselbe ist; die eindeutige alphanumerische ID muss verwendet werden, um dieproducts
aorder_items
. - Im Idealfall möchte ich, dass der Importeur die Verkäuferdaten normalisiert
- Ich kann keine einfachen SQL-Anweisungen verwenden, also muss ich wohl eine
rake
Aufgabe, um dieProduct.create(...)
yVendor.create(...)
Stil-Syntax. - Dies wird auf EngineYard umgesetzt werden