Bagaimana cara menyimpan data dalam database tanpa tabel?

12

Yang saya pelajari di sekolah adalah SQL yang menyimpan data ke tabel. Saat ini saya sedang mengerjakan proyek tempat data disimpan dalam file XML. Selain itu setiap XML berisi referensi ke file visual (JPEG).

XML itu sendiri berisi lebih dari seribu titik koordinat, ditambah informasi tambahan tentang data.

Menurut pendapat saya tidak masuk akal untuk menyimpan informasi ini dalam tabel. Selain itu saya juga tidak bisa menyimpan file JPEG dengan SQL.

Apa solusi yang tepat, atau adakah kesalahan dalam berpikir di pihak saya?

Seperti yang Anda lihat, saya cukup baru di database. Jadi segala saran, tautan, dan saran yang membangun dipersilahkan.

チ ー ズ パ ン
sumber
SQL Server tentu dapat menyimpan file JPEG menggunakan tipe data IMAGE. Saya tidak akan merekomendasikan itu. Anda akan lebih baik menggunakan FILE-STREAM.
datagod
Ketika datang untuk menyimpan jpeg (atau file lain) dalam database, itu telah ditangani di sini pada beberapa pertanyaan yang paling sering kami tanyakan. Adapun cara menyimpan XML dan kemudian menemukan data itu dengan cepat, itu cukup untuk apa sistem penyimpanan data dokumen. Saya akan melihat solusi NoSQL atas database relasional, itu akan lebih mudah untuk bekerja dengan yang saya bayangkan.
jcolebrand
Ketika datang ke XML, DB2 IBM memungkinkan Anda untuk melakukannya. Dan Anda dapat meminta data dengan SQL atau XPath / XQuery. Edisi Express-C gratis mereka hadir dengan kemampuan untuk melakukan ini. Jika Anda pindah ke Edisi Perusahaan, Anda harus membayar untuk mengaktifkan fitur ini.
Chris Aldrich

Jawaban:

11

Yang Anda butuhkan adalah ketekunan XML Anda. Gunakan solusi NoSQL atau sistem file.

Tidak ada manfaatnya menggunakan RDBMS, kecuali Anda ingin menggunakannya sebagai ganti NoSQL atau sistem file.

gbn
sumber
Apa yang akan menjadi solusi NoSQL yang tepat? Saya bekerja dengan C # dalam aplikasi winform btw.
チ ー ズ パ ン
@bodycountPP: Saya tidak punya pengalaman dengan mereka ...
gbn
7
Saya akan memeriksa RavenDB ( ravendb.net ) atau CouchBase ( couchbase.com/couchbase-server/overview ) untuk digunakan pada Windows. Orang lain dapat ditemukan melalui Google - saya sudah memiliki pengalaman yang baik dengan produk-produk itu. Jelas jarak tempuh Anda mungkin berbeda-beda :)
ITHedgeHog
10

Saya membookmark posting blog Phil Factor Normalisasi dan 'Anima notitia copia' hari ini karena merangkum kasus ini dengan rapi dan berlawanan dengan normalisasi tipe data tertentu. Jalankan kueri berikut pada contoh SQL dan lihat apakah Anda setuju.

SELECT * FROM sys.syslanguages

SQL memungkinkan Anda membuat basis data relasional. Namun, bahkan jika baunya buruk, itu bukan kejahatan untuk melakukan hal-hal mengerikan yang tidak berhubungan dengan Database SQL asalkan diperlukan dan Anda dapat membedakannya; tidak hanya itu tetapi juga hanya jika Anda menyadari risiko dan implikasinya.

Anda menyebutkan bahwa file XML berisi "informasi tambahan tentang data". Apakah ada manfaat dalam pemodelan metadata dalam database relasional, untuk keperluan interogasi mungkin? Jika demikian, mungkin ada kasus untuk mengekstraksi data yang relevan dan mempertahankan XML yang tersisa sebagai jenis dokumen XML.

