Я перевожу базу данных Cloudant без разделов в новую систему разделов Cloudant, чтобы снизить стоимость моей учетной записи в облаке ibm. Контекст можно резюмировать так:
- Я имею дело с объектом электронной почты, который имеет название категории
- Я мог бы получать более 100 новых записей (писем) в день
- Пользовательский интерфейс может запрашивать электронные письма от даты A до даты B, а также по категориям C1, C2, ... C100 в любой возможной комбинации категорий.
- Пользовательский интерфейс отображает только 15 электронных писем / страница
Речь идет о разделении такой модели данных и об избежании, насколько это возможно, глобальных запросов (перекрестных разделов), которые намного дороже, чем запросы на основе разделов.
Сначала я подумал, что пойду на разделение в день, но в итоге я могу оказаться в одной ситуации, когда запрос фильтрует сообщения электронной почты по определенной категории Cn за 4 месяца, но конкретная категория получает только 1 сообщение в день, что означает, что отобразить одну страницу в интерфейсе пользователя (из 15 электронных писем). Мне нужно выполнить 15 запросов, что недопустимо.
До появления разделов я просто выполнял глобальные запросы с помощью механизма запросов Lucene, но это уже не из-за стоимости.
Кроме того, я также подумал о том, чтобы поместить все электронные письма в один раздел, чтобы я мог использовать один и тот же старый запрос в этом разделе, и, поскольку это раздел, я бы не задавал цену глобального запроса, кроме запроса раздела цена. Это теоретически работает, но может иметь некоторые ограничения, так как в документации по разделам не рекомендуется помещать «слишком много данных» в один раздел.
Есть ли у вас какие-либо рекомендации для такого рода проблем?
Спасибо.