Goal of Program
Deduplication을 활용하여 간단한 storage application 만들기
이때 Deduplication은 Rabin finger printing기능을 활용
Upload
1. File upload 시 file을 여러 chunks로 나누어 cloud에 저장하기 (chunk로 나눌때 Rabin finger printing 사용)
2. 오직 unique data chunk 만 cloud에 저장
3. Container 사이즈는 1MiB로 제약( 초과 시 그 다음 Container 생성)
4. Chunk들의 경우 SHA-1 algorithm을 사용하여 checksum 생성

Download
1. 원하는 파일을 명령어에 입력시 프로그램이 chunks를 회수하여 원래 파일로 다시 재구성하기

Used Language
Java
My Review
이번 프로젝트는 Deduplication 을 이용하여 효율적인 Storage applicaiton을 만드는 것이었다. Deduplication 자체는 알았어도 이것을 시스템적으로 활용하여 직접 storage를 만드는 것은 처음이라 아무래도 굉장히 난이도가 있었다. 특히, 데이터를 upload할 때 Chunking, Checksum, Indexing을 종합하여 사용해서 container에 보관하는 것이 어려웠다. 데이터 자체를 chunk 할때 fixed size가 아닌 variable size chunking을 해야 했기 때문에 많은 시행착오를 겪어야했다. variable size chunking을 RFP algorithm을 사용해 만든 방법은 아래 글에 추가적으로 더 설명해 볼 것이다. Figure 1.에 보듯이 아무래도 upload process가 조금 더 복잡한 process를 가져서 확실히 이 쪽을 만드는데 시간이 오래 소요된거 같다. 대신 upload part를 끝내고 나니 이 과정들이 확실히 이해가 되서 download process 같은 경우는 원만히 진행 할 수 있었다.
Project Code
https://github.com/guswns00123/Deduplication.git
GitHub - guswns00123/Deduplication
Contribute to guswns00123/Deduplication development by creating an account on GitHub.
github.com
Interested Concept
What is Rabin Finger Printing?
https://guswns00123.tistory.com/22
[Algorithm] What is RFP Algorithm on deduplication?
1. RFP 란 ? Rabin Finger Printing 알고리즘은 긴 문자열을 해싱하는 데에 사용하는 대표적인 알고리즘이다. 이 알고리즘은 일반적인 Chunking 알고리즘이지만 최신기술은 아니다. 그래서 Chunking 알고리즘
guswns00123.tistory.com
'과제' 카테고리의 다른 글
| [Project] Make Community Detection in Online Social Networks (0) | 2023.07.24 |
|---|---|
| [Group Project] CU advanced Course Selection System (1) | 2023.07.11 |
| [Project] Make Dijkstra program by using Hadoop (2) | 2023.06.12 |
| [Project] Make page-rank program by using Hadoop (1) | 2023.05.22 |
| [Project] Make n-gram program by using Hadoop (2) | 2023.03.23 |