MySQL Master-Slave 구현(Docker)
·
Programming/DBMS
- 이번 포스팅으로는 RDBMS 중 MySQL 을 Master-Slave 구조로 구현하는 방식을 정리하겠습니다. - DBMS 분산DBMS 는 소프트웨어의 가장 중요한 자원이라 할 수 있는 데이터를 직접 저장하고 관리하는 부분이니만큼 매우 중요하면서, 여러 응용 소프트웨어의 요청을 받아들이기에 전체 서비스 내에서 가장 부하가 많이 발생할 수 있는 곳이기도 합니다. 서버-클라이언트 구조에서 서버가 N개의 클라이언트로부터 요청을 받아 처리를 하듯, DBMS 는 N개의 서버로부터 요청을 받아 처리를 한다고 생각하시면 됩니다. 고로 데이터 요청의 부하를 분산하는 방식을 사용하여 전체 서비스의 처리 효율을 높일 수 있을 것입니다. - Master-Slave 구조 데이터베이스 분산을 통한 부하 분산 기술은 여러 방식..
데이터베이스에서 Nullable 컬럼 Unique 제약
·
Programming/DBMS
- 데이터베이스 테이블에서 Nullable 컬럼에 Unique 제약을 걸면 어떻게 될까요? 예를들어 test 테이블의 a 라는 컬럼을 Nullable Int 로 두고, 이에 Unique 제약을 걸어보겠습니다.  위와 같은 테이블로 실험해보았습니다. 만약 unique 값인 a 가 1 로 존재하는 상황에서 동일한 1 값으로 insert 를 하려하면 아래와 같이 에러가 나고,   a 를 null 로 입력하면 중복 입력이 됩니다.RDB 에서 null 은 값으로 취급되지 않기에 중복 방지 제약에 걸리지 않습니다.
데이터베이스 논리적 삭제와 제약 (논리적 삭제 시 유니크 제약 사용)
·
Programming/DBMS
- 데이터베이스의 논리적 삭제란,RDBMS SQL 로 설명하자면, Delete 명령어를 사용하여 데이터 행을 삭제하는 것이 아니라, 데이터 행에 해당 행이 삭제된 상태인지 활성화된 상태인지를 나타내는 정보를 수정하고 다루는 방식입니다.실제로 Delete 명령어를 사용하여 데이터를 삭제하는 방식을 물리적 삭제라고 부르죠. 논리적 삭제에 대한 예를 들어 보겠습니다. 회원 테이블에 회원이 삭제되었는지 아닌지를 판가름하기 위해 bit 타입의 is_delete 컬럼을 추가하고, 이 컬럼이 0이라면 활성 상태, 1이라면 삭제된 상태로 간주하여 select 문 같은 곳에서 데이터 조회시 삭제되지 않은 데이터만을 서비스에 사용하도록 처리하는 것이죠. 이 방식의 장점은, 기업 및 사용자에게 무척이나 중요한 데이터를 실질..