2011-11-14 5 views
4

데이터 처리를위한 모범 사례를 찾고 있습니다. 그래서, 그것이 내가 지금까지 얻은 것입니다 : "A"타입의 1.000.000 노드. 모든 "A"노드는 유형 "B"의 1-1000 노드와 유형 "C"의 1-10 노드에 연결할 수 있습니다.큰 데이터 세트 처리 (neo4j, mongo db, hadoop)

저는 neo4j 그래프로 데이터를 가져 오기 위해 RESTful 서비스 (Java, Jersey)를 작성했습니다. 노드 "A"(노드 만, 더 이상 데이터가없는 노드 만)를 가져온 후 neo4j db가 ~ 2.4GB로 증가했음을 알았습니다.

neo4j에 추가 필드 (이름, 설명, ...)를 저장하는 것이 좋은 생각입니까? 또는 데이터 액세스를 위해 키/값 조합을 사용하도록 mongoDB/hadoop을 설정해야합니까?

+1

내 의견으로는, 1 백만 노드/수 GB는 하둡으로가는 것을 보증하기에 충분하지 않습니다. –

답변

2

삽입하는 동안 많은 노드를 삭제 했습니까? 일반적으로 노드는 디스크에서 9 바이트를 차지하므로 1M 노드는 9M 바이트 만 사용해야합니다. 메모리를 적극적으로 회수하려면 ID 재사용을 사용해야합니다.

데이터 디렉토리의 콘텐츠를 파일 크기와 함께 나열 해주십시오.

큰 blob 필드가 아닌 경우 일반적으로 다른 필드를 neo4j에 넣는 것은 문제가되지 않습니다.

어떻게 데이터베이스를 만들었습니까?

+0

안녕하세요! 아니요, 노드를 삭제하지 않습니다. 나는 "id", "name"및 "code"속성을 가진 노드를 삽입하는 것입니다. ID는 자동 생성 문자열 (길이 = 32)입니다. 이름은 노드를 삽입 할 때의 카운터입니다 (노드 975.648 -> name = "name975648"). 코드는 이름과 동일합니다 (code975648). 집에 돌아 왔을 때 데이터 디렉토리의 내용 세부 정보를 게시합니다.) – Alebon

+0

이름 + 코드의 용도는 무엇입니까? 승수를 사용하지 않고 그냥 긴 값을 사용하면 공간을 훨씬 적게 차지합니다. Neo4j의 어떤 버전을 사용하고 있습니까? 또한 디스크 사용법을 배우려면 http://docs.neo4j.org/annotated/#short-strings 및 http://docs.neo4j.org/chunked/snapshot/configuration-caches.html을 참조하십시오. –

+0

Ok , 감사! 나는 한 가지 사실을 잊어 버렸다. 노드를 인덱싱하고 있습니다. : D 파일 크기를 살펴 보았습니다. neostore.propertystore.db는 ~ 1.4GB입니다. 그리고 색인은 같은 크기로 조용합니다. 모두 함께 ~ 2.8GB의 결과. 내 생각에, 노드를 찾기 위해 색인이 필요합니까? – Alebon