-2

你好,我需要以某种方式合并来自多个来源的用户,例如 facebook、Google、plaxo ......目前我的数据库中有这个结构:

USERS_MYSITE

mysite_user_id        | parameter | value
------------------------------------------
223                   | firstname | Tom
223                   | lastname  | N.
223                   | birthdate | 1985-01-30

USERS_FACEBOOK

mysite_user_id        | facebook_user_id | parameter | value
-------------------------------------------------------------
223                   | 456353453        | fname     | Tom
223                   | 456353453        | lname     | N.
223                   | 456353453        | birth     | 1985-01-30

USERS_GOOGLE

mysite_user_id        | google_user_id | parameter | value
-----------------------------------------------------------
223                   | tomtom22       | fn        | Tom
223                   | tomtom22       | ln        | N.
223                   | tomtom22       | brt       | 1985 JUN 30

USERS_VIEW

    mysite_user_id        | remote_user_id | site_name | parameter | value
    ---------------------------------------------------------------------------
    223                   | 223            | mysite    | firstname | Tom
    223                   | 223            | mysite    | lastname  | N.
    223                   | 223            | mysite    | birthdate | 1985-01-30
    223                   | tomtom22       | google    | fn        | Tom
    223                   | tomtom22       | google    | ln        | N.
    223                   | tomtom22       | google    | brt       | 1985-01-30
    223                   | 456353453      | facebook  | fname     | Tom
    223                   | 456353453      | facebook  | lname     | N.
    223                   | 456353453      | facebook  | birth     | 1985 JUN 30

然后 SELECT FROM USERS_VIEW WHERE mysite_user_id = '223' 我得到了所有用户信息。之后我可以使用几个传输数组,将所有远程数据转换为我的格式

Array("firstname" => Array("fn", "fname"), "birthdate" => Array("brt", "birth"), ...)

价值观也是如此。接下来取决于用户选择什么作为他的主要数据,我可以显示它。

问题是我以前从未做过,所以也许有人知道如何做得更好。请分享你的想法。

谢谢你。

4

2 回答 2

1

这个想法是创建一个引擎,它可以组合来自许多不同“帐户持有人”的许多帐户,并可以在需要时添加新帐户。另外,让用户可以自定义他的帐户数据;从一个来源获取名字,从另一个来源获取姓氏并从个人资料表格中添加。我担心查询速度,因为每次为屏幕上显示的每个用户进行如此慢的查询是非常冒险的。此外,我们获得了很大的流量,每天大约 100 万次,即 2000 万次页面浏览量,以及大约 100 000 000 次查询执行。这是一个很大的数目。

是的,问题已经解决了。我刚刚创建了另一个带有重复数据的表:(。每次用户更改他的一些设置时,一个新表都会从上面的结构中更新。然后我们只从那个新表中获取数据,并且该方法工作正常。已经添加了链接和twitter 到源列表。目前正在考虑导出该引擎并使其开源。:)

于 2010-02-05T11:36:53.003 回答
0

您现在可能已经解决了您的问题 - 但如果您仍然需要帮助,我很乐意提供帮助。这是我喜欢的问题。

但是为了提供帮助,你能告诉我你真正想要的最终结果是什么吗?您有一个应该可行的解决方案,但我不确定您是说您希望它产生不同的结果,还是希望它产生当前结果但更有效?

如果你能澄清这一点,我们可以解决这个问题。

于 2010-02-04T12:56:10.557 回答