맨위로가기

스패너 (데이터베이스)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

스패너는 구글에서 개발한 변경 가능한 구조화된 대량의 데이터를 저장하는 데이터베이스이다. 동기식 복제를 통해 강력한 일관성과 고가용성을 유지하며 관계형 데이터와 함께 SQL을 사용하여 쿼리를 수행할 수 있다. 트랜잭션, 자동 다중 사이트 복제, 강력한 일관성을 갖는 복제, 데이터 읽기 및 쓰기를 위한 SQL 인터페이스를 지원한다. 2012년 구글 데이터 센터용으로 처음 설명되었고, 2017년 SQL 기능이 추가되어 구글 클라우드 플랫폼의 일부로 제공되었다. 팩소스 알고리즘과 GPS 시계, 원자 시계를 이용한 하드웨어 지원 시계 동기화를 사용하여 글로벌 일관성을 보장하며, TrueTime API를 통해 분산 환경에서의 시간 일관성을 유지한다. 구글의 F1 SQL 데이터베이스 관리 시스템은 스패너를 기반으로 구축되었다.

더 읽어볼만한 페이지

  • NewSQL - 토쿠DB
    토쿠DB는 프랙탈 트리 인덱스 기술로 데이터 처리 성능을 향상시킨 데이터베이스 엔진으로, 빅 데이터 환경에서 MySQL 성능 개선에 기여하며 네트워크 이벤트 관리, 온라인 광고 네트워크 등에 적용 가능하다.
  • NewSQL - 알티베이스
    알티베이스는 1999년 설립된 대한민국의 데이터베이스 관리 시스템 개발 및 공급 회사이며, 메모리 데이터베이스 연구를 기반으로 설립되어 하이브리드 DBMS를 개발하고 다양한 산업 분야에 솔루션을 제공한다.
  • 분산 컴퓨팅 - 클라우드 컴퓨팅
    클라우드 컴퓨팅은 인터넷을 통해 컴퓨팅 자원을 서비스 형태로 제공하는 모델로, 다양한 서비스 및 배치 모델을 가지며 비용 효율성과 확장성을 제공하지만 보안 및 의존성 문제도 존재하며 지속적으로 발전하고 있다.
  • 분산 컴퓨팅 - 그리드 컴퓨팅
    그리드 컴퓨팅은 지리적으로 분산된 컴퓨터 자원을 연결하여 가상 슈퍼컴퓨터를 구축하는 기술이며, 유휴 자원을 활용하고 과학 연구 등 다양한 분야에 활용된다.
  • 데이터베이스 - 지식 베이스
    지식 베이스는 특정 주제 정보를 체계적으로 저장 및 관리하며 규칙 기반 추론으로 새로운 지식 도출에 활용되고, 웹 콘텐츠 관리 및 지식 관리 시스템으로 확장되어 온톨로지를 이용, 인공지능 기술과 결합하여 문제 해결책을 제시하고 경험을 통해 학습하는 시스템이다.
  • 데이터베이스 - 화이트리스트
    화이트리스트는 특정 대상만 허용하고 나머지는 차단하는 접근 제어 목록으로, 정보보안, 무역, 금융 등 다양한 분야에서 활용되지만, 목록 선정 기준의 불명확성, 사회적 문제점 등의 위험성으로 투명하고 엄격한 관리가 필요하다.
