이번 마인드 골 프로젝트의 인원 모집이 마무리되고 본격적인 개발 단계에 접어들었습니다. 특히 인원 구성을 마무리하는 과정에서 각 팀원의 강점과 역할을 명확히 파악하고 조율하면서 커뮤니케이션의 중요성을 재확인할 수 있었습니다. 또한, 프로젝트의 목표와 기획 의도를 팀원들
2024 OSSCA \[참여형] 활동기간: 약 13주 2024. 7. 13 (토) - 2024. 11. 2 (토) \[Challenges: 4주] 2024. 7. 13 (토) - 2024. 8. 9 (금) \[Masters: 9주] 2024. 8. 10 (토) - 20
드래프트 PR(Pull Request)은 GitHub에서 제공하는 기능으로, 아직 작업이 완전히 완료되지 않았거나 검토가 필요할 때 사용하는 PR입니다. 이 기능을 통해 프로젝트에 작업 중인 상태를 공유하면서도 "정식으로 병합"되지 않도록 할 수 있습니다. 드래프트 P
기능: 주어진 key에 해당하는 값을 저장하거나 업데이트.현재 상태: PUT /store/{key}/{value}로 잘못된 RESTful 설계를 사용하고 있음.적절한 수정: value는 요청 본문(body)에 포함하고, key만 URL 경로에 포함시켜야 함.기능: 주어
오픈소스 프로젝트에 기여하거나 협업할 때, GitHub에서 리포지토리를 포크(Fork)한 후에도 원본 리포지토리의 변경 사항을 반영하고 동기화하는 과정이 필요합니다. 이 글에서는 포크한 리포지토리를 원본과 최신 상태로 유지하면서, 새로운 작업 브랜치를 생성해 작업을 진
Rust 프로젝트에서 Raft 관련 코드 실행 중 Result::unwrap() 호출 시 Err로 인해 패닉이 발생했습니다. 오류는 아래와 같은 메시지를 나타냅니다.백트레이스(Backtrace)는 프로그램이 패닉이나 예외 상황에서 중단되었을 때, 그 중단 시점까지의 함
Raft 기반 분산 시스템을 개발하던 중, memstore-static-members 실행 시 Raft 노드를 부팅하는 과정에서 다음과 같은 오류 메시지가 발생했습니다.로그에 기록된 정보는 다음과 같습니다:이 오류는 스냅샷과 관련된 문제로 보였으며 이를 해결하기 위한
개발을 하다 보면 예상치 못한 에러를 만나는 일이 자주 있습니다. 이번 프로젝트에서도 몇 가지 에러가 발생했고, 이를 해결하는 과정에서 많은 것을 배우게 되었습니다. 이 글에서는 코드 작성 중에 직면했던 에러들과 그 해결 과정을 공유하려고 합니다.에러를 처음 마주쳤을
1. 필요한 라이브러리 및 모듈 임포트 rocksdb::{DB, Options}: RocksDB를 사용하기 위한 필요한 객체들 (DB와 Options)을 임포트합니다. crate::{StableStorage, Result, Entry}: 프로젝트 내에서 정의된 Sta
조인어스월드 동아리 5기에 합격을 했습니다. 앞으로 다양한 사람들과 소통하며 글로벌한 시야를 넓힐 수 있는 기회를 기대하고 있습니다. 새로운 언어와 문화를 배우고 이를 통해 더 넓은 세계를 경험할 수 있을 것이라는 기대감이 큽니다. 동아리 활동이 시작되면 그동안 기대했
Advanced Configuration Options (고급 구성 옵션)은 RocksDB의 세부 동작을 제어하는 다양한 설정을 의미합니다. 이 설정들은 RocksDB의 성능, 안정성 및 동작 방식을 사용자의 특정 요구사항에 맞춰 세밀하게 조정할 수 있게 해줍니다. 예
어댑티브 뮤텍스(Adaptive Mutex)는 멀티스레드 환경에서 잠금을 더 효율적으로 관리하기 위한 방법입니다. 일반적인 뮤텍스는 잠금이 걸리면 다른 스레드가 대기하는 동안 잠들게 되지만, 어댑티브 뮤텍스는 잠금이 금방 풀릴 것으로 예상될 때 잠들지 않고 잠금을 획득
통계 및 메트릭(Statistics and Metrics)은 RocksDB의 성능과 동작 상태를 모니터링하는 데 사용되는 다양한 통계 지표입니다. 이러한 지표는 문제를 진단하고 성능을 개선하는 데 유용합니다. 주요 지표에는 다음이 포함됩니다:읽기/쓰기 지연 시간: 읽기
Transaction Log는 RocksDB에서 중요한 역할을 하는 기능으로, 데이터베이스에 쓰여진 모든 변경 사항을 기록하는 파일입니다. 이는 Write-Ahead Logging(WAL) 방식으로 구현되며, 주로 데이터 복구 및 일관성 유지를 위해 사용됩니다. 트랜잭
Iterators (이터레이터)는 RocksDB에서 SST 파일이나 MemTable에 저장된 데이터를 순차적으로 탐색할 수 있는 인터페이스입니다. 이터레이터는 데이터를 효율적으로 조회하고 스캔하는 데 사용되며, 특정 범위 내의 데이터를 가져오거나 전체 데이터를 순차적으
RocksDB에서 Merge Operator는 기존 값을 즉시 읽지 않고 병합 연산을 기록하여 최종 값을 나중에 계산하는 방식으로 작동합니다. 예를 들어, "키1"에 대해 5를 더하는 연산이 들어오면, RocksDB는 이 연산을 단순히 기록합니다. 실제로 데이터가 읽힐
Block cache는 RocksDB가 데이터를 빠르게 읽어오기 위해 메모리에 저장하는 임시 저장 공간입니다. 블록 캐시는 데이터를 미리 메모리에 올려두어 디스크에서 직접 읽는 것보다 훨씬 빠르게 접근할 수 있게 합니다. 이를 통해 데이터베이스의 읽기 성능을 크게 향상
블룸 필터는 데이터가 존재하는지 빠르게 확인할 수 있는 메모리 효율적인 자료 구조입니다. 이 필터는 여러 해시 함수로 데이터를 비트 배열에 매핑하여 사용됩니다. 결과적으로, 필터가 "데이터가 존재하지 않는다"고 말하면 확실하게 없다는 의미이고, "존재한다"고 말하면 실
Compaction은 RocksDB에서 데이터를 효율적으로 관리하기 위해 사용되는 과정으로, 데이터베이스에 있는 오래된 데이터와 새로운 데이터를 병합하여 불필요한 중복을 제거하고 저장 공간을 확보합니다. 이 과정을 통해 데이터베이스의 읽기 속도가 향상되고, 저장 공간이
SST 파일(Sorted String Table 파일)은 RocksDB와 같은 LSM(로그 구조 병합) 트리 기반 데이터베이스에서 사용되는 불변성(immutable)의 파일 포맷입니다. 이 파일은 메모리에서 플러시된 데이터가 정렬된 상태로 저장된 파일이며, 디스크에 저