Verileri tablo olmadan bir veritabanında nasıl saklayabilirim?


12

Okulda öğrendiğim tek şey verileri tablolara kaydeden SQL idi. Şu anda verilerin XML dosyalarında saklandığı bir proje üzerinde çalışıyorum. Ayrıca her XML görsel dosyalara (JPEG) bir başvuru içerir.

XML, binin üzerinde koordinat noktası ve veriler hakkında ek bilgi içerir.

Bence bu bilgiyi tablolarda saklamak hiç mantıklı değil. Ayrıca JPEG dosyalarını SQL ile de saklayamadım.

Uygun çözüm ne olabilir, yoksa benim tarafımda akıl yürütmede bir hata var mı?

Gördüğünüz gibi veritabanları için oldukça yeniyim. Yani herhangi bir yapıcı öneri, bağlantı ve tavsiye bekliyoruz.


SQL Server, JPEG dosyalarını IMAGE veri türünü kullanarak saklayabilir. Ancak bunu tavsiye etmem. FILE-STREAM'i kullanmak daha iyi olur.
datagod

Jpeg'i (veya başka bir dosyayı) veritabanında saklamak söz konusu olduğunda, burada en sık sorulan sorulardan bazılarında işlenir. XML saklama ve daha sonra bu verileri hızlı bir şekilde bulma yöntemiyle ilgili olarak, belge veri depolama sistemlerinin neredeyse tamamı budur. Bir ilişkisel veritabanı üzerinden bir NoSQL çözüm bakacaktı, ben hayal ediyorum ile çalışmak daha kolay olacak.
jcolebrand

XML söz konusu olduğunda, IBM'in DB2'si bunu yapmanıza izin verir. Ve verileri SQL veya XPath / XQuery ile sorgulayabilirsiniz. Ücretsiz Express-C sürümleri bunu yapabilme özelliğine sahiptir. Ancak Enterprise Edition'a geçerseniz, bu özelliği açmak için ödeme yapmanız gerekir.
Chris Aldrich

Yanıtlar:


11

Tek ihtiyacınız XML'inizin kalıcılığı. Bir NoSQL çözümü veya dosya sistemi kullanın.

RDBMS kullanmanın, NoSQL veya dosya sistemi yerine kullanmak istemediğiniz sürece hiçbir faydası yoktur.


Uygun bir NoSQL çözümü ne olabilir? Winform uygulama btw C # ile çalışıyorum.
ン ー ズ パ ン

@bodycountPP: Onlarla hiçbir deneyimim yok ...
gbn

7
Windows'da kullanmak için RavenDB ( ravendb.net ) veya CouchBase'e ( couchbase.com/couchbase-server/overview ) bakarım . Diğerleri Googles aracılığıyla bulunabilir - Bu ürünlerle ilgili iyi bir deneyim yaşadım. Açıkçası kilometreniz değişebilir :)
ITHedgeHog

10

Phil Factor'un normalleştirme ve 'Anima notitia copia' blog yayınına bugün yer imi koydum , çünkü belirli veri türlerini normalleştirmeye ve normalleştirmeye karşı davayı düzgün bir şekilde özetliyor. Bir SQL örneğinde aşağıdaki sorguyu çalıştırın ve kabul edip etmediğinizi görün.

SELECT * FROM sys.syslanguages

SQL ilişkisel veritabanları oluşturmanızı sağlar. Ancak, kötü kokuyor olsa bile, bir SQL Veritabanı ile gereksiz yere ilişkisiz şeyler yapmak suç değildir ve farkı anlayabilirsiniz; sadece bu değil, aynı zamanda sadece risklerin ve sonuçların farkındaysanız.

XML dosyasının "veriler hakkında ek bilgi" içerdiğinden bahsettiniz. Belki de sorgulama amacıyla, ilişkisel bir veritabanındaki meta verilerin modellenmesinin herhangi bir faydası var mı? Öyleyse, ilgili verileri ayıklamak ve kalan XML'yi XML belge türü olarak devam ettirmek için bir durum olabilir.

