CoreData를 공부해야 하는데 database에 관한 지식이 1도 없어서 공부해 보았다.
💾 DataBase 란?
dataBase는 말 그대로 데이터를 저장하는 저장소이다.
💾 DBMS 란?
DBMS(Database Management System) 로 데이터 베이스를 관리하는 시스템을 의미한다.
엑셀파일이 데이터베이스 라면 엑셀 자체는 DBMS 가 되는 그런 개념이다.
일반적으로 dataBase 라고 말하는 것이 사실은 DBMN 까지 통칭해서 이야기 하는 것 같다.
💾 DataBase의 특징
- 사용자의 질의에 대하여 실시간으로 처리와 응답이 이루어진다.
- 생성, 수정, 삭제를 통하여 항상 최신의 데이터를 유지한다.
- 사용자들이 원하는 데이터를 동시에 공유할 수 있다.
- 사용자가 원하는 데이터를 주소가 아닌 내용으로 참조할 수 있다.
💾 DBMS 의 종류
- 계층형(Hierarchical)
- 망형(Network)
- 관계형(Relational)
- 객체지향형(Object-Oriented)
- 객체관계형(Object-Relational)
등의 종류 들이 있다.
이중에서 관계형(Relational) 을 가장 보편적으로 사용한다!
(다른건 잘 안쓰는 모양임.)
💾 RDBMS (관계형 데이터 베이스 관리 시스템)
그래서 관계형 데이터 베이스를 어떻게 나타내느냐,
표로 나타낸다! 테이블이라는 용어를 쓴다.
고객의 데이터를 저장한다고 하면 이런 식의 데이블을 만들어서 정보를 저장하는 것이다.
아이디 | 이름 | 생일 |
---|---|---|
lemon | 이레몬 | 01.01 |
mango | 박망고 | 02.02 |
(사실 클래스에 프로퍼티만들어서 관리하는 것과 굉장히 비슷하다고 생각이 되었다.)
💾 SQL(Structured Query Language)
SQL 뭔가 어디선가 들어봤다.
Structured Query Language 라는 언어로 데이터 베이스를 관리 할 때 주로 사용하는 언어라고 한다.
MySQL, Oracle, SQLite, PostgreSQL 등 다양한 DBNS 에서 사용한다.
내가 눈여겨 봐야 할 것은 SQLite 인 것 같다.
오픈소스이고 무료로 주로 모바일에 사용된다고 한다.
실제로 애플이 만든 CoreData frameWork 도 SQLite 를 사용하고 있다!
💾 Persistence 영속성이란?
사전에 Persistence을 처보았다.
persistence
: 영속, 고집, (없어지지 않고 오랜동안) 지속됨
뭔 소린가....
persistence 는 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.
영구 저장소라는 뜻 같다.
ephemeral은 반대말로 짧게 지속되는 이라는 뜻이다.
💾 트랜잭션 ACID 특징
transaction 그러니까 데이터가 상호작용할 때 일어나야 하는 특징들 ACID 로 줄여서 나타낸다.
- 원자성(Atomicity)
- 일관성(Consistency)
- 고립성(Isolation)
- 영구성(Durability)
🤹♀️ Atomicity (원자성)
한 트랜잭션의 연산들이 모두 성공하거나, 반대로 전부 실패되는 성질
예시
은행에서 돈을 송금한다면
보낸사람 - 천원
받은사람 + 천원
이 같이 처리되거나 같이 처리 되지 않아야 한다.
🤹♀️ Consistency (일관성)
하나의 트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야 하는 성질
예시
통장의 돈이 0 보다 내려갈 수 없다.
는 조건이 있으면
송금이 이루어진 이후에도 돈이 0 아래로 내려가면 안된다.
🤹♀️ Isolation (고립성)
한 트랜잭션이 실행하는 동안의 중간결과를 다른 트랜잭션이 접근할 수 없다.
예시
은행에서 송금 출금 업무 중간에 다른 업무를 할 수 없다.
하나씩 하나씩 순서대로 처리 해야 한다.
🤹♀️ Durability (영속성, 지속성)
완료(commit) 된 트랜잭션은 데이터베이스에 영구적으로 보존되어야 한다.
Persistence (영속성) 과 비슷한 개념이다.
예시
데이터 저장 완료 후에 컴퓨터가 꺼진다면
데이터는 이미 저장되었으므로 보존 된다.저장 완료 전에 컴퓨터가 꺼진다면
트랜잭션 수행하기 전으로 돌아간다.