2014-11-30 6 views
5

종종 NOSQL 데이터베이스의 데이터는 비정규 화되어 저장됩니다. 예를 들어 체스 게임 기록을 생각해보십시오. 그것은 체스 게임에 참여하는 플레이어 ID뿐만 아니라 그 플레이어의 이름과 성을 포함 할 수 있습니다. NOSQL에서는 조인이 가능하지 않기 때문에이 작업이 수행된다고 가정합니다. 따라서 데이터를 복제하면 데이터의 수동 애플리케이션 수준 처리없이 한 통화에서 원하는 모든 데이터를 검색 할 수 있습니다.NOSQL 비정규 화 데이터 모델

내가 이해할 수없는 것은 체스 플레이어의 이름을 업데이트하려고 할 때 해당 플레이어가 참여하는 체스 게임 기록과 플레이어 기록을 모두 업데이트하는 쿼리를 작성해야한다는 것입니다. 그 선수의 데이터베이스가 해당 플레이어가 참여하는 모든 게임을 검색 한 다음 해당 레코드를 각각 업데이트해야하기 때문에 엄청난 성능 오버 헤드가있는 것 같습니다.

예제와 같이 데이터가 비정규 화 된 상태로 저장되는 것은 사실입니까?

답변

7

정확합니다. 데이터는 종종 NoSQL 데이터베이스에 비정규 화되어 저장됩니다.

업데이트의 문제점은 부분적으로 "최종 일관성"이라는 용어가 나오는 부분입니다.

예에서 플레이어의 이름을 업데이트 할 때 (일반적인 이벤트는 아니지만 발생할 수 있음) 백그라운드 작업을 실행하여 다른 모든 레코드에서 이름을 업데이트합니다. 예, 업데이트가 진행되는 동안 이전 값을 검색 할 수 있지만 결국 데이터가 일관됩니다. 여기서 ATM 소프트웨어를 작성하지 않기 때문에 성능/일관성의 절충이 가능합니다.

여기에서 자세한 정보를 확인할 수 있습니다. http://www.allbuttonspressed.com/blog/django/2010/09/JOINs-via-denormalization-for-NoSQL-coders-Part-2-Materialized-views