728x90

Computer Science/데이터베이스 7

[데이터베이스] 비 관계형 데이터베이스 (NoSQL)

CAP (Consistency, Availability, Partition Tolerance) 이론 1) 일관성(Consistency) 다중 클라이언트에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증하는 것. NoSQL을 사용하는 경우 느슨한 스키마로 인해 일관성이 느슨하게 처리되어 동일한 데이터가 나타나지 않을 수 있음. 느슨하게 처리된다는 것 = 데이터의 변경을 시간의 흐름에 따라 여러 노드에 전파하는 것 NoSQL이 분산 노드 간의 데이터 동기화를 위해 사용하는 방법들 - 동기식 방법: 클라이언트에 응답하기 전 모든 노드에 데이터를 저장. 응답시간 느림 but 데이터의 정합성 보장 - 비동기식 방법: 메모리나 임시파일에 기록하고 클라이언트에 먼저 응답한 다음 특정 이벤트 또는 프로세스..

[데이터베이스] 관계형 DB와 비관계형 DB

관계형 데이터 베이스 - 데이터는 엄격한 데이터 스키마에 따라 데이터베이스 테이블에 저장됨. - 데이터는 관계를 통해서 연결된 여러 테이블에 분산 됨. 엄격한 스키마 데이터는 테이블에 저장되며, 각 테이블은 명확하게 정의된 구조가 있어 그를 준수하지 않는 데이터는 추가될 수 없다. 장점 - 데이터의 무결성 보장 - 데이터의 중복 최소화 - 데이터 베이스 추가 전 유효성 검사를 통해 품질 향상 가능. - VIEW를 통한 보안 설정으로 허가된 사용자들만이 데이터에 접근하게 할 수 있음. 단점 - 관계를 맺고 있어 JOIN문이 많은 복잡한 쿼리문이 생길 수 있음. - JOIN이 많은 복잡한 쿼리문이 생성된 경우 수정이 매우 번거로움. - 수평적 확장이 어렵고 수직적 확장만 주로 가능해 데이터 처리량 성장에 한..

[데이터베이스] Statement vs PreparedStatement

Statement와 PreparedStatement의 가장 큰 차이점은 캐시의 사용 여부이다. SQL의 실행 단계 1) 쿼리문 분석 2) 컴파일 3) 실행 Statement Statement의 경우 쿼리문 수행시 위의 1)~3)의 과정을 모두 거치게 된다. 따라서 매 쿼리문을 수행할 때 마다 컴파일을 해줘야하기 때문에 실행 시간이 증가하게 된다. Prepared Statement Prepared statement의 경우 컴파일이 이미 되어 있어 statement에 비해 실행시간이 적게 걸린다. 이러한 이점으로 인해 쿼리 반복 작업을 수행하는 경우 이를 사용하는것이 좋다. 또한 SQL injection 공격등의 문제를 보완해준다. CS 면접 대비를 위해 아래 깃허브를 기반으로 작성 되었습니다. github..

[데이터베이스] 트랜잭션 (Transaction)

트랜잭션이란? 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산. 작업의 완전성을 보장한다. 하나의 논리적인 기능을 수행하는 작업의 단위로 논리적인 작업 셋을 모두 완벽하게 처리하지 못할 경우에는 원래 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능. 트랜잭션과 Lock Lock은 동시성을 제어하기 위한 개념이고 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. Lock은 여러 커넥션이 동시에 동일한 자원을 요청할 때 순서대로 한 시점에 하나의 커넥션만 변경하게 해준다. 트랜잭션의 경우 하나의 논리적인 작업셋 중 몇개의 쿼리가 있던 상관없이 논리적인 작업셋 자체에 100% 적용되거나 아무것도 적용..

[데이터베이스] 정규화

정규화가 등장하게 된 배경 하나의 릴레이션에서 여러 엔티티의 attribute를 혼합하면 데이터의 중복이 일어나 저장 공간이 낭비된다. 또한 이러한 중복으로 인해 하나의 릴레이션에서만 변경되고 다른 릴레이션들에선 변경되지않는 데이터의 불일치 문제도 일어나 어느것이 정확한지 알 수 없게 된다. 이러한 문제의 해결을 위해 정규화 과정을 거치는 것. 갱신 이상 삽입 이상: 원하지 않는 자료가 삽입되거나 삽입하는데 자료가 부족해 삽입되지 않아 발생 삭제 이상: 하나의 자료만 삭제하길 원하나 그 자료가 포함된 튜플이 모두 삭제되어 정보 손실이 발생 수정 이상: 일부 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제 정규화 데이터베이스의 설계를 재구성하는 테크닉으로, 이를 통해..

[데이터베이스] 인덱스 (Index)

인덱스 인덱스란? 인덱스는 대부분의 책들의 처음이나 마지막에있는 색인과 같은 느낌이다. 데이터는 책의 내용이고그 데이터가 저장된 레코드의 위치가 인덱스 목록의 페이지 번호가 된다. 따라서 인덱스를 사용하는 경우 원하는 값을 가져오기 위해 DB의 모든 데이터를 검색할 필요가 없어 진다. DB에서의 인덱스는 column의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 만들어 두는 것이다. 이는 항상 정렬되어있어 탐색에 용이하다. 하지만 새로운 값을 추가하거나 수정, 삭제하는 경우 속도가 느려진다. 인덱스는 데이터 저장 성능을 낮추고 탐색 성능을 높이는 기능이라고 볼 수 있다. 또한 인덱스 관리를 위해 추가적으로 저장공간이 사용되고 이를 관리하기 위한 작업이 추가적으로 필요하다는 단점이 있다. Index..

[데이터베이스] 데이터베이스의 특징 및 필요성

데이터베이스가 필요한 이유는 무엇일까? 데이터베이스를 사용하기 이전에는 데이터 관리에 파일시스템 사용 -> 데이터를 각각의 파일 단위로 저장하게 됨. 이렇게 되면 독립적인 어플리케이션과 상호 연동이 되어야 하는데, 데이터의 종속성, 중복성, 무결성에 문제가 생긴다. 데이터베이스의 특징엔 무엇이 있는가? 독립성 데이터베이스의 starage상의 어떠한 물리적인 변화가 생기더라도 관련된 어플리케이션들을 수정해야할 필요가 없다. = 내부 스키마가 변하더라도 외부/개념 스키마에 영향X (물리적 독립성) 논리 스키마가 변하더라도 어플리케이션에 영향을 주지 않는다. = 논리스키마가 변해도 외부 스키마에는 영향X (논리적 독립성) 무결성 데이터의 정확성, 일관성, 유효성이 유지되는 것. 잘못된 데이터가 발생하는 경우를..

728x90
반응형