CS/데이터베이스
-
MySQL foreign key 조회 및 삭제 갱신CS/데이터베이스 2022. 5. 24. 10:57
foreign key를 갱신하기 위해 조회 삭제를 하고 갱신하는 법을 기록해두고자 합니다. 특정 테이블에 생성되어 있는 foreign key 조회 방법 select * from information_schema.table_constraints where table_name = 'TABLE NAME'; select * from information_schema.table_constraints where table_name = 'board'; 특정 데이터베이스에 생성되어 있는 foreign key 조회 방법 select * from information_schema.table_constraints where constraint_schema = 'DATABASE NAME'; Foreign key에 제약사항 추..
-
DB Connection Pool이란CS/데이터베이스 2022. 4. 25. 01:16
DB Connection Pool이란? DB Connection이란 DB를 사용하기 위해 DB와 애플리케이션 간 통신을 할 수 있는 수단입니다. 여기에 Pooling이라는 기법을 도입하려 DB Connection Pool이라고 부릅니다. 즉, 커넥션 풀은 데이터베이스와 연결된 커넥션을 미리 만들어 풀에서 관리하고, 필요시 이를 사용하고 반환하는 기법입니다. 위의 그림처럼 유저가 Web에 접속하게 되고 DB자원을 요청하게 되면 Connection Pool에 의해 관리되는 미리 생성된 5개의 Connection에서 사용 가능한 Connection을 사용하여 DB에 요청하게 됩니다. DB Connection Pool을 사용하는 이유? 우선 DB에 query를 날리기위해서는 DB Connection이 필요합니다..
-
데이터 베이스 정규화란?CS/데이터베이스 2022. 4. 7. 13:55
정규화(Normalization)란? 정규화의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는 것입니다. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며 DB의 저장 용량 역시 줄일 수 있습니다. 무결성이란? 데이터의 정확성, 일관성이 유지되는 것을 의미합니다. 정확성 : 중복이나 누락이 없는 상태 일관성 : 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태 위의 내용은 정규화를 해야 하는 이유와 일치합니다. 정규화를 하기 위해서 테이블을 분해하는 과정이 존재하는데 여기서 테이블이 어떻게 분해되는지에 따라 정규화 단계가 달라지는데, 각각의 정규화 단계에 대해 자세히 알아보도록 하겠습니다. 여기서는 가장 많이 사용되는 4단계를 살펴볼텐데 정규화는 6단계까지도 존재합니다. 제1..
-
데이터베이스 View란?CS/데이터베이스 2022. 3. 29. 17:49
데이터베이스 View란? 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블입니다. 한 개 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블입니다. 가상 테이블이기 때문에 실제로 데이터를 저장하고 있지는 않습니다. INSERT, UPDATE, DELETE가 가능하지만 보통 SELECT를 위해 사용합니다. 즉, View는 하나 이상의 테이블이나 뷰를 조작하여 하나의 테이블처럼 볼 수 있는 가상의 테이블입니다. 동적 View와 정적 View 정적 View 하나 이상의 기반 테이블과 다른 정적/동적 View를 기반으로 정의된 View입니다. 관련된 테이블 또는 View가 변경될 때 정적 View를 수동으로 업데이트해야 ..
-
Database Sharding(샤딩)이란?CS/데이터베이스 2022. 3. 28. 14:03
DB Sharding이란? shard의 사전적 의미는 (유리·금속 등의) 조각, 파편입니다. 데이터베이스의 측면에서 본다면 sharding은 데이터베이스를 조각으로 나누는 것으로 생각해볼 수 있습니다. 샤딩(Sharding)은 수평 분할(Horizontal Partitioniong)과 관련된 데이터베이스 아키텍처 중 하나로써 한 테이블의 row들을 여러 개의 서로 다른 테이블, 즉 파티션으로 분리하는 방식입니다. DB Sharding을 하는이유? 하나의 DB에 데이터가 늘어나면 용량 이슈도 생기고, 느려지는 CRUD는 자연스럽게 서비스 성능에 영향을 주게 됩니다. 따라서 애플리케이션이 얼마나 인기를 끌지 또는 얼마나 오랫동안 그 인기를 유지할지 예측을 하기 어렵기 때문에 데이터베이스를 동적으로 확장할 수..
-
데이터베이스 Index란?CS/데이터베이스 2022. 3. 18. 00:20
인덱스(Index)란? 보통 배열에서 많이 썼던 단어로 "색인"이라는 뜻을 가집니다. 데이터베이스에서의 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상하기 위한 자료구조입니다. 우리가 책에서 원하는 내용을 찾을때 모든 페이지를 찾아보는 것은 오랜 시간이 걸립니다. 따라서 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가합니다. 데이터베이스의 인덱스는 책의 색인과 유사합니다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고 있습니다. 인덱스를 사용하는 이유? 인덱스를 사용하지 않은 컬럼을 조회해야 하는 상황이라면 전체를 탐색하는 Full Scan을 수..
-
Redis란?CS/데이터베이스 2022. 3. 4. 10:47
Redis란? 공식 홈페이지의 소개글을 요약해 보겠습니다 Redis는 데이터베이스, cache 및 message broker 로서 이용되는 오픈 소스입니다. set, string, hash, list, sorted set 등의 다양한 데이터 구조를 제공합니다. message broker란? 송신자로부터 전달받은 메시지를 수신자로 전달해주는 중간 역할을 수행합니다. 애플리케이션, 시스템, 서비스가 서로 통신하고 정보를 교환할 수 있도록 합니다. 네트워크 지연 문제가 발생해도 시스템이 계속 작동될 수 있도록 보장합니다. Redis는 (Remote dictionary server)의 약자로써 외부로부터 dictonary 자료구조(HashMap과 같은 Key-Value)를 사용하는 서버라는 것을 알 수 있습니다..
-
RDBMS와 NoSQL 정리(+ 차이점, 언제 무엇을 사용해야 할까)CS/데이터베이스 2022. 1. 16. 00:01
RDBMS란? RDBMS란(Relational DataBase Management System)의 약자로 관계형 데이터베이스를 수정하고 관리할 수 있는 소프트웨어입니다. 관계형 데이터베이스란 무엇일까요? 데이터를 열(Column)과 행(row)으로 구성하여 하나 이상의 테이블로 정리하며 고유 키(Primary key)가 각 행(row)을 식별합니다. 또한 이러한 테이블끼리 서로 연관되어 있어 효율적으로 데이터를 저장, 구성 및 관리할 수 있습니다. 또한 사용자가 관계형 데이터 베이스를 사용하기 위해 표준 검색 언어인 SQL을 사용하여 데이터를 조회, 수정 등을 할 수 있습니다. MSSQL, MySQL, Oracle이 RDBMS의 몇 가지 예시입니다. 위의 그림은 관계형 데이터베이스의 학생 릴레이션의 예시..