暴力匯入大量資料到drupal系統

Posted by on | | 0 意見


稱之為“暴力”,是因為不透過 drupal 的模組或api,反而是要直接存取資料庫,
優點:是自己可以控制想要存取的欄位,
缺點:也是自己可以控制想要存取的欄位,一不注意,資料可能就亂了。

看了一下,drupal api - node_save(),簡記幾個重要動作:

  1. 處理資料
  2. 處理版本
  3. 處理cache

如何將大量資料(very big data)匯入到Drupal呢?

Posted by on | | 0 意見

一開始用Feeds匯入資料,資料量少時,發現Feeds還蠻好用的,
但資料量越來越大時,就發現Feeds不夠用了,
約2000筆資料的匯人,就會出現ajax 500之類的訊息,
應該是等太久,導致網頁timeout沒回應之類的。

Drupal Migrate 模組 之 json格式 資料來源 開發(2)

Posted by on | | 0 意見

Json資料來源,可能有很多種情況,像是:
資料清單和資料詳細內容是不同的檔案
資料清單和資料詳細內容都在同一個檔案
資料清單和資料詳細內容都在同一個檔案,但在其中卻是位於不同階層
您可以看官網這一篇:JSON-based source classes


底下是小弟實作 Migration的Class (從範例改來的:example_baseball)

/**
 * 匯入 Onnie 商品資料
 */

用drush來控制migrate

Posted by on | | 0 意見

建議裝個drush,它是用指令的模式來控制drupal的某些功能,
例如用drush來控制migrate,因為網頁會有timeout的問題,
資料量大時,用drush也會比較快!

drush之migrate的相關指令,
請查看: All commands in migrate: (migrate)


我自己常用的有:(假設我的migration的machine name:migrate_onnie_prod)

Drupal Migrate 模組 之 json格式 資料來源 開發(1)

Posted by on | | 0 意見

原本是懶的自行重頭開發,所以把範例:migrate_example_baseball,複製一份改成自己要的。改到後來,還是自己弄一個新的好了。

Migrate 模組的位置:sites/all/modules/migrate
migrate_example_baseball 的位置:sites/all/modules/migrate/migrate_example_baseball
所以我把我的模組也放在Migrate模組底下:sites/all/modules/migrate/migrate_onnie

在 sites/all/modules/migrate/migrate_onnie 底下有:
migrate_onnie.info (定義自己的模組)
migrate_onnie.module  (掛勾到 migrate 模組)
migrate_onnie.migrate.inc  (自己模組的實作功能)

Drupal Migrate模組 的概念

Posted by on | | 0 意見


最重要的一張圖,就是這張官網上的圖,看懂它,那就完成了一半:
圖的來源:https://drupal.org/node/1528934
Migrate的物件關係圖

Drupal的匯入資料功能 - Migrate VS Feeds

Posted by on | | 0 意見

Migrate模組
https://drupal.org/project/migrate

Feeds模組
https://drupal.org/project/feeds

最近想把公司的所有商品全部匯入到drupal裡頭,
匯入商品有幾個要求:

  1. 能讓使用者簡單且隨時匯入 - 手動更新價格
  2. 能排程匯入 - 固定時間更新價格
  3. 能大量匯入 - 1萬~20萬筆
  4. 下架商品也要能從Drupal中刪除

一開始是用feeds模組,因為只要設定,就可以把資料匯入,
feeds模組的優點是:

Iaas, Paas, Saas 供應商列表

Posted by on | | 0 意見

底下紀錄一些有提供這些服務的供應商。

不過有些供應商怪怪的,我也不太清楚對不對,例如有Iaas廠商(例:云龙科技),會說他的cpu是intel xeon幾顆,就上一篇我所認知的,實體主機(Dedicated Servers),虛擬主機(Virtual Servers),雲端主機(Cloud Servers)到底有什麼差別呢?雲端主機cpu應該己經不是實體cpu的樣子。雲端主機cpu應該是一種重新組合實體cpu後的樣子,

例如:aws會列出出它所定義的ecu

所以說,是幾顆intel xeon,我就不知這是正確的了嗎?


實體主機(Dedicated Servers),虛擬主機(Virtual Servers),雲端主機(Cloud Servers)到底有什麼差別呢?

Posted by on | | 0 意見


搞懂server主機真不是件容易的事,太多細節,太多組合,太多網路服務,可以組合出各式的主機,怎麼知哪一種的效能,或是效率好?
cpu:(廠牌)x(cache:l1,l2,l3)x(hz)x(core)
memory:(廠牌)x(ddr2,3)x(hz)
disk:(廠牌)x(種類:ssd,hd)x(buffer)
network:(廠牌)x(種類:ethernet,firewire)x(speed)
service:(os:window,linux,...)x(web,db,cache,proxy,mail...)
還有太多東西,我不了解的。

現在又有不同的主機種類可以選擇,到底實體主機(Dedicated Servers),虛擬主機(Virtual Servers),雲端主機(Cloud Servers)有什麼差別呢?

在durpal系統裡,如何讓不同的feeds,import時,來更新同一筆node的資料?

Posted by on | | 0 意見



終於找到解法了~
好開心,不用自己去追程式碼,不用去寫自己的功能,而且找到更好的方法來解決這個問題。

主要是在這一篇,第159個comment看到的。
https://drupal.org/node/661606


假如我英文沒看錯的話,它的意思有3個: