Мне интересно, будет ли какая-то другая нереляционная база данных подходящей для потоков активности - вроде как то, что вы видите на Facebook, Flickr (http://www.flickr.com/activity) и т.д. Сейчас я использую MySQL, но он довольно облагается налогом (у меня есть десятки миллионов записей активности), и поскольку они в основном доступны только для чтения, и они всегда просматриваются в хронологическом порядке, я был думая, что альтернативная БД может работать хорошо.
Действия такие вещи, как:
- 6 вечера: Джон Благословенный Бэкон
- 5:30 вечера: Джейн прокомментировала "Снег".
- 5:15 вечера: Джейн добавила фотографию Бэкона в свой альбом
Ловушка заключается в том, что в отличие от Twitter и некоторых других систем я просто не могу просто добавлять действия к спискам для каждого пользователя, который интересуется этой деятельностью - если бы я мог выглядеть как Redis будет хорошо соответствовать (с его списком операций).
Мне нужно сделать следующее:
- Выполните действия для набора или подмножества людей, которых вы следите ( "Джон" и "Джейн" ), в порядке обратной даты.
- Вытяните действия для вещи (например, "Бэкон" ) в порядке обратной даты.
- Фильтровать по типу активности ( "избранное", "комментарий" )
- Сохранение не менее 30 миллионов действий.
- В идеале, если вы добавили или удалили человека, за которым вы следуете, ваш поток активности отразит это изменение.
Я делаю это с MySQL. Таблица моих "действий" настолько компактна, насколько я могу это сделать, клавиши как можно меньше, и они индексируются соответствующим образом. Он работает, но он просто кажется неправильным инструментом для этой работы.
Кто-нибудь делает что-то подобное вне традиционной RDBMS?
Update November 2009: слишком рано отвечать на мой собственный вопрос, но мое текущее решение состоит в том, чтобы придерживаться MySQL, но дополнять Redis для быстрого доступа к новым данным потока активности. Дополнительная информация в моем ответе здесь: Как реализовать поток активности в социальной сети...
Обновление августа 2014 года.. Через несколько лет я все еще использую MySQL как систему записи и использую Redis для очень быстрого доступа к самым последним действиям для каждого пользователя. Работа с изменениями схемы в массивной таблице MySQL стала без проблем благодаря pt-online-schema-change