Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[US1] YCSB-cpp 커스텀 데이터베이스 개발 #2

Open
BlaCkinkGJ opened this issue Aug 20, 2024 · 7 comments
Open

[US1] YCSB-cpp 커스텀 데이터베이스 개발 #2

BlaCkinkGJ opened this issue Aug 20, 2024 · 7 comments
Assignees

Comments

@BlaCkinkGJ
Copy link
Collaborator

내용

  1. Key/Value를 받아서 메모리에 저장하는 커스텀 데이터베이스 개발
  2. 메모리에 저장하는 부분을 NVMe 표준 KV 커맨드로 변경하도록 개선

참고

https://github.com/ls4154/YCSB-cpp

@BlaCkinkGJ BlaCkinkGJ reopened this Aug 20, 2024
@easter423 easter423 assigned easter423 and unassigned easter423 Sep 12, 2024
@easter423 easter423 self-assigned this Sep 21, 2024
@BlaCkinkGJ
Copy link
Collaborator Author

BlaCkinkGJ commented Nov 16, 2024

https://www.notion.so/YCSB-cpp-789cccb3497748178a7e07268b9813c2

인터페이스 분석 자료

@easter423
Copy link
Collaborator

easter423 commented Dec 1, 2024

TODO in KVSSD-Hashmap

  • db api 함수 구현 (Read, Insert, Update, Delete)
  • kvs_value 변수 시각화 함수 구현 (serialize된 void* value에서 값을 확인할 수 있도록)
  • 메모리 할당 및 해제 테스트
  • db api 함수 작동 테스트

@easter423
Copy link
Collaborator

easter423 commented Dec 1, 2024

@BlaCkinkGJ kvs_value struct는 KVSSD 5.10.37 repo에서 그대로 가져온 것인데요,
kvs_value의 void* value 자료형과 관련하여 해당 포인터는 반드시 void* 로 강제되는 것인가요?
테스트 코드를 제작할 때 주소 관리가 어려워서(해당 주소의 값이 db api에서 처리되기 전/후에 변경됨) 혹시 string이나 shared_ptr<char*> 등으로 변환해도 되는지 궁금합니다.

@BlaCkinkGJ
Copy link
Collaborator Author

@BlaCkinkGJ kvs_value struct는 KVSSD 5.10.37 repo에서 그대로 가져온 것인데요, kvs_value의 void* value 자료형과 관련하여 해당 포인터는 반드시 void_로 강제되는 것인가요? 테스트 코드를 제작할 때 주소 관리가 어려워서(해당 주소의 값이 db api에서 처리되기 전/후에 변경됨) 혹시 string이나 shared_ptr<char_> 등으로 변환해도 되는지 궁금합니다.

향후 KVSSD API 호환을 위해서 void * 자료형으로 관리하는 것을 추천드립니다. 테스트 코드를 제작할 때 주소 관리가 어렵다는 점이 어떤 점인지 좀 더 상세하게 이야기를 해 주실 수 있을까요?

@BlaCkinkGJ
Copy link
Collaborator Author

▲ PR 관리 정책 설정으로 인해서 작업이 있었습니다.

@easter423
Copy link
Collaborator

easter423 commented Dec 1, 2024

@BlaCkinkGJ kvs_value struct는 KVSSD 5.10.37 repo에서 그대로 가져온 것인데요, kvs_value의 void* value 자료형과 관련하여 해당 포인터는 반드시 void_로 강제되는 것인가요? 테스트 코드를 제작할 때 주소 관리가 어려워서(해당 주소의 값이 db api에서 처리되기 전/후에 변경됨) 혹시 string이나 shared_ptr<char_> 등으로 변환해도 되는지 궁금합니다.

향후 KVSSD API 호환을 위해서 void * 자료형으로 관리하는 것을 추천드립니다. 테스트 코드를 제작할 때 주소 관리가 어렵다는 점이 어떤 점인지 좀 더 상세하게 이야기를 해 주실 수 있을까요?

hashmap db를 제외하고 pointer 형태로 관리되는 kvs_key.keykvs_value.value는 모두 void* 자료형으로 실제 값을 담을 string과 vector 자료형이 위치할 공간이 필요해서 관련하여 고민이 있었는데, wrapper function과 스마트 포인터를 관리하는 class를 사용하여 문제를 어느 정도 해결하였습니다.

현재 test 상으로 예상 결과와 실제 결과가 같게 나오는 것으로 확인되었고, 메모리 누수 테스트도 이어 확인하겠습니다.

@BlaCkinkGJ
Copy link
Collaborator Author

다음 작업으로는 해당 db를 YCSB를 통해서 돌려보는 것

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

No branches or pull requests

2 participants