각 예제를 개별적으로 해결할 수는 있지만 지루할 수도 있고 성능 측면에서 벽에 부딪 힐 수도 있습니다.
자전거 타기를 좋아하고 런던 (SQL)에서 있습니다
사람들
관계를 ('런던에서'자전거를 좋아 ', 그리고 존재의 정말 느슨한 정의를 사용하여)
SELECT users.id
FROM users, posts, topics, locations
WHERE posts.topic_id = topics.id
AND users.id = posts.author_id
AND users.location_id = locations.id
AND locations.city = 'London'
AND topics.name = 'cycling'
GROUP BY users.id
ORDER BY COUNT(posts.id) DESC
데이터베이스는 특히 우아하게 많은 조인을 처리하지 않습니다. 로드 또는 대규모 데이터 세트로 인해 성능이 저하됩니다.
그러나, 그래프 데이터베이스에서 (Neo4J, 또는 TitanDB 등), 당신은 및 관련 기관의 그래프 통과하면 서비스를 제공하기위한 최적화 된 환경에서 훨씬 더 일반적인 방법으로 엔티티 대응하는 노드를 수집 할 수 있습니다 당신이 생각하고있는 유스 케이스 유형.
같은 쿼리 (사이퍼 - Neo4J는)
MATCH (topic:Topics {name:'cycling'})
<-[:POST_TOPIC]-(post:Posts)
-[:AUTHORED_BY]->(user:Users)
WHERE user-[:RESIDENT_OF]->(location:Location {city:'London'})
RETURN user.id AS user_id, count(post) AS post_count
ORDER BY post_count DESC
이들은 또한 (타이탄 및 기타 그래프 DB에 대한) 그렘린 순회으로 표현할 수 있지만, 그들은 매우 상세하고 해독하기 어려운 받기 시작.
페이스 북 스타일의 그래프 검색 관련성으로 설명하는 것에 접근하는 일반적인 방법이 있습니다. 귀하의 경우에는 맞춤 검색을 원할 것 같은데요. 검색 자의 분리 정도에 관계되는 모든 관련 정점 (위치 관계, 관심사, 친구 등 등 어떤 가장자리 관계를 사용하든). 당신은 쉽게 당신이 오늘을 구축하고자하는 모든 사용 사례를 열거 할 수없는 경우
, 당신은 아마 그래프 데이터베이스 행복 할 것이다, 그래서 당신은 당신의 아이디어를 실험하고,하지 않고 생산로를 시작할 수 있습니다 성능상의 이유로 코너를 자르십시오.
정확한 문구가 실제로 없기 때문에 질문이 너무 광범위합니다 (코드가 작동하지 않는 등). 그러나 당신이 찾고있는 것은 실시간 검색이라고하며 텍스트 입력을 기반으로 실시간 검색을 구현하는 데 도움이되는 많은 JS 라이브러리와 자습서가 있습니다. 데이터베이스 디자인, 테이블 조회 방법 등 많은 정보가 실시간 검색에 필요합니다. – Terry
그래프 데이터베이스에 관심이 있으시면 Neo4j를 사용하여 통계를 작성하실 수 있습니다. 일부 자연어 처리가 구워졌습니다. @ 테리와 합의를 보았습니다. 이것은 적합하지 않습니다. – JNevill
괜찮은 사람은 정보를 주셔서 감사합니다 :) – KAD