Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: Frameworki do ORM w PHP

Rafal Yeld:
ja preferuje i polecam yii

A co to ma wspólnego z ORMami?

Temat: Frameworki do ORM w PHP

Paweł Koralewski:
A co to ma wspólnego z ORMami?

to że w yii jest wykorzystywany takowy http://www.yiiframework.com/doc/guide/pl/database.over...

edit:
nie wiem jak jest w innych frameworkach bo tylko na tym pracuje, ale jest tam też automatyczne generowanie kodu(z wiersza poleceń lub www), znacznie to przyśpiesza pracę - w innych też jest coś takiego?Rafal Yeld edytował(a) ten post dnia 26.08.10 o godzinie 23:45

konto usunięte

Temat: Frameworki do ORM w PHP

Rafal Yeld:
Paweł Koralewski:
A co to ma wspólnego z ORMami?
edit:
nie wiem jak jest w innych frameworkach bo tylko na tym pracuje, ale jest tam też automatyczne generowanie kodu(z wiersza poleceń lub www), znacznie to przyśpiesza pracę - w innych też jest coś takiego?Rafal Yeld edytował(a) ten post dnia 26.08.10 o godzinie 23:45
yep
przynajmniej w zendzie i symfony z tego co widziałem

Temat: Frameworki do ORM w PHP

Paweł Koralewski:
A w jaki sposób teraz piszesz komunikację z bazą w swoich aplikacjach?

Normalnie... "select ... from ... where ... order by ... limit ...".
I jak z zarządzaniem tym kodem przy zmianie struktury bazy?

Szczerze mówiąc nie miałem nigdy akcji pt. "wywalanie bazy do góry nogami". Jeżeli czasem coś zmieniam w bazie to zmiana odpowiednich zapytań to kwestia 10 minut roboty. Nie wiem, może wynika to z tego, że mam małą bazę i aplikację (180 tabel, 150 procedur składowanych, koło 3 000 zapytań w aplikacji), a może wynika to z tego że jak się dobrze przemyśli strukturę to potem nie ma potrzeby jej zmieniać. Ogólnie mam wrażenie, że zmiana struktury bazy albo silnika bazy to bardziej wymysł koszmarów nocnych programistów niż faktyczny problem. No ale tak jak pisałem, może to ja mam to szczęście, że te problemy jakoś mnie nie dotyczą.
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: Frameworki do ORM w PHP

Wojciech Małota:
Paweł Koralewski:
A w jaki sposób teraz piszesz komunikację z bazą w swoich aplikacjach?

Normalnie... "select ... from ... where ... order by ... limit ...".
I jak z zarządzaniem tym kodem przy zmianie struktury bazy?

Szczerze mówiąc nie miałem nigdy akcji pt. "wywalanie bazy do góry nogami". Jeżeli czasem coś zmieniam w bazie to zmiana odpowiednich zapytań to kwestia 10 minut roboty. Nie wiem, może wynika to z tego, że mam małą bazę i aplikację (180 tabel, 150 procedur składowanych, koło 3 000 zapytań w aplikacji), a może wynika to z tego że jak się dobrze przemyśli strukturę to potem nie ma potrzeby jej zmieniać. Ogólnie mam wrażenie, że zmiana struktury bazy albo silnika bazy to bardziej wymysł koszmarów nocnych programistów niż faktyczny problem. No ale tak jak pisałem, może to ja mam to szczęście, że te problemy jakoś mnie nie dotyczą.

Fakt faktem wywalanie bazy do góry nogami raczej się nie zdarza, jakkolwiek poważne zmiany czasami maja miejsce, kwestia jakiego się ma klienta, jeżeli trafimy na typ który nigdy do końca nie wie co chce to możliwe, że spotkamy się z taką sytuacją.
Przemysław Pacura

Przemysław Pacura Team leader,
programista php

Temat: Frameworki do ORM w PHP

Andrzej Martynowicz:
Mateusz Kurtas:
Zend Framework + Doctrine sprawuje się świetnie!

