konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Witam,

mam takie pytanie czy jest dostępne tego typu oprogramowanie (ktoś może wskazać?), któe zapewni automatyczną pamięć podręczną dla bazy danych i dużego portalu internetowego.

Wiem, że są pamięci podręczne (memcached, voldemort, itp.), ale praca z nimi sprowadza się do tego, że aplikacja musi kontrolować, co do tej pamięci wkłada, potem dbać o jej aktualizację.

A mnie chodzi o aplikację która pełniła by rolę automatycznej pamięci podręcznej.
Mianowicie aplikacja wysyła zapytanie do bazy danych, wynik tego zapytania wędruje do klienta ale i do pamięci podręcznej (automatycznie), potem kolejne zapytanie klienta powoduje odpytanie najpierw pamięci podręcznej i zwrócenie wyniku lub jeśli go tam nie ma, zapytanie bazy danych i odpowiedź klientowi i odłożenie do pamięci podręcznej. Z kolei zapytanie aktualizujące/usuwające dane spowoduje że pamięć (jeśli zapytanie dotyczy danych które są w pamięci) usunie je.

Czy takie oprogramowanie jeśli by było to będzie mało wydajne przez ciągłe przeszukiwanie pamięci podręcznej i szukanie danych które ewentualnie trzeba usunąć bo są nieaktualne?

Pozdrawiam,
Marek

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Czy ja wiem… PostgreSQL robi to automatycznie. Dysk robi to automatycznie. System operacyjny robi to automatycznie. Każdy z tych trzech poziomów automatycznie cachuje sobie ostatnio używane dane.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Oracle też to robi z automatu - tylko że np w Oracle żeby skorzystać z cache potrzebuje identycznego zapytania co do białego znaku co ułatwia przeszukiwanie danych w cachu. Ważny tez jest rozmiar cachu - jak będzie za duży to przeszukanie cachu będzie czasochłonne i może szybciej jest wykonać zapytanie.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

PostgreSQL cachuje strony z pliku. Więc jak się ciągle pytasz o to samo, to kolejne zapytania będą korzystały z części pliku, która jest w pamięci. I to ładnie działa. A jeśli nie cachuje sama baza, to robi to za nią dysk i system operacyjny.
Marcin Badtke

Marcin Badtke Administrator Baz
Danych, Citibank
Europe plc

Temat: Automatyczna pamięć podręczna dla bd

Motory baz danych robią to wszystko. Zadając zapytanie w sql o konkretne dane notor sprawdza czy te dane ma w cache. Jeśli tak to je podaje Twojej aplikacji. Jeśli nie ma w cache to ściąga z dysku, wkłada do cache i podaje Twojej aplikacji. Danymi w cache zarządza na zasadzie listy. Najrzadziej używane dane wypadają z cache. To tak w skrócie.
Adam O.

Adam O. Bazy danych etc

Temat: Automatyczna pamięć podręczna dla bd

Tak w ogóle to poruszyliście kilka różnych rzeczy (buforowanie danych, cacheowanie planu zapytań), a kolega prawdopodobnie pytał o coś w rodzaju np solidDB Universal Cache (albo universal cache feature, nie mylić ze "standardowym" działaniem silnika soliddb, bo można się w googlowaniu pomylić;))
http://www-01.ibm.com/software/data/soliddb/soliddb/fe...
I to oprogramowanie robi to o co kolega pytał w sposób w jaki to opisał.

Nie wiem jak bardzo to przyspiesza zapytania, o tego rodzaju produkcie wiem tylko tyle, że istnieje i podobno robi to co ma robić, podejrzewam że benchmarki da się wygooglać mając już nazwę:)

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Witam,

dzięki za zainteresowanie tematem.

Chodzi mi właśnie o coś w stylu solidDB Universal Cache. Jednakże nie wspiera ona PostgreSQL jak zauważyłem. Nasz system opiera się na właśnie na pg, więc trzeba by migrować na inną bazę. Dodatkowo też kosztuje ok. 200EURO (choć to pewnie byłoby do przeskoczenia).

A czy słyszał ktoś o czymś takim tylko bezpłatnym i wspierającym PG?

