🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #205516

Re: jsp vs php

#205516
From: R.e.m.e.K
Date: Tue, 07 May 2013 07:21
100 lines
6490 bytes
Dnia Mon, 6 May 2013 16:48:09 -0700 (PDT), M.M. napisał(a):

>> Ogolna zasada budowy plikow bazy danych jest taka, ze plik jest zbudowany ze
>> stron, kazda taka strona ma okreslony rozmiar i jest alokowana w chwili, gdy
>> poprzednia strona sie "skonczy". 
> Nie wiem, ale nie sadze aby bazy dane nie oferowaly lepszych mozliwosci - co
> akurat w jakims stopniu przemawia przeciwko optymalizacji recznej :)

Bazy danych sa srubowane pod wzgledem wydajnosci, bo to jeden z priorytetow.
Mechanizmow temu sprzyjajacych maja wiele, w koncu to temat stary jak cale
IT, ale nie sadze by byla mozliwosc grzebania w tak niskopoziomowych
parametrach jak polozenie stron w sektorach dysku.

> Wystarczy ze plik nie jest w ogromnej ilosci malych kawaleczkow. 
> Gwarancja nie jest potrzebna, wystarczy ze prawdopodobienstwo
> fragmentacji jest znikome. 

Ale jesli plik baza bedzie mial kilkadziesiat GB, to podejrzewam, ze nawet
najlepszy system plikow nie zagwarantuje, ze znajdzie taki obszar w jednym
kawalku.
 
>> a zapytan, tworzace plan
>> zapytania z uwzglednieniem indeksow (lub nawet tworzeniem ich w locie w
>> razie potrzeby, jak umie czynic to MS SQL) i "inteligentnych" zlaczen.
> Cos widzialem, kiedys od przypadku nawet korzystalem z jakiegos.

Optymalizator jest wbudowany w engine serwera i sie korzysta z niego
wykonujac zapytania. Mozna wplynac na jego decyzje wymuszajac mu plan
zapytania, ale w dobrych serwerach wiecej takim wymuszeniem mozna zaszkodzic
niz pomoc, w gorszych (ze slabym optymalizatorem) mozna poprawic wiele.
 
>> Nie no.. oczywiscie. Ale nie o to mi chodzilo. Chodzilo mi o zrobienia
>> enginu analogicznego do RDBMS, czyli takich "plikow CSV" i ich obslugi, ze
>> mozesz dodawac miliony nowych wpisow w dowolnej kolejnosci do dowolnych
>> plikow, 
> Moze by sie dalo, ale chodzi wlasnie o to, aby nie robic w pelni 
> funkcjonalnej bazy danych, tylko baze bardzo specjalistyczna i
> duzo szybsza.

Ale jesli nie bedzie read-only to stopien komplikacji wlasnego rozwiazania
rosnie ogromnie. 
 
>> Ale czekaj... co znaczy "Potem zapisz wyniki zapytania w pliku, w postaci
>> liniowych rekordów. Ostatecznie zmierz czas odczytania tego pliku"? Czyli
>> RDBMS odwali cala robote z szukaniem, a potem mam mierzyc wczytanie pliku
>> textowego z wynikami i to porownywac z baza?? Cos mi tu nie halo.
> Chodzilo o cos innego, ale tak jak napisales czasami tez mozna zrobic. 
> Trzymamy dane w bazie i korzystamy z zalet bazy. Raz na dobe wyciagamy 
> dane z bazy do plikow tekstowych. Uzytkownikom podajemy dane lekko 
> zdeaktualizowane, ale z plikow liniowych, bez wykonywania kosztownych zlaczen.

Do tego mozna takze uzyc serwera SQL. Raz na dobe zrobic nim widok i go
zmaterializowac (materialized view). Efekt bedzie podobny, a roboty ZERO.
 
>> Lub w sprzyjajacych warunkach (zalezy od rodzaju danych) odczytac dane
>> bezposrednio z indeksu (to tez "w locie i po cichu" potrafia dobre RDBMS).
> Ale to chyba tylko gdy chcemy dane z jednej kolumny? W przeciwnym razie to
> by oznaczalo wlasnie taka mozliwosc o jaka pytalem, czyli sekwencyjne 
> ulozenie potrzebnych danych.

E, czemu tylko jedna kolumne? Indeks moze obejmowac kilka kolumn. 
 
>> To jeden z
>> fundamentow wydajnosci. Nawet cale bazy potrafia trzymac jak maja odpowiedni
>> sprzet (czyt. kupe ramu).
> Zgoda, ale w specjalistycznym przypadku programista moze lepiej wiedziec
> ktore dane i w jaki sposob buforowac w RAM.

