#programowanie #sql Znacie jakiś przyzwoity tutorial / materiały odnośnie zdrowo-rozsądkowej obsługi połączeń z bazą danych, DAO itp. dla początkującego? Chodzi mi o praktyczne zagadnienia typu: czy dla każdego zalogowanego użytkownika powinienem zrobić np. jedno połączenie podczas sesji i przekazywać je między fragmentami aplikacji odpowiadającymi za odczytywanie i zapisywanie danych, czy też tworzyć oddzielnie połączenia i tego typu zagadnienia.
@glowny_janusz: Jak najwięcej ( ͡°͜ʖ͡°) Nie no, chodzi mi właśnie o takie zagadnienia - co robić jak mamy duży ruch a co robić jak niszowy max. kilku na raz.
@pierre-van-hooijdonk: wiesz, jak ci się "skończą połączenia" to leżysz, zależnie od aplikacji. Generalnie tam gdzie się da to cache/cookies/"memcache" - tak w bardzo dużym skrócie.
@pierre-van-hooijdonk: Pula połączeń. Bierzesz połączenie z puli za każdym razem gdy chcesz wykonać operację na bazie, gdy skończysz -- oddajesz. Łączenie jest stosunkowo drogie. Przypisywanie połączenia do konkretnego użytkownika/sesji to chyba najgorszy scenariusz.
@pierre-van-hooijdonk: Jak masz niszowy to zasadniczo nie ma co sobie wtedy głowy zawracać, jeżeli biblioteka której używasz nie dostarcza Ci wbudowanej obsługi. Jeżeli masz dużą liczbę użytkowników, to zwyczajowo zestawia się pule połączeń do bazy danych. Jeżeli masz potrzebę wykonania zapytania to pobierasz z puli połączeń jedno i puszczasz nim zapytanie, jak się skończy to zwalniasz. Trzeba pamiętać o ewentualnie innym zachowaniu przy transakcjach. Zbyt duża liczba połączeń negatywnie potrafi wpływac
@pierre-van-hooijdonk: Zakładając, że żadne cache nie wchodzą w grę i mówimy tylko o DB, to w dużym uproszczeniu jest tak jak pisałem wyżej:
1. Mirek chce zrobić query = 'select * from goronce order by costam limit 50' 2. Kod wypoku robi conn = connection_pool.get() - dostaje istniejące połączenie, lub zupełnie nowe 3. conn.execute(query) 4. Robi co trzeba z wynikiem (renderuje stronę itd) 5. connection_pool.put(conn) - połączenie jest dostępne dla innych
@co_to_sie_stanelo: ad. 2 - warto wspomnieć o tym, że powinien istnieć górny limit liczby połączeń. Wtedy mirek cierpliwie siedzi i czeka aż jakieś się zwolni.
@co_to_sie_stanelo: Lepiej zatrzymać ludzi na serwerze aplikacyjnym niż wpuścić nadmiar na serwer DB. Serwer aplikacyjny łatwiej zrestartować niż bazę po zarżnięciu nadmiarem liczby połączeń (oczywiście za tym idzie nadmiarowa liczba zapytań). Jest to jakieś zabezpieczenie, oczywiście zakładając, że zapytania są odpowiednio zoptymalizowane.
#sejm #polityka I pomyśleć, że kiedyś rząd Millera został uwalony, bo Rywin poszedł do Michnika powołując się na polityków lewicy. A tu afera za aferą, fundusze z dupy i poparcie 35%. I wystarczy, że mniej ludzi pójdzie na wybory i znowu będą rządzić.
Znacie jakiś przyzwoity tutorial / materiały odnośnie zdrowo-rozsądkowej obsługi połączeń z bazą danych, DAO itp. dla początkującego?
Chodzi mi o praktyczne zagadnienia typu: czy dla każdego zalogowanego użytkownika powinienem zrobić np. jedno połączenie podczas sesji i przekazywać je między fragmentami aplikacji odpowiadającymi za odczytywanie i zapisywanie danych, czy też tworzyć oddzielnie połączenia i tego typu zagadnienia.
1. Mirek chce zrobić
query = 'select * from goronce order by costam limit 50'2. Kod wypoku robi
conn = connection_pool.get()- dostaje istniejące połączenie, lub zupełnie nowe3.
conn.execute(query)4. Robi co trzeba z wynikiem (renderuje stronę itd)
5.
connection_pool.put(conn)- połączenie jest dostępne dla innych