Temat: Muzyka w bazie
Przemysław R.:
Sebastian Kolski:
Nie chciał bym zaczynać kolejnej odsłony wojny "pliki w bazie czy filesystemie", ale podam kilka powodów dla których jednak warto trzymać je w bazie:
- nie wystąpi sytuacja, w której manipulacja plikami na poziomie fs'u spowoduje rozjazd wskaźników na nie w bazie
przy ilu jednoczesnych transakcjach do bazy baza powie dość zakładając że pliki mają po kilkaset MB, SQL nie jest z gumy, pamięć też, a każda operacja skutecznie te zasoby zrzera
Co prawda pisałem o czymś innym (o sytuacji, gdy np ktoś inaczej, niż to jest zapisane w bazie, podmontuje zasób z plikami, albo skasuje/zmodyfikuje pliki z poziomu systemu operacyjnego), ale nie bardzo widzę powód dla którego baza miała by powiedzieć dość w opisanej powyżej sytuacji. To czy wrzucamy plik mający kilkaset mega czy kilka zżera mniej więcej tyle samo zasobów. Baza (w tym przypadku Oracle) przetwarza dane do wrzucenia nie w całości na raz, tylko w paczkach (kiedyś były to paczki po 32KB, obecnie są zmiennej wielkości max 64MB). Gdyby było inaczej to przy małej ilości pamięci przydzielonej bazie nie można by było wrzucić do niej dużych plików. Dodatkowo dane potrzebne do rollbackowania transakcji też nie są trzymane w pamięci. Co więcej np w Oracle nie ma, spotykanych w innych bazach, ograniczeń w ilości jednoczesnych insertów do jednej tabeli. Stąd też nie wiem dlaczego baza miała by powiedzieć dość.
- skalowalność
mocno naciągane
raczej chciałeś napisać wygodę w operowaniu
Zależy oczywiście o jakiej skali mówimy. Wrzuć do katalogu kilkadziesiąt milionów plików i spróbuj odczytać ostatni.
- spójność odczytów/zapisów
fakt
- backupy, które są regularnie testowane czy da się z nich odzyskać dane, i z których można odzyskać kompletne i spójne dane na zadany punkt w czasie
narzędzia do backupu FS też to potrafią
Potrafią odzyskać spójny obraz FS jaki był w zeszły czwartek o 19:34:32? Jeśli jest coś takiego to jak się nazywa? Wiem, że używając np ZFS'a można osiągnąć podobną funkcjonalność robiąc snapshoty, ale dokładność jest ograniczona częstotliwością robienia snapshotów.
zresztą nie odwarzył bym się zrobić FUL RECOVERY na bazie z takimi BLOBAMI- log by mnie zabił
Jedynie odtwarzając bazę z backupu można sprawdzić czy jest poprawny. Nie sprawdzany backup jest tylko niewiele lepszy niż brak backupu.
- łatwość przywrócenia skasowanych danych
co za różnica czy odtwarzasz z pliu do FS czy też z backupu do bazy
W przypadku bazy danych nie musisz nic odtwarzać z backupu.
Używasz po prostu flashback query
"Oracle Flashback Query retrieves data as it existed at an earlier time. The query explicitly references a past time through a time stamp or System Change Number (SCN). It returns committed data that was current at that point in time."
"Example 12-2 Restoring a Lost Row After Oracle Flashback Query
INSERT INTO employees (
SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
WHERE last_name = 'Chung'
);"
- szyfrowanie
eee, mocno nie trafiony argument, można zakodować głupiego zipa, rara czy co tam chcsz - a co śmieszniejsze za pomocą commandline
Oczywiście można to robić w ten sposób, tylko czy nie prościej jest po prostu przy tworzeniu tabeli dodać ENCRYPT i niech baza robi to za nas?
- deduplikacja
ale o co chcodzi?
google/bing -> wiki data deduplication
- automatyczna kompresja, wykrywanie czy kompresja coś da i stosowanie jej w takich przypadkach
kompresja może być w FS, NTFS tak ma, szyfrowanie też ma jakby co
Czy FS sprawdza czy dany plik warto kompresować? Czy też kompresuje wszystko jak leci?
- audytowalność zmian/dostępu
NTFS też to ma , wpisy idą do event-loga
Jakoś wydaje mi się, że wyciągnięcie rekordów audytu zapisanych w tabeli w bazie danych będzie łatwiejsze niż przeglądanie event-loga.
Oczywiście wszystko zależy od wymagań biznesowych.
tru
Dodatkowe pytanie, co oznacza zamulanie bazy bo nie znam tego pojęcia.
baza danych zużywa więcej zasobów niż posiada i mieli po dysku - to naprawdę denerwuje
Użycie bazy do składowania plików nie powinno w takim razie spowodować zamulania bazy (patrz początek).
-------
Najprawdopodobniej większość tekstu powyżej ma się nijak do pierwszego pytania, ale myślę, że warto porozmawiać o dostępnych technologiach