Inteligentny sterownik bazy danych

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

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?

4 Comments »
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

* pole wymagane

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word