2012-02-14 12 views
-1

ハローオール、大きなデータからすばやくクエリする方法は?

私は自分のユーザーがFacebookのフレンドリスト情報をすべて取得し、そのデータについて何かを検索したいと思っています。しかし私はそれが速いことを望む。

たとえば、ユーザーAは20人の友人の名前がBからWです。彼はsagitariusである彼の友人のどれかを知りたいと思います。

私の通常のプロセスは次のようになります。すべての友人の名前と誕生日の

  1. GETリスト(FacebookのAPIを使用して)。誕生日を持っているリストから、11月22日から、データベース(MySQLの)
  2. クエリ(使用のmysql)に保存
  3. - まあ

12月22、私はこれをしなかったが、それは時間がかかりすぎます。私はそれをより速くしたい。私はそれをすべてデータベースに保存しなければならないからだと思います。

アレイからクエリする方法がある場合、またはこれらのデータをRAMに保存して検索することができれば、はるかに高速になると思います。

私のための解決策はありますか?

THXたくさん

アリ

+0

「それは時間がかかりすぎる。そして私はそれをより速くしたい。私は、データベースにすべてを保存する必要がありますので、それはだと思います最初。"本気ですか? Facebookから値を取得するのにどれくらい時間がかかりますか?値をデータベースに保存するにはどのくらい時間がかかりますか?現在、プロセス全体の処理時間はどのくらいですか?あなたはどれくらいそれを取るべきですか? –

+1

はい、解決策があります。 Facebookからデータを取得するのにかかる時間、データをデータベースに保存するのにかかる時間、およびデータのクエリにかかる時間を測定します。どちらが遅いかを見てから、それをより速くしてみてください。 (ところで、FBからのデータを得ることが遅い部分であると99%の賭けをした) – njr101

+0

はい、あなたは正しいです、fb部分は遅いですが、それでも私が改善できるものは、データベースに保存して、データベースから。それで、私はそれをmemori(RAM)に保存して検索することが可能ですか? – ari

答えて

0

任意の最適化の最初のステップは、時間が費やされている場所を知ることです。一般的な/明白な解決策はありません。そうでないと、誰もが最初に正しい結果を得ることができ、問題は存在しないため、遅いものはありません。

あなたは座って、あなたのアプリにプロファイリングコードを追加し、いくつかのテストを実行して、どこで時間が費やされたかを知ったときに戻ってくるでしょう。その後、私たちはさらに助けになるかもしれません。

+0

thx aaron、大きな時間を要したプロセスは「データをFacebookに取得する」ことです。私はパラレルプロセスを使用してそれを改善する(私は他の解決策を考えることはできません、任意のアイデア???)しかし、私はデータとクエリのデータを保存する速度を増やしたい。私は記憶に保存し、メモリからのクエリーははるかに速くなると思うのですが、それを行う方法があるかどうか知りたいのですが。 – ari

+0

質問があまりにも一般的です。あなたが望むものを達成するには何千もの方法がありますが、それぞれの解決策はいくつかの詳細に依存しています。キャッシング、プロキシ、クラスタリング、または独自のことを書くことができます。クエリの複雑さ、データの量、何千ものものに依存します。簡単な解決策は、データをテキストファイルにダンプし、それをテキストエディタで検索することです。 –

0

Facebook APIにこのような機能が既に含まれている可能性がありますか?

しかし、Facebookの友人のDBをMySQLにダンプする場合は、結果を月に1回取得する可能性が高いです。

計算を並行して実行することでスピードを上げることができます。だからあなたはNoSQLデータベースやApache Hadoopを見ているかもしれません。

しかし、調製することが、現時点ではその地域の流行語をたくさん:)

+0

thx wemu、私はhadoopを読みましたが、他の人はまだmysqlをnoSQL形式に変換する方法を理解していないので、他の解決方法があることを願っています。D – ari

+0

アプローチは全く異なっています。しかし、それは月に着陸していません。 SQLを理解できれば、NoSQLデータベースで起こることはあまりにも難しくありません。 私は最初にどれくらいのデータがあるのか​​調べます。 「たくさん」でも、MySQLに簡単に収まるわずか数GBのデータを意味することができます。 何百万行もの行で "グループ化"する必要がある場合は、速度のためのMap/Reduce(いくつかの種類の強引な力を "グループ化") – wemu

関連する問題