데이터베이스 등장 배경
데이터베이스 시스템 사용 전에는 파일처리를 통해 데이터를 관리했습니다. 저용량 데이터 및 간단한 데이터 처리 형태는 파일처리가 가능했지만, 데이터의 용량이 늘어나고, 데이터 조작 레벨이 높아지며, 데이터를 처리할 때 발생하는 비용이 많아짐에 따라, 이러한 문제점을 해결하고자 파일처리 구조에서 데이터베이스 시스템으로 전환기를 맞이했습니다.
데이터베이스 정의
“Relational Database”의 줄임말로써, 키(Key), 값(Value)들의 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 장부라고 할 수 있습니다. 추가적으로 1970년 에드거 F. 커드가 제안한 “데이터 관계형 모델에 기초하는 디지털 데이터베이스”라고 위키피디아에서 정의하고 있습니다.
→ 다양한 데이터형을 관리/저장하기 위한 데이터 보관소
데이터베이스 사용 목적
저변에 깔려있는 고객들의 의중 “모든 것은 시간이 해결해 주리라”
- 시간, 비용 절약
- 기존 고객들은 잘 닦아 놓은 지름길을 원함
- 마루타가 되길 원치 않음
- 대안을 찾지 못함
사용목적
- 데이터는 모든 사용자에게 동일한 정보 제공
- 데이터 중복 최소화
- 다양한 관리 시스템 존재
- 데이터 보안성 제공
- 조작 가능한 언어 제공 (SQL)
- 활성화된 커뮤니티 존재
- 이미 검증된 안정성
데이터베이스 특징
가장 큰 특징은 트랜잭션 처리입니다. 데이터베이스에서 트랜잭션 처리는 아래와 같은 특징을 가집니다.
- 원자성(Atomicity)
트랜잭션 일련의 작업들이 부분적으로 종료되지 않고 안전하게 모두 실행 완료되었는지를 보장합니다.
- 일관성(Consistency)
트랜잭션 처리가 완료되고 난 이후에 데이터 조회 시 항상 동일한 데이터 조회가 가능함을 보장합니다.
- 고립성(Isolation)
특정 트랜잭션을 처리하고 있다고 가정한다면 처리되고 있는 도중에는 누군가 데이터에 접근할 수 없음을 보장합니다.
ex) A 유저가 이체거래를 하고 있는 도중에 거래내역을 조회한다면 처리되고 있는 시점의 데이터 조회 불가
4. 지속성(Continuous)
트랜잭션 처리가 완료되면 영원히 기록이 반영됨을 보장합니다.
블록체인과 데이터베이스의 공통점
- 사용자들에게 동일한 정보를 제공한다는 점에서 일관성을 보장
- 중복된 데이터는 저장할 수 없도록 최소한으로 제공
- 데이터를 실수로 유실/복원해야 할 경우 백업체계를 통한 복원 가능 → 안정성
- 데이터 암호화를 통한 보안성
-
- 현재 블록체인은 공개키 기반의 암호화 기법을 사용
- 필요하다면 데이터베이스에서는 데이터를 기록할 때 암호화할 수 있음. 블록체인은 데이터 자체를 SHA-256으로 해싱한 값을 기록하게 됨 → 오리지널 데이터는 평문화 되어 특정 repository에 기록됨 (차이점)
- 데이터베이스에서 특정 시점에 수행될 수 있도록 PL/SQL 제공 → 블록체인의 스마트컨트랙트와 유사
블록체인과 데이터베이스 차이점
- 블록체인의 불가역성
제일 큰 차이점이라고 볼 수 있는 부분이 바로 블록체인의 불가역성입니다. 일반적으로 데이터베이스는 C(create)/R(read)/U(update)/D(delete)를 제공하는 것에 반해, 블록체인에 기록된 데이터는 절대로 삭제할 수 없도록 설계되어 있습니다.
- 블록체인의 무결성
무결성이 가져다주는 가장 큰 특징은 기록된 데이터가 안전하게 저장되어 있으며 저장된 데이터가 악의적으로 조작 불가능한 상태를 말합니다. → 퓨어한 상태
특정 시점에 기록된 데이터를 조작하기 위해서는 DB에서처럼 SQL을 통해 조작이 불가능하며, 51% 공격을 통해서 공격받을 수 있지만, 이것 또한 다양한 방어 기법을 통해서 차단되고 있습니다.
- 블록체인의 다양한 합의 알고리즘 형태
기존 레거시와는 다르게 블록체인에서는 분산 환경에서의 데이터 정합성을 보장하기 위해서 합의 알고리즘을 사용하고 있습니다. 합의 알고리즘을 통해 데이터를 검증하고 원자성을 보장합니다.
- 블록체인은 중앙 집중 방식이 아닌 분산 환경을 제공
데이터베이스도 동일하게 제공할 수 있지만 일관성, 정합성, 원자성, 무결성, 가용성, 처리 속도 등의 이슈가 존재합니다.
- 암호화폐
암호화폐는 퍼블릭 환경의 블록체인 기반 서비스에서 일반 유저들도 블록 검증을 할 수 있도록 노드 참여를 유도하고, 보상체계(리워드)를 마련하여 원활한 서비스를 제공할 수 있도록 만들어진 가상의 화폐라고 볼 수 있습니다.
엔터프라이즈 환경에서는 암호화폐 기능이 현재 없음 필요 없음
사실상 필요성이 크게 대두되지는 않습니다. 이는 프라이빗 한 환경 자체가 신뢰된 시스템들과의 합의를 통해서 진행되기 때문입니다. 하지만 사내 식당, 카페테리아 등 정책과 필요에 의해 발급하고 사용할 수는 있습니다.
결론
엔터프라이즈 환경에서 아래 3가지 특징을 만족하는 서비스를 필요로 할 때 블록체인을 사용할 수 있을 것 입니다. 단, 다수의 참여자가 데이터를 공유하고 중개인을 통해서 신뢰를 보장받을 수 있는 환경이라면 데이터베이스(DB)를 사용해도 무방합니다.
- 데이터 투명성/무결성을 필요로 하는 서비스 환경
- 다수의 참여자가 존재하고 데이터를 공유하며 중개인을 통하여 신뢰를 보장받아야 할 때
- 기존 레거시 환경의 TPS가 블록체인이 감당할 수 있을 수준의 TPS보다 낮은 처리의 서비스를 운영하는 경우
- 적당한 TPS를 요하는 서비스에서 사용 가능할 것으로 보임
- 최근 다양한 합의 알고리즘이 나오면서 10만 이상 TPS 성능이 도출됨
– 스마트컨트랙트 사용 시 TPS는 어느 정도 감소 감안
– Visa 카드가 최대 2~3000TPS 수준임을 감안했을 때 훌륭한 수준
– 리얼타임 서비스까지 적용 가능한 수준으로 보고 있으나 다양한 검증사례가 필요
-
- 플랫폼마다 TPS 성능 측정 방식/합의 알고리즘에 대한 논란의 여지가 있어 보임