Так, например, у меня есть коллекция документов, как это:DocumentDB: Как улучшить структуру данных для обновления
{
hotField1 : 0,
hotField2 : "",
coldField1 : 0,
...
coldFieldN : ""
}
В этой области низкотемпературные свойства записываются один раз, и доступ иногда горячие свойства записываются, а затем довольно часто доступный \ обновленный (но в разных случаях использования, это не тот же суб-документ или части одного и того же объекта). Объем документов довольно большой (1M и более), размер горячих данных по меньшей мере в десять раз меньше, чем холодный.
Поскольку частичное обновление до сих пор самый разыскиваемый еще не реализована функция, единственным способом обновления hotField1 является:
- Запрос полный документ
- Изменение либо hotField1 или hotField2
- Ответь весь документ
Это дорогостоящее с точки зрения RU, и оно не масштабируется так хорошо.
Таким образом, вопрос заключается в том, как организовать такие данные & звонки в DocumentDB для минимизации затрат?
Обнаруженные альтернативы:
Очевидно лучше: получить одно свойство; изменение; обновление- не.- Отделитесь от двух коллекций, используйте хранимые процедуры для извлечения из Главной коллекции, а затем из Словаря?
- Поместить hotFields1-2 в качестве поддокумента
({ sub: {hf1:0, hf2:""}})
и как-то только обновить его? (Я не уверен, что это возможно)
PS. C# в тегах для используемой клиентской библиотеки. Если ему не хватает smth, то его можно использовать вместо REST-интерфейса.
# 3 также невозможно сегодня. Моя первая рекомендация состоит в том, чтобы построить его с помощью простого подхода «все в одном документе» и сравнить его. Если это не до табака, то настройте выделенную пропускную способность, если используете секционированную коллекцию или перейдите на более высокий уровень S, если нет. Если это еще не подходит, рассмотрите более сложный дизайн разбиения на основе того, насколько «горячим» является поле. По моему опыту, предположения инженера о том, что будет быстро и что не будет от реальности. Вам нужно экспериментировать. –
@LarryMaccherone, у нас уже есть рабочая система для РСУБД, поэтому у нас уже есть некоторая статистика. Можете ли вы уточнить, что вы подразумеваете под более сложным дизайном? – Sanctus
Просто чтобы разбить ваши данные на горячие и холодные поля - это больше работы по созданию, поддержке и расширению новых разработчиков. Зачем это стоить, прежде чем вы узнаете, адекватен ли простой дизайн «все-в-одном»? –