Ok dzięki za hint... osobiście lubię CodeIgniter'a i właśnie na pierwszy rzut przetestuję połączenie CodeIgnier + Doctrine 2.0 :)

Magiczne połączenie ;)
Jeżeli już coś w takim "lekkim" stylu to właśnie lepiej Kohanę (jak proponowano) bo CI może i ma ładną kolorową (ale przede wszystkim właśnie MA dokumentację) i działa szybko ale jego połączenie z doctrine czy też czymś co z założenia jest obiektowe jest średnio fajnym pomysłem.

Co do wydajności doctrine w połączeniu z np symfony...
Jak niektórzy piszą o Orange - może i drogo - ale ten prestiż ;)
Jarosław Czub

Jarosław Czub FullStack Developer

Temat: Frameworki do ORM w PHP

Wojciech Małota:

Udało się napisać coś co wyczerpywało moje potrzeby (niewiele mniejsza funkcjonalność od Doctrina), a było szybsze od Propela. Natomiast i tak było to 100 razy wolniejsze od bezpośrednich zapytań SQL więc ostatecznie po obronie wsadziłem to głęboko do szuflady b taki wynik i tak był dla mnie dalece niesatysfakcjonujący. Operacje rezerwacji i zapisu do pamięci w PHP to wydajnościowy koszmar.
>

Dlatego jeżeli mam aplikację co ostro rzuca danymi z DB w dosyć sporych ilościach to nie użyję ORM'a tylko SQL'owe zapytania bezpośrednie + widoki.

Rozwiązanie z widokami sprawdza mi się bardzo dobrze w praktyce. Nawet jak przyjdzie do zmiany struktury bazy (dodanie nowych danych czy zmiana) to poprawki w kodzie nie zajmują wielką ilość czasu bo praktycznie zmienia się w jednym miejscu.

Dlatego moim zdaniem nie ma się spierać co jest lepsze czy ORM'y czy niskopoziomowe zapytania, itd. wszystko zależy od zastosowań i umiejętności ludzi.

konto usunięte

Temat: Frameworki do ORM w PHP

Generalnie powinno się unikać zmian bazy, ale w metodologiach typu agily, w firmach takich jak agencje interaktywne, często to się robi - nie mówię o wielkich zmianach, ale takich drobnych - bo klient na początku sam nie wie czego chce od takiej firmy.

Wojciech Małota:
Paweł Koralewski:
A w jaki sposób teraz piszesz komunikację z bazą w swoich aplikacjach?

Normalnie... "select ... from ... where ... order by ... limit ...".
I jak z zarządzaniem tym kodem przy zmianie struktury bazy?

Szczerze mówiąc nie miałem nigdy akcji pt. "wywalanie bazy do góry nogami". Jeżeli czasem coś zmieniam w bazie to zmiana odpowiednich zapytań to kwestia 10 minut roboty. Nie wiem, może wynika to z tego, że mam małą bazę i aplikację (180 tabel, 150 procedur składowanych, koło 3 000 zapytań w aplikacji), a może wynika to z tego że jak się dobrze przemyśli strukturę to potem nie ma potrzeby jej zmieniać. Ogólnie mam wrażenie, że zmiana struktury bazy albo silnika bazy to bardziej wymysł koszmarów nocnych programistów niż faktyczny problem. No ale tak jak pisałem, może to ja mam to szczęście, że te problemy jakoś mnie nie dotyczą.

Temat: Frameworki do ORM w PHP

Wojtek A.:
Generalnie powinno się unikać zmian bazy, ale w metodologiach typu agily, w firmach takich jak agencje interaktywne, często to się robi - nie mówię o wielkich zmianach, ale takich drobnych - bo klient na początku sam nie wie czego chce od takiej firmy.

