Robert Domiński

Robert Domiński Szkolenia MS Excel

Temat: PHP/SQL - jedno pole czy wiele?

Witam,

W tabeli chce przechowywać kilka wartości, które będą określały sposób wyświetlania animacji flashowej, m.in prędkość tekstu, prędkośc myszy, etc.

Zamiast tworzyc w bazie pola dla każdej prędkosci, pomyślałem że złączę je jako jedną wartość np. "t56m34" (czyli predkosc tekstu 56 a myszy 34), a pozniej rozdziele poprzez php lub juz w samym flashu.

ktore rozwiązanie jest optymalne z punktu widzenia php/sql? Jedno pole z wieloma zmiennymi rozdzielane po wczytaniu z bazy, czy wiele pol w bazie dla kazdej zmiennej?

pozdrawiam,

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Eee, przy takiej ilości danych to chyba mowa o wydajności mija się z celem... no chyba że to serwis z taaaaką ilością odsłon że trzeba o to dbać. Ja abym zrobił tak że w bazie, albo nawet w pliku xml mam to tak:
wartosc1,wartosc2,wartosc3, potem explode(); i voila ;)

Temat: PHP/SQL - jedno pole czy wiele?

Robert D.:
>
ktore rozwiązanie jest optymalne z punktu widzenia php/sql? Jedno pole z wieloma zmiennymi rozdzielane po wczytaniu z bazy, czy wiele pol w bazie dla kazdej zmiennej?
>

Zgodnie z teorią projektowania baz pole na każdą zmienną dużo lepsze. Bazy są do tego optymalizowane, lepiej jak najwięcej pracy kierować właśnie na nie. Postać z wieloma danymi w jednym polu nie spełnia warunków pierwszej postaci normalnej, słowem - odradzam :)

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Robert D.:
jedną wartość np. "t56m34"

a jesli zmiennych bedzie wiecej niz 24 i Ci sie skoncza litery alfabetu? ;-)

jesli juz, to lepiej trzymac dane w tabelarycznie, np. jak w JSON; cos na ksztalt {zmienna1:wartosc1,zmienna2:wartosc2}

no ale generalnie nic nie pobije nadmiarowosci, tj. utworzenie kolumn dla kazdego z parametrow.
Filip Górny

Filip Górny Programista,
webdeveloper.

Temat: PHP/SQL - jedno pole czy wiele?

Zrob tak jak Ci wygodniej. Polecam jednak w osobnych polach - nie ograniczy Cie jesli wpadniesz na pomysl rozwoju. Oddzielasz ladnie dane od kontrolerow.

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Jesli dobrze Cie zrozumialem i chcesz po prostu trzymac konfiguracje aplikacji flashowej, to baza danych nie jest w tym przypadku najlepszym pomyslem.

Zgadzam sie "pi * drzwi" z Wojtkiem, od siebie dodam :

* konfiguracja w pliku
* formaty ala : XML, JSON, YML, Formatowany text etc.

Format wybralbym na podstawie tego jak szybko uda ci sie go obsluzyc, nie ma pomiedzy nimi w zasadzie zadnej znaczacej roznicy wydajnosciowej w przypadku twojej aplikacji.

Baza danych przydaje sie bardziej, jesli masz duzo danych o tej samej strukturze i chcesz wykonywac na nich rozne operacje przeszukiwania.

itd itp.
Robert Domiński

Robert Domiński Szkolenia MS Excel

Temat: PHP/SQL - jedno pole czy wiele?

Dziękuję wszystkim za porady.
Przekonaliście mnie, żeby zrobić w oddzielnych polach.

Dla doprecyzowania, te prędkości będa inne dla kazdego użytkownika. Czyli to nie będzie tylko jeden zestaw liczb (bo takowy mógłbym spokojnie trzymać nawet w txt) tylko tyle zestawow ilu uzytkownikow.

PS. Wojtku jeżeli litery by sie skończyly, moglgbym zapisywac dwuliterowo ;)

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Robert D.:
PS. Wojtku jeżeli litery by sie skończyly, moglgbym zapisywac
dwuliterowo ;)

