Kiedy wysyłamy pliki do Blobstore na Google App Engine, zauważamy, że przy każdym przesłaniu tworzony jest podmiot w rodzaju _BlobInfo_
, który można zobaczyć w lokalnej konsoli programistycznej pod przeglądarką magazynu danych pod adresem http://localhost:8888/_ah/admin
, jednak po wdrożeniu aplikacji w App Engine nie takie obiekty są tworzone, gdy przesyłamy pliki do Blobstore. Wydaje mi się to dziwne i chciałem się dowiedzieć, czy czegoś tu nie ma.Dlaczego żaden rodzaj encji o nazwie _BlobInfo_ w magazynie danych nie jest tworzony po wdrożeniu aplikacji w GAE?
Odpowiedz
_BlobInfo_
nie jest nazwą specjalną i najprawdopodobniej Twoja aplikacja nie tworzy elementów o tej nazwie.
W środowisku produkcyjnym __BlobInfo__
to nazwa wewnętrzna do przechowywania informacji o obiektach typu blob przechowywanych w Blobstore. Zauważ, że są dwa znaki podkreślenia (_
) przed i po słowie BlobInfo
. Ta encja jest tworzona tylko wtedy, gdy twoja aplikacja tworzy i zapisuje obiekty blob w Blobstore.
Ponieważ jest to jednostka wewnętrzna, jest domyślnie wykluczona z przeglądarki Datastore. Jest również wykluczony ze strony Statystyki Datastore, ale pojawia się jako BlobInfo
w kategorii Kind: "Wszystkie elementy".
Za pomocą małej sztuczki można również wyświetlić szczegółowe statystyki dla jednostki __BlobInfo__
: wybierz dowolny obiekt z listy rozwijanej, a po ponownym załadowaniu strony, w url zmodyfikuj parametr kind=XXX
na kind=__BlobInfo__
i naciśnij Enter. Teraz strona przeładuje statystyki, mimo że jest ukryta na liście rozwijanej.
Można jednak wyświetlić te elementy. Na przykład przejdź do przeglądarki Datastore w twojej konsoli administracyjnej i zaznacz "Według GQL", abyś mógł wprowadzić GQL, aby wyświetlić listę swoich obiektów. Teraz wprowadź następujące zapytanie GQL:
SELECT * FROM __BlobInfo__
Spowoduje to wyświetlenie Twoich jednostek BlobInfo
.
Należy zauważyć, że strona Blob Viewer w konsoli administratora wyświetla również obiekty typu blob na podstawie jednostek przechowywanych pod nazwą __BlobInfo__
. Obiekty __BlobInfo__
zawierają również więcej właściwości niż te wyświetlane na stronie przeglądarki Blob.
Wszystkie właściwości są następujące:
- ID/Nazwa
- content_type
- tworzenie
- creation_handle
- filename
- md5_hash
- rozmiar
- upload_id
Są one również dostępne w twojej aplikacji, jeśli zdarzy ci się zapytać te podmioty.
Dzięki za szczegółowe i pouczające wyjaśnienie! ;) –
Rozumiem to zachowanie jako metodę dev_appservers emulacji blob/przechowywania danych. Po wdrożeniu taka jednostka nie jest potrzebna, ponieważ encja jest teraz przechowywana w odpowiednim blobstore. Niczego nie brakuje. –