- 🌟 DataBase
: 데이터를 쌓아두고 보관하며 필요할 때마다 추가하거나 조회, 수정, 삭제할 수 있는 장소- 🌟 SharedPrefernece
: Key-Value 형태로 데이터를 저장하는 데이터 구조, 내부적으로는 XML 파일로 저장❓ SharedPrefernece는 DB인가 = No
= DB에 데이터를 저장한다기보다는 파일에 데이터를 저장하고, 그 파일에 접근해서 데이터를 얻어옴
모든 데이터를 SharedPreference에 넣어도 되는가 = No
= 파일에 데이터를 저장하면, 보안상 취약, 앱 메모리상 손해 발생(너무 많은 데이터를 SharedPreference에 저장하면 메모리 예외가 발생할 수 O)▶️ 간단한 정보 저장 시 SharedPreference 사용, 클래스나 보안에 필요한 데이터는 DB 사용해서 저장
🌟 서버 제공 데이터베이스
- 네트워크 통신, 와이파이, 데이터가 없으면 접근 불가
- 비교적 시간이 오래 걸림
🌟 앱 내부 데이터베이스
네트워크 연결 X여도 데이터 보여줄 수 O
데이터 로딩 시간이 매우 빠름
ex) 데이터 캐싱 처리
- 네트워크 연결 X여도 데이터를 보여줄 수 O
- 로컬 데이터에 접근하기 때문에 서버에 비해 매우 빠름
- 기기가 온라인 상태가 됐을 때 사용자가 시작한 콘텐츠 변경사항이 서버에 동기화됨
▶️ 이런 것들을 자동으로 해주는 것이 RoomDB
SQLite
- RDBMS → 관계형 데이터베이스 관리 시스템
- 매우 복잡함
- 소규모 데이터를 관리하고 사용하는 데 적합
▶️ 공식 문서에서도 RoomDB 사용 적극 권장

: 데이터베이스에 만들어줄 테이블을 뜻함
개체 → 객체는 정보뿐 아니라 동작, 기능 등을 포함하지만 정보만 가지고 있음

: 데이터에 접근할 수 있는 메소드를 정의해놓은 인터페이스

: 버전관리, 테이블 저장, DAO의 작업을 구체화하는 작업

: 관계형 데이터베이스 관리 시스템
: RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술
RDBMS, NoSQL 언제 사용하는가❓
= RDBMS는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋다. 또한 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합하다.
= NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋다. 또한 단점에서도 명확하듯이 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 한다. 이러한 특징들을 기반으로 Update가 많이 이루어지지 않는 시스템이 좋으며 또한 Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 해서 Database를 Scale-Out를 해야 되는 시스템에 적합하다.
SQL (Strucured Query Language): 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
문법 작성 순서
쿼리문
✔️ 참고 사이트
NoSQL이란 무엇인가? 개념, 특징과 장점
[Database] RDBMS와 NoSQL의 차이점
데이터베이스 기초 Query 문법