JOIN 에 대한 연구? 삽질?
Alfresco 는 CMIS 이다. CMIS 를 대상으로 컨텐츠 모델링을 할 때는 일반 RDB 모델링 하듯이 하면 완전 피본다는 것을 뼈저리게 느끼고 있다.
일단, JOIN 이 지원되지 않는다는 것은 타격이 크다. SOLR 은 4.0 이상 부터 JOIN 을 지원하는데, Alfresco 4.0 에서는 SOLR 1.4 버전을 사용한다. CMIS Query 에서 JOIN 을 제공해주는 예제를 확인하여 테스트를 해보았으나 커스텀 타입의 데이터 모델은 "Advanced join is not supported" 익셉션만 뱉을 뿐이다...
검색을 하다가 찾은 내용인데, 안습...
The bottom-line is that Alfresco isn't relational. You can set up associations and through the API you can ask a give node for its associations, but you cannot run queries across associations like you can when you do joins in a relational database.
Maybe you should add a location property to your content node and update its value with a behavior any time an association is created, updated, or deleted on that node. Then you'd be able to run a query by AND-ing the location with other criteria on the node.
Obviously, if you have many such properties that you need to keep in sync your behavior could start to affect performance negatively, but if you have only a handful you should be okay.
출처: http://stackoverflow.com/questions/11193275/alfresco-solr-custom-search
대충 내용은 Alfresco 는 relational 하지 않다. RDB 처럼 join 을 할 수 없다. 노드의 생성, 갱신, 삭제 시에 관련 프로퍼티를 업데이트 해주어야 한다. 이 것은 성능에 부정적인 영향을 끼친다. 얼마 안되는 정도라면 괜찮다.
결국, behaviour 를 이용하여 업데이트 하는 방법은 절대 절대 피해야 하는데 방법이 보이질 않는다...
SOLR 을 4.0 으로 올릴 수는 없을까?