Memcached - ultraszybka "baza danych".

21 lipca, 2008

Zwykle do przechowywania danych stosuje się bazy danych - MySQL, PostgreSQL czy - w przypadku, kiedy prędkość/zasoby są kluczowe - SQLite. Czasami jednak nie są potrzebne wszystkie możliwości oferowane przez bazę, a liczy się wyłącznie prędkość i prostota, plus możliwość dostępu do wspólnych danych przez kilka niezależnych procesów czy hostów. W takich przypadkach skorzystać można z memcached. Poniżej krótki opis tego narzędzia.

Parę danych ze strony domowej memcached:
Czym jest memcached?
Memcached jest rozproszonym systemem cache'owania obiektów, przeznaczonym do przyspieszenia działania aplikacji, zwł. webowych.
Jak działa memcached?
Demon alokuje wcześniej określoną ilość miejsca w pamięci, do której można zapisywać dane (w praktyce w postaci klucz -> wartość, przynajmniej tego używałem.
Czemu nie baza danych?
Baza danych jest wolniejsza z powodu implementacji ACID, użycia dysków itp. Oczywiście, memcached nie zastąpi bazy danych zawsze, ale przy niektórych zastosowaniach (np. przekazywanie wartości sterujących; testy, w przypadku gdy mamy wolne połączenie z bazą i/lub częste zapytania zbytnio by obciążyły bazę, a na bardzo aktualnych danych nam nie zależy) jak najbardziej się nadaje.

Wady:

  • brak wbudowanego uwierzytelniania (można ograniczyć per host korzystając z innych narzędzi),
  • brak szyfrowania transmisji (do obejścia przez tunelowanie),
  • ulotność danych (są trzymane tylko w RAM; to tylko cache, nie baza...),
  • brak możliwości przeiterowania po wszystkich elementach - czyli okresowy zrzut też cieżko zrobić (istnieją dirty hacki, ale to nieeleganckie, niepewne itd...),
  • brak logowania transakcji.

Zalety:

  • duża ilość API (lista API,
  • szybkość działania,
  • prostota użycia,
  • łatwość skalowania - można uruchomić wiele hostów z memcached,
  • spore możliwości konfiguracji - przykładowo można określić jak długi czas wartość ma być przechowywana w cache,
  • stabilność (nie żeby tradycyjne b. danych nie były stabilne).

Nie jestem specjalistą od baz danych, prezentuję memcached jako inny sposób na uzyskanie określonej funkcjonalności, chętnie poznam opinie nt. tego demona.

1. meal napisał(a):
21 lipca 2008, 15:25:32

Memcached dobre jest, korzystamy w firmie i różnice w szybkości działania widać. Małe, bo małe, ale widoczne są, szczególnie przy forach gdzie pobierane są spore ilości danych. Większym problemem jeśli chodzi o wydajność częściej jest szybkość działania samego httpd ;)

2. rozie napisał(a):
21 lipca 2008, 19:20:30

meal: Tuning serwera http sam w sobie nadaje się na wpis (albo i serię). Na szczęście(?) nie mam. ;)

3. meal napisał(a):
21 lipca 2008, 19:21:33

O akceleracji http napisałem parę godzin temu u siebie, zapraszam do czytania :)

4. nrm napisał(a):
23 lipca 2008, 20:29:25

Przyznam, że nie rozumiem tego wpisu: „ultraszybka ‘baza danych’” i „prezentuję memcached jako inny sposób na uzyskanie określonej funkcjonalności”. Przecież MC jak sama nazwa wskazuje to system cachowania danych i nie jest on ZAMIAST tylko ponad to na czym operujemy.

5. rozie napisał(a):
24 lipca 2008, 07:58:03

nrm: Jako samodzielny byt również może z powodzeniem memcached funkcjonować i wówczas zapytania zamiast do bazy są wykonywane tylko do memcached.