본문 바로가기

db

(5)
[데이터베이스] 리플리케이션(Replication) 리플리케이션이란? 데이터베이스 리플리케이션은 운용중인 데이터베이스의 복제본을 만들어 운용하는 것을 말한다. 리플리케이션은 실제 데이터의 백업, 시스템의 성능 향상 등에 사용이 된다. 원본 데이터베이스를 master, primary, leader 등으로 부르고 복제된 데이터베이스를 slave, secondary, replica 등으로 부른다. 리플리케이션의 목적 리플리케이션은 기본적으로 데이터베이스의 안정성을 높히기 위해 사용됩니다. 다양한 이유가 있지만 대표적인 목적은 다음과 같다. 데이터 무결성 및 복구 : 원본 데이터베이스에 문제가 생겼을 때 복제본을 통해 데이터를 복구할 수 있다. 데이터 가용성 및 서비스 연속성 향상 : 하나의 데이터베이스에 장애가 발생해도 다른 위치에서 데이터베이스를 사용할 수 ..
[데이터베이스] 샤딩(Sharding) Sharding이란? 하나의 데이터베이스 데이터가 커지게 되면 병목현상, 용량 부족 등의 성능에 안좋은 영향을 미치게 된다. 또한 이 문제들은 실제 서비스의 CRUD를 느리게 만드는 원인이 되고 사용자 경험까지 영향을 준다. 이런 문제를 해결하기 위해 사용되는 것이 샤딩이다. 샤딩은 데이터베이스를 작은 그룹들로 나누고 데이터들 또한 각 데이터베이스에 나누어 분할하는 것을 의미한다. 각 분할된 부분을 샤드라고 하고 여러 데이터베이스 서버에 분할하여 저장함으로써 부하 문제를 해결한다. 파티셔닝의 수평 분할(Horizontal partitioning)을 생각해 볼 수 있는데, 수평 분할이 하나의 데이터베이스 내에서 테이블의 데이터를 분할하는 방식이었다면 샤딩은 분할된 데이터를 다수의 데이터베이스에 보관한다. ..
[데이터베이스] 트랜잭션 격리 수준(Transaction Isolation Level) 트랜잭션 격리 수준(Transaction Isolation Level)이란? 데이터베이스에서 동시에 여러 트랜잭션이 수행될 때 발생하는 이상 현상에 대한 허용 수준이라고 볼 수 있다. 제약이 없을수록 제약사항이 없기 때문에 트랜잭션의 처리량은 증가하지만, 데이터의 불일치가 발생할 가능성인 높아진다. 트랜잭션의 동시성 문제를 발생하지 않도록 막을 수 있지만, 제약사항이 많아지고 처리할 수 있는 트랜잭션의 수가 줄어들어 DB의 처리량이 크게 하락하게 된다. 따라서 사용자가 트랜잭션으로 발생할 수 있는 문제들을 인식하고, 필요에 의해서 적절히 사용할 수 있도록 레벨을 나누었는데 그것이 트랜잭션 격리 수준(Transaction Isolation Level)이다. SQL:1992 표준에서 제시한 트랜잭션 격리 수..
[데이터베이스] Database Connection Pool, DBCP Database Connection Pool 이란? 편의를 위해 DBCP로 칭하도록 하겠습니다. DBCP는 미리 연결된 Connection을 Connection Pool에 만들어두고, 필요에 의해 사용하고 반환함으로써 Connection을 재활용할 수 있게 해주는 기법을 의미한다. DBCP는 연결 생성, 연결 재사용, 연결 제한, 연결 유지, 연결 검사와 같은 주요한 기능을 제공한다. 연결 생성 : Connection을 얼마나 생성할 지 지정할 수 있다. 연결 재사용 : 생성된 Connection을 반환받아 재사용할 수 있다 연결 제한 : DBCP 내부의 Connection을 얼마나 개방할 지 제한한다. 이를 통해서 시스템 부하를 관리할 수 있다. 연결 유지 : Connection이 사용되고 있지 않아도..
[MongoDB]pymongo.errors.ServerSelectionTimeoutError 문제 pymongo.errors.ServerSelectionTimeoutError: cluster0-shard-00-00.4bw3y.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get issuer certificate (_ssl.c:997),cluster0-shard-00-01.4bw3y.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get issuer certificate (_ssl.c:997),cluster0-shard-00-02.4bw3y.mongodb.net:27017: [..