konto usunięte

Temat: Co będzie szybsze FS czy baza danych ?

40 znakowy string sha1

1. 10^9 plików w katalogu (fs ext3)
Odnalezienie pliku

2. 10^9 wpisów w bazie danych (baza PostgreSQL, MySQL etc, fs ext3)
Odnalezienie wpisu w bazie danych

Co waszym zdaniem będzie szybsze?Jarosław K. edytował(a) ten post dnia 07.11.09 o godzinie 20:58
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: Co będzie szybsze FS czy baza danych ?

Jakaś moda? Wczoraj ktoś pytał mnie o to samo, tylko z hashami MD5.

Jak już będziesz wiedział, to się podziel ;)

konto usunięte

Temat: Co będzie szybsze FS czy baza danych ?

Michał Jarosz:
Jakaś moda? Wczoraj ktoś pytał mnie o to samo, tylko z hashami MD5.

Jak już będziesz wiedział, to się podziel ;)

Proste i wysoce efektywne rozwiązania (jak nginx) zaczynają być modne.
Ludzie wreszcie zrozumieli, że nie można skalować w nieskończoność (a poza tym to kosztuje)

konto usunięte

Temat: Co będzie szybsze FS czy baza danych ?

Jarosław K.:
40 znakowy string sha1

1. 10^9 plików w katalogu (fs ext3)
Odnalezienie pliku

2. 10^9 wpisów w bazie danych (baza PostgreSQL, MySQL etc, fs ext3)
Odnalezienie wpisu w bazie danych

Co waszym zdaniem będzie szybsze?Jarosław K. edytował(a) ten post dnia 07.11.09 o godzinie 20:58

Co to znaczy 'odnalezieni pliku'? Gdzie ten sha1 jest, w pliku czy może plik się tak nazywa? Robienie 10^9 plików w jednym katalogu to jakaś pomyłka, spróbuj potem taki katalog otworzyć.
Jak wygląda tabela, którą przeszukujesz i gdzie w bazie masz sha1?

konto usunięte

Temat: Co będzie szybsze FS czy baza danych ?

Szymon G.:
Co to znaczy 'odnalezieni pliku'?

SEEK file
Gdzie ten sha1 jest, w pliku czy może plik się tak nazywa?

Sha1 to nazwa plików (lub kolumna indeks w DB)
Robienie 10^9 plików w jednym katalogu to jakaś pomyłka, spróbuj potem taki katalog otworzyć.

http://ygingras.net/b/2007/12/too-many-files:-reiser-f...

Jak wygląda tabela, którą przeszukujesz i gdzie w bazie masz sha1?

tablela wygląda tak:

name varchar(40) index btree, data int

select data from table where name='$key'Jarosław K. edytował(a) ten post dnia 07.11.09 o godzinie 21:59

konto usunięte

Temat: Co będzie szybsze FS czy baza danych ?

Jarosław K.:
Szymon G.:
Co to znaczy 'odnalezieni pliku'?

SEEK file
Gdzie ten sha1 jest, w pliku czy może plik się tak nazywa?

Sha1 to nazwa plików (lub kolumna indeks w DB)

To ja poproszę to po polsku. Co wg Ciebie robi SEEK i co to ma wspólnego z nazwą pliku? Czy te wszystkie pliki nazywają się Sha1? Co to jest 'kolumna indeks', kolumnę nazwałeś indeks?
Robienie 10^9 plików w jednym katalogu to jakaś pomyłka, spróbuj potem taki katalog otworzyć.

http://ygingras.net/b/2007/12/too-many-files:-reiser-f...

I te syntetyczne testy czego dowodzą? Gdzie jest specyfikacja sprzętu, dysków, konfiguracja itd?
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Co będzie szybsze FS czy baza danych ?

trzymanie 10^9 plikow na dysku jest delikatnie mowiac... glupie :]

co do bazy jak masz btree to nie bedzie wiecej niz 30 porownan wiec teoretycznie bardzo szybko dostaniesz wynik, w praktyce ciezko znalesc maszyne ktora bedzie mogla zmiescic 10^9 rekordow w pamieci, wiec skoki po drzewku beda mialy dodatkowy narzut czasowy

co to jest SEEK file ;p?
chodzi ci o znalezenie pliku na dysku czy znalezenie czegos w pliku?
jak to drugie to chociazby knuth morris pratt :P

konto usunięte

Temat: Co będzie szybsze FS czy baza danych ?

Jarosław K.:

tablela wygląda tak:

name varchar(40) index btree, data int

select data from table where name='$key'

Prosty test... tabelka + sha_digest dla liczb od 1 do 1_000_000 + wyszukanie jakiejś wartości... czas ok. 0.8 ms na rozgrzanej bazie. Baza po restarcie - ok. 3ms. Z wielu powodów raczej trzymałbym to w bazie.
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: Co będzie szybsze FS czy baza danych ?

Jarosław K.:
tablela wygląda tak:

name varchar(40) index btree, data int

select data from table where name='$key'[edited]Jarosław K.

Podobnie jak i innym, pomysł z trzymaniem 10^9 plików w systemie plików uważam za co najmniej pokraczny (aż przypomniała mi się satyra na Perl 6
Obrazek
).

