2015-05-11 82 views
1

我想正常化一個模式。我有一個用於CMS的MySQL數據庫,數據模式非常成問題。例如,爲了獲得一個實體的所有屬性和子屬性,我必須查詢幾個表,並且還要做一些後處理。有一些子屬性存儲在JSON字符串中的一個字段中,當您解析該JSON時,它會將外鍵ID提供給數據庫中的另一個表。在與db溝通,然後處理內容,然後再與其他DB交談時,這是一團糟。在MySQL數據庫之間遷移和處理數據的更快方法

我正在嘗試創建一個腳本,該腳本可以在cron時間表上運行,該腳本將從現有系統中獲取數據,並對其進行處理,並將其放入具有規範化架構的不同數據庫中。

我已經初步創建了一個PHP腳本來完成此操作,但僅包含350個產品(超過100k)的一個類別(超出〜800個),腳本需要大約5分鐘才能完成。我需要更快一點。我的腳本使用ADODB library與mysql進行交互。

這裏有一些選擇(因爲格式問題/答案),我很好奇,如果其中之一可能是成倍的性能更好:

  • 生PHP(無庫)
  • PHP與Phalcon
  • perl的
  • Node.js的
  • 別的東西..
+0

您可能想要提供一個典型的當前使用的代碼示例。人們可能能夠提供您目前擁有的優化策略。 – Uueerdo

回答

1

我想你可能想在mysql中編寫一些「翻譯」過程來處理舊數據並直接生成新條目。它可以比其他解決方案更快。

如果查詢性能不是問題,您可以根據當前模式創建一些視圖(過程,函數),並使您的編程更加簡單。一些物化視圖實際上可以幫助提高性能。

如果您必須「轉換」MySQL以外的巨大數據庫,您可以先將「結果」寫入磁盤文件(文本或sql),並在轉換完所有「數據」後將其導入到MySQL。