DB 25

[Cache] Memcached vs Redis 차이

Memcached 와 Redis 란? Memcahced와 Redis는 Key-value 형태의 인-메모리 기반의 캐싱 시스템으로, 캐시 레이어로서 DB의 부하를 줄여주며, 주로 웹 어플리케이션의 응답 속도 개선을 위해 사용된다. 두가지 모두 사용하기 어렵지 않지만, Memcached는 Cache 서비스를 위해 설계된 반면, Redis는 좀더 다양한 용도에 효과적으로 사용 할 수 있도록 설계되었다는 차이가 있다. Memcached 특징 웹 서버에서 기존에 할당된 캐시 메모리를 초과시, 전체 할당된 메모리에서 유동적으로 사용 가능 Data Evicion 전략 : LRU (Least Recently Used) 알고리즘만 사용 Data Structure : String 형태만 지원 Persistance : Me..

DB/이론 2022.11.22

[DB] MongoDB Docker + Robo3T 셋팅

MongoDB , Robo3T 👉 MongoDB - 대표적인 NoSQL DB (링크) MongoDB Atlas: Cloud Document Database Cloud-hosted MongoDB service on AWS, Azure, and GCP www.mongodb.com 👉 Robo3T - MongoDB DBMS Tool (링크) Robo 3T | Free, open-source MongoDB GUI (formerly Robomongo) Read by Dmitry Schetnikovich robomongo.org MongoDB Docker 명령어 # VOLUME 위치, USERNAME PASSWORD 임의 설정하기 $ docker run --name mongodb-container -v :/data..

DB/기본 실습 2022.11.13

[DB] Clustering, Sharding, Replication 차이

Clustering (DB 서버에 대한 고민) 우선, STORAGE는 DB 저장소를 DB 서버는 DB 작업을 하는 서버를 의미한다. 👉목표 서버를 여러개 만들어 DB SERVER가 죽는 것을 방지하자 👉 종류 1. 하나의 큰 STORAGE 안에 2 ACTIVE SERVER : 처리 속도는 더 빠르지만 병목현상 있을 수 있음 2. 하나의 큰 STORAGE 안에 ACTIVE-STANDBY : 하나는 대기 상태로 두어 병목현상 X REPLICATION (DB 손실에 대한 고민) 👉 목표 실제 데이터가 저장되는 저장소도 복제하여, 저장된 데이터 손실을 방지하자 👉 특징 MASTER-SLAVE 구조로 MASTER로 들어온 데이터를 SLAVE로 동기화하여 데이터를 백업 MASTER는 수정, 삽입, 삭제 역할 SLA..

DB/이론 2022.10.03

[DB] Replication 이란? (Feat. Mysql, Mongo)

Replication 이란? 복제본 데이터베이스를 운용하는 것 (=한 서버에서 다른 서버로 동기화 하는 것)을 Replication이라고 지칭 주로 DB 운용 상황에서 많이 사용되는데 데이터베이스(Master, 소스 서버), 복제된 데이터베이스(Slave, 레플리케이션 서버)라고 많이 부른다 Replication 사용 이유 Slave 데이터베이스는 Master 데이터베이스를 복제(Replication)하여 동일한 데이터를 가지게 됨 이유 1. 데이터 분산 부하 관리 Insert, Update, Delete 등의 작업 : Master 데이터베이스에서 처리 Select 등의 조회 작업 : Slave 데이터베이스에서 처리 ex) Scale-out 목적 트래픽 대응 ex) 데이터 분석의 경우 대량의 조회를 하는..

DB/이론 2022.10.03

[DB] Index란?

Index란? 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 Index가 효율적인 이유 모든 요소에 효율적으로 접근 할 수 있는 균형 적인 트리 구조와 트리 깊이의 대수 확장성 때문 대수확장성 : 트리 깊이가 리프 노드 수에 비해 느리게 성장하는 것을 의미 (ex. depth 1 추가시 node 당 4개 인덱스추가) Index 관리 DBMS에서 index는 항상 최신의 정렬된 상태로 유지 INSERT, UPDATE, DELETE가 수행시 인덱스에 대한 추가 작업 필요 INSERT: 신규 데이터에 인덱스 추가 DELETE: 해당 데이터 인덱스 삭제 UPDATE: 기존 인덱스 삭제 및 수정 데이터에 인덱스 추가 Index 장단점 장점 : 테이블 조회 성..

DB/이론 2022.08.11

[DB] Transaction 격리 수준 종류 (Isolation Level)

Transaction 격리 수준 이란?Transaction이 동시에 처리될 때 transaction끼리 얼마나 고립되어 있는지를 나타냄RDBMS는 transaction의 격리 수준을 제어 가능하며 일반적인 DBMS는 READ COMMITTED나 REPEATABLE READ를 사용 (oracle, postgresql - READ COMMITTED  /  mysql - REPEATABLE READ) 격리 수준은 아래 4가지로 구분되며, 번호가 높아질 수록 트랜잭션간 고립 정도 ↑, 성능 ↓1) READ UNCOMMITTED2) READ COMMITTED3) REPEATABLE READ4) SERIALIZABLE READ UNCOMMITTED트랜잭션(A)의 변경내용이 COMMIT이나 ROLLBACK 여부와 상..

DB/이론 2022.08.10

[DB] 에러 발생시 대응 시나리오

과도한 트래픽 대응기존에 단일 DB 였다면, 마스터/슬레이브 모델 (=Replica)을 사용해 트래픽 분산 1대의 Read/Write 마스터 DB와 해당 DB를 복제하는 다수의 Slave DB 를 생성하여 트래픽 분산 동시성 이슈 (Concurrency Issue)동시성 이슈란 : 여러 스레드가 동시에 같은 인스턴스의 필드 값을 변경 하면서 발생하는 문제예시) Read & Update를 가진 여러 Transaction 요청이 동시에 들어올 때 transcation 1의 Update(+1)이 완료 되지 않은채 transaction 2의 Update(+1)가 요청 되어 정상적으로 값 변경이 안된 상황1) transaction 격리 수준 직접 수정 : READ COMMITTED => REPEATABLE REA..

DB/경험 공유 2022.08.10

[DB] PostgreSQL vs MySQL

1. MySQL vs PostgreSQL 특징 비교 PostgreSQL MySQL Architecture ORDBMS (Object-RDBMS) multi-process(연결마다 프로세스 생성, 연결 유저 많으면 많은 메모리 요구) RDBMS single-process(연결마다 쓰레드 생성, 커널 스레드를 활용한 완전한 multi-thread) Indexes supported 고성능을 위한 다양한 index 기능 지원 B-tree, hash, GiST, SP-GiST, GIN, BRIN 기본 B-tree 특정 데이터 타입 R-tree, hash, inverted index Performance 읽기와 쓰기가 많은 어플리케이션에 적합 읽기가 많은 어플리케이션에 적합 Security 접근 관리, multi ..

DB/이론 2022.08.10

[PostgreSQL, Django] PostgreSQL 셋팅 (Local, Docker)

1-1. PostgreSQL 로컬 설치 설치 간 유의할 점 : root의 password 입력하는 란 나오는데 유의할 것. https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Download PostgreSQL PostgreSQL Database Download www.enterprisedb.com 1-2. PostgreSQL Docker 설치 PostgreSQL을 Docker 환경에서 설치하고 싶다면 docker를 설치하고 아래 명령어를 실행 하면 된다. --name : container 이름 -e : 환경변수로 postgresql의 password 넘겨줌 -v : docker container 종료시에도 db 데이터 유지되도록 v..

DB/기본 실습 2022.07.14