Python心理实验需要(简单)数据库:请建议

5
我正在用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个月,因此大约有1m个数据点。安全系数2倍给我一个处理2m数据点的目标数据库。
(注意:我可以将试验响应数据存储为单个数据点,也可以将试验分组为Python列表对象,长度各不相同(用户“会话”)。后者会显著减少数据库条目数量,但不会减少数据量。它有关系吗?如何?)
我希望这个解决方案能够在我达到1000个用户水平之前就能够运行。如果我的程序超过了那个级别变得受欢迎,我可以做一些工作来修改一个更强大的数据库。同时重申,它必须易于部署为Web应用程序。
除了这些基本要求之外,我只想要最简单的东西来实现这个功能。我是新手。
谢谢阅读
Tr3y
3个回答

12

SQLite能够处理这些数据量,它在所有主要平台上拥有非常庞大的用户群体,有一些非常著名的用户,它快速、轻便,并且有很棒的GUI客户端可以让您轻松地浏览、提取和过滤数据。

当然,SQLite不会无限扩展,但只有在需要同时插入时才会出现严重性能问题,我猜想这个问题会在负载增加几个数量级后才会出现。

我用它已经有几年了,从未遇到过问题(尽管对于较大的网站我使用MySQL)。个人认为,“小型、快速、可靠。选择其中任意三个”(这是SQLite网站的标语)非常准确。

至于易用性... SQLite3绑定(网站暂时停机)是Python标准库的一部分。 在这里你可以找到一个小教程。有趣的是,简单性是SQLite的设计准则之一。来自这里

许多人喜欢SQLite,因为它小而快。但是这些品质只是偶然的收获。用户还发现SQLite非常可靠。可靠性是简单的结果。没有太多复杂性,就不会出现太多问题。因此,是的,SQLite是小型、快速和可靠的,但首先,SQLite力求简单。


感谢两位回答者(如果可以的话,我会给两个勾号)。我会采纳你们的建议,选择使用 SQLite。尽管我有一种强烈的倾向去发音为“Squee-Lite”。 - Tr3y

6
这里有一篇关于何时使用SQLite的讨论,链接在这里。我最喜欢的一句话是:
另一种看待SQLite的方式是:SQLite不是为了取代Oracle而设计的,它是为了取代fopen()而设计的。
对于你的需求来说,SQLite似乎非常完美。事实上,我认为你可能永远都不需要其他东西:
默认页面大小为1024字节,因此SQLite数据库的大小限制为2TB(2^41字节)。
听起来你不会在任何时候拥有那么多数据。

0

我会考虑使用MongoDB。它非常容易上手,专为多用户设置而建(与SQLite不同)。

它还具有更简单的模型。您只需要将表单中的所有数据放入数据库中,而无需烦恼于表格和字段等问题。即使表单发生变化(哎呀,忘记了一个字段),您也不需要更改MongoDB。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接