2010-08-19 3 views
4

this question에서 시작된 토론과 관련하여, 저는 이것을 커뮤니티 위키 질문으로 올리기로했습니다.관계형 데이터베이스에서 XML 데이터의 저장과 관련된 일반적인 문제는 무엇입니까?

따라서 질문의 루트는 XML 데이터를 관계형 데이터베이스에 저장하는 것이 적절합니까? 일반적으로 동일한 목표를 구현하는 더 좋은 방법이 있습니까? 어떤 데이터베이스 엔진이 XML 데이터 형식 (예 : SQL Server)을 제대로 지원하며 소위 "XML 인덱스"를 둘러싼 문제는 무엇입니까?

답변

3

데이터베이스는 데이터를 저장하기위한 것입니다. XML은 데이터입니다. 따라서 올바른 상황에서 데이터베이스에 XML을 저장하는 것이 완벽하게 유효합니다. 그것이 가장 효율적인 것은 일반화 될 수없는 많은 요소들에 달려 있습니다.

예를 들어, 서점의 서적과 같은 객체를 나타내는 구조화 된 XML 문서가있는 경우 데이터를 구문 분석하고이를 위해 설계된 데이터베이스의 적절한 행과 열에 저장하는 것이 좋습니다 데이터.

OTOH, 코드 샘플이 들어있는 데이터베이스를 상상해보십시오. 언어, 설명 및 코드 열이 있습니다. XML의 경우 분명히 코드 열에 XML을 저장합니다.

소프트웨어의 많은 것들과 마찬가지로 "의존적"입니다.

+0

이전에는 RDBMS의 XML이 불투명하고 확인할 수 없기 때문이었습니다. 지난 10 년간이 사건은 그다지 심각하지 않았습니다. –

+0

@Steven Sudit : 내 무지를 용서해주세요.하지만 RDBMS가 XML임을 어떻게 알 수 있습니까? 그것은 단지 한 묶음입니다. 일반 ASCII 텍스트를 검색 할 수있는 이유는 무엇입니까?하지만 XML처럼 보이게되는 일반 ASCII 텍스트는 검색 할 수 없습니까? –

+0

@Bryan : 열은 명시 적으로'nvarchar (max)'가 아니라'xml' 유형으로 명시 적으로 선언되며 스키마와 연관 될 수 있습니다. (MS SQL Server 2008에 대한 내용이지만 다른 데이터베이스에도 비슷한 기능이 있습니다.이 제품에 대한 개요는 http://www.microsoft.com/sqlserver/2008/en/us/wp-sql-2008-whats- new-xml.aspx) –

0

실제로 데이터베이스의 XHTML 정보를 저장하기 위해 DB에 저장하는 데이터의 종류에 따라 다릅니다. 관계형 데이터베이스의 원칙 중 하나는 정보가 원자 적이라는 것입니다. 당신은 그래서는 RDBMS에서 XML을 지원하여

name | information 
---------------------- 
Clark | <profession> writer </profession><profession> journaliste </profession><profession> superhero </profession> 
1

하나 개의 문제처럼 저장 뭔가에 대해 것

name | professions 
---------------------- 
Clark | writer, journaliste, superhero 

같은 저장해야입니다 AFAIK XML의 비교를 위해 보편적으로 인정 규칙이 없음 서류. 관계형 데이터베이스는 원칙적으로 할당 및 비교를 지원할 수있는 모든 속성 값을 저장할 수 있습니다. 이는 관계형 프로젝션에 필수적입니다. 예를 들어 각 속성 값이 서로 비교 가능해야하기 때문입니다. 대부분의 유형에서는 문자열, 숫자, 바이너리 등의 비교는 문제가되지 않습니다. XML 문서 유형의 경우 잠재적으로 더 어려울 수 있습니다.

일부 SQL DBMS (비 관계형 DBMS)는 단순히 XML 값의 비교를 허용하지 않습니다. 예를 들어 Microsoft SQL Server에서는 XML 형식의 열을 사용할 수 있지만 비교할 수는 없으므로 SELECT DISTINCT가 지원되지 않습니다.

관련 문제