Gdzie Umbraco Przechowuje Dane
Umbraco działa jako system zarządzania treścią oparty na technologiach .NET. Obsługuje różne typy danych potrzebnych na stronach internetowych, w tym zawartość stron, zasoby medialne i informacje o użytkownikach. Przechowywanie odbywa się w różnych lokalizacjach, aby wyważyć wydajność, trwałość i dostępność. Ten artykuł analizuje główne mechanizmy przechowywania oparte na oficjalnej dokumentacji i praktycznych wdrożeniach.
Główne lokalizacje przechowywania danych
Umbraco rozdziela dane na trzy główne obszary: relacyjne bazy danych, system plików oraz struktury w pamięci. Każdy z nich pełni specyficzne funkcje w architekturze systemu.
Relacyjna baza danych
Baza danych stanowi podstawę dla danych strukturalnych w Umbraco. Przechowuje surową zawartość, definicje dokumentów, wartości właściwości oraz rekordy członków. Microsoft SQL Server jest domyślnym wyborem, chociaż istnieją alternatywy dla różnych środowisk.
Kluczowe tabele zarządzają drzewem zawartości i powiązanymi danymi:
umbracoNode: Śledzi wszystkie węzły w drzewach zawartości, mediów i członków wraz z informacjami o hierarchii.
cmsContent: Przechowuje kluczowe dane zawartości, takie jak ID węzła, typ zawartości i znaczniki czasowe wersji.
cmsPropertyData: Zawiera indywidualne wartości właściwości dla każdego węzła zawartości.
cmsContentXml: Przechowuje przedrenderowane reprezentacje XML używane do buforowania.
umbracoUser: Zarządza kontami użytkowników backoffice i uprawnieniami.
Typy dokumentów, typy mediów i typy członków definiują schemat wprowadzania zawartości. Te definicje kontrolują właściwości i organizację danych w bazie danych. Redaktorzy tworzą węzły przez backoffice, które wstawiają rekordy do odpowiednich tabel.
Historia wersji i zarządzanie szkicami opierają się na wpisach w bazie danych. Funkcje planowanego publikowania oznaczają zawartość do automatycznego wydania lub wycofania w określonych terminach. Relacje między podmiotami korzystają z dedykowanych tabel do utrzymania połączeń.
Dane Umbraco Forms integrują się bezpośrednio z bazą danych, gdy skonfigurowano przechowywanie relacyjne. Obejmuje to definicje formularzy, konfiguracje pól i zgłoszone wpisy.
Elementy systemu plików
System plików obsługuje zasoby nieustrukturyzowane i pliki konfiguracyjne. Pliki multimedialne stanowią największą część przechowywania opartego na plikach.
Przechowywanie mediów
Domyślnie przesłane obrazy, filmy, pliki PDF i inne pliki trafiają do katalogu wwwroot/media. Umbraco generuje unikalne ścieżki używając identyfikatorów, co skutkuje strukturami takimi jak /media/abc123/filename.jpg. To podejście zapobiega konfliktom nazw i wspiera organizację przez foldery.
Domyślne typy mediów obejmują:
Plik: Ogólne dokumenty z właściwościami rozszerzenia i rozmiaru.
Obraz: Wspiera szerokość, wysokość i bajty z wbudowaną integracją narzędzia do kadrowania.
Folder: Organizuje elementy mediów bez przechowywania faktycznych plików.
Wideo/Audio: Specjalizowane typy dla zasobów multimedialnych.
System przypisuje każdemu elementowi mediów numeryczny lub alfanumeryczny identyfikator podczas przesyłania. Pierwsza część ścieżki (1001, 2abc) pochodzi z tego ID, dzielona na kawałki, by uniknąć zbyt wielu plików w jednym folderze. Ta struktura jest spójna we wszystkich wersjach Umbraco i pomaga w wydajności systemu plików przy dużych bibliotekach mediów.
Folder mediów znajduje się domyślnie wewnątrz głównego katalogu sieciowego, co pozwala na bezpośredni dostęp do plików przez URL. Na przykład https://yoursite.com/media/1001/photo.jpg udostępnia plik bez przechodzenia przez CMS. To zachowanie zmienia się, gdy są włączone zdalne dostawcy pamięci — wtedy adresy URL wskazują lokalizacje w chmurze, ale interfejs backoffice pozostaje niezmieniony.
Gdy używany jest narzędzie Image Cropper, Umbraco tworzy dodatkowe warianty obrazów na żądanie. Pliki pojawiają się obok oryginału, używając sufiksów takich jak -600x400.jpg lub -thumb.jpg, w zależności od ustawień kadrowania zdefiniowanych w typie mediów.
Pliki konfiguracyjne i cache
Ustawienia aplikacji znajdują się w plikach konfiguracyjnych:
web.config (stare) lub appsettings.jsonŁańcuchy połączeń, flagi funkcji i ustawienia dostawców.
umbraco.configPlik cache XML w App_Data zawierający pełny zrzut drzewa zawartości.
App_Data/UmbracoFormsPrzechowuje definicje przepływów formularzy w starszych konfiguracjach.
Plik umbraco.config jest generowany podczas uruchamiania aplikacji, aby przyspieszyć ładowanie treści. Redukuje zapytania do bazy danych przy często wykonywanych operacjach.
Obsługa w pamięci
Umbraco ładuje zawartość do pamięci do przetwarzania żądań. Dokument XML z umbraco.config lub bazy danych tworzy reprezentację w pamięci, dostępną dla widoków.
Szablony Razor pobierają dane z tej pamięci podręcznej podczas renderowania strony. Tymczasowe gromadzenie danych, jak w Umbraco Engage, odbywa się w pamięci przed okresowym zapisem do bazy danych na podstawie progów.
Struktury pamięci utrzymują pamięć podręczną zawartości z relacjami węzłów, śledzeniem stanów opublikowanych/nieopublikowanych oraz zbiorami wartości właściwości dla bieżących żądań.
Doświadczenie z przechowywaniem danych Umbraco w OSKI Solutions
W OSKI Solutions, budujemy i utrzymujemy strony Umbraco dla klientów z USA, Kanady, Wielkiej Brytanii, Niemiec, Holandii, Szwajcarii, krajów nordyckich, Izraela i innych części Europy. Oznacza to, że znamy i na co dzień obcujemy z jego architekturą przechowywania danych. Dokładne zrozumienie, gdzie Umbraco przechowuje dane — zawartość w tabelach takich jak umbracoNode, cmsPropertyData i cmsContentXml, media w domyślnym folderze wwwroot/media oraz pamięć podręczną w App_Data — pozwala nam tworzyć solidne kopie zapasowe, płynne wdrożenia i łatwe skalowanie.
W większości projektów domyślna konfiguracja działa doskonale i pozostaje przewidywalna od lokalnego środowiska deweloperskiego po produkcję. Gdy ruch się zwiększa lub zespoły rosną, przenosimy media do Azure Blob Storage lub AWS S3 bez problemów, po prostu konfigurując zdalnych dostawców i dostosowując ścieżki systemu plików. Utrzymuje to wszystko spójne, niezależnie czy modernizujemy starszy system .NET, budujemy nową aplikację internetową w React czy integrujemy się z CRM i bramkami płatniczymi.
Ta jasna mapa bazy danych, systemu plików i pamięci podręcznej to nasz punkt wyjścia w każdym projekcie. Umożliwia płynne migracje, szybszą optymalizację zapytań i pewne przekazanie projektu, aby zespoły klientów mogły samodzielnie zarządzać aktualizacjami. Bez względu na skalę — platformy e-commerce, pulpity fintech, czy systemy logistyczne — sprawiamy, że przechowywanie danych Umbraco działa na korzyść biznesu, a nie przeciwko niemu.
Przechowuj dane Umbraco we właściwy sposób
Bezpieczne, skalowalne rozwiązania do przechowywania danych stworzone specjalnie dla środowisk Umbraco
Organizacja treści w panelu administracyjnym
Panel administracyjny dzieli dane na trzy główne sekcje: Treść, Media i Członkowie. Każda odpowiada określonym lokalizacjom przechowywania i interfejsom zarządzania.
Sekcja Treść
Strony internetowe i dane strukturalne zamieszkują tutaj. Typy dokumentów definiują dostępne właściwości i zakładki. Redaktorzy tworzą węzły, które generują rekordy w bazie danych.
Zakładki grupują właściwości dla lepszej organizacji. Właściwości ogólne pojawiają się na domyślnej zakładce, jeśli nie zostały przypisane gdzie indziej. Elementy słownika dostarczają tłumaczonych wartości tekstowych dostępnych przez klucz.
Funkcje zawartości wspierają porównywanie i przywracanie wersji, zaplanowane publikowanie/odpublikowywanie, mapowanie relacji między węzłami oraz dostosowywanie edytorów właściwości przez typy danych.
Sekcja Media
Przesyłanie plików odbywa się za pomocą tego interfejsu. Typy mediów kontrolują wystawianie właściwości dla różnych kategorii zasobów. Narzędzie Image Cropper umożliwia wiele predefiniowanych rozmiarów z pojedynczego przesłania.
Zarządzanie mediami wspiera organizację w folderach, przypisywanie metadanych do elementów, operacje hurtowe na przesłanych plikach i edycję właściwości po przesłaniu.
Sekcja Członkowie
Profil użytkownika i dane uwierzytelniania znajdują się tutaj. Typy członków definiują wymagane pola. Tabele bazy danych przechowują informacje o członkostwie oddzielnie od węzłów zawartości.
Dane członków obejmują właściwości profilu zdefiniowane przez typy członków, przypisania do grup dla uprawnień, dane logowania i flagi statusu oraz integrację uwierzytelniania frontendowego.
Zaawansowane konfiguracje przechowywania
Standardowe instalacje używają lokalnego przechowywania, ale środowiska produkcyjne często wymagają alternatyw.
Zdalni dostawcy przechowywania
Integracja z chmurą rozwiązuje ograniczenia skalowalności lokalnych systemów plików.
Azure Blob Storage
Pakiet Umbraco.StorageProviders.AzureBlob umożliwia przechowywanie mediów w kontenerach Azure. Pliki już nie znajdują się na systemie plików serwera, zmniejszając wymogi lokalnego przechowywania.
Konfiguracja obejmuje:
- Instalację pakietu NuGet
- Dodanie łańcucha połączenia do konfiguracji
- Ustawienie dostawcy przechowywania w ustawieniach Umbraco
- Migrację istniejących elementów mediów
Amazon S3
Our.Umbraco.StorageProviders.AWSS3 łączy się z wiadrami S3. To oferuje opcje trwałości i globalnej dystrybucji.
Integracja S3 oferuje automatyczną replikację plików między regionami, wersjonowanie zasobów mediów, kontrolę dostępu przez polityki wiader oraz kompatybilność z CDN do dostarczania.
Implementacja wymaga instalacji pakietu i aktualizacji konfiguracji. Ścieżki mediów wskazują lokalizacje w chmurze, zachowując spójność interfejsu Umbraco.
Alternatywy dla bazy danych
Chociaż SQL Server pozostaje podstawą, Umbraco obsługuje wiele backendów baz danych:
- SQL Server Express/Compact: Lekkie opcje dla mniejszych instalacji
- SQLite: Domyślny dla środowisk deweloperskich i testowych
- MySQL: Wsparcie dla starszych systemów wymagające określonych wersji
- SQL Azure: Hostowane w chmurze instancje SQL Server
Wybór bazy danych wpływa na złożoność wdrożenia oraz charakterystyki wydajności. Środowiska produkcyjne zazwyczaj preferują pełny SQL Server ze względu na funkcje i niezawodność.
Podsumowanie
Umbraco strukturyzuje przechowywanie danych poprzez relacyjne bazy danych, lokalne systemy plików oraz pamięci podręczne w pamięci operacyjnej, aby wspierać zarówno elastyczność w rozwoju, jak i wydajność na poziomie produkcyjnym. Zawartość, członkowie oraz metadane są przechowywane w tabelach bazy danych, takich jak umbracoNode i cmsPropertyData. Zasoby multimedialne domyślnie trafiają do katalogu wwwroot/media z ścieżkami opartymi na identyfikatorach, podczas gdy pliki konfiguracji i pamięci podręcznej zajmują miejsce w App_Data. Zdalni dostawcy, tacy jak Azure Blob Storage lub Amazon S3, zastępują lokalne przechowywanie mediów, gdy wymagania skalowalności tego potrzebują. Zrozumienie tych lokalizacji pozwala programistom konfigurować kopie zapasowe, optymalizować wydajność i efektywnie planować wdrożenia. Połączenie SQL Server dla danych strukturalnych oraz konfigurowalnych dostawców plików dla zasobów tworzy sedno architektury przechowywania Umbraco.
FAQ
Gdzie domyślnie przechowywane są przesłane obrazy?
Obrazy trafiają do katalogu wwwroot/media ze ścieżkami unikalnych identyfikatorów, takimi jak /media/12345/image.jpg.
Które tabele bazy danych przechowują właściwości zawartości?
Tabela cmsPropertyData przechowuje pojedyncze wartości właściwości, powiązane z węzłami poprzez cmsContent.
Czy pliki multimedialne mogą być przechowywane poza katalogiem root WWW?
Tak, za pomocą niestandardowych dostawców systemu plików lub zmian konfiguracji ścieżki katalogu mediów.
Jak umbraco.config poprawia wydajność?
Przechowuje w pamięci cały drzewo zawartości w formacie XML, zmniejszając liczbę zapytań do bazy danych podczas uruchamiania aplikacji i renderowania zawartości.
Jakie są alternatywy dla lokalnego przechowywania mediów?
Azure Blob Storage i Amazon S3 za pomocą dedykowanych pakietów oraz inni dostawcy chmurowi z niestandardowymi implementacjami.
Gdzie Umbraco przechowuje dane członków?
Informacje o członkach znajdują się w tabelach bazy danych oddzielnych od węzłów zawartości, definiowanych przez typy członków.
Jak zarządza się wersjami zawartości?
Tabele bazy danych śledzą wersje robocze i opublikowane wraz z oznaczeniami czasowymi, umożliwiając porównanie i cofnięcie przez panel backoffice.