ale najpierw na etapie planowania musialbys to przewidziec ;-)

nie oszukujmy sie - wiekszosc takich porazek otrzymujemy akurat wtedy, gdy nie da sie wrocic do etapu projektowania i zaczynami robic tzw. quick hacki, ktore doraznie zalatwiaja sprawe..

anyłej - niech Ci bozia da takie rozwiazanie, zeby banglało az milo :]

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Robert D.:
ktore rozwiązanie jest optymalne z punktu widzenia php/sql?

Najbardziej optymalne jest chyba zapodanie tego do xml'a. Flash zaczyta sobie raz takiego xmla, a potem dopóki user będzie miał w keszu to będzie zaczytywał z zewnątrz bez obciążania serwera.
Bartosz Sidzina

Bartosz Sidzina PHP, Zend, Symfony
2, jQuery, iOS,
Node.js, Express.js

Temat: PHP/SQL - jedno pole czy wiele?

Moim zdaniem to kiepski pomysł, by robić wiele pól w bazie dla parametrów dotyczących jednego problemu.

Ustaw sobie jedno pole w bazie. Podczas zapisu ustaw wszystkie paramsy w array'u i je zserializuj (serialize()).

Podczas wyciągania dajesz unserialize() i masz wsio ładnie.
Bartłomiej Wiejaczka

Bartłomiej Wiejaczka Programista, Szpital
Uniwersytecki w
Krakowie

Temat: PHP/SQL - jedno pole czy wiele?

Bartosz Sidzina:
Moim zdaniem to kiepski pomysł, by robić wiele pól w bazie dla parametrów dotyczących jednego problemu.

Masz jakiś argument za tym przemawiający? Nie znormalizowana baza oraz bajzel w kodzie to chyba mocne argumenty. Parametry użytkowników (imię, nazwisko, login, hasło, e-mail) też trzymasz w jednym polu - dotyczą jednego "problemu"?
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: PHP/SQL - jedno pole czy wiele?

Takie rozwiązanie można dopuścić wtedy, gdy
1) wszystkie te dane są zawsze pobierane w grupie (czyli pobranie tylko częsci nie ma sensu)
i
2) po żadnej ze zmiennych nie jest prowadzone wyszukiwanie lub indeksowanie

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Serializacja i deserializacja jest cholernie wolna i nawet akceleratory dla PHP znacząco nie przyspieszają tych przekształceń. Maszynie z MySQL'em nie robi w sumie różnicy, czy zaczytasz wiersz z wieloma polami czy z jednym, jednak maszynie z www już tak - zamiast dostać gotowe dane z bazy musi sobie je jeszcze obrobić, a na to potrzebny jest czas. I proces. A procesów za dużo odpalić się nie da (czy to apache, czy FastCGI).

Moim zdaniem dla każdego parametru osobne pole. Baza zrobi co powinna i w php otrzymamy ładną tablicę (lub obiekt - jak kto woli) z parametrami.

Rozbudowywanie tablicy będzie jedynie problemem wtedy, gdy tablica jest używana ciągle, serwis jest bardzo obciążony ruchem i jest parę milionów wierszy w tabeli (i pól też nie mało) i trzeba to zrobić na żywym organizmie. Ale i na to są sposoby, a rozbudowa tabeli to nie czynność codzienna.

Tak czy siak: co parametr to pole i już. Nawet późniejsze modyfikacje tabeli (dodawanie lub usuwanie pola) będą banalne, a zmiana struktury danych, gdy te dane są zapisywane w jednym polu pociąga za sobą migracje danych.

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Michał Jarosz:
Takie rozwiązanie można dopuścić wtedy, gdy
1) wszystkie te dane są zawsze pobierane w grupie (czyli pobranie tylko częsci nie ma sensu)
i
2) po żadnej ze zmiennych nie jest prowadzone wyszukiwanie lub indeksowanie

