ďťż
 
[PostgreSQL] =?ISO-8859-2?Q?Du=BFa?= baza danych ďťż
 
[PostgreSQL] =?ISO-8859-2?Q?Du=BFa?= baza danych
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[PostgreSQL] =?ISO-8859-2?Q?Du=BFa?= baza danych



Andrzej Nakonieczny - 10-08-2007 00:00
[PostgreSQL] =?ISO-8859-2?Q?Du=BFa?= baza danych
  Witam

Zastanawiam się nad możliwościami PostgreSQL w udostępnianiu dużych
(ogromnych?) baz danych. _Pomijam_ samą sensowność wykorzystania go w
taki sposób, nie mam na to żadnego wpływu, próbuję się skupić wyłącznie
na możliwych problemach jakie mogłyby się pojawić przy próbie
uruchomienia takiej bazy.

Powiedzmy, że potrzebuję umieścić w bazie x milionów plików, każdy o
wielkości do kilku megabajtów. Jak łatwo policzyć tabela taka mogła by
osiągnąć rozmiary x terabajtów. Spoglądając na strony projektu można
przeczytać, że PostgreSQL obsługuje tabele o wielkości do 32 TB więc to
powinno być wystarczające. Wcześniejsze ograniczenie - o ile dobrze
pamiętam - wynosiło 16 TB. Czy to ograniczenie związane było (wciąż
jest związane?) z samym PostgreSQLem czy też raczej to problem
wielkości pojedynczej partycji na której znajduje się tabela?

Jeśli - przypuśćmy - sam system ograniczy możliwość stworzenia tak
dużego zasobu (powiedzmy powyżej 8 albo 16 TB) to czy jednak istnieje
możliwość obsłużenia tak dużej bazy danych? O ile w przypadku innych
baz (rozwiązania komercyjne) możliwe jest stworzenie pojedynczej bazy
na kilku przestrzeniach (w postaci partycji/plików) o tyle w PostgreSQL
chyba nie można rozłożyć tabeli na kilka tablespace'ów? A może
rozwiązaniem byłoby partycjonowanie tabel przy czym każda z takich
tabel umieszczona byłaby na osobnym tablespace'ie?

Przy okazji tak wielkich baz rodzi się od razu drugie pytanie - jak to
poprawnie backupować? Zrzucenie dumpa z takiej bazy danych odpada.
Jakieś inne rozsądne możliwości, które nie zabiją wydajności samej
bazy? Nie ukrywam, że jedyną możliwością mógłby być backup na poziomie
systemu (Linux)...

Sama baza będzie wykorzystywana wyłącznie do dodawania kolejnych
rekordów, rzadko do wyszukania po zindeksowanym unikalnym polu.

Pozdrawiam,
Andrzej





hubert depesz lubaczewski - 11-08-2007 00:02

  Dnia 09.08.2007 Andrzej Nakonieczny <dzemik@pingwin.invalid> napisał/a:
> pamiętam - wynosiło 16 TB. Czy to ograniczenie związane było (wciąż
> jest związane?) z samym PostgreSQLem czy też raczej to problem
> wielkości pojedynczej partycji na której znajduje się tabela?

powiem szczerze, że nie wiem z czym związane jest to ograniczenie.

> na kilku przestrzeniach (w postaci partycji/plików) o tyle w PostgreSQL
> chyba nie można rozłożyć tabeli na kilka tablespace'ów? A może
> rozwiązaniem byłoby partycjonowanie tabel przy czym każda z takich
> tabel umieszczona byłaby na osobnym tablespace'ie?

to wydaje się być akceptowalne. tyle, że nie wiem czemu chcesz rozrzucać
dane po różnych tablespace'ach.
co chcesz przez to osiągnąć?

> Przy okazji tak wielkich baz rodzi się od razu drugie pytanie - jak to
> poprawnie backupować? Zrzucenie dumpa z takiej bazy danych odpada.
> Jakieś inne rozsądne możliwości, które nie zabiją wydajności samej
> bazy? Nie ukrywam, że jedyną możliwością mógłby być backup na poziomie
> systemu (Linux)...

możesz robić backupy metodą archiwizowania logów wal.
szczegóły:
http://www.postgresql.org/docs/curre...archiving.html
narzut na wydajność systemu praktycznie zerowy.

