Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Katalogowanie plików.
MikroUser
post 1.11.2006, 12:24:27
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 5.09.2006

Ostrzeżenie: (0%)
-----


Witam.
Przepraszam jeśli źle trafiłem.

Projekt oparty na php i PostgreSQL. Zakładam że będzie to duża baza!

Jest tabela użytkowników (ok. 20 - 30 tys.) Każdy użytkownik może wysłać pliki (zdjęcia) na serwer. Zakładam że tak około 50 zdjęć przypada na jednego użytkownika.

Nie wiem jak przechowywać przesyłane zdjęcia.
1) Czy jest sens dla każdego użytkownika zrobić swój własny folder na dysku? (Wtedy automatycznie mamy 20-30 tys. folderów).

2) Czy pogrupować te zdjęcia względem jakiegoś typu (ludzie, auta, przyroda itd.) i wrzucać do odpowiedniego katalogu? Wtedy w katalogu jakiejś grupy mamy ok. 400 tys. zdjęć.

Z czym sobie będzie lepiej (czytaj szybciej) radził system (raczej jakiś Linux, co dokładnie jeszcze nie wiem)?
A może jakieś inne rozwiązanie?

Dziękuję za odpowiedź.

PS. Aha no i dodam, że w bazie są przechowywane ścieżki do plików. Czyli każdy użytkownik, ma do każdego swojego pliku w bazie zapisaną ścieżkę, a pliki są przechowywane na dysku. Czy to jest dobre rozwiązanie? Chyba nie ma sensu pakować każdy plik do bazy jako blob ...

Ten post edytował MikroUser 1.11.2006, 15:40:00
Go to the top of the page
+Quote Post
cyphelf
post 1.11.2006, 13:02:01
Post #2





Grupa: Zarejestrowani
Postów: 68
Pomógł: 1
Dołączył: 27.03.2006

Ostrzeżenie: (0%)
-----


Przy 400 tysiącach plików w jednym katalogu może być problem z czasami dostępów do plików. Niektóre systemy takiej ilości mogą nie obsłużyć.

W tym przypadku dobrym rozwiązaniem może być większe rozbicie struktury katalogów. Np. możesz to zrobić
w oparciu o kombinację kategorii i daty dodania pliku:

/nazwa_kategorii/2006/10/19/nazwa-pliku.xxx

Możesz też zrobić haszowaną strukturę katalogów, np. tak:

/c73/996/a95/7f0/710/nazwa-pliku.xxx

W tym przypadku obliczasz hash md5 unikatowego klucza z tabeli przechowującej informacje o plikach, a następnie na podstawie hasha generujesz sobie ścieżkę katalogów do pliku. Masz tu wtedy pełną dowolność
w kwestii ilości poziomów.


--------------------
lorem ipsum : polska społeczność zend framework
Go to the top of the page
+Quote Post
dr_bonzo
post 1.11.2006, 14:58:40
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Prosze poprawic tytul topiku (jest niezgodny z regulaminem) albo topik zostanie zamkniety.

// Tytul poprawiony.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Neotion
post 2.11.2006, 19:51:40
Post #4





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 13.09.2004

Ostrzeżenie: (0%)
-----


A jaki system plików masz do wykorzystania?
Jak reiresrfs to nie powinno być żadnych problemów z dużą ilością plików / folderów.
A jakbyś tylko mógł reiser4 to już wogóle miodzio (tańczące drzewa itd).

Ogółem każdy user = katalog nie jest taki zły bo to tylko folderów się narobisz, a linux to akurat dobrze obsługuje. Pozatym duża ilość plików w katalogu do przerobienia wydaje mi się bardziej czasochłonna niż dużo katalogów (w linuxach jest katalog->i-węzły, dostanie się do katalogów nie jest trudne za to operacje na i-węzłach już są kronikowane co też zajmie trochę czasu, drzewo plików zaś sobie wesoło siedzi w superbloku i git).

Jedyne z czym mogą wystąpić problemy to fragmentacja (ale nie wiem czy już do reiser4 nie będzie programu defragmentacji), ale to i tak tylko "namiastka" problemu w reiserach, dobrze sobie radzą z fragmentacją same w sobie.

