Database 8

스키마란 무엇인가? (json, database, ...)

최근 백엔드 작업을 하다가, “JSON 스키마”를 처음 접했다. 스키마? 데이터의 구조로 알고 있는데… 데이터베이스에서나 쓰던 개념 아니야? JSON에 무슨 스키마가 있다는 거지? 라는 질문에서 스키마에 대해서 잘 모르는 것이 많다는 생각이 들어서, 용어에 대한 정의부터 출발해 스키마가 실제로 어떻게 쓰이고 있는지에 대하여 고민해보았다. 이론 스키마의 사전적 정의는 다음과 같다. Schema : (계획·이론의) 개요[윤곽] 사전적 의미가 크게 와닿지 않아서 구글에 “Schema”를 이미지로 검색해보았다. 이미지를 보니, 복잡하고 큰 개념을 뭔가 형식으로 도식화한 느낌을 준다. 왜 이렇게 규칙을 만들어 도식화하는가? 규칙을 정해 데이터를 다룸으로써 우리가 복잡하고 큰 데이터를 컨트롤할 수 있겠다는 생각이 ..

Database 2020.07.19

프로덕션 환경의 데이터베이스 스키마 변경하기(Online-Schema-change)

OSC(online schema change)가 뭐죠? 서비스 중인 프로덕션 환경의 테이블 스키마를 수정할 때는, 스키마를 수정하는 도중에도 데이터를 READ / WRITE 할 수 있어야 한다. 이렇게 무중단으로 스키마를 수정하는 방법을 Online-Schema-Change, OSC라 한다. OSC를 사용하게 된 배경... alter table로 프로덕션 DB를 수정하다가, table lock으로 인해 일부 테이블 사용이 불가능해진 사고가 발생했다. 문제가 생긴 테이블들은 drop, create 모두 불가능한 교착 상태가 지속되었고 해결에 상당한 시간이 소요되었다. 스키마 변경에 따른 DB 문제 재발 방지를 위해 OSC를 도입하였다. 개념 설명 기존 alter table 방식 해당 테이블을 락으로 새로운..

Database 2020.06.19

Jmeter RDBMS 테스트용 쿼리문 정리

Jmeter 테스트용 쿼리문 정리 Jmeter 에서 RDBMS를 벤치마크하기 위해 사용한 쿼리문들이다. jdbc:cubrid://220.117.238.110:3306/testdb 220.117.238.110 db외부 접근 과정 커넥션 설정(커넥터가 세팅됨)-> 외부 접근 허용 설정(ip, 계정) -> 테이블 생성 SQL문 CREATE TABLE INVENTORY(idInventory Date,idChar UInt32,nameChar String,nameItem String,typeItem String,numItem UInt32) ENGINE = MergeTree(idInventory, idChar, 8192); CREATE TABLE INVENTORY(idInventory INT PRIMARY KEY A..

Database 2018.08.13

RDBMS의 백업 및 복구에 대한 연구 - (2) 백업 및 복구 테스트 준비

RDBMS의 백업 및 복구에 대한 연구 - (2) 백업 및 복구 테스트 준비 1. 테스트 후보군 1. MySQL2. MariaDB3. PostgreSQL4. Cubrid5. Firebird 2. 각 DB는 어떻게 백업 / 복구를 구현했는가? 각 DB의 백업 및 재해 복구(Disaster recovery)를 살펴보자 1) MySQLhttps://dev.mysql.com/doc/refman/8.0/en/backup-and-recovery.htmlhttps://dev.mysql.com/doc/refman/8.0/en/backup-strategy-summary.htmlhttps://dev.mysql.com/doc/refman/8.0/en/innodb-recovery.html MySQL 백업 MySQL Enter..

Database 2018.07.05

RDBMS의 백업 및 복구에 대한 연구 - (1) 기본 개념

