{"id":485,"date":"2026-03-29T16:21:02","date_gmt":"2026-03-29T16:21:02","guid":{"rendered":"https:\/\/nuplo.org\/?page_id=485"},"modified":"2026-04-27T11:28:46","modified_gmt":"2026-04-27T11:28:46","slug":"przechowywanie-danych","status":"publish","type":"page","link":"https:\/\/nuplo.org\/pl\/tworzenie-oprogramowania-w-erze-agentow-ai\/przechowywanie-danych\/","title":{"rendered":"Przechowywanie danych"},"content":{"rendered":"\n<p>Skoro Twoja &#8222;Cyfrowa Ksi\u0105\u017cka Kucharska\u201d ma ju\u017c eleganck\u0105 sal\u0119 restauracyjn\u0105 (Frontend), sprawn\u0105 kuchni\u0119 z agentami AI (Backend) oraz niezawodnego kelnera (API), pora zadba\u0107 o element, bez kt\u00f3rego \u017caden z tych filar\u00f3w nie m\u00f3g\u0142by sprawnie funkcjonowa\u0107: spi\u017carni\u0119. I w tym rozdziale postaram si\u0119 przybli\u017cy\u0107 wam w\u0142a\u015bnie temat baz danych, kt\u00f3re dzia\u0142aj\u0105 jak pewnego rodzaju pojemniki w kt\u00f3rych b\u0119dziemy trzymali dane.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"systemu-przechowywania-danych-nasza-spizarnia-0\">Systemu przechowywania danych (nasza spi\u017carnia)<\/h2>\n\n\n\n<p>Czym s\u0105 bazy danych i dlaczego s\u0105 niezb\u0119dne do tworzenia aplikacji? Mo\u017cna pomy\u015ble\u0107, \u017ce przecie\u017c wszystko wygodnie trzyma\u0107 w plikach na naszym komputerze, jednak je\u015bli w\u0142a\u015bnie tak zdecydowaliby\u015bmy si\u0119 przetrzymywa\u0107 nasze dane zaczynaj\u0105 si\u0119 problemy.<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"plikiworki-z-przepisami-1\">Pliki(Worki z przepisami):<\/h3>\n\n\n\n<p>Przetrzymywanie danych w plikach na naszym komputerze jest najprostszym rozwi\u0105zaniem, jakie mo\u017cemy wybra\u0107, jest to dla nas intuicyjne poniewa\u017c korzystaj\u0105c z komputera nawet mimowolnie nauczyli\u015bmy si\u0119 z nich korzysta\u0107. Jednak czy proste zawsze oznacza dobre? Niekoniecznie, wszystko jest \u015bwietnie je\u015bli mieliby\u015bmy tylko trzy dania kt\u00f3re jedliby\u015bmy non stop. Wtedy przetrzymywanie w plikach jest \u015bwietnym rozwi\u0105zaniem. Jest proste, szybkie i \u0142atwo mo\u017cna znale\u017a\u0107 co tylko chcemy pod warunkiem, \u017ce to jedno z tych trzech da\u0144. Niestety w praktyce prawie nikt nie ogranicza swojego jad\u0142ospisu do trzech takich samych da\u0144 dziennie, dajmy na to je\u015bli tygodniowo chcieliby\u015bmy mie\u0107 trzy r\u00f3\u017cne posi\u0142ki to musieliby\u015bmy przeszuka\u0107 ju\u017c dwadzie\u015bcia jeden plik\u00f3w, a w miesi\u0105cu prawie sto. Teraz sprawa si\u0119 komplikuje i w\u0142a\u015bnie dzi\u0119ki bazom danych taki problem mo\u017cna bardzo \u0142atwo rozwi\u0105za\u0107<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"bazy-danychpodpisane-polki-z-przepisami-2\">Bazy Danych(Podpisane p\u00f3\u0142ki z przepisami):<\/h3>\n\n\n\n<p>Jak wspomniano w powy\u017cszym paragrafie bazy danych s\u0142u\u017c\u0105 do przechowywania r\u00f3\u017cnych informacji kt\u00f3re chcieliby\u015bmy zapisywa\u0107 takich jak przepisy, listy zakup\u00f3w czy nawet zdj\u0119cia naszych pysznych potraw. Co lepsze pozwalaj\u0105 one nie tylko przetrzymywa\u0107 dane ale i znacznie u\u0142atwiaj\u0105 ich przeszukiwanie co eliminuje nasz problem kt\u00f3ry napotkali\u015bmy w przypadku plik\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rola-bazy-danych-w-cyklu-zycia-aplikacji-3\">Rola bazy danych w cyklu \u017cycia aplikacji<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"spizarnia-jako-single-source-of-truth-4\">Spi\u017carnia jako \u201cSingle Source of truth\u201d<\/h3>\n\n\n\n<p>Baza danych stanowi fundamentalny element ka\u017cdej nowoczesnej aplikacji internetowej poniewa\u017c pozwala nam zobaczy\u0107 co faktycznie znajduje si\u0119 np w przepisie kt\u00f3rego szukamy. Pewnie ka\u017cdy z nas zgodnie stwierdzi\u0142by \u017ce dodanie ryby do carbonary nie by\u0142oby najlepszym pomys\u0142em tak samo jak brak cukru gdyby\u015bmy chcieli ukr\u0119ci\u0107 kogel mogel. W\u0142a\u015bnie bazy danych odpowiadaj\u0105 za to \u017ce w naszym przepisie nie pojawi si\u0119 nagle co\u015b co nie powinno si\u0119 tam znale\u017a\u0107 lub \u017ce nie zabraknie czego\u015b co jest niezb\u0119dne, (zak\u0142adaj\u0105c oczywi\u015bcie, \u017ce przepis zosta\u0142 dobrze podany). Patrz\u0105c na to technicznie mamy pewno\u015b\u0107 \u017ce je\u015bli jaki\u015b proces spodziewa si\u0119 otrzymania pewnej danej to pojawi si\u0119 ona tam je\u015bli jest w bazie danych.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"wielka-ksiega-przepisow-5\">Wielka ksi\u0119ga przepis\u00f3w<\/h3>\n\n\n\n<p>Baza danych nie tylko pilnuje \u017ceby co\u015b niepo\u017c\u0105danego nie znalaz\u0142o si\u0119 w z\u0142ym miejscu ale dzi\u0119ki ograniczeniom (constraints) sprawia \u017ce nie mo\u017cemy doda\u0107 czego\u015b co tylko utrudni\u0142oby nam zadanie. Np. przepisu bez krok\u00f3w jak go wykona\u0107 czy bez tytu\u0142u i zdj\u0119cia czym on jest.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jaka-baza-jak-wyposazyc-nasza-kuchnie-6\">Jaka baza? (Jak wyposa\u017cy\u0107 nasz\u0105 kuchni\u0119)<\/h2>\n\n\n\n<p>Jak wcze\u015bniej wspomniano przy opisie zapisu danych do plik\u00f3w nie zawsze wszystko jest takie proste jak si\u0119 wydaje. Dok\u0142adnie tak jest te\u017c tutaj, mimo tego \u017ce baza danych jest niezb\u0119dnym elementem aplikacji to nie ka\u017cda p\u00f3\u0142ka dobrze b\u0119dzie pasowa\u0142a do naszego projektu. Dok\u0142adnie tak jak w cukierni ca\u0142a szafka pieprzu nie by\u0142aby zbyt przydatna a nawet mog\u0142aby wprowadza\u0107 chaos podczas szukania czego\u015b co by si\u0119 nam przyda\u0142o. Tutaj zachodzi taka sama zale\u017cno\u015b\u0107 w teorii mo\u017cemy zastosowa\u0107 ka\u017cd\u0105 baz\u0119 danych ale, nie zawsze b\u0119dzie ona optymalnie dzia\u0142a\u0142a w naszym systemie.<\/p>\n\n\n\n<p>W poni\u017cszej tabeli przedstawiono cechy dw\u00f3ch najpopularniejszych typ\u00f3w baz danych kt\u00f3re za chwil\u0119 poznamy bli\u017cej.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>CECHA<\/strong><\/td><td><strong>BAZA SQL<\/strong><\/td><td><strong>BAZA NOSQL<\/strong><\/td><\/tr><tr><td><strong>RODZAJ<\/strong><\/td><td>Baza relacyjna<\/td><td>Baza nierelacyjna<\/td><\/tr><tr><td><strong>STRUKTURA<\/strong><\/td><td>W bazie SQL dane s\u0105 przechowywane w tabelach o okre\u015blonej liczbie kolumn<\/td><td>Bazy nierelacyjne mog\u0105 mie\u0107 struktur\u0119: dokumentow\u0105, grafow\u0105, klucz &#8211; warto\u015b\u0107<\/td><\/tr><tr><td><strong>RODZAJ STRUKTURY DANYCH<\/strong><\/td><td>Sta\u0142a struktura danych<\/td><td>Zmienna struktura danych<\/td><\/tr><tr><td><strong>SKALOWALNO\u015a\u0106<\/strong><\/td><td>Wertykalna<\/td><td>Horyzontalna<\/td><\/tr><tr><td><strong>ZAPYTANIA<\/strong><\/td><td>Przewa\u017cnie jest to SQL<\/td><td>Spos\u00f3b zapyta\u0144 do bazy danych NoSQL zale\u017cy g\u0142\u00f3wnie od okre\u015blonej bazy danych. Nie ma deklaratywnego j\u0119zyka zapyta\u0144.<\/td><\/tr><tr><td><strong>NAJWA\u017bNIEJSZE CECHY<\/strong><\/td><td>Integralno\u015b\u0107, sp\u00f3jno\u015b\u0107 i stabilno\u015b\u0107 danych<\/td><td>Skalowalno\u015b\u0107, elastyczno\u015b\u0107 i szybkie zapytania<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bazy-danych-sqltwoja-uporzadkowana-ksiega-inwentarzowa-7\">Bazy danych SQL(Twoja uporz\u0105dkowana ksi\u0119ga inwentarzowa)<\/h2>\n\n\n\n<p>W \u015bwiecie baz danych istnieje podzia\u0142 na dwa g\u0142\u00f3wne typy SQL(Structured Query Language) na kt\u00f3rych skupimy si\u0119&nbsp;w tym rozdziale oraz noSQL kt\u00f3re om\u00f3wimy za chwil\u0119.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"relacyjne-bazy-danych-8\">Relacyjne bazy danych<\/h3>\n\n\n\n<p>Relacyjny model danych mo\u017cna sobie wyobrazi\u0107 jak profesjonalny segregator z przepisami gdzie ka\u017cdy wiersz to konkretna karta dania, a kolumny to sta\u0142e rubryki takie jak np. imi\u0119 autora sk\u0142adniki czy czas przygotowania.Tabela jest natomiast przejrzyst\u0105 sekcj\u0105 w Twoim kuchennym segregatorze, w kt\u00f3rej zbierane s\u0105 wiersze i kolumny.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kolumny: <\/strong>W bazie danych skupiaj\u0105 w sobie jeden typ warto\u015bci np. Imi\u0119 autora czy sk\u0142adniki.<\/li>\n\n\n\n<li><strong>Wiersze: <\/strong>Mamy w nich opisane r\u00f3\u017cne cechy jednej opisywanej przez nas rzeczy np. przepisu oznacza to \u017ce w jednym wierszu znajd\u0105 si\u0119 zar\u00f3wno ID przepisu, imi\u0119 autora ale tak\u017ce sk\u0142adniki czy czas gotowania&nbsp;<\/li>\n\n\n\n<li><strong>Tabele: <\/strong>Jest to po\u0142\u0105czenie kolumn i rz\u0119d\u00f3w opisuj\u0105ce jeden typ danych<\/li>\n<\/ul>\n\n\n\n<p>Na potrzeb\u0119 obrazowego przedstawienia przygotowana zosta\u0142a tabela w relacyjnej bazie danych ORACLE. Tabela obejmuje dwa przyk\u0142adowe recordy czyli uporz\u0105dkowane zbiory danych.&nbsp;<\/p>\n\n\n\n<p><strong>W czterech kolumnach kt\u00f3re zawiera nasza przyk\u0142adowa tabela znajduj\u0105 si\u0119 kolejno :<\/strong> ID czyli unikalny numer przepisu w bazie danych, IMI\u0118_AUTORA &#8211; czyli po prostu imi\u0119 osoby dodaj\u0105cej przepis, SK\u0141ADNIKI &#8211; list\u0119 produkt\u00f3w potrzebnych do przygotowania dania, oraz CZAS_PRZYGOTOWANIA &#8211; czyli czas potrzebny na przygotowanie potrawy w minutach.<\/p>\n\n\n\n<p>Zawarto\u015b\u0107 wierszy obejmuje dwa przyk\u0142adowe przepisy kt\u00f3re czytamy od lewej do prawej, czyli przepis o ID 1 przygotowa\u0142a Anna do wykonania jego b\u0119dziemy potrzebowa\u0107 makaronu, pomidor\u00f3w, czosnku i oliwy a samo przygotowanie zajmie nam ok 25 minut.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><\/td><td><strong>ID<\/strong><\/td><td><strong>IMIE_AUTORA<\/strong><\/td><td><strong>SK\u0141ADNIKI<\/strong><\/td><td><strong>CZAS_PRZYGOTOWANIA<\/strong><\/td><\/tr><tr><td><strong>1<\/strong><\/td><td>1<\/td><td>ANNA<\/td><td>makaron, pomidory, czosnek,oliwa<\/td><td>25<\/td><\/tr><tr><td><strong>2<\/strong><\/td><td>2<\/td><td>TOMEK<\/td><td>ciasto do pizzy, pomidory, czosnek, oliwa, salami<\/td><td>25<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Gigantyczna popularno\u015b\u0107 relacyjnych baz danych wynika z kilku czynnik\u00f3w takich jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0141atwe wyszukiwanie informacji (np.znalezienie wszystkich przepis\u00f3w zawieraj\u0105cych pomidory) co mo\u017cemy zrobi\u0107 za pomoc\u0105 zapyta\u0144 SQL (SQL queries).<\/li>\n\n\n\n<li>\u0141\u0105czenie danych z r\u00f3\u017cnych tabel(np. je\u015bli wiemy \u017ce Anna tworzy wspania\u0142e obiady ale jej desery pozostawiaj\u0105 sobie wiele do \u017cyczenia mo\u017cemy w prosty spos\u00f3b filtrowa\u0107 przepisy tak \u017ceby pokazane by\u0142y wy\u0142\u0105cznie dania obiadowe kt\u00f3re przygotowa\u0142a Anna).<\/li>\n\n\n\n<li>Zachowanie sp\u00f3jno\u015bci dzi\u0119ki jasno okre\u015blonym relacjom mi\u0119dzy tabelami (np. je\u015bli autor przepis\u00f3w zmieni nazwisko to automatycznie zostanie ono zaktualizowane w ca\u0142ej bazie danych).<\/li>\n\n\n\n<li>Oraz co bardzo istotne wydajn\u0105 prac\u0119 z du\u017cymi zbiorami danych czyli nawet w przypadku gdyby nasza ksi\u0105\u017cka kucharska liczy\u0142a wiele tysi\u0119cy przepis\u00f3w w prosty spos\u00f3b jeste\u015bmy w stanie znale\u017a\u0107 dok\u0142adnie te kt\u00f3re nas interesuj\u0105.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bazy-danych-nosqlelastyczna-spizarnia-przyszlosci-9\">Bazy danych noSQL(Elastyczna spi\u017carnia przysz\u0142o\u015bci)<\/h2>\n\n\n\n<p>Skoro wiemy ju\u017c czym s\u0105 relacyjne bazy danych typu SQL przyjrzymy si\u0119 drugiemu popularnemu wyborowi czyli bazom danych typu noSQL. O ile relacyjny model danych to profesjonalny segregator zawieraj\u0105cy sztywne formularze, o tyle model noSQL w tym przypadku b\u0119d\u0105cy dokumentow\u0105 baz\u0105 danych mo\u017cna wyobrazi\u0107 sobie jako kreatywny notatnik, w kt\u00f3rym ka\u017cdy przepis jest osobn\u0105 lu\u017an\u0105 notatk\u0105. Pozwala nam to omin\u0105\u0107 odg\u00f3rne narzucenie struktury przepisu co pozwala nam np. w jednym przepisie doda\u0107 tylko list\u0119 krok\u00f3w, tytu\u0142 i sk\u0142adniki a w nast\u0119pnym doda\u0107 te\u017c historie dania kt\u00f3ra opowie nam sk\u0105d pochodzi przepis i jak wpad\u0142 w r\u0119ce osoby kt\u00f3ra zechcia\u0142a si\u0119 nim podzieli\u0107.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kolekcja jest to odpowiednik tabeli w relacyjnej bazie danych. Mo\u017cna traktowa\u0107 j\u0105 w tym przypadku jak \u201cszuflad\u0119\u201d w kt\u00f3rej przechowujemy r\u00f3\u017cnorodne notatki. W jednej szufladzie mo\u017cesz trzyma\u0107 zar\u00f3wno proste przepisy na kanapk\u0119, jak i skomplikowane instrukcje pieczenia tortu z list\u0105 wielu pod-sk\u0142adnik\u00f3w.<\/li>\n\n\n\n<li><strong>Pola(Fields): <\/strong>To poszczeg\u00f3lne informacje zapisane jako pary \u201cklucz-warto\u015b\u0107\u201d, np. \u201cNazwa:Pizza\u201d lub \u201cCzas:30\u201d. Pola te mog\u0105 by\u0107 bardzo zr\u00f3\u017cnicowane i nie musz\u0105 powtarza\u0107 si\u0119 w ka\u017cdej notatce.<\/li>\n\n\n\n<li><strong>Dokumenty(Documents): <\/strong>To pojedyncze karty z przepisami. W przeciwie\u0144stwie do wiersza w tabeli, dokument mo\u017ce zawiera\u0107 w sobie zagnie\u017cd\u017cone listy (np.list\u0119 przypraw) lub mniejsze notatki (np.przepis na sos), co pozwala nam na tworzenie hierarchicznej struktury.<\/li>\n<\/ul>\n\n\n\n<p>Na potrzeby obrazowego przedstawienia przygotowany zosta\u0142 przyk\u0142adowy dokument w dokumentowej bazie danych (MongoDB) zapisany w formacie JSON. Zawieraj\u0105cy dwa recordy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"id\": 1,\n  \"imie_autora\": \"Anna\",\n  \"skladniki\": &#91;\"makaron\", \"pomidory\", \"czosnek\", \"oliwa\"],\n  \"czas_przygotowania\": 25\n}\n{\n  \"id\": 2,\n  \"imie_autora\": \"Tomek\",\n  \"skladniki\": &#91;\"ciasto do pizzy\", \"pomidory\", \"czosnek\", \"oliwa\", \"salami\"],\n  \"czas_przygotowania\": 25,\n  \"dodatkowe_info\": {\n    \"poziom_trudnosci\": \"sredni\",\n    \"ulubione_przez_dzieci\": true\n  }\n}<\/code><\/pre>\n\n\n\n<p>jak wida\u0107 record o id 2 zawiera zupe\u0142nie inn\u0105 struktur\u0119 ni\u017c ten o id 1 co idealnie pokazuje w\u0142a\u015bnie elastyczno\u015b\u0107 baz danych typu noSQL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"caching-podreczna-polka-na-blacie-10\">Caching (Podr\u0119czna p\u00f3\u0142ka na blacie)<\/h2>\n\n\n\n<p>Skoro mamy ju\u017c nasz\u0105 spi\u017carni\u0119 (baz\u0119 danych), pora zada\u0107 sobie pytanie: czy po ka\u017cd\u0105 szczypt\u0119 soli warto biec do piwnicy? Odpowied\u017a oczywi\u015bcie brzmi nie. Do tego w\u0142a\u015bnie s\u0142u\u017cy caching.<\/p>\n\n\n\n<p>Caching polega na przechowywaniu najcz\u0119\u015bciej potrzebnych rzeczy bli\u017cej tych kt\u00f3rzy o nie prosz\u0105, aby drastycznie zwi\u0119kszy\u0107 szybko\u015b\u0107 dost\u0119pu.<\/p>\n\n\n\n<p>Je\u015bli przyjmiemy \u017ce w naszej kuchni baza danych jest spi\u017carni\u0105, to naszym cachem jest p\u00f3\u0142ka na kuchennym blacie. Zamiast co chwil\u0119 biega\u0107 do spi\u017carni po s\u00f3l lub pieprz (co spowalnia gotowanie), k\u0142adziemy je bezpo\u015brednio przed sob\u0105.&nbsp;<\/p>\n\n\n\n<p>Aby Twoja restauracja pracowa\u0142a wydajnie, stosujemy trzy g\u0142\u00f3wne warstwy serwowania &#8222;gotowc\u00f3w\u201d:<\/p>\n\n\n\n<p><strong>Kiesze\u0144 go\u015bcia (Browser Cache):<\/strong> Go\u015b\u0107 trzyma menu i wizyt\u00f3wk\u0119 u siebie, wi\u0119c nie musi o nie pyta\u0107 kelnera przy kolejnej wizycie<\/p>\n\n\n\n<p><strong>Lokalna budka z jedzeniem (CDN):<\/strong> Rozsiane po \u015bwiecie punkty, kt\u00f3re serwuj\u0105 zdj\u0119cia da\u0144 z bliskiej odleg\u0142o\u015bci, by g\u0142odny go\u015b\u0107 nie musia\u0142 czeka\u0107 na sygna\u0142 z Twojej g\u0142\u00f3wnej kuchni<\/p>\n\n\n\n<p><strong>\u015aci\u0105ga na blacie kucharza (In-memory cache\/Redis):<\/strong> Ma\u0142a kartka z najwa\u017cniejszymi instrukcjami, dzi\u0119ki kt\u00f3rej kucharz w milisekund\u0119 odpowiada na popularne pytania bez wertowania &#8222;Wielkiej Ksi\u0119gi Przepis\u00f3w\u201d w piwnicy<\/p>\n\n\n\n<p>Poniewa\u017c miejsce na blacie jest ograniczone, musisz stosowa\u0107 strategie sprz\u0105tania <strong>(cache eviction)<\/strong>:<\/p>\n\n\n\n<p><strong>LRU:<\/strong> Odk\u0142adasz do spi\u017carni to, czego najdawniej nie u\u017cywa\u0142e\u015b.<\/p>\n\n\n\n<p><strong>Random Replacement:<\/strong> &#8222;Szalony kucharz\u201d wyrzuca przypadkowy s\u0142oik, gdy brakuje miejsca.<\/p>\n\n\n\n<p><strong>TTL:<\/strong> Naklejasz na notatk\u0119 &#8222;zegar przydatno\u015bci\u201d, po kt\u00f3rym trafia ona do kosza, by\u015b zawsze pracowa\u0142 na \u015bwie\u017cych danych.<\/p>\n\n\n\n<p>Dzi\u0119ki temu wielowarstwowemu podej\u015bciu Twoja kuchnia mo\u017ce obs\u0142ugiwa\u0107 miliony go\u015bci, zachowuj\u0105c tempo pracy godne gwiazdki Michelin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"podsumowanie-11\">Podsumowanie<\/h2>\n\n\n\n<p>Podsumowuj\u0105c, sprawnie dzia\u0142aj\u0105ca spi\u017carnia (baza danych) jest fundamentem ka\u017cdej profesjonalnej kuchni, zapewniaj\u0105c bezpieczne przechowywanie informacji o produktach, zam\u00f3wieniach i klientach. Dzi\u0119ki wprowadzeniu cachingu, czyli naszej podr\u0119cznej p\u00f3\u0142ki na blacie, sprawili\u015bmy, \u017ce najcz\u0119\u015bciej potrzebne dane s\u0105 zawsze pod r\u0119k\u0105, co pozwala serwowa\u0107 &#8222;kulinarne gotowce\u201d b\u0142yskawicznie i bez zb\u0119dnego biegania do piwnicy.<\/p>\n\n\n\n<p>Jednak nawet najwspanialsza kuchnia z najlepiej zaopatrzon\u0105 spi\u017carni\u0105 nie wyda ani jednego posi\u0142ku, je\u015bli zabraknie pr\u0105du, czy piec przestanie dzia\u0142a\u0107. W kolejnym rozdziale przyjrzymy si\u0119 \u015bwiatu DevOps i to w\u0142a\u015bnie tam dowiemy si\u0119 jak np. automatyzowa\u0107 procesy wydawania potraw oraz jak dba\u0107 o to, by nasza \u201crestauracja\u201d by\u0142a dost\u0119pna dla go\u015bci 24 godziny na dob\u0119, bez wzgl\u0119du na obci\u0105\u017cenie.<\/p>\n\n\n\n<p>W kolejnym rozdziale dowiesz si\u0119, jak zautomatyzowa\u0107 procesy wydawania potraw (CI\/CD), aby kucharze mogli skupi\u0107 si\u0119 na gotowaniu zamiast na r\u0119cznym sprawdzaniu ka\u017cdego talerza. Przyjrzymy si\u0119 te\u017c kontenerom (Docker), kt\u00f3re gwarantuj\u0105, \u017ce Twoje dania b\u0119d\u0105 smakowa\u0107 identycznie w ka\u017cdym zak\u0105tku \u015bwiata. Dodatkowo dowiemy si\u0119 czym jest Git czyli inteligentny dziennik przepis\u00f3w gdzie wielu kucharzy mo\u017ce jednocze\u015bnie pracowa\u0107 nad swoim dzie\u0142em. Oraz Kubernetes czyli niezast\u0105piony kierownik sali kt\u00f3ry w razie awarii natychmiast wymieni wadliwy stolik. Przekonamy si\u0119, \u017ce tworzenie i utrzymanie aplikacji to jedna sp\u00f3jna ca\u0142o\u015b\u0107, za kt\u00f3r\u0105 odpowiada ca\u0142y zesp\u00f3\u0142.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"materialy-12\">Materia\u0142y<\/h2>\n\n\n\n<p>Materia\u0142y do samodzielnej nauki zwi\u0105zane z tym tematem:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.ramotion.com\/blog\/database-in-web-app-development\/\" data-type=\"link\" data-id=\"https:\/\/www.ramotion.com\/blog\/database-in-web-app-development\/\">Czym s\u0105 bazy danych<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.claravine.com\/database-naming-conventions\/\" data-type=\"link\" data-id=\"https:\/\/www.claravine.com\/database-naming-conventions\/\">Nazewnictwo w bazach danych<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/nailyourinterview.org\/interview-resources\/dbms\/database-internals\" data-type=\"link\" data-id=\"https:\/\/nailyourinterview.org\/interview-resources\/dbms\/database-internals\">Jak dane s\u0105 przechowywane w bazie danych<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/system-design\/file-and-database-storage-systems-in-system-design\/\" data-type=\"link\" data-id=\"https:\/\/www.geeksforgeeks.org\/system-design\/file-and-database-storage-systems-in-system-design\/\">Przechowywanie danych w storage vs w bazie danych<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=TV-xsNjbx_g&amp;t=29s\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=TV-xsNjbx_g&amp;t=29s\">Strategie cache\u2019owania REST API<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=Cz3WcZLRaWc&amp;t=422s\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=Cz3WcZLRaWc&amp;t=422s\">Podstawy SQL \u2013 wideo<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=W2Z7fbCLSTw\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=W2Z7fbCLSTw\">Rodzaje baz danych w.1<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=VfcRxtBKI54\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=VfcRxtBKI54\"><\/a><a href=\"https:\/\/www.youtube.com\/watch?v=W2Z7fbCLSTw\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=W2Z7fbCLSTw\">Rodzaje baz danych w.2<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=5RpUmDEsn1k\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=5RpUmDEsn1k\">Projektowanie bazy danych w.<\/a>1<\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=lhMcwx5saZQ\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=lhMcwx5saZQ\">Projektowanie bazy danych w.2<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=3BZz8R7mqu0&amp;t=2s\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=3BZz8R7mqu0&amp;t=2s\">Czym jest schemat bazy danych<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=6FyXURRVmR0\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=6FyXURRVmR0\">Czym jest cachowanie<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=6k6-OeWZTYY&amp;t=283s\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=6k6-OeWZTYY&amp;t=283s\">Wprowadzenie do technologii Elasticsearch<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Skoro Twoja &#8222;Cyfrowa Ksi\u0105\u017cka Kucharska\u201d ma ju\u017c eleganck\u0105 sal\u0119 restauracyjn\u0105 (Frontend), sprawn\u0105 kuchni\u0119 z agentami AI (Backend) oraz niezawodnego kelnera (API), pora zadba\u0107 o element, bez kt\u00f3rego \u017caden z tych filar\u00f3w nie m\u00f3g\u0142by sprawnie funkcjonowa\u0107: spi\u017carni\u0119. I w tym rozdziale postaram si\u0119 przybli\u017cy\u0107 wam w\u0142a\u015bnie temat baz danych, kt\u00f3re dzia\u0142aj\u0105 jak pewnego rodzaju pojemniki w [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":415,"menu_order":7,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-485","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/comments?post=485"}],"version-history":[{"count":14,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/485\/revisions"}],"predecessor-version":[{"id":803,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/485\/revisions\/803"}],"up":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/415"}],"wp:attachment":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/media?parent=485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}