01 Database(데이터베이스)와 SQL 개요
데이터베이스(Database)란?
데이터를 체계적으로 저장하고 관리하는 저장소, 여러 사람이 동시에 접근하고 수정할 수 있도록 설계 되어야 함
데이터베이스는 여러 가지 정보를 체계적으로 모아둔 일종의 '전자 서랍장’, 책상에 서랍장이 있고 그 서랍마다 서류나 물건을 깔끔하게 정리해두는 것처럼, 데이터베이스는 컴퓨터에서 데이터를 정리하고 관리하는 공간
데이터베이스의 필요성
현대 사회에서는 엄청난 양의 데이터를 다루어야 함
예를 들어, 쇼핑몰 웹사이트에는 고객 정보, 상품 정보, 주문 정보 등이 많음. 이런 데이터를 별다른 관리 없이 엑셀 파일이나 종이 문서로만 관리한다면 다음과 같은 문제가 발생할 수 있음
중복된 데이터: 여러 파일에 같은 정보가 반복해서 저장될 수 있음
데이터 손실: 실수로 파일을 삭제하거나 데이터가 잘못 기록될 수 있음
검색의 어려움: 원하는 정보를 빠르게 찾기 어려움
데이터베이스의 예시
데이터베이스는 일상에서 우리가 접하는 많은 곳에서 사용되고 있음
온라인 쇼핑몰: 고객의 주문 내역, 상품 정보, 배송 상태 등이 저장
은행: 계좌 정보, 거래 내역, 고객 정보 등을 안전하게 관리
학교: 학생 정보, 성적, 출석 기록 등이 데이터베이스에 저장됨
스마트폰 연락처 앱: 이름, 전화번호, 이메일 주소 등 저장
음악 스트리밍 서비스: 사용자 정보, 재생 목록, 곡 정보, 아티스트 정보 등이 데이터베이스에 저장되어 빠르게 검색되고 제공됨
SNS(소셜 네트워크 서비스): 사용자 프로필, 친구 목록, 게시물, 댓글, 좋아요 등의 정보가 데이터베이스에 저장되어 사용자 간의 상호작용을 가능하게 함
데이터베이스의 종류
데이터베이스는 저장할 데이터의 특성과 목적에 따라 여러 종류로 나뉨, 일반적으로 크게 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)로 구분됨
관계형 데이터베이스(Relational Database) : 표 형태로 데이터를 관리하는 데이터베이스
비관계형 데이터베이스(NoSQL Database) : 문서, 키-값, 그래프 등 다양한 형태로 데이터를 관리하는 데이터베이스
관계형 데이터베이스(Relational Database)
관계형 데이터베이스 정의
관계형 데이터베이스는 데이터를 행(Row)과 열(Column)로 이루어진 표(Table) 형식으로 관리함
데이터 간의 관계를 테이블 간의 키(Key)를 통해 정의하고, 데이터를 체계적으로 관리할 수 있도록 설계된 데이터베이스
관계형 데이터베이스 예시
은행 시스템: 고객 정보, 계좌 정보, 거래 내역 등을 관계형 데이터베이스로 관리하여 데이터의 일관성과 정확성을 유지함
학교 관리 시스템: 학생 정보, 수강 과목, 성적, 출석 정보 등을 테이블로 나누어 관리함. 학생 테이블과 과목 테이블이 서로 참조 관계를 가질 수 있음
대표적인 관계형 데이터베이스 시스템
MySQL: 오픈 소스 관계형 데이터베이스 관리 시스템
Oracle: 고성능 상용 관계형 데이터베이스 관리 시스템. 대규모 기업에서 사용되며, 고급 보안 기능과 복잡한 데이터 처리 기능을 제공함
PostgreSQL: 오픈 소스 관계형 데이터베이스 시스템으로, 확장성과 표준 준수에 강점을 가지고 있음. 복잡한 쿼리와 데이터 분석에 적합함
SQL Server: Microsoft에서 제공하는 상용 관계형 데이터베이스 시스템. Windows 환경에서 주로 사용되며, 비즈니스 인텔리전스와 데이터 분석에 강점을 가지고 있음
비관계형 데이터베이스 (NoSQL Database)
비관계형 데이터베이스 정의
비관계형 데이터베이스는 정형화된 스키마 없이 데이터를 저장하고 관리하는 데이터베이스를 의미함
다양한 데이터 저장 모델을 제공하며, 관계형 데이터베이스의 제약을 벗어나 더 유연하고 확장성이 높은 데이터 처리가 가능
비관계형 데이터베이스의 종류
문서형 데이터베이스 (Document Database) : JSON 또는 BSON 형식의 문서로 데이터를 저장
키-값 데이터베이스 (Key-Value Store) : 고유한 키와 해당 키에 대한 값을 저장하는 간단한 구조를 가짐. 빠른 데이터 검색이 필요한 경우 유용
컬럼형 데이터베이스 (Column-Family Store) : 테이블의 열(Column)을 개별적으로 저장하여 특정 열의 데이터를 빠르게 조회 가능, 빅데이터 처리에 적합
그래프 데이터베이스 (Graph Database) : 노드와 엣지로 구성된 그래프 구조로 데이터를 저장하며, 복잡한 관계 데이터를 처리하는 데 유용
대표적인 비관계형 데이터베이스 시스템
MongoDB: 문서형 데이터베이스, JSON과 유사한 BSON(Binary JSON) 형식으로 데이터를 저장함. 각 문서는 고유한 구조를 가질 수 있어 매우 유연함. 필드가 고정되지 않고, 필요에 따라 새로운 필드를 추가할 수 있음.
Redis: 키-값 데이터베이스, 메모리 기반의 키-값 저장소로, 매우 빠른 데이터 접근 속도를 자랑함. 문자열, 리스트, 해시, 셋, 정렬된 셋 등 다양한 데이터 구조를 지원
Amazon DynamoDB: 키-값 데이터베이스, Amazon Web Services(AWS)에서 제공하는 완전 관리형 키-값 및 문서형 데이터베이스 서비스임. 자동으로 스케일링이 가능하며, 고가용성과 안정성을 보장함
Apache Cassandra: 컬럼형 데이터베이스, 분산형 구조로 설계된 컬럼 패밀리 데이터베이스로, 데이터가 여러 서버에 걸쳐 분산되어 저장됨. 데이터의 가용성과 확장성이 매우 높음
Elasticsearch: 검색 및 분석 데이터베이스, 실시간으로 대량의 데이터를 빠르게 검색하고 분석할 수 있는 검색 엔진, JSON 형식의 문서를 저장하며, 강력한 검색 및 집계 기능을 제공함
SQL(Structured Query Language)이란?
SQL의 정의
SQL은 Structured Query Language의 약자로, 데이터베이스에서 데이터를 관리하고 조작하기 위해 사용하는 표준화된 언어
데이터베이스에 저장된 데이터를 검색, 삽입, 수정, 삭제하는 등 다양한 작업을 수행할 수 있도록 도와줌
SQL은 관계형 데이터베이스(RDBMS)에서 표준으로 사용되며, MySQL, Oracle, PostgreSQL, SQL Server와 같은 대부분의 데이터베이스 시스템에서 지원됨
SQL과 관계형 모델
SQL은 관계형 모델을 기반으로 데이터를 정의하고 조작하는 언어로, 관계형 데이터베이스를 사용하는 모든 시스템에서 핵심적인 역할을 함
관계형 모델이 데이터베이스의 이론적 기초를 제공한다면, SQL은 이를 실무에서 구현하고 활용할 수 있도록 도와주는 도구
두 개념은 서로 밀접한 관계를 가지고 있으며, 관계형 모델의 이해는 SQL의 올바른 사용과 데이터베이스 설계에 큰 도움이 됨
관계형 모델을 모르더라도 SQL을 쓸 수 있음
SQL에 대한 테크닉이 쌓이면 관계형 모델을 모르더라도 데이터베이스를 사용할 수 있음
하지만 관계형 모델을 모르는 채로 SQL을 사용한다는 것은 이론 없이 실습만 진행하는 것으로 나중에 DB 성능향상에서 어려움을 겪게 됨
Last updated