스패너 (데이터베이스)
개요
Cloud Spanner 아이콘
Cloud Spanner 아이콘
유형분산 SQL 데이터베이스 관리 시스템
라이선스사유 소프트웨어
개발사구글
최초 출시2012년
안정화 버전2017년
플랫폼클라우드 (Google Cloud Platform)
사용 언어C++
자바
Go
데이터베이스 모델관계형 데이터베이스
SQLANSI 2011 (일부 확장)
서버 운영체제리눅스
설명
개요Cloud Spanner는 구글에서 개발한 확장 가능하고 전 세계적으로 분산된 관계형 데이터베이스 서비스이다.
특징ACID 트랜잭션 지원
수평 확장성
높은 가용성
글로벌 데이터 복제
외부 일관성
주요 사용 사례금융 거래 처리
공급망 관리
게임
광고
장점무제한에 가까운 확장성
강력한 데이터 일관성
전 세계 데이터 복제를 통한 고가용성
자동 관리 기능
단점다른 데이터베이스에 비해 상대적으로 높은 비용
특수한 아키텍처로 인한 학습 곡선
기술 정보
아키텍처TrueTime API를 사용한 글로벌 시계 동기화
Paxos 기반의 분산 합의 알고리즘
데이터 분할 및 복제를 통한 확장성
데이터 모델관계형 데이터 모델
스키마 정의 필수
강력한 데이터 타입 지원
쿼리 언어SQL (ANSI 2011 표준 준수, 일부 확장)
읽기-쓰기 트랜잭션 지원
읽기 전용 트랜잭션 지원
APIgRPC 기반 API
자바, Go, 파이썬 등 다양한 언어 지원
관리 도구Google Cloud Console
gcloud 명령줄 도구
API를 통한 자동화
특징
확장성수평적 확장 가능
데이터 복제글로벌 데이터 복제 지원
일관성외부 일관성 보장
트랜잭션ACID 트랜잭션 지원
가용성높은 가용성 제공
관리자동 관리 기능 제공
가격
가격 정책사용량 기반 과금
과금 요소컴퓨팅 용량 (노드)
스토리지 사용량
네트워크 트래픽
가격 최적화성능 업데이트를 통해 가격 대비 성능 향상
외부 링크
공식 웹사이트Cloud Spanner 공식 웹사이트
참고 자료Spanner 논문
Cloud Spanner 문서

2. 특징

스패너는 변경 가능한 구조화된 대량의 데이터를 저장한다. 사용자는 관계형 데이터와 함께 SQL을 사용하여 임의 쿼리를 수행할 수 있으며, 동기식 복제를 통해 해당 데이터에 대한 강력한 일관성과 높은 가용성을 유지할 수 있다. 스패너는 관계형 데이터베이스 관리 시스템(RDBMS)의 구조와 비관계형 데이터베이스(NoSQL)의 확장성을 모두 갖춘 것으로 평가받는다.[8]

구글은 스패너 이전에 확장 가능한 분산형 데이터베이스인 BigTable(NoSQL 데이터베이스)을 사내에서 사용하고 있었다. BigTable은 많은 프로젝트에서 활용되었지만, 기존의 스키마 기반 RDBMS처럼 데이터의 일관성을 확보하기 어렵다는 문제점이 제기되었다.[6] 이러한 문제를 해결하기 위해 스패너가 개발되었다. 스패너는 수백 개의 데이터 센터에 걸쳐 100만 대 규모의 서버에 분산되어 운영될 수 있도록 스케일 가능하게 설계되었다.[6]

스패너의 주요 기능은 다음과 같다:


  • 트랜잭션: 스패너 유니버스 내의 행, 열, 테이블, 데이터베이스에 걸쳐 트랜잭션을 적용할 수 있다.
  • 복제 및 가용성: 클라이언트는 자동 다중 사이트 복제 및 장애 조치를 사용하여 데이터의 복제 및 배치를 제어할 수 있다. 복제는 동기식으로 이루어지며 강력한 일관성을 보장한다.
  • 일관성 있는 읽기: 읽기 작업은 강력한 일관성을 가지며, 데이터 버전 관리를 통해 오래된 데이터 읽기도 허용된다. 클라이언트는 가비지 수집 기간에 따라 이전 버전의 데이터를 읽을 수 있다.
  • SQL 지원: 데이터를 읽고 쓰기 위한 네이티브 SQL 인터페이스를 지원하며[9], SQL문을 이용하여 데이터의 갱신이나 집계 등이 가능하다.


또한, 스패너는 타임스탬프를 이용하여 데이터의 일관성을 보장하는 특징이 있다. 이를 통해 데이터베이스 처리 중에도 일관된 데이터 읽기 및 쓰기가 가능하며, 일관된 백업 및 MapReduce 처리도 가능하다고 평가된다.[6]

3. 역사

