Discussion:
PostgreSQL: bytea vs blob
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Antoni Jakubiak
2006-08-11 12:25:55 UTC
Permalink
Witam.

Chciałbym zapisywać pliki w bazie danych PostgreSQL.

Przez wiele lat omijalem to zagadnienie zapisujac pliki
w systemie plikow a w bazie wylacznie referencje.

Jednak teraz chcialbym zapisywac w bazie cale pliki.
Prosze o opinie o BLOB i BYTEA.

W zamierzchlych czasach, gdy nie bylo jeszcze bytea,
BLOB mial nastepujace problemy:
- trudny w dump/restore
- brak transakcji
O ile sie nie myle te problemy z blobem zostaly rozwiazane.

BYTEA chyba nie powinien miec podobnych problemow.
Ale chcialbym sie upewnic, przedewszystkim tego:
- czy jest mozliwosc korzystania z: pg_dump --format=p





Pozdrawiam
Antoni Jakubiak
sg
2006-08-11 12:48:41 UTC
Permalink
Post by Antoni Jakubiak
Witam.
Chciałbym zapisywać pliki w bazie danych PostgreSQL.
Przez wiele lat omijalem to zagadnienie zapisujac pliki
w systemie plikow a w bazie wylacznie referencje.
Jednak teraz chcialbym zapisywac w bazie cale pliki.
Prosze o opinie o BLOB i BYTEA.
W zamierzchlych czasach, gdy nie bylo jeszcze bytea,
- trudny w dump/restore
- brak transakcji
O ile sie nie myle te problemy z blobem zostaly rozwiazane.
BYTEA chyba nie powinien miec podobnych problemow.
- czy jest mozliwosc korzystania z: pg_dump --format=p
Pozdrawiam
Antoni Jakubiak
To ja się podepnę pod temat, czy wogóle stosować umieszczanie plików w
bazie czy nie, a przede wszystkim dlaczego?

sg
Łukasz
2006-08-11 14:21:40 UTC
Permalink
Post by sg
To ja się podepnę pod temat, czy wogóle stosować umieszczanie plików w
bazie czy nie, a przede wszystkim dlaczego?
Tak ze względu na transakcyjność - to podstawowy argument
Tak ze względu na jeden backup zamiast kilku
Tak ze względu na synchronizację wielodostępu
sg
2006-08-11 15:00:35 UTC
Permalink
Post by Łukasz
Post by sg
To ja się podepnę pod temat, czy wogóle stosować umieszczanie plików w
bazie czy nie, a przede wszystkim dlaczego?
Tak ze względu na transakcyjność - to podstawowy argument
Tak ze względu na jeden backup zamiast kilku
Tak ze względu na synchronizację wielodostępu
a jakieś przeciw?
sg
2006-08-11 16:03:35 UTC
Permalink
Post by Łukasz
Post by sg
To ja się podepnę pod temat, czy wogóle stosować umieszczanie plików w
bazie czy nie, a przede wszystkim dlaczego?
Tak ze względu na transakcyjność - to podstawowy argument
Tak ze względu na jeden backup zamiast kilku
Tak ze względu na synchronizację wielodostępu
Deleting the Large Object is a separate operation that needs to be
performed. Large Objects also have some security issues since anyone
connected to the database can view and/or modify any Large Object, even
if they don't have permissions to view/update the row containing the
Large Object reference.

A to jest kawałek z tej strony
http://jamesthornton.com/postgres/7.4/jdbc-binary-data.html i wcale mi
się to niepodoba


sg
Paweł Matejski
2006-08-11 18:43:05 UTC
Permalink
Post by sg
Post by Łukasz
Post by sg
To ja się podepnę pod temat, czy wogóle stosować umieszczanie plików
w bazie czy nie, a przede wszystkim dlaczego?
Tak ze względu na transakcyjność - to podstawowy argument
Tak ze względu na jeden backup zamiast kilku
Tak ze względu na synchronizację wielodostępu
Deleting the Large Object is a separate operation that needs to be
performed. Large Objects also have some security issues since anyone
connected to the database can view and/or modify any Large Object, even
if they don't have permissions to view/update the row containing the
Large Object reference.
A to jest kawałek z tej strony
http://jamesthornton.com/postgres/7.4/jdbc-binary-data.html i wcale mi
się to niepodoba
Dlatego zrobili typ BYTEA.
I nie skacz tak po wersjach, lepiej się trzymać najnowszej, jeśli nie wskazano konkretnej.
--
P.M.
Łukasz
2006-08-12 08:41:09 UTC
Permalink
U?ytkownik "sg" <***@skynet.org.pl_WITHOUT> napisa? w wiadomo?ci news:ebi9oo$c1b$***@inews.gazeta.pl...

Deleting the Large Object is a separate operation that needs to be
performed. Large Objects also have some security issues since anyone
connected to the database can view and/or modify any Large Object, even
if they don't have permissions to view/update the row containing the
Large Object reference.

A to jest kawałek z tej strony
http://jamesthornton.com/postgres/7.4/jdbc-binary-data.html i wcale mi
się to niepodoba

