2011-04-17 43 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