Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy powinienem używać pola typu blob MySQL?

Nie z natury, ale jeśli masz duże obiekty BLOB zapychające tabele i pamięć podręczną, co z pewnością spowoduje spadek wydajności.

Tak, to jest powszechne podejście. Zwykle robisz coś takiego jak nazwanie folderów po każdej tabeli, z którą są skojarzone, zawierające nazwy plików oparte tylko na kluczu podstawowym (najlepiej liczbę całkowitą; na pewno nigdy nic przesłanego przez użytkownika).

Czy to lepszy pomysł? To zależy. Posiadanie tylko jednego magazynu danych i brak konieczności martwienia się o przyznanie użytkownikowi sieci dostępu do czegokolwiek z możliwością zapisu ma zalety związane z prostotą wdrażania. Ponadto, jeśli może być uruchomionych wiele kopii aplikacji (np. równoważenie obciążenia typu aktywny-aktywny), musisz zsynchronizować pamięć masową, co jest znacznie łatwiejsze w przypadku bazy danych niż w przypadku systemu plików.

Jeśli używasz systemu plików, a nie obiektu blob, pytanie brzmi, czy serwer sieciowy będzie go obsługiwał, wskazując alias na folder?

  • + jest super szybki
  • + dobrze buforuje
  • - dodatkowa konfiguracja serwera:katalog wirtualny; potrzebuje odpowiedniego rozszerzenia pliku, aby zwrócić żądany Content-Type
  • - dodatkowa konfiguracja serwera:trzeba dodać Content-Disposition: attachment /X-Content-Type-Options nagłówki zatrzymujące wąchanie IE w poszukiwaniu HTML jako część środków anty-XSS

czy też obsługujesz plik ręcznie przez skrypt po stronie serwera, który go wypluwa, tak jak w przypadku serwowania z obiektu typu blob MySQL?

  • - jest potencjalnie wolny
  • - wymaga trochę ręcznej obsługi If-Modified-Since i ETag, aby poprawnie buforować
  • + może używać własnych metod kontroli dostępu aplikacji
  • + łatwe dodawanie poprawnych nagłówków Content-Type i Content-Disposition ze skryptu obsługującego

Jest to kompromis, na który nie ma jednej odpowiedzi akceptowanej na całym świecie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstawianie i wybieranie identyfikatorów UUID jako binarnych(16)

  2. Jak włączyć rozszerzenia mysql php w kontenerze docker?

  3. Jak wyłączyć wyświetlanie błędów mysql na ekranie w CodeIgniter?

  4. Pojedyncza instrukcja MySQL do połączenia dwóch tabel

  5. Wybór jednego zapytania nadrzędnego MySQL