Структура базы данных MySQL - хранение результатов FQL на Facebook - PullRequest
1 голос
/ 17 апреля 2011

Я использую FQL, чтобы запросить таблицу Facebook Insights и вернуть данные на мой сервер, где я планирую сохранить их в базе данных MySQL.

Я обнаружил, что все метрики Insights возвращают разные типы данных для поля значения. Например, что-то вроде application_installation_adds вернет значение, подобное этому:

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

)

.. в то время как метрика, такая как 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
                (
                )

        )

)

Учитывая разные типы данных и значения, мне было интересно, как лучше всего хранить эти данные в моей базе данных.

Я думал о том, чтобы накрыть стол вот так:

  • 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

Может кто-нибудь оставить отзыв? Это хороший способ или есть лучшие варианты?

Заранее спасибо! :)

1 Ответ

0 голосов
/ 17 апреля 2011

Вы знаете, сколько уровней может пройти иерархия метрик? Если их больше двух, ваше решение не масштабируется.

Предположим, что в какой-то момент глубина достигнет> 2, и разработайте обобщенную схему. На ум приходит две таблицы: метрики и user_metrics. Таблица метрик будет просто содержать иерархию возможных метрик с одним изменением: вместо имени и вложенного имени, реализуйте идентификатор, имя, parent_id. Вторая таблица будет связывать метрику с пользователем и сохранять значение, таким образом: metric_id, user_id, value.

...