내가 Neo4j와 소셜 네트워크를 구축, 그것은 포함데이터 모델?
노드 레이블 : User
, Post
, Comment
, Page
, Group
관계 : LIKE
, WRITE
, HAS
, JOIN
, FOLLOW
, ...
페이스 북과 같습니다.
예 : A user
이 B user
를 수행 B
는 포스트, 댓글 등의 조치가있을 때, 그 행동이 A
로 전송됩니다, 그래서 등, 그룹에 가입 페이지에 따라, 다른 사용자를 따릅니다. 마찬가지로 C
, D
, E
명의 사용자는 B
을 수신하면 동일한 알림을 받게됩니다.
나는이 문제에 대한 데이터 모델을 설계하는 방법을 모르는 나는 몇 가지 해결책이 있습니다
- 은 모든 사용자에 대해
Notification
노드를 작성합니다. 작업이 실행되면n
명의 팔로워에 대한n
알림을 생성합니다. 이점 : 사용자가 알림을 보았는지 확인할 수 있습니다. 그러나 노드 수는 빠르게 증가하고n
의 힘이됩니다. - 모든 호출 API 알림 (클라이언트 응용 프로그램의 경우)에 대한 쿼리를 만듭니다.이 쿼리는 특별한 시간 (24 시간 또는 2, 3 일) 동안 사용자의 동작 목록 만 가져옵니다. 그러나 추종자들은 본 통지를 확인하지 못하고이 쿼리는 서버를 느리게 만들 수 있습니다.
- 사용자 당 노드가 20 개, 노드 수가 30 개로 제한된 노드를 만듭니다.
- 24 시간 동안 무제한 노드 생성 (동작 시간 포함) 및 해당 노드에 작업 시간 초과 속성 생성> 24 시간이 삭제됩니다 (만료 시간은 2, 3 일). 누가이 문제를 해결할 수 있습니까? 나는 어떤 해결책이나 새로운 방법을 선택해야합니까?
하지만 알림의 문제는 아직 설계 방법이 없습니다. –