IT 기초/Infra

RDBMS vs NoSQL

데이터 세상 2021. 12. 27. 11:37

RDB(Relational Database)

  • 데이터를 유연하게 쿼리할 수 있지만, 쿼리 비용이 상대적으로 높다
  • 트래픽이 많은 상황에서는 확장성이 떨어진다.
  • 최고 성능을 위해서는 쿼리, 인덱스 및 테이블 구조를 최적화 해야 한다.
  • 하나의 고성능 머신이 데이터서버가 되어 처리하는 Scale Up 방식

 

No SQL(Not only SQL)

  • 비 관계형 데이터 베이스. 빅 데이터 수집과 저장 기술. MongoDB, Casandra, Hbase 등이 있음
  • 최초 테이블 생성 시 데이터 간의 관계를 정의하지 않습니다. 그래서 보다 빠른 속도의 설계가 가능
  • Scale Out을 통한 노드 확장을 지원 (여러 개의 일반 서버를 연결하여 데이터를 분산하고 저장)
    • key- value Database(Riak, Redis, Voldmort)
    • Document Database(MongoDB, CouchDB)
    • BigTable Database(HBase, Casandra)
    • Graph Database(Sones, AllegroGraph)

장점

  • RDBMS에 비해 저렴한 비용으로 분산 처리와 병렬 처리가 가능
  • 비정형 데이터 구조 설계로 설계 비용이 감소
  • 관계형 데이터베이스의 relation과 join 구조를 linking과 embedded로 구현하여 성능이 빠름
  • Big Data 처리에 효과적, 많은 서버로 확장이 가능(데이터 중복이 생기더라도 테이블을 정규화 시키지 않아도 큰 테이블에 담아 저장)
  • 가변적인 구조로 데이터 저장이 가능
  • Scale Out 구조를 채택하여 서버 확장에 용이하며, 더 많은 데이터를 저장
  • Document based(Schema-less)구조로 데이터 모델의 유연한 변화가 가능
  • JSON 구조로 RDBMS 테이블 구조에 비해 데이터를 직관적으로 파악
  • Auto Sharding을 지원
    • 단일의 논리적 데이터셋을 다수의 데이터베이스에 쪼개고 나누는 방법. 
    • 이런 방법으로 데이터베이스 시스템의 클러스트에서 큰 데이터셋을 저장하고 추가적인 요청을 처리할 수 있음. 
    • Sharding은 데이터셋이 단일 데이터베이스에서 저장하기에 너무 클 때 필수적으로 사용

 

단점

  • 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
  • 많은 인덱스를 사용하려면 충분한 메모리가 필요. 인덱스 구조가 메모리에 저장됨
  • 복잡한 join은 어려움(다양하고 복잡한 데이터 쿼리), document based이기 때문에
  • NoSQL은 Sharding 방식을 사용해서 큰 테이블을 여러 서버에 나누어 저장한다. Fault tolerance를 위해 데이터는 두 개 이상의 서버에 저장된다. 어떤 데이터가 업데이트되었을 때, NoSQL은 중복 저장된 서버들에 해당 업데이트가 적용되기까지는 시간이 걸린다.
  • RDBMS는 모든 서버를 업데이트 되기 전까지는 해당 데이터 또는 테이블에 lock을 걸어 읽기 금지한다.
  • 따라서 데이터에 대한 일관성이 보장된다. 하지만 NoSQL에서는 lock을 하게도리 경우 느려지므로 사용하지 않는다.
  • 데이터 일관성이 항상 보장되지 않는다.
반응형

'IT 기초 > Infra' 카테고리의 다른 글

SAN/NAS/DAS  (0) 2021.12.27
DB availability  (0) 2021.12.27
git vs svn  (0) 2021.12.27
Hadoop  (0) 2021.12.27
Load Balancing  (0) 2021.12.27