구글은 스패너 이전에 사내에서 확장 가능한 분산 데이터베이스인 BigTable(NoSQL 데이터베이스)을 사용하고 있었다. BigTable은 여러 프로젝트에서 유용하게 쓰였지만, 기존의 스키마를 사용하는 관계형 데이터베이스 관리 시스템(RDBMS)처럼 데이터 일관성을 보장하기 어렵다는 문제가 제기되었다.[6]

이러한 문제를 해결하기 위해 스패너가 개발되었다. 스패너는 관계형 데이터베이스 관리 시스템(RDBMS)의 구조와 비관계형 데이터베이스(NoSQL)의 확장성을 모두 갖추도록 설계되었다.[8] 스패너는 수백 개의 데이터 센터에 걸쳐 백만 대 규모의 서버에 분산되어 확장 가능하도록 설계되었다.[6]

스패너는 2012년, 구글 데이터 센터 내부용으로 처음 소개되었다.[11][2]

2017년에는 SQL 기능이 추가되었고, 이는 SIGMOD 2017년 컨퍼런스 논문을 통해 발표되었다.[12][3] 같은 해 '클라우드 스패너'(Cloud Spanner)라는 이름으로 구글 클라우드 플랫폼 서비스의 일부로 출시되었다.[13][4]

4. 아키텍처

스패너는 구글 내부에서 사용하던 BigTable과 같은 NoSQL 데이터베이스의 확장성은 유지하면서, 기존의 RDBMS처럼 데이터 일관성과 스키마를 지원하고자 하는 요구에 부응하기 위해 개발되었다.[6] 즉, RDBMS의 구조적 장점과 NoSQL확장성을 결합한 시스템으로 평가받는다.[8]

스패너는 전 세계 수백 개의 데이터 센터에 걸쳐 수백만 대 규모의 서버에 데이터를 분산하여 저장하고 처리할 수 있도록 설계되었다.[6] 데이터는 팩소스 알고리즘을 통해 여러 서버에 자동으로 샤딩(분할)된다.

글로벌 일관성을 보장하는 것이 스패너 아키텍처의 핵심 목표 중 하나이다. 이를 위해 GPS 시계 및 원자 시계를 이용한 하드웨어 기반 시계 동기화와 TrueTime API라는 기술을 사용하여, 분산된 서버들 간의 시간 오차를 엄격하게 관리한다.[14][5] 모든 데이터 변경 작업(트랜잭션)에는 이 시간을 기준으로 타임스탬프가 부여되어, 데이터 처리 순서와 일관성을 전역적으로 유지한다.[6] 이를 통해 처리 중인 데이터베이스에서도 일관된 데이터 읽기/쓰기, 백업, MapReduce 처리 등이 가능하다.[6]

또한, 사용자는 표준 SQL을 사용하여 데이터를 쿼리하고 조작할 수 있다.[9]

구글의 F1 SQL DBMS는 스패너를 기반으로 구축되었으며, 이는 구글 내부의 대규모 중요 애플리케이션에서 사용되던 맞춤형 MySQL 시스템을 대체했다.

4. 1. 기술 상세

스패너는 변경 가능한 구조화된 대량의 데이터를 저장한다. 사용자는 스패너를 통해 SQL을 사용하여 관계형 데이터에 대한 임의 쿼리를 수행할 수 있으며, 동기식 복제를 통해 해당 데이터에 대한 강력한 일관성고가용성을 유지할 수 있다.

스패너의 주요 기능은 다음과 같다:

  • 트랜잭션은 스패너 유니버스 내의 행, 열, 테이블, 데이터베이스에 걸쳐 적용될 수 있다.
  • 클라이언트는 자동 다중 사이트 복제 및 장애 조치를 사용하여 데이터의 복제 및 배치를 제어할 수 있다.
  • 복제는 동기식이며 강력한 일관성을 갖는다.
  • 읽기는 강력한 일관성을 가지며, 오래된 읽기를 허용하도록 데이터 버전이 관리된다. 클라이언트는 가비지 수집 기간에 따라 이전 버전의 데이터를 읽을 수 있다.
  • 데이터 읽기 및 쓰기를 위한 기본 SQL 인터페이스를 지원한다.


