2013-05-11 116 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会解析,重新创建并加载存储的对象,因此只需加载成本(无论是在处理器功耗和内存使用)可能会使它更糟糕的选择。