Wiedziec a to zrobic to przepasc liczona w setkach roboczogodzin ;-) 
 
>> Zycze Ci oczywiscie sukcesow, ale imho skupiasz energie w zlym miejscu. Lub
>> moze inaczej, warto sie tym zajmowac wtedy, gdy wszystko inne bedzie
>> stuningowane na maksa. 
> Nie wiem czy w zlym miejscu. Licze ile kosztuje sprzet, ile reklamy, ile
> praca... Do tego moj klient twierdzi ze 10tys uzytykownikow to jest nic...
> Patrze na czasy zapytan i widze to 2 sekundy, to 10 sekund, czasami nawet
> ponad 100 sekund...

No i dochodzimy do meritum. Jesli zapytania wykonuja sie po kilkadziesiat
sekund to (zaznacz wlasciwe pola):
- masz spieprzona strukture logiczna bazy
- nie korzystasz prawidlowo z indeksow
- piszesz zle zapytania SQL
- uzywasz produktu serweropodobnego
- wyciagasz w wyniku miliony rekordow wraz z polami typu blob i podsystem
dyskowy nie wyrabia

>> Chodzilo mi tu o dobra, przemyslana strukture tabel i indeksow. Do
>> zarzadzania plikami serwer uzywa inzynierow swojego producenta ;-)
> No ale mnie to boli pomimo przemyslanych struktur tabel i indeksow :)

Ale wlasnie, czy aby na pewno sa one przemyslane? Czy struktura jest
znormalizowana? A jesli tak to moze zbyt znormalizowana? W praktyce dla
zwiekszenia wydajnosci stosuje sie czesto denormalizacje oraz celowa
redundancje danych. Mysle, ze struktura bazy danych moze byc tu kluczowa dla
wydajnosci, mozna nia bardzo duzo poprawic oraz ...zepsuc.

-- 
pozdro
R.e.m.e.K
Technical Details
Message-ID: <5188ab94$0$1252$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!news-out.readnews.com!news-xxxfer.readnews.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <cfa1e1b8-b40c-45e1-a091-7e7a1f53c751@googlegroups.com> <klqg29$o16$1@news.mm.pl> <029812f4-fc45-4e87-86d9-716b915ec3eb@googlegroups.com> <klsle1$ogf$1@news.mm.pl> <2c18b639-c23f-4b76-9e8e-a02eb1f6ec82@googlegroups.com> <km4nal$kkp$1@news.mm.pl> <4485a9d5-1bcb-43f0-b0a1-d40637de7a4c@googlegroups.com> <db2da6e3-badf-46d1-b0b5-3bead35d039e@googlegroups.com> <e29c6d46-5143-4e90-b0d7-5322767a06e8@googlegroups.com> <51874eb2$0$1250$65785112@news.neostrada.pl> <6f61945a-2435-4f60-bd44-29994fd65fcd@googlegroups.com> <51882061$0$1222$65785112@news.neostrada.pl> <59d943be-a200-4676-a1c8-c5153b016c46@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!news-out.readnews.com!news-xxxfer.readnews.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: "R.e.m.e.K" <go@dev.null>
Subject: Re: jsp vs php
Newsgroups: pl.comp.programming
User-Agent: 40tude_Dialog/2.0.15.1pl
MIME-Version: 1.0
Sender: hell@heaven
References: <cfa1e1b8-b40c-45e1-a091-7e7a1f53c751@googlegroups.com> <klqg29$o16$1@news.mm.pl> <029812f4-fc45-4e87-86d9-716b915ec3eb@googlegroups.com> <klsle1$ogf$1@news.mm.pl> <2c18b639-c23f-4b76-9e8e-a02eb1f6ec82@googlegroups.com> <km4nal$kkp$1@news.mm.pl> <4485a9d5-1bcb-43f0-b0a1-d40637de7a4c@googlegroups.com> <db2da6e3-badf-46d1-b0b5-3bead35d039e@googlegroups.com> <e29c6d46-5143-4e90-b0d7-5322767a06e8@googlegroups.com> <51874eb2$0$1250$65785112@news.neostrada.pl> <6f61945a-2435-4f60-bd44-29994fd65fcd@googlegroups.com> <51882061$0$1222$65785112@news.neostrada.pl> <59d943be-a200-4676-a1c8-c5153b016c46@googlegroups.com>
Date: Tue, 7 May 2013 09:21:55 +0200
Lines: 100
Message-ID: <5188ab94$0$1252$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 89-71-60-255.dynamic.chello.pl
X-Trace: 1367911316 unt-rea-a-02.news.neostrada.pl 1252 89.71.60.255:50771
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit