Duża baza danych?

0

Witam

Podpowiedzcie mi bazę danych.

Mam za zadanie stworzyć aplikację bazodanową. Okna będę robił w builder c++ na widowsa, natomiast która baza?
Użytkowników podpiętych będzie pewnie 1-3 ale za to baza będzie duża, czyli dochodzić będzie ok 1TB rocznie.
Generalnie sprawa wygląda tak, że będą tworzone zlecenia, które mają po kilkanaście pól ale do każdego zlecenia będzie podpinanych wiele plików, pdf, jpg itp.
Najbardziej lubię firebirda ale do małych aplikacji a co wybrać do tak dużej bazy? postgresa?
Jak z wydajnością serwera?

Pozdrawiam

0

Czekaj, co? Chcesz zapisywać pliki do bazy danych? :|

0

Hmmm ... a nie da się?
Firebird to robi więc założyłem, że poważniejsze bazy też.

0

Tak, da się - tak samo jak możesz nauczyć się chodzić na rękach zamiast na nogach, pytanie tylko: po co?
Ręce nie zostały stworzone po to, aby na nich chodzić, a bazy nie zostały stworzone w celu trzymania w nich plików.

0

Podzielam obawy @Patryk27 proponuję Postgresql lub Oracle jednak lepiej będzie jak w bazie zapiszesz w bazie nazwę pliku + ścieżka i udostępnisz to gdzieś w sieci lokalnej bo jest to znacznie wydajniejsze przy zapytaniach. Wyobraź sobie, że masz 100 rekordów w tabeli, a w każdej z nich pole z plikiem zapisanym binarnie. Jeśli każdy z plików ma 1MB to przy zapytaniu o 100 rekordów będziesz musiał tak na prawdę pobrać 100 rekordów + 100*1MB danych z pliku ... BEZSENS.

0

Niektórym silnikom baz danych wychodzi to całkiem nieźle. SQLServer ma kontener do przechowywania plików i działa to sprawnie. Mamy kilkanaście baz w których binarki tak siedzą i nie ma problemu.

0

No dobrze, ale użytkownik chce zlecenia i zdjęcia do nich w jednym miejscu.
Hmmmm ... czyli lepiej jest trzymać pliki na dysku a w bazie trzymać tylko linki do nich?
To rozwiązanie okrężne. Idealnie byłoby mieć wszystko w jednym, uporządkowanym miejscu czyli w bazie, ale wówczas to będzie strasznie rosło.

Jeżeli miałbym trzymać tylko linki, to w takim przypadku nie ma sensu wchodzić w postgresa tylko zrobić bazę w firebird.

0
tuz napisał(a)

To rozwiązanie okrężne.

Wręcz przeciwnie - to jest rozwiązanie idealne, ponieważ:
1.Nie musisz obsługiwać 1TB+ bazy. Wyobrażasz sobie robienie kopii zapasowej tego?
2.Możesz mieć kilka serwerów z plikami na całym świecie (CDN) i na nich trzymać te obrazki oraz dokumenty.
3.Plus te wszystkie argumenty, które są w linku od @fasadin

0

Było maglowane (tak, wiem zachowuję się jak bym z elektrody był)
http://4programmers.net/Forum[...]ie_danych?p=1129857#id1129857

Sprawa w duży uproszczeniu wygląda tak, że jeżeli przechowujesz pliki w bazie to cała logika związana z ich obsługą jest opięta w transakcje bazy danych. Zatem nie nastąpi sytuacja gdzie masz "osierocone" pliki, bo na bazie commit się udał, ale nie udało się usunąć pliku albo gdy masz "null pointery", bo ktoś ręcznie usunął pliki z dysku, ale nie z bazy.

W takim wypadku jak twój można pomyśleć o rozwiązaniu polyglot data, czyli osobne źródła danych do przechowywania plików.

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