2014-07-22 5 views
1

XML 데이터베이스의 작동 방식에 대한 질문을하고 있지만 XML 관계형 데이터베이스에서 어떻게 작동하는지 설명 할 수있는 표준 관계형 데이터베이스에 대한 예제를 제공 할 것입니다.XML 데이터베이스는 어떻게 심층 쿼리를 수행합니까?

COUNTRY_BUSINESS_TAB: COUNTRY_ID, BUSINESS_ID 
BUSINESS_EMPLOYEES_TAB: BUSINESS_ID, EMPLOYEE_ID 

는 ID에 대해 의미있는 이름을 부여 잊고 그냥 작업 할 수 있습니다 : 관계형 데이터베이스에서

Countries 
Businesses 
Employees 

을, 당신은 아마 다음 할 거라고 :

은 우리의 데이터를 가지고 말할 수 있습니다 ID의 용어.

직원이 검색하려면 쉽게 EMPLOYEE_ID이라는 색인을 BUSINESS_EMPLOYEES_TAB에 넣고 직원이 근무하는 비즈니스 ID를 신속하게 얻을 수 있습니다. 인덱스가 설정되면 전체 테이블 스캔을 수행 할 필요가 없습니다.

대신 데이터가 XML 형식이라고 말할 수 있습니다. 최상위 레벨에는 태그에 많은 국가 ID가 있습니다. 하위 태그에는 비즈니스 ID가 있습니다. 그리고 하위 태그로 직원 ID가 있습니다.

XML 데이터베이스는 전체 문서를 스캔하지 않고도 직원이 근무하는 모든 장소를 빠르게 찾을 수 있습니까?

XML 데이터를 많이 파싱했기 때문에 SQL 데이터베이스를 파싱하고 넣을 것을 고려했지만 지금은 BaseX과 같은 XML 데이터베이스에 직접 넣을 것을 고려하고 있습니다. SQL 대신 XQuery. XML 데이터베이스에서이 문제가 어떻게 해결되는지에 대한 설명이나 간단한 참조 자료만으로도 충분합니다.

+0

Stackoverflow에서 XML 데이터베이스를 검색하면 이에 대한 통찰력있는 분석을 얻을 수 있습니다. 전체 : Xml은 데이터베이스가 아니며 Xml 파일 자체는 전혀 쓸모가없고 쿼리에 비효율적입니다. 그러나 소프트웨어는 XML 파일을로드하고 색인을 생성하여 다소 효율적으로 만들 수 있습니다. 그러나 관계형 모델에 데이터를 맞출 수없는 경우에만 그렇게하십시오. –

+0

@MobyDisk 말씀 드려서 죄송 합니다만, 귀하의 의견은 잘못되었습니다. "다소 효율적"이라는 말은 과장된 표현입니다. 일부 시나리오에서는 원시 XML 데이터베이스가 매우 빠릅니다. 관계형 모델에서 여러 조인을 수행하는 대신 값을 선택하기 만하면됩니다. 귀하의 의견은 증거로 뒷받침되지 않지만 XML에 대한 오래되고 오래 된 편견으로 뒷받침됩니다. – dirkk

+0

참고 자료를 요청할 때 색인에 관한 설명서를 살펴보고 싶을 수도 있습니다. 기독교인에게 추가하는 내용은 https://docs.basex.org/wiki/Index입니다. 또한 인덱스는 구현에 따라 다르므로 내부적으로 인덱스를 처리하는 방법은 사용중인 실제 데이터베이스에 따라 다릅니다. – dirkk

답변

1

XML 데이터베이스는 XML 데이터를 쿼리하는 XPath 및 XQuery 언어를 제공합니다. 다음 쿼리는 예를 들어 직원이 일하는 장소를 반환하는 데 사용된다 (당신은 분명히 실제 XML 데이터에 적응해야 할 것이다, 그것이 작동되도록합니다) : 같은 BaseX, 의지 위의 쿼리와 일부 XML DBMS에서는

//employee[name = 'john']/parent::business/parent::country/@name 

을 인덱스 구조를 이용하기 위해 자동으로 재 작성됩니다. 이렇게하면 쿼리 결과에서 중요한 XML 텍스트 노드 만 쿼리 프로세서에서 검색됩니다.