Not only sql 정리상봉 이NoSQL이 등장하게된 계기는, 기존 RDBMS는 구조상 분산처리에 적합하지 않았습니다. 데이터베이스를 분산 저장하는 샤딩이라는 기술이 있지만, 어플리케이션 레벨에서 직접 구성해야 했기 때문에 번거로웠고, 다른 방법인 오라클의 공유 디스크 기술의 경우에는 라이선스 문제가 있었습니다. 또한 하드웨어의 성능을 증가시키는 scale-up 확장방식에 적합하였기 때문에 장비수를 늘리는 scale-out 방식을 사용할 수 없어 비용부담이 컸습니다. 두번째로 SNS등의 발전으로 처리할 데이터가 폭발적으로 증가하고, 데이터의 형식은 예측할 수 없어 스키마가 정해져있는 기존 관계형 데이터베이스를 대체할 방법이 필요했습니다. 세번째로, RDBMS 시장은 주로 오라클과 마이크로소프트, IBM같은 상용 DBMS가 대부분 차지하고 있는 상황이여서, Mysql과같은 오픈소스의 선택지가 넓은 NoSQL을 고려하게 되었습니다.
기존의 RDBMS와 NoSQL에 대해 정리한 표 입니다. 가장 큰 차이는 각각 ACID와 BASE특성을 갖고 있다는 점과 schema 구조의 유연성의 차이, 하드웨어 업그레이드 방식의 수직적 확장에 의존하는 RDBMS와는 달리 NoSQL 수평적 확장이 가능하고, noSQL은 데이터를 저장할 때의 형식에 의존하지 않습니다. 또한 NoSQL은 집합 단위로 데이터가 저장됩니다. 그럼 특징을 하나씩 살펴보겠습니다.
우선 기존 RDBMS부터 알아보자면 각각 트랜잭션이 무조건 다 완료되거나 다 실패한다는 ATOMICITY(원자성), 트랜잭션이 데이터의 일관성(공통되는 특징)에 영향을 끼치면 안된다는 CONSISTENCY(일관성) , 트랜잭션이 순차적으로 동시에 한개씩 실행됨을 보장하는 ISOLATION(독립성), 트랜잭션의 결과가 영구히 남아있어야 한다는 DURABILITY(지속성) 4개의 특성 ACID라고 하고, 이 특성을 기반으로 두고 있습니다.
이와 반대로 NoSQL은 기본적으로 시스템이 언제나 사용할 수 있는 상태로 유지될 수 있도록 지원하는 availability, 아래 eventually consistency를 위해 input 없이도 시스템 상태가 바뀔 수 있다는 soft-state, 입력 당시엔 일관성이 유지된 상태가 아니지만, 특정 상황엔 일관성이 유지된 상태가 된다는 Eventually consistency 총 3개의 특성 BASE라 하고, 기반으로 두고 있습니다.
RDBMS와의 가장 큰 차이점은 noSQL같은 경우 무조건적으로 일관성을 보장하지 않습니다.
지금까지의 RDBMS와 다른 특징 데이터에 일관성이 보장되지 않아도 되고, 데이터 타입이 고정되지 않고 유연하며, 확장성이 좋다라는 특징 덕분에 빅데이터 처리에 유리합니다.
NoSQL은 아직 제품군이 제대로 정의되지 않았고, 제품 각각의 특성이 있기에 CAP 이론을 기반으로 제품을 구분합니다. Consistency는 모든 사용자가 서로 같은 시점의 데이터를 볼 수 있어야 한다는 특성, Availability는 시스템이 항상 작동해야 한다는 특성, 세번쨰 Tolerance to Network Partitions는 각각의 분산처리를 위해 나눠진 노드끼리 메시지 손실이 일어날 수 있다는 특성입니다. 1,2번째 특성의 경우 분산 시스템의 특성이지만, 3번째 P의 경우 네트워크 구성에 관련한 특성이고, 장애가 없는 네트워크란 존재하지 않기 때문에 모든 nosql 제품은 P를 택하게 됩니다. 즉, 네트워크 장애 상황(P)가 일어나면 A와 P중 무엇에 가중치를 두느냐의 차이입니다.
아까의 CAP는 P를 포함(즉, 장애가 있다는 상황)을 전제로 계산하기 때문에, 이를 개선하여 장애가 존재할시(partitio일시) Availability와 Consitency를, 일반 상황에선 consistency 와 latency 중 하나에 우선순위를 두어 제품군을 나누도록 권장하고 있습니다.
NoSQL 제품을 큰 범위로 나누자면 집합지향 모델과 그래프 모델로 이루어져 있습니다. 주로 집합지향 모델이 채택되고, 각각 키-밸류 형식, 도큐먼트 형식, 컬럼패밀리 방식으로 나눠집니다. 그래프 모델은 기존 RDBMS와 비슷한 특성을 가지고, 클러스터링에 적합하지 않으며 특수한 상황에만 사용됩니다.
NoSQL은 주로 aggregate이라는 단위를 씁니다. 오른쪽이 기존 관계형 데이터베이스가 값을 저장하는 방식이라면, 왼쪽에는 의미있는 단위로 값을 묶어 한번에 저장합니다. 이 방식으로 인해 여러 큰 클러스터에 값을 저장하는데 유리하고, 질의가 빨라집니다. 또한 하나의 집합이 하나의 노드에 저장됨을 보장합니다.
Agreegate oriented 모델 방식 중 Key-value oriented 방식은 Key값과 value값이 1대1로 매칭되는 가장 간단한 방식입니다. Put,get,delete 정도의 단순한 쿼리만 지원하고, 키로만 값을 찾아올 수 있습니다. value에는 들어가는 값의 형식을 제한하지 않습니다. 이 방식을 사용한 DB로는 aws dynamodb, redis가 있습니다.
Column family stores 방식은 하나의 키에 여러 컬럼을 묶어놓은 column family를 저장하는 방식으로 여러 개의 데이터를 한번에 저장할 수 있습니다. 이 방식을 사용한 db는 Cassandra, apache hbase가 있습니다.
DOCUMENT DATABASE 방식은 키와 – json, xml 등의 구조화된 데이터 형식으로 저장됩니다. 다른 도큐먼트 query languag를 사용시 도큐먼트 안의 데이터도 질의 가능합니다. 이 방식을 사용한 DB로는 mongoDB, CouchDB가 있습니다.
NoSQL은 RDBMS의 데이터 분석 – 테이블 디자인 – 쿼리 디자인 방식과 다르게 데이터 분석 – 쿼리 디자인 – 테이블디자인의 순서로 모델링합니다.
감사합니다.
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)InBum KimIt's the material announced at the "11th Korea Data Tech Seminar".
제11회 코리아 Data 테크 세미나에서 발표했던
"NoSQL시대의 MongoDB 4.0 활용" 발표 자료입니다.
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
NoSQL DatabaseSteve MinThis document provides an overview of NoSQL databases. It begins by defining NoSQL as non-relational databases that are distributed, open source, and horizontally scalable. It then discusses some of the limitations of relational databases that led to the rise of NoSQL, such as issues with scalability and the need for flexible schemas. The document also summarizes some key NoSQL concepts, including the CAP theorem, ACID versus BASE, and eventual consistency. It provides examples of use cases for NoSQL databases and discusses some common NoSQL database types and how they address scalability.
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)InBum KimIt's the material announced at the "11th Korea Data Tech Seminar".
제11회 코리아 Data 테크 세미나에서 발표했던
"NoSQL시대의 MongoDB 4.0 활용" 발표 자료입니다.
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
NoSQL DatabaseSteve MinThis document provides an overview of NoSQL databases. It begins by defining NoSQL as non-relational databases that are distributed, open source, and horizontally scalable. It then discusses some of the limitations of relational databases that led to the rise of NoSQL, such as issues with scalability and the need for flexible schemas. The document also summarizes some key NoSQL concepts, including the CAP theorem, ACID versus BASE, and eventual consistency. It provides examples of use cases for NoSQL databases and discusses some common NoSQL database types and how they address scalability.
Apache Spark Overview part2 (20161117)Steve MinSpark Streaming allows for scalable, high-throughput, fault-tolerant stream processing of live data streams. It works by chopping data streams into batches, treating each batch as an RDD, and processing them using RDD transformations and operations. This provides a simple abstraction called a DStream that represents a continuous stream of data as a series of RDDs. Transformations applied to DStreams are similarly applied to the underlying RDDs. Spark Streaming also supports window operations, output operations, and integrating streaming with Spark's ML and graph processing capabilities.
NoSQL 동향NAVER D2This document discusses the results of a NoSQL database benchmark test conducted by NHN on Cassandra, HBase and MongoDB. It describes the test environment and four test cases performed: data insertion, random reads and updates on existing data, reads only on existing data, and random reads and inserts with additional data added. The test measured average transactions per second for each database and test case. Cassandra and HBase performance varied depending on compaction levels while MongoDB update and insert performance lagged the others.
태블로 소프트웨어(Tableau Software) 소개HT Kim데이터 분석에 많은 시간과 노력을 투자하고 계십니까? 태블로를 이용하여 직접 데이터에 연결, 빠르고 쉽게 데이터를 분석하십시요. 기존 방법보다 많은 시간을 절약하고 다양한 비즈니스 인사이트를 얻을 수 있습니다.
MariaDB 마이그레이션 - 네오클로바NeoClova사례로 알아보는 MariaDB 마이그레이션
현대적인 IT 환경과 애플리케이션을 만들기 위해 우리는 오늘도 고민을 거듭합니다. 최근 들어 오픈소스 DB가 많은 업무에 적용되고 검증이 되면서, 점차 무거운 상용 데이터베이스를 가벼운 오픈소스 DB로 전환하는 움직임이 대기업의 미션 크리티컬 업무까지로 확산하고 있습니다. 이는 클라우드 환경 및 마이크로 서비스 개념 확산과도 일치하는 움직임입니다.
상용 DB를 MariaDB로 이관한 사례를 통해 마이그레이션의 과정과 효과를 살펴 볼 수 있습니다.
MariaDB로 이관하는 것은 어렵다는 생각을 막연히 가지고 계셨다면 본 자료를 통해 이기종 데이터베이스를 MariaDB로 마이그레이션 하는 작업이 어렵지 않게 수행될 수 있다는 점을 실제 사례를 통해 확인하시길 바랍니다.
웨비나 동영상
https://www.youtube.com/watch?v=xRsETZ5cKz8&t=52s
20150305 스마트한 데이터모델링 with ER/StudioDevgear3월 5일 온라인 세미나 "스마트한 데이터모델링 with ER/Studio" 자료입니다. 데이터모델링을 할 때 꼭 알아야 할 10가지 기술을 살펴봅니다. 그리고 이 기술들을 ER/Studio에서는 얼마나 쉽고 빠르게 제공하는지, 다른 제품들은 어떻게 제공하고 있는지도 함께 살펴봅니다.
엔터프라이즈 환경의 데이터모델 관리 방안 By 엠바카데로 데브기어 2015.12.03Devgear2015년 12월 3일 진행된 무료 온라인 세미나 발표자료입니다.
자세한 내용 및 다시보기는 다음 링크를 통해 확인할 수 있습니다: http://tech.devgear.co.kr/board_in1/417681
4. NoSQL의 매력
• 애플리케이션 개발 생산성
– 애플리케이션과 DB 상호 작용 단순화.
• 대규모 데이터
– 여러대로 구성된 클러스터 환경.
5. 관계형 DB의 가치
• 데이터 저장
– DB의 명확한 가치는 데이터 보관.
– 파일 시스템보다 뛰어난 융통성.
6. 관계형 DB의 가치
• 동시성과 통합
– 다수의 사용자가 동시에 데이터를 보고 수정
가능 .
– 트랙잰션 매커니즘.
– 서로 다른 컴토넌트간 통합 DB 공유.
7. 관계형 DB의 가치
• 표준 모델
– 벤더가 달라도 SQL 구분은 거의 비슷.
– 트랜잭션 동작 차이 없음.
– 벤터간 핵심 메커니즘 같음.
8. 관계형 DB의 불만
• 객체 관계 불일치
– 관계형 DB는 관계와 튜플로 데이터 구조화.
– 관계형 튜플안의 값은 단순해야 함.
– 중첩된 레코드나 다른 구조를 포함 할 수 없음.
– 객체 내 데이터 구조는 복잡한 구성.
– 객체 지향 DB의 등장… 하지만 실패.
– Hibernate, iBATIS의 프레임 워크 등장.
• DB나 쿼리 성능에 대한 이슈
10. 통합 DB
• 서로 다른 component간 공통 DB 사용.
• 일관된 데이터 동작, 커뮤니케이션 향상.
• 통합은 인한 복잡한 구조
• 속성 추가로 인한 타 component 쿼리 성
능 저하.
• 데이터 정합성 보장 못함.
11. 애플리케이션 DB
• 단일 component가 하나의 DB 사용.
• 스키마 유지및 개선이 쉬워짐.
• 데이터의 정합성은 해당 component가 책
임.
• Component 통합은 SOA(Service
Oriented Architecture).
12. 클러스터의 공격
• 2000년대 들어 대규모 데이터 집합 등장
– 웹사이트 사용자 활동 추적
• 링크, 소셜, 네트워크 활동 로그, 매핑 데이터.
• 대규모 사이트는 엄청난 수의 방문자에게 서비스
제공.
– 데이터와 트래픽 증가
• 해결방법 : 수평 확장, 수직 확장
13. 수직확장과 수평확장
• 수직확장
– 장비에 더 많은 프로세스, 디스크 스토리지 및 메
모리 장착.
– 실질적 한계 및 가격이 비쌈.
• 수평확장
– 값싼 장비를 모아 클러스터로 구성.
– 클러스터 구성은 다수의 장비중 한대가 실패도 중
단되지 않음.
– 관계형 DB는 지원하지 않음.
– 빅테이블과 다이나모 논문.
14. NoSQL의 출현
• 1990년대 오픈 소스 관계형 DB의 이름으
로 처음 등장.
– 아무런 영향을 끼치지 못함.
• 현재 NoSQL 용어의 기원은 비공식 모임의
이름(2009년)
– 새로운 DB를 알고 싶어 하는 모임.
– 볼드모트,카산드라,다이노마이트,H베이스,하
이퍼테이블,카우치 DB,몽고 DB가 참여.
15. NoSQL이란?
• SQL을 사용하지 않음.
– 일부 SQL은 질의어 지원.
• 오픈 소스 프로젝트.
• 대부분 클러스터 환경에서 실행할 목적.
• Not Only SQL = NOSQL != NoSQL
16. NoSQL의 기본 개념
‘A Bigtable is a sparse, distributed,
persistent, multidimensional, sorted map.’
• Map
• 영구적이다.
• 분산기반이다.
• 정렬기능.
• 다차원적이다.
• 엉성하다.