我正在用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?
任何帮助都会很棒,
由于
答案 0 :(得分:4)
Pickle通常适合存储对象,如果你想有效地存储'原始'数据那么pickle可能不是要走的路,但它非常依赖于具体的情况 - 是'加载'数据的时间关键,你有开发时间来设置数据库,查询等。
如果您的数据是一百万对用户名和出生日期,那么pickle可能不是最好的方法,将数据存储在一个平面文本文件中可能会更简单。
pickle和db / SQL解决方案都具有可扩展性的优势。请记住pickle不是'安全',所以你应该考虑文件的可信度,例如是否会在不同系统之间转移。
总的来说,如果您的数据集非常大,关系Db可能比pickle更合适,但您可能还需要考虑其他存储引擎,例如: Redis,MongoDb,Memcached。所有这些都非常依赖于情境,因此您可以提供有关如何使用数据的更多信息将非常有用!
答案 1 :(得分:1)
当您在users对象中搜索某个用户时,我猜SQL将是一个更好的解决方案。
假设users
是一个数组,您必须从数组的开头到结尾搜索该用户。使用SQL,您可以添加索引,这取决于您为用户对象建模的方式可以为您带来一点提升。
pickle也将解析,重新创建并加载存储的对象,因此加载的成本(处理器功率和使用的内存)可能会使它成为更糟糕的选择。