Wpis z mikrobloga

Witam mirków.
Mam pytanie odnośnie wydajności. Będę musiał zaimplementować wyświetlanie dużej ilości danych w XML. Miałem to zrobić w taki sposób, że w #postgresql utworzę nowy view, następnie w #php używając #yii będę generował #xml. Jednak teraz pomyślałem po co komplikować sprawę? Może lepszym rozwiązaniem będzie stworzenie funkcji w #bazydanych i wygenerowanie XML od razu w DB. Wtedy wystarczy tylko podać parametry do funkcji, aby otrzymać potrzebne dane. Zaoszczędzę na pisaniu kodu w PHP, tworzenie view i może to będzie mniej obciążało serwer.
Może ktoś miał do czynienia z czymś takim i doradzi mi jakie rozwiązanie jest lepsze?

wołam #webdev i #mysql
  • 6
@mariecziek: Nie wiem, czy to zmartwienie na dziś i jakie jest planowane obciążenie. Sam generuję CSV z PostgreSQL, ale mało i rzadko.
Bo jeśli jest w planach duże obciążenie, to lepiej może być, żeby DB host tylko wystawiał dane po SQL, PHP host siorbał i transformował na PHP.
Jeśli to będzie zawsze jedna maszyna - to nic to raczej nie da.
No i zawsze bym na razie zrobił prostsze (czyli XML
Czemu robienie tego w bazie miałoby być wolniejsze?


@Ginden: Transformowanie na XML w bazie wcale nie musi być wolniejsze, niż transformowanie w PHP i wcale tego nie pisałem.
Ale wystawianie danych w XML na pewno kosztuje bazę więcej, niż wystawianie czystych danych po SQL.
Dlatego w razie problemów z wydajnością bazy trzeba będzie generowanie XML przenieść z Postgresa do PHP.
@alosha: Obciążenie może być duże. Teoretycznie z tego będzie korzystało 500 użytkowników, dane mają być pobierane co 15 minut. Wątpię, że w jednym momencie z tego skorzysta 500 użytkowników i zechce wyświetlić dane za 3 miesiące, ale informacji będzie dużo.
Można całość robić jako view (co jest wygodniejsze, bo można rezultat obejrzeć w pgAdmin jak zwykłą tabelę), można natomiast napisać funkcję, która zwróci rekordy. Strona posiada już kilka XML i to
Dlatego i pytałem czy nie lepiej od razu XML tworzyć w DB, no ale widzę argumenty przemawiające za tym, że PHP to lepszy wybór.


@mariecziek: Ja nie wiem, czy lepszy, ale daje większą skalowalność.
No i pamiętajmy jeszcze o jednym: można wysłać "surowe" dane do przeglądarki i tam dopiero robić z nich XML... Wtedy każdy sobie rzepkę skrobie i obciążenie pięknie się rozłoży.
@mariecziek: zależy co to za dane i jak bardzo będą się zmieniały, jak często będzie pobierane to samo, to lepiej wygenerować już jakiś xml z tymi danymi jako cache i serwować plik xml i tyle, a przy jakiejś zmianie tych danych wygenerować ten plik na nowo, albo po stronie klienta jak napisali wyżej a do przeglądarki przekazywać tylko jsona