2016-07-24 4 views
2

mysql 데이터베이스에 작업 디렉토리 (즉, 재귀/중첩 폴더/파일)를 저장하는 것이 좋습니다.폴더/파일 구조 만들기

아이디어는 'projects'테이블과 트리 (varchar)에 해당 경로가있는 모든 폴더/파일을 포함하는 테이블을 갖는 것입니다.
프로젝트를 쿼리하면 클라이언트에서 트리를 빌드하는 데 사용할 문자열 경로 목록 (+ 일부 메타 데이터)으로 폴더와 파일을 반환해야합니다.

내 작업 디렉토리의 '파일'레코드는 mongodb 데이터 저장소의 json 파일을 나타내는 메타 데이터 (웹 페이지를 복잡한 중첩 json으로 설명 함)입니다. 파일 레코드는 폴더보다 자주 쿼리되며 (전혀 쿼리되지는 않음) 다른 테이블에 연결됩니다. 파일은 내 작업 디렉토리에 중요한 폴더와 다른 의미를 가지고 있습니다.

내 질문에 최선의 선택이 될 것입니다 무엇 :

  • 스토어 별도의 테이블
  • 같은 테이블에
  • 저장 파일 및 폴더에있는 파일과 폴더 (레코드가 동일 근처에있을 것입니다), 그리고를 사용 "파일"/ "폴더"를 가진 조인 된 테이블의 FK
+0

짧은 대답 : "고전적인"관계형 데이터베이스 (mysql 포함)는 이것에별로 좋지 않습니다. 여기에 좋은 링크가 있습니다 : [mySQL의 계층 적 데이터 관리] (http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/). 두 가지 접근 방법 a) * full * 경로를 열로 저장하십시오. 이 "가상 폴더 작성"은 간단하고 빠르다는 장점이 있습니다. b) 데이터를 폴더 (잠재적으로 n : m 관계)에 연결하는 1) 폴더, 2) 데이터, 3) "참조"테이블을 3 개 사용하십시오. – paulsm4

+0

@ paulsm4 팁 주셔서 감사. 재귀 적으로 중첩 된 트리를 json으로 저장하기 위해 mongodb를 사용하여 초기 구현을 시도했지만 트랜잭션 부족으로 인해 상당한 문제가 발견되었습니다. 어떤 스토리지 시스템을 제안 하시겠습니까? – Trace

답변

2

짧은 대답 : "고전적인"관계형 데이터베이스 (mysql 포함)는 이것에별로 좋지 않습니다. 여기에 좋은 링크가 있습니다 : Managing hierarchical data in mySQL

반면에, Wordpress는 당신이하려고하는 많은 것들을하는 응용 프로그램입니다 - 그것은 모두 mySql (또는 이에 상응하는 RDBMS)에서 수행합니다.

here을 보시려면, 특히 "taxonomies" 부분을보십시오.

다른 접근법은 neo4J과 같이 graph database을 볼 수 있습니다.

'도움이 되길 ...

+0

조언 해 주셔서 감사합니다. 내 나무는 또한 웹 사이트 구조를 나타냅니다. 나는 간단한 나무 구조로 시작할 수 있다고 생각한다. – Trace