본문 바로가기
DATA Science/DataEngineering

데이터 시스템의 옵션들(Nosql, 병렬처리시스템, serverless)

by Rainbound-IT 2021. 6. 21.
반응형

NoSql

 

  • 구조화를 안해도 되며, 스키마가 sql에 비해 더 적다
  • NoSQL 데이터베이스에서는 데이터의 액세스 및 관리를 위해 다양한 데이터 모델을 사용
  • Scale out
  • highly scalable, less expensive maintain
  • 큰 테이터 볼륨, 짧은 지연 시간과 유연한 데이터 모델이 필요한 애플리케이션에 최적화되었으며, 이는 다른 데이터베이스의 데이터 일관성 제약 일부를 완화

 

사용해야하는 이유

 유연성과 확장성을 비롯해 고성능의 매우 기능적인 데이터베이스를 필요로 하는 모바일, 웹이나 게이밍과 같은 다양한 현대적인 애플리케이션에 적합하기 때문이다.

  • 유연성: NoSQL 데이터베이스는 일반적으로 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발을 가능하게 해줍니다. 이같은 유연한 데이터 모델은 NoSQL 데이터베이스를 반정형 및 비정형 데이터에 이상적으로 만들어 줍니다.
  • 확장성: NoSQL 데이터베이스는 일반적으로 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되었습니다. 일부 클라우드 제공자들은 완전관리형 서비스로서 이런 운영 작업을 보이지 않게 처리합니다.
  • 고성능: NoSQL 데이터베이스는 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 관계형 데이터베이스를 통해 유사한 기능을 충족하려 할 때보다 뛰어난 성능을 얻게 해줍니다.
  • 고기능성: NoSQL 데이터베이스는 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공합니다.

 

NoSQL 데이터베이스 유형

  • 키 값: 키 값 데이터베이스는 분할성이 커서 다른 유형의 데이터베이스로는 불가능한 범위까지 수평 확장을 가능하게 합니다. 게이밍, 광고 기술 및 IoT와 같은 사용 사례에서 키 값 데이터 모델이 특별히 적합하다는 것을 보여줍니다. Amazon DynamoDB는 어떠한 크기의 워크로드에 대해서도 지연 시간을 일관성 있는 한 자릿수의 밀리초로 제공하기 위해 고안되었습니다
  • 문서: 애플리케이션 코드에서 데이터는 종종 객체 또는 JSON 유사 형식의 문서로 표시됩니다. 이 형식이 개발자에게 효율적이고 직관적인 데이터 모델이기 때문입니다. 문서 데이터베이스를 사용하면 개발자들이 자신의 애플리케이션 코드에서 사용하는 것과 동일한 문서 모델 형식을 사용하여 데이터베이스에서 보다 손쉽게 데이터를 저장하고 쿼리할 수 있습니다. 문서 및 문서 데이터베이스의 유연하고 반구조화된 계층적 특성을 통해 개발자는 계속해서 애플리케이션의 요구를 발전시킬 수 있습니다. 문서 모델은 각 문서가 고유하고 시간에 따라 진화하는 콘텐츠 관리 시스템, 사용자 프로파일 및 카탈로그에서 사용할 수 있습니다. 
  • 그래프: 그래프 데이터베이스의 목적은 고도로 연결된 데이터세트를 사용하는 애플리케이션을 쉽게 구축하고 실행하는 것입니다. 그래프 데이터베이스의 일반적인 사용 사례로는 소셜 네트워킹, 추천 엔진, 사기 감지 및 지식 그래프가 있습니다.

 

 

 

                              관계형 데이터베이스                                NoSQL 데이터베이스

최적의 워크로드 관계형 데이터베이스는 일관성이 뛰어난 온라인 트랜잭션 프로세싱(OLTP) 애플리케이션을 위해 설계되어 온라인 분석 프로세싱(OLAP)에 적합합니다. NoSQL 데이터베이스는 낮은 지연 시간의 애플리케이션을 포함한 수많은 데이터 액세스 패턴에 맞도록 설계되었습니다. NoSQL 검색 데이터베이스는 반정형 데이터에서 분석을 위해 설계되었습니다 
데이터 모델 관계형 모델은 데이터를 행과 열로 구성된 테이블로 정규화합니다. 스키마는 테이블, 행, 열, 인덱스, 테이블 간 관계, 기타 데이터베이스 요소를 정확하게 규정합니다. 데이터베이스는 테이블 사이의 관계에서 참조 무결성을 실현합니다.  NoSQL 데이터베이스는 키-값, 문서, 그래프 등 성능과 규모 확장에 최적화된 다양한 데이터 모델을 제공합니다. 
ACID 속성 관계형 데이터베이스는 원자가, 일관성, 격리성 및 지속성(ACID, atomicity, consistency, isolation, and durability)의 속성을 제공합니다:
  • 원자가는 완벽하게 실행하거나 혹은 전혀 실행하지 않는 트랜잭션을 필요로 합니다.
  • 일관성은 트랜잭션이 커밋되면 데이터가 데이터베이스 스키마를 준수하도록 요구합니다.
  • 격리성은 동시에 일어나는 트랜잭션들이 각기 별도로 실행되어야 함을 의미합니다.
  • 내구성은 예기치 못한 시스템 장애 또는 정전 시 마지막으로 알려진 상태로 복구하는 기능을 필요로 합니다.
