성능 모범 사례
개요
출처: 문서
본문
이 가이드로 lakeFS를 사용해 최고의 성능을 달성하세요.
동시 커밋/머지 피하기
Git과 마찬가지로 브랜치 히스토리는 커밋으로 구성되며 본질적으로 선형적이에요. 같은 브랜치에서 동시 커밋/머지는 경합(race)을 일으켜요. 첫 번째 연산은 성공적으로 끝나고 나머지는 재시도해요.
의미 있는 커밋 수행하기
데이터 라이프사이클의 논리적 지점을 나타내는, 의미 있는 커밋을 수행하는 것이 좋아요. lakeFS는 임의로 큰 커밋도 지원하지만, 엄청난 수의 객체를 담은 커밋을 피하면 더 이해하기 쉬운 커밋 히스토리가 만들어져요.
제로카피 임포트 사용하기
객체를 lakeFS로 임포트할 때, 일회성이든 정기적이든 lakeFS는 제로카피 임포트 기능을 제공해요. 객체를 여러분의 리포지토리에 단순히 복사하는 대신, 많은 수의 객체를 lakeFS로 임포트할 때 이 기능을 사용하세요. 이 기능은 버킷에 이미 존재하는 객체에 대한 참조를 만들어 복사를 피하게 해 줘요.
커밋 ID로 데이터 읽기
커밋된 데이터만 읽으면 되는 경우:
-
경로에 커밋 ID(또는 태그 ID)를 사용하세요 (예:
lakefs://repo/a1b2c3). -
경로 앞에
@를 추가하세요.lakefs://repo/main@/path.
브랜치 이름으로 데이터에 접근할 때(예: lakefs://repo/main/path) lakeFS는 커밋되지 않은 데이터도 함께 가져오려 시도하고, 이는 성능 저하를 일으킬 수 있어요.
자세한 내용은 lakeFS에서 커밋되지 않은 데이터가 어떻게 관리되는지 문서를 참고하세요.
스토리지에서 직접 연산하기
때로 스토리지 연산이 병목이 될 수 있어요. 예를 들어 데이터 파이프라인이 많은 큰 객체를 업로드할 때요. 그런 경우 lakeFS에는 버저닝 연산만 수행하고, 스토리지 읽기/쓰기는 객체 스토어에서 직접 수행하는 편이 유익할 수 있어요. lakeFS는 여러 방법을 제공해요:
-
lakectl fs upload --pre-sign명령 (또는 다운로드). -
lakeFS Hadoop Filesystem.
-
스토리지에 쓴 뒤 lakeFS 레퍼런스를 추가하는 데 쓸 수 있는 staging API.
객체 스토어에 직접 접근하는 것이 데이터와 상호작용하는 더 빠른 방법이에요.
제로카피
lakeFS는 데이터에 대한 제로카피 메커니즘을 제공해요. 데이터를 복사하는 대신 새 브랜치로 체크아웃할 수 있어요. 새 브랜치 생성은 상수 시간이 걸려요. 새 브랜치가 부모와 동일한 데이터를 가리키기 때문이에요. 스토리지 비용도 낮춰 줘요.
더 알아보기 (Learn more)
공식 문서의 성능 모범 사례 페이지는 https://docs.lakefs.io/concepts/performance-best-practices 에서 확인할 수 있어요.