Python Psych Experiment需要(简单)数据库:请指教

Tr3*_*r3y 5 python database web-applications

我正在用Python编写心理学实验.我需要在某处存储用户信息和分数,我需要它作为Web应用程序(并且是安全的).

不太了解这个 - 我正在考虑XML数据库,BerkleyDB,sqlite,一个openoffice电子表格,或者我对python"shelve"库非常感兴趣.(我的大部分信息来自这个帖子:http://developers.slashdot.org/story/08/05/20/2150246/FOSS-Flat-File-Database

数据:我认为我将拥有最多1000个用户.对于我必须存储的每个用户......

  • 用户名/通行证
  • 用户详细信息字段(简单配置文件)
  • 练习中的用户分数(2个数据点:每个试验获得一个分数(正确/不正确/超时,并且我需要记录的相关数字从0.1到1.0)
  • 关于试验的元数据(何时,谁等)
  • 用户数据分析结果

非常粗略估计,每个用户每天产生100次试验.所以最多每天10k数据点.它需要以这种方式运行大约3个月,所以大约1米的数据点.安全乘数2x为我提供了一个可以处理2m数据点的数据库的目标.

((注意:我可以将试验响应数据存储为单独的数据点,或者将试验分组到不同长度的Python列表对象(用户"会话").后者会显着降低数据库条目数,但不会减少数据量这有关系吗?怎么样?))

我想要一个能够(至少)工作的解决方案,直到我达到这1000个用户级别.如果我的程序在这个级别之外很受欢迎,我可以在更强大的数据库中做一些工作模型.还重申必须可以轻松部署为Web应用程序.

除了这些基本要求之外,我只想要最简单的方法来实现这一目标.我很绿.

谢谢阅读

Tr3y

mac*_*mac 12

SQLite当然可以处理这些数据量,它拥有一个非常大的用户群,在所有主要平台上都有一些非常知名的用户,它快速,轻便,并且有很棒的GUI客户端允许您浏览和提取/过滤数据点击几下.

当然,SQLite无法无限扩展,但是只有在需要同时插入时才会出现严重的性能问题,我猜这是在你的预期负载之后出现几个数量级的问题.

我已经使用它几年了,我从来没有遇到过它的问题(虽然对于较大的网站我使用MySQL).我个人认为"小.快.可靠.选择任何三个." (这是SQLite网站上的标语)非常准确.

至于易用性 ...... SQLite3绑定(站点暂时关闭)是python标准库的一部分.在这里你可以找到一个小教程.有趣的是,简单性是SQLite的设计标准.从这里:

许多人喜欢SQLite,因为它小而快.但那些品质只是快乐的事故.用户还发现SQLite非常可靠.可靠性是简单性的结果.复杂性较低,出错的可能性较小.所以,是的,SQLite小巧,快速,可靠,但首先,SQLite力求简单.


sen*_*rle 6

关于何时在这里使用SQLite有一个很好的讨论.我最喜欢的一行是:

另一种看待SQLite的方法是:SQLite不是为了取代Oracle而设计的.它旨在取代fopen().

在我看来,根据您的需求,SQLite是完美的.事实上,在我看来你很可能永远不需要别的东西:

如果默认页面大小为1024字节,则SQLite数据库的大小限制为2 TB(2 ^ 41字节).

听起来你不会在任何时候拥有那么多数据.