Я имею дело с этой загадкой.Я предлагаю 3 платных плана (и совершенно бесплатный план), с очень простой в использовании функциональностью понижения рейтинга.Мое приложение не требует большого объема памяти, поэтому мне не важно хранить данные, которые в данный момент неактивны.
На панели инструментов я показываю пользователю их текущие уровни плана и лимит элементов, которые они в настоящее время имеют в своем плане.Так, например:
Campaigns: using 8 out of 10
Если они переходят на план, скажем, с 5 кампаниями, он скажет:
Campaigns: using 10 out of 5
Это явно неэффективно, поэтому мое решение состоит в том, чтобы отобразить оставшиеся значения как
Campaigns: using 5 out of 5 (3 campaigns inactive - UPGRADE)
Теперь, с точки зрения бизнеса, я считаю наиболее целесообразным деактивировать последние созданные ими кампании, пока они не перейдут на план.Это означает, что мы блокируем все кампании, кроме X первых созданных кампаний.Это будет хорошим стимулом для них либо обновить, либо начать удалять старые элементы (согласно ответу Матти Вирккунена)
У меня есть логика в приложении, которое запускает метод для isItemActive, который проверяет, основан ли на их текущем плане, иуровни этого плана, должен ли этот элемент быть активным так, как он должен (IE: отображать его на внешнем интерфейсе для посетителей или как угодно).Естественно, это зависит от самого приложения, но я думаю, что подход LIFO (последний из первых деактивирован) имеет больше смысла и вынуждает пользователей либо обновить, либо хотя бы удалить свои старые элементы.
В вашем случае выпотенциально может сделать то же самое, за исключением того, что вы можете добавить предупреждение или ограничение по времени, после которого данные пользователя, превышающие их предел, будут удалены навсегда.