xml veri türü ve sütunları (SQL Server)

Bu konuda, yararları ve kısıtlamaları anlatılmaktadır xml veri türü SQL Serverve nasıl xml verilerini depolamak için seçmenize yardımcı olur.

İlişkisel veya xml veri modeli

Verileriniz çok bilinen şema ile yapılandırılmış, ilişkisel model veri depolama için en iyi çalışan muhtemeldir. SQL Servergereken işlevsellik ve ihtiyaç duyabileceğiniz araçları sağlar. Yapısı, yarı yapılandırılmış veya yapılandırılmamış ya da bilinmeyen ise, diğer yandan bu tür veri modelleme için dikkate vermek zorunda.

xml yapısal ve semantik biçimlendirme kullanarak veri taşınabilirliği sağlamak amacıyla bir platformdan bağımsız modeli istiyorsanız iyi bir seçimdir. Ayrıca, aşağıdaki özelliklerden bazıları memnun eğer uygun bir seçenek olduğunu:

  • Verilerinizi seyrek veri yapısını biliyor musunuz veya veri yapısı gelecekte önemli ölçüde değişebilir.

  • Veri referansları arasında varlıklar, yerine çevreleme hiyerarşisini temsil eder ve özyinelemeli olabilir.

  • Sipariş verilerinizi doğasında vardır.

  • Verileri sorgulamak veya bölümlerini, kendi yapısında güncelleştirmek istiyorum.

Bu koşullardan hiçbiri karşılandığında, ilişkisel veri modeli kullanmalısınız. Örneğin, verileri xml biçiminde olduğunu ancak uygulamanızın sadece veritabanı depolama ve veri almak için kullandığı bir [n]varchar(max)sütundur tüm gerektirir. Verileri bir xml sütunda depolamak ek faydalar vardır. Bu verileri de kurulan ya da geçerli ve ayrıca ayrıntılı sorgu ve güncelleştirme xml verileri destekler motoru olan içerir.

SQL Server'da xml verilerini depolamak için nedenleri

Aşağıda bazı yerel xml özellikleri kullanmak için nedenleri SQL ServerDosya sistemi xml verilerinizi yönetmek yerine:

  • Paylaşmak, sorgu ve xml verilerinizi verimli ve işlenen bir şekilde değiştirmek istiyorum. Uygulamanız için ayrıntılı veri erişim önemlidir. Örneğin, bir xml belgesi içindeki bölümlerin bazıları ayıklamak istediğiniz veya tüm belgeyi değiştirmeden yeni bir bölüm eklemek isteyebilirsiniz.

  • İlişkisel veri ve xml veri var ve hem de ilişkisel arasındaki birlikte işlerlik istediğiniz ve uygulamanız içinde xml verileri.

  • Etki alanları arası uygulamalar için sorgu ve veri değişiklik için dil desteği gerekir.

  • Sunucunun verileri iyi biçimlendirilmiş garanti ve ayrıca isteğe bağlı olarak, verileri xml şemalarına göre doğrulamak istediğiniz.

  • İstediğiniz xml verilerinin verimli sorgu işleme ve iyi ölçeklenebilirlik ve first-rate sorgu iyileştirici kullanımı için dizin oluşturma.

  • SABUN, ado istiyorum.net ve ole db xml veri erişimi.

  • xml verilerini yönetmek için veritabanı sunucusu yönetim işlevselliğini kullanmak istiyorum. Örneğin, bu yedekleme, kurtarma ve çoğaltma olacaktır.

Bu koşullardan hiçbiri memnun olduğunu, bir olmayan xml, büyük nesne türü gibi verilerinizi depolamak için daha iyi olabilir [n]varchar(max)ya varbinary(max).

xml depolama seçenekleri