Rozważamy wdrożenie jakiegoś systemu (pamięci podręcznej) który przyspieszy działanie naszej platformy (głównie na styku z bazą danych). Stąd chciałbym rozeznać dokładniej, co jest dostępne. Jeśli takich systemów nie ma, albo nie wiele pomogą jak by nawet były, to zdecydujemy się na coś typu memcached, voldemort.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Coś mi się wydaje, że przekombinowujesz ostro. Co potrzebujesz, jaki masz problem?

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Marek Faderewski:
Witam,

mam takie pytanie czy jest dostępne tego typu oprogramowanie (ktoś może wskazać?), któe zapewni automatyczną pamięć podręczną dla bazy danych i dużego portalu internetowego.

Wiem, że są pamięci podręczne (memcached, voldemort, itp.), ale praca z nimi sprowadza się do tego, że aplikacja musi kontrolować, co do tej pamięci wkłada, potem dbać o jej aktualizację.

A mnie chodzi o aplikację która pełniła by rolę automatycznej pamięci podręcznej.
Mianowicie aplikacja wysyła zapytanie do bazy danych, wynik tego zapytania wędruje do klienta ale i do pamięci podręcznej (automatycznie), potem kolejne zapytanie klienta powoduje odpytanie najpierw pamięci podręcznej i zwrócenie wyniku lub jeśli go tam nie ma, zapytanie bazy danych i odpowiedź klientowi i odłożenie do pamięci podręcznej. Z kolei zapytanie aktualizujące/usuwające dane spowoduje że pamięć (jeśli zapytanie dotyczy danych które są w pamięci) usunie je.

Czy takie oprogramowanie jeśli by było to będzie mało wydajne przez ciągłe przeszukiwanie pamięci podręcznej i szukanie danych które ewentualnie trzeba usunąć bo są nieaktualne?

Pozdrawiam,
Marek

jak używasz adodb dla PHP to masz to wbudowane w bibliotekę i podczas wykonywania zapytań robi się automagicznie
cache to pliki lub memcache

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Szymon G.:
Coś mi się wydaje, że przekombinowujesz ostro. Co potrzebujesz, jaki masz problem?

Nie wykluczone ;-) Ale chce rozeznać co jest dostępne i ew. skorygować nasze pomysły.

Problemu puki co jeszcze nie ma, ale staramy się o tym pomyśleć, żeby wiedzieć jak go rozwiązać jak zacznie występować lub nawet teraz wdrożyć pewne elementy, żeby było mniej zmian.

Aplikacja pisana jest w Javie, tak więc adodb odpada.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Marek Faderewski:
Szymon G.:
Coś mi się wydaje, że przekombinowujesz ostro. Co potrzebujesz, jaki masz problem?

Nie wykluczone ;-) Ale chce rozeznać co jest dostępne i ew. skorygować nasze pomysły.

Problemu puki co jeszcze nie ma, ale staramy się o tym pomyśleć, żeby wiedzieć jak go rozwiązać jak zacznie występować lub nawet teraz wdrożyć pewne elementy, żeby było mniej zmian.

Aplikacja pisana jest w Javie, tak więc adodb odpada.

Co potrzebujesz, jakich problemów chcesz uniknąć? Postgres potrafi obsługiwać naprawdę duże obciążenie bez takich dodatków, wiele zależy od konfiguracji i sprzętu. Nie słyszałem jeszcze żeby ktokolwiek używał do Postgresa takich rzeczy. Ewentualne cachowanie robiło się raczej po stronie aplikacji, tak żeby w ogóle nie ruszać bazy.

A jak łączycie się do bazy, jakiś ORM, DAO, czy cokolwiek innego?

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Szymon G.:
Co potrzebujesz, jakich problemów chcesz uniknąć? Postgres potrafi obsługiwać naprawdę duże obciążenie bez takich dodatków, wiele zależy od konfiguracji i sprzętu. Nie słyszałem jeszcze żeby ktokolwiek używał do Postgresa takich rzeczy. Ewentualne cachowanie robiło się raczej po stronie aplikacji, tak żeby w ogóle nie ruszać bazy.

