2013-05-11 109 views
4

我正在開發一個需要存儲(非常)大型數據集的Python應用程序。 pickle是存儲數據並根據請求檢索數據的最實用的方法,還是應該考慮使用SQL呢?我的主要目標是速度和儘可能小的處理壓力。python pickle vs sql效率

我的問題是,泡菜必須處理整個大文件,這可能會對性能產生不利影響。我不是特別熟悉鹹菜以外的用法,所以對它的工作原理的任何解釋都會很棒。

現在,我使用這個代碼:

users = pickle.load(open("users.py", "rb")) 
username = raw_input("Please enter a username: ") 
password = raw_input("Please enter a password: ") 
var = username in users 
if(var == 0): 
    return 0 
    exit() 
else: 
    if(users[username] != password): 
     return 0 
     exit() 
    else: 
     return 1 
     exit() 

成像用戶擁有1萬個條目,這會更有效,這或SQL?

任何幫助將是巨大的,

感謝

回答

4

泡菜一般適用於對象的存儲,如果你想存儲的「原始」的數據有效則鹹菜可能不是要走的路,但它非常依賴於具體情況 - 是「加載」數據時間關鍵,你有開發時間來建立數據庫,查詢等。

如果你的數據是一百萬對用戶名和出生日期那麼pickle可能不是最好的選擇,將數據存儲在一個文本文件中可能會更簡單。

pickle和db/SQL解決方案都具有可擴展的優點。記住泡菜不是'安全'的,所以你應該考慮文件的可信度,例如它會在不同的系統之間轉移嗎?總體來說,如果你的數據集非常大,關係型數據庫可能比泡菜更適合,但是你也可能想考慮其他的存儲引擎,例如, Redis,MongoDb,Memcached。所有這些,都是非常依賴情況,所以addy更多的信息可以提供有關如何使用數據將是有用的!

1

當你在用戶對象中搜索某個用戶時,我猜SQL會是一個更好的解決方案。

假設users是一個數組,您將不得不從數組的開始到結尾搜索該用戶。使用SQL你可以添加索引,這取決於你如何建模你的用戶對象可以給你一些提升。

此外,pickle會解析,重新創建並加載存儲的對象,因此只需加載成本(無論是在處理器功耗和內存使用)可能會使它更糟糕的選擇。