Wpis z mikrobloga

Gdybyscie w dniu dzisiejszym rozpoczynali pisanie systemu CRM dla firmy logistycznej, to na czym oparlibyscie baze danych ?

a) tradycyjnie jakas relacyjna typu MySQL albo Postgresql
b) cos NoSQL'owego, moze MongoDB

Wiadomo, ze do tego typu oprogoramowania to bardziej pasuja relacyjne bazy danych, ale jednak uzywajac jakis NoSQL'ow, mozna obnizyc koszty...
(Chyba, ze cos sie zmienilo)

#programowanie #sql #mongodb #nosql
  • 21
systemu CRM dla firmy logistycznej

b) cos NoSQL'owego, moze MongoDB


@michal_szn: he he he ( ͡° ͜ʖ ͡°)

Pewnie będziesz miał tam miejsce dla jakiegoś Redisa (bo po co Mongo) ale postawiłbym sporo że niczego lepszego od Postgresa nie znajdziesz na podstawową bazę.
@plan_9: Czytałem, czytałem, nie pierwszy raz się na niego natknąłem. I nie zgodzę się:

Po pierwsze: od tamtego czasu Mongo się bardzo rozwinęło (że tylko wspomnę: w 4.0 pojawiła się np. multi-document transactions)

Po drugie: dużo w tym artykule demagogii:

The only thing it’s good at is storing arbitrary pieces of JSON. “Arbitrary,” in this context, means that you don’t care at all what’s inside that JSON. You don’t even look.
@michal_szn: musisz odpowiedzieć sobie na jedno zajebiście ważne pytanie, czy istotne dla tego systemu jest to, czy ma obsługiwać transakcje, czy dane mają tam wpadać bez weryfikacji czy to się udało. Moim zdaniem powinna być taka weryfikacja więc NoSQL odpada.
@macrusher: owszem ma ale wtedy spada wydajność całej bazy więc podstawowa cecha dla której wykorzystywana jest ta baza zostaje niwelowana. Niech mnie ktoś poprawi jeśli się mylę.

In most cases, multi-document transaction incurs a greater performance cost over single document writes, and the availability of multi-document transaction should not be a replacement for effective schema design.
@macrusher bo jeśli chcesz zachować te „super wyniki” z benchmarków przeciwko Postgresowi to te transakcje o kant rzyci (źródło). Dodatkowo OP przejmuje się rzeczą, która zapewne nigdy go nie będzie dotyczyć, a mianowicie - co się stanie jak wyrośnie z RDBMS. No to moja odpowiedź jest taka, że nie wyrośnie, zwłaszcza z Postgresa. Już pomijając fakt, że dokumentowe DB mają bardzo wąskie zastosowania, a jak potrzebujesz, to Postgresa też można
@michal_szn: No i pomijając te wszystkie sugestie jakie dostałeś warto rozważyć jak duży jest to system i ile osób będzie nad nim pracować. Jeśli jest to mały CRM który będziesz programował tylko Ty, chcesz skończyć to szybko i zapomnieć to użyj po prostu MySQL/Postgres, jakiś dobry ORM i framework bez zgłębiania się w szczegóły. Jeśli to CRM na którym będzie pracować do kilkudziesięciu osób to wybór bazy danych nie ma wielkiego
@ciachostko: @Hauleth: Ale ja nic nie wspominam o super wydajności. Prostuję jedynie niepoprawne informacje które są bardzo popularne w internecie jakoby Mongo nie miało transakcji


Ale już trzymając się tego tematu spadku wydajności, używać transakcji można per query, nic nie stoi na przeszkodzie żeby w krytycznych elementach gdzie jest wysoki throughput ich nie robić (bo często w tej sytuacji nie jest to niezbędne, ale wiadomo to zależy od przypadku użycia,
@jaksiepatrzy: bazy NoSQL oczywiście, że nie pozwalają budować relacji, dla tego po polsku nazywa się je "nierelacyjnymi bazami danych". Przy czym przez relację trzeba tutaj rozumieć oryginalne pojęcie pod tym terminem, a nie JOINy, które ludzie teraz traktują jako "relacyjność".