데이터베이스 엔진이 필요합니다. 나는 이것이 단순한 파일 시스템에 매우 가깝다고 생각한다. 신뢰성 확장 가능한 데이터베이스에서 트리 구조를 구현하는 좋은 방법은 무엇입니까?
- 목록 항목과 이
- 추가/"폴더"를 제거하고
- 어쩌면 심볼릭 링크를 "객체"여러 시스템에 걸쳐 속도 : 나는 다음을 수행해야 중복을 피하려면
각 "개체"는 최대 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)
이 접근법이 잘못되었거나 더 나은 것을 알고 있다면 알려주십시오.
중요한 액세스 암호 란 무엇입니까? 지금 ID가있는 폴더 하나에 액세스 하시겠습니까? 루트에서 시작하는 successiv 폴더 체인을 기반으로 Leaf 폴더를 찾으십시오. ... 다른 어떤? –
@ JensSchauder 나는 당신이 지금 요청한 것을 썼다고 생각합니다. –