W większości przypadków będzie używać normalized schema ze stołem option_tag
realizującego wiele do wielu relacji między tabelami option
i tag
. implementacja referencyjna tutaj:
To nie może być najszybszym rozwiązaniem pod każdym względem, ale oferuje pełen zakres funkcjonalności DB, w tym integralność referencyjna, ograniczeń, pełnego zakresu typów danych , wszystkie opcje indeksu i tanie aktualizacje.
Dla uzupełnienia należy dodać do swojej listy opcji:
hstore
(dobra opcja)
xml
bardziej gadatliwy i bardziej skomplikowane niż albo hstore
lub jsonb
, więc chciałbym go używać tylko podczas pracy z XML .
- „ciąg wartości oddzielonych przecinkami” (bardzo proste, głównie złe opcji)
- EAV (Entity-Atrybut-Value) lub „par nazwa-wartość” (głównie złe opcja)
Szczegóły pod tym powiązane pytanie na dba.SE:
Jeżeli lista jest tylko do wyświetlania i rzadko aktualizowane, uważam zwykły tablicę, która jest zazwyczaj mniejsze i lepiej wykonuje to niż reszta.
Przeczytaj blog entry by Josh Berkus @a_horse połączony z w swoim komentarzu. Należy jednak pamiętać, że koncentruje się na wybranych przypadkach odczytu. Josh przyznaje:
Zdaję sobie sprawę, że nie testowałem szybkości zapisu porównawczego.
I to jest miejsce, w którym znormalizowane podejście wygrywa duże, zwłaszcza gdy zmienia się pojedyncze znaczniki dużo przy równoczesnym obciążeniu.
jsonb
to tylko dobra opcja, jeśli zamierzasz pracować z JSON i tak możesz przechowywać i odzyskiwać JSON "tak jak jest".
http://www.databasesup.com/2015/01/tag-all-things-part-2.html –
ładny link. Mam swoją odpowiedź: jestem zaskoczony, jak szybki jest JSONB, ale nadal ARRAY wykonuje zwykle lepiej. dzięki. – comte