A jak łączycie się do bazy, jakiś ORM, DAO, czy cokolwiek innego?

Właśnie problemu dużego obciążenia, i długich czasów odpowiedzi ze strony bazy obawiamy się w przyszłości.

Jeśli chodzi o pamięć podręczną to chcielibyśmy ją mieć po stronie aplikacji, coś w stylu np. memcached tylko żeby aplikacja nie musiała tego obsługiwać tylko taka pamięć sama wiedziała kiedy odwołać się do bazy (jeśli zajdzie takowa potrzeba) a kiedy odpowiedzieć danymi z cache.

W takiej pamięci chcielibyśmy trzymać np. dane użytkownika które pobierane są (z bazy) po zalogowaniu (raczej rzadko się zmieniają u nas), a potem już odwoływać się po nie do pamięci a nie do bazy (chyba, że się zmienią). Chyba że takiej pamięci podręcznej (automatycznej) po prostu nie ma na rynku?

Do bazy łączymy się przez JNDI datasource, w glassfish'u mamy pulę połączeń, a przed bazą (serwery master/slave) stoi pgpool2, który balansuje ruch.

Jeśli chodzi o samą bazę to przyglądam się projektowi PostgresXC, może kiedyś go wdrożymy.Marek Faderewski edytował(a) ten post dnia 31.08.12 o godzinie 12:54

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

To proponuję tak po kolei:

1) Martw się o obciążenie jak będzie, 90% projektów i tak nigdy takiego obciążenia nie ma.

2) Postaw sobie drugi serwer z drugą bazą i zrób replikację, będziesz mieć odczyty z dwóch baz a zapisy będą szły do jednej.

Ale jeśli masz źle napisaną aplikację, to sorry, nic nie pomoże. Jeśli co chwilę chcesz wyciągnąć 150 mln wierszy, posortować w aplikacji i potem wyświetlić pierwsze dziesięć, to nie ma na to rady, takie g*** trzeba przepisać.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Marek Faderewski:
Szymon G.:
Co potrzebujesz, jakich problemów chcesz uniknąć? Postgres potrafi obsługiwać naprawdę duże obciążenie bez takich dodatków, wiele zależy od konfiguracji i sprzętu. Nie słyszałem jeszcze żeby ktokolwiek używał do Postgresa takich rzeczy. Ewentualne cachowanie robiło się raczej po stronie aplikacji, tak żeby w ogóle nie ruszać bazy.

A jak łączycie się do bazy, jakiś ORM, DAO, czy cokolwiek innego?
>
Jeśli chodzi o samą bazę to przyglądam się projektowi PostgresXC, może kiedyś go wdrożymy.

Z takich rzeczy jest np. pgpool do balansowania odczytów z dwóch baz, jest slony do replikacji master-multi slave, jest replikacja logów (co daje też master-multi slave) i jest bucardo do replikacji multi master.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Szymon G.:
2) Postaw sobie drugi serwer z drugą bazą i zrób replikację, będziesz mieć odczyty z dwóch baz a zapisy będą szły do jednej.

Dokładnie tak mamy zrobione, co też napisałem w poprzednim poście.
Szymon G.:
Ale jeśli masz źle napisaną aplikację, to sorry, nic nie pomoże. Jeśli co chwilę chcesz wyciągnąć 150 mln wierszy, posortować w aplikacji i potem wyświetlić pierwsze dziesięć, to nie ma na to rady, takie g*** trzeba przepisać.

Tak źle to nie jest, puki co to wszystko działa całkiem dobrze. Cały czas też programiści optymalizują te elementy aplikacji, które wykazują pewne opóźnienia.
Szymon G.:
Z takich rzeczy jest np. pgpool do balansowania odczytów z dwóch baz, jest slony do replikacji
master-multi slave, jest replikacja logów (co daje też master-multi slave) i jest bucardo do
replikacji multi master.
Tak jak napisałem w poprzednim poście, używamy właśnie pgpool2 i dwóch baz (serwery master i slave) z replikacją na logach transakcyjnych.
Slony'ego kiedyś testowałem, ale replikacja na lagach transakcyjnych wydaje się prostsza szczególnie pod kątem propagacji zmian (dodanie nowej tabeli na master wykonuje się automatycznie na slave - w slony tak nie było).
Szymon G.:
(...) i jest bucardo do replikacji multi master.

