SQLite와의 First Contact
(brandur.org)- 며칠간 SQLite를 만져보고 알게된 몇가지 놀라운 단점들
ALTER COLUMN은 지원되지 않음. 컬럼을 변경하기 위한 공식적인 권장 사항 "새 테이블 생성"DROP CONSTRAINT는 지원되지 않음. 제약 조건을 제거하기 위한 공식적인 권장 사항 "새 테이블 생성"- SQLite는 컬럼에 데이터 유형이 없음. 데이터 유형(5가지만 있음)은 값에만 있으므로 어디에나 모든 것이 들어갈 수 있음
- 지원되지 않거나 존재하지 않는 유형의 열을 요청하면 경고나 오류 없이 잘못된 작업을 수행함.
CREATE TABLE my_table (id bigserial, messages jsonb[])와 같은 스키마를 올리는 것이 작동하는 것처럼 보여서 처음 하루 동안 SQLite가 serial과 배열을 지원한다고 잘못 생각함 CREATE TABLE my_table (...) STRICT를 사용하여 지원되는 5가지 유형인integer,real,text,blob,any중 하나만 허용할 수 있음- SQLite의 새로운
jsonb지원에 대해 최근 많은 관심이 있었음. Postgres와 달리jsonb는 실제로 데이터 유형이 아니라 내장jsonb*함수에 입출력되는 형식임. 영구 저장될 때는 5대 기본 유형 중 하나인blob임 timestamptz와 같은 다른 매우 중요한 유형도 누락되어 있음. 날짜/시간을 원하면 Unix 타임스탬프integer또는 ISO8601 형식의string으로 저장하고 이러한 작업을 위한 여러 내장 함수가 제공됨- SQLite에는 스트리밍과 관련된 인상적인 기능이 있어 사용해 보고 싶지만, 초기 DX 경험은 확실히 조금 불편했음
- 어떤 이야기에 너무 강하게 사로잡혀 있는지 궁금할 때가 있음. 예를 들어, Postgres가 정말 세계 최고의 데이터베이스인가? 이러한 경험은 확실히 나의 확신을 굳혀줌. Yes, Postgres가 최고야
GeekNews Weekly에 포함된 글입니다.
에디터 코멘트 보기
댓글과 토론
왜 SQLite를 Postgres처럼 쓰려고 한걸까요?
마치 리눅스를 처음 써본사람이 “한컴오피스도 잘 안돼고 내가 하는 게임도 안 돌아가요. 역시 운영체제는 윈도우야!” 라고 하는 느낌이에요.
해커뉴스에 올라오는 sqlite 뜬소문(hype)이 과한거 아닐까요? sqlite가 별도로 운영하는 RDBMS를 대체할수 있다는 주장이 2022년부터 해커뉴스에 많이 올라왔습니다.
1: https://news.ycombinator.com/item?id=31318708
2. https://news.ycombinator.com/item?id=31152490
3. https://news.ycombinator.com/item?id=34812527
4. https://news.ycombinator.com/item?id=36208568
그외: https://hn.algolia.com/?dateEnd=1720854657&dateRange=custom&da…
Postgres나 MySQL 등의 데이터베이스 제품군을 사용하기가 오버킬이라고 느껴지는 경우에는 SQLite가 충분히 매력적인 대안이 될 수 있다고 생각합니다.
예를 들어 작은 서비스의 경우에 매니지드 DB의 비용이 배보다 배꼽이 큰 경우로 작용하고, 직접 운용하기에는 또 부담이 있죠.
반면 SQLite의 경우 어느정도 규모까지는 성능상에 부족함이 없다고 하고 특히 Litestream과 같은 도구를 사용하면 운용에 부담도 거의 없어서 장점이 있는 것 같아요.