PostgreSQL: Definiowanie klucza podstawowego w dużej bazie danych

Planuję bazę danych do przechowywania wielu tekstów. (posty na blogach, artykuły prasowe itp.) Baza danych musi mieć tytuł, treść (maksymalnie 50 000 znaków), datę, link i pola językowe. Ta sama treść nie może wystąpić na jednym łączu. Stara treść (na przykład starsza niż 30 dni) zostanie usunięta.

Teraz problemem jest klucz podstawowy. Mogłem po prostu ustawić pole automatycznie zwiększające (typ SERIAL) i używać go jako klucza podstawowego. Ale wydaje się głupie i marnuje miejsce na dysku, ponieważ pole nie będzie służyć żadnemu celowi, ale być kluczem podstawowym. (i pole może w końcu się skończyć, czy nie?) I zawsze jest inny problem z wydajnością: zawartość każdego nowego wstawionego wiersza musi być sprawdzona pod kątem duplikatów. Innym rozwiązaniem dla podstawowego klucza, który wymyśliłem, jest obliczenie wartości skrótu sha256 treści + link, a następnie umieszczenie tego w nowej kolumnie „hash” i użycie tego jako klucza podstawowego. Dwa ptaki z jednym kamieniem. Oczywiście problemem z tym są kolizje mieszania. Czy to duże zagrożenie?

Nie mam żadnego doświadczenia z PostgreSQL i bardzo mało doświadczenia z DBMS-ami, więc doceniłbym drugą opinię przed stworzeniem bazy danych o cechach wydajności ślimaka na autostradzie (straszne porównanie).

Pomóż mi tutaj, jeśli masz jakieś doświadczenie z dużymi bazami danych. Czy ustawienie ciągu 64 znaków jako pola klucza podstawowego jest dobrym pomysłem w mojej sytuacji? (ponieważ mam wrażenie, że ogólnie tego uniknąć)

questionAnswers(6)

yourAnswerToTheQuestion