Я создаю агрегатор каналов (rss, twitter, другие сервисы и т. Д.) С помощью LAMP. Он очень похож на Google Reader в том, что люди могут добавлять столько каналов, сколько они хотят, а затем смогут читать свои каналы, сортировать их, просматривать отдельные каналы или группы каналов одновременно.
Ранее я создавал этот тип службы, но для небольшой ограниченной группы людей, где ВСЯ группа имела доступ ко всем агрегированным элементам фидов. Итак, это было довольно просто.
Однако на этот раз я создаю сервис, на который люди могут подписаться, поэтому у меня будут потенциально (в идеале) тысячи пользователей и десятки тысяч каналов, и, в свою очередь, миллионы элементов каналов.
Мой подход к схеме базы данных (упрощенный) такой:
users (id, name, ...)
feeds (id, name, url, ...)
feed_items (id, title, timestamp, feed_id, ... )
user_feeds (id, user_id, feed_id, ...)
Однако из-за того, что пользователь может подписаться на 100 каналов, я пытаюсь найти лучший и наиболее оптимизированный способ запроса базы данных для feed_items каналов, на которые он подписан (или подмножеств).