Co daje ustawienie maksymalnej długości stringa w modelu?

0

Poza walidacją (czy ta walidacja następuje z poziomu aplikacji, czy z poziomu bazy danych)? Czy zapytanie będą szybsze, jeśli podam, że maksymalna długość wynosi x?
PS (Czy stringi różniące się długością zajmą tyle samo miejsca w bazie?)

0
Nadziany Samiec napisał(a):

Poza walidacją (czy ta walidacja następuje z poziomu aplikacji, czy z poziomu bazy danych)?

To zależy, czy ustawisz to w modelu widoku czy perzystencji.

Czy zapytanie będą szybsze, jeśli podam, że maksymalna długość wynosi x?

Nie.

PS (Czy stringi różniące się długością zajmą tyle samo miejsca w bazie?)

Zależy do typu danych i konkretnego RDBMS.

0

Skoro zapytania nie będą szybsze, a walidacja jest też w modelach widoków, to po co tę maksymalną długość ustawiać? A w ostatnim pytaniu chodziło mi o SQL Server.

0

po co? dla zabezpieczeń

0

Czyli to tak jak z niemutowalnymi DTO? Niepotrzebne, ale lepiej mieć niż nie mieć?

0

Jeszcze co do tej szybkości zapytań, tu ludzie piszą, że jednak ustawienie maksymalnej dlugosci czyni zapytanie szybszym: https://stackoverflow.com/questions/8512164/is-varcharmax-always-preferable W nowszych MSSQL wersjach już tak nie jest?

1

Po pierwsze, to walidacja w modelach widoków, to zazwyczaj za mało. Po drugie nie ma sensu rezerwować na kolumnę więcej miejsca niż potrzeba.

0

Po to żeby ktoś Ci nie załadował np. plik ISO zakodowany w base64 do pola i tym samym złożył np. serwer (aplikacji lub bazy danych).
Myślisz że takie rzeczy tylko w filmach? Pomyśl dwa razy.

0

Czyli ta walidacja jest przed atakami na serwer przeprowadzanymi nie bezpośrednio poprzez aplikację? Mógłby ktoś się odnieść do linku do SO, który wkleiłem? I jak to jest z tymi stringami o różnych długościach? Zajmują tyle samo miejsca? (SQL Server)

0

Zagadka, proza, o jakiej wybitni wielowarstwowi programiści nie pomyślą ... a jak na UI limitować długość pola edycyjnego.
Pisanie dziesiątek liczb czy pozyskiwanie (np adnotacji) z względnie nie zagłebionego DTO (czy encji w brzydkich projektach).

1
Nadziany Samiec napisał(a):

Jeszcze co do tej szybkości zapytań, tu ludzie piszą, że jednak ustawienie maksymalnej dlugosci czyni zapytanie szybszym: https://stackoverflow.com/questions/8512164/is-varcharmax-always-preferable W nowszych MSSQL wersjach już tak nie jest?

W nowszych wersjach mssql nic się nie zmieniło w tej kwestii, więc jest dokładnie tak jak piszą na SO, ze względu na wydajność lepiej stosować ograniczenie na długość.

0

A w jaki sposób określenie maksymalnej długości wpływa na wydajność? Myślałem, że mssql przechowuje sobie gdzieś ilość bajtów składających się na tekst i na tej podstawie wie, gdzie on się kończy. Może określenie maksymalnej długości wpływa jakoś na sposób alokacji?

1
Nadziany Samiec napisał(a):

A w jaki sposób określenie maksymalnej długości wpływa na wydajność? Myślałem, że mssql przechowuje sobie gdzieś ilość bajtów składających się na tekst i na tej podstawie wie, gdzie on się kończy. Może określenie maksymalnej długości wpływa jakoś na sposób alokacji?

Przechowuje dla pojedynczego wiersza, ale zwykle się pracuje na dużej ilości wierszy. Mając ograniczenie, sql server jest w stanie dokładniej oszacować ile tej pamięci będzie potrzebował dla grupy wierszy, pod względem wydajności najlepszy scenariusz jest w ogóle gdy pozbywamy się "var" i używamy łańcuchów o stałej długości, ale wtedy poświęcamy miejsce.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.