Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- TypeScript
- 채팅
- 튜플
- socket io
- 카톡
- NeXT
- RDS
- Class
- wetube
- MongoDB
- AWS
- docker
- react
- Props
- git
- crud
- SAA
- Vue
- lambda
- merge
- S3
- async
- 중급파이썬
- node
- flask
- dict
- 파이썬
- SSA
- pandas
- EC2
Archives
- Today
- Total
초보 개발자
SQLite의 장점, 한계, 한계 극복점 본문
노마드 코더의 SQL마스터 과정에서 SQLite를 배운다.
SQLite에 대한 영상의 내용을 간단히 정리해보았다.
https://youtu.be/ax-Q1iedXJA?si=qGyALsh1WuVChORA
SQLite의 장점
- 작고 간편함
- 임베디드 데이터베이스로, 데이터베이스 서버를 따로 운영할 필요 없이 애플리케이션에 내장하여 사용할 수 있습니다.
- 데이터베이스는 단일 디스크 파일로 관리되며, 이를 사용하기 위한 라이브러리는 750KB에 불과해 매우 가볍고 효율적입니다.
- 속도 (빠름)
- 별도의 서버를 두지 않고 파일 형태로 데이터를 관리하므로, 네트워크 지연 시간이나 서버 응답 대기 없이 빠른 속도로 읽기/쓰기가 가능합니다.
- 특히 RDS나 클라우드 기반 데이터베이스에 비해 빠르며, 서버와의 연결 대기 시간이 없으므로 더 빠른 데이터 액세스가 가능합니다.
- 신뢰성
- 오픈소스지만, 코드 오염 위험이 적고 안정성이 뛰어납니다.
SQLite의 한계
- 동시성 문제
- 이전 버전에서는 동시 쓰기에 문제가 있었다. 쓰기가 들어오면 다른 쓰기에 Lock이 걸리기 때문이다. 따라서 동시에 많은 요청이 들어오는 경우 성능 문제가 발생할 수 있었습니다.
- 확장성 및 중앙 집중화 부족
- SQLite는 중앙 집중화된 서버 아키텍처가 아니므로, 여러 서버에서 동일한 데이터베이스를 공유하는 데 어려움이 있습니다. 이는 여러 서버가 동일한 데이터베이스 파일을 동시에 접근하는 구조에서 문제가 될 수 있습니다.
- 데이터베이스 크기 제한
- SQLite는 최대 데이터베이스 크기가 281TB로 제한되어 있으며, 이 이상의 데이터가 쌓이면 문제가 발생할 수 있습니다.
SQLite 한계 극복 방법
- 동시성 문제 해결
- 최근 동시 읽기 및 쓰기를 지원하기 시작했으므로, 기존보다 더 나은 성능을 제공합니다.
- 그러나 밀리초 수준의 동시 쓰기가 매우 많은 시스템에서는 여전히 SQLite의 성능이 한계에 도달할 수 있습니다.
- 확장성 및 중앙 집중화 문제 해결
- 서버리스 아키텍처를 채택하거나, Turso 및 Cloudflare D1과 같은 플랫폼을 활용하면 여러 서버에서 SQLite 파일을 안전하게 공유할 수 있습니다. 이는 네트워크 상에서 SQLite 파일을 공유하고, 동시에 여러 인스턴스에서 접근할 수 있도록 해 줍니다.
- 대규모 데이터베이스 크기 처리
- 281TB는 대부분의 경우 너무 크기 때문에 일반적인 사용에서는 문제가 되지 않습니다. 그러나 데이터 크기가 계속해서 증가할 경우, SQLite보다 더 강력한 MySQL이나 PostgreSQL로 이전하는 것이 더 나은 선택일 수 있습니다.
- 데이터 아카이빙 또는 샤딩을 통해 데이터의 크기를 분산시키는 방법도 고려할 수 있습니다.