Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Хранение различных типов документов в одной коллекции DocumentDb

Автор вопроса: Benoit PatraОтветов: 1

У нас есть многопользовательское приложение, которое использует Azure DocumentDB в качестве базы данных NoSQL, ориентированной на документы.

Для мультиарендности мы читаем этот вопрос и эту запись в блоге. Поскольку прямо сейчас наше количество пользователей не соответствует необходимости использовать разные базы данных и/или documentCollections, и, что более важно, для экономии средств мы реализовали мультиарендность с предложением "Где" в поле TenantId с одним documentCollection.

Точно так же, когда дело доходит до хранения "документов" или "объектов" совершенно разной природы (скажем, например, Book и Car), мы задаемся вопросом, использовать ли один documentCollection.

На первый взгляд кажется более разумным создать два разных documentCollection для Book и Car. Однако создание documentCollection стоит минимум 25$. Мы не хотим платить +25$ каждый раз, когда нам нужно добавить новую функцию, даже если она предназначена для хранения небольшого объема данных (например, наше приложение хранит много Books, но мало Cars...).

Хорошо ли поместить Книгу и Машину в один и тот же documentCollection? И сохраните ссылку на тип документа в общем элементе (например, string Type ="Book" or string Type = "Car").

Зная, что мы уже внедрили мультиарендность с "предложением" Where, чтобы запросить все автомобили в нашем приложении для данного арендатора, все наши запросы будут содержать Where TenantId ="XXXX" AND Type = "Car".

Я видел, что DocumentDB теперь поддерживает разделенную коллекцию. . Может ли это быть хорошим использованием разделов или, наоборот, их следует сохранить для достижения лучшей масштабируемости и не приспособлены для разделения различных типов документов, количество объектов которых может быть неодинаковым?

  • Возможный дубликат Один или несколько объектов на коллекцию в DocumentDB Michael Freidgeim 14.03.2018

azureazure-cosmosdb

Ответы

Ответ 1 · рейтинг 12 · Larry Maccherone

Да, это "хороший дизайн" для использования type="Book". Вы также можете использовать isBook=true, который, как мне кажется, немного более эффективен и обеспечивает наследование и поведение примесей.

Разделенные коллекции на самом деле являются способом поместить больше вещей в один более крупный объект, а не наоборот. Идея состоит в том, чтобы разрешить масштабирование как пропускной способности (RU), так и пространства без необходимости самостоятельного управления несколькими коллекциями. Вы "могли бы" сделать свой ключ раздела полем type, но я бы не рекомендовал этого делать. Ключи разделов должны обеспечивать примерно равномерное распределение между разделами... среди других критериев.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы