Создание разделов

Этот раздел описывает, как создавать разделы в Milvus.

Milvus позволяет разделить большинство векторных данных на небольшое количество разделов. Это позволяет ограничить поиск и другие операции только в пределах одного раздела, улучшая производительность.

Коллекция состоит из одного или нескольких разделов. При создании новой коллекции Milvus создаст раздел по умолчанию, _default. Дополнительную информацию см. в глоссарии - Раздел.

В следующем примере создается раздел с названием novel в коллекции book.

err := milvusClient.CreatePartition(
  context.Background(),   // ctx
  "book",                 // Название коллекции
  "novel"                 // Название раздела
)
if err != nil {
  log.Fatal("Не удалось создать раздел: ", err.Error())
}
Параметр Описание
ctx Контекст для управления процессом вызова API.
CollectionName Название коллекции, в которой нужно создать раздел.
partitionName Название создаваемого раздела.

Ограничения

Функция Максимальное значение
Количество разделов в одной коллекции 4,096

Проверка существования раздела

Проверка существования указанного раздела в коллекции.

hasPar, err := milvusClient.HasPartition(
   context.Background(),   // ctx
   "book",                 // Название коллекции
   "novel",                // Название раздела
)
if err != nil {
   log.Fatal("Не удалось проверить раздел: ", err.Error())
}
log.Println(hasPar)

Перечисление всех разделов

listPar, err := milvusClient.ShowPartitions(
  context.Background(),   // ctx
  "book",                 // Название коллекции
)
if err != nil {
  log.Fatal("Не удалось перечислить разделы: ", err.Error())
}
log.Println(listPar)

Удаление раздела

err := milvusClient.DropPartition(
  context.Background(),   // ctx
  "book",                 // Название коллекции
  "novel",                // Название раздела
)
if err != nil {
  log.Fatal("Не удалось удалить раздел: ", err.Error())
}

Загрузка раздела

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

err := milvusClient.LoadPartitions(
  context.Background(),   // ctx
  "book",                 // Название коллекции
  []string{"novel"},      // Названия разделов
  false                   // Асинхронно
)
if err != nil {
  log.Fatal("Не удалось загрузить разделы: ", err.Error())
}

Освобождение раздела

err := milvusClient.ReleasePartitions(
  context.Background(),   // ctx
  "book",                 // Название коллекции
  []string{"novel"}       // Названия разделов
)
if err != nil {
  log.Fatal("Не удалось освободить разделы: ", err.Error())
}