Masz z tym jakieś doświadczenie? Jak to ogólnie działa (jak odbywa się replikacja)? Jak wygląda (po krótce) konfiguracja bucardo?
Słyszałem kiedyś o tym projekcie, ale bardziej interesowałem się klastrowaniem, tak żeby można było np. rozłożyć jedną tabelę na wiele serwerów i tu natrafiłem na PostgresXC, który ma już wydanie stabilne.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Marek Faderewski:
Szymon G.:
(...) i jest bucardo do replikacji multi master.

Masz z tym jakieś doświadczenie? Jak to ogólnie działa (jak odbywa się replikacja)? Jak wygląda (po krótce) konfiguracja bucardo?
Słyszałem kiedyś o tym projekcie, ale bardziej interesowałem się klastrowaniem, tak żeby można było np. rozłożyć jedną tabelę na wiele serwerów i tu natrafiłem na PostgresXC, który ma już wydanie stabilne.


Co do Bucardo, to opis działania masz tutaj: http://bucardo.org/wiki/Bucardo/Documentation/Overview a tu na końcu jest opis prostej konfiguracji http://bucardo.org/wiki/Bucardo/Installation. Jest to nieco podobne do Slonego w tym, że używa triggerów, więc wszelkie zapytania DDL nie są replikowane.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Marek Faderewski:
Aplikacja pisana jest w Javie, tak więc adodb odpada.

Hibernate + EhCache. Alleluja i do przodu.
ABC: https://community.jboss.org/wiki/ConfigureEhcacheAsASec...
Ew. pytania zadawaj na grupy Javowe.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Wlodzimierz M.:
Marek Faderewski:
Aplikacja pisana jest w Javie, tak więc adodb odpada.

Hibernate + EhCache. Alleluja i do przodu.
ABC: https://community.jboss.org/wiki/ConfigureEhcacheAsASec...
Ew. pytania zadawaj na grupy Javowe.

Szkoda tylko, że nikt nie mówił nic o Hibernate… kocham wypowiedzi nie na temat. A jak użyć automatycznie ehcache jeśli lecą zapytania bez żadnego ORMa?

Pytanie było o cache dla bazy danych. Dla mnie to przekombinowanie, bo nigdy nie spotkałem potrzeby na coś takiego, zawsze wystarczała tylko baza danych, a cachowanie w aplikacji było robione… no… w aplikacje, ale pytanie dotyczyło jak tego uniknąć.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Zacytuje Marka, moze niedoczytalem gdzies ale:
"Jeśli chodzi o pamięć podręczną to chcielibyśmy ją mieć po stronie aplikacji, coś w stylu np. memcached tylko żeby aplikacja nie musiała tego obsługiwać tylko taka pamięć sama wiedziała kiedy odwołać się do bazy (jeśli zajdzie takowa potrzeba) a kiedy odpowiedzieć danymi z cache.
"
Jak dla mnie EhCache dokladnie sie wpisuje w to, co Marek chce osiagnac - a Hibernate? Wtedy wiekszosc rzeczy robi sie samo. Wiem, wiem, ze jest wolniej - ale to juz temat na oddzielna dyskusje :-)

Z tego co pamietam, to EhCache mzna tez ustawic jako standalone/JDBC - ale nie mam z tym doswiadczenia.

konto usunięte

Temat: Automatyczna pamięć podręczna dla bd

Niedawno znalazłem rozwiązanie dokładnie takie, o jakie mi chodziło.
Nowa wersja PgPool 3.2 (wydana na początku sierpnia 2012) posiada możliwość cache'owania zapytań w pamięci. Robi to automatycznie, programista aplikacji nie musi się o to martwić.
Można także pgpool 3.2 zintegrować z memcached i wtedy w nim będą przechowywane dane.



Wyślij zaproszenie do