Maksymalna liczba plików w katalogu w S3

87

Gdybym miał milion obrazów, czy lepiej byłoby przechowywać je w jakiejś hierarchii folderów / podfolderów, czy po prostu zrzucić je wszystkie prosto do wiadra (bez żadnych folderów)?

Czy zrzucenie wszystkich obrazów do zasobnika bez hierarchii spowolniłoby działanie LISTY?

Czy istnieje znaczny narzut związany z tworzeniem folderów i podfolderów w locie oraz konfigurowaniem ich list ACL (mówiąc programowo)?

Nikhil Gupte
źródło

Odpowiedzi:

124

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.
James Brady
źródło
w S3 są wiadra, a wewnątrz możesz mieć `` foldery '' i
mwm
14
@mwm mylisz się. „Foldery” to elementy ściśle związane z interfejsem użytkownika dostarczane przez dowolne używane narzędzie. James ma rację, że klucze mogą mieć ukośniki, ale s3 w ogóle się tym nie przejmuje - na pewno nie myśli o nich jako o folderach.
Ry4an Brase
S3 zdecydowanie ogranicza liczbę żądań na podstawie prefiksu ścieżki, spójrz na oficjalne dokumenty: docs.aws.amazon.com/AmazonS3/latest/dev/ ...
Anatoly
Prefiksy S3 nie są już potrzebne ani zalecane: aws.amazon.com/about-aws/whats-new/2018/07/…
Aea
-3

Używam struktury katalogów z katalogiem głównym, a następnie co najmniej jednym podkatalogiem. Często używam „daty importu dokumentu” jako katalogu w katalogu głównym. Może to nieco ułatwić zarządzanie kopiami zapasowymi. Niezależnie od używanego systemu plików, ostatecznie osiągniesz limit liczby plików (praktyczny, jeśli nie fizyczny limit). Możesz również pomyśleć o obsłudze wielu korzeni.

Jim Blizard
źródło