콘텐츠로 이동

2026-01-19 (월)

Jan 19, 2026
  • Milvus는 벡터 유사도 검색용 분산 DB
  • 4개 레이어 구조: Client → Proxy → Coordinator → Worker → Storage
  • 쓰기/읽기 워크로드가 분리되어 독립 스케일링 가능
Client SDK (PyMilvus, REST)
Proxy Layer (API 게이트웨이, 요청 라우팅)
Coordinator Layer (RootCoord, DataCoord, QueryCoord)
Worker Layer (DataNode: 쓰기, QueryNode: 읽기)
Storage Layer (etcd: 메타, MinIO/S3: 데이터)
컴포넌트역할확장성
ProxyAPI 게이트웨이수평 확장
RootCoordDDL, 스키마 관리Active-Standby
DataCoord세그먼트 할당/컴팩션Active-Standby
QueryCoord쿼리 로드밸런싱Active-Standby
DataNode데이터 저장, 인덱스 빌드수평 확장 (쓰기)
QueryNode벡터 검색 실행수평 확장 (읽기)

Insert: Client → Proxy → DataCoord(세그먼트 할당) → DataNode → MinIO(Binlog)

Search: Client → Proxy → QueryCoord(샤드 리더 조회) → QueryNode(벡터 검색) → Proxy(결과 Reduce)

Collection → Partition → Segment
├── Growing (쓰기 가능)
└── Sealed (읽기 전용, 인덱스됨)

세그먼트 상태: Growing → Sealed → Flushed → Indexed

  • MixCoord가 RootCoord, DataCoord, QueryCoord를 통합한다는데, 언제 분리하고 언제 통합하는지?
  • Segcore(C++ 검색 엔진)와 Go 코드 간 인터페이스는 어떻게 되는지?
  • 컴팩션 정책(L0, Clustering, ForceMerge) 차이 더 알아보기
  • 코드: milvus-io/milvus
  • 핵심 파일: internal/proxy/task_*.go, internal/datanode/data_node.go, internal/querynodev2/server.go