我再次開始使用Rails,並遇到了一個難題,我現在覺得這很難理解。當談到使用數據庫時,我有點小氣,所以請原諒我,如果這是相當基本的。將遺留數據遷移到導軌中的新模型
我有一箇舊的Rails應用程序,我不再希望符合數據模型。該模型應該被棄用,以支持更輕,更簡單的模型。
較舊的應用程序也非常單一,所以我試圖將它分解成較小的服務組件。
因此,這引出我的疑問,因爲它通常不贊成使用來自單個模型的多個數據庫......將舊模型中存儲的數據轉換爲新模型的最佳方法是什麼,一次一個服務?
例如,讓我們假設我在舊的和新的都有一個用戶模型。在舊模型中,用戶有很多列,但不是所有列都應該使用新模型。
這可能是一個例子,從用戶被限制到舊模型中的單個地址,以能夠分配一個到多個關係,其中地址在他們自己的模型中被拆分並且僅使用外部引用鑰匙什麼的。
編輯1:
的目標最終是在同一時間從傳統模式的數據庫中的數據虹吸到新的模型的數據庫,儘可能方便,一個數據集。編輯2:
最初發布從我的手機。這裏有幾個例子可能有助於提出建議。
舊模式
create_table "brands", force: :cascade do |t|
t.string "name"
t.string "url"
t.string "logo"
t.boolean "verified"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "hidden", default: false
t.string "facebook_url"
t.string "twitter_handle"
t.string "pinterest_handle"
t.string "google_plus_url"
t.string "address_street1"
t.string "address_street2"
t.string "address_street3"
t.string "address_city"
t.string "address_state"
t.string "address_zip"
t.string "address_country"
t.string "email"
t.string "phone"
t.string "story_title"
t.text "story_text"
t.string "story_photo"
end
新模式
create_table "companies", force: :cascade do |t|
t.string "companyName", null: false
t.string "companyURL", null: false
t.boolean "companyIsActive", default: true, null: false
t.boolean "companyDataIsVerified", default: false, null: false
t.string "companyLogoFileURL"
t.datetime "companyFoundedOnDate"
t.integer "companyHQLocationID"
t.integer "companyParentCompanyID"
t.integer "companyFirstSuggestedByID"
t.string "companyFacebookURL"
t.string "companyGooglePlusURL"
t.string "companyInstagramURL"
t.string "companyPinterestURL"
t.string "companyTwitterURL"
t.string "companyStoryTitle"
t.text "companyStoryContent"
t.string "companyStoryImageFileURL"
t.boolean "companyIsHiddenFromIndex", default: false, null: false
t.integer "companyDataScraperID"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
所以,基本上...我希望能夠從舊的模式中取數據,說一個品牌「的名字「列並將其相關值抽取到新模型中,這樣值就會在完全不同的postgresql實例的公司」companyName「列中結束。
我認爲你應該先建立你的新應用程序,並製作一些自定義的種子數據來幫助開發。然後,當你感覺完成後,編寫一個遷移腳本。編寫一些自動化測試來驗證數據完全遷移非常重要。這是一個有點魯莽的任務,但它必須完成。如果存在關聯對象存在的驗證,請確保以正確的順序創建記錄。 –
我已經映射了哪些列出現在何處並且正在使用自定義種子數據進行測試。現在我只需要將數據從舊的移動到新的並運行我的測試。感謝提醒和鼓勵! –