Rodzaje zapisów danych do bazy

0

Witajcie,
Zastanawiam się, czy jest jakiś optymalny zapis danych do bazy. Chodzi o dane tekstowe, liczbowe (wartości zmiennych). Do niedawna pisząc jakąkolwiek aplikację używałem zapisu typu jedna wartość = jedna kolumna w bazie. Np miałem jakiś formularz gdzie były pola tekstowe: Zmienna 1, Zmienna2, Zmienna 3, Zmienna 4. Wartości tych zmiennych zapisywałem pojedynczo do bazy. Niestety zapis nie jest optymalny przy dużej ilości danych. Mając kilka, kilkanaście zmiennych jest to ok. Ale jak w firmie mam wdrożyć proces biznesowy (pełne flow) które ma nawet 300 - 400 zmiennych (proces zazwyczaj składa się z kilkudziesięciu etapów, kroków) to taki zapis staje się już mało optymalny. Dlatego przesiadłem się na zapis XML-owy. Buduję sobie po prostu drzewko XML które zapisuję do bazy a gdy muszę je pobrać bo np proces tego wymaga to robię deserializację. Teraz zastanawiam się czy jest jeszcze jakiś inny rodzaj zapisu do bazy, wydajniejszy i bardziej optymalny od zapisu XML-owego.

0

Jeśli coś jest optymalne, to znaczy, że nie może być lepsze, więc tym bardziej nie może być "bardziej optymalne".

A co do problemu - to zależy. Może pomóc normalizacja, może po prostu podzielenie ich na mniejsze encje, może wzorzec open schema/entity-attribute-value. Ale to wszystko zależy od tego, co to są za dane i jaką mają charakterystykę. Na pierwszy rzut oka, być może każdy krok procesu biznesowego powinien być oddzielna tabelą.

0

jeśli coś można zapisać w XMLu to tym bardziej można to zapisać do bazy. A co do optymalny/nieoptymalny to każdą bazę można spi*** tak, że jedna operacja będzie trwała 5 minut a przyrost dzienny będzie na poziomie 1GB. Ja nic więcej nie jestem w stanie powiedzieć bez szczegółów bo teoretycznie to sobie można gdybać

1
lukpio3 napisał(a):

Witajcie,
Zastanawiam się, czy jest jakiś optymalny zapis danych do bazy. Chodzi o dane tekstowe, liczbowe (wartości zmiennych). Do niedawna pisząc jakąkolwiek aplikację używałem zapisu typu jedna wartość = jedna kolumna w bazie. Np miałem jakiś formularz gdzie były pola tekstowe: Zmienna 1, Zmienna2, Zmienna 3, Zmienna 4. Wartości tych zmiennych zapisywałem pojedynczo do bazy. Niestety zapis nie jest optymalny przy dużej ilości danych.

To jest własnie optymalne podejście dla baz relacyjnych.
Każde inne, stworzy nowe kłopoty.
XMLa można zapisać w bazie, pewnie - tylko jak będziesz obrabiał dużo danych w tych XML? Przez aplikację? No to nie będzie optymalnie...
Można tez i w bazie go przetwarzać, zdecydowana większość ma odpowiednie mechanizmy. Ale... to nie jest podejście relacyjne i przy dużej ilości i różnorodności danych, pewnie będzie z tym kłopot.

lukpio3 napisał(a):

Mając kilka, kilkanaście zmiennych jest to ok. Ale jak w firmie mam wdrożyć proces biznesowy (pełne flow) które ma nawet 300 - 400 zmiennych (proces zazwyczaj składa się z kilkudziesięciu etapów, kroków) to taki zapis staje się już mało optymalny. Dlatego przesiadłem się na zapis XML-owy. Buduję sobie po prostu drzewko XML które zapisuję do bazy a gdy muszę je pobrać bo np proces tego wymaga to robię deserializację. Teraz zastanawiam się czy jest jeszcze jakiś inny rodzaj zapisu do bazy, wydajniejszy i bardziej optymalny od zapisu XML-owego.

Coś mi tu śmierdzi, znaczy brzydko pachnie.
Mam wrażenie, że połączyłeś obiekt biznesowy i proces biznesowy w jeden XML - czy tak?
W życiu bym tego tak nie zrobił, to osobne sprawy.
Osobno i w sposób relacyjny opisywałbym obiekty biznesowy, a osobno zrobiłbym workflow tych obiektów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1