
📜 참고 포스팅
RDBMS는 정해진 스키마 형태에 따라 명확한 데이터 구조를 보장하지만, 이로 인해 스키마 변경이 어려워 유연성이 떨어집니다. 하나의 테이블 내 중복된 튜플이 존재하지 않습니다. 하지만, 시스템이 커질 경우 JOIN문이 많아져 복잡한 쿼리가 발생합니다. 또한, 성능 향상을 위해서 Scale-up만 지원합니다.
NoSQL(Not Only SQL)은 테이블 간의 관계를 정의하지 않습니다.
NoSQL은 데이터의 추세가 단순한 형태의 대용량 데이터라는 특징을 띄고, 대용량 트래픽을 감당하기 위해 기존의 RDBMS에서 Scale-up을 통한 성능 개선은 비용이 기하급수적으로 증가될 것으로 예상되었기 때문에 데이터의 일관성을 포기화되 데이터를 여러대에 분산하여 저장하는 Scale-Out을 목표로 NoSQL이 등장했습니다.
NoSQL에서는 스키마가 없기 때문에 유연하며, 자유로운 데이터 구조를 가질 수 있습니다. 또한, 언제든지 저장된 데이터를 조정하고 새로운 필드 추가가 가능합니다.
데이터 분산이 용이하여 성능향상을 위한 Scale-up과 Scale-out이 모두 가능합니다.
하지만, 데이터 중복 문제가 발생하며, 이로인해 데이터 변경 시 해당 데이터를 갖는 모든 곳에 데이터를 수정해줘야 합니다. 데이터 구조가 명확하지 않아 구조를 정하는 것이 어려울 수 있습니다.
===
스키마
확장성
테이블 간의 관계성
데이터 처리
사용되는 상황
데이터베이스의 설계에서 데이터의 중복을 허용하지 않고, 저장 용량을 최소화해줌으로써 데이터베이스를 보다 효율적으로 설계하는 과정을 말합니다.
정규화의 주요 목적은 이상현상(anomalies)을 최소화하고 데이터베이스의 효율을 높이는 것입니다.
정규화는 테이블을 분해하는 방식에 따라 단계가 나뉘어져 있습니다.
PK는 기본키를 의미하며, 테이블 내 모든 행을 고유하게 식별할 수 있는 식별자입니다. 이는 중복이 불가하며, null 이어도 안됩니다.
FK는 RDBMS에서 관계를 나타내기 위한 외래키를 의미합니다. 일반적으로 다른 테이블에 있는 기본 키를 참조합니다. 이를 통해 두 테이블 간의 데이터 무결성을 유지할 수 있습니다.
HTTP는 메서드를 정의를 통해 주어진 리소스에 수행하기 원하는 행동을 나타냅니다.
GET은 특정 리소스의 조회를 요청합니다. 이는 데이터를 오로지 받기만 합니다.
HEAD는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문(바디)가 없습니다.
POST는 특정 리소스에 요청 데이터를 제출 시 사용됩니다.
PUT은 특정 리소스에 데이터를 수정하기 위해 사용됩니다.
DELETE 특정 리소스에 데이터를 삭제하기 위해서 사용됩니다.
CONNECT는 목적 리소스로 식별되는 서버로의 터널을 맺습니다.
OPTIONS는 특정 리소스의 통신을 설정하기 위해 사용됩니다.
PATCH는 특정 리소스의 일부만 수정하기 위해 사용됩니다.
CORS는 "교차 출처 리소스 공유 정책"을 말합니다.
교차 출처의 의미는 다른 출처를 말합니다.
여기서 출처(Origin)가 의미하는 것은 URL 주소의 Protocol + Host + Port 를 합친 것을 의미합니다.
그 다음으로 출처와 관련된 정책인 Same Origin과 Cross Origin 정책에 대해 자세히 설명하겠습니다.
Same Origin은 동일한 출처에 대한 정책을 의미합니다. 이는 SOP라고도 불리며, 동일한 출처에서만 리소스를 공유할 수 있다라는 정책입니다.
동일 출처 정책이 필요한 이유는 무엇일까요?
출처에 대한 제약이 없이 다른 출처에서도 해당 리소스에 접그닝 가능할 경우,
CSRF(사이트 간 요청 위조는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말한다) 또는 XSS(사이트 간 스크립팅, 크로스 사이트 스크립팅은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다.) 등을 통해서 보안의 위험이 되기 때문입니다.
이를 예방하기 위해 SOP 정책으로 다른 출처의 스크립트가 실행되지 않도록 브라우저에서 예방하기 위한 정책입니다.
즉, 일부 브라우저의 SOP 정책에 따라 다른 출처의 리소스를 차단하면서 발생되는 에러를 일부 허용하기 위해서 CORS 정책에 따르면 다른 출처의 리소스라도 허용할 수 있도록 해줍니다.
CORS의 기본 동작으로는 요청 시 헤더에 Origin이라는 필드의 출처와
응답 시 헤더에 Access-Control-Allow-Origin 필드의 출처를 비교하여 다르면 오류 같으면 리소스를 정상적으로 가져올 수 있습니다.
사용자가 웹브라우저에 URL을 입력합니다.
브라우저는 DNS를 통해서 서버의 실제 주소(IP 주소)를 찾습니다.
HTTP 프로토콜을 통해 HTTP 요청 메시지를 생성합니다.
TCP/IP 연결을 통해서 HTTP 요청이 서버로 전송됩니다.
서버는 HTTP 프로토콜을 활용하여HTTP 응답 메시지를 생성합니다.
TCP/IP 연결을 통해서 요청한 컴퓨터로 전송합니다.
도착한 HTTP 응답 메시지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게됩니다.