2010-11-22 5 views
1

배경 : 나는 감독 그래프를 표현하기 위해 sqlite3를 사용하고SQL 그래프 효율성

.

시나리오 1 : 노드 및 협회

노드 테이블이 특정 노드와 관련된 노드 ID 및 데이터 수신을 원하는 분야

나는 두 개의 테이블이있다.

연관 테이블에는 부모 노드 필드와 자식 노드 필드 (및 기본 키 ID)가 있습니다.

시나리오 2 :

나는 하나 개의 테이블이 있습니다 노드를

노드 테이블은 노드 ID, 관련 노드 데이터, 노드 협회 열의 톤 (약 100)를 보유하고

잡아 다른 Node의 ID

질문 : 더 효율적입니다

? 특정 그래프 크기가 ​​다른 것보다 낫지는 않습니까? 이 두 가지 옵션의 확장성에 대한 경험이 있습니까?

내 가장 일반적인 쿼리는 특정 노드 하나가 연결된 모든 노드를 결정합니다.

답변

3

시나리오 1.

시나리오 2 기본 정상화 가이드 라인을 위반으로 가서 100 개 이상의 연결을 지원하기 위해 필요로 할 때 신속하게 벽에 머리를 두드리는 것이다. 또한 관계를 분석하기 위해 적절한 SQL을 수행하는 것이 더 어렵습니다.

빨리! 얼마나 많은 노드가 10 개와 20 개의 연관이 있습니까? 이 쿼리는 시나리오 2의 악몽입니다. ​​시나리오 1로 간단합니다.