DB
-
[DB] 클러스터링(Clustering)DB 2024. 1. 21. 16:23
클러스터링 클러스터링은 동일한 데이터베이스를 여러대의 서버가 관리하도록 수평적인 구조로 분산 환경을 구성하여 Failover 시스템을 구축할 수 있습니다. 데이터베이스 서버의 상태가 1개라도 Active 상태이면 장애 없이 서비스를 운영할 수 있습니다. 또한 여러대의 데이터베이스 서버에 로드 밸런싱을 통해 부하 분산도 가능합니다. 동작 방식 Active Active 여러대의 데이터베이스 서버를 모두 Active 상태로 두는 방식으로 서버 하나에 장애가 발생하더라도 다른 서버가 역할을 바로 대행할 수 있어 서비스의 중단을 방지할 수 있습니다. 하나의 데이터베이스를 공유하게 된다면 병목이 발생할 수 있습니다. 활성 상태의 서버를 동시에 여러대를 운영한다면 비용이 증가하게 됩니다. Active StandBy ..
-
[DB] 샤딩 (Sharding)DB 2023. 10. 15. 15:11
DB의 데이터의 볼륨이 커지면 DB의 읽기, 쓰기 성능이 저하될 수 있는데 이러한 문제점을 분산 처리 기법으로 방지할 수 있습니다. 샤딩은 분산 처리 기법 중의 하나로 테이블의 row들을 여러 대의 DB 서버들에 물리적으로 나누어 분산 저장하는 기법입니다. 샤딩은 수평 파티셔닝과 유사하지만 파티셔닝은 동일한 서버에 저장하지만 샤딩은 데이터를 물리적으로 서로 다른 서버에 분산하여 저장한다는 차이점이 있습니다. 장점 여러 서버에 분산되어 저장이 되어 쿼리 스캔 범위가 줄어 처리 속도가 향상됩니다. 서버의 replica를 진행하여 이중화 구성이 용이합니다. 단점 어플리케이션(코드)의 복잡도가 증가합니다. 핫스팟이라고 불리는 데이터가 특정 샤드에 몰리는 케이스의 경우 샤딩이 무의미해집니다. 샤딩 방식 모듈러 샤..
-
[DB] 트랜잭션 격리 수준 (Transaction isolation level)DB 2023. 10. 7. 19:38
트랜잭션 격리 수준 이란 동시에 여러 트랜잭션이 수행될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하는 데이터를 조회 가능 여부를 결정하는 것입니다. 종류는 총 4가지로 Read uncommitted, Read committed, Repeatable read, Serializable이 있습니다. Read uncommitted 한 트랜잭션에서 변경된 데이터를 Commit, Rollback 여부와 관계 없이 다른 트랜잭션에서 조회할 수 있는 Dirty read가 발생하고 데이터의 정합성과 일관성이 깨지게됩니다. Read committed 실제 테이블의 데이터를 조회하는 것이 아닌 Undo 영역에 백업된 데이터를 조회합니다. 그로인해 Read uncommitted에서 발생하던 Commit되지 않은 트랜잭션에서 ..
-
[DB] 인덱스(Index)DB 2023. 9. 16. 19:08
인덱스란? 인덱스(Index)는 데이터베이스의 테이블 검색에 대한 속도를 향상해 주는 구조입니다. 테이블의 특정 컬럼에 인덱스를 생성하면 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 컬럼의 값과 데이터의 물리적 주소를 key, value 형태로 저장합니다. 인덱스를 효율적으로 사용하기 위해서는 데이터의 양이 많고 중복이 적고 조회가 많거나 Insert, Update, Delete 작업의 빈도가 적은 컬럼에 사용하는 것이 좋습니다. 장점 인덱스를 적용하지 않은 상태라면 풀 테이블 스캔을 해야했지만 인덱스를 사용하면 데이터들이 정렬된 형태를 갖고 있어 빠르게 검색을 할 수 있습니다. 그로 인해 테이블을 검색하는 속도와 성능이 향상되어 시스템의 부하를 줄일 수 있습니다. 단점 인덱스를 항상 정렬된 상..
-