Moje doświadczenie z Postgresem i Mongo po pracy z obydwoma bazami danych w moich projektach.
Postgres (RDBMS)
Postgres jest zalecany, jeśli twoje przyszłe aplikacje mają skomplikowany schemat, który wymaga wielu złączeń lub wszystkie dane mają relacje lub jeśli mamy ciężki zapis. Postgres jest open source, szybszy, zgodny z ACID i zużywa mniej pamięci na dysku, a także zapewnia dobrą wydajność w przypadku pamięci masowej JSON i obejmuje pełną serializowalność transakcji z 3 poziomami izolacji transakcji.
Największą zaletą pozostania z Postgresem jest to, że mamy to, co najlepsze z obu światów. Możemy przechowywać dane w JSONB z ograniczeniami, spójnością i szybkością. Z drugiej strony możemy używać wszystkich funkcji SQL dla innych typów danych. Podstawowy silnik jest bardzo stabilny i dobrze radzi sobie z szerokim zakresem wolumenów danych. Działa również na wybranym sprzęcie i systemie operacyjnym. Postgres zapewniający możliwości NoSQL wraz z pełną obsługą transakcji, przechowujący dokumenty JSON z ograniczeniami na danych pól.
Ogólne ograniczenia dla Postgres
Skalowanie Postgres w poziomie jest znacznie trudniejsze, ale wykonalne.
Szybkich operacji odczytu nie można w pełni osiągnąć za pomocą Postgres.
NO Bazy danych SQL
Mongo DB (Wired Tiger)
MongoDB może pokonać Postgres w wymiarze „skali poziomej”. Przechowywanie JSON jest tym, do czego Mongo jest zoptymalizowane. Mongo przechowuje swoje dane w formacie binarnym o nazwie BSONb, który jest (z grubsza) tylko binarną reprezentacją nadzbioru JSON. MongoDB przechowuje obiekty dokładnie tak, jak zostały zaprojektowane. Według MongoDB, w przypadku aplikacji intensywnie zapisujących, Mongo twierdzi, że nowy silnik (Wired Tiger) zapewnia użytkownikom nawet 10-krotny wzrost wydajności zapisu (powinienem spróbować), z 80-procentowym zmniejszeniem wykorzystania pamięci masowej, pomagając obniżyć koszty pamięci masowej osiągnąć większe wykorzystanie sprzętu.
Ogólne ograniczenia MongoDb
Użycie silnika pamięci masowej bez schematu prowadzi do problemu niejawnych schematów. Te schematy nie są definiowane przez nasz silnik pamięci masowej, ale zamiast tego są definiowane na podstawie zachowania i oczekiwań aplikacji.
Samodzielne technologie NoSQL nie spełniają standardów ACID, ponieważ poświęcają krytyczne zabezpieczenia danych na rzecz wysokiej przepustowości w aplikacjach nieustrukturyzowanych. Zastosowanie ACID w bazach danych NoSQL nie jest trudne, ale spowodowałoby to do pewnego stopnia powolność i brak elastyczności bazy danych. „Większość ograniczeń NoSQL została zoptymalizowana w nowszych wersjach i wydaniach, które w dużym stopniu przezwyciężyły poprzednie ograniczenia”.