Рекомендации по созданию базы данных NoSQL для использования с Python

#python #nosql

#python #nosql

Вопрос:

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

Какую базу данных NoSQL вы бы порекомендовали для такого рода приложений? Я также хотел бы создать интерфейс администратора, который допускает ручной ввод и доступен для поиска. Я довольно новичок в Python и совершенно не знаком с NoSQL, и у меня возникли проблемы с поиском какой-либо полезной информации или библиотек. Есть предложения?

Комментарии:

1. 10000 запросов в день — это несущественно, например, Redis может отвечать на более чем 50000 запросов в секунду . Выясните, какие функции вам нужны, и примите решение об этом.

Ответ №1:

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

Ответ №2:

Это зависит от вашего варианта использования. Планируете ли вы временно кэшировать записи или хотите, чтобы записи сохранялись? В первом случае Redis был бы лучшим выбором из-за его скорости. В последнем случае было бы лучше выбрать либо CouchDB, либо MongoDB, поскольку они могут обрабатывать большие наборы данных.

Комментарии:

1. Спасибо за ваш ответ. Можете ли вы объяснить, как и почему я хотел бы сделать то или иное? Записи, скорее всего, не будут меняться очень часто. Например, iPad2 отправил бы запрос, и я бы затем вернул оценку 11, iPhone4 нажал бы, и я бы вернул 10 и т.д.

2. Если имеется относительно фиксированное количество записей и вы уверены, что у вас есть для них память, то Redis, вероятно, является лучшим выбором.

Ответ №3:

Мне очень повезло с CouchDB. Модуль couchdb-python довольно прост в использовании и находится в стадии очень активной разработки.