> Sama baza będzie wykorzystywana wyłącznie do dodawania kolejnych
> rekordów, rzadko do wyszukania po zindeksowanym unikalnym polu.

masz świadomość, że trzymanie plików binarnych w bazie jest takim sobie
pomysłem? (zazwyczaj)

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)




Andrzej Nakonieczny - 11-08-2007 00:02

  hubert depesz lubaczewski wrote:

>> może rozwiązaniem byłoby partycjonowanie tabel przy czym każda z
>> takich tabel umieszczona byłaby na osobnym tablespace'ie?
>
> to wydaje się być akceptowalne. tyle, że nie wiem czemu chcesz
> rozrzucać dane po różnych tablespace'ach.
> co chcesz przez to osiągnąć?

W przypadku gdyby sam system operacyjny ograniczył mi maksymalną
wielkość partycji (ograniczenia związane z typem fs, wielkością bloku
itd) a tabela byłaby większa to chyba jedyne rozwiązanie? A może się
mylę?

> możesz robić backupy metodą archiwizowania logów wal.
> szczegóły:
>
http://www.postgresql.org/docs/curre...archiving.html
> narzut na wydajność systemu praktycznie zerowy.

OK, zaraz to przeglądnę dokładnie. Dzięki za sugestię.

>> Sama baza będzie wykorzystywana wyłącznie do dodawania kolejnych
>> rekordów, rzadko do wyszukania po zindeksowanym unikalnym polu.
>
> masz świadomość, że trzymanie plików binarnych w bazie jest takim
> sobie pomysłem? (zazwyczaj)

Ja? Tak. :) Pisałem o tym w drugim zdaniu, na samym początku, nawet
podkreśliłem słowo "pomijam". ;)

Niestety, jak to w życiu bywa, nie zawsze ma się wpływ na drugą stronę
(tu aplikację).

Pozdrawiam,
Andrzej




hubert depesz lubaczewski - 11-08-2007 00:02

  Dnia 10.08.2007 Andrzej Nakonieczny <dzemik@pingwin.invalid> napisał/a:
> W przypadku gdyby sam system operacyjny ograniczył mi maksymalną
> wielkość partycji (ograniczenia związane z typem fs, wielkością bloku
> itd) a tabela byłaby większa to chyba jedyne rozwiązanie? A może się
> mylę?

zakładając, że korzystasz z systemu 64 bitowego, to maksymalna wielkość
partycji ext3 to 32tb - zakładając największą (choć nie wiem jaką)
wielkość bloku.
dla bazy danych duże bloki nie powinny być problemem, czyli wydaje mi
się, że nie powinno to przeszkadzać.
jak przekroczysz 32tera to wtedy faktycznie pozostaje partycjonowanie,
albo system plików który nie ma takich ograniczeń.
w szczególności - już teraz masz dostępny (od linuxa 2.6.19) ext4 który
ma max wielkość 1024petabajtów.
z innych opcji:
jfs: 32peta
xfs: 8exa
zfs: 2^18exa

> Ja? Tak. :) Pisałem o tym w drugim zdaniu, na samym początku, nawet
> podkreśliłem słowo "pomijam". ;)
> Niestety, jak to w życiu bywa, nie zawsze ma się wpływ na drugą stronę
> (tu aplikację).

wiesz, aplikacji tak naprawdę to nawet nie musi boleć.

wystarczy, że zapis obrazków zrobisz jakąś funkcją (coś jak
lo*interface), które to funkcje będą trzymały pliki poza bazą.

ale to taka luźna idea, nie przemyslana, i nie wiem nawet czy na 100%
słuszna.

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)





Andrzej Nakonieczny - 11-08-2007 00:02

  hubert depesz lubaczewski wrote:

> zakładając, że korzystasz z systemu 64 bitowego, to maksymalna
> wielkość partycji ext3 to 32tb - zakładając największą (choć nie wiem

[...]

Zgadza się. Pytanie urodziło się gdyż jakiś czas temu miałem problemy z
partycjami kilku terabajtowymi, nie pamiętam jednak jaki dokładnie tam
był system ani jaki filesystem. Nie ważne. Myślę, że
obecnie "ograniczenia" zarówno PostgreSQL jak i fs są wystarczające. :)

> wiesz, aplikacji tak naprawdę to nawet nie musi boleć.

