데이터베이스를 이용하는 방식에는 여러 방법이 있다.
SQLite, Room, MySQL, Postgresql, MongoDB ....
이 중에서, 서버 기반으로 이루어진 데이터베이스가 있고 그렇지 않은 데이터베이스들이 있다.
SQLite, Room 같은 데이터베이스는, 어플리케이션 내부적으로 이용하는 데이터베이스이다.
이게 무슨 말이냐면, 한마디로 fopen 같은 파일 입출력인데 쿼리를 사용한다는 것이다.
SQLite가 경쟁하는 것은 MySQL같은 서버형 기반 데이터베이스가 아니라, fopen이다.
SQLite는 Concurrency에 제한적이다. 파일입출력이다보니, 동시성 이용에 제한이 있고
파일을 쓸 때는 항상 lock이 걸려있다. 그렇기에 동시에 이용하는 것이 불가능하다. 따라서 속도도 느리며, 확장성도 매우 좋지 않다.
그렇기 때문에 SQLite를 이용하기에 적합한 유형은, 앱 어플리케이션 내부나 데스크탑 어플리케이션 내부 등
동시 사용자가 1명인, 임베디드 앱에 적합하다.
앱 어플리케이션 내부적으로, 데이터를 다룰 일이 생기거나, 데스크탑 앱 내에서 데이터를 다룰 일이 생길 때 SQLite나 Room같은 것을 사용하면 된다.
웹서버를 구축한 뒤 웹서버 내에서 SQLite를 이용하는 것은 매우 추천하지 않는다.
MySQL같은 서버 기반의 데이터베이스를 사용해야한다.
특히나 파이썬 기반의 웹서버는 멀티쓰레딩 구현이 복잡한 만큼, SQLite를 사용하면 동시 접근이 매우 제한적인 웹서버가 될 수가 있으니 주의해야한다.
참고
'[클라이언트] > [Android Kotlin]' 카테고리의 다른 글
새 책을 구매했다. 그리고 그간 샀던 책들을 모아봤다. (0) | 2023.01.09 |
---|---|
코틀린 심화문법 (1) | 2023.01.03 |
Kotlin 기본문법 정리 (1) | 2022.12.04 |
An exception has occurred in the compiler (1.8.0_242-release). (0) | 2022.11.30 |
Primary key VS Unique key (0) | 2022.11.23 |