S3 nie respektuje hierarchicznych przestrzeni nazw. Każdy zasobnik zawiera po prostu pewną liczbę mapowań z klucza na obiekt (wraz z powiązanymi metadanymi, listami ACL itd.).
Mimo że klucz obiektu może zawierać znak „/”, S3 traktuje ścieżkę jako zwykły ciąg i umieszcza wszystkie obiekty w płaskiej przestrzeni nazw.
Z mojego doświadczenia wynika, że operacje LIST trwają (liniowo) dłużej w miarę wzrostu liczby obiektów, ale jest to prawdopodobnie objaw zwiększonego we / wy wymaganego na serwerach Amazon i dalej do klienta.
Jednak czasy wyszukiwania nie wydają się zwiększać wraz z liczbą obiektów - najprawdopodobniej jest to jakaś implementacja z możliwością mieszania O (1) na końcu - więc posiadanie wielu obiektów w tym samym zasobniku powinno być tak samo wydajne jak małe zasobniki do normalnego użytku (tj. nie LISTY).
Jeśli chodzi o listę ACL, granty można ustawić dla zasobnika i dla każdego pojedynczego obiektu. Ponieważ nie ma hierarchii, są to jedyne opcje. Oczywiście ustawienie jak największej liczby przydziałów dla całego zasobnika znacznie zmniejszy ból głowy administratora, jeśli masz miliony plików, ale pamiętaj, że możesz tylko przyznać uprawnienia, a nie je cofnąć, więc przydziały dla całego zasobnika powinny być maksymalnym podzbiorem listy ACL dla wszystkich to zawiera.
Poleciłbym podzielić na oddzielne segmenty dla:
- Zupełnie inna zawartość - posiadanie oddzielnych pojemników na obrazy, dźwięk i inne dane zapewnia bardziej rozsądną architekturę
- znacząco różne listy ACL - jeśli możesz mieć jeden zasobnik z każdym obiektem otrzymującym określoną listę ACL lub dwa zasobniki z różnymi listami ACL bez list ACL specyficznych dla obiektu, weź te dwa zasobniki.