NoSql

NoSQL이란?

superminy 2016. 7. 13. 20:17
728x90
  • NoSQL은 ‘Not Only SQL’의 약어로, 일반적인 DBMS로 처리하기에 비용이 많이 들거나 효과적이지 못한 부분을 해결할 목적으로 개발됐습니다. 대용량의 로그 처리나 Write가 많은 경우에 사용하지만, 각자 목적에 따라서 선택할 수 있는 제품이 다르고 DBMS 만큼 쉽게 사용할 수는 없습니다.
  • NoSQL은 크게 세 가지 범주인 Key-Value Store, Column Oriented Store, Document OrientedStore로 나뉩니다. 이 책에서 소개하는 Memcached, Redis 같은 캐시 솔루션이 
  • Key-Value Store :  key로 value를 바로 찾을 수 있는 해시의 데이터 구조를 사용
  • Column Oriented Store : 일반적인 RDBMS가 하나의 Record 단위로 저장되는 Row Oriented Store
  • Column Oriented Store :  컬럼(Column)별 정보를 모아서 저장하는 형태. HBase, Cassandra 같은 것이 대표적

  • Document Oriented Store : 데이터를 JSON 형태로 저장하는 구조입니다. 그래서 스키마를 바꾸기 쉬우며 MongoDB, CouchDB, Riak 등이 대표적인 제품


  • NoSql vs Sql


 

관계형 데이터베이스

NoSQL 데이터베이스
데이터 모델관계형 모델은 데이터를 행과 열로 구성된 테이블이라고 하는 테이블 형식 구조로 정규화합니다. 스키마는 테이블, 열, 인덱스, 테이블 간 관계 및 기타 데이터베이스 요소를 정의합니다.비관계형(NoSQL) 데이터베이스는 일반적으로 스키마를 강제 적용하지 않습니다. 파티션 키는 값, 열 세트, 반정형 JSON, XML 또는 관련 항목 속성을 포함하는 다른 문서에 일반적으로 사용됩니다.
ACID 속성기존의 RDBMS(관계형 데이터베이스 관리 시스템)는 약어인 ACID(원자성, 일관성, 격리성, 내구성)로 정의된 일련의 속성 세트를 지원합니다. 원자성은 트랜잭션이 완전히 실행되거나 전혀 실행되지 않는 "모두 실행 또는 전혀 실행되지 않음"을 의미합니다. 일관성은 트랜잭션이 실행되면 데이터가 데이터베이스 스키마를 준수해야 함을 의미합니다. 격리성은 동시에 일어나는 트랜잭션이 다른 트랜잭션과 별도로 실행되어야 함을 의미합니다. 내구성은 예기치 못한 시스템 장애 또는 정전으로부터 마지막으로 알려진 상태로 복원하는 기능입니다.NoSQL 데이터베이스는 종종 수평으로 확장되는 더 유연한 데이터 모델용 기존 RDBMS(관계형 데이터베이스 관리 시스템)의 일부 ACID 속성을 교환합니다. 이러한 특성은 기존 RDBMS가 성능 병목 지점, 확장성, 운영상의 복잡성, 늘어나는 관리 업무 및 지원 비용 문제가 복합적으로 발생할 경우 이를 해결하기 위한 구조적 문제에 직면하면 NoSQL 데이터베이스가 탁월한 선택을 할 수 있도록 지원합니다.
성능성능은 일반적으로 디스크 하위 시스템에 따라 다릅니다. 최고 성능을 달성하기 위해서는 쿼리, 인덱스 및 테이블 구조를 최적화해야 합니다.성능은 일반적으로 기본 하드웨어 클러스터 크기, 네트워크 지연 시간 및 호출 애플리케이션의 기능입니다.
확장 가능더 빠른 하드웨어로 "확장"이 간편해 집니다.  분산 시스템을 확장하기 위해서는 관계형 테이블에 대해 추가적인 투자가 필요합니다.지연 시간을 늘리지 않고 처리량을 향상시키기 위해 저비용 하드웨어의 분산 클러스터를 사용하여 "확장"하도록 설계되었습니다.
API구조화 질의어(SQL)를 준수하는 쿼리를 사용하여 데이터를 저장 및 검색하기 위한 요청이 전달됩니다. 이러한 쿼리는 RDBMS(관계형 데이터베이스 관리 시스템)에 의해 구문 분석 및 실행됩니다.객체 기반 API를 통해 앱 개발자가 인 메모리 데이터 구조를 쉽게 저장 및 검색할 수 있습니다. 파티션 키를 사용하면 앱에서 키 값 페어, 열 세트 또는 일련의 앱 객체 및 속성을 포함하는 반정형 문서를 검색할 수 있습니다.
도구SQL 데이터베이스는 일반적으로 데이터베이스로 구동되는 애플리케이션의 배포를 간소화하기 위해 다양한 도구 세트를 제공합니다.NoSQL 데이터베이스는 일반적으로 클러스터 관리 및 조정을 위한 도구를 제공합니다. 애플리케이션은 기본 데이터에 대한 주요 인터페이스입니다.

※ ACID 속성

    • 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.
    • 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다.
    • 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.
    • 고립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다. 공식적으로 고립성은 트랜잭션 실행내역은 연속적이어야 함을 의미한다. 성능관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건이다. 자세한 내용은 관련 문서를 참조해야 한다.
    • 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다. 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.


출처 : https://aws.amazon.com/ko/nosql/  (amazon webservice)

728x90
반응형