모든 애플리케이션은 데이터를 저장한다. 애플리케이션에 따라 적절한 클라우드 Storage DB 솔루션을 선택하는 것이 중요하다.
구조화된 데이터 (Structured Data) vs 구조화되지 않은 데이터 (Unstructured Data)
관계형 데이터 (Relational Data) vs 트랜잭션 데이터 (Transaction Data) 등
위와 같은 데이터 유형의 차이를 이해한 뒤, 적절히 활용할 수 있도록 알맞은 스토리지 옵션을 선택하면 된다.
이 섹션에서는 Google Cloud의 5가지 스토리지 제품인 Cloud Storage
, Cloud SQL
, Cloud Spanner
, Firestore
, Cloud Bigtable
에 대해 알아본다.
객체 스토리지는 파일 및 폴더 계층 구조(File storage)나 디스크 청크(Block storage) 대신 '객체'로 데이터를 관리하는 스토리지 아키텍처다.
URL
형식으로 되어 있어 웹 기술과 원활하게 상호작용할 수 있다.버킷(메타데이터) / 버전 관리 등의 개념이 존재하기 때문에 데이터 백업 및 검색에 장점이 있다.
Cloud Storage 파일은 버킷으로 구성된다. 버킷에는 전역적으로 Unique Name
과 저장될 특정 Geographic Location
이 필요하다.
Cloud Storage의 스토리지 객체는 수정할 수 없고, 변경사항이 생길 때마다 새로운 버전이 생성된다. 새 버전이 이전 버전을 덮어쓰도록 되며, 버전 관리
를 설정해 변경사항(수정, 덮어쓰기, 삭제)을 기록할 수 있다.
버전 관리의 장점
보관된 객체의 버전 나열
객체를 이전 상태로 복원
객체 버전 영구 삭제
저장된 데이터에 대한 접근을 제어하기 위해 IAM Role
과 액세스 제어 목록(ACL)
을 사용할 수 있다. 대부분의 경우 IAM으로 충분하지만, 더 세밀한 제어가 필요하면 ACL을 만들 수 있다.
Cloud Storage는 수명 주기 관리 정책을 제공한다. 예를 들어, 365일이 넘은 객체를 삭제하거나 특정 날짜 이전에 생성된 객체를 삭제하거나, 버전 관리가 설정된 버킷에서 각 객체의 최신 버전 3개만 유지하도록 설정할 수 있다. 이를 통해 실제로 필요한 것보다 더 많은 비용을 지불하지 않도록 제어할 수 있다.
Cloud Storage에는 4가지 스토리지 클래스가 있으며, 각 스토리지마다 적합한 데이터 유형이 존재하고, 스토리지 요금은 데이터의 스토리지 클래스와 버킷 위치에 따라 다르기 때문에 공식 문서를 확인하는게 제일 좋다. 다음 링크 참고
Cloud SQL은 MySQL
, PostgreSQL
, SQL Server
등의 관계형 db를 클라우드에서 쉽게 배포, 확장, 관리할 수 있도록 한다. 즉, 완전 관리형 관계형 데이터베이스 서비스이다.
패치 및 업데이트 적용, 백업 관리, 복제본 구성 같은 일상적이지만 시간이 많이 소요되는 작업은 Google에 맡기고, 사용자는 애플리케이션 개발에 집중할 수 있다.
Cloud Spanner는 관계형 데이터베이스의 ACID 트랜잭션과 표준 SQL을 사용한 조회기능을 제공하면서도 NoSQL 데이터베이스의 수평 확장성과 데이터 복제를 통해 고가용성을 제공하는 완전관리형RDB 이다.
DB 복습하고 가는 코너가 됐다. 😇
NoSQL은 "Not Only SQL"의 약자로, 전통적인 관계형 데이터베이스가 아닌 데이터베이스 관리 시스템을 의미한다. NoSQL 데이터베이스는 다양한 데이터 모델을 지원하며, 주로 대규모 데이터 저장과 처리에 최적화되어 있다. 이는 스키마가 없는 데이터 저장, 수평적 확장성, 고가용성, 빠른 읽기/쓰기를 특징으로 한다.
주요 유형
문서형 데이터베이스: JSON, BSON 같은 형식으로 데이터를 저장. (예: MongoDB)
키-값 스토어: 단순한 키-값 쌍으로 데이터를 저장. (예: Redis)
열 기반 스토어: 열 중심 저장 방식으로 대규모 읽기/쓰기에 최적. (예: Apache Cassandra)
그래프 데이터베이스: 그래프 구조로 데이터를 저장하며, 복잡한 관계와 쿼리를 처리. (예: Neo4j)
주요 특징
유연한 스키마: 데이터 모델이 고정되지 않아 유연하게 데이터를 저장.
수평적 확장성: 여러 서버에 걸쳐 데이터를 분산하여 저장하고 처리.
고성능: 빠른 읽기/쓰기 성능을 제공.
고가용성: 데이터 복제를 통해 높은 가용성과 내결함성을 제공.
사용 사례
빅 데이터 처리: 대규모 데이터를 실시간으로 처리.
IoT 데이터 저장: 다양한 형식의 데이터를 유연하게 저장하고 빠르게 처리.
소셜 네트워크: 사용자 간의 복잡한 관계를 효율적으로 관리.
ACID
트랜잭션은 데이터베이스 트랜잭션의 신뢰성과 일관성을 보장하기 위해 중요한 네 가지 속성을 말한다. 이 속성들은 트랜잭션이 안전하고 정확하게 처리되도록 보장한다. ACID는 다음 네 가지 속성의 약자다:
Atomicity
(원자성): 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 한다는 것을 의미한다. 트랜잭션의 일부라도 실패하면 수행된 모든 작업이 롤백(취소)되어야 한다.
Consistency
(일관성): 트랜잭션이 성공적으로 완료되면, 데이터베이스의 모든 제약 조건이 트랜잭션이 끝난 후에도 여전히 유효해야 한다.
Isolation
(격리성): 트랜잭션들이 동시에 실행되더라도, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않아야 한다.
Durability
(지속성): 시스템 장애가 발생하더라도, 완료된 트랜잭션의 결과는 손실되지 않고 보존되어야 한다.
은행에서 계좌 이체를 수행하는 상황을 통해 ACID 속성을 이해해 보자.
ACID 속성은 관계형 데이터베이스에서 매우 중요하며, 데이터의 정확성과 신뢰성을 유지하는 데 핵심적인 역할을 한다.
Firestore는 모바일
, 웹
, 서버
개발용으로 설계된 수평적으로 확장 가능한 NoSQL 클라우드 데이터베이스다.
Document
와 Collection
으로 구성. Cloud Bigtable은 Google의 NoSQL, 빅데이터, 데이터베이스 서비스
Google의 핵심 서비스인 검색, 애널리틱스, 지도, Gmail 등을 운영하는 데 사용되는 데이터베이스다.
대규모 데이터 처리 및 분석에 특화되어 있으며, 사물 인터넷, 사용자 분석, 회계 자료 분석 등 다양한 운영 및 분석 애플리케이션에 적합하다.