{"id":36634,"date":"2019-10-31T22:12:47","date_gmt":"2019-10-31T19:12:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1\/"},"modified":"2019-10-31T22:12:47","modified_gmt":"2019-10-31T19:12:47","slug":"globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1","title":{"rendered":"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/263791\/\"><img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/83b8e36bff66516e2c331d75d8434e13.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex> Prawdziwe \u201eglobalne\u201d baz danych \u2014 kluczowa bro\u0144 \u2014 s\u0105 znane od dawna, ale do tej pory niewielu potrafi efektywnie z nich korzysta\u0107 lub wr\u0119cz nie ma dost\u0119pu do tej superbroni.<\/p>\n<p>Je\u015bli wykorzystasz globalne w rozwi\u0105zaniach, w kt\u00f3rych faktycznie s\u0105 skuteczne, mo\u017cesz osi\u0105gn\u0105\u0107 znakomite wyniki. Czy to w wydajno\u015bci, czy w uproszczeniu rozwi\u0105zania problemu (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.intersystems.ru\/press\/2013\/gaia-mission-1yr-later.html\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/intersystems.ru\/cache\/technology\/techguide\/cache_tech-guide_01.html\">2<\/a><\/noindex>).<\/p>\n<p>Globalne to specjalny spos\u00f3b przechowywania i przetwarzania danych, zupe\u0142nie r\u00f3\u017cny od tabel w SQL. Pojawi\u0142y si\u0119 w 1966 roku w j\u0119zyku <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/MUMPS\">M(UMPS)<\/a><\/noindex> (ewolucyjna kontynuacja \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.intersystems.com\/our-products\/cache\/tech-guide\/chapter-3\/#cache-objectscript\">Cach\u00e9 ObjectScript<\/a><\/noindex>, dalej COS) w bazach danych medycznych i do tej pory s\u0105 tam <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/VistA\">aktywnie wykorzystywane<\/a><\/noindex>, a tak\u017ce przenikn\u0119\u0142y do niekt\u00f3rych innych dziedzin, gdzie wymagana jest niezawodno\u015b\u0107 i wysoka wydajno\u015b\u0107: finanse, trading itd.<\/p>\n<p>Globalne we wsp\u00f3\u0142czesnych systemach baz danych obs\u0142uguj\u0105 transakcje, rejestrowanie, replikacj\u0119, partycjonowanie. Mo\u017cna na nich budowa\u0107 nowoczesne, niezawodne, rozproszone i szybkie systemy.<\/p>\n<p>Globalne nie ograniczaj\u0105 ci\u0119 do ram modeli relacyjnych. Daj\u0105 swobod\u0119 w rozwijaniu struktur danych dostosowanych do konkretnych zada\u0144. Dla wielu aplikacji rozs\u0105dne wykorzystanie globalnych mo\u017ce by\u0107 prawdziw\u0105 tajn\u0105 broni\u0105, zapewniaj\u0105c wydajno\u015b\u0107, o kt\u00f3rej tw\u00f3rcy aplikacji relacyjnych mog\u0105 tylko marzy\u0107.<\/p>\n<p>Globalne jako spos\u00f3b przechowywania danych mo\u017cna wykorzystywa\u0107 w wielu wsp\u00f3\u0142czesnych j\u0119zykach programowania, zar\u00f3wno wysokopoziomowych, jak i niskopoziomowych. Dlatego w tym artykule skoncentruj\u0119 si\u0119 na globalnych, a nie na j\u0119zyku, z kt\u00f3rego one powsta\u0142y.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>2. Jak dzia\u0142aj\u0105 globalne<\/h2>\n<p>\nZacznijmy od wyja\u015bnienia, jak dzia\u0142aj\u0105 globalne i jakie s\u0105 ich mocne strony. Na globalne mo\u017cna spojrze\u0107 z r\u00f3\u017cnych perspektyw. W tej cz\u0119\u015bci artyku\u0142u b\u0119dziemy je postrzega\u0107 jako drzewa. Lub jako hierarchiczne magazyny danych.<\/p>\n<p>M\u00f3wi\u0105c w uproszczeniu, globalne to trwa\u0142a tablica. Tablica, kt\u00f3ra automatycznie zapisuje si\u0119 na dysku.<br \/>\nTrudno wyobrazi\u0107 sobie co\u015b prostszego do przechowywania danych. W kodzie (w j\u0119zykach COS\/M) r\u00f3\u017cni si\u0119 od zwyk\u0142ej tablicy asocjacyjnej tylko symbolem <b>^<\/b> przed nazw\u0105.<\/p>\n<p>Aby zapisa\u0107 dane w globalnym, nie trzeba uczy\u0107 si\u0119 j\u0119zyka zapyta\u0144 SQL, polecenia do pracy z nimi s\u0105 bardzo proste. Mo\u017cna je opanowa\u0107 w ci\u0105gu godziny. <\/p>\n<p>Zacznijmy od najprostszego przyk\u0142adu. Jednopoziomowe drzewo z 2 ga\u0142\u0119ziami. Przyk\u0142ady zosta\u0142y napisane w COS.<\/p>\n<p><img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/5e1503716eac1eaadf49fcf3651e7fbf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"bash\">Ustaw ^a(\"+7926X\") = \"John Sidorov\"\nUstaw ^a(\"+7916Y\") = \"Sergey Smith\"<\/code><\/pre>\n<p><br clear=\"left\"\/><br \/>\nPodczas wstawiania informacji do globalnego (polecenie Set) automatycznie zachodz\u0105 3 rzeczy:<\/p>\n<ol>\n<li><b>Zapis danych na dysk.<\/b>\n<\/li>\n<li><b>Indeksowanie.<\/b> To, co znajduje si\u0119 w nawiasach, jest kluczem (w literaturze angloj\u0119zycznej \u2014 \u201esubscript\u201d), a po prawej stronie od znaku r\u00f3wno\u015bci \u2014 warto\u015bci\u0105 (\u201enode value\u201d).\n<\/li>\n<li><b>Sortowanie.<\/b> Dane s\u0105 sortowane wed\u0142ug klucza. W dalszej kolejno\u015bci podczas przegl\u0105dania tablicy pierwszym elementem b\u0119dzie \u201eSergey Smith\u201d, a drugim \u201eJohn Sidorov\u201d. Przy pobieraniu listy u\u017cytkownik\u00f3w z globala baza nie traci czasu na sortowanie. Mo\u017cna te\u017c za\u017c\u0105da\u0107 zwr\u00f3cenia posortowanej listy, zaczynaj\u0105c od dowolnego klucza, nawet nieistniej\u0105cego (wyj\u015bcie rozpocznie si\u0119 od pierwszego rzeczywistego klucza, kt\u00f3ry nast\u0119puje po nieistniej\u0105cym).\n<\/li>\n<\/ol>\n<p>\nWszystkie te operacje odbywaj\u0105 si\u0119 niezwykle szybko. Na domowym komputerze osi\u0105ga\u0142em warto\u015bci do 750 000 wstawek\/s w jednym procesie. Na procesorach wielordzeniowych warto\u015bci mog\u0105 osi\u0105gn\u0105\u0107 <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/257501\/\">dziesi\u0105tki milion\u00f3w<\/a><\/noindex> wstawek\/s.<\/p>\n<p>Oczywi\u015bcie sama pr\u0119dko\u015b\u0107 wstawiania niewiele m\u00f3wi. Mo\u017cna na przyk\u0142ad bardzo szybko zapisywa\u0107 informacje do plik\u00f3w tekstowych \u2014 tak <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/post\/176345\/#comment_6220633\">wed\u0142ug plotek<\/a><\/noindex> dzia\u0142a przetwarzanie Visa. Jednak w przypadku globali otrzymujemy zorganizowane, zaindeksowane repozytorium, z kt\u00f3rym mo\u017cna p\u00f3\u017aniej \u0142atwo i szybko pracowa\u0107.<\/p>\n<p><img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/ce447c81cf3a7d570518711c7103dbf0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<ul>\n<li><b>Najsilniejsz\u0105 stron\u0105 globali jest pr\u0119dko\u015b\u0107 wstawiania nowych w\u0119z\u0142\u00f3w.<\/b>\n<\/li>\n<li><b>Dane w globalu s\u0105 zawsze zaindeksowane. Ich przegl\u0105danie odbywa si\u0119 zar\u00f3wno na jednym poziomie, jak i w g\u0142\u0119boko\u015bci drzewa, zawsze szybko.<\/b><\/li>\n<\/ul>\n<p>\nDodajmy do globalu jeszcze kilka ga\u0142\u0119zi drugiego i trzeciego poziomu.<\/p>\n<pre><code class=\"bash\">Ustaw ^a(\"+7926X\", \"city\") = \"Moskwa\"\nUstaw ^a(\"+7926X\", \"city\", \"street\") = \"Plac Req\"\nUstaw ^a(\"+7926X\", \"age\") = 25\nUstaw ^a(\"+7916Y\", \"city\") = \"Londyn\"\nUstaw ^a(\"+7916Y\", \"city\", \"street\") = \"Baker Street\"\nUstaw ^a(\"+7916Y\", \"age\") = 36<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/47244a6d96b589ada53ba9f53b2b3a2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJasne jest, \u017ce na podstawie globali mo\u017cna budowa\u0107 wielopoziomowe drzewa. Dost\u0119p do ka\u017cdego w\u0119z\u0142a jest prawie natychmiastowy dzi\u0119ki automatycznemu indeksowaniu podczas wstawiania. Na ka\u017cdym poziomie drzewa wszystkie ga\u0142\u0119zie s\u0105 posortowane wed\u0142ug klucza.<\/p>\n<p>Jak wida\u0107, informacje mo\u017cna przechowywa\u0107 zar\u00f3wno w kluczu, jak i w warto\u015bci. \u0141\u0105czna d\u0142ugo\u015b\u0107 klucza (suma d\u0142ugo\u015bci wszystkich indeks\u00f3w) mo\u017ce osi\u0105ga\u0107 <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/ens20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GGBL_structure#GGBL_structure_maxsubscrlen\">511 bajt\u00f3w<\/a><\/noindex>, a warto\u015bci <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GORIENT_appx_limits_long_string\">3.6 MB<\/a><\/noindex> dla Cach\u00e9. Liczba poziom\u00f3w w drzewie (liczba wymiar\u00f3w) \u2014 31.<\/p>\n<p>Jeszcze ciekawy moment. Mo\u017cna skonstruowa\u0107 drzewo, nie okre\u015blaj\u0105c warto\u015bci w\u0119z\u0142\u00f3w wy\u017cszych poziom\u00f3w.<\/p>\n<p><img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/f37f81a87a13adb13bbd3583dda06928.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"bash\">Ustaw ^b(\"a\", \"b\", \"c\", \"d\") = 1\nUstaw ^b(\"a\", \"b\", \"c\", \"e\") = 2\nUstaw ^b(\"a\", \"b\", \"f\", \"g\") = 3<\/code><\/pre>\n<p>\nPuste w\u0119z\u0142y to w\u0119z\u0142y, kt\u00f3rym nie przypisano warto\u015bci.<br clear=\"left\"\/><br \/>\nAby lepiej zrozumie\u0107 globalne, por\u00f3wnajmy je z innymi drzewami: z drzewami ogrodowymi i z drzewami nazw system\u00f3w plik\u00f3w.<\/p>\n<p>Por\u00f3wnajmy drzewa w globalnych z najbardziej znanymi nam strukturami hierarchicznymi: z drzewami, kt\u00f3re rosn\u0105 w ogrodach i na polach, oraz z systemami plik\u00f3w.<\/p>\n<p><img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/c6b00c70867c3eb2e2d8233e0fc6b6c6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak widzimy, w drzewach ogrodowych li\u015bcie i owoce znajduj\u0105 si\u0119 tylko na ko\u0144cach ga\u0142\u0119zi.<br \/>\nW systemach plik\u00f3w informacje s\u0105 przechowywane tylko na ko\u0144cach ga\u0142\u0119zi, kt\u00f3re s\u0105 pe\u0142nymi nazwami plik\u00f3w.<\/p>\n<p>A oto struktura danych globalnych.<\/p>\n<p><img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/288a5d964b4bf859944c0a0ecd000bc7.jpg\" style=\"display:block;margin: 0 auto;\" \/>R\u00f3\u017cnice:<\/p>\n<ol>\n<li><b>Wewn\u0119trzne w\u0119z\u0142y:<\/b> informacje w globalnych mog\u0105 by\u0107 przechowywane w ka\u017cdym w\u0119\u017ale, a nie tylko na ko\u0144cach ga\u0142\u0119zi.<\/li>\n<li><b>Zewn\u0119trzne w\u0119z\u0142y:<\/b> globalne musz\u0105 mie\u0107 zdefiniowane warto\u015bci na ko\u0144cach ga\u0142\u0119zi, a w drzewach system\u00f3w plik\u00f3w i drzew ogrodowych - nie.<\/li>\n<\/ol>\n<p><br clear=\"left\"\/><br \/>\nW przypadku niekt\u00f3rych wewn\u0119trznych w\u0119z\u0142\u00f3w mo\u017cna powiedzie\u0107, \u017ce struktura globalnych jest nadzbiorem struktury drzew nazw w systemach plik\u00f3w i drzew ogrodowych. Tzn. bardziej elastyczna.<\/p>\n<p>Og\u00f3lnie rzecz bior\u0105c, globalne reprezentuj\u0105 <b>uporz\u0105dkowane drzewo z mo\u017cliwo\u015bci\u0105 przechowywania danych w ka\u017cdym w\u0119\u017ale<\/b>.<\/p>\n<p>Aby lepiej zrozumie\u0107 dzia\u0142anie globalnych, wyobra\u017amy sobie, co by by\u0142o, gdyby tw\u00f3rcy system\u00f3w plik\u00f3w u\u017cyli do przechowywania informacji podej\u015bcia analogicznego do globalnych?<\/p>\n<ol>\n<li>Przy usuni\u0119ciu jednego pliku w katalogu automatycznie usuni\u0119to by katalog, a tak\u017ce wszystkie katalogi nadrz\u0119dne, kt\u00f3re zawiera\u0142yby tylko jeden w\u0142a\u015bnie usuni\u0119ty katalog.\n<\/li>\n<li>Potrzeba katalog\u00f3w by znikn\u0119\u0142a. Po prostu by\u0142yby pliki z podplikami i pliki bez podplik\u00f3w. Je\u015bli por\u00f3wna\u0107 to z zwyk\u0142ym drzewem, ka\u017cda ga\u0142\u0105\u017a sta\u0142aby si\u0119 owocem.\n<p><img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/8e5e5681c191869da23c32da6e6d8d7b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\n<\/li>\n<li>Takie rzeczy jak pliki README.txt mog\u0142yby znikn\u0105\u0107. Wszystko, co nale\u017ca\u0142o powiedzie\u0107 o zawarto\u015bci katalogu, mo\u017cna by zapisa\u0107 w samym pliku katalogu. W przestrzeni \u015bcie\u017cek nazwa pliku nie r\u00f3\u017cni si\u0119 od nazwy katalogu, dlatego mo\u017cna by obej\u015b\u0107 si\u0119 jednymi plikami.\n<\/li>\n<li>Szybko\u015b\u0107 usuwania katalog\u00f3w z podkatalogami i plikami znacznie by si\u0119 zwi\u0119kszy\u0142a. Wiele razy na Habrze mo\u017cna by\u0142o natkn\u0105\u0107 si\u0119 na artyku\u0142y o tym, jak d\u0142ugo i trudno jest usuwa\u0107 miliony ma\u0142ych plik\u00f3w (<noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/post\/152193\/\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/post\/157613\/\">2<\/a><\/noindex>). Jednak zbudowanie systemu pseudoplik\u00f3w na globalu zajmie sekundy lub ich cz\u0119\u015bci. Gdy testowa\u0142em usuwanie poddrzew na domowym komputerze, w ci\u0105gu 1 sekundy usuwa\u0142em od 96 do 341 milion\u00f3w w\u0119z\u0142\u00f3w z dwupoziomowego drzewa na HDD (nie SSD). Mowa tu o usuwaniu cz\u0119\u015bci drzewa, a nie jedynie ca\u0142ego pliku z globalami.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/7f700eeafb3e552923139024f38c6661.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Usuwanie poddrzew to kolejna mocna strona globali. Do tego nie potrzeba rekurencji.<\/b> Dzieje si\u0119 to niesamowicie szybko.<\/p>\n<p>W naszym drzewie mo\u017cna to zrobi\u0107 poleceniem <b>Kill<\/b>.<\/p>\n<pre><code class=\"bash\">Zabij ^a(\"+7926X\")<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Globalne \u2014 miecze-klamki do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1\" src=\"\/wp-content\/uploads\/2019\/07\/89d5b69c6e80832c6865824782d9754d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAby lepiej zrozumie\u0107, jakie dzia\u0142ania mo\u017cemy podj\u0105\u0107 wobec globali, przedstawiam kr\u00f3tk\u0105 tabel\u0119.<\/p>\n<p>Podstawowe polecenia i funkcje do pracy z globalami w COS<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_cset\">Set<\/a><\/noindex><br \/>\nUstawienie ga\u0142\u0119zi do w\u0119z\u0142a (je\u015bli jeszcze nie s\u0105 okre\u015blone) i warto\u015bci w\u0119z\u0142a<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_cmerge\">Merge<\/a><\/noindex><br \/>\nKopiowanie poddrzewa<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ckill\">Kill<\/a><\/noindex><br \/>\nUsuwanie poddrzewa<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_czkill\">ZKill<\/a><\/noindex><br \/>\nUsuni\u0119cie warto\u015bci konkretnego w\u0119z\u0142a. Poddrzewo wychodz\u0105ce z w\u0119z\u0142a nie jest dotykane<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fquery\">$Query<\/a><\/noindex><br \/>\nPe\u0142ne przeszukiwanie drzewa z wnikaniem w g\u0142\u0105b<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_forder\">$Order<\/a><\/noindex><br \/>\nPrzeszukiwanie ga\u0142\u0119zi konkretnego w\u0119z\u0142a<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fdata\">$Data<\/a><\/noindex><br \/>\nSprawdzenie, czy w\u0119ze\u0142 jest zdefiniowany<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fincrement\">$Increment<\/a><\/noindex><br \/>\nAtomowe inkrementowanie warto\u015bci w\u0119z\u0142a. Aby nie wykonywa\u0107 odczyt\u00f3w i zapis\u00f3w, dla ACID. Ostatnio zaleca si\u0119 zmian\u0119 na <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/263793\/\">$Sequence<\/a><\/noindex><\/p>\n<p>Dzi\u0119kuj\u0119 za uwag\u0119, jeste\u015bmy gotowi odpowiedzie\u0107 na Twoje pytania.<\/p>\n<p><b>Zrzeczenie si\u0119 odpowiedzialno\u015bci<\/b>: <i>Ten artyku\u0142 i moje komentarze do niego s\u0105 moj\u0105 opini\u0105 i nie maj\u0105 zwi\u0105zku z oficjalnym stanowiskiem korporacji InterSystems.<\/i><\/p>\n<p><i><b>Kontynuacja<\/b> <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/264173\/\">Globaly \u2014 miecze-kladenice do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 2<\/a><\/noindex>. Dowiesz si\u0119, jakie typy danych mo\u017cna wy\u015bwietli\u0107 na globalach i w jakich zadaniach przynosz\u0105 one najwi\u0119ksze korzy\u015bci.<\/i><br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/263791\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u043c\u0435\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u044e\u0442 \u044d\u0442\u0438\u043c \u0441\u0443\u043f\u0435\u0440\u043e\u0440\u0443\u0436\u0438\u0435\u043c. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0442\u0435\u0445 \u0437\u0430\u0434\u0430\u0447, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u0434\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u041b\u0438\u0431\u043e \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043b\u0438\u0431\u043e \u0432 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 (1, 2). \u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27434,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36634","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\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\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1\" \/>\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\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1\" \/>\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-31T19:12:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:12:47+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\udd47Globale \u2014 niezwyk\u0142e narz\u0119dzia do przechowywania danych. Drzewa. Cz\u0119\u015b\u0107 1 | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1","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\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1","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-31T19:12:47+00:00","article:modified_time":"2019-10-31T19:12:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36634","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-22 04:13:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:41:52","updated":"2026-01-22 04:13:19","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\/36634","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=36634"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/36634\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/27434"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=36634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=36634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=36634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}