728x90
RDBMS(mysql ...) (Relational DataBase Mangement System) |
NoSql(MongoDB...) | |
뜻 | 관계형 데이터 베이스 관리 시스템 | Not Only Sql 의 약자로써 관계형 db와 반대되는 방식을 사용하며, 데이터, 테이블 간의 관계를 정의 하지 않습니다. (주로 key-value 많이 쓰임) |
장점 | -명확하게 정의된 스키마, 데이터 무결성 보장 -관계는 각 데이터를 중복없이 한번만 저장 |
-스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능 -RDBMS 보다 복잡도가 떨어져, 훨씬 대용량의 데이터를 저장,관리 할수있다. -수평적 확장이가능(비용이 비교적 저렴) |
단점 | -덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함 -관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음 -수평적확장이 어려워, 대체로 수직적확장만 가능 (비용이 비쌈) |
-데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 -스키마가 정해져있지않아 , 데이터에 대한 규격화가 되어있지않음 -DATA를 UPDATE하는데 비교적 느림 |
스키마 (Schema) 란?
-데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한것입니다.
-DB내에 어떤 구조로 데이터에 저장되는가를 나타내는 데이터베이스구조를 스키마 라고 합니다.
Transaction
-데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위
트랜젝션 특징
원자성(Atomicity)
트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 된다.
일관성(Consistency)
트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다.
독립성(Isolation)
둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.
지속성(Durability)
트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 한다.
SQL 데이터베이스 사용이 더 좋을 때
1. 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우
NoSQL에서는 여러 컬렉션을 모두 수정해야 하기 때문에 비효율적.
2.변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우
NoSQL 데이터베이스 사용이 더 좋을 때
1. 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
2. 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
3. 데이터베이스를 수평으로 확장해야 하는 경우 (막대한 양의 데이터를 다뤄야 하는 경우)