Hacker News 의견
  • SQLite를 사용하지 않고 자체 트랜잭션 로그를 만드는 것은 이상함

    • 데이터가 한 서버에 맞으면 그냥 그 서버에서 데이터베이스를 실행하는 것이 좋음
    • 데이터가 RAM에 맞으면 ramdisk를 사용하고 표준 도구로 영구 저장소에 복제하는 것이 간단함
  • MySQL, Postgres, Redis, MongoDB 등을 사용하지 않고 자체 메모리 내 데이터베이스를 만드는 것은 복잡함

    • 트랜잭션을 직렬화하고 디스크에 기록해야 함
    • 웹 서버 간의 트랜잭션 로그를 동기화하고 메모리 내 데이터베이스를 업데이트해야 함
    • 충돌 해결 알고리즘을 작성해야 함
    • 웹 서버를 테넌트별로 샤딩하고 로드 밸런싱 계층을 작성해야 함
  • MySQL이나 Postgres의 기본적인 측면을 배우지 않으려는 것은 시간 낭비임

    • 공용 클라우드 제공자에서 실행할 때 기본 튜닝으로 동시성 문제를 해결할 수 있음
    • 1천만 행을 추가하는 것은 큰 문제가 아님
    • 더 나쁜 상황이 올 때까지 기다렸다가 해결하는 것이 더 현명함
  • HashiCorp의 Nomad, Consul, Vault와 유사한 아키텍처임

    • 개발자 경험이 좋음
    • 메모리 내 상태를 원하는 대로 설정할 수 있음
    • 새로운 스타트업에는 적합하지 않음
    • 업그레이드가 특히 어려움
  • RAM이 매우 저렴하다는 오해가 있음

    • SSD와 vCPU 성능은 크게 향상되었지만 RAM 가격은 크게 떨어지지 않음
    • DRAM 가격은 주기적으로 변동하며, 최근에야 약간 저렴해짐
  • 파일 시스템 디렉토리를 테이블로, JSON 파일을 행으로 사용하는 프로젝트를 본 적이 있음

    • Redis, Mongo, Postgres를 고려했지만 자체 데이터베이스를 구축함
    • 혁신적인 토큰을 데이터베이스 구축에 사용하는 것은 비효율적임
  • 관계형 데이터베이스를 사용하는 것이 더 안정적임

    • 내장된 중복성, 트랜잭션 로그, 백업, 복구 기능이 있음
    • 대부분의 경우 데이터베이스를 사용하는 것이 좋음
  • 복잡한 것을 피하기 위해 자체 Raft 합의 계층을 구현함

    • Redis를 사용하는 것이 더 간단할 수 있음
  • 현대의 데스크탑 및 모바일 앱은 종종 SQLite와 같은 데이터베이스를 사용함

    • 관계형 데이터 저장 및 쿼리가 유용함
  • 자체 메모리 내 데이터베이스를 구축하는 것이 Postgres나 SQLite를 설치하는 것보다 간단하지 않음

    • 동시성 코드를 작성하는 것보다 SQL을 작성하는 것이 더 쉬움