NoSQL 데이터베이스는 흔히 수평으로 확장할 수 있는 보다 유연한 데이터 모델을 위해 관계형 데이터베이스의 일부 ACID 속성을 완화함으로써 조정합니다. 이로써 NoSQL 데이터베이스는 단일 인스턴스의 한계를 넘어 수평으로 확장해야 하는 사용 사례에서 높은 처리량, 낮은 지연 시간을 위한 탁월한 선택이 됩니다.
성능 성능은 일반적으로 디스크 하위 시스템에 따라 다릅니다. 최고 성능을 달성하기 위해서는 쿼리, 인덱스 및 테이블 구조를 자주 최적화해야 합니다. 성능은 일반적으로 기본 하드웨어 클러스터 크기, 네트워크 지연 시간 및 호출 애플리케이션의 기능입니다.
확장 관계형 데이터베이스는 일반적으로 하드웨어의 계산 성능을 높이거나 읽기 전용 워크로드의 복제물을 추가함으로써 확장됩니다. NoSQL 데이터베이스는 일반적으로 거의 무제한적인 범위에서 일관된 성능을 제공하는 처리량 제고를 위해 분산형 아키텍처를 사용해 액세스 패턴이 확장 가능하기 때문에 분할성이 있습니다.
API 데이터를 저장 및 검색하기 위한 요청은 SQL(구조화 질의 언어)을 준수하는 쿼리를 사용하여 전달됩니다. 쿼리는 관계형 데이터베이스에 의해 구문 분석되고 실행됩니다. 객체 기반 API를 통해 앱 개발자가 데이터 구조를 쉽게 저장 및 검색할 수 있습니다. 파티션 키를 사용하면 앱에서 키-값 페어, 열 세트 또는 일련의 앱 객체 및 속성을 포함하는 반정형 문서를 검색할 수 있습니다.

 

분산처리 프레임워크

hadoop, spark, presto가 있다.

distributed stoarage system/ map reduce

spark 이점 - hadoop 보다 real time/ python, java,scala api제공함/ sql query 환경 제공

맵리듀스(MapReduce)는 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어 프레임워크다.
이 프레임워크는 페타바이트 이상의 대용량 데이터를 신뢰도가 낮은 컴퓨터로 구성된 클러스터 환경에서 병렬 처리를 지원하기 위해서 개발되었다.
이 프레임워크는 함수형 프로그래밍에서 일반적으로 사용되는 Map과 Reduce라는 함수 기반으로 주로 구성된다

 

서버리스 프레임워크

Triggered by http requests, database events, queuing services 

같은 상황이 발생했을때 함수를 써서 처리하는것

  • 처리한 만큼 비용을 지불(서버리스를 활용하면 운영 체제 및 파일 시스템 관리, 보안 패치, 부하 분산, 용량 관리, 스케일링, 로깅, 모니터링과 같은 일상적인 태스크를 모두 클라우드 서비스 제공업체에 이관하기 때문이다)
  • 서버리스는 클라우드 제공업체가 클라우드 인프라와 애플리케이션의 스케일링을 모두 관리한다는 점에서 다른 클라우드 컴퓨팅 모델과 차이가 있다.
  • 백엔드(Backend-as-a-Service, BaaS)와 서비스로서의 기능(Function-as-a-Service, FaaS) 두 종류가 있다.

BAAS

BaaS는 개발자가 다양한 제3사 서비스와 애플리케이션에 액세스할 수 있게 해준다.

 

FAAS 특징

개발자들이 일반적으로 서버리스를 가리킬때 FAAS를 말한다.

  • 스테이트리스(stateless): 데이터 통합이 더욱 간소화됨
  • 일회성: 매우 단기간에 실행 가능
  • 이벤트에서 트리거: 필요에 따라 자동으로 실행 가능
  • 전체 관리형: 클라우드 제공업체가 관리를 전담하므로 상시 가동 애플리케이션 및 서버 대신 필요한 만큼만 비용 지불

 

 

출처 : aws, rehat

반응형

댓글