DB/MongoDB 정리

NoSQL과 MongoDB

100win10 2019. 9. 3. 09:20

 NoSQL


전통적인 관계형 데이터베이스 관리 시스템(RDBMS)과는 다르게 대규모의 데이터를 유연하게 처리하기 위해 설계된 비관계형(non-relational) DBMS 


NoSQL은 워낙 데이터가 많아 한군데에서 데이터 저장이 불가능하고 클라우드 환경에 적합하다.


일관성을 버리고 검색 기능에 좀 더 치중



NoSQL 데이터베이스 유형


NoSQL은 정형화된 데이터가 없기에 유형이 다 다르다. 회사 조직에 특징을 파악하고 그에 맞는 유형을 써야한다.


1) 키 - 값 형 NoSQL




<키 , 값 > 쌍으로 데이터 표현, 관리,  구조상 정교한 질의는 어렵다 .값은 single value임


ex 학번 - 컴퓨터학과, 


2) 컬럼 패밀리 형 NoSQL




<키, 값> 쌍으로 데이터를 표현하고 관리하나 값이 해당 키와 연관된 {<컬 럼, 값>} 형태임


값만 있으면 안되고 값이 무엇을 의미한다 까지


한 키에 대해 복수개에 값이 들어있다.


키값에 들어있는 value값이 2개던 3개던 채워지던 않던 상관없다. 제약이 없다.



컬럼패밀리


컬럼패밀리는 CF1, CF2 형태로 묶인다.


컬럼패밀리 : 검색을 빨리하기 위해 디스크 탐색시간 줄이기 위해 같은 공간에 물리적으로 저장한다. 


주로 같이 질의되는 컬럼들을 묶는다.



3) 문서형(document) 형 NoSQL

 


키 벨류 쌍이지만 single value가 아닌 문서가 들어간다. 문서는 구조화된 문서이다(xml or json) 형태


• 구조화된 문서 - 계층적 구조(트리)를 갖는 문서


• RDB와 유사한 조건을 포함한 질의 처리 가능




예 ) MongoDB, CouchDB




JSON 이란 ?


• 웹과 컴퓨터 프로그램에서 용량이 적은 데이터를 교홖하기 위해 데이터 객 체를 <속성, 값>의 쌍 형태로 표현하는 형식(표기법)


• 데이터 트리(=문서)를 문자열로 표현 한 것 


즉 웹 상에서의 데이터 교환


구조


 { 필드명, 필드값 } 즉, { 키, 값 } 으로 표현(표기)




JSON 객체의 값에 배열이 올 수도있다.  객체 안에 객체가 올수있다. 


트리 형태의 구조화된 문서가 될 것.



문서형 NoSQL의 예



정리 )  관계형 데이터 베이스 대신 NoSQL을 사용하는 경우?


1. 대량의 데이터 입력이 필요하다


2. 대량의 단순한 정보의 빠른 저장 및 조회가 필요하다


3. 스키마가 고정되지 않은 데이터