멀티테넌시 전략
많은 사용 사례에서 개발자는 하나의 Milvus 클러스터를 실행하여 두 개의 제품 팀 또는 수백만 명의 최종 사용자와 같은 여러 테넌트에게 서비스를 제공하고자 합니다. 이 가이드에서는 Milvus에서 멀티테넌시를 달성하기 위한 몇 가지 전략을 설명합니다.
Milvus는 데이터베이스, 컬렉션 또는 파티션 수준에서 멀티테넌시를 지원하도록 설계되었습니다. 멀티테넌시의 목적은 데이터와 리소스를 서로 분리하는 것입니다. 서로 다른 수준에서 멀티테넌시를 구현하면 서로 다른 수준의 격리를 달성할 수 있지만 오버헤드도 달라집니다. 여기에서는 이러한 장단점에 대해 설명합니다.
데이터베이스 중심의 멀티테넌시
Milvus 버전 2.2.9부터는 단일 Milvus 클러스터에 여러 데이터베이스를 만들 수 있습니다. 이 기능을 사용하면 각 테넌트마다 데이터베이스를 할당하여 자체 컬렉션을 만들 수 있는 데이터베이스 지향 멀티테넌시를 구현할 수 있습니다. 이 접근 방식은 테넌트에게 최상의 데이터 및 리소스 격리를 제공하지만 하나의 클러스터에 최대 64개의 데이터베이스로 제한됩니다.
컬렉션 지향 멀티테넌시
컬렉션 지향 멀티테넌시를 달성하는 방법에는 두 가지가 있습니다.
모든 테넌트를 위한 하나의 컬렉션
테넌트를 구분하기 위해 테넌트 필드를 추가하여 단일 컬렉션을 사용하여 멀티테넌트를 구현하는 것은 간단한 옵션입니다. 특정 테넌트에 대한 ANN 검색을 수행할 때 필터 표현식을 추가하여 다른 테넌트에 속한 모든 엔티티를 걸러내면 됩니다. 이것은 멀티테넌시를 달성하는 가장 간단한 방법입니다. 하지만 필터의 성능이 ANN 검색의 병목 현상이 될 수 있다는 점에 유의하세요. 검색 성능을 개선하려면 아래 파티션 중심의 멀티테넌시로 최적화할 수 있습니다.
테넌트당 하나의 컬렉션
또 다른 접근 방식은 모든 테넌트의 데이터를 단일 컬렉션에 저장하는 대신 각 테넌트가 자체 데이터를 저장할 수 있는 컬렉션을 만드는 것입니다. 이렇게 하면 데이터 격리 및 쿼리 성능이 향상됩니다. 하지만 이 접근 방식은 스케줄링에 더 많은 리소스가 필요하고 클러스터에서 최대 10,000개의 컬렉션으로 제한된다는 점에 유의하세요.
파티션 중심 멀티테넌시
파티션 지향 멀티테넌시를 달성하는 방법에는 두 가지가 있습니다:
테넌트당 하나의 파티션
단일 컬렉션을 관리하는 것이 여러 컬렉션을 관리하는 것보다 훨씬 쉽습니다. 여러 컬렉션을 만드는 대신 각 테넌트에 파티션을 할당하여 유연한 데이터 격리 및 메모리 관리를 달성하는 것이 좋습니다. 파티션 중심 멀티테넌시의 검색 성능은 컬렉션 중심 멀티테넌시보다 훨씬 우수합니다. 하지만 컬렉션의 테넌트 수가 컬렉션이 보유할 수 있는 최대 파티션 수를 초과해서는 안 된다는 점에 유의하세요.
파티션 키 기반 멀티테넌시
Milvus 2.2.9에는 파티션 키라는 새로운 기능이 도입되었습니다. 컬렉션을 만들 때 테넌트 필드를 지정하고 이를 파티션 키 필드로 지정하세요. Milvus는 파티션 키 필드의 해시 값에 따라 엔티티를 파티션에 저장합니다. ANN 검색을 수행할 때 Milvus는 파티션 키가 포함된 파티션만 검색합니다. 이렇게 하면 검색 범위가 크게 줄어들어 파티션 키가 없을 때보다 더 나은 성능을 얻을 수 있습니다.