xml depolama seçenekleri SQL Serverşunlar:

  • Yerel depolama alanı olarak xmlveri türü

    Verileri veri xml içeriği koruyan bir iç gösterimi depolanır. Bu iç gösterimi, öğe ve öznitelik değerleri, belge düzeni ve kapsayıcı hiyerarşi hakkında bilgi içerir. Özellikle, xml verilerini InfoSet içeriği korunur. InfoSet hakkında daha fazla bilgi için ziyaret http://www.w3.org/TR/xml-infoset. Çünkü aşağıdaki bilgileri korunmaz xml, metin özdeş bir kopyasını InfoSet içeriği olmayabilir: anlamsız beyaz boşluk, öznitelik, ad alanı önekleri ve xml bildirimi.

    Yazdığınız için xml veri türü, bir xmlveri türü için xml şemaları, post-schema doğrulama InfoSet (PSVI) bağlı InfoSet türü bilgilerini ekler ve iç gösterimi kodlanır. Bu ayrıştırma hızını önemli ölçüde artırır. Daha fazla bilgi için bkz: W3C xml şeması teknik özelliklerine http://www.w3.org/TR/xmlschema-1 ve http://www.w3.org/TR/xmlschema-2.

  • xml ve ilişkisel depolama arasındaki eşlemeyi

    Bir açıklama eklediğiniz şema (axsd) kullanarak, xml içine bir veya daha fazla tablodaki sütunlar ayrıştırılır. Bu sadakat ilişkisel düzeyinde verileri korur. Bunun sonucunda, her ne kadar sipariş unsurları arasında sayılır hiyerarşik yapısı korunur. Şema özyinelemeli olamaz.

  • Büyük nesne depolama, [n]varchar(max)vevarbinary(max)

    Verileri özdeş bir kopyası depolanır. Yasal belgeler gibi özel amaçlı uygulamalar için kullanışlıdır. Çoğu uygulama tam bir kopyası gerektirmeyen ve xml içeriğini (InfoSet doğruluk) ile memnun.

Genellikle, bu yaklaşımların bir arada kullanmak zorunda kalabilirsiniz. Örneğin, xml verilerinizi depolamak isteyebilirsiniz bir xmlveri yazın sütun ve ilişkisel sütunlara özellikleri teşvik. Ya da özyinelemesiz bölümleri olmayan xml sütunlar ve yalnızca yinelenen bölümlerini depolamak için haritalama teknolojisini kullanmak istediğiniz xml veri türü sütun.

Seçim xml teknolojisi

xml teknolojisi, yerel xml xml Görünümü karşı seçimi genellikle aşağıdaki etmenlere bağlıdır:

  • Depolama seçenekleri

    xml veri (örneğin, bir ürün Kılavuzu), büyük nesne depolama için daha uygun olabilir veya daha fazla depolama aygıtına (örneğin, bir satır öğesi xml biçimine dönüştürülür) ilişkisel sütunlara müsait. Her depolama seçeneği belgenin aslına farklı ölçüde korur.

  • Sorgu özellikleri

    Bir depolama seçeneği daha uygun daha başka tabanlı sorguları doğası ve hangi xml verilerini sorgulamak ne ölçüde bulabilirsiniz. xml düğümleri, örneğin yüklem değerlendirilmesi, xml verilerinizi ayrıntılı sorgu değişen derecelerde iki depolama seçenekleri desteklenmektedir.

  • xml verilerini dizin oluşturma

    xml verilerinin xml sorgu performansı hızlandırmak için dizin oluşturmak isteyebilirsiniz. Dizin oluşturma seçenekleri ile depolama seçenekleri değişir; yükünüzü optimize etmek için uygun bir seçim yapmak zorunda.

  • Veri değişikliği yetenekleri

    Bazı iş yükleri, xml verilerinin ayrıntılı değişiklik gerektirir. Örneğin, bu ancak Web içeriği gibi diğer iş yükleri bir belge içinde yeni bir bölüm ekleme içerebilir. Veri değişikliği dili desteği uygulama için önemli olabilir.

  • Şema desteği

    xml verilerini xml şema belgesi olmayabilir veya bir şema tarif edilebilir. Şemaya bağlı xml desteği xml teknolojisi bağlıdır.

Farklı seçenekleri, farklı performans özellikleri de vardır.

Yerel xml depolama

xml verilerinizi depolamak bir xmlveri türü sütununu sunucudaki. Aşağıdakiler geçerliyse, bu uygun bir seçimdir:

  • Sunucuda xml verilerini depolamak ve aynı zamanda, belge düzeni ve belge yapısını korumak için basit bir şekilde istediğiniz.

  • Olabilir veya bir şema, xml verileri olmayabilir.

  • Sorgulamak ve xml verilerini değiştirmek istediğiniz.

  • xml verilerini daha hızlı sorgu işleme için dizin oluşturmak istediğiniz.

  • xml verileri ve xml şemalarını yönetmek için sistem Kataloğu görünümleri uygulamanız gerekir.