RDBMS의 백업 및 복구에 대한 연구 - (1) 기본 개념 백업이란 무엇인가? https://www.techopedia.com/definition/1235/relational-database-management-system-rdbmshttps://www.techopedia.com/definition/24058/backup-and-recoveryhttps://technet.tmaxsoft.com/upload/download/online/tibero/pver-20140808-000002/tibero_admin/ch_BackupRecovery.html#d5e6326데이터베이스에 문제가 생길 것을 대비하여,DB의 데이터(스키마 및 테이블 등)의 사본을 따로 저장해두는 것 복구란 무엇인가? DB의 저장해둔 백업..

Database 2018.07.03

RDBMS - 인덱스

RDBMS - 인덱스 1. 인덱스란? 인덱스는 우리말로 색인과 같은 개념이다. 색인의 사전적 정의는 다음과 같다.색인 : 책 속의 내용 중에서 중요한 단어나 항목, 인명 따위를 쉽게 찾아볼 수 있도록 일정한순서에 따라 별도로 배열하여 놓은 목록. 우리는 원하는 정보가 있을 때 목차나 색인을 보고 해당 정보가 있는 페이지를 바로 찾을 수 있다.인덱스가 없다면 어떤 단어를 찾을 때, 책의 첫 페이지부터 끝 페이지까지 순서대로 검색해야 한다. DB에서의 인덱스는?DB의 내용 중에서 필요한 데이터를 쉽게 찾을 수 있도록 일정한 순서에 따라 배열한 목록이 되겠다. 인덱스를 사용하는 이유는 검색 속도를 높이기 위함이다. 2. 인덱스를 쓰면 좋은 점? 1) 검색이 빨라진다. (SELECT, WHERE 절로 검색해야할..

Database 2018.06.28

RDBMS -트랜잭션 검토

RDBMS -트랜잭션 검토 1. 트랜잭션이란? 여러 단계를 걸쳐 수행하는 작업을, 한 번에 수행할 수 있는 작업처럼 다루는 기능 핵심 : 작업을 모두 수행해놓거나, 이상이 생길 경우 수행하지 않은 상태로 두는 것 ex) 돈 거래 두 플레이어가 아이템과 골드를 교환한다고 가정하자.다음과 같은 순서로 데이터 전달이 이뤄진다. 1. 플레이어 1과 2가 거래 확인을 누른다.2. 플레이어 1의 지갑에서 5만원을 감소시킨다.3. 플레이어 2의 지갑에서 5만원을 증가시킨다.4. 플레이어 2의 인벤토리에서 아이템을 지운다.5. 플레이어 1의 인벤토리에서 아이템을 생성한다.6. 거래 종료 만약 2번에서 5번 과정 도중에 렉이 걸려서 DB가 동작하지 않는다면?플레이어가 손해를 보는 상황이 발생할 것이다.따라서 DB에서는 ..

Database 2018.06.22

RDBMS 개념 정리

1. RDBMS(관계형 데이터베이스 관리 시스템)란 무엇인가? RDBMS는 데이터 베이스 모델 중 하나인, 관계형 모델에 기반한데이터베이스 관리 시스템이다. 2. 데이터 베이스 모델이란? 데이터베이스의 구조, 형식을 말한다. 계층형 모델, 네트워크형 모델, 관계형 모델 등이 있다. 3. 관계형 모델이란? 테이블 형태로 만든 데이터베이스 모델. 관계형 모델의 핵심은 '테이블'이다.관계형 모델을 '테이블' 모델이라고 얘기해도 좋다. 여러 개의 테이블을 만들어 데이터를 저장하고,정해진 SQL 문으로 데이터들을 다루게 된다. 키워드 : 테이블, 컬럼과 로우, 키와 밸류, 정규화 관계, 조인, 테이블-테이블이 관계로 연결된다. 4. 관계형 모델에서의 관계는 어떤 의미지? 인간 관계, 상관 관계... 관계가 머리 ..

Database 2018.06.18