Closed KilJaeeun closed 2 years ago
전반적으로 점점 제 이해 속도가 딸리는 주제가 찾아오네요
Wiki 설명 찾아보면 Non-SQL, Non-relational, Not only SQL 등의 의미로 제안된 개념
RDBMS로 해결하기 힘든 문제를 처리하기 위해 제안됨
RDBMS (MySQL 등)을 극한으로 확장하는 방법, 대부분 실제 적용에 난이도가 높거나, 관리 비용 등의 문제로 실패했다는 듯
이런 경험에서, 반대로 꼭 SQL(RDBMS)가 필요할까? 같은 의문을 가지게 됨
Google의 BigTable 기반으로 Hadoop 버전으로 구현한 것 NoSQL이라 SQL이 없고 CRUD API만 제공됨
내부적으로 키를 기준으로 리전으로 구분 (자동 샤딩) 샤딩된 데이터는 HDFS 위에 올라감 마스터 노드: 각 데이터의 위치를 아는 노드, (파일시스템의 inode를 서비스로 제공하는 셈) 이후 실제 데이터 접근은 리전 서버 (샤딩된 데이터)에서 접근 Zookeeper: 마스터노드 고가용성
Key를 통한 Row 접근 Column family 개념: 각 스키마에 해당하는 데이터가 여러 개 존재 기존 RDBMS에서 Row가 primitive type들만 사용한 구조체라면, HBase에서는 내부에 Collection type이 존재할 수 있는 느낌? (Collection은 Dictionary처럼 sparse하게 접근) (실습 예시를 보면 기존 MapReduce에서 Shuffle & Sort 한 상태가 Row 단위로 제공되는 듯)
HBase와 비슷하지만 SPoF(HBase의 경우 Master Node)가 없음
CAP(Consistency, Availability, Partition-Tolerance) 정리라는 개념이 있는데, 위 3가지 중 2개의 특성은 구현할 수 있지만 3개 모두 구현할 수는 없음
Hadoop은 분산처리를 목적으로 하므로 Partition-tolerance를 포기할 수 없음 Cassandra는 일관성을 궁극적 일관성(어쨋든 일관성이란 표현이 더 정확할듯)으로 접근함 (급한거 아닌 때 쓰는거면, 처리 속도 조금 늦어져도 결과만 잘 처리해주면 된다) 그래서 가용성에 집중하고, 일관성은 편법으로 만족시키는 방식으로 3개를 다 만족한다고 함
Node간에 Master-Slave 등의 관계가 없이 동등한 관계 서로 레플리카를 가지고, 어디에 데이터가 있는지 서로 프로토콜로 확인하여 응답
SQL과 비슷하게 제공되지만, JOIN이 불가능하고, PK를 기반으로 하는 질의여야 함
https://hazel-developer.tistory.com/287
아휴..주말에 미리 안 했다가 늦을 뻔했네요 🤦🏻♀️
파트
발표자
발표 기간
마감 기한
참고 링크