Python Psych Experiment нужна (простая) база данных: пожалуйста, сообщите - PullRequest
5 голосов
/ 16 июля 2011

Я пишу психологический эксперимент на Python. Мне нужно где-то хранить информацию о пользователях и оценки, и мне нужно, чтобы она работала как веб-приложение (и была защищена).

Не знаю много об этом - я рассматриваю базы данных XML, BerkleyDB, sqlite, электронную таблицу openoffice, или меня очень интересует библиотека "полка" python. (большая часть моей информации поступает из этой темы: http://developers.slashdot.org/story/08/05/20/2150246/FOSS-Flat-File-Database

ДАННЫЕ: Я полагаю, что у меня будет максимум 1000 пользователей. Для каждого пользователя, которого я должен хранить ...

  • Имя пользователя / Pass
  • Поля сведений о пользователе (для простого профиля)
  • Пользовательский балл за упражнение (2 точки данных: каждое испытание получает балл (правильный / неправильный / тайм-аут и имеет связанный номер от 0,1 до 1,0, который мне нужно записать)
  • Метаданные об испытаниях (когда, кто и т. Д.)
  • Результаты анализа данных для пользователя

ОЧЕНЬ грубая оценка, каждый пользователь генерирует 100 испытаний в день. Таким образом, максимум 10 тысяч точек данных / день. Он должен работать таким образом около 3 месяцев, поэтому около 1 млн. Точек данных. Множитель безопасности 2x дает мне цель базы данных, которая может обрабатывать точки данных 2 м.

((примечание: я мог бы либо сохранить данные пробного ответа в виде отдельных точек данных, либо сгруппировать испытания в объекты списка Python различной длины (пользовательские "сеансы"). Последнее резко уменьшило бы количество записей в базе данных, хотя и не объем данных. Имеет ли это значение? Как?))

Мне нужно решение, которое будет работать (по крайней мере), пока я не достигну уровня 1000 пользователей. Если моя программа пользуется популярностью за пределами этого уровня, я в порядке с работой по моддингу в более мощной БД. Также, повторяя, что это должно быть легко развернуто как веб-приложение.

Помимо этих основных требований, я просто хочу простейшую вещь , которая сделает эту работу. Я довольно зеленый.

Спасибо за чтение

Tr3y

Ответы [ 3 ]

12 голосов
/ 16 июля 2011

SQLite, безусловно, может обрабатывать такой объем данных, имеет очень большую базу пользователей с несколькими очень известными пользователями на всех основных платформах, он быстрый, легкий и имеет потрясающий графический интерфейс клиенты , что позволяет просматривать и извлекать / фильтровать данные несколькими щелчками мыши.

SQLite, конечно, не будет масштабироваться бесконечно, но серьезные проблемы с производительностью начинаются только тогда, когда необходимы одновременные вставки , что, я думаю, является проблемой, возникающей на несколько порядков после ожидаемой нагрузки. *

Я использую его уже несколько лет, и у меня никогда не было проблем с ним (хотя для больших сайтов я использую MySQL). Лично я нахожу, что «Маленький. Быстрый. Надежный. Выберите любые три». (это слоган на сайте SQLite) довольно точный.

Что касается простоты использования ... Привязки SQLite3 (сайт временно не работает) являются частью стандартной библиотеки Python. Здесь вы можете найти небольшой учебник. Интересно, что простота является критерием дизайна для SQLite. С здесь :

Многим нравится SQLite, потому что он маленький и быстрый. Но эти качества - просто счастливые случайности. Пользователи также считают, что SQLite очень надежен. Надежность является следствием простоты. С меньшим количеством осложнений становится меньше ошибок. Итак, да, SQLite маленький, быстрый и надежный, но в первую очередь SQLite стремится быть простым.

6 голосов
/ 16 июля 2011

Здесь обсуждается, когда использовать SQLite здесь .Моя любимая строка такова:

Другой способ взглянуть на SQLite заключается в следующем: SQLite не предназначен для замены Oracle.Он предназначен для замены fopen().

Мне кажется, что для ваших нужд SQLite идеально подходит.Действительно, мне кажется очень вероятным, что вам больше ничего не понадобится:

При размере страницы по умолчанию 1024 байта размер базы данных SQLite ограничен 2 терабайтами (2 ^ 41 байт).

Не похоже, что у вас будет столько данных в любой момент.

0 голосов
/ 01 июня 2013

Я бы рассмотрел MongoDB.Начать очень легко, и он создан для многопользовательских установок (в отличие от SQLite).

У него также гораздо более простая модель.Вместо того, чтобы возиться с таблицами и полями, вы просто берете все данные в форме и помещаете их в базу данных.Даже если ваша форма изменится (упс, забыл поле), вам не нужно менять MongoDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...