본문 바로가기

대외활동/UMC

[UMC 2기] Android 파트 7주차 정리

복습 및 정리

DataBase

데이터를 어딘가에 쌓아 두고 보관하며 필요할 때마다 추가하거나 조회, 수정, 삭제할 수 있는 장소

SharedPreference는 DB인가?

SharedPreference는 key-value 형태로 데이터를 저장할 수 있는 데이터 구조이고 내부적으로는 xml 파일로 저장한다. → DB가 아니다.

모든 데이터를 SharedPreference에 넣어도 될까?

파일로 저장하기 때문에 보안상 좋지 않고, 메모리상으로도 좋지 않음.

서버 제공 데이터베이스 vs 앱 내부 데이터베이스

서버제공 데이터베이스

- 네트워크 통신, 와이파이, 데이터가 없으면 접근 불가

- 비교적 시간이 오래 걸림

 

앱 내부 데이터베이스

- 네트워크 연결이 안되어 있을 때도 데이터를 보여줄 수 있다.

- 데이터 로딩 시간이 매우 빠름!

ex) 데이터 캐싱 처리

    - 로컬 데이터에 접근하기 때문에 서버에 비해 매우 빠르다

    - 기기가 온라인 상태가 되었을 때 사용자가 시작한 컨텐츠 변경사항이 서버에 동기화된다.

    - Android에서 이런 것들을 자동으로 해주는 것이 바로 RoomDB

DBMS의 종류(rdbms, nosql)

RDBMS : 관계형 데이터베이스 관리 시스템 ex) Oracle, MySQL, MS-SQL, Maria DB, SQLite

NoSQL : RDBMS가 아닌 것들

  1. key-value 형식 ex) Redis, Oracle Berkely, AWS DynamoDB
  2. Document 형식 ex) mongoDB, Azure Cosmos DB
  3. wide column 형식 ex) Cassandra, Druid, Google BigTable
  4. graph 형식 ex) Neo4j, Blazegraph

SQL 쿼리문법

(SQLite 문법)

SELECT - 데이터 조회

ex) SELECT * FROM Table WHERE();

 

INSERT - 데이터 추가

ex) INSERT INTO Table VALUES ();

 

UPDATE - 데이터 변경

ex) UPDATE Table SET () WHERE ();

 

DELETE - 데이터 삭제

ex) DELETE FROM Table WHERE ();

 

RoomDB

Android에서 SQLite라는 DBMS를 제공해준다. 그러나 이것을 직접 구현하기에는 복잡한 면이 있어 Room DB 라이브러리를 사용하는 것을 추천한다.

RoomDB는 데이터 캐싱 처리를 자동화해서 앱 내부 데이터베이스를 사용하고 구축하는 데 도움을 주는 라이브러리이다.

Room 지속성 라이브러리는 SQLite를 완벽히 활용하면서 원활한 데이터베이스 액세스가 가능하도록 SQLite에 추상화 계층을 제공한다.

Room의 3가지 주요 구성요소

  • 데이터베이스 클래스: 데이터베이스를 보유하고 앱의 영구 데이터와의 기본 연결을 위한 기본 액세스 포인트 역할을 한다.
  • 데이터 항목: 앱 데이터베이스의 테이블을 나타낸다.
  • 데이터 액세스 객체(DAO): 앱이 데이터베이스의 데이터를 쿼리, 업데이트, 삽입, 삭제하는 데 사용할 수 있는 메서드를 제공한다.

 

참조

https://developer.android.com/training/data-storage/room

https://velog.io/@swhan9404/NoSQL-%EC%9D%98-%EC%A2%85%EB%A5%98%EB%B3%84-%ED%8A%B9%EC%A7%95