Jak przechowywać dane w bazie danych bez tabel?

12

W szkole nauczyłem się tylko SQL, który zapisuje dane w tabelach. Obecnie pracuję nad projektem, w którym dane są przechowywane w plikach XML. Dodatkowo każdy plik XML zawiera odniesienie do plików wizualnych (JPEG).

Sam plik XML zawiera ponad tysiąc punktów współrzędnych oraz dodatkowe informacje na temat danych.

Moim zdaniem przechowywanie tych informacji w tabelach nie ma sensu. Poza tym nie mogłem też przechowywać plików JPEG z SQL.

Jakie byłoby odpowiednie rozwiązanie, czy po mojej stronie występuje błąd w rozumowaniu?

Jak widać, jestem całkiem nowy w bazach danych. Wszelkie konstruktywne sugestie, linki i porady są mile widziane.

チ ー ズ パ ン
źródło
SQL Server z pewnością może przechowywać pliki JPEG przy użyciu typu danych IMAGE. Nie poleciłbym tego jednak. Lepiej byłoby użyć FILE-STREAM.
datagod
Jeśli chodzi o przechowywanie jpeg (lub dowolnego innego pliku) w bazie danych, zostało to omówione tutaj na niektóre z najczęściej zadawanych pytań. Jeśli chodzi o sposób przechowywania XML, a następnie szybkiego znajdowania tych danych, właśnie do tego służą systemy przechowywania danych dokumentów. Spojrzałbym na rozwiązanie NoSQL nad relacyjną bazą danych, wyobrażam sobie, że będzie łatwiej z nim pracować.
jcolebrand
Jeśli chodzi o XML, IBM IBM pozwala na to. I możesz wyszukiwać dane za pomocą SQL lub XPath / XQuery. Ich bezpłatna edycja Express-C ma taką możliwość. Jeśli jednak przejdziesz do wersji Enterprise Edition, musisz zapłacić, aby włączyć tę funkcję.
Chris Aldrich

Odpowiedzi:

11

Wszystko czego potrzebujesz to trwałość swojego XML. Użyj rozwiązania NoSQL lub systemu plików.

Korzystanie z RDBMS nie przynosi żadnych korzyści, chyba że chcesz go używać zamiast NoSQL lub systemu plików.

gbn
źródło
Jakie byłoby odpowiednie rozwiązanie NoSQL? Pracuję z C # w aplikacji WinWT btw.
チ ー ズ パ ン
@bodycountPP: Nie mam z nimi doświadczenia ...
gbn
7
Chciałbym sprawdzić RavenDB ( ravendb.net ) lub CouchBase ( couchbase.com/couchbase-server/overview ) do użytku w systemie Windows. Inne można znaleźć za pośrednictwem Googles - miałem dobre doświadczenia z tymi produktami. Oczywiście twój przebieg może się różnić :)
ITHedgeHog
10

Dzisiaj dodałem do zakładek wpis na blogu Phila Factora „ Normalizacja” i „Anima notitia copia”, ponieważ starannie podsumowuje argumenty za i przeciw normalizacji niektórych rodzajów danych. Uruchom następujące zapytanie w instancji SQL i sprawdź, czy się zgadzasz.

SELECT * FROM sys.syslanguages

SQL umożliwia tworzenie relacyjnych baz danych. Jednak nawet jeśli brzydko pachnie, nie jest przestępstwem robić potwornie nierelacyjnych rzeczy z bazą danych SQL, o ile jest to konieczne i można odróżnić; nie tylko to, ale także tylko wtedy, gdy zdajesz sobie sprawę z ryzyka i konsekwencji.

Wspomniałeś, że plik XML zawiera „dodatkowe informacje o danych”. Czy jest jakaś korzyść z modelowania tych metadanych w relacyjnej bazie danych, być może do celów zapytania? Jeśli tak, może zaistnieć potrzeba wyodrębnienia odpowiednich danych i zachowania pozostałego XML jako typu dokumentu XML.