... jika Anda melewatkan string JSON atau XML, dan diminta untuk menyimpannya dalam database, maka yang perlu Anda lakukan hanyalah bertanya pada diri sendiri, dalam peran Anda sebagai Anima notitia copia (Jiwa basis data) 'apakah saya punya tertarik pada isi informasi ini? '. Jika jawabannya adalah 'Tidak!', Atau 'nequequam! Maka itu adalah nilai atom, betapapun kompleksnya itu.

Argumen Phil Factor adalah bahwa bidang non-relasional dalam database relasional dapat diterima jika bidang tersebut diperlakukan sebagai atom yaitu tidak berubah, atau ketika seluruh bidang berubah, bukan bagian penyusunnya. Perpanjangan alami dari hal ini adalah bahwa jika dokumen Anda mengandung elemen yang Anda minati, mungkin ada nilai dalam menerapkan model relasional untuk elemen-elemen tersebut.

Relevan dengan pertanyaan tetapi terutama untuk ungkapan, satu kutipan terakhir dari Phil:

Tentu saja, saya tidak pernah dengan sengaja membuat database yang tidak disukai oleh Codd, tetapi di sekitar tepinya ada antarmuka dan data feed yang saya tulis yang telah menyebabkan kecocokan desis di antara para fundamentalis Normalisasi.

Bukankah kita semua!

Mark Storey-Smith
sumber
2
ACORD agak seperti itu. Saya telah melihat orang-orang mencoba menyuruhnya menjadi model database. ACORD kemudian pergi dan melisensikan model data dari Prima, jadi meskipun mereka mengakui itu bukan model data. Standar olahpesan ACORD memiliki sekitar 7.000 bidang yang didefinisikan dan sekitar 200 adalah wajib - deskripsi terbaik ACORD (dari seseorang yang sangat terlibat dalam standar pengiriman pesan) adalah bahwa "tidak tahu bagaimana mengelola proses standar."
ConcernedOfTunbridgeWells
3

Sejauh menyangkut database Oracle, jawabannya adalah Anda tidak bisa . Semua data dalam database disimpan dalam tabel, bahkan meta-data. Data dapat disimpan dalam antrian, tetapi itu hanyalah cara berbeda menggunakan tabel. File XML dapat disimpan di luar database, tetapi itu tidak memenuhi persyaratan "dalam database" Anda.

Bergerak melampaui pertanyaan Anda, file JPEG atau file apa pun dalam hal ini dapat disimpan dalam database. Mereka akan membutuhkan tabel dan kolom LOB (BLOB atau CLOB). XML juga dapat disimpan dengan cara ini, tetapi mengimpor data XML ke dalam basis data akan memungkinkan Anda untuk beroperasi pada data dengan cara yang tidak mudah dilakukan sekarang. Ini juga akan memberikan manfaat lain dari database termasuk: Redundansi Berkurang, Aksesibilitas, Konkurensi, Skalabilitas, Interoperabilitas, Keamanan, Pemulihan, dan Kinerja.

Jika manfaat dari database tidak memajukan tujuan Anda, maka jangan gunakan satu.

Leigh Riffel
sumber
2

Kedengarannya bagi saya seperti Anda mencoba menerapkan database spasial . Ini adalah jenis database relasional (atau tambahan untuk produk-produk database yang ada, misalnya Oracle Spatial, postGIS) yang mendukung fungsi tipe data spasial dan digunakan untuk mengoptimalkan penyimpanan dan permintaan data terkait fitur spasial seperti batas poligon, titik dan lapisan. XML yang Anda miliki terdengar seperti pasangan koordinat batas dan citra terkait terdengar seperti aset karya seni untuk ditampilkan dalam batas itu. Jika datanya cocok, pertimbangkan basis data spasial relasional yang menawarkan pemodelan spasial built-in untuk menyediakan fungsionalitas yang Anda akan menemukan sulit atau memakan waktu untuk diimplementasikan.

banyak waktu luang
sumber
Selain itu, jika Anda sedang menerapkan Sistem Informasi Geografis , pertimbangkan untuk meminta pertanyaan ini lebih pada Sistem Informasi Geografis .