PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Przechowywanie długich ciągów binarnych (surowych danych)

Aż do PostgreSQL dotyczy, wpisz text nie wchodzi w rachubę. Jest wolniejszy, zajmuje więcej miejsca i jest bardziej podatny na błędy niż bytea w tym celu.

Istnieją zasadniczo 3 podejścia:

  1. Użyj typu bytea (w zasadzie odpowiednik pg typu blob SQL).

  2. Użyj „dużych obiektów ".

  3. Przechowuj obiekty blob jako pliki w systemie plików i przechowuj tylko nazwę pliku w bazie danych.

Każdy ma swoje wady i zalety.

1. jest dość prosty w obsłudze, ale zajmuje najwięcej miejsca na dysku. Wymagane jest pewne dekodowanie i kodowanie, co sprawia, że ​​jest to również powolne. Kopie zapasowe szybko rosną!

2. jest nieco niezręczna w obsłudze, ale masz własną infrastrukturę do manipulowania blobami - jeśli tego potrzebujesz. I możesz łatwiej tworzyć oddzielne kopie zapasowe.

3. jest zdecydowanie najszybszym sposobem i zajmuje najmniej miejsca na dysku. Ale nie zapewnia integralności referencyjnej, którą uzyskujesz, gdy przechowujesz w bazie danych.

Mam kilka takich implementacji dla plików graficznych:przechowuję małą miniaturę w polu bajtów dla integralności referencyjnej i szybkiego odniesienia. Zapisz oryginalny obraz jako plik w systemie plików. Oczywiście musisz zastanowić się, kiedy i jak usunąć nieaktualne pliki, jak wykonać kopię zapasową plików zewnętrznych i tak dalej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przegląd programowania po stronie serwera w PostgreSQL

  2. Używanie zmiennego okresu w interwale w Postgres

  3. Funkcje PL/pgSQL:Jak zwrócić normalną tabelę z wieloma kolumnami za pomocą instrukcji execute?

  4. Kolumna zmiany Rails Migration w celu użycia tablic Postgres

  5. Generuj wartości DOMYŚLNE w CTE UPSERT przy użyciu PostgreSQL 9.3