7

(非常に) 大規模なデータ セットを格納する必要があるアプリケーションを Python で開発しています。pickle は、データを保存して要求に応じて取得する最も実用的な方法ですか、それとも代わりに SQL の使用を検討する必要がありますか? 私の主な目標は、速度と、処理負荷をできるだけ少なくすることです。

私の懸念は、pickle がその場で大きなファイル全体を処理しなければならず、パフォーマンスに悪影響を与える可能性があることです。私は使用法を超えてピクルスに特に精通していないので、それがどのように機能するかについての説明は素晴らしいでしょう.

現在、私はこのコードを使用しています:

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()

ユーザーに 100 万のエントリが含まれていることを想像すると、これと SQL のどちらがより効率的でしょうか?

どんな助けでも素晴らしいでしょう、

ありがとう

4

3 に答える 3

5

Pickle は一般にオブジェクトのストレージに適しています。「生」データを効率的に保存したい場合は、pickle はおそらく適切ではありませんが、特定の状況に大きく依存します-データの「ロード」時間が重要です。データベースやクエリなどをセットアップするための開発時間があります。

データが何百万ものユーザー名と生年月日のペアである場合、pickle はおそらく最適な方法ではありません。データをフラットなテキスト ファイルに保存する方が間違いなく簡単です。

pickle と db/SQL の両方のソリューションには、拡張できるという利点があります。pickle は「安全」ではないことに注意してください。そのため、ファイルの信頼性を考慮する必要があります。たとえば、異なるシステム間で転送されるかどうかなどです。

全体として、データ セットが非常に大きい場合は、pickle よりもリレーショナル Db が適している可能性がありますが、Redis、MongoDb、Memcached などの他のストレージ エンジンも検討する必要があります。ただし、それらはすべて状況に大きく依存するため、データがどのように使用されると予想されるかについて提供できる情報があれば、役に立ちます!

于 2013-05-11T12:42:20.420 に答える