SQL과 NoSQL
- SQL
DB에 저장할 데이터의 규격을 미리 설정 가능, 규격 외의 데이터 등록에 대한 처리 가능
관계형으로 데이터를 설계 하기에, 데이터 접근이 용이함
But, 데이터 양이 늘어남에 따른 처리 속도 저하 문제, 데이터의 일관성을 중요시 하기에 분산처리가 곤란하고 XML이나 JSON 등의 비구조화된 데이터 처리가 어렵다 - NoSQL
대용량 처리 및 다양한 형태의 데이터 처리 가능, 분산 처리 가능
But, 일관성이나 정합성을 유지하는 기능이 약하고 트랜젝션을 지원하지 않는 경우가 많음
NoSQL의 종류
- 키-벨류형 : 키(key)-벨류(value) 두 개의 데이터를 한 쌍으로 묶는 형태
간단한 구조이기에 속도가 빠르며 정보를 분산시키기도 편리하다 - 컬럼 지향형 : 키-벨류형의 확장형으로서, 키-벨류로 이루어진 하나의 행 안에 다시 여러 개의 키-벨류 세트가 포함된 형태. 행-열 구조이므로 관계형과 비슷하지만 열에 해당하는 key-value를 유동적으로 관리할 수 있음
- Document 지향형 : JSON이나 XML 형태의 데이터 저장 가능. MongoDB가 대표적
받은 Document 데이터를 그 상태 그대로 저장할 수 있기에 Document의 내용이나 구조가 바뀐 경우에도 DB구조에는 영향을 미치지 않는다 - 그래프형 : 관계성을 표현하기에 적합한 형태. 관심사 추천 시스템이나 경로탐색에 사용될 수 있음
트랜잭션(Transaction)
- 개 념 : 여러 데이터를 연속적으로 처리해야 할 때, 이를 하나로 묶어 실행토록 하는 것
같은 맥락에서 이루어지는 여러 데이터 처리를 묶어서 처리함으로서 도중에 처리가 중단됨으로서 발생할 수 있는 부정합을 방지함 - 특 징
원자성 : 트랜잭션에 포함된 여러 처리는 '모두 실행' 혹은 '모두 실행하지 않음' 중 하나에만 해당한다
일관성 : 미리 설정된 조건을 충족하여 정합성을 보증한다
독립성 : 처리 도중의 결과는 은폐되고 외부에서는 결과만을 볼 수 있다. 각 처리는 독립적이다
영속성 : 트랜잭션이 완료되면 그 결과가 손실되지 않는다 - 커 밋 : 트랜잭션에 포함된 처리를 성공했을 때 그 결과를 DB에 반영하는 것
트랜잭션 도중에는 DB에 결과가 반영되지 않으며, 마지막으로 커밋을 할 때 DB에 변경내용이 반영된다 - 롤 백 : 트랜잭션 처리 중 문제가 생겼을 때 시작점으로 되돌리는 것
커밋 전까지는 실제로 DB에 결과가 반영되지 않으므로 DB상의 변화는 없다 - 데드락 : 트랜잭션 중 여러 명령이 동시에 같은 데이터를 조작하게 되어 진행이 멈추는 것
트랜잭션 순서를 조정하거나 각 액션의 시간을 단축하여 중첩을 방지하는 대책 필요
엔티티(Entity)
- 저장해야 할 데이터를 식별할 때, 저장 대상이 되는 실체를 엔티티(Entity),
- 엔티티가 가지는 성질(DB에 저장할 내용)을 속성이라함
- RDBMS에서 엔티티는 또다른 엔티티와 관계를 맺는 경우가 많으며, 이를 릴레이션십(Relationship)이라한다
- ER다이어그램은 엔티티와 릴레이션십을 그림으로 나타낸 것
시스템 전체적인 로직이나 구조를 파악할 수 있음
개념모델 - 논리모델 - 물리모델의 3개 층으로 나누어 구성
정규화
- 개념 : DB안의 데이터를 정리하는 순서. 데이터의 중복을 줄이고 관리의 편의성 증대
- 제 1정규형 : 데이터 안에서 반복적으로 나오는 항목을 분리
- 제 2정규형 : 어떤 칼럼이 다른 칼럼에 대해 종속성을 갖는 경우 다른 테이블로 분리
- 제 3정규형 : 제 2정규형에서 다시 종속성을 갖는 테이블을 분리한 것
그 외
- 스케일 업(scale up) : 시스템의 업그레이드를 통해 처리 능력 향상
- 스케일 아웃(scale out) : 기기의 대수를 늘려서 분산처리 함으로서 성능 향상
리플리케이션 : 스케일 아웃의 한 방법으로서 DB를 복제하여 원본이 되는 DB와 복제된 DB로 구분하고, 액션에 따라 사용되는 DB를 다르게 하는 방법 - SQL 인젝션 : 사용자 입력으로 직접 SQL문이 구성되는 경우 발생할 수 있는 데이터 조작
→ 사용자 입력이 직접 SQL문으로 구성되지 않도록 변환(이스케이프 문자 등) - ORM, OR매핑 등 : 프로그래밍언어를 통해 DB 작업을 하는 경우, 해당 프로그래밍 언어의 형식을 빌려 DB를 취급하기 위한 구조(JPA, Mybatis, sequilize 등)
'ETC > Book' 카테고리의 다른 글
[Book] 면접을 위한 CS 전공지식 노트 (0) | 2023.03.20 |
---|---|
[Book] 개발자의 글쓰기 _김철수著 (2) | 2023.01.08 |