2012-08-24 7 views
0

데이터베이스 엔진이 필요합니다. 나는 이것이 단순한 파일 시스템에 매우 가깝다고 생각한다. 신뢰성 확장 가능한 데이터베이스에서 트리 구조를 구현하는 좋은 방법은 무엇입니까?

  • 규모의 데이터베이스 "폴더"에

    • 목록 항목과
    • 추가/"폴더"를 제거하고
    • 어쩌면 심볼릭 링크를 "객체"여러 시스템에 걸쳐 속도 : 나는 다음을 수행해야 중복을 피하려면

    각 "개체"는 최대 kB 크기 (추측)의 데이터 집합 (키 : 값)입니다.

    나는 couchbase와 http://www.infoq.com/articles/graph-nosql-neo4j을 들여다 보았지만 내 요구에 맞지 않는 것 같습니다. Couchbase는 첫 번째 요구 사항을 지원하지 않으며 Neo4j는 너무 앞서 보입니다. (왜 결코 사용되지 않을 기능을 구현합니까?)

    데이터에 대한 권한이나 보안이 필요하지 않습니다. 단지 중복성과 속도. 쓰기보다는 읽는 것이 더 많을 것입니다.

    이것을 구현하는 가장 좋은 방법은 무엇입니까? 디스크상의 폴더가 가장 좋은 방법일까요? 이중화를 통해 여러 서버로 확장하려면 어떻게해야합니까?

    편집 :
    원래 문제 :
    우리는 50 개 태그 같은까지와 객체의 큰 금액을 가지고있다. 평균 10 개의 태그를 추측합니다. 클라이언트는 서버에 태그 목록을 보냅니다. 서버는 사용자가 보낸 모든 (또는 거의 모든) 태그가 들어있는 모든 객체의 목록을 반환해야합니다.

    내 접근 방식 :
    1. 가능한 모든 태그 목록을 약간의 순차 순서 (가장 많이 사용됨)로 가져옵니다. 이것을 taglist이라고 부르 자.
    2. 클라이언트의 목록을 taglist으로 정렬하십시오. 알고리즘 다음
    3. 사용 :

    algorithm(startFolder) { 
    for each object in startFolder { 
         stack.push (object); 
    } 
    for each folder in startFolder where (folder.name is in listSentByClient) { 
         algorithm(folder); 
    } 
    } 
    

    4. stack 이제 클라이언트가 보낸 모든 태그를 포함하는 모든 객체를 포함합니다. 5. 반환 클라이언트

    새로운 개체를 추가하는 스택 : taglist에 의해
    1. 정렬 태그를. 이 sortedlist
    2. 입력하거나 이름 == sortedlist 3의 첫 번째 태그가 먼저 태그를 제거 폴더를 만들 전화 sortedlist 태그가 될 때까지 2 단계를 반복하고 3
    5. 현재 위치에서 객체를 생성 남아 있습니다
    (4)

    이 접근법이 잘못되었거나 더 나은 것을 알고 있다면 알려주십시오.

  • +2

    중요한 액세스 암호 란 무엇입니까? 지금 ID가있는 폴더 하나에 액세스 하시겠습니까? 루트에서 시작하는 successiv 폴더 체인을 기반으로 Leaf 폴더를 찾으십시오. ... 다른 어떤? –

    +0

    @ JensSchauder 나는 당신이 지금 요청한 것을 썼다고 생각합니다. –

    답변

    0

    2.0이 Elastic Search와 통합 되었기 때문에 Couchbase 2.0에서 (1.8.x가 아니라 매우 흥미로운 키잉 구조없이) 실제로이 작업을 수행 할 수 있지만 분명하지는 않습니다. 베타. 뷰와 쿼리를 사용하여이 작업을 수행 할 수도 있습니다.

    Neo4J에서는 각 태그와 객체를 노드로 만들고 객체와 태그 사이의 단일 양방향 관계 인 노드를 만들어 노드 사이의 관계를 만들면이 작업을 수행 할 수 있습니다. 태그 노드로부터 1 레벨 깊이의 모든 객체 노드를 얻는 것은 매우 간단한 쿼리입니다. 조금 더 정교하지만 객체가 가지고있는 태그 노드 그룹과의 관계 수를 기반으로 쿼리 할 수도 있습니다.

    +0

    탄성 검색은 어떻게 사용합니까? Neo4J에서 가장 좋은 옵션이 있습니까? 내 필요에 맞는 것은 무엇이든 할 것입니다. 오픈 소스가 선호된다. –

    관련 문제