DB

·DB
MySQL-Cluster 클러스터 설명 MySQL Replication은 확장의 제약을 가진다. 왜냐하면 데이터 입력 및 업데이트가 master 서버에 의존적이기 때문에 시스템 확장 시 slave 서버의 증설은 용이하지만 master 서버의 증설에는 어느 정도 제약이 따르게 된다. 하지만 MySQL Cluster는 데이터 입/출력을 모두 처리하는 형태로 구현되기 때문에 어떠한 특정 DB 서버에 의존적이지 않다. 클러스터의 장점 파이브 나인의 고가용성 시스템 구축과 운영이 가능하다. 메인 메모리 또는 하드디스크 기반의 고성능 데이터베이스 구현이 가능하다. 매우 빠르고 자동적인 FailOver 시스템을 가지고 있다. 유동적이고 병렬적인 분배 구조 시스템을 가지고 있다. 별도의 라이선스 및 제반 비용이 필요 ..
·DB
레디스(Redis) 레디스(Remote Dictionary Server)는 In-Memory 기반의 Dictionary 구조 데이터 관리 서버 시스템을 뜻하는데, 여기서 Dictionary 구조 데이터는 key-value를 의미한다. 다른 것은 그래도 이해가 가는데 그럼 In-Memory라는 게 뭘까? In-Memory In-Memory는 컴퓨터의 메인 메모리(RAM)에 데이터를 저장하는 것으로, 말 그대로 데이터가 메모리 안으로 들어간다고 이해하면 쉬울 것 같다. 위의 그림과 같이 CPU는 메인 메모리에 저장된 데이터만 직접 가져올 수 있다. 그렇다면 데이터를 굳이 HDD나 SSD에 저장하는 것이 아닌 메인 메모리에 저장하면 더 빠르게 데이터를 주고받을 수 있기 때문에 In-Memory라는 개념이 탄생..
·DB
Replication Replication은 복제라는 뜻으로 하나의 메인 DB 서버의 데이터를 그대로 복제한 하나 이상의 DB서버를 구성하는 것을 의미한다. MySQL의 Replication은 master와 slave를 구성하여 master의 데이터를 slave가 복제하는 방식으로 이루어진다. 하나의 master와 하나 이상의 slave를 두어 단방향 Replication을 구성할 수도 있고 각각의 DB 서버가 master의 역할과 slave 역할을 동시에 하는 양방향 Replication을 구성할 수도 있다. 이러한 Replication 구성은 통해서 Read/Write와 ReadOnly로 분리할 수 있어 고가용성 측면과 부하 분산 및 백업을 수행할 수 있다. Replication의 장/단점 장점 - ..
·DB
DB 이중화 우리가 하나의 서비스를 개발했다고 생각해 보자. 우리가 개발한 서비스가 DB 서버를 하나만 사용하고 있다면 많은 이용자들을 감당하기 어려울 것이다. 많은 이용자가 갑자기 몰려들면 과부하가 발생하고, 결국에는 하나만 있던 DB 서버가 다운되게 된다. 하나의 예시로, 우리가 백화점을 운영한다고 상상해 보자. 해당 백화점의 문이 하나라고 가정하고 사람이 몰릴 때를 상상해 보자. 대충 이런 모습이 나오는데 이용자들이 백화점에 들어가서 여러 서비스를 경험하려면 기다려야 되는 상황이 발생한다. 그럼 이러한 문제를 어떻게 해결할 수 있을까? 생각해 보면 쉽게 해결되는데 그냥 문만 더 달아주면 된다. 문을 더 만들어서 이용자들이 쉽게 들어올 수 있다면 기다리는 시간을 줄일 수 있게 된다. 개발을 하면서 이..
·DB
인덱스(Index) 인덱스는 테이블에서 원하는 데이터를 쉽고 빠르게 찾기 위해 사용된다. 데이터베이스 - 인덱스 인덱스(Index) 인덱스는 데이터를 빠르게 찾을 수 있는 하나의 장치로 예를 들면 책의 마지막 장에 있는 찾아보기를 생각하면 된다. 인덱스를 설정하면 테이블 안에 내가 찾고자 하는 데이터를 빠 hotechstory.tistory.com 인덱스의 설명은 해당 블로그에 정리했으니 바로 다음으로 넘어가겠다. 먼저 테이블에 등록된 인덱스 목록을 살펴보자 SHOW INDEX FROM [테이블명] Table 테이블의 이름을 표시 Non_unique 인덱스가 중복된 값을 저장할 수 있으면 1, 없으면 0을 표시 Key_name 인덱스의 이름을 표시하며, 인덱스가 해당 테이블의 기본 키라면 PRIMARY로..
·DB
인덱스(Index) 인덱스는 데이터를 빠르게 찾을 수 있는 하나의 장치로 예를 들면 책의 마지막 장에 있는 찾아보기를 생각하면 된다. 인덱스를 설정하면 테이블 안에 내가 찾고자 하는 데이터를 빠르게 찾을 수 있다. B-트리 인덱스는 보통 B-트리라는 자료 구조로 이루어져 있다. 트리의 탐색은 맨 위의 루트 노드부터 탐색이 일어나면서 중간에 브랜치 노드를 거치게 되고 최종적으로 리프 노드까지 내려오게 된다. 52라는 데이터를 찾는다고 가정하면 먼저 루프 노드인 39와 61을 먼저 비교하고 브랜치 노드로 내려와 다시 55와 61을 비교하게 된다. 그 후 55가 가리키는 정렬된 데이터 값을 기반으로 리프 노드를 탐색하여 원하는 52의 노드를 찾을 수 있게 된다. B-트리가 아니라면 왼쪽부터 모든 노드를 탐색하..
·DB
SELECT 문 쿼리문 중에서 가장 대표적이고 자주 사용하는 쿼리문으로 SELECT가 있다. 서비스를 운영한다면 가장 많이 실행되는 것은 삭제, 회원가입, 수정이 아닌 바로 조회다. 우리가 어떤 쇼핑몰 사이트를 이용한다고 생각해 보자. 먼저 회원가입을 하고, 로그인을 하게 된다. 그 후 구매하고 싶은 상품을 검색하고, 찾아보고 선택하게 된다. 여러 상품이 담겨있는 장바구니를 통해서 구매 버튼을 누르고 결제를 진행한다. 위와 같은 일련의 과정 중에서 가장 많이 사용되는 것은 조회이다. 로그인을 하려면 맞는 회원인지 검증해야 되고, 상품들을 띄워줘야 되고, 어떤 상품들이 장바구니에 있는지 확인하고 등의 기능들이 SELECT를 통해서 수행하게 된다. 여러 가지 SELECT 문법을 사용하여 어떤 것이 있는지 살..
·DB
SQL(Structured Query Language) 여러 가지 DBMS에는 쿼리문이 있다. 각 DB마다 쿼리문의 문법이나 특징이 조금씩 달라질 수 있다. 여기서는 MySQL을 사용하여 기본적인 쿼리문을 정리했다. DDL(Data Defined Language, 데이터 정의어) DDL은 스키마, 도메인, 테이블, 뷰, 인덱스 등 데이터의 구조를 정의하거나 제거할 수 있는 쿼리문이다. CREATE CREATE 쿼리문은 데이터베이스, 사용자 등을 생성해 주는 쿼리문이다. CREATE DATABASE [데이터베이스_이름]; CREATE USER '사용자_이름'@'주소' IDENTIFIED BY '비밀번호'; 예시로 데이터베이스와 test01이라는 사용자를 만들어보았다. 사용자를 생성할 때 @ 뒤에 %를 사용..
·DB
MySQL MySQL은 관계형 데이터베이스에서 가장 많이 사용되는 무료 DBMS이다. MySQL에는 대표적으로 두 가지 버전이 있는데 하나는 8.x 버전과 또 다른 하나로 5.x가 있다. MySQL :: What’s New in MySQL 8.0? (Generally Available) We proudly announce General Availability of MySQL 8.0. Download now! MySQL 8.0 is an extremely exciting new version of the world’s most popular open source database with improvements across the board. Some key enhancements include: SQL W..
·DB
트랜잭션(Transaction) 트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 뜻한다. 데이터베이스에 접근하는 방법은 쿼리이므로, 여러 개의 쿼리들을 하나로 묶는 단위를 트랜잭션이라 말한다. ACID 데이터베이스의 일관성을 유지하기 위해 트랜잭션 전후에 특정 속성을 따르게 되는데 이를 ACID 속성이라고 한다. ACID 속성의 장점 1. 데이터 일관성: 트랜잭션 실행 후에도 데이터가 일관되고 정확하게 유지되도록 보장한다. 2. 데이터 무결성: 데이터베이스에 대한 모든 변경 사항이 영구적이고 손실되지 않도록 하여 데이터 무결성을 유지한다. 3. 동시성 제어: 트랜잭션 간의 간섭을 방지하여 동시에 발생하는 여러 트랜잭션을 관리하는 데 도움이 된다. 4. 복구: 오류나 충돌이 발..
·DB
ERD(Entity Relation Diagram) ERD는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며 릴레이션 간의 관계들을 정의한 것이다. DBMS에서 ERD를 사용하는 이유 ERD는 시스템의 요구 사항을 기반으로 작성되며, 이러한 ERD를 기반으로 데이터베이스를 구축하기 때문에 서비스를 구축한다면 가장 먼저 신경 써야 할 부분이다. ERD는 시스템을 구축한 이후 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 담당하기도 한다. ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용하지만 비정형 데이터를 충분히 표현할 수 없다는 단점이 존재한다. 비정형 데이터: 비구조화된 데이터를 말하며 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은..
·DB
데이터베이스(Database) 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음을 뜻한다. 데이터베이스의 특징 - 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(Database Management System)라고 하며 해당 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. - 데이터베이스는 실시간 접근과 동시 공유가 가능하다. - 데이터베이스 위에 DBMS가 있고 그 위에 응용 프로그램이 있으며 이러한 구조를 기반으로 데이터를 주고받는다. 엔티티(Entity) 엔티티는 여러 개의 속성을 지닌 명사를 의미하는 것으로 서비스의 요구 사항에 맞춰 속성이 정해진다. 약한 엔티티와 강한 엔티티 어떤 데이터가..
Hosae905
'DB' 카테고리의 글 목록