스패너는 데이터를 최대 수백 대의 서버에 샤딩(분할)하기 위해 팩소스 알고리즘을 사용한다. 데이터 일관성을 보장하기 위해, 스패너는 타임스탬프를 데이터에 필수로 부여한다.[6] 이 데이터 구조는 '''태블릿'''(tablet)이라고 불리며, (key:string, timestamp:int64) -> string 형태의 매핑을 가진다. 이러한 데이터는 구글 파일 시스템의 후계 시스템인 Colossus 위에 저장된다.

타임스탬프를 사용함으로써 모든 트랜잭션 처리커밋 순서를 관리하여 일관성을 보장할 수 있다 (자세한 내용은 MultiVersion Concurrency Control 참조). 여러 서버에 데이터가 분산된 환경에서 일관된 시간 기준의 타임스탬프를 부여하는 것은 어렵다. 모든 서버의 시간을 항상 엄밀하게 동기화하기 어렵기 때문이다.

이 문제를 해결하기 위해 스패너는 '''TrueTime API'''를 사용한다.[6] TrueTime API는 현재 절대 시간을 [earliest, latest] 형태의 시간 간격(TTinterval)으로 얻는다. 이는 현재 절대 시간이 `earliest` 이상, `latest` 이하임을 보장하며, 스패너 서버군 전체에서 시간 오차의 최댓값을 알 수 있게 한다. 이 정보를 바탕으로 데이터베이스의 읽기 및 쓰기 순서가 잘못되지 않도록 제어하여 데이터 일관성을 유지한다. TrueTime은 구글의 분산 클라우드 인프라에서 전 세계 데이터 센터에 걸쳐 단조롭게 증가하는 타임스탬프를 생성하는 기능을 제공하는 기술의 브랜드 이름이다.[14][5]

시간 오차 범위가 커지면 처리를 커밋하기까지 대기 시간이 길어져 성능이 저하될 수 있다. 이를 최소화하기 위해 스패너는 GPS 시계나 원자 시계를 이용한 정확한 시간 기준을 마스터 서버에 적용하고, 이를 통해 슬레이브 서버 간의 시간 차이를 가능한 한 줄인다.[6] 이러한 하드웨어 지원 시계 동기화는 글로벌 일관성 보장에 핵심적인 역할을 한다.

구글의 F1 SQL 데이터베이스 관리 시스템(DBMS)은 스패너를 기반으로 구축되어, 기존에 사용하던 구글의 맞춤형 MySQL을 대체했다.

참조

[1] 웹사이트 Announcing Cloud Spanner Price Performance Updates https://cloud.google[...]
[2] 웹사이트 Google reveals Spanner, the database tech that can span the planet https://www.zdnet.co[...] ZDNet 2012-09-18
[3] 서적 Spanner: Becoming a SQL System https://dl.acm.org/c[...] 2017-05-09
[4] 웹사이트 Introducing Cloud Spanner: a global database service for mission-critical applications https://cloud.google[...]
[5] 웹사이트 Cloud Spanner: TrueTime and external consistency https://cloud.google[...] 2020-11-24
[6] 웹사이트 Spanner: Google's Globally-Distributed Database https://research.goo[...] 2018-01-25
[7] 웹사이트 リリースノート https://cloud.google[...] 2018-01-26
[8] 웹사이트 CLOUD SPANNER https://cloud.google[...] 2018-01-27
[9] 웹사이트 SQL のベスト プラクティス https://cloud.google[...] 2018-01-27
[10] 웹인용 Announcing Cloud Spanner Price Performance Updates https://cloud.google[...]
[11] 웹인용 Google reveals Spanner, the database tech that can span the planet https://www.zdnet.co[...] ZDNet 2012-09-18
[12] 서적 Spanner: Becoming a SQL System https://dl.acm.org/c[...] 2017-05-09
[13] 웹인용 Introducing Cloud Spanner: a global database service for mission-critical applications https://cloud.google[...]
[14] 웹인용 Cloud Spanner: TrueTime and external consistency https://cloud.google[...] 2020-11-24



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com