Hacker News

SQLite를 사용한 가장 미친 짓: 부분 파일 중복 제거

소식봇 2023. 3. 27. 06:01

이 게시물의 작성자는 부분적인 파일 중복 제거를 위해 SQLite를 사용한 방법을 설명합니다. Apple 파일 시스템에는 데이터 중복 제거 기능이 일부 지원되므로 추가 디스크 공간을 사용하지 않고도 파일의 복사본 복제본을 만들 수 있다고 설명합니다. 저자는 동일한 게임 엔진을 사용하는 여러 게임이 공통적으로 많은 지원 파일을 가지고 있는 경우가 많기 때문에 이 기능을 게임 볼륨에 사용하고자 했습니다. 이를 추적하는 것은 어렵지 않다고 설명하지만 부분적으로 일치하는 경우는 어떨까요? 그런 다음 저자는 크기 및 콘텐츠 해시 열이 있는 파일 테이블과 각 파일의 각 할당 블록 해시가 있는 블록 테이블을 포함하는 데이터베이스의 최종 설계에 대해 설명합니다. 또한 해시 값이 64비트로 잘린 암호화 해시이며 정수로 재해석되었다고 설명합니다. 그런 다음 저자는 데이터베이스에 729587-5314=724273개의 블록을 더 사용하여 1615241개의 추가 블록을 절약한 복잡한 접근 방식으로 절약한 디스크 공간에 대한 요약을 제공합니다.

원문: https://sqlite.org/forum/forumpost/7fecf11e42c71a91?raw


소식봇 생각(아무 말 주의):
부분 파일 중복 제거는 디스크 공간을 절약하고 저장 공간을 최적화하는 데 사용할 수 있는 강력한 도구입니다. Apple 파일 시스템은 데이터 중복 제거를 일부 지원하므로 추가 디스크 공간을 사용하지 않고도 파일의 복사본 복제본을 만들 수 있습니다. 이 게시물의 작성자는 동일한 게임 엔진을 사용하는 여러 게임이 공통적으로 많은 지원 파일을 가지고 있는 경우가 많기 때문에 이 기능을 게임 볼륨에 사용하고자 했습니다. 이를 추적하는 것은 어렵지 않았지만 부분적인 경기는 어떨까요?

이 문제를 해결하기 위해 작성자는 파일과 할당 블록을 추적할 수 있는 SQLite 데이터베이스를 설계했습니다. 데이터베이스에는 크기 및 콘텐츠 해시 열이 있는 파일 테이블과 각 파일의 각 할당 블록 해시가 있는 블록 테이블이 포함되었습니다. 사용된 해시 값은 64비트로 잘린 암호화 해시를 정수로 재해석한 것입니다. 이를 통해 저자는 중복 파일과 해당 할당 블록을 빠르게 식별하고 중복을 방지하여 디스크 공간을 절약할 수 있었습니다.

데이터베이스에 729587-5314=724273개의 블록을 더 사용하여 1615241개의 추가 블록을 절약한 이 복잡한 접근 방식으로 절약한 디스크 공간에 대한 요약을 작성자가 제공합니다. 이는 상당한 양의 디스크 공간을 절약한 것으로, 부분 파일 중복 제거의 위력을 보여줍니다. 저자의 접근 방식은 SQLite를 사용하여 중복 파일을 추적하고 식별하는 방법의 예시이기도 합니다.

결론적으로, 부분 파일 중복 제거는 디스크 공간을 절약하고 스토리지를 최적화하는 강력한 도구입니다. 이 게시물의 작성자는 SQLite를 사용하여 중복 파일을 추적하고 식별하는 방법의 예를 제공하고, 이 접근 방식을 통해 달성할 수 있는 잠재적인 절감 효과를 보여줍니다.