티스토리 뷰

Web 개발/Database

[DATABASE] NoSQL

Hula_Hula 2018. 9. 23. 22:45

[NoSQL]


시간이 지날수록 데이터의 양은 방대해지고 있습니다.

과거에는 개인이 아닌 기업들이 수집하는 데이터의 양은 어느정도 한정되어 있었고 일정한 틀에 맞춰 데이터를 저장함으로써 사용하기 편하게 만들었습니다. 그 산물이 SQL 언어를 사용한 RDBMS (관계형 데이터베이스 관리 시스템) 이죠.

하지만 데이터의 양이 방대해지고 유입과 유출이 많아지면서 이러한 관리 시스템은 비효율적이라는 걸 알게 됐습니다.

다양한 데이터가 발생하면서 그 틀에 맞춰 수집하기에는 한계가 있었던 것이죠.

그래서 등장한 것이 NoSQL입니다.


scale of the data


[그림1] 데이터 양의 증가폭. 플랫폼이 많아지면서 개인이 데이터를 생산할 수 있는 시대가 왔고 때문에 데이터의 양이 증가할 수 밖에 없다.

(그림참조 http://thegioi360.vn/posts/t4475-Overview-of-Big-Data-and-NoSQL-Technologies)



NoSQL을 Wikipedia에 검색하면 이렇게 나옵니다.


"NoSQL (originally referring to "non SQL" or "non relational") database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases."


이 설명에서 중요한 것은 "other than the tabular relations used in relational databases." 입니다.

전에 설명했던 RDBMS는 Data 간의 관계를 정의했습니다. (정확하게는 Data가 모여있는 Table간의 관계를 정의했습니다.) NoSQL은 RDBMS에서 Table과의 관계를 정의하는 것 뿐만이 아닌 데이터저장 매커니즘을 제공한다고 합니다.

쉽게 말해 Table과의 관계를 정의하지 않아도 된다는 뜻입니다.



NoSQL의 장점들에 대해서 간단히 알아보겠습니다.


1. High Expandability (확장성이 높다)

2. Easy to Use (사용하기 편하다)

3. Persistent of Data (데이터의 지속성)

4. No fixed schemas (스키마의 수정이 필요없다)

5. Individual query system (복잡한 쿼리 지원)

6. ACID 보장


NoSQL는 4가지의 분류로 나눌 수 있습니다.


1. Key-Value DataBase : NoSQL에서 가장 널리 쓰이는 방식이고 Key에 따른 Value를 저장하는 방식입니다. Amazon과 Linkedin이 사용하고 있습니다.

2. Big Table DataBase : Wide Columnar DataBase라고도 합니다. Google에서 사용하는 방식이고 Cassandra, HBase 등의 프로그램이 있습니다.

3. Document DataBase : JSON과 XML 파일을 무작위로 쌓아 Collection을 만들어 사용하는 방식입니다. 대표적으로 MongoDB라는 프로그램이 있습니다.

4. Graph DataBase


[그림2] 각 NoSQL DB에는 장단점이 존재한다.

(그림참조 https://www.devbridge.com/articles/benefits-of-nosql/)



[CAP Theorem]


CAP 이론은 분산컴퓨팅 시스템에서 보장해야하는 요소를 말합니다.

1. Consistency (일관성) : Data 쓰기 작업이 끝난 뒤 Data 읽기 작업을 할 때, 가장 마지막에 쓰여진 Data를 읽어와야 한다.즉, 각 클라이언트들은 같은시간 대에 동일한 값을 봐야 한다.

2. Availability (가용성) : 시스템은 항상 켜져 있어야 한다. 어떤 Node에서도 읽기, 쓰기가 가능해야 한다.

3. Partitions Tolerance (분리 내구성) : 한 Node의 Network가 끊어진 상태여도 동작해야 한다.



[그림3] 동시에 3개의 조건(C, A, P)을 만족할 수 없다. RDBMS는 CA에 집중하는 걸 볼 수 있고 많은 데이터의 양이 생기면서 P의 조건이 필요해졌다. 최근 NoSQL은 CP 혹은 AP를 충족시키는 걸 알 수 있다.


최근 많은 데이터가 생기면서 Partition Tolerance의 조건이 필요해졌습니다. 서버를 많은 컴퓨터로 관리해질 필요성이 생긴거죠. 

[그림3]을 보면 NoSQL은 확장성(P)를 강조한다는 것을 알 수 있습니다.

기존의 RDBMS는 확장성에 대해서 한계점이 많았습니다.

 

관계형 데이터베이스는 확장하기 어렵고 고정된 스키마(수정이 어려운 스키마)를 사용하기 때문에 많은 데이터가 유입될 때 관리하기가 어렵다는 것을 알 수 있습니다.



 



참조 )

CPA의 이해(각 DB Solution에 맞춰서) : http://hamait.tistory.com/197

NoSQL의 이해 : https://blog.outsider.ne.kr/519?category=12 

'Web 개발 > Database' 카테고리의 다른 글

[DATABASE] 관계형 데이터베이스(RDBMS)와 SQL  (0) 2018.09.20
댓글
최근에 올라온 글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
공지사항
최근에 달린 댓글