2017-01-05 22 views
3

Мы используем DocumentDB на лазури. У нас есть одна база данных с 7 коллекциями, каждая из которых имеет максимум 15 записей. Это не требует большого объема хранения.Как уменьшить зарезервированные RUs, чтобы уменьшить стоимость DocumentDB

Только несколько разработчиков используют этот экземпляр БД. Таким образом, трафик также ниже среднего.

По-прежнему этот сервер использует 67 600 RU в день. Должна быть какая-то проблема с настройками DocumentDB. Итак, я ищу направление для анализа того, как взимаются эти RU и как его уменьшить?

+2

Из того, что вы описали, вам не нужно использовать DocumentDB. Вы можете перенести небольшой объем данных, которые у вас есть, в Azure Table Storage и использовать их вместо этого, или даже небольшую базу данных Azure SQL. Настольное хранилище Azure даст вам самый дешевый вариант. –

+1

@ChrisPietschmann Я не вижу, как этот комментарий имеет значение в этом случае. Мы не знаем планов OP или конкретных потребностей в хранилище документов по сравнению с реляционными или ключевыми/значениями. Есть * всегда * альтернативы. Но вопрос был специфичен для DocumentDB (и необходимость понять модель коллекции docdb, учитывая представленные исходные параметры). –

+0

@DavidMakogon Поскольку вопрос касался сокращения затрат, было бы целесообразно упомянуть один действительный вариант, который может обеспечить значительную экономию средств, а не просто переконфигурировать использование одной и той же услуги. Кроме того, поэтому он был размещен как комментарий; не ответ. –

ответ

4

Нет проблем с настройками DocumentDB. Вы предоставили 7 коллекций. По умолчанию через портал каждой коллекции назначается 1000 RU (которую вы имеете в своем распоряжении, независимо от того, используете ли вы 0 RU или все 1000 RU). Минимальная установка RU для несекционированной коллекции 400.

EDIT - я неправильно - если вы на 67000 RU, то вы, вероятно, несколько предоставлены Разделенные коллекции (которые начинаются в 10100 RU). Для начального dev/test, всего лишь с 15 документами, у вас есть сильно перераспределенный емкость.

Поскольку вы предоставили семь коллекций (которые, вероятно, будут разбиты на разделы на основе вашего размера RU), у вас будет развертывание ~ 70 000 RU. Независимо от того, что вы на самом деле потребляете (вы по существу резервируете емкость).

Я понятия не имею, что такое ваши приложения, и нужны ли вам 7 коллекций по определенной причине. Но ... объективно говоря, нет правила, в котором говорится, что вам нужно разделить разные типы документов на разные коллекции. Вы можете легко хранить разнородные данные в одной коллекции. Как вы запрашиваете конкретные типы, действительно зависит от вас, но тривиально добавить что-то вроде свойства type для каждого документа).

Обратите внимание, что теперь я полагаю, что вы используете секционированные коллекции: вы не можете преобразовать их в несезонные коллекции; вам необходимо создать новые несегментированные коллекции и перенести данные из ваших секционированных коллекций. (учитывая, что у вас есть 15 общих документов, это должно быть тривиально).

Обратите внимание, что одна несезонная коллекция может быть уменьшена до 400 RU. Если вы затем объедините свои 7 коллекций в 1 коллекцию, вы сможете сократить потребление от ~ 70 000 => 400. (по крайней мере, во время dev/test).

EDIT FEB 8 2017 Наборы разделенных коллекций теперь имеют минимальный порог 2,500 RU по сравнению с первоначальным порогом 10 100 RU.

+0

Итак, вы предлагаете объединить все 7 коллекций в 1 коллекцию и установить свойство «type» с каждой записью. Я понимаю, что это может уменьшить количество коллекций и, следовательно, снизить стоимость зарезервированных единиц. Между тем, если есть еще способ уменьшить зарезервированные единицы, любезно сообщите мне. Также есть способ проанализировать точные числа RU, используемые против каждой коллекции за последний час/24 часа/неделю, чтобы подтвердить наше предположение о вышеуказанных расчетах? –

+0

Я дал вам всю необходимую информацию, чтобы принять обоснованное решение о том, как уменьшить ваши RU и связанные с этим расходы. Я действительно не могу принимать какие-либо конкретные решения для вас - я ничего не знаю о вашем приложении или потребностях, но теперь вы знаете минимальные настройки RU как для несегментированных, так и для секционированных коллекций и можете решить, что изменить или объединить, соответственно. Что касается анализа, то это совершенно отдельный вопрос (и новые комментарии не следует ставить в комментариях). –

+0

для тех, кто сталкивается с подобной проблемой в будущем, сокращение до единой коллекции помогло значительно снизить стоимость управления. Мне пришлось добавить дополнительное свойство для дифференцирования записей, потому что все записи находятся в одной коллекции. –

3

Общеизвестно, что люди, новые для DocumentDB, считают коллекцию похожей на таблицу в SQL или даже на то, что MongoDB называет «коллекцией». Однако DocumentDB разработан по-разному. Лучше всего использовать единую секционированную коллекцию для хранения всех типов документов и разбиения на нечто вроде географии, арендатора или пользователя. Вы будете различать типы документов с полем type = <MyType>, или я действительно предпочитаю использовать метод myType = true, чтобы я мог моделировать наследование и микшины.

Это означает, что вам нужно будет заплатить только за одну секционированную коллекцию. Одна секционированная коллекция может по-прежнему стоить вам больше, чем хранение таблиц, но если вы хотите, чтобы DocumentDB была почти бесконечной масштабируемостью, я настоятельно рекомендую вам начать то, что я описываю.

Еще одно замечание о предложении Дэвида пойти с несекционированными коллекциями.Это был единственный вариант, когда впервые был запущен DocumentDB, но теперь рекомендуется использовать секционированные коллекции. Я подозреваю, что в какой-то момент может быть поэтапно исключен вариант несегментированного сбора. Вы взаимодействуете с ними немного по-другому, и, как отметил Дэвид, в настоящее время нет помощи по конверсии (особенно если вы используете несколько несезонных коллекций), поэтому переход позже из несезонных коллекций в секционированную коллекцию не сложно, но это не так просто, как изменение типа раздела и затраты на разработку. Это будет стоить вам немного больше, чтобы иметь единую секционированную коллекцию, чем один несегментированный коллектив, но это стоит того, чтобы сэкономить затраты на переход позже, ИМХО, и вам будет стоить меньше, чем единая секционированная коллекция, чем это стоит имеют семь неразделенных.