안녕하세요. 요즘 실제로 어플리케이션을 개발해서 서비스할 때, 단순히 하나의 어플리케이션을 구동하는 것이 아니라, 재해, 재난, 장애 등 여러 문제가 발생하여 어플리케이션이 다운되었을 경우 대비해 여러개의 서버에 어플리케이션을 구동시켜서 클러스터링을 통해 대응하는데, 데이터베이스도 마찬가지로 하나의 디비 서버가 죽었을 때를 대비해 복제를 통한 대응을 하려고하는데 기본적으로 몽고 DB에서는 복제의 기능을 지원합니다. 따라서 오늘은 Mongo DB의 Replication에 대해서 포스팅 해보려고 합니다. 1. Replication 설정(replica set) MongoDB에서는 기본적으로 Replication(복제)를 지원합니다. 이는 서비스의 지속성과 안전성을 제공하는 데이터베이스 시스템의 설비이며, Mo..
안녕하세요. 오늘은 NoSQL의 종류 중 문서(document)인 MongoDB에 대해서 간단한 소개, 설치, 기본 구성 및 실행하는 방법에 대해서 포스팅 하려고합니다. 1. MongoDB란? MongoDB는 SQL뿐만 아니라 NoSQ(Not Only SQL)이라는 데이터베이스 계열에 속하는 문서(document) 데이터베이스입니다. MongoDB에서 record는 javascript에서의 JSON 객체와 매우 유사한 동작을 하는 문서입니다. 문서의 값은 해당 필드의 키(key)로 조회할 수 있습니다. 문서는 key / field 를 가질 수 있으며, 다른 필드는 사용할 수 없으므로 MongoDB는 매우 유연합니다. 이는 MySQL이나 PostgreSQL과 같은 RDB와는 다르며, 필드는 테이블의 열에 ..
안녕하세요. 오늘은 최근 많이 쓰이고 있는 데이터베이스 종류에 대해서 비교하는 포스팅을 하려고합니다. 대표적으로 분류하면 RDBMS, ORDBMS, NOSQL, NoSQL에 포함되어 있지만 In-Memory DB등이 있으며, 그 중, RDB, NoSQL, In-Memory DB에 대해서 비교해보려고 합니다. 1. RDB(Relational Database) RDB는 관계형 데이터베이스며, 대표적으로 Mysql, Oracle, PostgreSql 등이 가장 많이 알려진 RDB입니다. 아래의 그림과 같은 구조를 나타냅니다. - 특징 1) 테이블(Table) 마다 스키마(Schema)를 정의해야 됩니다.2) 데이터 타입과 제약(Constraint)를 통해서 데이터의 정확성을 보장합니다.3) SQL 질의문을 통..
안녕하세요. 오늘은 테이블 결합에 대해서 포스팅하려고 합니다. 테이블 결합에는 크게 '내부 결합'과 '외부 결합'이 있습니다. 1. 내부 결합( INNER JOIN ) 두 테이블간의 조인 조건을 만족하는 행만 결과 값으로 반환합니다. 집합에서 예를 들면, 교집합이라고 간단하게 생각하시면 이해하기가 쉽습니다. 사용하는 방법은 아래와 같습니다. SELECT * FROM 테이블 명1 INNER JOIN 테이블 명2 ON 결합조건 위의 구문을 보시면, INNER JOIN이 사용되었는데, 여기서 INNER는 '안쪽'이라는 의미이며, JOIN은 '연결시킨다'라는 의미입니다. 즉, 'INNER JOIN'은 내부결합이라는 의미가 됩니다. INNER JOIN에서는 ON을 사용하여 결합조건을을 지정합니다. 그럼 간단한 예..
안녕하세요. 오늘은 집합 연산에 대해서 포스팅 하려고 합니다. 지금까지 진행했던 SQL 명령은 대부분 '하나의 테이블'을 사용해왔습니다. 오늘은 '여러 개의 테이블'을 사용해 테이터를 검색하는 방법에 대해 알아보겠습니다. 1. SQL과 집합 집합이라고 하면 보통 벤다이어 그램을 많이 떠올리실 겁니다. 벤다이어 그램에서는 하나의 원이 곧 하나의 집합입니다. 원 안에는 몇가지 요소가 포함되어 있는데 원 안의 숫자들을 요소라고 합니다. 그리고 데이터베이스에서는 테이블의 행이 요소에 해당하며, 행은 여러 개의 열로 구성되는 경우도 있으므로 수치상으로는 복수의 값이 존재합니다. 하지만, 집합의 요소라는 측면에서 보면 하나의 행이 하나의 요소가 됩니다. 즉,SELECT 명령을 실행하면 데이터베이스에 질의하며, 그 ..
안녕하세요. 오늘은 데이터베이스 객체 중의 하나인 뷰(View)에 대해서 포스팅하려고 합니다. 이번 포스팅에서는 뷰를 정의하고, 작성 및 삭제하는 방법에 대해서 알아보겠습니다. 뷰(View)? 데이터베이스 객체란 테이블이나 인덱스 등 데이터베이스 안에 정의하는 모든 것을 말합니다. 뷰 역시 데이터베이스 객체 중 하나입니다. 이처럼 데이터베이스 객체로 등록할 수 없는 SELECT 명령을 객체로서 이름을 붙여 관리할 수 있도록 한 것이 뷰입니다.따라서, 뷰를 참조하면 그에 정의된 SELECT 명령의 실행 결과를 테이블처럼 사용할 수 있습니다. 뷰는 테이블처럼 취급할 수 있지만 '실체가 존재하지 않는다'라는 의미로 '가상 테이블'이라 불리기도 합니다. SELECT 명령으로 이루어지는 뷰는 테이블처럼 데이터를 ..
안녕하세요. 오늘은 '색인'이라고도 불리는 인덱스(index)에 대해서 알아볼 것이며, 인덱스는 데이터베이스 객체 중 하나입니다. 이번 포스팅에서는 인덱스가 무엇인지, 그 역할과 구조는 어떻게 이루어졌는지 알아보겠습니다. 인덱스? 인덱스는 테이블에 붙여진 '색인'이라 할 수 있습니다. 인덱스의 역할은 검색 속도의 향상이며, 여기서 '검색'이란 SELECT 명령에 WHERE 조건을 지정하고 그에 일치하는 행을 찾는 일련의 과정을 말합니다. 테이블에 인덱스가 지정되어 있으면 효율적으로 검색할 수 있으므로 WHERE로 조건이 지정된 SELECT 명령의 처리 속도가 향상됩니다.인덱스의 구조도 목차나 색인이 제목, 키워드별 페이지 번호가 적혀 있듯이, 데이터베이스의 인덱스에는 검색 시에 쓰이는 키워드와 대응하는 ..
안녕하세요. 오늘은 제약사항에 대해서 포스팅 해보려고 합니다. 우선 '제약 조건'의 의미에 대해서 알아보고 간단한 예제를 통해 제약 조건에 대해서 알아보겠습니다. 제약조건(Constraint)? 제약조건(Constraint)이란, 데이터의 무결성을 지키기 위해 제한된 조건을 의미합니다. 즉, 데이터를 삽입할 때 무조건적으로 삽입되는 것이 아니라 어떠한 조건을 만족했을 경우에만 데이터가 삽입되도록 제약을 할 수 있는 것이라고 생각하시면 됩니다. 우선 기본적인 제약 조건들의 사용법에 대해서 알아보겠습니다. // 제약조건 확인하기DESC 데이터베이스 명.테이블 명; // 제약조건 삭제ALTER TABLE [테이블 명] DROP CONSTRAINT [제약조건 이름];ALTER TABLE [테이블 명] DROP ..
- Total
- Today
- Yesterday