2011-04-17 149 views
1

我正在使用FQL查詢Facebook Insights table並將數據返回到我的服務器,我計劃將它存儲在MySQL數據庫中。MySQL數據庫結構 - 存儲Facebook FQL結果

我發現所有Insights指標都爲值字段返回不同的數據類型。例如,像application_installation_adds將返回這樣的值:

Array 
(
    [0] => stdClass Object 
     (
      [metric] => application_installation_adds 
      [value] => 3 
     ) 

) 

..while度量像application_permission_views_top將返回這一點,如果有數據:

Array 
(
    [0] => stdClass Object 
     (
      [metric] => application_permission_views_top 
      [value] => stdClass Object 
       (
        [permissions_impression_email] => 5 
        [permissions_impression_user_birthday] => 4 
        [permissions_impression_read_insights] => 4 
       ) 

     ) 

) 

..和這如果它是空的:

Array 
(
    [0] => stdClass Object 
     (
      [metric] => application_permission_views_top 
      [value] => Array 
       (
       ) 

     ) 

) 

鑑於不同的數據類型pes和值,我想知道在我的數據庫中存儲這些數據的最佳方式是什麼。

我想建立一個表像這樣的:

  • METRIC_NAME
  • metric_subname

,然後使用這樣的過程:

  1. 獲取FQL結果。
  2. 如果它是一個空數組,則什麼都不做(因爲沒有數據)
  3. 如果它是單個值,則插入metric_name和value。給metric_subname一個值「Singlular」(以便我知道它只是一個值的度量)
  4. 如果它是stdCLass對象,則使用foreach循環來填充metric_subname列。

這應該給我,像這樣的表,這將讓我來查詢數據以簡單的方式走下賽場:http://i.stack.imgur.com/0fekJ.png

誰能請提供反饋?這是一個好方法嗎?還是有更好的選擇?

在此先感謝! :)

+0

爲什麼你想堅持數據而不是緩存它? – zerkms 2011-04-17 04:44:49

+0

對於某些指標,FQL僅給出當前值。例如。如果我查詢了我的粉絲頁面,它會給我目前的粉絲數量。我想將FQL結果存儲在數據庫中的原因是爲了讓我可以獲得有關我的粉絲如何在一天中成長的歷史記錄等。 – dbau 2011-04-17 06:04:54

+0

是否不提供此類統計信息? – zerkms 2011-04-17 06:05:50

回答

0

您是否知道度量標準層次結構可以有多少層次?如果超過兩個,您的解決方案不會擴展。

假設在某一點深度將達到> 2並設計一個通用模式。想到的就是保留兩個表格:度量標準和user_metrics。度量表只包含可能度量的層次結構,只做一處更改:而不是名稱和子名稱,實現id,name,parent_id。第二個表格會將度量標準與用戶相關聯,並存儲該值,例如:metric_id,user_id,value。

+0

非常感謝AJ!我沒有想過可擴展性問題,所以你的解決方案是完美的!:) – dbau 2011-04-17 11:08:41