Skip to content
This repository has been archived by the owner on Jun 14, 2022. It is now read-only.

Latest commit

 

History

History
18 lines (13 loc) · 1.23 KB

db_implementation.md

File metadata and controls

18 lines (13 loc) · 1.23 KB

DB 내부 구현

Row의 저장

하나의 Row가 하나의 DB 행으로 저장됩니다.

하나의 Row에 속한 모든 필드가 JSON 배열로 인코딩되어, 문자열 형태로 MariaDB에 저장됩니다.

RowId는 겹치지 않습니다. 다른 도큐먼트에 있는 Row와도, 다른 타입의 Row와도, 글로벌 테이블에 속한 Row와도 겹치지 않습니다.

수평 확장

한 도큐먼트에 속하는 데이터는 모두 같은 MariaDB 인스턴스에 저장됩니다. 어느 도큐먼트가 어느 MariaDB 인스턴스에 저장되어 있는지를 center 데이터베이스에 따로 저장합니다. 따라서, 도큐먼트를 저장할 MariaDB를 새로 추가해서, 새로 만들어지는 도큐먼트가 새 MariaDB에 저장되게 하는 것은 간단하지만, 이미 생성된 도큐먼트를 다른 MariaDB 인스턴스로 옮기는 일은 까다롭습니다.

글로벌 테이블은 키를 컨시스턴트 해싱해서 어느 MariaDB 인스턴스에 저장해야 할지 결정합니다. 따라서 데이터를 유지한 채로 글로벌 테이블에 MariaDB 인스턴스를 조금씩 추가하는 일은 매우 까다롭습니다. 두 배씩(예: [a, b] → [a, b, a, b] 로) 늘리는 것은 가능할 것입니다.