Ogólnie zabezpieczenia w Postgresie są KIEPSKIE
Nie można dawać grantów na zawężeniu WHERE
I tak na ogół problem uprawnień trzeba rozwiązywać w kodzie aplikacji (po
stronie serwera of course :)

Pozdrawiam
sg
2006-08-12 09:59:05 UTC
Permalink
Post by Łukasz
Ogólnie zabezpieczenia w Postgresie są KIEPSKIE
Nie można dawać grantów na zawężeniu WHERE
I tak na ogół problem uprawnień trzeba rozwiązywać w kodzie aplikacji
(po stronie serwera of course :)
Pozdrawiam
a to niemiło... czyli jak zrobię po stronie serwera będzie tylko
postgres to nie będzie najlepszy pomysł?

sg
Paweł Matejski
2006-08-12 10:21:31 UTC
Permalink
Post by sg
Deleting the Large Object is a separate operation that needs to be
performed. Large Objects also have some security issues since anyone
connected to the database can view and/or modify any Large Object, even
if they don't have permissions to view/update the row containing the
Large Object reference.
A to jest kawałek z tej strony
http://jamesthornton.com/postgres/7.4/jdbc-binary-data.html i wcale mi
się to niepodoba
Ogólnie zabezpieczenia w Postgresie są KIEPSKIE
Nie można dawać grantów na zawężeniu WHERE
I tak na ogół problem uprawnień trzeba rozwiązywać w kodzie aplikacji
(po stronie serwera of course :)
A w której można? I dlaczego widoki Ci nie wystarczają?
--
P.M.
hubert depesz lubaczewski
2006-08-12 10:37:13 UTC
Permalink
Post by Łukasz
Nie można dawać grantów na zawężeniu WHERE
sorry, ale możesz podać przykład czego nie można zrobić? i przykład bazy
w której można to samo zrobić.

depesz
--
http://www.depesz.com/index.php/2006/08/05/szukam-ludzi-do-pracy/
sg
2006-08-11 15:27:55 UTC
Permalink
Post by Antoni Jakubiak
Witam.
Chciałbym zapisywać pliki w bazie danych PostgreSQL.
Przez wiele lat omijalem to zagadnienie zapisujac pliki
w systemie plikow a w bazie wylacznie referencje.
Jednak teraz chcialbym zapisywac w bazie cale pliki.
Prosze o opinie o BLOB i BYTEA.
W zamierzchlych czasach, gdy nie bylo jeszcze bytea,
- trudny w dump/restore
- brak transakcji
O ile sie nie myle te problemy z blobem zostaly rozwiazane.
BYTEA chyba nie powinien miec podobnych problemow.
- czy jest mozliwosc korzystania z: pg_dump --format=p
Pozdrawiam
Antoni Jakubiak
kawałek manuala:

The SQL standard defines a different binary string type, called BLOB or
BINARY LARGE OBJECT. The input format is different from bytea, but the
provided functions and operators are mostly the same.

http://www.postgresql.org/docs/8.1/interactive/datatype-binary.html

sg
Andrzej Kosmala
2006-08-11 17:33:39 UTC
Permalink
U?ytkownik "Antoni Jakubiak" <***@clubbing.czest.lp> napisa? w wiadomo?ci news:ebi136$h35$***@mx1.internetia.pl...
Witam.
Post by Antoni Jakubiak
Chciałbym zapisywać pliki w bazie danych PostgreSQL.
[...]
Post by Antoni Jakubiak
BYTEA chyba nie powinien miec podobnych problemow.
- czy jest mozliwosc korzystania z: pg_dump --format=p
Tak.
Pola bytea zapisują się w bezproblemowo wersji tekstowej dumpa:

pg_dump -f baza.dump baza

Wadą jest format przesyłanych danych, gdyż dane binarne muszą zostać
przekodowane na format tekstowy. Plik binarny "rozrasta się", na czas
transferu, dwu lub nawet trzykrotnie, zależnie od konkretnej zawartości.
Powoduje to, że wyraźnie odczuwalny jest wzrost czasu zapisu/odczytu pól
bytea. Gdy przepustowość łączy nie jest ograniczeniem lub z danych korzysta
klient lokalny, to problem ten można pominąć. Uwaga. błąd w kodowaniu pól
bytea w którejś z wersji < 7.4.8. Szczegóły w dokumentacji.
--
Pozdrawiam,
Andrzej Kosmala
sg
2006-08-12 10:00:19 UTC
Permalink
Post by Andrzej Kosmala
Wadą jest format przesyłanych danych, gdyż dane binarne muszą zostać
przekodowane na format tekstowy. Plik binarny "rozrasta się", na czas
transferu, dwu lub nawet trzykrotnie, zależnie od konkretnej zawartości.
Powoduje to, że wyraźnie odczuwalny jest wzrost czasu zapisu/odczytu pól
bytea. Gdy przepustowość łączy nie jest ograniczeniem lub z danych
korzysta klient lokalny, to problem ten można pominąć. Uwaga. błąd w
kodowaniu pól bytea w którejś z wersji < 7.4.8. Szczegóły w dokumentacji.
ale to tylko na czas transferu się rozrasta czy potem w bazie też pliki
są większe?

sg
Loading...