-
Data: 2013-05-06 23:28:02
Temat: Re: jsp vs php
Od: "R.e.m.e.K" <g...@d...null> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Dnia Mon, 6 May 2013 12:55:09 -0700 (PDT), M.M. napisał(a):
>> A co z fragmentacja dysku?
> Z tego co słyszałem, problem fragmentacji dysku na dobrych systemach
> plików nie występuje przy spełnieniu prostego warunku: dysk nie może
> być zapełniony, musi na nim być zawsze pewien zapas wolnego miejsca.
A jaki system plikow tak dziala? Pytam z ciekawosci, bo o ile mi wiadomo
linuksowy Ext4 sie fragmentuje, NTFS wiadomo ze tak, jablkowy HFS takze.
Jaki nie?
>> Co Ci da to, ze dane beda "obok" siebie w pliku
> Nie chodzi o to co da, ale co zlikwiduje. Zlikwiduje zbędne naprowadzania
> głowicy. Będzie odczyt sekwencyjny zamiast random.
No tak, przy zalozeniu, ze fragmentacja dysku nie istnieje.
>> skoro beda na dwoch koncach dysku?
> O ile się nie mylę, na dobrych systemach plików tak się dzieje bardzo rzadko.
Podaj nazwy tych dobrych systemow plikow.
>> Pomijajac juz taki detal, ze nie ma zadnego mechanizmu ukladania
>> danych w tabelach wg swoich widzimisie.
> Skoro znasz tak dobrze silniki bazodanowe, to wierzę, że takiego mechanizmu
> żaden silnik nie oferuje. Ja je znam bardzo pobieżnie... umiem założyć
> tabelę, indeksy, zrobić zapytanie, ewentualnie umiem dodać jakiś triger.
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". Juz sam fakt korzystania ze stron i ich
dynamicznego przydzialu powoduje, ze beda one rozrzucone po dysku. Nie sadze
by jakikolwiek system plikow gwarantowal, ze konkretnemu plikowi bazy danych
da ciagly obszar dysku. Nawet gdyby tak bylo, to np. dane tabeli A moglby
byc w stronach 2, 10, 23, 65, 127, etc. Czyli i tak nie po kolei.
Tu masz o MS SQLu troche od kuchni. W innych serwerach jest podobnie.
http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad15/w1
5.htm
> Myślałem że może są jakieś zaawansowane optymalizatory.
Optymalizatory sa, ale nie alokacji danych na dysku 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.
>> Tym zarzadza serwer i nie masz do tego dostepu. Nie istnieje takie
>> pojecie jak kolejnosc ulozenia danych w pliku bazy danych.
> Kilka dni temu też tak powiedziałem, kumpel na to mi odrzekł: znasz góra
> 10% możliwości dwóch baz, lepiej się upewnij. Rozumiem że Ty znasz
> bazy danych w 100% i mogę na tej informacji polegać?
Nie mozesz oczywiscie, nikt nie jest omnibusem, ale przynajmniej masz
material do weryfikacji i przemyslen :-)
>> Z pewnoscia moge zaryzykowac stwierdzenie, ze chocbys stanal na glowie nie
>> jestes w stanie zrobic nic wydajniejszego niz wspolczesne silniki DB.
> Nie mogę, a jakimś dziwnym trafem kilka razy w swoim życiu zrobiłem. Kilka
> ostatnich programów które napisałem działają setki razy szybciej na plikach
> csv niż na bazach postgres i sqlite. Działają dlatego szybciej, że w jednym
> plik csv mam dokładnie to, co z bazy muszę wyciągać skomplikowanym zapytaniem.
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, laczyc podczas wyszukiwania dane z roznych plikow po jakims
kluczu/kluczach, wyszukiwanie pozwalaloby zakladac warunki wybierajace tylko
niektore wpisy z plikow (zlozona klauzula WHERE na kilku plikach).
Bo jesli mowa o stalej (read only) strukturze danych, ktora jest ulozona w
kolejnosci odczytu i odczyty sa sekwencyjne (np. 500 rekordow od setnego) to
oczywiscie tak, mogles to napisac bez wiekszego trudu.
> Zrób eksperyment. Załóż bazę która zawiera 5-7 tabel dużych tabel. Połącz
> wszystkie tabele jakimiś relacjami. Napisz zapytanie do wyciągania danych.
> Zmierz czas zapytania. Potem zapisz wyniki zapytania w pliku, w postaci
> liniowych rekordów. Ostatecznie zmierz czas odczytania tego pliku ( w
> jakimś dobrym języku, może Java, albo C++). Zobacz jakie będą różnice w
> czasie.
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.
>> Powiem wiecej, wydaje mi sie, ze trwonisz czas na nieistotnych rzeczach,
>> bazy danych dzialaja z setkami milionow rekordow, ze zlaczeniami i innymi
>> "utrudnieniami" i daja rade.
> Dają radę, tak jak mogą. Masz setki milionów rekordów. Wśród nich masz tysiąc
> rozrzuconych losowo przeznaczonych do wyciągnięcia. Jeśli rekordy nie są w
> cache, to:
> 1) jeśli nie są zaindeksowane - trzeba przejrzeć setki milionów, aby znaleźć
> ten tysiac;
Lub pozwolic serwerowi zrobic indeks.
> 2) jeśli są zaineksowane - w pesymistycznym przypadku trzeba naprowadzić
> tysiąc razy głowicę + jeszcze trochę naprowadzeń na odczyt indeksów.
Lub w sprzyjajacych warunkach (zalezy od rodzaju danych) odczytac dane
bezposrednio z indeksu (to tez "w locie i po cichu" potrafia dobre RDBMS).
> A gdy ten tysiąc rekordów leży w liniowym pliku, albo są w pamięci
> RAM, bo programista napisał specjalistyczny algorytm cache, to dane
> są w ułamku sekundy natychmiast.
Heh, myslisz, ze serwery SQL nie trzymaja ile sie da w ramie? To jeden z
fundamentow wydajnosci. Nawet cale bazy potrafia trzymac jak maja odpowiedni
sprzet (czyt. kupe ramu).
>> Na 90% zrobisz w swoim sofcie wiecej waskich gardel niz to, ktore
>> dostaniesz od serwera SQL.
> Nigdy nie twierdziłem że wyręczanie serwera SQL to łatwe zadanie i
> pierwsza wersja wyrzeźbiona ręcznie będzie na pewno szybsza. Każdy
> proces optymalizacji jest trudny i daje wiele możliwości na pogorszenie.
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.
>> Oczywiscie serwerowi tez
>> mozesz pomoc lub podlozyc noge projektujac dobra lub zla strukture tabel.
> No właśnie pytałem czy bazy danych oferują coś do układania potrzebnych
> danych obok siebie :)
Chodzilo mi tu o dobra, przemyslana strukture tabel i indeksow. Do
zarzadzania plikami serwer uzywa inzynierow swojego producenta ;-)
--
pozdro
R.e.m.e.K
Następne wpisy z tego wątku
- 06.05.13 23:39 Stachu 'Dozzie' K.
- 06.05.13 23:52 R.e.m.e.K
- 07.05.13 00:50 grapeli23
- 07.05.13 01:07 Stachu 'Dozzie' K.
- 07.05.13 01:23 grapeli23
- 07.05.13 01:48 M.M.
- 07.05.13 01:58 M.M.
- 07.05.13 02:47 Stachu 'Dozzie' K.
- 07.05.13 03:16 M.M.
- 07.05.13 08:57 firr kenobi
- 07.05.13 09:21 R.e.m.e.K
- 07.05.13 09:23 firr kenobi
- 07.05.13 11:56 Piotr Chamera
- 07.05.13 14:51 firr kenobi
- 07.05.13 15:02 Michal Kleczek
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-15 przegląd za mną
- 2025-03-15 Na co komu okna
- 2025-03-15 Mój elektryk
- 2025-03-15 Fejk muzyczny czy nie fejk
- 2025-03-15 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-15 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-03-15 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2025-03-15 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+ experience) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+) <=
- 2025-03-15 KOMU w RP3 pasuje "Rumuńska łatwość gmerania w wyborach" i dlaczego nie PO-Trzaskanym?
- 2025-03-15 China-Kraków => Key Account Manager IT <=
- 2025-03-14 Spalił się autobus :-)
- 2025-03-14 Policjanci z Piątku
- 2025-03-14 Lublin => JavaScript / Node / Fullstack Developer <=