728x90
반응형
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을 하게도리 경우 느려지므로 사용하지 않는다.
- 데이터 일관성이 항상 보장되지 않는다.
728x90
반응형
'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 |