처음에는 단순 파일 시스템으로 데이터를 저장했고, 파일 시스템의 문제를 해
결하기 위해 이어서 계층형과 네트워크형 DBMS가 생겼다. 이후 가장 많이 쓰이는 관계형 DBMS(RDBMS) 가 자리 잡았고, 최근에는 빅데이터 처리나 특수 요구 사항에 대응하기 위해 NoSQL DBMS가 빠르게 발전하고 있다.
"데이터를 어떻게 하면 더 효과적이고 더 안전하게 관리할 수 있을까?"
데이터를 테이블(Table) 이라는 정형화된 구조에 저장한다.
테이블은 행(Row, 레코드) 과 열(Column, 필드, 속성) 로 구성되며,
이 테이블들 간의 관계를 통해 데이터를 연결하고 관리한다.
관계형 모델을 사용하지 않거나, SQL을 주요 데이터 접근 언어로 사용하지 않
는 DBMS들을 의미한다. RDBMS가 모든 상황에 최적인 것은 아니기 때문에, 특정 요구사항(대량 비정형 데이터 처리, 매우 빠른 읽기/쓰기 속도, 유연한 데이터 모델 등)을 만족시키기 위해 등장했다.
| 분류 | 데이터 단위 | 핵심 장점 | 대표 사례 | 대표 DBMS |
|---|---|---|---|---|
| 키-값 저장소 | 키 -> 값 한 쌍 | 초고속 단건 읽기/쓰기 | 세션, 캐시 | Redis, Memcached |
| 문서 DB | JSON/BSON 문서 | 유연한 스키마 | 상품 카탈로그 | MongoDB, Couchbase |
| 컬럼 패밀리 저장소 | 열(Column)그룹 | 대용량 분산/분석 | 로그/시계열 | Cassandra,HBase |
| 그래프DB | 노드, 엣지 | 복잡한 관계 탐색 | 추천/이상 탐지 | Neo4j |
NoSQL은 RDBMS를 대체한다기보다는 상호 보완적인 관계
로 이해하는 것이 좋다. 핵심 데이터는 RDBMS에 저장하되, 특정 기능
(예: 실시간 인기 검색어, 사용자 세션 관리, 상품 추천 등)에는 NoSQL을 함께 사용할 수도 있다.
ANSI/ISO에서 지정한 SQL 표준 덕분에 서로 다른 DBMS를 사용한다고 하더라도 새롭게 배울 필요가 없다.
여기서 RDBMS들이 공통적으로 사용할 수 있는 표준 SQL문법을 정의했다.
Oracle, MySQL, MS SQL, PostgreSQL 등 대부분의 RDBMS는 이 표준을 준수하려고 노력한다. 물론 각각의 DBMS마다 고유한 추가 기능(함수나 문법)을 가지고 있다.
관계형 모델의 핵심 개념, 모든 데이터는 '표'에서 시작한다.
테이블 (Table): 관계형 데이터베이스에서 데이터를 저장하는 가장 기본적인 구조다. 엑셀의 '시트(Sheet)'와 거의 동일한 개념이다. 테이블은 특정 주제와 관련된 데이터들의 집합이다.
행 (Row): 테이블의 각 가로줄을 의미한다. 하나의 행은 개별적인 데이터 항목 하나를 나타낸다. 예를 들어, 고객테이블 에서 하나의 행은 고객 한 명의 정보를 의미한다. 1 고객의 정보, 2 고객의 정보 등이 각각 하나의 행이 된다.
실무 용어: 행은 '레코드(Record)' 또는 '튜플(Tuple)'이라고도 불린다.
열 (Column): 테이블의 각 세로줄을 의미한다. 열은 테이블에 어떤 종류의 데이터가 저장될지를 정의한다. 고객테이블 이라면 고객번호 , 이름 , 연락처 , 주소 등이 각각의 열이 된다.
실무 용어: 열은 '속성(Attribute)' 또는 '필드(Field)'라고도 한다.
기본 키란, 테이블에 있는 모든 행(Row)들 중에서 특정 행 하나를 유일하게 식별할 수 있는 열(Column) 또는 열들의 조합을 말한다.
고유성 : 기본 키로 지정된 열의 값은 같은 테이블 내에서 절대로 중복될 수 없다. 모든 행이 서로 다른 값을 가져야 한다.NOT NULL : 기본 키로 지정된 열에는 반드시 값이 있어야 한다. 비어있거나 (NULL) 인 상태는 허용되지 않는다.외래 키란, 한 테이블(A)의 열(Column)이 다른 테이블(B)의 기본 키(Primary Key) 값을 참조하는 것을 말한다.
부모와 자식의 관계
부모, 한쪽을 자식이라 한다.orders 테이블이 FK 값인 customer_id 를 통해 customers 테이블을 참조한다.orders 가 자식 테이블이고, customers 가 부모 테이블이 된다.외래 키의 중요한 규칙
참조 무결성 : 외래 키 열에 있는 값은, 반드시 부모 테이블(참조 당하는 쪽의 기본 키 값 중 하나이거나, 혹은 NULL이어야 한다.외래키를 사용하는 이유