NoSQL 이란

 NoSQL은 "Not Only SQL" 이라고도 불린다. 우리가 익숙하게 사용하고있는 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다. 일반적인 DBMS로 처리하기에 비용이 많이 들거나 효과적이지 못한 부분을 해결할 목적으로 개발되었고 대용량의 로그 처리나 Write가 많은 경우에 사용되지만, 제품에 따라 각기 그 특성이 매우 달라서 NoSQL을 하나의 제품군으로 정의할 수는 없다.

NoSQL 등장 배경

빅 데이터 시대를 맞이하여 서비스를 제공하는 시스템에서 많은 양의 데이터를 효율적으로 처리가 필요하게 되었다. 이로인해 데이터의 분산처리( 샤딩 ), 빠른 쓰기 및 데이터의 안정성 ( 복제 ) 즉, 분산형 구조를 통해 데이터를 여러 대의 서버에 분산해 저장하고, 분산 시에 데이터를 상호 복제해 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 형태의 구조다.

RDBMS와의 다른 점

  1. 스키마가 없다. 즉, 데이터 관계와 정해진 규격 ( table - column 의 정의 )이 없다.
  2. 관계정의가 없으니 Join이 불가능 하다. ( 하지만 reference와 같은 기능으로 비슷하게 구현은 가능하다. ) 
  3. 트랜잭션을 지원하지 않는다. 
  4. 분산처리 (수평적 확장)의 쉽게 제공한다. 
    ( 대부분의 NoSQL DB는 분산처리기능을 목적으로 나왔기 때문에 분산처리 기능을 자체 프레임워크에 포함하고 있다 )

트랜젝션과 JOIN 기능은 분산 시스템에서 효율적으로 제공하기 어렵기 때문에 제외 되었으며, 높은 확장성을 제공하는 아키텍처를 위한 결정이다. 


그리고 위의 내용들은 어느 것이 장점이다 단점이다 말하기는 힘들다. 이유는 용도에 따라 장단점이 달라지기 때문이고 NoSQL이 RDBMS의 대안은 아니라는 것이다. 

NoSQL 제품군

Key/Value Store

key로 value를 바로 찾을 수 있는 해시의 데이터 구조를 사용

Memcached, Redis 같은 캐시 솔루션

Column Oriented Store

RDBMS가 하 나의 Record 단위로 저장되는 Row Oriented Store라고 할 수 있으며, Column Oriented Store는 컬럼(Column)별 정보를 모아서 저장하는 형태

HBase, Cassandra 같은 솔루션

Document Oriented Store

데이터를 JSON 형태로 저장하는 구조

스키마를 바꾸기 쉬우며 MongoDB, CouchDB, Riak 등이 대표적인 솔루션 


'DB' 카테고리의 다른 글

[SQL] SELECT 결과 UPDATE  (0) 2016.11.18
[SQL] SQL VS CODE  (0) 2016.10.27
[SQL] Union과 Union all 차이  (0) 2016.10.12
[SQL] Joins  (0) 2016.08.24
[DB] DB Index 란?  (2) 2016.07.06
[DB] NoSQL이란?  (0) 2016.06.26

우분투14.04 설치시 postgres를 선택해 설치할 수 있습니다.


권한을 postgres로 변경한 다음, postgres 데이터베이스에 들어갑니다.

1
2
$ sudo su postgres
$ psql -d postgres -U postgres
cs

psql을 입력하면 postgres데이터베이스에 현재 로그인된 계정으로 로그인을 시도합니다. 


1
2
3
postgres=# create user test with password '1234';
CREATE ROLE
 
cs

postgres 데이터베이스에 비밀번호 1234를 가진 test라는 유저를 생성합니다. 


1
2
3
postgres=# create database test;
CREATE DATABASE
 
cs

test라는 데이터베이스를 생성합니다.


다음 /etc/psotgresql/9.3/main/postgresql.conf를 편집기로 열어서 #listen_address='localhost'부분을 listen_address='*'로 바꿉니다.


/etc/psotgresql/9.3/main/pg_hba.conf를 편집기로 엽니다.


마지막 부분을 아래와 같이 변경해줍니다.

1
2
3
# TYPE DATABASE USER ADDRESS METHOD
local   all                    md5
host    all     all  0.0.0.0/32 md5
cs

만약 

local  postgres         peer 라는 줄이 있으면 지웁니다.

다음 sudo service postgresql restart 또는 sudo /etc/init.d/postgresql restart로 재시작합니다.


pgadmin3을 실행해 서버를 추가합니다.





+ Random Posts