나는 현재 다음과 같은 사람들의 블로그, 팔로어, 팔로워, 댓글, 블로그 게시물과 같은 Tumblr과 같은 사용자 상호 작용을 구현하려고합니다. 또한 활동을 표시해야하는 요구 사항이 있습니다. 각 블로그 게시물마다.NoSQL 데이터베이스와 관계를 효율적으로 만들 수 있습니다.
데이터베이스에 적합한 스키마를 만드는 데 어려움을 겪고 있습니다. 이러한 종류의 기능 (블로그 게시물 및 주석과 같이 포함 된 데이터 구조 정의, 각 작업에 대한 활동 문서 작성 등)을 달성하는 데는 여러 가지 방법이 있지만 성능 및 확장 성 측면에서 어느 것이 가장 좋은지는 현재 결정할 수 없습니다.
예를 들어 내가 따르는 사람들의 구현을 살펴 보겠습니다. 다음은 샘플 사용자 문서입니다.
User = { id: Integer,
username: String,
following: Array of Users,
followers: Array of Users,
}
이것은 사소한 것처럼 보입니다. 나는 사용자 필드 (follow/unfollow)에 따라 다음과 같은 필드를 관리 할 수 있지만 현재 내가 따르는 사용자가 삭제되면 어떻게됩니까? 삭제 된 사용자를 따르는 모든 사용자 레코드를 업데이트하는 것이 효과적입니까?
또 다른 문제는 내가 팔로우하는 사람들의 블로그 글보기를 만드는 것입니다.
Post = { id: Integer,
author: User,
body: Text,
}
그래서 최신 검색어와 같은 효과적인 검색어입니다.
db.posts.find({ author: { $in : me.followers} })
친절한 답변을 보내 주셔서 감사합니다. 실제로 Node.js에 적합한 MongoDB를 사용하고 있습니다. MongoDB를 효과적으로 사용하여 구현할 수있는 한 다른 기술을 사용하고 싶지 않습니다. (배우고 다른 문제도 다루어야하기 때문에). –
MongoDB를 사용하여 문서 관계를 유지하기 위해 계속 시도하려는 유혹을 볼 수 있습니다. 다른 기술이 더 복잡해질 것을 두려워하여. 그러나 문제의 응용 프로그램이 매우 작고 항상 단일 개발자가 유지 관리하는 경우를 제외하고는 일반적으로 내 의견에 비할 바없는 해결책이 될 것입니다. 팀의 개발자 수가 증가함에 따라 각 팀은 문서 관계에서 문서를 업데이트하고 삭제할 때의 의미를 이해해야합니다. 장기적으로 더 많은 실수와 복잡성을 초래할 것입니다. – manish