더북(TheBook)

스키마리스는 곧 더 많은 신뢰성을 뜻한다

스키마리스 데이터베이스는 양날의 칼과 같다. 한편으로는 스키마 없이 작업하는 유연성 덕분에 문서 간의 구조적 차이에 쉽게 적응할 수 있다. 다른 한편으로는 문서 데이터베이스 관리 시스템은 구조에 기반한 규칙을 강요할 수가 없다. 키-값 쌍이 항상 문서에 있어야 한다는 것을 지시할 수단이 없으므로 문서 데이터베이스 관리 시스템은 이런 내용을 확인하지 않을 것이다.

만약 데이터베이스 관리 시스템이 데이터에 관한 규칙을 강제하지 않는다면 어떻게 될까? 이 질문에 대한 답은 애플리케이션 코드에 있다.

Tip 이러한 규칙에 대한 한 가지 예외가 바로 고유 식별자를 사용하는 것이다. 고유 식별자 없이 문서를 명시했다면 문서 데이터베이스는 아마 자동으로 고유 식별자를 추가할 것이다. 좀 더 자세한 사항은 여러분이 사용하는 문서 데이터베이스의 관련 문서를 찾아보길 바란다.

애플리케이션에서 데이터 구조에 관한 규칙을 확인하는 코드를 작성해야 한다. 사원 문서에 항상 사원 이름이 포함되어야 한다면 사원을 입력하는 애플리케이션 코드에서 새로운 사원이 추가될 때 반드시 이를 확인해야 한다. 여기서는 아주 간단한 데이터 검증 사례를 들었지만, 모두 이렇게 간단하지는 않다.

시간이 갈수록 컬렉션에 있는 문서의 키와 값은 변할 것이다. 작년에 사원들의 인증 정보를 수집하기 시작했다면 작년 이후로 추가된 사원들은 모두 인증 키가 있을 것이다. 정보가 갱신된 사원들 역시 인증 키와 값이 있을 것이다. 하지만 이들 외의 다른 사원들의 문서에는 인증 키가 없을 것이다.

이 상황에서 데이터 구조가 유효한지 확인하거나 최소한 예상된 키가 없는지를 처리하는 부분은 사원 문서를 추가하는 코드가 아니라 사원 문서를 사용하고 처리하는 코드에 있어야 한다(그림 7-4).

▲ 그림 7-4 데이터 검증 코드와 에러 처리 코드는 자동으로 수행되는 스키마 기반의 유효성 확인 기능처럼 문서 데이터베이스에서 부족한 부분을 보충할 목적으로 애플리케이션 전반에 걸쳐 사용된다


스키마리스 데이터베이스에서는 형식에 맞춘 구조 명세가 필요하지 않다. 필요한 정보는 컬렉션 내에 있는 문서에서 추출할 수 있다. 이는 스키마가 필요한 데이터베이스보다 더 나은 유연성을 제공한다. 하지만 자동으로 데이터와 문서의 무결성 규칙을 적용해주지는 않을 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.