Za to o XFS nie wiem nic, a zachwalają go tongue.gif

Jako blob w bazie odradzam, tylko zamulisz bazę.


--------------------
current: nexcite cms (0.2.5) running on top of netsource framework (0.5.3)

workbench: nsapi | php 5.1.2 | mysql 5.0.18 | phpmyadmin 2.9 rc1 | zend studio 5.2.0 | apache/2.2.0 (linux/suse)
Go to the top of the page
+Quote Post
dtb
post 4.11.2006, 20:46:30
Post #5





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

Ostrzeżenie: (0%)
-----


ja proponuje na takiej zasadzie. jezeli user nazywa sie "idiota" to pliki trzymane sa w folderze: /i/di/ota


--------------------
Go to the top of the page
+Quote Post
raikou
post 4.11.2006, 21:32:55
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 25.11.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Neotion @ 2.11.2006, 19:51:40 ) *
Za to o XFS nie wiem nic, a zachwalają go tongue.gif

Właśnie do takich zastosowań, co znaczy dużo plików w katalogu. Wysoka szybkość dostępu do pliku (lepsza niż Reisera) ale np. nie obsługuje badblocków wychodząc z założenia że wtedy to już pora na nowy dysk. Osobiście używam i nie narzekam.


--------------------
Humans cannot create from nothingness, humans cannot accomplish anything without holding on to something, humans are not gods.

PLD Linux AC / Eclipse 3.2.1 / Firefox 2.0
Go to the top of the page
+Quote Post
thornag
post 7.11.2006, 11:01:58
Post #7





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Swego czasu mialem podobny problem, zastosowalem rozwiazanie podobne do tego proponowanego przez dtb z malo zmiana struktura u mnie jest taka,

Kod
users/j/ja/janek/
users/j/ja/january


Itp, w srodku mam jeszcze dodatkowe rozbicie na obrazy, pliki audio/video i dla xml. Wszystko wydaje sie dzialac dobrze, a czytelnosc jest wieksza niz w przypadku i/di/ota

Pozdrawiam.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
HomerWells
post 21.11.2006, 21:04:53
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.05.2005

Ostrzeżenie: (0%)
-----


Witam
Ja właśnie zamierzam poprawić galerię, która stworzyłem z rok temu. Mam zamiar dodać kategorie, tyle tylko że nazwy kategorii będą w stylu 'Impreza z okazji tego czy owego', 'Andrzejkowa zabawa'.
Przechowywanie plików w tego typu katalogach wydaje mi się trochę hmm... dziwne snitch.gif Po przeczytaniu wcześniejszy postów zastanawiam się czy nie tworzyć nazw katalogów na postawie nazw kategorii za pomocą md5(). Chyba tp będzie dobre rozwiązanie. Pozostaje pytanie czy shaszowane 'katalogi' trzymać w bazie czy też obliczać w locie. W bazie pewnei nigdy nie będzie więcej zdjęć niż 500.
Go to the top of the page
+Quote Post
MikroUser
post 22.11.2006, 09:30:10
Post #9





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 5.09.2006

Ostrzeżenie: (0%)
-----


HomerWells chcesz chaszować katalogi żeby nie było spacji w nazwach?

Ja w sumie trzymam nazwy katalogów w bazie. Ale nie wiem czy nie było by lepsze obliczanie tego w locie, zyskujesz na tym że nie musisz robić selecta do bazy.

Ja i tak muszę robić zapytanie do bazy, dlatego trzymam katalogi w bazie.
Go to the top of the page
+Quote Post
HomerWells
post 23.11.2006, 16:58:14
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.05.2005

Ostrzeżenie: (0%)
-----


Cytat(MikroUser @ 22.11.2006, 09:30:10 ) *
HomerWells chcesz chaszować katalogi żeby nie było spacji w nazwach?


Też ale chodzi również o polskie znaki diaktryczne. W nazwach imprez mogą się takie pojawić.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 23:42