1. 트랜잭션이란?
데이터베이스의 상태를 변화(SELECT, INSERT, DELETE, UPDATE)시키는 하나의 논리적인 작업 단위이다.
하나의 트랜잭션 안에서 여러 개의 연산이 수행될 수도 있다.
또한, 트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공이라고 할 수 있다.
2. ACID 란 무엇인가?
동시성 프로그램 또는 그러한 프로그램에서 데이터에 대한 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 특징이다.
그 특징 네 개를 일컫는 게 ACID 이다. [Atomicity, Consistency, Isolation, Durability]
- Atomicity : 트랜잭션의 연산은 모든 연산이 완벽히 수행되어야 하며, 한 연산이라도 실패하면 트랜잭션이 실패해야 한다.
- Consistency : 트랜잭션이 성공했다면, 데이터베이스는 그 일관성을 유지해야 한다. 다시 말하면, 숫자 칼럼에 문자열 값을 저장이 안되도록 보장핸다는 말이다.
- Isolation : A와 B 두 개의 트랜젝션이 실행되는 경우, 서로 다른 트랜잭션에 의해 영향을 받지 않고 독립적으로 실행되어야 한다.
- Durability : 트랜잭션이 커밋된 이후에는 시스템 오류가 발생하더라도 커밋된 상태로 유지되는 것을 보장해야 한다.
3. 스키마란?
스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다.
또한 데이터베이스를 구성하는 Entity, Attribute, Relationship 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다. 스키마 종류는 개념,내부,외부가 있다.
4. RDBMS, NOSQL 이란?
RDBMS 란? (관계형 데이터베이스)
데이터베이스를 이루는 객체들의 릴레이션을 통해서 데이터를 저장하는 데이터베이스이다. 다시말하면 모든 데이터를 2차원 테이블 형태로 표현한다.
- RDBMS 장점 : 스키마에 맞춰 데이터를 관리하기 때문에 데이터의 정합성을 보장할 수 있다.
- RDBMS 단점 : 시스템이 커질수록 쿼리가 복잡해지며, 성능 저하 됨. (Scale-up만 가능, 즉 Scale-out 은 어렵다)
💡 알고가기!
Scale-up 은 서버 그 자체를 증강하는 것에 의해서 처리 능력을 향상 시키는 것
Scale-out 은 접속된 서버의 대수를 늘려 처리 능력을 향상 시키는 것
NOSQL 이란? (비관계형 데이터베이스)
RDBMS 와 반대로 데이터 간의 관계를 정의하지 않고, 스키마가 없어 좀 더 자유롭게 데이터를 관리할 수 있으며 컬렉션형태로 데이터를 관리한다.
- NOSQL 장점1 : 스키마 없이 Key-Value 형태로 데이터를 관리해 자유롭게 데이터를 관리할 수 있다.
- NOSQL 장점2 : 데이터 분산이 용이하여 성능 향상을 위한 Scale-up 뿐만 아니라, Scale-out 또한 가능하다.
- NOSQL 단점1 : 데이터 중복이 발생할 수 있고, 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수행해야 한다. (잦은 update)
- NOSQL 단점2 : 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않아(정합성x) 데이터 구조 결정이 어려울 수 있다.
5. RDBMS VS NOSQL
RDBMS 는 데이터 구조가 명확하고, 변경될 여지가 없으며 스키마가 중요한 경우 사용하는 것이 좋다.
또한 중복된 데이터가 없어(정합성) 변경에 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합하다.
NOSQL 은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장 될 수 있는 경우 사용하는 것이 좋다.
또한 데이터 중복이 발생할 수 있으므로 중복된 데이터가 변경될 시, 모든 컬렉션에서 수정해야 하기 때문에 update 가 많이 이루어지지 않는 시스템에 좋다.
6. 인덱스(Index) 란?
추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상 시키기 위한 자료구조이다.
예를 들면, 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아 보는 것은 시간이 오래걸린다. 그렇기 때문에 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 index 는 책의 색인과 같다. (책 - 색인 : 데이터베이스 - 인덱스)
'Android Q&A > Android One a day' 카테고리의 다른 글
[안드로이드 면접] - 5: (0) | 2023.01.28 |
---|---|
[안드로이드 면접] - 4 : (0) | 2023.01.27 |
[안드로이드 면접] - 2 : (0) | 2023.01.25 |
[안드로이드 면접] - 1 (0) | 2023.01.24 |
[안드로이드 면접준비] - 0 : 하루에 하나 (0) | 2023.01.21 |