Skip to content

Conversation

@toothlessdev
Copy link
Owner

No description provided.

@gemini-code-assist
Copy link

Summary of Changes

Hello @toothlessdev, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 Content Addressable Store (CAS)에 대한 포괄적인 기술 문서를 추가합니다. 이 문서는 CAS의 기본 원리, 데이터 중복 제거 및 무결성 보장과 같은 핵심 이점, 그리고 해시 맵, 디스크 인덱싱, Merkle Tree와 같은 구현에 사용되는 다양한 자료구조를 상세히 설명합니다. 또한, Git과 같은 실제 시스템에서의 CAS 적용 사례를 통해 이 개념이 어떻게 광범위하게 사용되는지 보여줍니다.

Highlights

  • CAS 핵심 개념 소개: 파일 이름이나 경로 대신 내용의 해시 값을 주소로 사용하는 Content Addressable Store (CAS)의 기본 아이디어를 설명합니다.
  • CAS의 주요 이점: 데이터 중복 제거(Deduplication), 내용 무결성 보장(Integrity), 불변성(Immutability)과 같은 CAS의 핵심 이점을 다룹니다.
  • CAS 구성 자료구조 상세 설명: 해시 함수, 해시 맵, 디스크 인덱싱 (B-Tree, LSM-Tree), Prefix Sharding, Chunking 등 CAS를 구성하는 다양한 자료구조와 구현 방식을 상세히 설명합니다.
  • 해시 트리를 이용한 무결성 검증: Merkle Tree (해시 트리)를 활용하여 데이터의 일관성과 무결성을 효율적으로 검증하는 방법을 소개합니다.
  • 실제 시스템 적용 사례: Git, Docker, IPFS, Bazel, Ethereum 등 실제 시스템에서 CAS가 어떻게 활용되는지 구체적인 예시를 제시합니다.
  • CAS 관련 임시 게시물 추가: CAS의 자료구조, 해시 알고리즘의 중요성, Git에서의 활용, Canonicalization 등 심화 개념을 다루는 임시 게시물 dd.md가 함께 추가되었습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/deploy.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이 PR은 Content Addressable Store(CAS)에 대한 새로운 블로그 게시글을 추가합니다. 전반적으로 CAS의 개념과 구현, 활용 사례를 체계적으로 잘 설명하고 있습니다. 다만, content-addressable-store.md 파일에서 몇 가지 사소한 오타와 마크다운 서식 오류가 발견되어 수정을 제안했습니다. 또한, dd.md 파일은 임시 메모용 파일로 보이는데, 실수로 포함된 것으로 추정되므로 PR에서 제외하는 것을 권장합니다. 좋은 글을 작성해주셔서 감사합니다.

@@ -0,0 +1,221 @@
---

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

dd.md 파일은 제목이 'Temporary Post'이고 내용이 미완성된 메모로 보입니다. 실수로 커밋에 포함된 것 같습니다. 불필요한 파일이 저장소에 추가되지 않도록 이 파일은 PR에서 제거하는 것을 권장합니다.

#### 🤔 Prefix Sharding - 해시 앞부분으로 디렉토리 쪼개기

해시를 파일명으로 바로 쓰면, 하나의 디렉토리에 파일이 너무 많아지며 성능이 저하될 수 있습니다.
그래서 흔이 해시 prefix 로 디렉토리를 쪼개는 방식을 사용합니다.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

사소한 오타가 있습니다. '흔이'를 '흔히'로 수정하면 더 자연스러운 문장이 될 것 같습니다.

Suggested change
그래서 흔이 해시 prefix 로 디렉토리를 쪼개는 방식을 사용합니다.
그래서 흔히 해시 prefix 로 디렉토리를 쪼개는 방식을 사용합니다.

- 리프 노드는 실제 데이터 블록의 해시값을 저장하고, <br>
- 내부 노드는 자식 노드들의 해시값을 조합하여 해시값을 계산합니다 <br>

![alt text](./img/content-addressable-store/hash-tree.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

이미지의 alt 텍스트가 "alt text"로 되어 있어 이미지의 내용을 설명해주지 못하고 있습니다. 스크린 리더 사용자나 이미지가 로드되지 않았을 때를 위해 좀 더 설명적인 텍스트로 변경하는 것이 좋습니다. 예를 들어, 'Merkle Tree의 구조'와 같이 수정할 수 있습니다.

Suggested change
![alt text](./img/content-addressable-store/hash-tree.png)
![Merkle Tree 구조](./img/content-addressable-store/hash-tree.png)

하지만 Merkle Tree 를 사용하면 전체 데이터를 받을 필요가 없습니다.

1. 클라이언트는 `Leaf2` 의 내용과 `Leaf2` 의 해시 (`91e54cd7`) 를 받습니다.
2. 서버는 `Leaf2` 와 관련된 Sibiling Node 의 해시 (`Leaf1`, `hashB`)만 추가로 보냅니다

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

'Sibiling'은 'Sibling'의 오타입니다. 수정하는 것이 좋겠습니다.

Suggested change
2. 서버는 `Leaf2` 와 관련된 Sibiling Node 의 해시 (`Leaf1`, `hashB`)만 추가로 보냅니다
2. 서버는 `Leaf2` 와 관련된 Sibling Node 의 해시 (`Leaf1`, `hashB`)만 추가로 보냅니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants