2017-03-18 4 views
1

db 스키마를 만드는 방법을 찾으려고합니다. 데이터베이스에 대한 대부분의 작업은 읽기입니다. NoSQL db 스키마 디자인

내가 너무 스키마가
1) Grab all books by "F.Scott Fitzgerald" 
2) Grab books under genre "Novel" 
3) Grab all book with page count less than 400 
4) Grab books with page count more than 100 no later than 1930 

난 그냥 저자에 대해 별도의 컬렉션을 만들해야

등이

{ 
{ title : "Adventures of Huckleberry Finn" 
    author : ["Mark Twain", "Thomas Becker", "Colin Barling"], 
    pageCount : 366, 
    genre: ["satire"] , 
    release: "1884", 
}, 
{ title : "The Great Gatsby" 
    author : ["F.Scott Fitzgerald"], 
    pageCount : 443, 
    genre: ["Novel, "Historical drama"] , 
    release: "1924" 
}, 
{ title : "This Side of Paradise" 
    author : ["F.Scott Fitzgerald"], 
    pageCount : 233, 
    genre: ["Novel] , 
    release: "1920" 
} 
} 

그래서 대부분의 작업이 될 것 무언가 같이보고 수있는 응용 프로그램에 책을 판매하고있어 말 장르를 작성한 다음 관계형 데이터베이스처럼 참조하거나 위와 같이 포함 시키십시오. 필자가 수동으로 필자 이름을 입력해야하는 DB에 데이터를 저장하기 위해 필자의 파일을 포함하는 것처럼 보이기 때문에 F.Scott Fitzgerald의 철자를 잘못 입력하면 결과를 얻지 못할 수 있습니다.

답변

0

우선 나는 훌륭한 DB 선택을 말할 것입니다.

mongo가 염려하는 한, 스키마는 사용자의 액세스 패턴을 최상으로 제공하도록 정의되어야합니다. 스키마를 설계하는 동안 mongo는 SQL과 같은 조인과 트랜잭션을 지원하지 않는다는 것을 알아야합니다. 따라서 이러한 모든 특성과 다른 특성을 고려할 때 스키마 선택은 액세스 패턴을 제공 할 때 가장 좋습니다. 보통 우리는 서적 세부 사항을 가져올 때마다 저자, 페이지, 장르, 연도, 가격 등과 같은 모든 정보가 필요합니다. 클래스가 모든 속성을 가져야하고 모든 비 클래스 속성을 다른 곳에 보관해야하는 객체 지향 프로그래밍과 같습니다 수업. 별도의 컬렉션으로 작성자를 추가하는 것은 추가 컬렉션을 추가하기 만하면 코드로 조인과 트랜잭션을 처리해야합니다. 수동으로 작성자 이름을 입력하는 것에 대한 우려를 고려할 때 실제로 얻지는 않습니다. 사용자가 저자 "xyz"로 책을보고 싶은 경우 저자 이름 "xyz"(일부 태그와 같은)를 클릭하고 선택한 이름을 가진 모든 책을 저자로 가져올 수있는 쿼리를 가져올 수 있다고 가정 해 봅시다. 사용자가 수동으로 사용자 이름을 입력하면 입력 한 문자열로 문서를 찾습니다. 나는 아무것도 여기에서 보지 않는다. 추가하면 가격 키가 모든 문서에 적용됩니다.