2012-02-14 107 views
-1

暈所有,如何快速查詢大數據?

我希望我的用戶從facebook獲取他所有的朋友列表信息,然後搜索有關該數據的任何內容。但我希望它快。

例如:用戶A有20個朋友名字B到W.他想知道他的哪些朋友是蜥蜴人。

我的正常程序是:(使用Facebook的API)的所有朋友的名字和生日的

  1. 獲取列表。
  2. 保存到數據庫(MySQL的)
  3. 查詢(用mysql)從誰擁有的生日,從11月22日列表日 - 12月22

好,我這樣做,但它需要太多的時間。我想讓它變得更快。我認爲這是因爲我必須先把它全部保存到數據庫中。

如果只有一種方法可以從數組中查詢,或者我可以將這些數據保存到RAM並從中搜索,我認爲它會快得多。

你們有我的任何解決方案?

THX金潤

阿里

+0

「它需要太多的時間該區域很多流行語的。我想,使其更快。我想這是因爲我必須將它保存到數據庫第一。」你確定?從Facebook檢索值需要多長時間?將值保存到數據庫需要多長時間?整個過程目前需要多長時間?你想要多久? – 2012-02-14 08:01:33

+1

是的,我有你的解決方案。測量從Facebook獲取數據需要多長時間,將數據保存到數據庫需要多長時間,以及查詢數據需要多長時間。看哪一個比較慢,然後嘗試使其更快。 (順便說一句,99%的人認爲從FB獲取數據是緩慢的部分) – njr101 2012-02-14 08:20:43

+0

是的你是對的,fb部分是慢的,但仍然是我可以改進的一部分是保存到數據庫和部分查詢從數據庫。那麼,我可以將它保存到memori(RAM)並從中進行搜索嗎? – ari 2012-02-16 04:05:31

回答

0

在任何優化的第一步是要知道這裏的時間花費。不可能有一般的/明顯的解決方案 - 否則,沒有什麼可以緩慢的,因爲每個人都會首先正確地解決問題,而且問題不會存在。

因此,您必須坐下來,爲您的應用程序添加性能分析代碼,運行一些測試,並在您發現時間用完時回來。那麼我們可能會有更多的幫助。

+0

thx亞倫,花費大量時間的過程是「獲取數據到臉書」。我通過使用paralel過程來改善這一點(我想不出任何其他的解決方案,任何想法?)但我想提高速度來保存數據和查詢數據。我認爲保存到內存和從memori查詢會更快,這就是爲什麼我想知道是否有任何方法可以做到這一點 – ari 2012-02-16 04:08:47

+0

這個問題太泛泛,有成千上萬的方法來實現你想要的,但每個解決方案都取決於一些細節。您可以嘗試緩存,代理,集羣或編寫自己的東西。這取決於你的查詢有多複雜,有多少數據,有幾千件事情。一個簡單的解決方案可能是將數據轉儲到文本文件並使用文本編輯器進行搜索。 – 2012-02-16 09:46:00

0

也許Facebook API包含這樣的功能了嗎?

但是,如果你打算將Facebook朋友DB轉儲到MySQL中,每月有一次獲得結果的可能性很高。

你可以通過並行執行計算來加快速度。所以你可以看看NoSQL數據庫或Apache Hadoop。

但要準備,在此刻:)

+0

thx wemu,我讀過hadoop和其他但仍不明白如何將mysql轉換爲noSQL格式,所以我希望會有任何其他解決方案:D – ari 2012-02-16 04:07:59

+0

好的方法是完全不同的,這是非常真實的。但它沒有登陸月球。如果你能理解SQL,NoSQL數據庫中發生的事情不應該太困難。 我會首先調查有多少數據。即使是「很多」也可能意味着只有幾GB的數據很容易融入到MySQL中。 如果你需要做數百萬行的「group by」考慮Map/Reduce的速度(某種強力「group by」) – wemu 2012-02-16 08:28:57