Database(DB)
구조적으로 저장된 데이터 모음
DBMS
Database Management System
= 데이터베이스를 관리하는 시스템
- (ex. MySQL, 몽고DB, 마리아DB)
- 특징 : 데이터를 저장하는 방법에 따라 종류가 나뉜다!
- 종류 : 관계형, 비관계형
- 관계형
- 정의 : 데이터 간의 관계를 표현할 수 있는 데이터 저장방식, 가장 많이 사용되는 방식, MySQL, 마리아DB
- 특징 : 정규화 사용
- 예시 : 학교의 출석부
- 출석부에 적힌 정보
- 학생 이름, 학번, 학과, 출석여부
- 더 많은 정보를 확인하고 싶다면?
- 출석부에서 각 학생의 고유한 정보를 통해 학생 정보를 확인
- 여기서의 고유한 정보 → 학번
- 비관계형
- 정의 : 관계형이 아닌 모든 데이터베이스의 형태
- NoSQL이라고도 많이 부름
- SQL 사용을 X - 비관계형 / SQL언어- 관계형
- 예시 : 최근에 많이 사용됨
- ex. 몽고DB (가장 하위 데이터를 key-value 형태로 저장)
- Key-Value를 사용하는 자료구조 → HashMap (파이썬의 딕셔너리와 유사함)
- 선언 형태 :
val newHashMap = HashMap<String, String>()
- key : value
- 의미 : key 값의 type을 String, value 값의 type을 String으로 하는 HashMap을 생성
- 다른 Type을 넣어주려면 <String, String>부분을 원하는 type으로 수정
- ex. HashMap<String, Boolean>, HashMap<Int, String>
- 특징 : key 값을 기반으로 데이터를 삽입하고 가져올 수 있는 구조
- Key 값을 기준으로 Value를 삽입하는 방법 :
newHashMap[”에릭”] = “안드로이드” key-value : 에릭-안드로이드
- 새로운 항목을 넣는 방법 : 처음에 선언한 type에 맞춰야함
newHashMap[”에릭”]=1 → 에러
- 값을 가져오는 방법 : HashMap 변수와 key값을 써준다
val eric = newHashMap[”에릭”] //eric에 key 에릭에 해당하는 value인 안드로이드를 가져와 넣음
- 하나의 Key에 여러 값을 넣을 수 없다!!!
- 안드로이드에서의 데이터 저장 방법
- file
- SharedPreferenece (key-value)
- RoomDB (관계형 DB)
SharedPreferences
안드로이드에서 간단하게 값을 저장하고 불러오는 방법
- 값을 저장하는 형태 : key-value 형태로 값을 저장
- key는 String type을 사용
- value는 기본적인 자료구조만 가능
- Boolean, Long, String, Int, Double, Set
- 직접 만든 객체는 안됨
- 하나의 Key에 다중 값을 담을 순 없을까?
- 기본적인 자료구조만 가능하기 떄문에 하나의 Key에 다중 값을 저장하기는 어렵다!
- set 자료형으로 저장 → 순서가 구분되지 않음
- String에 구분자로 저장 → 구분자가 값에 들어가면(값의 일부가 되면) 문제가 됨
- String으로 여러 데이터를 표현하는 데이터 포맷인 JSON 사용
- key-value 형태로 해석 가능한 문자열 기반 포맷
- ex. {”name”: “에릭”, “age”:23}
- 외부 라이브러리를 사용하여 변환 가능 ex. GSON(구글에서 만듦)
- 네트워크 통신에서 값을 주고 받는데도 자주 사용됨
RoomDB
데이터베이스를 서버 대신 파일 형태로 저장하는 SQLite 기반
- 값을 저장하는 형태 : 관계형 데이터베이스 구조
- SQL문 사용
- 자주 사용되는 insert, delete는 SQL문 작성 없이 가능
데이터베이스의 특징
1. 실시간 접근성(Real-Time Accessibility)
수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 한다.
2. 계속적인 변화(Continuous Evolution)
데이터베이스의 상태는 동적이다. 즉 새로운 데이터의 삽입(Insert),삭제(Delete),갱신(Update)로 항상 최신의 데이터를 유지한다.
3. 동시공용(Concurrent Sharing)
데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
4. 내용에 의한 참조(Content Reference)
데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.
SQL
구조화된 질의 언어 ← 관계형 데이터베이스에서 사용함!
- DDL(Data Definition Language) : 데이터 정의 언어
- DML(Data Manipulation Language) : 데이터 조작 언어
- DCL(Data Control Language) : 데이터 제어 언어