{"id":2593,"date":"2018-09-07T09:00:13","date_gmt":"2018-09-07T07:00:13","guid":{"rendered":"http:\/\/itcraftapps.com\/pl\/?p=2593"},"modified":"2020-03-09T08:08:27","modified_gmt":"2020-03-09T07:08:27","slug":"czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore","status":"publish","type":"post","link":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/","title":{"rendered":"Czego nie zrobi NoSQL, czyli pierwsze do\u015bwiadczenia z Google Cloud Datastore"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"http:\/\/schema.org\",\n      \"@type\": \"Blog\",\n      \"name\": \"itCraftapps.com - Mobile App Development Blog\",\n      \"url\": \"https:\/\/itcraftapps.com\/pl\/blog\"\n    }\n  <\/script>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"http:\/\/schema.org\",\n  \"@type\": \"Article\",\n  \"mainEntityOfPage\": {\n  \"@type\": \"WebPage\",\n  \"@id\": \"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/\"\n  },\n  \"headline\": \"Czego nie zrobi NoSQL, czyli pierwsze do\u015bwiadczenia z Google Cloud Datastore\",\n \n    \"image\": [\n{\n\t\n  \"@type\": \"ImageObject\", \n  \"contentUrl\": \"NOSQL.png\",  \"url\":\"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2018\/09\/NOSQL.png\",\n  \"description\": \"Czego nie zrobi NoSQL, czyli pierwsze do\u015bwiadczenia z Google Cloud Datastore\",\n  \"name\": \"Czego nie zrobi NoSQL, czyli pierwsze do\u015bwiadczenia z Google Cloud Datastore\"\n\n}\n  \n  ],\n  \n  \"datePublished\": \"2018-09-07\",\n  \"dateModified\": \"2020-03-09\",\n  \"author\": {\n  \"@type\": \"Person\",\n  \"name\": \"Jakub Kluczewski\",\n  \"jobTitle\": \"Java Developer\",\n  \"description\": \"Java Developer at itCraft\"\n\n  },\n  \"publisher\": {\n  \"@type\": \"Organization\",\n  \"name\": \"itCraftapps.com\",\n  \"logo\": {\n  \"@type\": \"ImageObject\",\n  \"url\": \"https:\/\/wp-test.itcraft.pl\/wp-content\/uploads\/2019\/04\/placeholder-post.png\"\n  },\n  \"description\": \"itCraftapps.com - Mobile App Development\"\n}}\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\">Spis tre\u015bci<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li><span style=\"text-decoration: underline;\"><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#1\">Wst\u0119p &#8211; Baza NoSQL dla aplikacji<\/a><\/span><\/li><li><span style=\"text-decoration: underline;\"><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#2\">Not Only SQL<\/a><\/span><\/li><li><span style=\"text-decoration: underline;\"><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#3\">Zapomnij o JOINach<\/a><\/span><\/li><li><span style=\"text-decoration: underline;\"><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#4\">Skalowalno\u015b\u0107<\/a><\/span><\/li><li><span style=\"text-decoration: underline;\"><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#5\">Paginacja<\/a><\/span><\/li><li><span style=\"text-decoration: underline;\"><a href=\"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#6\">Podsumowanie<\/a><\/span><\/li><\/ol>\n\n\n\n<br \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1\">Baza NoSQL dla aplikacji &#8211; porady dotycz\u0105ce wykorzystania Google Cloud Datastore<\/h2>\n\n\n\n<p>Kilka lat temu w itCrafcie stan\u0119li\u015bmy przed wyzwaniem ewolucji naszych schemat\u00f3w budowania architektury backendowej w taki spos\u00f3b, aby potrafi\u0142y obs\u0142u\u017cy\u0107 nie tylko klasyczne, \u201ckonserwatywne\u201d systemy klasy enterprise, ale ud\u017awign\u0119\u0142y r\u00f3wnie\u017c <a href=\"https:\/\/itcraftapps.com\/pl\/uslugi\/aplikacje-mobilne\/\">aplikacje mobilne<\/a> o potencjale wielu tysi\u0119cy u\u017cytkownik\u00f3w.<\/p>\n\n\n\n<p>Wyb\u00f3r typu bazy danych, kt\u00f3ra b\u0119dzie dzia\u0142a\u0142a za kulisami systemu jest cz\u0119sto kluczowy i z\u0142a decyzja mo\u017ce zawa\u017cy\u0107 o sukcesie ca\u0142ego projektu. Coraz cz\u0119stsze decyzje o wykorzystaniu nierelacyjnych rozwi\u0105za\u0144 poskutkowa\u0142y wykszta\u0142ceniem si\u0119 podzia\u0142u naszych wewn\u0119trznych specjalizacji i powstaniem ga\u0142\u0119zi NoSQLowej w technologiach Cloudowych.<\/p>\n\n\n\n<p>Wej\u015bcie w t\u0119 architektur\u0119 bywa problematyczne dla programisty przyzwyczajonego do klasycznych, relacyjnych system\u00f3w bazodanowych, dlatego si\u0119gniemy pami\u0119ci\u0105 do pocz\u0105tk\u00f3w i przedstawimy kilka praktycznych porad u\u0142atwiaj\u0105cych pierwsze kroki na przyk\u0142adzie bazy Google Cloud Datastore. Cloud Datastore od Google to wysoce skalowalna baza danych NoSQL dla twoich aplikacji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2\">Not Only SQL<\/h2>\n\n\n\n<p>SQL-owy interfejs zapyta\u0144 do bazy Cloud Datastore jest przydatny i naturalny, bo nie trzeba zna\u0107 jej architektury, \u017ceby pisa\u0107 proste zapytania i widzie\u0107 wyniki kt\u00f3rych si\u0119 spodziewamy.<\/p>\n\n\n\n<p>Bywa to jednak myl\u0105ce, bo pierwsze czytanie dokumentacji i natrafienie na zdanie, \u017ce zapytania piszemy j\u0119zykiem bardzo podobnym do klasycznego SQLa mo\u017ce sprawi\u0107, \u017ce programista za\u0142o\u017cy, \u017ce jego kod niczym si\u0119 nie b\u0119dzie r\u00f3\u017cni\u0142 od dotychczasowych rozwi\u0105za\u0144, a on jedynie skorzysta z dobrodziejstwa znajduj\u0105cego si\u0119 \u201cpod spodem\u201d.<\/p>\n\n\n\n<p>Taki pomys\u0142 niestety sprowadza developera na drog\u0119 bardzo wyboist\u0105, a momentami wr\u0119cz brutaln\u0105.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"3\">Zapomnij o JOINach<\/h2>\n\n\n\n<p>\u201cAplikacja mobilna wy\u015bwietla list\u0119 artyku\u0142\u00f3w, ka\u017cdy jest opatrzony imieniem autora i jego zdj\u0119ciem profilowym.\u201d<\/p>\n\n\n\n<p>W przypadku rozwi\u0105zania relacyjnego programista natychmiast oczami wyobra\u017ani widzi zapytanie do tabeli <em>artyku\u0142y <\/em>u\u017cywaj\u0105c z\u0142\u0105czenia join tabeli <em>autorzy. <\/em>Programista wywo\u0142uj\u0105cy sw\u00f3j pierwszy kod w Cloud Datastore by\u0107 mo\u017ce nawet uruchomi na niej dok\u0142adnie takie, klasyczne zapytanie. Kod nie wykona si\u0119.<\/p>\n\n\n\n<p>Cloud Datastore firmy Google jest baz\u0105 dokumentow\u0105 w kt\u00f3rej encje zapisane s\u0105 w indeksach. Pojedyncze zapytanie sprowadza si\u0119 do przejrzenia odpowiedniego zakresu zbudowanego wcze\u015bniej indeksu encji. Nie ma zatem mo\u017cliwo\u015bci aby ten jeden proces jednocze\u015bnie odwo\u0142a\u0142 si\u0119 do danych r\u00f3\u017cnego typu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4\">Skalowalno\u015b\u0107 przychodzi z ograniczeniami<\/h2>\n\n\n\n<p>Cen\u0105 za masywn\u0105 skalowalno\u015b\u0107 operacji odczytu z bazy jest ograniczenie si\u0119 jedynie do zapyta\u0144, kt\u00f3re skaluj\u0105 si\u0119 wzgl\u0119dem wielko\u015bci zwracanego zbioru. Nie wykonamy na niej wspomnianych z\u0142\u0105cze\u0144, nie zadzia\u0142a kod w kt\u00f3rym filtrujemy nier\u00f3wno\u015bci\u0105 na wi\u0119cej ni\u017c jednym z p\u00f3l, niemo\u017cliwe jest wreszcie filtrowanie z u\u017cyciem podzapyta\u0144.<\/p>\n\n\n\n<p>Co w takim razie otrzymamy zgadzaj\u0105c si\u0119, jak si\u0119 wydaje na pierwszy rzut oka, na tak pot\u0119\u017cne ograniczenia?<\/p>\n\n\n\n<p>Masywna skalowalno\u015b\u0107 zapyta\u0144 oznacza, \u017ce na performance wp\u0142yw ma wielko\u015b\u0107 odpowiedzi a nie ca\u0142kowita ilo\u015b\u0107 danych zapisanych w bazie. Je\u015bli na jednej stronie wy\u015bwietlimy kilkadziesi\u0105t artyku\u0142\u00f3w z naszego przyk\u0142adu, to czas wykonywania zapytania b\u0119dzie taki sam niezale\u017cnie od tego czy w tabeli zapisanych jest kilka tysi\u0119cy, czy kilka milion\u00f3w artyku\u0142\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"5\">Paginacja &#8211; im dalej w las&#8230;<\/h2>\n\n\n\n<p>Typow\u0105 realizacj\u0105 stronicowania zapyta\u0144 jest wykorzystanie z limitu i offsetu. O ile obydwa polecenia s\u0105 wspierane przez Cloud Datastore od Google, o tyle u\u017cycie offsetu w kontek\u015bcie paginacji jest z\u0142ym pomys\u0142em.<\/p>\n\n\n\n<p>Tak zbudowane przegl\u0105danie kolejnych stron wynik\u00f3w b\u0119dzie zwraca\u0142o poprawne wyniki w rozs\u0105dnym czasie, ale szybko oka\u017ce si\u0119, \u017ce wykonywanie kodu zwalnia z ka\u017cd\u0105 kolejn\u0105 stron\u0105. Architektoniczny szczeg\u00f3\u0142 kt\u00f3ry powoduje takie zachowanie bazy wynika z fizycznej struktury u\u0142o\u017cenia w niej danych. \u017b\u0105danie wynik\u00f3w zaczynaj\u0105cych si\u0119 od setnej pozycji przy u\u017cyciu polecenia offset wymusza przejrzenie indeksu od jego pocz\u0105tku, a nie jak mo\u017cna by sobie \u017cyczy\u0107 z pomini\u0119ciem pierwszych stu element\u00f3w.<\/p>\n\n\n\n<p>W przypadku zbior\u00f3w wielko\u015bci tysi\u0119cy czy milion\u00f3w encji konieczno\u015b\u0107 ka\u017cdorazowego odczytywania danych od pocz\u0105tku tabeli wyklucza mo\u017cliwo\u015b\u0107 stworzenia takiej paginacji.<\/p>\n\n\n\n<p>Z pomoc\u0105 przychodzi technologia kursor\u00f3w, czyli wska\u017anik\u00f3w na miejsce w indeksie w kt\u00f3rym zako\u0144czone zosta\u0142o poprzednie zapytanie. Utrudnia to budow\u0119 klasycznej stronicowanej tabeli, pe\u0142nej numer\u00f3w stron, licznik\u00f3w i mo\u017cliwo\u015bci wy\u015bwietlenia od razu dowolnej strony, ale w zupe\u0142no\u015bci wystarcza do wi\u0119kszo\u015bci typowych w procesie <a href=\"https:\/\/itcraftapps.com\/pl\/\" target=\"_blank\" rel=\"noreferrer noopener\">tworzenia aplikacji mobilnych<\/a> list doci\u0105ganych obiekt\u00f3w.<\/p>\n\n\n\n<p><strong>\u2013 &nbsp;\u201cMo\u017cemy u\u017cy\u0107 JPA?<\/strong><\/p>\n\n\n\n<p><strong>\u2013 \u015awietny pomys\u0142!\u201d<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"6\">To nie by\u0142 \u015bwietny pomys\u0142&#8230;<\/h2>\n\n\n\n<p>Jedn\u0105 z pierwszych pokus programisty wkraczaj\u0105cego na nieznane tereny jest zwykle wprowadzenie nieznanych element\u00f3w w znajome, utarte mechanizmy.<\/p>\n\n\n\n<p>Przyk\u0142adem jak bardzo taki pomys\u0142 mo\u017ce poch\u0142on\u0105\u0107 czas i utrudni\u0107 \u017cycie jest pr\u00f3ba wt\u0142oczenia NoSQLowej bazy danych do framework\u00f3w typowo relacyjnych. To, \u017ce jest to mo\u017cliwe i nawet znajdziemy enigmatyczny opis tego procesu w samej dokumentacji produktu nie oznacza niestety, \u017ce po\u015bwi\u0119cone \u015brodki zaowocuj\u0105 jak\u0105\u015b szczeg\u00f3ln\u0105 korzy\u015bci\u0105.<\/p>\n\n\n\n<p>Konfiguracja obwarowana jest najcz\u0119\u015bciej stosem ogranicze\u0144 i zapis\u00f3w m\u00f3wi\u0105cych co nie b\u0119dzie dzia\u0142a\u0142o, lub zadzia\u0142a inaczej ni\u017c si\u0119 spodziewamy. Otrzymany w ten spos\u00f3b \u201cstandard\u201d jest ma\u0142ym potworem, kt\u00f3ry pomimo tego \u017ce na pierwszy rzut oka wygl\u0105da znajomo, przy bli\u017cszym poznaniu pokazuje z\u0119by.<\/p>\n\n\n\n<p>Kilka przyk\u0142ad\u00f3w kt\u00f3re opisa\u0142em nie wyczerpuje tematu r\u00f3\u017cnic pomi\u0119dzy Datastorem w chmurze od Googla a bardziej klasycznym, relacyjnym podej\u015bciem. Tu, podobnie jak w przypadku ka\u017cdej nieznajomej technologii w kt\u00f3r\u0105 wchodzi programista s\u0142owo pisane nie zast\u0105pi napisanego (w\u0142asnor\u0119cznie) kodu, ale znajomo\u015b\u0107 podstawowych zasad obni\u017ca pr\u00f3g wej\u015bcia i przyspiesza nauk\u0119.<\/p>\n\n\n\n<p>Do\u015bwiadczenie ubieg\u0142ych lat pokaza\u0142o nam w itCrafcie, \u017ce pocz\u0105tki poznawania tej ga\u0142\u0119zi backendowych technologii bywaj\u0105 \u017cmudne. Warto zatem uprzedzi\u0107 zdziwienie programisty i zatrzyma\u0107 go przed wywa\u017caniem otwartych drzwi w kontek\u015bcie opisanych porad.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8222;image&#8221;: [ { &#8222;@type&#8221;: &#8222;ImageObject&#8221;, &#8222;contentUrl&#8221;: &#8222;NOSQL.png&#8221;, &#8222;url&#8221;:&#8221;https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2018\/09\/NOSQL.png&#8221;, &#8222;description&#8221;: &#8222;Czego nie zrobi NoSQL, czyli pierwsze do\u015bwiadczenia z Google Cloud Datastore&#8221;, &#8222;name&#8221;: &#8222;Czego nie zrobi NoSQL, czyli pierwsze do\u015bwiadczenia z Google Cloud Datastore&#8221; } ], &#8222;datePublished&#8221;: &#8222;2018-09-07&#8221;, &#8222;dateModified&#8221;: &#8222;2020-03-09&#8221;, &#8222;author&#8221;: { &#8222;@type&#8221;: &#8222;Person&#8221;, &#8222;name&#8221;: &#8222;Jakub Kluczewski&#8221;, &#8222;jobTitle&#8221;: &#8222;Java Developer&#8221;, &#8222;description&#8221;: &#8222;Java Developer at itCraft&#8221; }, &#8222;publisher&#8221;:&hellip;<\/p>\n","protected":false},"author":1,"featured_media":2628,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[5],"tags":[],"class_list":{"0":"post-2593","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-news"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>NoSQL - nierelacyjne bazy danych | Blog ItCraftApps<\/title>\n<meta name=\"description\" content=\"Jak wygl\u0105da praca przy u\u017cyciu Google Cloud Datastore? \u27a4 Dla kogo przeznaczona jest baza danych w chmurze? \u27a4 Wykorzystania technologii w firmie \u27a4 Przeczytaj!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NoSQL - nierelacyjne bazy danych | Blog ItCraftApps\" \/>\n<meta property=\"og:description\" content=\"Jak wygl\u0105da praca przy u\u017cyciu Google Cloud Datastore? \u27a4 Dla kogo przeznaczona jest baza danych w chmurze? \u27a4 Wykorzystania technologii w firmie \u27a4 Przeczytaj!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/\" \/>\n<meta property=\"og:site_name\" content=\"Aplikacje mobilne i webowe dla firm | itCraft\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-07T07:00:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-09T07:08:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2018\/09\/NOSQL.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NoSQL - nierelacyjne bazy danych | Blog ItCraftApps","description":"Jak wygl\u0105da praca przy u\u017cyciu Google Cloud Datastore? \u27a4 Dla kogo przeznaczona jest baza danych w chmurze? \u27a4 Wykorzystania technologii w firmie \u27a4 Przeczytaj!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/","og_locale":"pl_PL","og_type":"article","og_title":"NoSQL - nierelacyjne bazy danych | Blog ItCraftApps","og_description":"Jak wygl\u0105da praca przy u\u017cyciu Google Cloud Datastore? \u27a4 Dla kogo przeznaczona jest baza danych w chmurze? \u27a4 Wykorzystania technologii w firmie \u27a4 Przeczytaj!","og_url":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/","og_site_name":"Aplikacje mobilne i webowe dla firm | itCraft","article_published_time":"2018-09-07T07:00:13+00:00","article_modified_time":"2020-03-09T07:08:27+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2018\/09\/NOSQL.png","type":"image\/png"}],"author":"root","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/","url":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/","name":"NoSQL - nierelacyjne bazy danych | Blog ItCraftApps","isPartOf":{"@id":"https:\/\/itcraftapps.com\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#primaryimage"},"image":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#primaryimage"},"thumbnailUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2018\/09\/NOSQL.png","datePublished":"2018-09-07T07:00:13+00:00","dateModified":"2020-03-09T07:08:27+00:00","author":{"@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/7f005eebbb23587ebb5e67da80d14679"},"description":"Jak wygl\u0105da praca przy u\u017cyciu Google Cloud Datastore? \u27a4 Dla kogo przeznaczona jest baza danych w chmurze? \u27a4 Wykorzystania technologii w firmie \u27a4 Przeczytaj!","breadcrumb":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#primaryimage","url":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2018\/09\/NOSQL.png","contentUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2018\/09\/NOSQL.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/itcraftapps.com\/pl\/blog\/czego-nie-zrobi-nosql-czyli-pierwsze-doswiadczenia-z-google-cloud-datastore\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/itcraftapps.com\/pl\/"},{"@type":"ListItem","position":2,"name":"Czego nie zrobi NoSQL, czyli pierwsze do\u015bwiadczenia z Google Cloud Datastore"}]},{"@type":"WebSite","@id":"https:\/\/itcraftapps.com\/pl\/#website","url":"https:\/\/itcraftapps.com\/pl\/","name":"Aplikacje mobilne i webowe dla firm | itCraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itcraftapps.com\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/7f005eebbb23587ebb5e67da80d14679","name":"root","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/image\/","url":"https:\/\/itcraftapps.com\/pl\/wp-content\/litespeed\/avatar\/5\/c28d2298456f70316440c99aa0dc214f.jpg?ver=1775649220","contentUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/litespeed\/avatar\/5\/c28d2298456f70316440c99aa0dc214f.jpg?ver=1775649220","caption":"root"},"url":"https:\/\/itcraftapps.com\/pl\/blog\/author\/root\/"}]}},"_links":{"self":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts\/2593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/comments?post=2593"}],"version-history":[{"count":0,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts\/2593\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/media\/2628"}],"wp:attachment":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/media?parent=2593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/categories?post=2593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/tags?post=2593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}