{"id":30666,"date":"2019-10-31T21:36:48","date_gmt":"2019-10-31T18:36:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/byla-la-mongodb-voobshhe-pravilnym-vyborom\/"},"modified":"2019-10-31T21:36:48","modified_gmt":"2019-10-31T18:36:48","slug":"byla-la-mongodb-voobshhe-pravilnym-vyborom","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/byla-la-mongodb-voobshhe-pravilnym-vyborom","title":{"rendered":"Czy MongoDB by\u0142 rzeczywi\u015bcie w\u0142a\u015bciwym wyborem?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Niedawno dowiedzia\u0142em si\u0119, \u017ce <noindex><a rel=\"nofollow\" href=\"https:\/\/www.redhat.com\/en\/blog\/red-hat-satellite-standardize-postgresql-backend\">Red Hat usuwa wsparcie dla MongoDB z Satellite<\/a><\/noindex> (m\u00f3wi\u0105, \u017ce z powodu zmian w licencji). To sprawi\u0142o, \u017ce zacz\u0105\u0142em si\u0119 zastanawia\u0107, dlaczego przez ostatnie kilka lat widzia\u0142em mn\u00f3stwo artyku\u0142\u00f3w o tym, jak straszna jest MongoDB i \u017ce nikt nie powinien jej u\u017cywa\u0107. Ale w tym czasie MongoDB sta\u0142a si\u0119 znacznie bardziej dojrza\u0142ym produktem. Co si\u0119 sta\u0142o? Czy rzeczywi\u015bcie ca\u0142a nienawi\u015b\u0107 jest skutkiem b\u0142\u0119d\u00f3w z pocz\u0105tku marketingu tej nowej bazy danych? A mo\u017ce ludzie po prostu stosuj\u0105 MongoDB tam, gdzie nie powinni?<\/p>\n<p>Je\u015bli wydaje si\u0119 wam, \u017ce broni\u0119 MongoDB, prosz\u0119 przeczytajcie <noindex><a rel=\"nofollow\" href=\"#1\">zrzeczenie si\u0119 odpowiedzialno\u015bci<\/a><\/noindex> na ko\u0144cu artyku\u0142u.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Nowy trend<\/h1>\n<p>\nPracuj\u0119 w przemy\u015ble oprogramowania wi\u0119cej lat, ni\u017c przyzwoicie powiedzie\u0107, ale i tak zdarzy\u0142a mi si\u0119 tylko niewielka cz\u0119\u015b\u0107 trend\u00f3w, kt\u00f3re uderzy\u0142y w nasz\u0105 bran\u017c\u0119. By\u0142em \u015bwiadkiem wzrostu 4GL, AOP, Agile, SOA, Web 2.0, AJAX, blockchainu\u2026 lista jest niesko\u0144czona. Ka\u017cdego roku pojawiaj\u0105 si\u0119 nowe tendencje. Niekt\u00f3re szybko gasn\u0105, a inne zasadniczo zmieniaj\u0105 sposoby tworzenia oprogramowania.<\/p>\n<p>Wok\u00f3\u0142 ka\u017cdego nowego trendu powstaje pewne og\u00f3lne poruszenie: ludzie albo sami wskakuj\u0105 do \u0142odzi, albo widz\u0105 ha\u0142as generowany przez innych \u2014 i id\u0105 za t\u0142umem. Ten proces zosta\u0142 skodyfikowany przez firm\u0119 Gartner w <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Hype_cycle\">cyklu hype'u<\/a><\/noindex>. Cho\u0107 kontrowersyjny, ten wykres mniej wi\u0119cej opisuje, co dzieje si\u0119 z technologiami, zanim ostatecznie stan\u0105 si\u0119 u\u017cyteczne.<\/p>\n<p>Jednak od czasu do czasu pojawia si\u0119 (lub nast\u0119puje drugie przyj\u015bcie, jak to ma miejsce w tym przypadku) nowa innowacja, nap\u0119dzana tylko jedn\u0105 jej konkretn\u0105 realizacj\u0105. W przypadku NoSQL hype by\u0142 silnie zwi\u0105zany z pojawieniem si\u0119 i szybkim wzrostem MongoDB. To nie MongoDB zapocz\u0105tkowa\u0142a ten trend: w rzeczywisto\u015bci w du\u017cych firmach internetowych zacz\u0119\u0142y si\u0119 problemy z przetwarzaniem du\u017cych ilo\u015bci danych, kt\u00f3re doprowadzi\u0142y do powrotu nierelacyjnych baz danych. Og\u00f3lny ruch rozpocz\u0105\u0142 si\u0119 od takich projekt\u00f3w, jak Bigtable od Google i Cassandra od Facebooka, ale to w\u0142a\u015bnie MongoDB sta\u0142a si\u0119 najs\u0142ynniejsz\u0105 i najbardziej dost\u0119pn\u0105 realizacj\u0105 bazy danych NoSQL, do kt\u00f3rej mieli dost\u0119p wi\u0119kszo\u015b\u0107 deweloper\u00f3w.<\/p>\n<p><i>Uwaga: mo\u017cecie pomy\u015ble\u0107, \u017ce mieszam bazy danych dokumentowych z bazami danych kolumnowymi, magazynami klucz\/warto\u015b\u0107 lub jakimkolwiek z licznych innych typ\u00f3w magazyn\u00f3w danych, kt\u00f3re mieszcz\u0105 si\u0119 w og\u00f3lnym definicji NoSQL. I macie racj\u0119. Ale w tym czasie panowa\u0142 chaos. Wszyscy oszaleli na punkcie NoSQL, wszystkim si\u0119 to sta\u0142o <b>absolutnie<\/b> jest konieczne, chocia\u017c wielu nie widzia\u0142o r\u00f3\u017cnic w r\u00f3\u017cnych technologiach. Dla wielu MongoDB sta\u0142a si\u0119 <b>synonimem<\/b> NoSQL.<\/i><\/p>\n<p>I deweloperzy rzucili si\u0119 na ni\u0105. Zasada bazy danych bez schemy, kt\u00f3ra magicznie skalowalnie rozwi\u0105zuje ka\u017cdy problem, by\u0142a do\u015b\u0107 kusz\u0105ca. Oko\u0142o 2014 roku wydawa\u0142o si\u0119, \u017ce wsz\u0119dzie tam, gdzie jeszcze rok temu u\u017cywano relacyjnych baz danych, takich jak MySQL, Postgres czy SQL Server, zacz\u0119to wdra\u017ca\u0107 bazy MongoDB. Na pytanie, dlaczego, mo\u017cna by\u0142o us\u0142ysze\u0107 od bananowego \"to ze wzgl\u0119du na skal\u0119 sieci\" do bardziej przemy\u015blanej odpowiedzi \"moje dane s\u0105 bardzo s\u0142abo ustrukturyzowane i dobrze pasuj\u0105 do bazy danych bez schemy.\"<\/p>\n<p>Wa\u017cne jest, aby pami\u0119ta\u0107, \u017ce MongoDB i bazy danych dokument\u00f3w w og\u00f3le rozwi\u0105zuj\u0105 szereg problem\u00f3w zwi\u0105zanych z tradycyjnymi relacyjnymi bazami danych:<\/p>\n<ul>\n<li><b>\u015acis\u0142a schema<\/b>: w relacyjnej bazie danych, je\u015bli masz dynamicznie formowane dane, jeste\u015b zmuszony albo stworzy\u0107 mn\u00f3stwo przypadkowych \"r\u00f3\u017cnych\" kolumn danych, wcisn\u0105\u0107 tam blob\u00f3w danych albo u\u017cy\u0107 konfiguracji <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Entity%E2%80%93attribute%E2%80%93value_model\">EAV<\/a><\/noindex>\u2026 wszystkie te rozwi\u0105zania maj\u0105 znaczne wady.\n<\/li>\n<li><b>Trudno\u015b\u0107 skalowania<\/b>: gdy danych jest na tyle du\u017co, \u017ce nie mieszcz\u0105 si\u0119 na jednym serwerze, MongoDB oferowa\u0142a mechanizmy umo\u017cliwiaj\u0105ce skalowanie na wielu maszynach.\n<\/li>\n<li><b>Skomplikowane modyfikacje schemy<\/b>: brak migracji! W relacyjnej bazie danych zmiana struktury bazy danych mo\u017ce sta\u0107 si\u0119 ogromnym problemem (szczeg\u00f3lnie gdy danych robi si\u0119 bardzo du\u017co). MongoDB znacz\u0105co upro\u015bci\u0142a ten proces. I uczyni\u0142a go na tyle prostym, \u017ce mo\u017cesz po prostu aktualizowa\u0107 schem\u0119 w locie i bardzo szybko i\u015b\u0107 dalej.\n<\/li>\n<li><b>Wydajno\u015b\u0107 zapisu<\/b>: wydajno\u015b\u0107 MongoDB by\u0142a dobra, szczeg\u00f3lnie przy odpowiedniej konfiguracji. Nawet konfiguracja MongoDB prosto z pude\u0142ka, za kt\u00f3r\u0105 cz\u0119sto j\u0105 krytykowano, wykazywa\u0142a imponuj\u0105ce wyniki wydajno\u015bci.<\/li>\n<\/ul>\n<p><\/p>\n<h1>Wszystkie ryzyka na ciebie<\/h1>\n<p>\nPotencjalne korzy\u015bci z MongoDB by\u0142y ogromne, szczeg\u00f3lnie dla okre\u015blonych klas problem\u00f3w. Je\u015bli przeczytasz powy\u017csz\u0105 list\u0119 bez zrozumienia kontekstu i nie maj\u0105c do\u015bwiadczenia, mo\u017cesz odnie\u015b\u0107 wra\u017cenie, \u017ce MongoDB to naprawd\u0119 rewolucyjna SGBD. Jedynym problemem by\u0142o to, \u017ce wymienione powy\u017cej korzy\u015bci by\u0142y zwi\u0105zane z pewnymi zastrze\u017ceniami, z kt\u00f3rych niekt\u00f3re s\u0105 poni\u017cej.<\/p>\n<p>Dla sprawiedliwo\u015bci, nikt w 10gen\/MongoDB Inc. nie powie, \u017ce to, co nast\u0119puje, jest nieprawd\u0105, to po prostu kompromisy.<\/p>\n<ul>\n<li><b>Utrata transakcji<\/b>: transakcje s\u0105 kluczow\u0105 cech\u0105 wielu relacyjnych baz danych (nie wszystkich, ale wi\u0119kszo\u015bci). Transakcyjno\u015b\u0107 oznacza, \u017ce mo\u017cesz wykonywa\u0107 kilka operacji atomowo i mo\u017cesz zagwarantowa\u0107, \u017ce dane pozostan\u0105 sp\u00f3jne. Oczywi\u015bcie, w bazach danych NoSQL transakcyjno\u015b\u0107 mo\u017ce by\u0107 ograniczona do jednego dokumentu lub mo\u017cesz u\u017cywa\u0107 dwuetapowych zatwierdze\u0144, aby uzyska\u0107 semantyk\u0119 transakcyjn\u0105. Ale b\u0119dziesz musia\u0142 samodzielnie zaimplementowa\u0107 t\u0119 funkcjonalno\u015b\u0107... co mo\u017ce by\u0107 skomplikowanym i czasoch\u0142onnym zadaniem. Cz\u0119sto nie zdajesz sobie sprawy z problem\u00f3w, dop\u00f3ki nie zobaczysz, \u017ce dane w bazie danych trafiaj\u0105 w nieprawid\u0142owe stany, poniewa\u017c nie mo\u017cna zagwarantowa\u0107 atomowo\u015bci operacji. <b>Uwaga: wiele os\u00f3b informowa\u0142o mnie, \u017ce w MongoDB 4.0 wprowadzono transakcje, ale z pewnymi ograniczeniami. Wniosek z artyku\u0142u pozostaje niezmienny: oce\u0144, jak technologia odpowiada Twoim potrzebom.<\/b>\n<\/li>\n<li><b>Utrata integralno\u015bci relacyjnej (klucze obce)<\/b>: je\u015bli w Twoich danych s\u0105 relacje, b\u0119dziesz musia\u0142 je zastosowa\u0107 w aplikacji. Posiadanie bazy danych przestrzegaj\u0105cej tych relacji znacznie zredukuje prac\u0119 w aplikacji i, co za tym idzie, obci\u0105\u017cenie programist\u00f3w.\n<\/li>\n<li><b>Brak mo\u017cliwo\u015bci zastosowania struktury danych<\/b>: \u015bcis\u0142e schemy czasami stanowi\u0105 du\u017cy problem, ale s\u0105 tak\u017ce pot\u0119\u017cnym mechanizmem dobrego strukturalizowania danych, je\u015bli u\u017cywa si\u0119 ich w\u0142a\u015bciwie. Bazy danych dokumentowe, takie jak MongoDB, zapewniaj\u0105 niesamowit\u0105 elastyczno\u015b\u0107 schemy, ale ta elastyczno\u015b\u0107 zdejmuje odpowiedzialno\u015b\u0107 za utrzymanie danych w porz\u0105dku. Je\u015bli nie zadbasz o nie, w ko\u0144cu b\u0119dziesz musia\u0142 napisa\u0107 w aplikacji du\u017co kodu, aby uwzgl\u0119dni\u0107 dane, kt\u00f3re nie s\u0105 przechowywane w oczekiwanej formie. Jak cz\u0119sto m\u00f3wi si\u0119 w naszej firmie Simple Thread\u2026 aplikacj\u0119 pewnego dnia przepisz\u0105, a dane b\u0119d\u0105 \u017cy\u0142y wiecznie. <b>Uwaga: MongoDB obs\u0142uguje walidacj\u0119 schemat\u00f3w: jest przydatna, ale nie zapewnia tych samych gwarancji co relacyjne bazy danych. Przede wszystkim dodanie lub zmiana walidacji schemat\u00f3w nie wp\u0142ywa na istniej\u0105ce dane w kolekcji. Musisz sam upewni\u0107 si\u0119, \u017ce aktualizujesz dane zgodnie z nowym schematem. Sam decydujesz, czy to wystarcza do Twoich potrzeb.<\/b>\n<\/li>\n<li><b>W\u0142asny j\u0119zyk zapyta\u0144 \/ utrata ekosystemu narz\u0119dzi<\/b>: pojawienie si\u0119 SQL stanowi\u0142o absolutn\u0105 rewolucj\u0119, a od tego czasu nic si\u0119 nie zmieni\u0142o. To niezwykle pot\u0119\u017cny j\u0119zyk, ale te\u017c do\u015b\u0107 skomplikowany. Konieczno\u015b\u0107 konstruowania zapyta\u0144 do bazy danych w nowym j\u0119zyku, sk\u0142adaj\u0105cym si\u0119 z fragment\u00f3w JSON, jest postrzegana jako du\u017cy krok w ty\u0142 przez os\u00f3b z do\u015bwiadczeniem w SQL. Istnieje ca\u0142y wszech\u015bwiat narz\u0119dzi, kt\u00f3re wsp\u00f3\u0142dzia\u0142aj\u0105 z bazami danych SQL: od IDE po narz\u0119dzia do raportowania. Przej\u015bcie do bazy danych, kt\u00f3ra nie obs\u0142uguje SQL, oznacza, \u017ce nie mo\u017cesz korzysta\u0107 z wi\u0119kszo\u015bci tych narz\u0119dzi lub musisz przet\u0142umaczy\u0107 dane na SQL, aby ich u\u017cy\u0107, co mo\u017ce okaza\u0107 si\u0119 trudniejsze, ni\u017c my\u015blisz.<\/li>\n<\/ul>\n<p>\nWielu programist\u00f3w, kt\u00f3rzy przeszli na MongoDB, nie do ko\u0144ca rozumia\u0142o kompromisy i cz\u0119sto nurkowali na g\u0142\u0119boko wprowadzaj\u0105c j\u0105 jako g\u0142\u00f3wne przechowywanie danych. Po tym by\u0142o niezwykle trudno wr\u00f3ci\u0107.<\/p>\n<h1>Co mo\u017cna by\u0142o zrobi\u0107 inaczej?<\/h1>\n<p>\nNie wszyscy rzucili si\u0119 na g\u0142\u00f3wk\u0119 i wpadli w dno. Ale wiele projekt\u00f3w zainstalowa\u0142o MongoDB tam, gdzie po prostu nie pasowa\u0142a - i b\u0119d\u0105 musieli z ni\u0105 \u017cy\u0107 przez wiele lat. Gdyby te organizacje po\u015bwi\u0119ci\u0142y troch\u0119 czasu na staranne przemy\u015blenie wyboru technologii, wiele z nich dokona\u0142oby innego wyboru.<\/p>\n<p>Jak wybra\u0107 odpowiedni\u0105 technologi\u0119? By\u0142o kilka pr\u00f3b stworzenia systematycznego frameworku do oceny technologii, takich jak <noindex><a rel=\"nofollow\" href=\"http:\/\/www.wohlin.eu\/spi96.pdf\">\u201eFramework do wdra\u017cania technologii w organizacjach software'owych\u201d<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/pdfs.semanticscholar.org\/4268\/30dd5dd944d3b75ec56b2a3b151c18afbaf9.pdf\">\u201eFramework do oceny technologii programistycznych\u201d<\/a><\/noindex>, ale wydaje mi si\u0119, \u017ce to zbyteczna komplikacja.<\/p>\n<p>Wiele technologii mo\u017cna rozs\u0105dnie oceni\u0107, zadaj\u0105c tylko dwa podstawowe pytania. <b>Problem polega na znalezieniu ludzi, kt\u00f3rzy mog\u0105 odpowiedzialnie na nie odpowiedzie\u0107, po\u015bwi\u0119caj\u0105c czas na szukanie odpowiedzi i bez uprzedze\u0144.<\/b><\/p>\n<blockquote><p>Je\u015bli nie napotykasz \u017cadnego problemu, nie potrzebujesz nowego narz\u0119dzia. Kropka.<\/p><\/blockquote>\n<p><\/p>\n<h1>Pytanie 1: Jakie problemy pr\u00f3buj\u0119 rozwi\u0105za\u0107?<\/h1>\n<p>\nJe\u015bli nie borykasz si\u0119 z \u017cadnym problemem, nie potrzebujesz nowego narz\u0119dzia. Kropka. Nie szukaj rozwi\u0105zania, a potem wymy\u015blaj problem. Je\u015bli nie napotka\u0142e\u015b problemu, kt\u00f3ry nowa technologia rozwi\u0105zuje znacznie lepiej ni\u017c Twoja dotychczasowa technologia, nie ma o czym dyskutowa\u0107. Je\u015bli rozwa\u017casz wykorzystanie tej technologii, poniewa\u017c widzia\u0142e\u015b, jak korzystaj\u0105 z niej inni, pomy\u015bl, z jakimi problemami si\u0119 borykaj\u0105 i spytaj, czy masz podobne trudno\u015bci. \u0141atwo jest przyj\u0105\u0107 technologi\u0119, bo u\u017cywaj\u0105 jej inni, trudno\u015b\u0107 polega na zrozumieniu, czy masz te same problemy.<\/p>\n<h1>Pytanie 2: Czego si\u0119 pozbywam?<\/h1>\n<p>\nTo zdecydowanie trudniejsze pytanie, poniewa\u017c b\u0119dziesz musia\u0142 zag\u0142\u0119bi\u0107 si\u0119 w zrozumienie zar\u00f3wno starej, jak i nowej technologii. Czasami nie mo\u017cesz naprawd\u0119 zrozumie\u0107 nowej, dop\u00f3ki nie stworzysz z jej pomoc\u0105 czego\u015b lub nie zatrudnisz kogo\u015b, kto ma takie do\u015bwiadczenie.<\/p>\n<p>Je\u015bli nie masz ani jednego, ani drugiego, warto pomy\u015ble\u0107 o minimalnych inwestycjach, aby okre\u015bli\u0107 warto\u015b\u0107 tego narz\u0119dzia. A je\u015bli zdecydujesz si\u0119 na inwestycje, jak trudno b\u0119dzie cofn\u0105\u0107 t\u0119 decyzj\u0119?<\/p>\n<h1>Ludzie zawsze wszystko psuj\u0105<\/h1>\n<p>\nStaraj\u0105c si\u0119 odpowiedzie\u0107 na te pytania jak najbardziej bezstronnie, pami\u0119taj o jednej rzeczy: b\u0119dziesz musia\u0142 zmierzy\u0107 si\u0119 z ludzk\u0105 natur\u0105. Istnieje szereg poznawczych zniekszta\u0142ce\u0144, kt\u00f3re trzeba przezwyci\u0119\u017cy\u0107, aby skutecznie oceni\u0107 technologi\u0119. Oto kilka z nich:<\/p>\n<ul>\n<li><b><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bandwagon_effect\">Efekt do\u0142\u0105czenia do wi\u0119kszo\u015bci<\/a><\/noindex><\/b> \u2014 wszyscy o nim wiedz\u0105, ale wci\u0105\u017c trudno z nim walczy\u0107. Upewnij si\u0119, \u017ce technologia naprawd\u0119 odpowiada Twoim rzeczywistym potrzebom.\n<\/li>\n<li><b><noindex><a rel=\"nofollow\" href=\"https:\/\/mindmodeling.org\/cogsci2015\/papers\/0177\/index.html\">Efekt nowo\u015bci<\/a><\/noindex><\/b> \u2014 wielu programist\u00f3w ma tendencj\u0119 do niedoceniania technologii, z kt\u00f3rymi pracowali przez d\u0142ugi czas, i przeceniania korzy\u015bci p\u0142yn\u0105cych z nowej technologii. Nie tylko programi\u015bci, wszyscy s\u0105 podatni na to poznawcze zniekszta\u0142cenie.\n<\/li>\n<li><b><noindex><a rel=\"nofollow\" href=\"https:\/\/pigeon.psy.tufts.edu\/avc\/dittrich\/fepef.htm\">Efekt pozytywnych cech<\/a><\/noindex> \u2014 tendencja do dostrzegania tego, co jest, i ignorowania tego, czego brakuje. To mo\u017ce prowadzi\u0107 do chaosu w po\u0142\u0105czeniu z efektem nowo\u015bci, poniewa\u017c nie tylko zasadniczo przeceniasz now\u0105 technologi\u0119, ale tak\u017ce ignorujesz jej wady.<\/b>.<\/li>\n<\/ul>\n<p>\nObiektywna ocena nie jest \u0142atwa do dokonania, ale zrozumienie podstawowych zniekszta\u0142ce\u0144 poznawczych pomo\u017ce podj\u0105\u0107 bardziej racjonalne decyzje.<\/p>\n<h1>Podsumowanie<\/h1>\n<p>\nGdy pojawia si\u0119 nowa innowacja, nale\u017cy ostro\u017cnie odpowiedzie\u0107 na dwa pytania:<\/p>\n<ul>\n<li>Czy to narz\u0119dzie rozwi\u0105zuje rzeczywisty problem?\n<\/li>\n<li>Czy dobrze rozumiemy kompromisy?<\/li>\n<\/ul>\n<p>\nJe\u015bli nie mo\u017cesz pewnie odpowiedzie\u0107 na te dwa pytania, cofnij si\u0119 na chwil\u0119 i zastan\u00f3w.<\/p>\n<p>Czy MongoDB by\u0142a rzeczywi\u015bcie dobrym wyborem? Oczywi\u015bcie, \u017ce tak; jak w przypadku wi\u0119kszo\u015bci technologii in\u017cynieryjnych, zale\u017cy to od wielu czynnik\u00f3w. W\u015br\u00f3d tych, kt\u00f3rzy odpowiedzieli na te dwa pytania, wielu skorzysta\u0142o z MongoDB i nadal korzysta. Mam nadziej\u0119, \u017ce ci, kt\u00f3rzy tego nie zrobili, zdobyli cenn\u0105 i niezbyt bolesn\u0105 lekcj\u0119 na temat cyklu hype'u.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"1\"><\/a><\/noindex><\/p>\n<h1>Wy\u0142\u0105czenie odpowiedzialno\u015bci<\/h1>\n<p>\nChc\u0119 zaznaczy\u0107, \u017ce nie czuj\u0119 ani mi\u0142o\u015bci, ani nienawi\u015bci do MongoDB. Po prostu nie mieli\u015bmy problem\u00f3w, kt\u00f3re najlepiej rozwi\u0105zywa\u0142aby MongoDB. Wiem, \u017ce 10gen\/MongoDB Inc. pocz\u0105tkowo dzia\u0142a\u0142o bardzo odwa\u017cnie, ustalaj\u0105c niebezpieczne domy\u015blne warto\u015bci i promuj\u0105c MongoDB wsz\u0119dzie (zw\u0142aszcza na hackatonach) jako uniwersalne rozwi\u0105zanie do pracy z danymi. Prawdopodobnie by\u0142a to z\u0142a decyzja. Jednak potwierdza to opisane tutaj podej\u015bcie: problemy te mo\u017cna by\u0142o szybko zidentyfikowa\u0107 nawet przy powierzchownej ocenie technologii.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446180\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e Red Hat \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 MongoDB \u0438\u0437 Satellite (\u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0438\u0437-\u0437\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438). \u042d\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043c\u0435\u043d\u044f \u0437\u0430\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u044f \u0432\u0438\u0434\u0435\u043b \u043a\u0443\u0447\u0443 \u0441\u0442\u0430\u0442\u0435\u0439, \u043a\u0430\u043a \u0443\u0436\u0430\u0441\u043d\u0430 MongoDB \u0438 \u0447\u0442\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f MongoDB \u0441\u0442\u0430\u043b\u0430 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0437\u0440\u0435\u043b\u044b\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u043c. \u0427\u0442\u043e \u0436\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c? \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u0432\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30666","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e Red Hat \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 MongoDB \u0438\u0437 Satellite (\u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0438\u0437-\u0437\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/byla-la-mongodb-voobshhe-pravilnym-vyborom\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u044b\u043b\u0430 \u043b\u0430 MongoDB \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e Red Hat \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 MongoDB \u0438\u0437 Satellite (\u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0438\u0437-\u0437\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/byla-la-mongodb-voobshhe-pravilnym-vyborom\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:36:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:36:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Czy MongoDB by\u0142a rzeczywi\u015bcie dobrym wyborem? | ProHoster","description":"Niedawno dowiedzia\u0142em si\u0119, \u017ce Red Hat usuwa wsparcie dla MongoDB z Satellite (pono\u0107 z powodu).","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/byla-la-mongodb-voobshhe-pravilnym-vyborom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u044b\u043b\u0430 \u043b\u0430 MongoDB \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c? | ProHoster","og:description":"\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e Red Hat \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 MongoDB \u0438\u0437 Satellite (\u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0438\u0437-\u0437\u0430.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/byla-la-mongodb-voobshhe-pravilnym-vyborom","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:36:48+00:00","article:modified_time":"2019-10-31T18:36:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30666","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 02:22:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:31:23","updated":"2026-01-21 02:22:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/30666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=30666"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/30666\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=30666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=30666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=30666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}