Ale też nie tragizujmy, że dodanie czy usunięcie dwóch kolumn w bazie to jest jakaś wielka tragedia bo sprowadza się to do zmiany 5 - 10 stringów w aplikacji. Trzeba tylko wiedzieć których no ale jak programista nie zna swojego programu to przykro mi bardzo...

konto usunięte

Temat: Frameworki do ORM w PHP

Po pierwsze często nie zna - nie jest tajemnica że programiści zmieniają często pracę, a przechodząc do następnej rozwijają coś co ktoś stworzył jakiś czas temu i właśnie odszedł (często zostawiając śmieciokod). Po drugie pamięć ludzka nie jest doskonała. Po trzecie nie zawsze da się prosto przejechać grepem po projekcie wyszukując nazwę tabeli. O takim zastępowaniu krążą legendy.

Podsumowując narzędzia ORM nie powstały w celu osiągnięcia większej wydajności i wszyscy chyba tutaj się z tym zgadzamy. Zwłaszcza nieumiejętnie używane sprawiają problemy (dyskusja jak widzę omija temat pytań natywnych, które przecież ORMy umożliwiają).

Natomiast realizują cel któremu miały służyć - przyspieszenie pracy. Nie przekonasz mnie że szybciej i prościej jest używać żywcem wysyłanymi zapytaniami SQL. Może tak jest w projekcie z 2 tabelami, ale w projekcie ze 130 powiązanymi tabelami o jakim mówisz robi się to problematyczne. Chodzi zwłaszcza o wygodne fetch-owanie wyników, ja nie muszę zadawać kolejnego zapytania, robię po prostu załóżmy getBooks() i zwraca mi obiekty powiązane do obiektu Library (przykład).
Wojciech Małota:
Wojtek A.:
Generalnie powinno się unikać zmian bazy, ale w metodologiach typu agily, w firmach takich jak agencje interaktywne, często to się robi - nie mówię o wielkich zmianach, ale takich drobnych - bo klient na początku sam nie wie czego chce od takiej firmy.

Ale też nie tragizujmy, że dodanie czy usunięcie dwóch kolumn w bazie to jest jakaś wielka tragedia bo sprowadza się to do zmiany 5 - 10 stringów w aplikacji. Trzeba tylko wiedzieć których no ale jak programista nie zna swojego programu to przykro mi bardzo...

Temat: Frameworki do ORM w PHP

Wojtek A.:
Natomiast realizują cel któremu miały służyć - przyspieszenie pracy. Nie przekonasz mnie że szybciej i prościej jest używać żywcem wysyłanymi zapytaniami SQL.

Nie tyle jest to "prostsze" co "wystarczająco proste" :)
Może tak jest w projekcie z 2 tabelami, ale w projekcie ze 130 powiązanymi tabelami o jakim mówisz robi się to problematyczne. Chodzi zwłaszcza o wygodne fetch-owanie wyników, ja nie muszę zadawać kolejnego zapytania, robię po prostu załóżmy getBooks() i zwraca mi obiekty powiązane do obiektu Library (przykład).

Ciekawe w ilu procentach przypadków chcesz otrzymać wszystkie książki powiązane z danym Library (przykład).

Nie mam tutaj zamiaru demonizować ORMów - mają swoje pola zastosowań i dobrze. Natomiast obserwuję coś wręcz odwrotnego - demonizowanie zwykłego SQLa.
Marcin Molga

Marcin Molga Senior Solution
Architect, IBM.

Temat: Frameworki do ORM w PHP

Wojciech Małota:
Nie mam tutaj zamiaru demonizować ORMów - mają swoje pola zastosowań i dobrze. Natomiast obserwuję coś wręcz odwrotnego - demonizowanie zwykłego SQLa.

True. IMHO ORMy są wygodniejsze do implementacji logiki biznesowej. Z kolei gołego SQLa używam do zadań batchowych.

Pozdrawiam.

konto usunięte

Temat: Frameworki do ORM w PHP

Wojciech Małota:
Wojtek A.:
Natomiast realizują cel któremu miały służyć - przyspieszenie pracy. Nie przekonasz mnie że szybciej i prościej jest używać żywcem wysyłanymi zapytaniami SQL.