... jeśli otrzymałeś ciąg JSON lub XML i musisz przechowywać go w bazie danych, wystarczy zadać sobie pytanie, w roli Anima notitia copia (dusza bazy danych) „czy ja mam zainteresowanie treścią tego elementu informacji? ”. Jeśli odpowiedź brzmi „nie!” Lub „nequequam! Zatem jest to wartość atomowa, jakkolwiek złożona może być.

Argument Phila Factora jest taki, że nierelacyjne pola w relacyjnej bazie danych są całkowicie akceptowalne, jeśli pole jest traktowane jako atomowe, tzn. Nie zmienia się lub gdy zmienia się całe pole, a nie jego część składowa. Naturalnym rozszerzeniem tego jest to, że jeśli dokument zawiera elementy, którymi jesteś zainteresowany, zastosowanie modelu relacyjnego do tych elementów może mieć wartość.

Ostatni cytat z Phila, odnoszący się do pytania, ale przede wszystkim do frazeologii:

Oczywiście, nigdy świadomie nie stworzyłem bazy danych, na którą Codd by się skrzywił, ale na brzegach znajdują się interfejsy i kanały danych, które napisałem, które spowodowały syczące pasje wśród fundamentalistów Normalizacyjnych.

Czyż nie wszyscy?

Mark Storey-Smith
źródło
2
ACORD jest trochę taki. Widziałem ludzi, którzy próbowali zmusić go do działania jako model bazy danych. Następnie ACORD poszedł na licencję na model danych od Prima, więc nawet oni przyznają, że nie był to duży model danych. Standard przesyłania wiadomości ACORD zawiera około 7 000 pól, z których około 200 jest obowiązkowych - najlepszym opisem ACORD (od osoby mocno zaangażowanej w standardy przesyłania wiadomości) jest to, że „nie wiem, jak zarządzać procesem standardów”.
ConcernedOfTunbridgeWells
3

Jeśli chodzi o bazy danych Oracle, odpowiedź brzmi: nie możesz . Wszystkie dane w bazie danych są przechowywane w tabelach, nawet metadane. Dane mogą być przechowywane w kolejkach, ale to tylko inny sposób korzystania z tabel. Pliki XML można przechowywać poza bazą danych, ale nie spełniałoby to wymagań „w bazie danych”.

Wychodząc poza zadane pytanie, pliki JPEG lub dowolne pliki w tym zakresie mogą być przechowywane w bazie danych. Wymagałyby tabeli i kolumny LOB (BLOB lub CLOB). XML można również przechowywać w ten sposób, ale import danych XML do bazy danych pozwoliłby na operowanie danymi w sposób, którego nie można teraz łatwo zrobić. Zapewniłoby to również inne korzyści z baz danych, w tym: zmniejszoną redundancję, dostępność, współbieżność, skalowalność, interoperacyjność, bezpieczeństwo, odzyskiwanie i wydajność.

Jeśli korzyści z bazy danych nie przyczyniają się do realizacji twoich celów, nie korzystaj z niej.

Leigh Riffel
źródło
2

Wydaje mi się, że próbujesz wdrożyć przestrzenną bazę danych . Jest to rodzaj relacyjnej bazy danych (lub dodatku do istniejących produktów bazodanowych, np. Oracle Spatial, postGIS), który obsługuje funkcje typów danych przestrzennych i jest wykorzystywany do optymalizacji przechowywania i zapytań o dane dotyczące cech przestrzennych, takich jak granice wielokątów, punkty i warstwy. Kod XML, który masz, brzmi jak pary współrzędnych granicy, a powiązane obrazy brzmią jak zasoby grafiki do wyświetlenia na tej granicy. Jeśli dane pasują, zastanów się nad relacyjną przestrzenną bazą danych, która oferuje wbudowane modelowanie przestrzenne w celu zapewnienia funkcjonalności, której wdrożenie byłoby trudne lub czasochłonne.

dużo czasu wolnego
źródło
Dodatkowo, jeśli wdrożenia Systemu Informacji Geograficznej , należy rozważyć nad tym pytaniem na Systemów Informacji Geograficznej .