Ancro
Ancro
3
Czołem #programowanie #programista15k #java #sql

Co wybieracie: złożone zapytanie SQL, które serwuje gotowe dane. Czy może proste zapytanie, które zwraca zdecydowanie większą pulę a potem dokonujecie filtrowanie w Javie?

Co i dlaczego z punktu widzenia wydajności i łatwości utrzymania?

Jakieś źródła do opracowań w różnicy w wydajności?
  • Najlepsze
  • Wszystkie komentarze
budyn
budyn
13
@Ancro:
- przesyłasz mniej danych przede wszystkim
- nad bazą danych pracują dziesiątki/setki inżynierów więc po prostu z--------a
- jeśli krzyżowanie = joinowanie to już w ogóle po co to robić wiele zapytań do bazy jak można w 1; to ma sens jako taki w bazach NoSQL gdzie dane są często płaskie
- Java jest wolniejsza niż bazy danych, które zazwyczaj pisane są w C/C++
Rst00
Rst00
5
@Ancro to zależy, pamiętaj też że większość baz danych ma cache więc zapytanie pierwsze może być wykonywane tylko raz a później brane z cache'a. Ja bym wolał mieć bardziej skomplikowane zapytanie niż obrabiać dane w programie.
f.....n
f.....n
@Ancro: SQL, najlepiej stworzenie i walenie do widoku (wtedy wystarczy przy zmianie edytować widok)
zolwixx
@Ancro większe zapytanie i mniej danych, żebym nie dostawał za każdym razem 100000 rekordów.
budyn
budyn
2
@Ancro: Oczywiście, że na bazie takie rzeczy robisz.
Mamy 21 wiek, ORMy i inne takie.
w.....j
w.....j
Jednak u mnie w zespole panuje nieco inne przekonanie


@Ancro: to nie jest przekonanie tylko tak jest prościej, oni pewnie wiedzą, że powinni dane przygotować ale mają to w dupie. Gdyby sami musieli to ogarniać po obu stronach to zrobili by tak jak trzeba
alex-fortune
alex-fortune
@Ancro: Filtrowanie nap oziomie bazy, zwracanie nadmiarowych rekordow i dodatkowe filtrowanie po Twojej stronie to marnotrawienie czasu.
SIEV
SIEV
SIEV
2
Jeżeli nie używasz bazy do filtrowania to po co Ci baza? Wtedy ładuj obiekty do pliku i z powrotem do pamięci. Jeden system odpada do obsługi :)
WykopowyProgramista15k
WykopowyProgramista15k
@plushy: Nie ma co dyskutować. Niektórzy się śmieją ze "studenciaków", którym się wydaje, że optymalizować się powinno już na starcie, a niektórzy do tej pory nie ogarnęli jak napisać poprawne, szybkie i czytelne zapytanie SQL (czy kilka zapytań), tylko wolą sobie zrobić SELECTa całej bazy i napisać filtrowanie w Javie/C#, bo tak łatwiej. Ba, czasem użyją sobie ORMa, bo to takie ładne i w ogóle, nie wiedząc nawet że w
f.....n
f.....n
@Ancro: Żródła: moja codzienność ( ͡° ͜ʖ ͡°)
WykopowyProgramista15k
WykopowyProgramista15k
Czytelność kodu i łatwość utrzymania przede wszystkim, kilkadziesiąt milisekund na płatności nikogo nie interesuje.


@Ancro: pracujesz w branży czy wróżysz z fusów? ( ͡º ͜ʖ͡º) Bo coś mi się to jednak nie do końca zgadza...
WykopowyProgramista15k
WykopowyProgramista15k
kilkadziesiąt milisekund na płatności nikogo nie interesuje


@Ancro: to, że nie we wszystkich systemach powiązanych z finansami/bankowością kilkadziesiąt milisekund obsuwy jest akceptowane :) Jeśli chodzi o stronkę dla klienta banku, to dla niego to nic, ale są systemy, które muszą jak najszybciej obsługiwać zapytania i je wykonywać. Także sprowadzanie wszystkiego do jednego wora to słaby pomysł.

@Ancro: "Oboje się mylicie, bo pracowałem w 3 firmach i tam było inaczej". No
DarkAlchemy
tyktak
Ancro
Ancro Autor
0
@budyn: Nie jestem architektem baz danych, niestety. Szukam więc rzeczowych argumentów i opracowań dlaczego warto iść jedną a nie drugą ścieżką i w jakich sytuacjach. To co znalazłem na Stack Overflow wiele mi nie daje - różne opinie.

Sam uważałem, że wszystko co związane z danymi, powinniśmy zwalać na bazę DANYCH. Jednak u mnie w zespole panuje nieco inne przekonanie. Nie byłem w stanie podać żadnych konkretnych faktów dlaczego lepiej
KotoFan
@Ancro: zależy czy baza jest dobrze zrobiona :). Jak dobrze to złożone
n.....a
@Ancro: Zwyczajowo tyle ile się da zrzuca się na bazę, ale kontrargumentem jest rozsmarowanie domeny aka logiki biznesowej po wielu warstwach i językach, co skutkuje niestrawnym spagetti. Jeżeli to nie będzie bottleneck i nie musi z---------ć, za to powinno czytelne i łatwe do zrozumienia oraz utrzymania to jak najbardziej może pozostać w javie
WykopowyProgramista15k
WykopowyProgramista15k
Jednak u mnie w zespole panuje nieco inne przekonanie


@Ancro: stawiam worek cebuli, że tacy programiści a wymiękają przy prostej obróbce danych na bazie/napisaniu lepszego zapytania z zagnieżdżonymi warunkami itp... Łatwiej zrobić raz SELECTa a później kilka pętli (i pewnie mocno nieoptymalnie) przefiltrować to.

A co do pytania - sam sobie odpowiedz. Lepiej jak Ci Pani w sklepie przyniesie 62 pary spodni i sobie z tego wybierzesz sam, czy jak
WykopowyProgramista15k
WykopowyProgramista15k
Java jest wolniejsza niż bazy danych, które zazwyczaj pisane są w C/C++


@budyn: tu jak zwykle można by polemizować (zależnie od zastosowania, choć jestem zdania że gdyby chcieć to da się wszystko w tym drugim napisać szybciej), ale warto zwrócić uwagę, że systemy zarządzania bazami danych często potrafią zoptymalizować zapytanie lepiej, niż jesteśmy w stanie to zrobić my ręcznie.
Ancro
Ancro Autor
0
@WykopowyProgramista15k: Tak, to raczej oczywiste, że jestem jedyną osobą, która cokolwiek ogarnia SQL. Jednak to co mówisz, nie jest takie oczywiste i na słowo nikt nie wierzy. Kolega, od którego zaczęła się dyskusja, nie jest też w 100% pewny swego, ale on przynajmniej testował różnicę w czasie wykonywania pracy na DB vs JVM na podobnych operacjach i różnicy podobno nie było. Stąd moja prośba: źródła do opracowań na ten temat.
Ancro
Ancro Autor
0
WykopowyProgramista15k: Co konkretnie, Ci się nie zgadza?