我正處於開發體育統計網站(終極飛盤)的初期階段,並希望知道您的意見,如果Google App Engine適合我。使用GAE數據存儲的複雜查詢
我使用Django在Python中編寫它,並且對標準RDBMS已經很舒服多年了,但是這個站點是一個長期項目,而且我期待着非常大量的數據,因此我希望GAE的「無限」縮放數據存儲提供。絕大多數對數據庫的查詢都會返回非常標準的結果,這會使數據存儲看起來像是一個合理的選擇。但是,我希望能夠在將來進行極其複雜的查詢,以提出新的統計指標或簡單地提出有趣的結果。我打算將來會做很多這樣的事情,但在數據已經收集之前不會知道這些查詢是什麼。
例如,你經常看到棒球統計分析師拿出了荒謬的統計數字,例如「這只是過去50年來的第一次,兩個左手投手的姓氏以'Z'開頭已經引發一擊封閉在背靠背的日子裏「。我希望在將來能夠靈活地提出任何疑問。 :)
但是,我的印象是,像bigtable這樣的非關係數據庫要求您事先提供包含冗餘數據的模型,並且所有工作都是在插入而不是抓取中進行的。我已經構建了包含幾乎所有我需要查詢的數據的django模型,但是我不知道什麼是非常規模型,我希望從現在開始有一兩年的時間。因此,我覺得在未來的GAE數據存儲中進行復雜的查詢會非常困難,並且需要我在使用python處理之前從服務器中提取大量信息。
谷歌應用程序引擎數據存儲只是爲我想要做的錯誤?或者我只是想念一些東西。非常感謝!
更新: 感謝您的迴應。我意識到,我還應該提到,很多這些複雜的查詢都是我希望用戶能夠做的查詢,因此使離線數據庫不是真正的選擇。例如,用戶應該能夠看到各種特定球員在特定比賽或賽季期間在場上同時進行比賽的多種統計數據。雖然這些查詢不如標準彙總統計信息那麼頻繁,但它們仍會定期發生。
有一個關係型數據庫以及在GAE數據存儲將是巨大的,但Django不默認還不支持多分貝的和修補的解決方案一起聽起來困難和混亂。 Eric Florenzano對兩個使用django模型的數據庫都有nice solution,但如果我使用GAE數據存儲,則必須改用應用引擎的db模型。想出一個好的解決方案,就像他爲這個複雜的問題所做的那樣,在這一點上超出了我的技能水平。
現在我最喜歡的兩種選擇是使用GAE任務隊列來完成困難的查詢,或者轉到像webfaction這樣的更加標準的webhost,然後在數據增長時我的表格會非規範化,我需要提高性能。
我希望你能回答:)。感謝這兩個偉大的建議。我已更新了我的問題,以解決您的第一個建議中的潛在問題。至於你的第二,我甚至沒有意識到任務隊列存在!這需要一些研究,但我想知道這是否能解決我所有的問題。 – Spike 2009-11-11 06:09:19
幾年後,是的..但這個答案仍然是黃金,但現在你可以使用谷歌雲數據庫而不是脫機數據庫,並有你的蛋糕和吃它! (http://stackoverflow.com/q/10905861/525541) – MindWire 2012-06-06 18:29:37