Aralığı yapıları olan xml belgeleri sahip yerel xml depolama yararlıdır, ya da sen-si olmak çok sert-e ilişkisel yapıları eşlemek farklı ya da karmaşık şemaları uygun xml belgeleri.

Örnek: Modelleme xml verileri kullanarak xml veri türü

Her konu için ayrı bir bölüm oluşur xml biçiminde bir ürün kılavuzunu düşünün ve her bölüm içinde birden çok bölüm vardır. Bölüm, alt bölüm içerebilir. Sonuç olarak, <bölüm> bir özyinelemeli öğe. Karışık içerik, diyagramları ve teknik malzeme büyük miktarda ürün kılavuzları içerir; yarı veridir. Kullanıcı-ebilmek istemek-e "Kümelenmiş dizin" bölümünde arama gibi ilgi çekici konular için Bağlamsal arama yapmak için "dizin" ve sorgu teknik miktarları ilgili bölüm içinde.

xml belgeleri bir uygun depolama model bir xmlveri türü sütununu. Bu InfoSet içeriğini xml verilerinizi korur. xml dizin sütun faydaları performans sorgusu.

Örnek: xml verilerinin tam kopyaları koruyarak

Çizim için hükümet yönetmeliklerine tam metin, xml belgelerinin kopyalarını korumak için gerektirdiği varsayalım. Örneğin, bu imzalı belgeler, yasal belgeler ya da hisse senedi işlem emirleri dahil olabilir. Sen-ebilmek istemek-e, belgelerinizi saklamak bir [n]varchar(max)sütun.

Sorgulamak için veri dönüştürme xmlveri türü, çalışma süresi ve Xquery üzerinde görüneceği şekilde yürütmek Özellikle belge büyük olduğunda çalışma dönüşüm pahalı olabilir. Sık sık sorgularsanız, zorlu belgeleri depolayabileceğiniz bir xmlveri yazın sütun ve kesin belge kopyaları dan verirken kütüğü [n]varchar(max)sütun.

xml sütuna göre hesaplanmış bir sütun olabilir [n]varchar(max)sütun. Ancak, hesaplanan, bir xml sütun xml dizin oluşturamazsınız, ne de bir xml dizin oluşturulmadan [n]varchar(max) ya varbinary(max)sütun.

xml görüntüleme teknolojisi

xml şemalarınızı tabloları arasında bir eşleme veritabanı tanımlayarak, "xml Görünümü" oluşturma kalıcı veri. xml bulk load xml Görünümü kullanarak temel tabloları doldurmak için kullanılır. XPath 1.0 sürümünü kullanarak, xml Görünümü sorgulama yapabilirsiniz; Sorgu tabloları sql sorgularını çevrilir. Benzer şekilde, güncelleştirmeleri için bu tabloları da yayılır.

Bu teknoloji, aşağıdaki durumlarda yararlıdır:

  • Varolan ilişkisel veri xml görünümlerini kullanarak xml merkezli bir programlama modeli olmasını istiyorsanız.

  • Bir dış ortak vermiş olduğunuz, xml verileri için bir şema (xsd, xdr) var.

  • Sipariş verilerinizi, önemli değil veya özyinelemeli sorgu tablo verilerinizi değil veya maximal özyineleme derinliği önceden bilinir.

  • Sorgulamak ve XPath 1.0 sürümünü kullanarak xml görünüm üzerinden veri değiştirmek istiyorum.

  • Toplu yükü xml verileri ve temel alınan tabloların içine xml Görünümü kullanarak bunları ayrıştırmak istediğiniz.

İlişkisel veri, veri değişimi ve Web Hizmetleri ve xml verilerini sabit şemasını xml olarak maruz örnekler. Daha fazla bilgi için bkz: MSDN Çevrimiçi Kitaplığı.

Örnek: notlu xml şeması (axsd) kullanarak veri modelleme

