Postgresql bez relacji?

0

Czy uzywanie postgresa bez relacji jest dobra praktyka? Cel usuniecia relacji to wydajnosc

0

Jeśli dane będą tylko do odczytu to spoko, w każdym innym wypadku, to raczej będzie szukanie guza.

P.S. Zaraz wpadnie ktoś, żeby Cię upomnieć, że źle użyłeś słowa relacja.

1

Rozumiem, że nie chcesz używać kluczy. Wszystko zależy jakie dane i co z nimi robisz. Coś jest nie tak z twoim schematem, jak klucze powodują problemy wydajnościowe

0

Pytanie czy walidacja przez baze relacji przy insertach nie powoduje spadku wydajnosci? Bo obecnie tak to wyglada ze przy wstawianiu sprawdza czy klucze obce istnieja itd.

2

No tak, ale, jak masz na normalną bazę to masz na kluczu głównym indeks i wyszukiwani jest bardzo szybkie. Bardziej bym patrzył czy tam np nie ma 5 indeksów na tabeli i ich przebudowanie zajmuje dużo czasu.

5

zacznijmy od tego, że relacja to inna nazwa tabeli. Jak chcesz używać jakiejkolwiek bazy relacyjnej bez relacji to "trochę słabo". Co innego, gdybyś chciał używać relacyjnej bazy danych bez kluczy obcych. Ale tutaj trzeba wiedzieć dlaczego tak i mieć świadomość problemów jakie to za sobą pociągnie a z twojego postu wynika, że nie bardzo jesteś świadom tych problemów. Co więcej pierwsze słyszę aby ktoś poprawiał wydajność SZBD przez usuwanie kluczy obcych.

0

Może kierunek: mongoDB ==> horizontal scaling

BTW

0

Ile masz danych w tabelach?
Jak często będą inserty?
Ile masz danych w tabelach slownikowych? Jak często je tam dodajesz?
Skąd pochodzą dane? (Jeśli np. dane dla kluczy wybierane są z combobox w aplikacji windows, to raczej ciężko je "po drodze" zmodyfikować)

0

Obecnie okolo miliona wpisow w kazdej z tabel. Dane podpiete jako klucz obcy ktore by mialy byc bez jawnie deklarowanej relacji sa slownikami oraz kategoriami ktore rzadko sa modyfikowane a przy wstawianiu rekordu relacja jest ustawiana z comoboxa w gui.

5
Jarek Korcek napisał(a):

Dane podpiete jako klucz obcy ktore by mialy byc bez jawnie deklarowanej relacji

Wiesz jak się deklaruje relację w SQL? CREATE TABLE <nazwa_tabeli>.
Jeśli ani razu nie użyjesz tego w swojej bazie, to nie będziesz mógł w niej trzymać żadnych danych. ŻADNYCH.
A zatem, poniekąd osiągniesz swój cel, bo pusta baza na pewno nie generuje problemów wydajnościowych.

Natomiast jeśli masz problemy wydajnościowe w bazie, to wypadałoby przeanalizować, co konkretnie je powoduje, a nie przerzucać pilnowanie integralności referencyjnej na aplikację (zdaje się, że to próbujesz osiągnąć bredząc coś o braku relacji w bazie relacyjnej), bo ani to z wydajnością nie pomoże, a może potencjalnie spowodować katastrofę.

3
Jarek Korcek napisał(a):

Obecnie okolo miliona wpisow w kazdej z tabel. Dane podpiete jako klucz obcy ktore by mialy byc bez jawnie deklarowanej relacji sa slownikami oraz kategoriami ktore rzadko sa modyfikowane a przy wstawianiu rekordu relacja jest ustawiana z comoboxa w gui.

Dalej to nie wiele mówi. "W kazdej tabeli" - ile jest takich tabel powiązanych po kluczach? Milion rekordów, to większość baz by dało radę, chodząc na zegarku od Xiaomi. Coś masz nie tak z tym schematem, albo jest coś, o czym nie wiesz (pierdyliard indeksów, trigger - triggery to zło, może jakiś bulk by trzeba zrobić zamiast pojedynczego dokładania rekordów). Musiałbyś więcej napisać. Co robisz i co działa wolno, bo tak to takie zgadywanie.

3
Jarek Korcek napisał(a):

Czy uzywanie postgresa bez relacji jest dobra praktyka?

Nie jest to dobra praktyka.

Cel usuniecia relacji to wydajnosc

Brzmi podejrzanie. Dlaczego uważasz, że w pierwszej kolejności powinieneś sięgać po ten konkretny środek optymalizacji, a nie masę innych?

1

@Jarek Korcek ten skok wydajności był w którym momencie? Przy wstawianiu czy pobieraniu? Dla ilu transakcji zmierzyliście ten skok wydajności?

1 użytkowników online, w tym zalogowanych: 0, gości: 1