나무는tree
2021. 1. 2. 14:52
2021. 1. 2. 14:52
iOS Local DB 비교
Why?
- iOS 프로젝트를 진행함에 있어서 서버 유지 비용이 많이 듬 -> 즉, 서버를 지속적으로 유지하기가 힘듬
- 최대한 Local DB를 이용해서 비용을 줄이고 최대한 iOS 프레임워크를 잘 사용한 서비스를 구현하자!!
1. SQLite
- 가장 많이 사용되는 오픈소스 기반의 DB
- SQL 구현 가능
- 가장 널리 사용되어 있어, 참고 자료가 많다.
특징
- 서버로부터의 독립성
- 설정이 쉬움
- 여러 프로세스/쓰레드에서도 안전하게 접근 가능 -> 이후에 Realm
- Write 트랙잭션 시에, Lock의 단위가 Table이 아닌 DB자체에 Lock을 건다
- Date Time 과 같은 Field가 존재하지 않음.
(날짜 단위로 저장 시는 문자열로 잘 파싱하면 문제 없겠지만, 시간 단위까지 내려간다면 신경 쓸게 많아서 번거로울 것 같다.)
자세히
- API는 라이브러리를 호출하는 것만 있으며, 데이터를 저장하는 데에 하나의 파일만을 사용한다.
2. Core Data
특징
- 상대적으로 많은 저장공간, 메모리 사용
- 속도가 빠르다
- In- Memory 방식
- 메모리에 로딩된 객체들에 대해서만 수정이 가능하다.
- Thread-Safe하지 않음
3. Realm
- 최근 널리, 많이 유행하고 사용되고 있는 DB
- 객체 중심의 DB
- Android에서도 많이 사용됨
- ORM 이 아니다 -> BackGround에서 적용되는 SQL 쿼리를 실행하지 않는다.(반대로 ORM은 간단한 업무도 상대적으로 많은 쿼리문을 실행한다는 말)
- 따라서 Realm이 다른 DB보다 빠른 것인가?
특징
- 속도가 빠르다
- 무료
- iOS/Android 플랫폼 간에 DB File 공유 가능
- Realm Studio가 있어서 DB 자체를 쉽게 확인 가능.
- Main Thread를 이용하고 있다
(이전에 하나의 프로젝트를 진행하면서 Dispatch Queue 관리를 잘 못했을 때, 항상 에러가 나서 애를 먹었다...)
- 쿼리가 많지 않음
4. UserDefault
- Android에서의 SharedPreference와 비슷하다.
- 간단하게 Toggle을 위한 변수, 온보딩 유무 체크 등을 확인하기 위해 사용하면 좋을 듯
이어서 다음 포스팅에는 ORM을 알아보자!!!!