Idę młody, genialny, niosę BUT W BUTONIERCE,
Tym co za mną nie zdążą echopowiem: - Adieu! -
Bruno Jasieński

Inteligentny sterownik bazy danych

Napisane: 15.07.2006 | Działy: Pomysły | 4 Comments
Tagi:

Ostatnio w moim umyśle powstał dość “szalony” a zarazem ciekawy pomysł.

Wyobraźcie sobie sytuacje kiedy pisząc aplikacje webową nie musicie się zastanawiać, które zapytania nadają się do cache-owania. Dzięki temu można zwiększyć wydajność aplikacji pisanej dla bliżej nieokreślonego odbiorcy.

Inteligentny sterownik bazy danych analizowałby częstość występowania zapytań, ilość zwracanych wyników a także zmienność zwracanego wyniku. Za pomocą tych danych “mógłby stwierdzić” które zapytania opłaca się cache-ować. Tryb uczenia mógłby włączać się co jakąś liczbę użytkowników aby dostosować się do aktualnych “zapotrzebowań” serwisu.

Pozostaje niestety jedna sprawa: wydajność samej “inteligencji” sterownika. Niestety bez napisania czegoś takiego nie można stwierdzić czy poza skróceniem czasu pisania aplikacji zauważymy przyrost wydajności.

Napisać czy nie ma to sensu?

Komentarze

4 Comments Dodaj komentarz
cysiaczek - 15.07.2006 16:42

Nie mam nic przeciwko, ale boję się, że wydajnośc będzie znikoma i nada się tylko do intranetowych projektów, gdzie w zasadzie takie cashowanie to ostatnia rzecz, jaką należy się przejmować. Może się mylę, ale cóż…:)
W każdym razie życzę powodzenia.

splatch - 15.07.2006 16:47

Problem z Twoim sterownikiem jest o tyle duży, że ciężko jest określić które zapytanie ma być buforowane a które nie. Niektóre z zapytań powtarzają się często, ale odwołują się do danych, które zmieniają się na bierząco, z kolei inne są wykonywane tak żadko, że mechanizm buforowania nie ma wpływu na szybkość działania całej aplikacji.

Problem z buforowaniem danych jest jeszcze większy gdy w grę wchodzi modyfikacja rekordów. Dopóki nie odpytasz bazy danych nie wiesz czy dane, które są w buforze są aktualne, a tylko na takich użytkownik powinien pracować prawda? :)

Problemów będzie zapewne wiecej, ale zawsze warto chociażby poszkicować sobie. :)

Koziołek - 17.07.2006 15:24

Pomysł niezły… ale jak to w życiu bywa mało realny niestety. Zazwyczaj pisząc aplikację masz jakieś pojęcie które zapytania mają wolno zmienne wyniki, a które raczej nie dadzą wa razy tego samego. Tym samym jakby z palca tworzysz cache i nie kombinujesz. Pytanie tez czy czas jaki poświęcisz na napisanie sterownika wróci się w rzeczywistych projektach.
pozdrawiam

Ace - 19.07.2006 9:20

Ja napisalem sobie jakis czas temu sterownik do db w ktorym do zapytan przekazywalem parametr, czy cachowac… Zalozenie bylo takie, ze tylko moja aplikacja www ma dostep do db. Inserty i Updaty, Delety automatycznie czyscily kazdy cache ktore wchodzily w relacje z ta tabela. Jednak, co oplaca sie cachowac? Nie wiele. NP: Statystyki. Wyciagniencie 10 newsow, jest tak szybkie, ze bardziej oplaca sie zadac pytanie do db niz pobrac cache z dysku.

Kolejna rzecz, kiedys z jaco rozmawialem o tym, doszlismy do wniosku, ze lepiej jest cachowac Cale fragmenty kodu strony – kod wynikowy – html. Mozesz dojsc wtedy do takiego momentu, ze strona jest po prostu odczytywana z dysku, 0 zapytan :) Ale musi byc tez dobra cachowanie, ktore bedize dbac o to, jakie dane sa aktualne.

Skomentuj





*

Klinkij na obrazek aby odsluchac zdjecie.


* pole wymagane
** adres email nie zostanie opublikowany

 

Ostatnie wpisy