-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

アイデアは、必要に応じて新しいアカウントを追加する可能性を備えた、多くの異なる「アカウント所有者」からの多くのアカウントを組み合わせることができるエンジンを作成することでした. さらに、ユーザーが自分のアカウント データをカスタマイズできるようにします。ある情報源から名字を取得し、別の情報源から姓を取得し、プロファイル フォームから追加します。画面に表示されるすべてのユーザーに対して毎回このような遅いクエリを行うのは非常に危険であるため、クエリの速度が心配でした。また、1 日あたり約 100 万、つまり 2,000 万のページ ビュー、約 1 億回のクエリ実行という大きなトラフィックがあります。それは大きな数です。

はい、問題はすでに解決されています。複製されたデータを持つ別のテーブルを作成しました:(。ユーザーが設定の一部を変更するたびに、新しいテーブルが上記の構造から更新されます。次に、その新しいテーブルからのみデータを取得し、そのメソッドは正常に機能します。すでにリンクされて追加されており、ソースリストへのtwitter現在、そのエンジンをエクスポートしてオープンソースにすることを考えています. :)

于 2010-02-05T11:36:53.003 に答える
0

問題はすでに解決されていると思いますが、引き続きサポートが必要な場合は、喜んでお手伝いいたします。これは私が好きな種類の問題です。

しかし、助けになるために、あなたが実際に望んでいる最終的な結果を教えてもらえますか? あなたはうまくいくはずのソリューションを手に入れましたが、それが別の結果を生み出すことを望んでいるのか、それとも現在の結果をより効率的に生み出すことを望んでいるのかはわかりません.

それを明確にしていただければ、私たちはこれを整理できます。

于 2010-02-04T12:56:10.557 に答える