2017-05-09 25 views
5

Buduję aplikację, w której jej część będzie miała prawie nieuporządkowane i zmieniające się dane, które chciałbym zrzucić jako JSON. Jako podstawowy DB używam PostgreSQL. Nigdy nie używałam typu pola JSON, ale wcześniej korzystałem z MongoDB. Nie potrzebuję niczego szczególnego, w 99% czasu będzie to tylko przechowywanie i pobieranie danych oraz odpytywanie przez niektóre pola JSON i jest to skala, którą może obsłużyć jedna instancja PostgreSQL, nic epickiego.PostgreSQL typu pola JSON kontra MongoDB

Moje pytanie brzmi, czy pole JSON PostgreSQL jest porównywalne z MongoDB? Czy są jakieś ograniczenia lub przeszkody, które powinienem teraz przed wyborem PosgresSQL? Bonus pytanie: Czy istnieje prosty sposób przeglądać i edytować to pole ręcznie JSON jak mogę przy użyciu Studio 3T aplikację dla MongoDB (wiem PostgreSQL DB aplikacje nie są największe z jakiegoś powodu ..)

Odpowiedz

1

? Nie będziesz miał żadnego problemu z używaniem PostgreSQL dla swoich danych json. Przyzwyczajenie się do json i funkcji tablicowych w Postgresie zajmuje trochę czasu, ale są one świetne i zaspokoją większość twoich potrzeb. Obsługa Json w Postgres jest dojrzała i niesamowita.

Staraj się jednak mocno zastanowić przed przechowywaniem danych w polach json. Jest to łatwy sposób, ale może wrócić i ugryźć cię, jeśli twoje dane są w rzeczywistości relacyjne. Dobre, stare, normalne formy są prawdziwe nawet dzisiaj.

Użyłem MongoDB w kilku projektach i wątpię, czy kiedykolwiek go użyję. Myślę, że większość przypadków użycia rzeczywistego świata jest w rzeczywistości relacyjna. Postgres osiągnął idealną równowagę (moim zdaniem) między relacyjnymi a dokumentami z wielkim wsparciem dla jsona.

Jeśli chcesz tylko do przechowywania „blob” od danych JSON można użyć json typ danych. Ale jeśli wiesz, że będziesz musiał manipulować obiektami lub zrywać z nich wartości, powinieneś użyć jsonb. Jsonb sprawdzi także poprawność twoich danych json. Myślę też, że jsonb jest bardziej wydajny w indeksowaniu.

Użycie json typu danych lub tablicy json jako parametru wejściowego w funkcjach Postgres jest fantastyczne imo. Często używam json z mojego serwera API, który musi być podzielony na mniejsze obiekty, gdy dane muszą być przechowywane jako relacyjne. Można to łatwo zrobić w Postgresie. Używam tego czasami w inny sposób, tzn. Funkcja Postgres konsoliduje dane relacyjne i ładnie je ładuje do przyjaznych dla REST obiektów json dla danych wyjściowych. W ten sposób mogę ukryć fakt, że faktycznie przechowuję dane w znormalizowanej bazie danych.