프로세스 내에서 여러개의 스레드로 작업을 처리하는 것,
동시에 여러 스레드가 작동하는 것이 아니라 컨텍스트 스위칭으로 여러 스레드가 번갈아서 일하는 것이다.
프로세스끼리는 자원을 공유하기 어렵지만 스레드끼리는 쉽기때문이다.
대신 자원의 공유중 문제가 생기거나 교착상태에 빠지는것에 주의해야한다.
행과 열로 이루어진 테이블(표)에 데이터를 넣는 고전적인 방식
행 : 데이터의 속성
열 : 데이터 값
데이터의 저장 및 검색에 특화되어있다.
큰 데이터 용량, 낮은 지연 그리고 유연한 데이터 모델을 요구하는 앱에 특화될 수 있다.
구조
RDBMS : 표로된 형식과 엄격한 규칙을 고려해야한다. 유지보수에 복잡한 쿼리가 필요하다.
NoSQL : 데이터 변경에 더 유연하고 유용하다. 이미지,영상,문서, 기타 부정형 구조를 저장하는데 유용하다
데이터 무결성 매커니즘 ACID (Atomicity Consistency Isolation Durability)
RDBMS : 엄격한 ACID요소를 따른다.
즉, 하나의 작업만 실패해도 전체가 실패한다.
NoSQL : ACID를 지원하지 않는 경우가 많다. 그래서 즉각적인 일관성을 보장하지는 않는다.
대신 가용성을 희생하거나 일부만 일관성을 요구하는 모델을 선택할 수 도 있다.
성능
RDBMS : 디스크 시스템에 따라 달라진다.
*
SSD : DB 성능 향상
*
RAID : 디스크 최적화, Redundant Array of Independent Disk
*
최대성능 : 인덱스 최적화, 테이블구조, 쿼리
NoSQL : 네트워크 지연, 하드웨어 클러스터 크기, 앱 호출(인덱스, 캐시)에 달려있다.
확장성
RDBMS : 스키마가 엄격하게 적용되어서 대규모 문제가 일어날 수 있다. CPU와 RAM을 추가하여 수직확장하며, 수평 확장에는 파티셔닝, 샤딩같은 특별한 방법이 필요하다
NoSQL : 작업량을 여러 노드에 분산하기 쉬워서 확장성이 뛰어나다.
Single-Threaded vs. Multi-Threaded Programs in Java: A Comprehensive Comparison
싱글스레드(Single thread) vs 멀티스레드 (Multi thread)
What’s the Difference Between Relational and Non-relational Databases?
[database] 관계형 DB와 비관계형 DB의 차이점