Şekil için müşteriler, Siparişler ve satır öğeleri xml olarak işlemek istediğiniz gibi varolan ilişkisel veri olduğu varsayılmaktadır. xml Görünümü ilişkisel veri axsd kullanarak tanımlayın. xml Görünümü için toplu tablo ve sorgu xml verileri yüklemek ve ilişkisel veri xml Görünümü kullanarak güncelleştirme sağlar. Bu, eğer sen-si olmak-e sql uygulamalarınızı kesintisiz çalışırken diğer uygulamalarla xml biçimlendirmesi içeren veri alışverişi kullanışlı bir modeldir.

Hibrid modeli

İlişkisel sık sık bir arada ve xml veri türü sütun veri modelleme için uygun. Bazı xml veri değerleri ilişkisel sütunları ve dinlenme depolanabilir veya tüm xml değeri bir xml sütunda depolanan. Kilitleme özellikleri ve ilişkisel sütunları oluşturulan dizinler üzerinde daha fazla denetime sahip ki bu daha iyi performans oluşabilir.

İlişkisel sütunlara depolamak için değerleri, yüküne bağlıdır. Yol ifadesi, /Customer/@CustId, geçerli tüm xml değerleri almak eğer değeri Örneğin, teşvik CustId özniteliği ilişkili sütun ve bu dizin içine verim daha hızlı sorgu performansı. Öte yandan, ilişkisel sütunlara değerlendirdik ve nonredundantly xml verilerinizi çürümüş, yeniden birleştirme maliyeti önemli olabilir.

Son derece yapılandırılmış xml verileri, xml, tablo içeriğini dönüştürülmüş; tüm değerleri ilişkisel sütunları eşleştirmek ve muhtemelen xml Görünümü teknolojisini kullanır.

xml veri parçalı yapı

Parçalı Yapı bir xml sütunda depolanan xml verilerinin kilitleme için çok önemlidir ve daha az bir ölçüde, aynı zamanda güncelleştirmeleri için önemlidir. SQL Serveraynı kilitleme mekanizması, hem xml hem de olmayan xml verilerini kullanır. Bu nedenle, satır düzeyinde kilitleme tüm xml örnekleri satır kilitlenmesine neden. Büyük xml örnekleri güncelleştirmeleri için kilitleme parçalı yapı büyük olduğunda, verimi çok kullanıcılı bir senaryoda azalmaya neden olur. Öte yandan, şiddetli ayrışma nesne kapsülleme kaybeder ve yeniden birleştirme maliyeti artar.

Veri modelleme gereksinimleri ve kilitleme ve güncelleştirme özellikleri arasında bir denge iyi bir tasarım için önemlidir. Ancak, SQL Server, gerçek depolanan xml örnekleri boyutu gibi kritik değil.

Örneğin, güncelleştirmeleri xml örneğine varolan depolanan xml örneği için onun güncelleştirmek yorum karşılaştırılacağı kısmi büyük ikili nesne (blob) ve kısmi dizin güncelleştirmeleri için yeni destek kullanılarak gerçekleştirilir. Kısmi büyük ikili nesne (blob) güncelleştirmesi iki xml örnekleri arasında bir fark karşılaştırma yapar ve yalnızca farklılıklar güncelleştirir. Kısmi dizin güncelleştirmeleri, yalnızca xml dizin değiştirilmelidir satırları değiştirin.

Xml veri türü kısıtlamaları

Aşağıdaki genel sınırlamalar geçerli not xmlveri türü:

  • Saklı gösterimini xmlveri türü örnekleri en 2 gb.

  • Bir alt türünü kullanılamaz bir sql_variant örneği.

  • O does değil çekmek döküm veya dönüştürme ya da textya ntext. Kullanım varchar(max)ya nvarchar(max)yerine.

  • Karşılaştırıldığında veya sıralama yapamazsınız. Yani bir xmlveri türü bir grupla deyiminde kullanılamaz.

  • IsNull, birleşim ve VERIUZUNLUĞU dışındaki herhangi bir skalar, yerleşik işlevlere parametre olarak kullanılamaz.

  • Dizin anahtar sütun olarak kullanılamaz. Ancak, bu kümelenmiş bir dizin veri olarak dahil veya kümelendirilmemiş bir dizin, kümelendirilmemiş dizin oluşturulduğunda dahil anahtar sözcüğünü kullanarak açıkça eklendi.

Ayrıca bkz.

Kavramlar

Toplu alma ve verme xml belgelerinin (SQL Server) örnekleri