Jak też już obliczono, 40 GB to trochę dużo, żeby trzymać w pamięci.

Skoro zadajesz takie kuriozalne pytania, to, zgaduję, już na tym etapie szukasz wydajnego rozwiązania. Zakładając, że wszystko będzie jednak trzymane w normalnej bazie SQL, to chcąc przyspieszyć ewentualne operacje na tej prostej tabeli, można byłoby rozważyć użycie jakiejś pamięci cache 2-go poziomu (wiele gotowych rozwiązań Open Source).

Pozdrawiam,
Adam Woźniak

konto usunięte

Temat: Co będzie szybsze FS czy baza danych ?

- gdybyś miał w każdym pliku jakieś GB lub przynajmniej MB to można by się zastanawiać
- gdybyś te pliki przetwarzał wszystkie za każdym razem - można by się zastanawiać
- ale przy "int-cie" to ja się zastanawiam czy w ogóle ten klucz ma sens... może po prostu o... / pomiń "postać normalną" i doklej tego inta do którejś tabeli?
Piotr Watras

Piotr Watras dgMonitor.pl

Temat: Co będzie szybsze FS czy baza danych ?

Proponuję przeprowadzić benchmark z wykorzystaniem memcachedb (http://memcachedb.org/, nie mylić z memcached!) Wg mnie będzie to szybkie rozwiązanie, ale nie testowałem tego na tak dużej ilości danych, dlatego warto poświęcić te kilkanaście minut i sklecić jakiś prosty benchmark. Natomiast z całą pewnością takie rozwiązanie będzie (mocno) skalowalne jeśli zajdzie taka potrzeba.

Aktualizacja: dla miliona takich rekordów czas wyszukiwania poniżej 0.08ms. (na maszynie 2x Opteron 2Ghz,RAM: 16GB DDR,dysk 10k rpm). Dla 10^9 testu nie będę przeprowadzać ze względu na czas generowania zestawu danych :)Piotr Watras edytował(a) ten post dnia 10.11.09 o godzinie 21:58
Maciej W.

Maciej W. Oracle developer

Temat: Co będzie szybsze FS czy baza danych ?

To pytanie to chyba jakaś pomyłka.
Otwarcie katalogu z 10^9 plików to koszmar. Utrzymanie FS także. Skanowanie filesystemu to tragedia. Mogłoby to mieć sens gdyby wykorzystać katalogi/podkatalogi...
Baza danych ma jak najbardziej sens - jednak wszystko zależy od implementacji i sposobu wykorzystania. Jeśli ktoś wrzuci zawartośc plików jako jedną niezorganizowaną nieindeksowaną tabelę do bazy danych to... no comment.

Proponuję:
- Bazę danych (Oracle?)
- Indeksowanie, partycjonowanie, ...
- Kilka dłuższych chwil namysłu przed rozpoczęciem przedsięwzięcia
A tak w ogóle to jakiś profesjonalny analityk (np. niezależny analityk & DBA) mógłby to na starcie obejrzeć.

A teraz odwrócę kota ogonem:
Co lepsze: upchać 10^9 chińczyków w open-space i wywoływać ich po nazwisku czy używać książki adresowej? (no i kto zna chińskie znaczki? ;) )
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Co będzie szybsze FS czy baza danych ?

Nie podałeś czy jedyną operacją będzie "odczyt" ? Czy może będziesz usuwał/dodawał pliki dość często?

Co więcej, jedyne ograniczenia jakie podałeś to ext3 i dowolna baza danych. ext3 oferuje indeksowanie zawartości katalogów (dir_index oparty o B-Tree), więc zachowuje się pod tym względem podobnie do silników bazodanowych i indeksów. Dlatego teoretycznie będziesz miał podobną wydajność.

Jeśli podasz jakieś ograniczenia sprzętowe, to wtedy można dyskutować o praktycznych różnicach.

Sądzę, że jeśli dasz oraclowi kilka raw devices i pozwolisz zarządzać storagem, to będzie to działało lepiej niż ext3. Co do innych silników bazodanowych nie wypowiadam się, bo nie wiem jak zarządzają dostępem do danych.

No ale ograniczeniem jest ext3, prawda? ;-)
Łukasz Dudek

Łukasz Dudek Database
Administrator

Temat: Co będzie szybsze FS czy baza danych ?

Jakbyś jeszcze napisał do czego to ma służyć ...
a tak powiem ze jedynie.
Na plikach malutkich najlepiej sprawdza się reiserfs3 i od niego bym zaczął sprawdzać wersje "No database" (chociaż są problemy przy blokowaniach ).
W wersji database użyj postgres'a razem z indeksami hash (pokazałeś wyłącznie porównanie) ewentualnie można się pokusić o stworzenie własnego indeksu funkcyjnego :) ale bez jakichś konkretnych założeń to se mozna jedynie gdybać

konto usunięte

Temat: Co będzie szybsze FS czy baza danych ?

no i dochodzi jeszcze polityka bezpieczeństwa, backup'y, lock'i, transakcyjność itp. fs to chyba kiepski pomysł



Wyślij zaproszenie do