2011-02-25 2 views
11

실제 문서 DB (예 : Couch 또는 Mongo) 대신 Sql Server XML 열을 사용할 수 있습니까?SQL Server XML 열을 Document DB로 대체 하시겠습니까?

guid PK Id 및 문서의 XML 열이있는 테이블을 만드는 경우. 문서 DB 사용시 주요 문제점은 무엇입니까?

SQL Server는 XML 열에 대한 인덱싱을 지원하므로 쿼리가 완전히 끔찍하지 않아야합니까?

+1

아주 좋은 질문입니다! SQL XML 컬럼을 가난한 사람들이 꽤 오랫동안 NoSQL 솔루션으로 사용해 왔지만 잘 작동합니다. 나는 매우 mongo를 시험해 보았지만, 여분의 인프라 스트럭처를 추가해서 가볍게 가져 가면 안된다. (백업 전략, 데이터베이스 자체 업데이트, 드라이버 업데이트 ...) –

답변

3

: http://rogeralsing.com/2011/03/02/linq-to-sqlxml-projections/

쿼리 속도는 내가 스케일링에 사용하는 것 아무것도, '괜찮은'입니다. 그러나 표준 인프라에서 실행되는 스키마없는 스토리지의 기쁨은 아주 좋습니다.

+1

"표준 인프라에서 실행되는 스키마없는 스토리지"- 100 % 동의합니다. 방대한 스케일을 필요로하지 않는 소규모 프로젝트의 경우 - SQL을 이미 가지고 있다면이 방법이 더 나은 절충안이며 시스템 복잡성을 줄이는 것이라고 생각합니다. –

0

예, 가능합니다. 좋은 생각인지 여부는 단지 2 센트입니다 ...

XML 데이터 유형이 나오기 전에 저는 NTEXT 열에 XML을 저장하는 시스템에서 작업했습니다. 이는 즐겁지는 않지만 실제 데이터의 사용은 그 데이터 중 일부를 관계형으로 파쇄하는 것을 의미합니다.

이제 XML 데이터 형식을 사용하면 XML blob을 쿼리하고 특정 값을 추출하거나 인덱스 할 수 있습니다. 그러나 개인적으로, 일반적으로, 나는하지 않을 것입니다. XML을 사용하지 않는다는 말은 아닙니다. 시나리오가 있기 때문입니다. 오히려 그게 당신이 계획하고있는 일이라면, "이것이 바로이 일에 적합한 도구"라고 생각할 것입니다. RDBMS를 문서 데이터베이스로 사용하면 다소 불안해합니다. MongoDB와 같은 것은 문서 데이터베이스로서 처음부터 만들어졌습니다.

모든 정직한 입장에서 데이터를 XML로 저장하는 성능 테스트를 수행하지 않았으므로 어떤 성능이 좋을지 알려주지는 못합니다. 이것이 규모에 따라 어떻게 수행되는지 알고 싶습니다.

2

예, 가능합니다. SqlServer XML 열 내에 문서를 저장하면 표준 XML 직렬화를 사용하면 알맞은 ACID complant 키/값 저장소가 제공됩니다. 또한 상대적으로 쉽게 쿼리를 수행 할 수 있으며 결과를 더 관계형 방식으로 저장하는 데이터에 조인 할 수 있습니다. 우리는 그렇게합니다. XML 필드에 내용을 저장하는 경우 저장소 요구 사항이 NTEXT를 사용하는 것보다 훨씬 적습니다. 쿼리가 더 유연하고 빠릅니다.

mongo에 대한 자동 보호 기능인 replica-sets의 원활한 장애 조치는 SqlServer에서 사용자를 확보하지 못합니다 (mongo와 비교). 또한 문서 안의 특정 속성을 증가시키는 것과 같은 원자 적 조작은 어렵습니다 (XQuery 업데이트 기능으로는 불가능하지는 않지만). 업데이트는 대부분의 NoSQL 데이터베이스에서 더 빠른 경향이 있습니다. 왜냐하면 "데이터는 디스크에서만 안전합니다"라는 원칙 때문에 더 편안하기 때문입니다.

7

당신은 여기에 몇 가지 질문을 가지고 :

는 (예 : 소파 또는 몽고 등) 실제 문서 DB위한 대용품으로는 SQL 서버 XML 열을 사용할 수 있습니까? 예, 대체물로 사용할 수는 있지만 아니요, XML 만 저장하고 SQL Server의 관계형 도구를 활용하지 않으면 성능에 만족하지 못할 수 있습니다.

guid PK Id 및 문서의 XML 열이있는 테이블을 만드는 경우. 문서 DB를 사용할 때의 주된 문제점은 무엇입니까? 간단히 말하면 스케일 아웃입니다. SQL Server는 이런 종류의 것을 확장하지 않습니다. 복제를 사용하면이 작업을 수행 할 수 있지만 "실제"문서 DB를 기준으로 관리하는 것은 어렵습니다.

SQL Server는 XML 열에 대한 인덱싱을 지원하므로 쿼리가 완전히 끔찍하지 않아야합니까? 문제는 SQL Server의 XML 인덱스에 원래 데이터의 저장 공간이 여러 번 걸릴 수 있다는 것입니다. 이러한 인덱스는 조각 모음과 같이 온라인에서 유지 관리 할 수 ​​없으므로 유지 관리 기간 중에 잠금 문제가 발생합니다.내가 일부이 실험을하고 있어요

+0

상세한 답변을 주셔서 감사합니다. 나는 현재 작은 프레임 워크에서 개념을 시험 중이다. Linq to SQL XML -> http://rogeralsing.com/2011/02/28/linq-to-sqlxml/ –

+0

도움이 될 수있어서 기쁘다. –

+0

브렌트 안녕하세요, 마지막 문장을 자세히 설명해 주시겠습니까? "이러한 인덱스는 조각 모음과 같이 온라인으로 유지할 수 없으므로 유지 관리 기간 동안 잠금 문제가 발생합니다." –