CS/데이터베이스 4

[데이터베이스] DB replication 한번 구경해보기

사건의 발단은 곰터뷰에서 우리의 쿼리깎기와, 이전 멘토님의 코멘트중에 있었다. DB를 더 빠르게 할 수 없을까? 데이터베이스 서버가 꺼졌다면, 우리는 어떻게 대응해야할까? 상태확인만으로 괜찮을까? 당시에는 이걸 그냥 상태확인으로 넘기고, 다른 생각을 해보지 못했었다. 이번 기회에, 이걸 어떻게 해결하는게 좋은지 생각을 하려고 했다. 일단 현 상황부터 확인을 해야헀다. 우리의 DB는 단 하나의 서버로 동작한다. 해당 서버가 터져버리거나, 불의의 사고로 소실되었을 때, 우리는 대처할 수 없다. 그렇다면? 간단하게 데이터베이스를 여려 개 두어서 동기화를 시키거나, DB의 값들을 로컬에 따로 저장했다가, 로컬 스토리지의 데이터를 활용하는 방법 정도가 생각났다. 그런데, 로컬이라는 것도 결국에는 애플리케이션의 수..

[CS] 데이터베이스 - 키

키에 대해서 알기 전에 두 가지를 알 필요가 있다. 유일성 : 다른 튜플에 중복되는 값이 없는 성질(유일성을 갖춘 것들을 슈퍼키라고 부른다.) 최소성 : 다른 속성과 묶여 판단되는 것이 아닌, 단순 속성 자체로 판단될 수 있는 성질, 그리고 최대한 단순한 상태 이를 종합해 유일성과 최소성을 갖춰야 기본키가 될 수 있다고 한다. 유일성 + 최소성 = 속성 하나로 이루어진 데이터이며 다른 튜플과 중복되지 않는 값인 상태 를 갖춰야 기본키로 쓸 수 있다. 그러면 기본키는 뭘까? 유일성과 최소성을 만족시킨다. null값을 허용하지 않으며 중복되지 않아야 한다(유일성) 기본키는 자연키, 인조키중에 더 단순하게 생긴 것을 사용한다(최소성) 이런 키를 기본키라고 한다. 이런 녀석을 찾기 위해 우리는 후보키 라는 것을..

[CS] 데이터베이스 - 속성의 타입

숫자 타입 TINYINT SMALLINT MEDIUMINT INT BIGINT 용량 1Byte 2Byte 3Byte 4Byte 8Byte 값의 범위(부호 있음) -128~127 -128~127 -32768~32767 -8388608~ 8388607 -2147483648~ 2147483647 값의 범위(부호 없음) 0~255 0~255 0~65535 0~16777215 0~4294967295 문자 타입 CHAR 괄호를 쳐서 저장가능한 길이를 정할 수 있다. 0~255의 고정길이를 저장하게 된다. VARCHAR 괄호를 통해 0~65535의 길이를 정할 수 있다. 입력 길이만큼의 바이트 + 길이 저장용 1바이트의 공간을 가진다. 가변길이로 저장된다. TEXT 큰 문자열(게시물의 내용, 메일)에 쓰인다. BLO..

[CS] 데이터베이스 - 기본 구조

데이터베이스의 구조 엔티티 여러 개의 속성을 가진 객체. 필요한 속성들로 객체를 만들게 된다. 필요없는 속성이 테이블에 존재한다면 그 속성은 엔티티에 속하지 않게 된다. 약함과 강함 엔티티 A와 B가 있을 때, B가 A없이 존재할 수 없다면, B는 약한 엔티티이다. 예시) 게시물과 댓글 릴레이션 속성들을 표현하는 릴레이션 스키마, 스키마의 속성들을 가지는 릴레이션 인스턴스를 의미하는 튜플이 존재한다. 이들을 모아서 릴레이션이라고 한다. MySQL은 테이블, NoSQL은 컬렉션이라고 명명한다. 튜플 속성에 따른 각 행을 의미한다. 파일구조에서 레코드와 같은 의미를 가진다. 릴레이션 인스턴스(튜플)의 길이를 카디널리티라고 한다. 속성 릴레이션 스키마를 구성하는 열 속성에는 넣을 수 있는 값들이 정해져 있다...