Не видя, как выглядят данные, я думаю, вы сможете использовать Cosmos для получения эффективных запросов с использованием нескольких аспектов. Стоит прочитать , как Cosmos выполняет индексирование , которое включает автоматические c индексы диапазонов для строк, таких как IP-адреса. Это означает, что вы можете эффективно запрашивать эти значения, используя собственные строковые функции , включая STARTSWITH или CONTAINS.
Помимо самих запросов, то, как вы структурируете данные, влияет на производительность. Наиболее важно выбрать ключ раздела для сегментации данных. В вашем случае использование IP-адреса в качестве основы ключа раздела звучит как хороший вариант, если вы заранее знаете, какой IP-адрес и, следовательно, какой раздел запрашивать. Эмпирическое правило состоит в том, чтобы проектировать данные таким образом, чтобы у вас никогда не было запросов между разделами.
Помимо этого, вы можете добавить варианты адресных данных в дополнительные свойства для запроса, например {su bnet: 65.55.243.0/24}. Знание su bnet в этом случае позволяет вам эффективно запрашивать все записи по точному совпадению, что обычно кажется наиболее эффективным типом запроса.
В общем, я нашел:
- Самые простые запросы работают лучше, чем сложнее, тем дороже
- Спроектируйте форму данных, чтобы упростить выполнение простых запросов
- Выберите ключ раздела, полученный из информации, доступной во время запроса, чтобы всегда нацеливаться на один раздел