Nie tyle jest to "prostsze" co "wystarczająco proste" :)

Nie zgodze się z tym zarzutem - liczba tutorialów, szkoleń, ćwiczeń na studiach promuje raczej SQL niz ORM w zakresie tego co proste :-) Było kiedyś takie nawet powiedzenie "Dobry programista - to leniwy programista" w którym chodziło o to że dobry programista będzie tworzył rozwiązania które przyspieszają jego pracę. Takim rozwiązaniem jest moim zdaniem ORM.
Może tak jest w projekcie z 2 tabelami, ale w projekcie ze 130 powiązanymi tabelami o jakim mówisz robi się to problematyczne. Chodzi zwłaszcza o wygodne fetch-owanie wyników, ja nie muszę zadawać kolejnego zapytania, robię po prostu załóżmy getBooks() i zwraca mi obiekty powiązane do obiektu Library (przykład).

Ciekawe w ilu procentach przypadków chcesz otrzymać wszystkie książki powiązane z danym Library (przykład).
Nie musze otrzymywać wszystkich książek,moge dodac metodę FindBook(costam) w klasie dziedziczącej po tej wygenerewoanej i w jej treści przygotowac odpowiednie zapytanie (dekorator o którym już parę postów wyżej pisałem). Chodzi o zachowanie idei orm :-) Potem tego samego zapytana nie będe musiał pisać 10 kontrolkach (przeklejać)
Nie mam tutaj zamiaru demonizować ORMów - mają swoje pola zastosowań i dobrze. Natomiast obserwuję coś wręcz odwrotnego - demonizowanie zwykłego SQLa.

To wszystko zalezy od klasy systemu, czym będzie się zajmował, jakie będą jego zastosowania. Moim zdaniem elastyczniejsze jest używanie ORM (gdzie na przykład do wyszukiwania możesz zastosować kryteria), natomiast nie przeczę szybsze i wydajniesze jest stosowanie zapytań SQL i potem jechanie pętlą po wyniku w tablicy asocjacyjnej. Ale po to twórcy ORM wymyslili zapytania natywne, żeby w takich wypadkach móc zadawac pytania bezpośrednio w SQL - które zwrócą gotowe obiekty a nie tablice asocjacyjne.

Podejśc może być tyle ile ludzi, każde dobre jest na swój sposób. Nie myśl że demonizuje stosowanie czystego SQL. Tak samo jak Ty ja moge pomyśleć że demonizujesz ORM :-) Więc speirajmy sie nad wyższością świąt, tylko spójrzmy na temat dyskusji "Frameworki ORM w PHP", nie zbaczając z tematu :-)

konto usunięte

Temat: Frameworki do ORM w PHP

Wojciech Małota:
Nie mam tutaj zamiaru demonizować ORMów - mają swoje pola zastosowań i dobrze. Natomiast obserwuję coś wręcz odwrotnego - demonizowanie zwykłego SQLa.

demonizują Ci co nie znają SQL-a
Coś za coś, z jednej strony wygoda programowania, z drugiej strony szybkość działania, klasyczne być albo mieć

konto usunięte

Temat: Frameworki do ORM w PHP

Przemysław R.:
Wojciech Małota:
Nie mam tutaj zamiaru demonizować ORMów - mają swoje pola zastosowań i dobrze. Natomiast obserwuję coś wręcz odwrotnego - demonizowanie zwykłego SQLa.

demonizują Ci co nie znają SQL-a
Coś za coś, z jednej strony wygoda programowania, z drugiej strony szybkość działania, klasyczne być albo mieć

Coś w tym jest. Chociaż IMO, nikt jeszcze tego właściwego ORM-a nie zrobił.

Mam takie wrażnie. Że pojawia sie jedno rozwiązanie, za chwile pojawiają sie klony. Dość rzadko pojawia sie nowy przebój, jakiś nowy punkt widzenia.Tomasz Grzechowski edytował(a) ten post dnia 27.08.10 o godzinie 18:29
Alan Gabriel B.

