PHP czy MySQL?

Odpowiedz Nowy wątek
2015-01-05 11:04
Złoty Pomidor
0

Niektóre operacje na danych można wykonać zarówno przy pomocy PHP, jak i MySQL (np. MD5, MIN/MAX). Jeśli potrafimy skorzystać z obu rozwiązań, które należy wybrać? Od czego to zależy?

Pozostało 580 znaków

2015-01-05 11:06
1

Operacje przy pomocy sql generalnie jeżeli dobrze napisane będą szybsze.

Pozostało 580 znaków

2015-01-05 11:10
2

Jeśli masz na myśli operacje które wykonujesz na każdym rekordzie zwracanym (MD5, rok z daty, modulo) to jest to dyskusyjne.
Jeśli masz na myśli operacje na zbiorach typu redukcja (np. min/max, grupowanie) które zmniejszają liczbę zwracanych danych, to SQL będzie lepszy.

Ogólnie lepiej unikać pisania zbyt skomplikowanych zapytań (chyba że operujesz na bazach do 1000 rekordów) - ponieważ logika biznesowa powinna być w jednym miejscu a trudno mi sobie wyobrazić aplikację w całości napisaną w SQL.
Ale w przypadku nr 2 (zwykle) nie ma wyjścia.

Pozostało 580 znaków

2015-01-05 11:21
gdsfsgds
2

zależy od użycia
w przypadku na przykład hashowania - lepiej to zrobić po stronie skryptu - po pierwsze zwiększa to możliwości, po drugie trzeba pamiętać że połączenie z bazą to kolejny element który można podsłuchać - jeżeli hasło będzie leciało plaintekstem i będzie hashowane do sprawdzenia po stronie bazy danych to ktoś może być w stanie poprzez atak MIDM przechwycić hasła

powinno się myśleć w kategorii ilości przesyłanych danych pomiędzy silnikiem bazy a aplikacją - im mniej tym lepiej

Pozostało 580 znaków

2015-01-05 13:24
2

Operacje agregujące znacznie lepiej jest robić po stronie bazy danych. Niezależnie od "języka" skryptu. Ma to kilka zalet:

  • silniki SQL zazwyczaj są lepiej napisane i szybsze niż języki wyższego poziomu.
  • silniki SQL potrafią poradzić sobie z dużymi ilościami danych. Przykładowo pobranie MIN z 10GB danych (same dane do analizy) w SQLu działającym na maszynie z 2GB ram nie będzie problemem, bo silnik potrafi tak zarządzać pamięcią by nie zatkać się. W dowolnym innym języku wymaga to kombinowania.
  • od strony architektury pytasz o pewną informację, ale nie jest ona związana z logiką biznesową. Jest jej potrzebna (informacja logice), ale może żyć bez niej (informacja). Dzięki temu łatwo optymalizować pewne zapytania tak by logika działała na uproszczonych danych. kolejnym etapem jest polyglot data i event sourcing.

Operacje transformujące np MD5 jeżeli wykonywane są na pojedynczych danych znacznie lepiej wykonywać po stronie skryptu. Po pierwsze oszczędzasz zasoby bazy. Po drugie zazwyczaj taka transformacja jest elementem logiki związanej z pracą na danych, a nie ich składowania. Zatem bez tej operacji logika nie ma sensu.

Pozostało 580 znaków

2015-01-05 20:45
Krwawy Samiec
0

Dziękuję za dotychczasowe odpowiedzi ;). Pozwolę sobie jeszcze zapytać jak sprawa wygląda w przypadku właściwości kolumn takich jak np. PRIMARY KEY, czy NOT NULL. Czasami już sam skrypt PHP i w ogóle konstrukcja aplikacji zapewniają, że do komórek zawsze będą trafiać dane (NOT NULL) i że będą one niepowtarzalne (PRIMARY KEY). Czy jest wówczas sens sprawdzać to raz jeszcze po stronie bazy?

Pozostało 580 znaków

2015-01-05 21:12
0

Tak, bo skrypty nie zapewniają teak silnego modelu współbieżnego dodawania danych jak sam silnik bazy danych.

Pozostało 580 znaków

2015-01-05 21:15
0

Jest sens. Bo przyjdzie ktoś kto spróbuje zmienić dane z palca i będziesz miał null mimo że nie chciałeś. A PK to osobna sprawa. Zauważ że PK jest jednocześnie indeksowane więc pobieranie po nim będzie szybsze.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0