Odpowiedź:wydaje się, że tekst jest przestarzały w wielu DBMS, więc lepiej użyj albo blob, albo varchar z wysokim limitem (a z blobem nie będziesz mieć żadnych problemów z kodowaniem, co jest głównym problemem w przypadku varchar i tekstu) .
Również jak wskazano w ten wątek na forach MySQL , dyski twarde są tańsze niż oprogramowanie, więc lepiej najpierw zaprojektuj oprogramowanie i spraw, aby działało, a dopiero wtedy, gdy miejsce stanie się problemem, możesz chcieć zoptymalizować ten aspekt. Więc nie próbuj zbyt wcześnie nadmiernie zoptymalizować rozmiaru swojej kolumny, lepiej najpierw ustaw większy rozmiar (plus to pozwoli uniknąć problemów z bezpieczeństwem).
O różnych komentarzach:Za dużo fanatyzmu SQL tutaj. Pomimo tego, że bardzo lubię SQL i modele relacyjne, mają one również swoje pułapki.
Przechowywanie serializowanych danych w bazie danych bez zmian (np. przechowywanie danych w formacie JSON lub XML) ma kilka zalet:
- Możesz mieć bardziej elastyczny format dla swoich danych:dodawanie i usuwanie pól w locie, zmiana specyfikacji pól w locie itp...
- Mniejsza niezgodność impedancji z modelem obiektowym:przechowujesz i pobierasz dane tak, jak w programie, w porównaniu do pobierania danych, a następnie konieczności ich przetwarzania i konwertowania między strukturami obiektów programu a strukturami relacyjnej bazy danych .
I jest o wiele więcej innych zalet, więc proszę nie fanboyism:relacyjne bazy danych są świetnym narzędziem, ale nie traćmy innych narzędzi, które możemy zdobyć. Więcej narzędzi, tym lepiej.
Jeśli chodzi o konkretny przykład użycia, mam tendencję do dodawania pola JSON do mojej bazy danych, aby przechowywać dodatkowe parametry rekordu, w którym kolumny (właściwości) danych JSON nigdy nie będą wybierane indywidualnie, ale używane tylko wtedy, gdy właściwy rekord jest już wybrany. W takim przypadku nadal mogę odróżnić moje rekordy od kolumn relacyjnych, a po wybraniu właściwego rekordu mogę po prostu użyć dodatkowych parametrów w dowolnym celu.
Tak więc moja rada, aby zachować to, co najlepsze z obu świata (szybkość, możliwość serializacji i elastyczność strukturalna), po prostu użyj kilku standardowych kolumn relacyjnych, które będą służyć jako unikalne klucze do rozróżniania między wierszami, a następnie użyj kolumny typu blob/varchar, w której będą być wstawiony. Zwykle dla unikalnego klucza wymagane są tylko dwie/trzy kolumny, więc nie będzie to duże obciążenie.
Może Cię również zainteresować PostgreSQL, który ma teraz typ danych JSON, oraz projekt PostSQL bezpośrednio przetwarzać pola JSON tak samo jak kolumny relacyjne.