DB/이론 10

[DB] Postgresql 과 MySQL schema 구분 차이

Schema 란 스키마(schema)는 데이터베이스 내에서 객체(테이블, 뷰, 함수, 인덱스 등)를 논리적으로 구분 한 컨테이너이다. 하나의 데이터베이스 안에 여러 스키마를 포함하며, 스키마를 활용해  여러 namespace 공간을 제공하고, 각각의 공간에서는 동일한 이름의 객체를 가질 수 있다. public과 service1이 다른 schema라는 가정하에 다음과 같이 정의 할 수 있다.ex) public.user_table / service1.user_table Mysql mysql 에서 스키마(Schema)는 Database와 동일한 의미로 사용된다.즉, MySQL의 스키마(Schema)는 데이터베이스(Database) 하나 자체를 지칭하며,필요시 다른 데이터베이스(Database)를 활용하여 논리..

DB/이론 2024.12.21

[MQ] 메시지 지향 미들웨어 (by. RabbitMQ, Redis)

메시지 지향 미들웨어(Message Oriented Middleware, MOM) 란? 메시지 지향 미들웨어(Message Oriented Middleware, MOM)이란, 응용 프로세스 간 비동기 방식의 데이터 통신을 통해, 메시지를 전달 해주는 시스템을 뜻하며, 주로 대용량 배치 처리, 이메일 전송, 채팅 서비스 등에 주로 많이 사용됨 👉 메시지를 전달하는 방식의 모델 2가지 Message Queue 기반 모델 발행(Publish)-구독(Subscribe) 기반 모델 📌 메시지 지향 미들웨어 시스템 사용시 장점 비동기성 작업 처리 프로세스간 결합도(의존성)가 낮음 메시지 생산자(Producer)나, 메시지 소비자 (Consumer)에 대한 확장성이 좋음 메시지 생산자의 서버가 다운되도, Messag..

DB/이론 2022.11.26

[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] 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] 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

[DB] ORM 이란?

ORM 이란? ORM(Object Relational Mapping)의 약자로 객체와 DB 간의 관계 매핑해주는 개념. 주로 MVC, MVT와 같은 패턴을 가진 프레임워크에서 많이 사용하는 기술 ORM 장점 ORM을 이용해서 DB를 객체 관점에서 쉽게 접근 가능 ORM을 통해 가독성을 높이고, 비즈니스 로직(코드)에 집중하여 생산성을 높임 + 유지보수 ORM을 통해 코드를 바탕으로 SQL Query로 자동 변환하여 데이터 조작 ORM을 통해 객체 간의 관계를 SQL Query Message바탕으로 SQL을 자동으로 생성하여 불일치를 해결 DBMS에 대한 종속성 저하로 대부분의 ORM 솔루션은 DB에 종속적이지 않을 수 있다. ORM 단점 쿼리가 복잡해지면 사용하기 어려움 (통계, 데이터분석 등) ORM ..

DB/이론 2022.06.02

[DB] SQL vs NoSQL 차이점

SQL (관계형 DB) vs NoSQL (비관계형 DB) SQL NoSQL 종류 MySQL, PostgreSQL, MariaDB, SQLite MongoDB, Amazon Dynamo DB, Redis 특징 장점 정해진 Schema와 데이터 관계에 따라 저장 정규화가 잘되어 있음 (데이터 중복에 최적화 됨) 단점 다만, 스키마 변경시 어렵다는 점 장점 자유로운 Schema로 비관계형 데이터 저장 형태 데이터 중복(비정규화)이 발생하기 쉬움 스케일링 고려 하기 좋고 가용성이 좋다. 단점 데이터 중복 저장 발생 가능 Join이 힘들 수 있음 (서로 다른 컬렉션의 깊은 depth에 각각 Data 존재) 역할 관계가 중요하고 데이터가 자주 수정되는 경우 연관 테이블이 없는 경우, CRUD 읽기(R) 위주고 업데..

DB/이론 2022.05.17