Hacker News 의견
  • 파일 시스템 속성이나 메타데이터가 없어서 추가적인 속성 기록이나 업데이트가 필요 없고, 물리 파일이나 파이프/심볼릭 링크 확인, 권한 검사, 블록 크기 정렬 불일치 등이 없어서 단일 오픈 명령어만 필요함

    • 기능을 버리고 범용 설계를 무시할 때 이해할 수 있는 부분임
    • SQLite에 대한 fuse 매핑을 사용하고 디렉토리를 마운트하여 접근하면 성능이 비슷하거나 더 느릴 수 있음
    • 속성을 비활성화하고 최적화된 블록 크기로 커스텀 파일 시스템을 만들면 비슷한 성능을 얻을 수 있음
    • rsync 같은 쉘 명령어를 사용하여 파일을 탐색하고 조작할 수 있는 단순함이 있음
    • SQLite는 패키지된 정적 자산이나 어플라이언스 타입 애플리케이션에 적합함
  • Windows 10에서 4배 속도 증가가 Windows 파일 시스템 호출이 얼마나 느린지 강조함

  • 디지털 피아노에서 나오는 모든 노트를 실시간으로 기록하는 아이디어를 가짐

    • SQLite를 사용하여 각 행이 피아노의 MIDI 이벤트인 단일 테이블로 저장함
    • 성능이 좋고 나중에 분석할 수 있음
  • 데이터베이스 연구실에서 OS 연구와 비교하는 것이 흥미로웠음

    • 관계형 데이터베이스는 작은 개별 레코드와 일관성을 위해 최적화됨
    • 행 크기가 커질수록 성능이 급격히 떨어짐
  • WAL2 모드에서 sqlite DB에 추가하는 것을 고려 중임

    • 쓰기 성능 페널티가 거의 없고 읽기/분석에 큰 장점이 있음
  • SQLite 데이터베이스에서 open()과 close() 시스템 호출이 한 번만 호출됨

    • 개별 파일에서 블롭을 사용할 때보다 오버헤드가 적음
  • SQLite 블롭 필드를 사용하여 파일을 저장하는 것은 권장하지 않음

    • 블롭 최대 크기가 2GB임
    • 객체를 바이트로 직렬화/역직렬화해야 함
    • 다른 시스템/서비스와 상호작용하려면 파일이 필요함
    • SQLite는 병렬 요청을 처리하는 설정이 있지만, 경쟁 요청으로 인해 데이터베이스가 잠김
  • 파일 시스템 위에 구축된 것이 파일 시스템보다 빠르다는 것은 최적화되지 않은 방식으로 파일 시스템을 사용할 때 느리다는 의미임

  • SQLite 데이터베이스에서 많은 행을 삭제하는 것이 파일을 삭제하는 것보다 느림

  • 모든 파일 시스템/드라이브 접근은 OS에 의해 관리됨

    • 데이터베이스 파일이 디스크에 클러스터로 저장됨
    • 데이터베이스 관리 시스템은 특정 도메인과 문제를 해결하기 위해 편리하게 만들어짐

20년 전에 파일을 blob으로 oracle db에 넣는 아키텍처를 잘 사용했으나.. 매번 사람들에게 그 장점을 설명해야 했음. 물론 매번 성공적이지는 않았음.

20년 전이면 오라클 SAN DISK 가격이 만만치 않았을텐데요..