... bir JSON dizesi veya XML'den geçtiyseniz ve bunu bir veritabanında saklamanız gerekiyorsa, yapmanız gereken tek şey kendinize sormaktır, Anima notitia copia (veritabanının Ruhu) olarak rolünüz var mı? bu bilginin içeriğine ilgi duyuyor musunuz? '' Cevap 'Hayır!' Veya 'nequequam! O zaman atomik bir değerdir, ancak karmaşık da olabilir.

Phil Factor'un argümanı, ilişkisel bir veritabanındaki ilişkisel olmayan alanların, alan atomik olarak ele alınırsa, yani değişmezse veya tüm alan değiştiğinde, kurucu bir parçası değil, tamamen kabul edilebilir olduğudur. Bunun doğal uzantısı, belgeniz ilginizi çeken öğeler içeriyorsa, bu öğelere ilişkisel bir model uygulamada değer olabilir.

Soru ile ilgili, ancak esas olarak deyim için, Phil'den son bir alıntı:

Doğal olarak, bilerek asla Codd'un kaşlarını çattığı bir veritabanı oluşturmadım, ancak kenarların etrafında Normalizasyon köktendincileri arasında tıslamalara neden olan arayüzler ve veri beslemeleri var.

Hepimiz değil mi!


2
ACORD biraz böyle. Veritabanı modeli olarak hizmet vermeye ayakkabı çekmeye çalışan insanlar gördüm. ACORD daha sonra Prima'nın bir veri modeline gitti ve lisans verdi, bu yüzden bunun bir veri modeli olmadığını itiraf ettiler. ACORD mesajlaşma standardı, yaklaşık 200'ü zorunlu olan yaklaşık 7.000 alana sahiptir - ACORD'un en iyi açıklaması (mesajlaşma standartlarına yoğun bir şekilde dahil olan birinden) "bir standart sürecini nasıl yöneteceğini bilmiyorum."
ConcernedOfTunbridgeWells

3

Oracle veritabanları ile ilgili olarak, cevap veremezsiniz . Veritabanındaki tüm veriler meta verilerde bile tablolarda saklanır. Veriler kuyruklarda saklanabilir, ancak bunlar tabloları kullanmanın farklı bir yoludur. XML dosyaları bir veritabanının dışında saklanabilir, ancak bu "veritabanında" gereksiniminizi karşılamaz.

Belirttiğiniz sorunun ötesine geçmek için JPEG dosyaları veya bu konudaki herhangi bir dosya bir veritabanında saklanabilir. Tablo ve LOB sütunu (BLOB veya CLOB) gerektirirler. XML de bu şekilde saklanabilir, ancak XML verilerini veritabanına içe aktarmak, veriler üzerinde artık kolayca yapılamayacak şekilde çalışmanıza olanak tanır. Ayrıca veritabanlarının diğer faydalarını da sağlar: Azalan Artıklık, Erişilebilirlik, Eşzamanlılık, Ölçeklenebilirlik, Birlikte Çalışabilirlik, Güvenlik, Kurtarma ve Performans.

Bir veritabanının faydaları hedeflerinizi daha da ileriye götürmezse, bir veritabanını kullanmayın.


2

Bana uzamsal bir veritabanı uygulamaya çalıştığınız gibi geliyor . Bu, uzamsal veri türleri işlevlerini destekleyen ve çokgen sınırlar, noktalar gibi uzamsal özelliklerle ilgili veriler için depolamayı ve sorguları optimize etmek için kullanılan bir tür ilişkisel veritabanıdır (veya Oracle Spatial, postGIS gibi mevcut veritabanı ürünlerine eklentidir) ve katmanlar. Sınır koordinat çiftleri gibi seslere sahip olduğunuz XML ve ilişkili görüntüler bu sınırda görüntülenecek resim varlıkları gibi sesler çıkarır. Veriler uyuyorsa, uygulanması zor veya zaman alıcı bulabileceğiniz işlevsellik sağlamak için yerleşik uzamsal modelleme sunan ilişkisel bir uzamsal veritabanını düşünün.


Eğer Ek olarak, olan bir uygulayıcı Coğrafi Bilgi Sistemi üzerinde üzerinden bu soruyu soran düşünün Coğrafi Bilgi Sistemleri .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.