GN⁺: HN 공개: SQLite 디스크 페이지 탐색기
(github.com/QuadrupleA)-
SQLite Page Explorer
-
SQLite Page Explorer는 redbean으로 개발된 작은 GUI 애플리케이션으로, SQLite 데이터베이스를 SQLite가 보는 방식대로 "페이지별로" 탐색할 수 있게 해주는 도구임
-
왜 필요한가?
- SQLite 및 대부분의 데이터베이스는 디스크 블록 크기의 페이지(보통 4KB)에 데이터를 저장하여 읽기와 쓰기를 최대한 빠르게 함
- 일반적으로 개발자는 "스키마 레벨"에서 데이터베이스와 상호작용하지만, "페이지 레벨"을 살펴보면 다음과 같은 흥미로운 통찰을 얻을 수 있음
- 인덱스가 실제로 디스크에서 어떻게 보이는지 확인 가능 (기본적으로 별도의 작은 테이블임)
- 데이터를 더 압축하여 저장함으로써 쿼리와 애플리케이션을 더 빠르게 만들 수 있음
- 스키마 레벨에서는 보이지 않는 문제점과 비효율성을 발견할 수 있음
- 대부분의 파일 시스템과 데이터베이스의 기초가 되는 B-트리와 같은 중요한 데이터 구조에 대한 직관을 얻을 수 있음
-
어디서든 실행 가능
- redbean, cosmopolitan, αcτµαlly pδrταblε εxεcµταblε 덕분에, Windows, Linux, MacOS, 다양한 BSD, ARM64 및 x64에서 네이티브로 실행되는 단일 6.5 MB 실행 파일임
- 이 파일은 애플리케이션을 실행하고 데이터베이스 바이너리 형식을 파싱하는 Lua 코드를 포함한 zip 파일임
-
설치 방법
- releases에서
sqlite-page-explorer.com
다운로드 - Unix 계열에서는
chmod +x
실행 - 데이터베이스 파일을 드래그하거나 콘솔에서 실행:
sqlite-page-explorer.com mySqliteDatabase.db
- 애플리케이션은 브라우저 탭에서 열림
- 완료 후 콘솔에서 Ctrl-C를 두 번 누름
- αcτµαlly pδrταblε εxεcµταblεs는 브라우저와 운영 체제의 바이러스 탐지 시스템을 혼란시켜 오탐을 발생시킬 수 있음. 인터넷에서 다운로드한 모든 것에 대해 일반적인 주의를 기울일 것
- 500 MB 이상의 큰 데이터베이스를 사용할 경우, 모든 페이지를 읽는 최상위 뷰를 로드하는 데 시간이 걸릴 수 있음
- releases에서
-
빌드 방법
-
files/
의 내용을redbean-3.0.0-cosmos.com
에zip
으로 압축하면 됨. https://cosmo.zip/pub/cosmos/bin/에서 다운로드 가능 (목록에서 "redbean" 클릭) - 시스템에
zip
이 없으면 해당 사이트에서 다운로드 필요 - 포함된
zipitup.py
파이썬(3.6+) 스크립트를 실행해도 됨 - 수정하려면
redbean-3.0.0-cosmos.com -D files
를 실행하여files
하위 디렉토리에서 애플리케이션을 제공할 수 있음. 변경 시마다 zip을 다시 빌드할 필요 없음
-
-
걸작은 아님
- redbean을 시도해보고 Lua를 처음 사용해본 실험의 일환으로, 코드가 다소 어수선할 수 있음
- Jinja나 bottle.py의 네이티브 템플릿과 같은 템플릿 시스템을 사용하면 많은 문자열 연결과 Write() 문을 줄일 수 있음
- 마지막 탭이 닫힐 때 콘솔을 자동으로 닫고, 사용자가 확인하지 않는 한 큰 데이터베이스의 경우 페이지 10,000에서 멈추는 기능이 있으면 좋을 것임
- PR 환영
Hacker News 의견
- 애니메이션 GIF 스크린샷을 게시한 프로젝트가 매우 흥미로움
- SQLite 파일 형식 문서를 참고하여 SQLite 파일을 파싱하는 코드를 작성하는 것이 생각보다 쉬움
- 관련 문서: SQLite 파일 형식
- SQLite 내부 작업 경험자로서, 이 프로젝트의 작업이 인상적임
- Dioxus로 구축된 sqlite-repr도 흥미로운 SQLite 시각화를 제공함
- 관련 링크: sqlite-repr
- 프로젝트가 멋지며, 색상 범례를 추가하면 좋겠다는 의견
- 큰 데이터베이스(3.6GB, 942719 페이지)에서 성능 문제가 발생하며 페이지네이션을 고려할 수 있음
- 10년 전 보안 도구를 위해 비슷한 작업을 했으며, 이 프로젝트가 MIT 라이선스로 제공되어 좋음
- SQLite 소스에는 데이터베이스 파일 탐색에 유용한 CLI 도구 showdb가 포함되어 있음
- 강의나 수업을 듣기 어려운 사람에게 이 프로젝트가 데이터 구조를 효율적으로 시각화하는 좋은 방법임
- 데이터베이스 학습 중인 사람에게 매우 유용한 도구임
- SQLite 파일 형식에 대한 설명서와 유용한 다이어그램을 작성한 경험이 있음
- 관련 링크: SQLite 파일 형식 설명서
- 도구가 잘 작동함