Alan Gabriel B. Software Engineer,
IFX

Temat: Frameworki do ORM w PHP

Wojciech Małota:
[...]

A ty znowu z tym swoim "ORM", co śmiga na tablicach a nie obiektach? :]Alan Gabriel B. edytował(a) ten post dnia 27.08.10 o godzinie 19:30
Piotr Wychowaniec

Piotr Wychowaniec Ekspert Magento,
Project Manager,
Starszy programista
PHP

Temat: Frameworki do ORM w PHP

Przemysław R.:
Wojciech Małota:
Nie mam tutaj zamiaru demonizować ORMów - mają swoje pola zastosowań i dobrze. Natomiast obserwuję coś wręcz odwrotnego - demonizowanie zwykłego SQLa.

demonizują Ci co nie znają SQL-a
Coś za coś, z jednej strony wygoda programowania, z drugiej strony szybkość działania, klasyczne być albo mieć

Raczej nie mieć kiedy przyjdzie zmienić silnik bazy danych :D Już przy średniej wielkości aplikacji, powiedzmy 1000 różnych zapytań SQL - jest kłopocik ;)
Bilans korzyści/strat wypada zdecydowanie na korzyść ORM. Strata jest jedna - wydajność.

Z ekonomicznego punktu widzenia:
zwiększenie abstrakcji programowania przyspiesza pracę programistów -> wzrost popytu na mocniejsze serwery -> obniżenie cen tych serwerów -> rozwój technologicznyPiotr Wychowaniec edytował(a) ten post dnia 28.08.10 o godzinie 01:58

Temat: Frameworki do ORM w PHP

Alan Gabriel B.:
Wojciech Małota:
[...]

A ty znowu z tym swoim "ORM", co śmiga na tablicach a nie obiektach? :]Alan Gabriel B. edytował(a) ten post dnia 27.08.10 o godzinie 19:30

Chyba mnie z kimś mylisz :)

Temat: Frameworki do ORM w PHP

Piotr Wychowaniec:
Raczej nie mieć kiedy przyjdzie zmienić silnik bazy danych :D Już przy średniej wielkości aplikacji, powiedzmy 1000 różnych zapytań SQL - jest kłopocik ;)

Zmieniałeś kiedyś silnik bazy danych wykorzystywany w aplikacji?

konto usunięte

Temat: Frameworki do ORM w PHP

Tutaj muszę Cię Wojtku wesprzeć :-) Zmiana np. z postgresl do mysql, to raczej zadanie sporadyczne wykonywane i ryzykowne. Bo przecież baza to nie tylko sama struktura, ale tez triggery i procedury składowane, które w takim wypadku trzeba by było przepisać.

Nigdy nie ma pewności w którym miejscu wystąpi błąd, zawsze może być pojawić się w miejscu najrzadziej używanym, a zwykle to są te które są najważniejsze np. kod odpowiedzialny za finalizowanie kupna i sprzedaży używany 1 raz dziennie. W przypadku takich błędów ich wykrycie jest bardzo opóźnione, bo klienci rzadko wysyłają zgłoszenia awarii. Po prostu przechodzą na inną stronę (konkurencji) nie zastanawiając się nad tym błędem.

Podsumowując: ORM są potrzebne, ale nie do zmiany silnika bazy danych, to akurat jest - moim zdaniem - nietrafiony argument.
Wojciech Małota:
Piotr Wychowaniec:
Raczej nie mieć kiedy przyjdzie zmienić silnik bazy danych :D Już przy średniej wielkości aplikacji, powiedzmy 1000 różnych zapytań SQL - jest kłopocik ;)

Zmieniałeś kiedyś silnik bazy danych wykorzystywany w aplikacji?

Następna dyskusja:

Frameworki (PHP/PHP5)




Wyślij zaproszenie do