Click here to load reader
Upload
kidoki
View
116
Download
0
Embed Size (px)
Citation preview
14. NoSQL을 넘어
아꿈사 박기덕
파일시스템은 계층적 키를 가지는 키-값 저장소처럼 취급
동시성에 대한 단순한 파일 잠금 이외의 제어 기능 제공하지 않음
구글파일 시스템과 하둡 같은 기술은 파일 복제를 지원
각 파일 크기가 크고 개수가 작을 경우 적합
파일시스템
현재 상태뿐 아니라 모든 변화를 포착해 저장
이벤트 소싱
시스템 상태 변화를 유발하는 모든 이벤트를 저장
이벤트 소싱
스냅샷을 저장하고 이를 이용해 상태를 재생성 할 수 있도록 설계
스냅샷은 최적화 도구이며, 제어권 우선순위가 이벤트 로그보다 낮아야 함
스냅샷을 뜨는 동안 메모리 상태 변화가 일어나면 안되므로 시스템 중단
오래된 이벤트는 스냅샷을 이용, 스냅샷 이후 이벤트 로그만 저장
과거 어느 시점으로든 재구성이 가능, 내역 정보 분석 플랫폼에 효율적
이벤트 소싱 사용시 복잡도 증가
이벤트 소싱
CQRS : 이벤트를 여러 개 시스템으로 분산
이벤트 소싱
상태를 메모리 내 데이터 구조만 사용해 메모리에 유지
메모리에 유지시 디스크 I/O 불필요, 데이터 구조 매핑 불필요
모든 데이터를 메모리에 저장하기 위해서는 크기의 한계 발생, 하지만
실현 가능성은 증가 추세
동시성 처리를 위한 명시적 메커니즘 필요
클로저 언어에서 지원하는 트랜잭션 메모리 시스템 사용
모든 처리를 단일 스레드로 수행
자동 롤백 기능이 없으므로, 사전에 검증을 통한 오류 방지 필요
메모리 이미지
개발자가 흔힌 접하는 이벤트 소싱 시스템은 버전 관리 시스템
과거 상태와 브랜칭을 통한 대안 상태 분석 지원
버전 관리 시스템은 파일 시스템 위에 구축
데이터 저장소로는 많은 한계를 지님
타임라인 기능을 유용하게 활용할 수 있는 경우 고려 가능
버전 관리
XML과 호환되는 데이터 모델로 저장하는 문서 데이터베이스
다양한 형태의 XML 스키마 정의 (DTD, XML, 스키마, RelaxNG)
Xpath와 XQuery로 쿼리 실행, XSTL로 변환 수행
XML 데이터베이스는 XML값을 단지 BLOB로 처리하는 대신 데이터
베이스 자체에서 XML 구조의 장점을 활용할 수 있다는 뜻
하지만, 관계형 데이터베이스의 지배력에는 큰 영향을 미치지 못함
XML 데이터베이스
메모리 내 데이터 구조를 관계형 테이블로 매핑 시 생기는 복잡성을
피하기 위해 고안
메모리 내 구조를 디스크로 저장하는 저장소를 자동으로 관리
데이터베이스와 애플리케이션의 밀접한 통합으로 인해 해당 애플리
케이션 이외에는 접근 불가로 인해 성공하지 못함
데이터 구조가 변경될 경우 전환 방법 문제 (지속성 저장소와 메모리
내 구조의 밀접한 결합)
객체 데이터베이스