Niestety nie zawsze ma się dostęp do źródeł aplikacji.

Pozdrawiam,
Andrzej




Jakub Wartak - 11-08-2007 00:02

  Andrzej Nakonieczny wrote:

> Witam
>
> Zastanawiam się nad możliwościami PostgreSQL w udostępnianiu
> dużych
> (ogromnych?) baz danych. _Pomijam_ samą sensowność wykorzystania go w
> taki sposób, nie mam na to żadnego wpływu, próbuję się skupić wyłącznie
> na możliwych problemach jakie mogłyby się pojawić przy próbie
> uruchomienia takiej bazy.
>
> Powiedzmy, że potrzebuję umieścić w bazie x milionów plików, każdy o
> wielkości do kilku megabajtów. Jak łatwo policzyć tabela taka mogła by
> osiągnąć rozmiary x terabajtów. Spoglądając na strony projektu można
> przeczytać, że PostgreSQL obsługuje tabele o wielkości do 32 TB więc to
> powinno być wystarczające. Wcześniejsze ograniczenie - o ile dobrze
> pamiętam - wynosiło 16 TB. Czy to ograniczenie związane było (wciąż
> jest związane?) z samym PostgreSQLem czy też raczej to problem
> wielkości pojedynczej partycji na której znajduje się tabela?
>
> Jeśli - przypuśćmy - sam system ograniczy możliwość stworzenia tak
> dużego zasobu (powiedzmy powyżej 8 albo 16 TB) to czy jednak istnieje
> możliwość obsłużenia tak dużej bazy danych? O ile w przypadku innych
> baz (rozwiązania komercyjne) możliwe jest stworzenie pojedynczej bazy
> na kilku przestrzeniach (w postaci partycji/plików) o tyle w PostgreSQL
> chyba nie można rozłożyć tabeli na kilka tablespace'ów? A może
> rozwiązaniem byłoby partycjonowanie tabel przy czym każda z takich
> tabel umieszczona byłaby na osobnym tablespace'ie?
>
> Przy okazji tak wielkich baz rodzi się od razu drugie pytanie - jak to
> poprawnie backupować? Zrzucenie dumpa z takiej bazy danych odpada.
> Jakieś inne rozsądne możliwości, które nie zabiją wydajności samej
> bazy? Nie ukrywam, że jedyną możliwością mógłby być backup na poziomie
> systemu (Linux)...

Moze snapshoty filesystemu (LVM) i ich dump na inna maszyne ? (z kompresja w
locie, na maszynie gdzie masz wiecej mocy obliczeniowej, tzn. kompresja na
maszynie do backupow zazwyczaj).

Jeszcze zastanow sie czy chcesz robic np RAID1 czy RAID5 i co bedzie w
przypadku jesli tego nie zrobisz a poleci jeden z dyskow (=> poleci 1 duzy
plik na filesystemie, nie wspominajac o czestotliwosci wykonywania backupow
i utracie danych w przypadku gdy logi tez poleca ;) )

Moze te linki beda choc troche przydatne:
http://images.omniti.net/omniti.com/...BBPostgres.pdf
http://www.lethargy.org/~jesus/archi...ver-Linux.html

--
Jakub Wartak
http://vnull.pcnet.com.pl




Andrzej Nakonieczny - 11-08-2007 00:02

  Jakub Wartak wrote:

> Moze snapshoty filesystemu (LVM) i ich dump na inna maszyne ? (z

Snapshot na poziomie samego FS nie jest wskazany gdyż nie zna stanu w
jakim znajduje się sam PostgreSQL. Hubert zwrócił już uwagę na jedno
rozwiązanie, któremu się przyglądnę.

> Jeszcze zastanow sie czy chcesz robic np RAID1 czy RAID5 i co bedzie w

To akurat inna sprawa ale to nie moja działka - właściwy storage będzie
udostępniony.

Pozdrawiam,
Andrzej
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Czy zna (obsługuje) ktoś program Iso Draw ? MYSQL - kodowanie w ISO-PL Kodowanie: z iso na utf postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Połączenie bazy danych z wykonaniem polaczenia telefonicznego [mssql] insert do tabeli na podstawie danych z innej tabeli [MySQL] - Wstawianie aktualnej daty do bazy danych - PHP i MySQL
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • felgiuzywane.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com