Dokładnie tak. Koszmar programisty: obsługiwanie tabeli z 200 kolumnami z czego część jest "na zaś".

Jeśli konfiguracja nigdy nie będzie analizowana SQLem to jak najbardziej.

A jeśli ktoś bardzo chce mieć zapytania na parametrach - jeden parametr - jeden WIERSZ.

Temat: PHP/SQL - jedno pole czy wiele?

kolumna "params" w środku czytelny zapis:
width=100\n
height=200\n

itd.

Proste, przejrzyste, edytowalne, zrozumiałe, skalowalne. Obsługę parametrów sobie napiszesz w klasie params, że po pobraniu je od razu do tablicy wrzuca, potem tylko pododajesz i/lub poprzeciążasz metody żeby to do xmla, jsona czy czego innego wrzucić w klasach gdzie takie formaty są potrzebne.

Śmieciowa kolumna na początek a jak zauważysz parametr występujący w ponad połowie klas, względem którego trzeba sortować albo filtrować to wtedy zaprzęgniesz bazę. Uważam że nadmiarowe kolumny których się nie filtruje i nie sortuje to czołg na mrówki. Gorzej, bo bez czołgu tez zadepczesz mrówki, ale jak już go masz to potem upchnąć pod dywan się nie da. Weź potem poprawiaj te kolumny wszędzie, mskr.
Michał Stachura

Michał Stachura Dedykowane serwisy i
strony www -
http://santri.eu

Temat: PHP/SQL - jedno pole czy wiele?

Łukasz Rylik:
kolumna "params" w środku czytelny zapis:
width=100\n
height=200\n

itd.

Proste, przejrzyste, edytowalne, zrozumiałe, skalowalne.

wolne.

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Piotr Likus:
A jeśli ktoś bardzo chce mieć zapytania na parametrach - jeden parametr - jeden WIERSZ.

Rowniez uwazam to za najlepsze rozwiazanie.

Temat: PHP/SQL - jedno pole czy wiele?

"W tabeli chce przechowywać kilka wartości, które będą określały sposób wyświetlania animacji flashowej, m.in prędkość tekstu, prędkość myszy, etc."

Moim zdaniem to nie są dane, które się pobiera w ilości 5k rekordów z sortowaniem 3-5 razy na odwiedzającego i takie dane się cacheuje

Wszystko zależy od ilości / powtarzalności, mi osobna klasa do obsługi parametrów pomaga.

konto usunięte

Temat: PHP/SQL - jedno pole czy wiele?

Moim zdaniem to nie są dane, które się pobiera w ilości 5k rekordów z sortowaniem 3-5 razy na odwiedzającego i takie dane się cacheuje

W tym przypadku chyba nie chodzi tylko o czytanie. Kiedyś trzeba te dane zapisać a w przypadku zapisywania parametru, który jest ukryty w łańcuchu znaków, de facto będzie się robić UPDATE na wszystkich parametrach, tylko po co? Dodatkowa klasa do obsługi parametrów to dodatkowa klasa. Update na parametrze to: read wszystkich parametrów, podmiana wszystkich i zapis. Optymalnie?

Proste rozwiązania są najlepsze, po co komplikować sobie życie i tworzyć nie wiadomo jakie rozwiązania i setki modeli do obsługi paramsów, skoro engine bazy nam to wypluje?

I tak jak wcześniej mówiłem, aplikacja pewnie kiedyś będzie obsługiwała więcej parametrów, albo jakiś zniknie. Wtedy trzeba obrabiać coraz dłuższe łańcuchy albo operować na nadmiarowych/niepotrzebnych danych, lub przerabiać/migrować wszystkie dane. Tabele też nie są z gumy a im większa tym wolniejsza.
Michał Stachura

Michał Stachura Dedykowane serwisy i
strony www -
http://santri.eu

Temat: PHP/SQL - jedno pole czy wiele?

Każde parsowanie stringów jest wolniejsze od zapytania sql.
Chociaż faktycznie przy małej ilości danych nie robi to różnicy serwerowi.



Wyślij zaproszenie do