python pickle vs sql效率

时间:2013-05-11 12:32:53

标签: python sql pickle

我正在用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?

任何帮助都会很棒,

由于

2 个答案:

答案 0 :(得分:4)

Pickle通常适合存储对象,如果你想有效地存储'原始'数据那么pickle可能不是要走的路,但它非常依赖于具体的情况 - 是'加载'数据的时间关键,你有开发时间来设置数据库,查询等。

如果您的数据是一百万对用户名和出生日期,那么pickle可能不是最好的方法,将数据存储在一个平面文本文件中可能会更简单。

pickle和db / SQL解决方案都具有可扩展性的优势。请记住pickle不是'安全',所以你应该考虑文件的可信度,例如是否会在不同系统之间转移。

总的来说,如果您的数据集非常大,关系Db可能比pickle更合适,但您可能还需要考虑其他存储引擎,例如: Redis,MongoDb,Memcached。所有这些都非常依赖于情境,因此您可以提供有关如何使用数据的更多信息将非常有用!

答案 1 :(得分:1)

当您在users对象中搜索某个用户时,我猜SQL将是一个更好的解决方案。

假设users是一个数组,您必须从数组的开头到结尾搜索该用户。使用SQL,您可以添加索引,这取决于您为用户对象建模的方式可以为您带来一点提升。

pickle也将解析,重新创建并加载存储的对象,因此加载的成本(处理器功率和使用的内存)可能会使它成为更糟糕的选择。

相关问题