{"id":17531,"date":"2024-01-18T10:57:12","date_gmt":"2024-01-18T09:57:12","guid":{"rendered":"https:\/\/vived.io\/?p=17531"},"modified":"2024-01-18T10:57:16","modified_gmt":"2024-01-18T09:57:16","slug":"przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/","title":{"rendered":"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL &#8211; JVM Weekly vol. 161"},"content":{"rendered":"\n<h2 id=\"1-jaka-przyszlosc-czeka-scale\" data-num=1>1. Jaka przysz\u0142o\u015b\u0107 czeka Scale?<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-3-1024x585.png\" alt=\"\" class=\"wp-image-17532\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-3-1024x585.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-3-300x171.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-3-768x439.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-3-1536x878.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-3.png 1792w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Mamy na pok\u0142adzie jakich\u015b fan\u00f3w Scali? Pytam nie bez powodu &#8211; niedawno bowiem pojawi\u0142 si\u0119 ciekawy tekst <a href=\"https:\/\/alexn.org\/blog\/2024\/01\/10\/scala-future\/\">Scala&#8217;s Future<\/a>, w kt\u00f3rym <a href=\"https:\/\/twitter.com\/alexelcu\/\">Alexandru Nedelcu<\/a> pr\u00f3buje oceni\u0107, na ile j\u0119zyk ma przysz\u0142o\u015b\u0107, a tak\u017ce dostarcza przemy\u015blanych refleksji na temat ewolucji i obecnego stanu r\u00f3\u017cnych j\u0119zyk\u00f3w programowania, ze szczeg\u00f3lnym uwzgl\u0119dnieniem w\u0142a\u015bnie Scali.<\/p>\n\n\n\n<p>Autor zaczyna od tematu, kt\u00f3ry jeszcze niedawno wydawa\u0142 si\u0119 jedynie opowie\u015bci\u0105 do straszenia programist\u00f3w przy ognisku, a dzi\u015b coraz cz\u0119\u015bciej zaczyna by\u0107 przywo\u0142ywany jako punkt wyj\u015bcia do refleksji nad dzisiejszym stanem bran\u017cy &#8211; od wspomnienia trudnych czas\u00f3w ba\u0144ki internetowej, szczeg\u00f3lnie w Rumunii z kt\u00f3rej pochodzi. Okazuje si\u0119, \u017ce ju\u017c wtedy pojawi\u0142 si\u0119 du\u017cy czasowy spadek popularno\u015bci Javy w tym okresie, ta jednak okaza\u0142a si\u0119 bardzo odporna na rynkowe fluktuacje.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"853\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-4-1024x853.png\" alt=\"\" class=\"wp-image-17534\" style=\"width:595px;height:auto\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-4-1024x853.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-4-300x250.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-4-768x640.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-4.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Wtedy jeszcze nie wiedzieli, \u017ce to pocz\u0105tek nowej internetowej tradycji.<\/figcaption><\/figure><\/div>\n\n\n<p>Ten historyczny kontekst stanowi t\u0142o do dyskusji na temat p\u0119kni\u0119cia &#8222;ba\u0144ki technologicznej&#8221; w 2023 roku. Cho\u0107 pewnie mo\u017cna to &#8222;p\u0119kni\u0119cie&#8221; potraktowa\u0107 jeszcze z pewnym przymr\u00f3\u017ceniem oka, to ju\u017c dzisiaj charakteryzuje si\u0119 nie tylko znacznymi zwolnieniami w bran\u017cy technologicznej, ale co ciekawe tak\u017ce spadkiem aktywno\u015bci online w wi\u0119kszo\u015bci j\u0119zyk\u00f3w programowania. Autor zauwa\u017ca, jak z\u0142udne mo\u017ce by\u0107 postrzegania popularno\u015bci j\u0119zyk\u00f3w, u\u017cywaj\u0105c Rusta i Kotlina jako przyk\u0142ad\u00f3w &#8211; okazuje si\u0119 bowiem, \u017ce wbrew obiegowej opinii i wizerunku czaj\u0105cych si\u0119 za rogiem drapie\u017cnych tygrys\u00f3w, ich rzeczywisty wzrost popularno\u015bci nieco si\u0119 zatrzyma\u0142. Alexander podkre\u015bla te\u017c znaczenie twardych fakt\u00f3w nad nadmiernym entuzjazmem, a j\u0119zyki maj\u0105 swoj\u0105 nisz\u0119 &#8211; taki cho\u0107by wspomniany ju\u017c Rust to rywal C++ i nie jest bezpo\u015brednim konkurentem dla j\u0119zyk\u00f3w z automatycznym zarz\u0105dzaniem pami\u0119ci\u0105, takimi jak Java i Scali.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"482\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-5.png\" alt=\"\" class=\"wp-image-17537\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-5.png 640w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-5-300x226.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Po prostu o ile &#8222;Safe Code without Memory leaks&#8221; to fajna sprawa, to czasem wygrywaj\u0105 inne argumenty.<\/figcaption><\/figure><\/div>\n\n\n<p>W samej dyskusji na temat Scali, autor podkre\u015bla za\u015b jej siln\u0105 spo\u0142eczno\u015b\u0107 i r\u00f3\u017cnorodne ekosystemy, zwracaj\u0105c uwag\u0119 na bardzo produktywn\u0105 natur\u0119 community pomimo jego stosunkowo mniejszego rozmiaru. Post omawia r\u00f3wnie\u017c podr\u00f3\u017c Pythona i jego d\u0142ug\u0105, trudn\u0105 migracj\u0119 do Pythona 3. Pomimo wielu przeszk\u00f3d i obaw, Python to teraz wed\u0142ug wielu statystyk najpopularniejszy j\u0119zyk \u015bwiata, nie bior\u0105cy je\u0144c\u00f3w w takich obszarach jak cho\u0107by ML. Ten Pythona nie pojawia si\u0119 tam przez przypadek &#8211; Alexander wysnuwa paralele mi\u0119dzy nim, a obecn\u0105 trajektori\u0105 Scali, sugeruj\u0105c, \u017ce cho\u0107 migracja ca\u0142ej spo\u0142eczno\u015bci do Scali 3.0 zajmie czas i z pewno\u015bci\u0105 b\u0119dzie trudna, to jest to dobry kierunek. Dzi\u0119ki temu, \u017ce Scala 3.0 to obiektywnie lepszy j\u0119zyk od wersji 2.0, po bolesnym okresie tranzycji ekosystem b\u0119dzie w znacznie lepszej pozycji do walki o serca programist\u00f3w z ca\u0142ego \u015bwiata.<\/p>\n\n\n\n<p>A jak to wygl\u0105da u Was? Wierzycie w to, \u017ce Scale czeka \u015bwietlana przysz\u0142o\u015b\u0107? A mo\u017ce w\u0142a\u015bnie przepisujecie si\u0119 na Scal\u0119 3.0?<\/p>\n\n\n\n<h2 id=\"2-jak-uber-radzi-sobie-z-setkami-terabajtow-logow\" data-num=2>2. Jak Uber radzi sobie z setkami terabajt\u00f3w log\u00f3w?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-6-1024x585.png\" alt=\"\" class=\"wp-image-17539\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-6-1024x585.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-6-300x171.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-6-768x439.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-6-1536x878.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-6.png 1792w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Tym razem troch\u0119 naci\u0105gn\u0119, ale rzadko mam okazje dzieli\u0107 si\u0119 fajnym case z Ubera. Zawsze lubi\u0142em ich publikacje, bo cz\u0119sto zamiast skupia\u0107 si\u0119 na dosy\u0107 abstrakcyjnych tematach architektonicznych (patrz\u0119 si\u0119 na Was, Netflix) schodz\u0105 na rzeczy bardziej przyziemne, ale dalej b\u0119d\u0105ce kawa\u0142kiem ciekawej in\u017cynierii. Nie inaczej jest w wypadku <a href=\"https:\/\/www.uber.com\/en-PL\/blog\/reducing-logging-cost-by-two-orders-of-magnitude-using-clp\/\">Reducing Logging Cost by Two Orders of Magnitude using CLP<\/a>. Tekst ma ju\u017c ponad rok, ale ostatnimi czasy na nowo wyp\u0142yn\u0105\u0142 w socialkach, a od tego czasu nie zestarza\u0142 si\u0119 ani o jot\u0119.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"756\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-7.png\" alt=\"\" class=\"wp-image-17541\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-7.png 960w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-7-300x236.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-7-768x605.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><figcaption class=\"wp-element-caption\">Potraktujcie to jako przejaw ocieplania wizerunku nekromancji.<\/figcaption><\/figure><\/div>\n\n\n<p>Dlaczego co\u015b takiego trafia do Javowego Newslettera? Artyku\u0142 omawia bowiem, w jaki spos\u00f3b Uber znacz\u0105co obni\u017cy\u0142 koszty logowania poprzez integracj\u0119 narz\u0119dzia <a href=\"https:\/\/github.com\/y-scope\/clp\/\">Compressed Log Processor<\/a> (CLP) z bibliotek\u0105 Log4j w ichniejszej platformie przetwarzania danych. Jak \u0142atwo si\u0119 domy\u015ble\u0107, wraz z rozwojem dzia\u0142alno\u015bci Ubera obj\u0119to\u015b\u0107 logowanych danych dramatycznie wzros\u0142a, prowadz\u0105c do wysokich koszt\u00f3w i konieczno\u015bci szybkiego rotowania log\u00f3w. Integracja CLP umo\u017cliwi\u0142a osi\u0105gni\u0119cie wsp\u00f3\u0142czynnika kompresji na poziomie 169x, znacznie obni\u017caj\u0105c wymagania dotycz\u0105ce przechowywania, pami\u0119ci i przepustowo\u015bci sieci. Ta poprawka pozwoli\u0142a Uberowi na retencje log\u00f3w przez d\u0142u\u017cszy okres, umo\u017cliwiaj\u0105c wgl\u0105d w historyczne dane i efektywniejsze przeszukiwaniu log\u00f3w bez konieczno\u015bci dekompresji.<\/p>\n\n\n\n<p>Tekst pozwala te\u017c przyjrze\u0107 si\u0119 bli\u017cej rozmiarowi samego Ubera &#8211; przed wprowadzeniem poprawki firma generowa\u0142a do 200 TB log\u00f3w (!) w peaku. Z tego wzgl\u0119du standardowe, istniej\u0105ce narz\u0119dzia do zarz\u0105dzania logami, takie jak Elasticsearch i ClickHouse, by\u0142y albo zbyt kosztowne, albo niedopasowane do efektywnego obs\u0142ugiwania skali log\u00f3w Ubera. Z tekstu dowiemy si\u0119, \u017ce przy tej skali okazuje si\u0119, \u017ce nawet takie wydawa\u0142oby si\u0119 pomijalne przez wi\u0119kszo\u015b\u0107 z nas rzeczy, jak zapisywania plik\u00f3w log\u00f3w ma\u0142ymi porcjami w czasie powodowa\u0142a przedwczesne zu\u017cycie SSD.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"378\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-10.png\" alt=\"\" class=\"wp-image-17550\" style=\"width:418px;height:auto\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-10.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-10-238x300.png 238w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption class=\"wp-element-caption\">Powy\u017csze problemy niech u\u015bwiadomi\u0105 wszystkim, \u017ce nie zawsze &#8222;czas developer\u00f3w jest cenniejszy ni\u017c koszt dodatkowych maszyn&#8221; to s\u0142uszna heurystyka.<\/figcaption><\/figure><\/div>\n\n\n<h2 id=\"3-uzycie-wirtualnych-watkow-nie-zawsze-jest-trywialne-kto-by-sie-spodziewal\" data-num=3>3. U\u017cycie Wirtualnych W\u0105tk\u00f3w nie zawsze jest trywialne? Kto by si\u0119 spodziewa\u0142\u2026<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-8-1024x585.png\" alt=\"\" class=\"wp-image-17544\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-8-1024x585.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-8-300x171.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-8-768x439.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-8-1536x878.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-8.png 1792w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>A na koniec mam dla Was ciekawy przyk\u0142ad u\u017cycia Virtual Threads w realnych, nietrywialnych przypadkach. Autorem publikacji <a href=\"https:\/\/blog.ydb.tech\/how-we-switched-to-java-21-virtual-threads-and-got-deadlock-in-tpc-c-for-postgresql-cca2fe08d70b\">How we switched to Java 21 virtual threads and got a deadlock in TPC-C for PostgreSQL<\/a> jest Evgeniy Ivanov, pracuj\u0105cy nad baz\u0105 danych YDB. Jej tw\u00f3rcy pracuj\u0105 aktualnie nad kompatybilno\u015bci\u0105 PostgreSQL z YDB, g\u0142\u00f3wnie ze wzgl\u0119du na du\u017cy popyt ze strony u\u017cytkownik\u00f3w PostgreSQL. Podczas tego procesu pracowali nad implementacj\u0105 benchmark\u00f3w por\u00f3wnawczych, co sprawi\u0142o, \u017ce natkn\u0119li si\u0119 na nieoczekiwane problemy.<\/p>\n\n\n\n<p>Post omawia wyzwania i rozwi\u0105zania napotkane podczas implementacji TPC-C (Transaction Processing Performance Council Benchmark C) dla PostgreSQL przy u\u017cyciu wirtualnych w\u0105tk\u00f3w Java 21. TPC-C to standardowy test wydajno\u015bciowy dla system\u00f3w baz danych, opracowany przez Transaction Processing Performance Council (TPC) i pozwalaj\u0105cy oceni\u0107 wydajno\u015b\u0107 przetwarzania tranzakcji. Jak to z benchmarkami bywa, ich implementacja bywa &#8222;tricky&#8221;, wymagaj\u0105 bowiem cz\u0119sto niestandardowych technik. Tak by\u0142o i w tym przypadku &#8211; pocz\u0105tkowo autorzy napotkali bowiem problem z ograniczeniem wsp\u00f3\u0142bie\u017cno\u015bci z powodu tworzenia zbyt wielu fizycznych w\u0105tk\u00f3w w oryginalnej u\u017cywanej przez nich implementacji TPC-C. Aby temu zaradzi\u0107, postanowili u\u017cy\u0107 wirtualnych w\u0105tk\u00f3w z JDK 21, chc\u0105c bardziej efektywne poradzi\u0107 sobie z du\u017c\u0105 wsp\u00f3\u0142bie\u017cno\u015bci\u0105. Jednak szybko odkryli, \u017ce wirtualne w\u0105tki mog\u0105 prowadzi\u0107 do nieprzewidywalnych zakleszcze\u0144, zw\u0142aszcza gdy wyst\u0119puj\u0105 g\u0142\u0119boko w u\u017cywanych bibliotekach.<\/p>\n\n\n\n<p>Przyk\u0142adowo, autor napotka\u0142 si\u0119 na sytuacj\u0119 zakleszczenia w swojej implementacji TPC-C dla PostgreSQL przy u\u017cyciu <a href=\"https:\/\/github.com\/swaldman\/c3p0\">c3p0<\/a> &#8211; biblioteka do pulowania po\u0142\u0105cze\u0144 JDBC w sytuacji wysokiej wsp\u00f3\u0142bie\u017cno\u015bci, z obs\u0142ug\u0105 buforowania i ponownego wykorzystania <code>PreparedStatements<\/code> do pulowania po\u0142\u0105cze\u0144. Aby rozwi\u0105za\u0107 problem, zacz\u0119li schodzi\u0107 coraz ni\u017cej i odkryli, \u017ce wirtualne w\u0105tki oczekuj\u0105ce na sesj\u0119 blokuj\u0105 ich w\u0105tek no\u015bny. Rozwi\u0105zaniem by\u0142o u\u017cycie <code>java.util.concurrent.Semaphore<\/code> do opakowania po\u0142\u0105czenia, co zapobiega\u0142o blokowaniu wewn\u0105trz c3p0 i umo\u017cliwi\u0142o efektywne u\u017cywanie wirtualnych w\u0105tk\u00f3w. Ten przyk\u0142ad pokazuje z\u0142o\u017cono\u015b\u0107 implementacji wirtualnych w\u0105tk\u00f3w i znaczenie zrozumienia, jak wchodz\u0105 one w interakcje z innymi komponentami w systemie. Okazuje si\u0119, \u017ce problemy mog\u0105 trafi\u0107 z nieoczekiwanych miejsc, a nawet je\u015bli my sami u\u017cyjemy Wirtualnych W\u0105tk\u00f3w w prawid\u0142owy spos\u00f3b, to nigdy nie mo\u017cemy ufa\u0107, \u017ce u\u017cywane przez nas zale\u017cno\u015bci nie sprawi\u0105 nam niespodzianki.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"811\" height=\"196\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-777.png\" alt=\"\" class=\"wp-image-17548\" style=\"width:811px;height:auto\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-777.png 811w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-777-300x73.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-777-768x186.png 768w\" sizes=\"auto, (max-width: 811px) 100vw, 811px\" \/><figcaption class=\"wp-element-caption\">Kwestionuj wszystko, nie ufaj nikomu.<\/figcaption><\/figure><\/div>\n\n\n<p>Artyku\u0142 jest ca\u0142kiem ciekawym \u017ar\u00f3d\u0142em dla rozwa\u017caj\u0105cych przej\u015bcie na wirtualne w\u0105tki, poniewa\u017c dotyka nioczywistych niuans\u00f3w, kt\u00f3re cz\u0119sto gin\u0105 pod wysypem Hello World. Post (a <a href=\"https:\/\/blog.ydb.tech\">tak\u017ce wcze\u015bniejsze publikacje YDB<\/a>) zawiera te\u017c sporo inny ciekawych informacji dla interesuj\u0105cych si\u0119 wsp\u00f3\u0142bie\u017cno\u015bci\u0105 baz danych. Je\u017celi kiedykolwiek interesowa\u0142 Was temat &#8211; bardzo polecam.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-9-1024x768.png\" alt=\"\" class=\"wp-image-17546\" style=\"width:847px;height:auto\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-9-1024x768.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-9-300x225.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-9-768x576.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-9.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">A jeszcze bardziej sugeruje zapozna\u0107 si\u0119 z ksi\u0105\u017ck\u0105 <a href=\"https:\/\/www.amazon.com\/Database-Internals-Deep-Distributed-Systems\/dp\/1492040347\">Database Internals<\/a> &#8211; zaskakuj\u0105co, by\u0142a to chyba moja ulubiona techniczna pozycja, jak\u0105 przeczyta\u0142em w 2023.<\/figcaption><\/figure><\/div>","protected":false},"excerpt":{"rendered":"<p>Po okresie news\u00f3w, og\u0142osze\u0144 i kolejnych releas\u00f3w, my\u015bl\u0119 \u017ce warto si\u0105\u015b\u0107 spokojnie i zatopi\u0107 w ciekawych case study i esejach. A \u017ce w ostatnich tygodniach pojawi\u0142y si\u0119 trzy, to o one w\u0142a\u015bnie wype\u0142ni\u0105 nasz\u0105 dzisiejsz\u0105 edycje.<\/p>\n","protected":false},"author":10,"featured_media":17554,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-17531","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"6","feature_image_blog":false,"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL - JVM Weekly vol. 161 - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL - JVM Weekly vol. 161 - Vived\" \/>\n<meta property=\"og:description\" content=\"Po okresie news\u00f3w, og\u0142osze\u0144 i kolejnych releas\u00f3w, my\u015bl\u0119 \u017ce warto si\u0105\u015b\u0107 spokojnie i zatopi\u0107 w ciekawych case study i esejach. A \u017ce w ostatnich tygodniach pojawi\u0142y si\u0119 trzy, to o one w\u0142a\u015bnie wype\u0142ni\u0105 nasz\u0105 dzisiejsz\u0105 edycje.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-18T09:57:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-18T09:57:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778-1024x576.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL &#8211; JVM Weekly vol. 161\",\"datePublished\":\"2024-01-18T09:57:12+00:00\",\"dateModified\":\"2024-01-18T09:57:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/\"},\"wordCount\":1412,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/\",\"url\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/\",\"name\":\"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL - JVM Weekly vol. 161 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png\",\"datePublished\":\"2024-01-18T09:57:12+00:00\",\"dateModified\":\"2024-01-18T09:57:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL &#8211; JVM Weekly vol. 161\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"caption\":\"Artur Skowro\u0144ski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL - JVM Weekly vol. 161 - Vived","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:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/","og_locale":"pl_PL","og_type":"article","og_title":"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL - JVM Weekly vol. 161 - Vived","og_description":"Po okresie news\u00f3w, og\u0142osze\u0144 i kolejnych releas\u00f3w, my\u015bl\u0119 \u017ce warto si\u0105\u015b\u0107 spokojnie i zatopi\u0107 w ciekawych case study i esejach. A \u017ce w ostatnich tygodniach pojawi\u0142y si\u0119 trzy, to o one w\u0142a\u015bnie wype\u0142ni\u0105 nasz\u0105 dzisiejsz\u0105 edycje.","og_url":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/","og_site_name":"Vived","article_published_time":"2024-01-18T09:57:12+00:00","article_modified_time":"2024-01-18T09:57:16+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778-1024x576.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL &#8211; JVM Weekly vol. 161","datePublished":"2024-01-18T09:57:12+00:00","dateModified":"2024-01-18T09:57:16+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/"},"wordCount":1412,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/","url":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/","name":"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL - JVM Weekly vol. 161 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png","datePublished":"2024-01-18T09:57:12+00:00","dateModified":"2024-01-18T09:57:16+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-778.png","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/przyszlosc-scali-logi-uber-i-wykorzystanie-wirtualnych-watkow-z-postgresql-jvm-weekly-vol-161\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Przysz\u0142o\u015b\u0107 Scali, logi Uber i wykorzystanie wirtualnych w\u0105tk\u00f3w z PostgreSQL &#8211; JVM Weekly vol. 161"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">1. Jaka przysz\u0142o\u015b\u0107 czeka Scale?<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">1. Jaka przysz\u0142o\u015b\u0107 czeka Scale?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":17532,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-3-1024x585.png\" alt=\"\" class=\"wp-image-17532\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-3-1024x585.png\" alt=\"\" class=\"wp-image-17532\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Mamy na pok\u0142adzie jakich\u015b fan\u00f3w Scali? Pytam nie bez powodu - niedawno bowiem pojawi\u0142 si\u0119 ciekawy tekst <a href=\"https:\/\/alexn.org\/blog\/2024\/01\/10\/scala-future\/\">Scala's Future<\/a>, w kt\u00f3rym <a href=\"https:\/\/twitter.com\/alexelcu\/\">Alexandru Nedelcu<\/a> pr\u00f3buje oceni\u0107, na ile j\u0119zyk ma przysz\u0142o\u015b\u0107, a tak\u017ce dostarcza przemy\u015blanych refleksji na temat ewolucji i obecnego stanu r\u00f3\u017cnych j\u0119zyk\u00f3w programowania, ze szczeg\u00f3lnym uwzgl\u0119dnieniem w\u0142a\u015bnie Scali.<\/p>\n","innerContent":["\n<p>Mamy na pok\u0142adzie jakich\u015b fan\u00f3w Scali? Pytam nie bez powodu - niedawno bowiem pojawi\u0142 si\u0119 ciekawy tekst <a href=\"https:\/\/alexn.org\/blog\/2024\/01\/10\/scala-future\/\">Scala's Future<\/a>, w kt\u00f3rym <a href=\"https:\/\/twitter.com\/alexelcu\/\">Alexandru Nedelcu<\/a> pr\u00f3buje oceni\u0107, na ile j\u0119zyk ma przysz\u0142o\u015b\u0107, a tak\u017ce dostarcza przemy\u015blanych refleksji na temat ewolucji i obecnego stanu r\u00f3\u017cnych j\u0119zyk\u00f3w programowania, ze szczeg\u00f3lnym uwzgl\u0119dnieniem w\u0142a\u015bnie Scali.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Autor zaczyna od tematu, kt\u00f3ry jeszcze niedawno wydawa\u0142 si\u0119 jedynie opowie\u015bci\u0105 do straszenia programist\u00f3w przy ognisku, a dzi\u015b coraz cz\u0119\u015bciej zaczyna by\u0107 przywo\u0142ywany jako punkt wyj\u015bcia do refleksji nad dzisiejszym stanem bran\u017cy - od wspomnienia trudnych czas\u00f3w ba\u0144ki internetowej, szczeg\u00f3lnie w Rumunii z kt\u00f3rej pochodzi. Okazuje si\u0119, \u017ce ju\u017c wtedy pojawi\u0142 si\u0119 du\u017cy czasowy spadek popularno\u015bci Javy w tym okresie, ta jednak okaza\u0142a si\u0119 bardzo odporna na rynkowe fluktuacje.<\/p>\n","innerContent":["\n<p>Autor zaczyna od tematu, kt\u00f3ry jeszcze niedawno wydawa\u0142 si\u0119 jedynie opowie\u015bci\u0105 do straszenia programist\u00f3w przy ognisku, a dzi\u015b coraz cz\u0119\u015bciej zaczyna by\u0107 przywo\u0142ywany jako punkt wyj\u015bcia do refleksji nad dzisiejszym stanem bran\u017cy - od wspomnienia trudnych czas\u00f3w ba\u0144ki internetowej, szczeg\u00f3lnie w Rumunii z kt\u00f3rej pochodzi. Okazuje si\u0119, \u017ce ju\u017c wtedy pojawi\u0142 si\u0119 du\u017cy czasowy spadek popularno\u015bci Javy w tym okresie, ta jednak okaza\u0142a si\u0119 bardzo odporna na rynkowe fluktuacje.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":17534,"width":"595px","height":"auto","sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-4-1024x853.png\" alt=\"\" class=\"wp-image-17534\" style=\"width:595px;height:auto\"\/><figcaption class=\"wp-element-caption\">Wtedy jeszcze nie wiedzieli, \u017ce to pocz\u0105tek nowej internetowej tradycji.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-4-1024x853.png\" alt=\"\" class=\"wp-image-17534\" style=\"width:595px;height:auto\"\/><figcaption class=\"wp-element-caption\">Wtedy jeszcze nie wiedzieli, \u017ce to pocz\u0105tek nowej internetowej tradycji.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ten historyczny kontekst stanowi t\u0142o do dyskusji na temat p\u0119kni\u0119cia \"ba\u0144ki technologicznej\" w 2023 roku. Cho\u0107 pewnie mo\u017cna to \"p\u0119kni\u0119cie\" potraktowa\u0107 jeszcze z pewnym przymr\u00f3\u017ceniem oka, to ju\u017c dzisiaj charakteryzuje si\u0119 nie tylko znacznymi zwolnieniami w bran\u017cy technologicznej, ale co ciekawe tak\u017ce spadkiem aktywno\u015bci online w wi\u0119kszo\u015bci j\u0119zyk\u00f3w programowania. Autor zauwa\u017ca, jak z\u0142udne mo\u017ce by\u0107 postrzegania popularno\u015bci j\u0119zyk\u00f3w, u\u017cywaj\u0105c Rusta i Kotlina jako przyk\u0142ad\u00f3w - okazuje si\u0119 bowiem, \u017ce wbrew obiegowej opinii i wizerunku czaj\u0105cych si\u0119 za rogiem drapie\u017cnych tygrys\u00f3w, ich rzeczywisty wzrost popularno\u015bci nieco si\u0119 zatrzyma\u0142. Alexander podkre\u015bla te\u017c znaczenie twardych fakt\u00f3w nad nadmiernym entuzjazmem, a j\u0119zyki maj\u0105 swoj\u0105 nisz\u0119 - taki cho\u0107by wspomniany ju\u017c Rust to rywal C++ i nie jest bezpo\u015brednim konkurentem dla j\u0119zyk\u00f3w z automatycznym zarz\u0105dzaniem pami\u0119ci\u0105, takimi jak Java i Scali.<\/p>\n","innerContent":["\n<p>Ten historyczny kontekst stanowi t\u0142o do dyskusji na temat p\u0119kni\u0119cia \"ba\u0144ki technologicznej\" w 2023 roku. Cho\u0107 pewnie mo\u017cna to \"p\u0119kni\u0119cie\" potraktowa\u0107 jeszcze z pewnym przymr\u00f3\u017ceniem oka, to ju\u017c dzisiaj charakteryzuje si\u0119 nie tylko znacznymi zwolnieniami w bran\u017cy technologicznej, ale co ciekawe tak\u017ce spadkiem aktywno\u015bci online w wi\u0119kszo\u015bci j\u0119zyk\u00f3w programowania. Autor zauwa\u017ca, jak z\u0142udne mo\u017ce by\u0107 postrzegania popularno\u015bci j\u0119zyk\u00f3w, u\u017cywaj\u0105c Rusta i Kotlina jako przyk\u0142ad\u00f3w - okazuje si\u0119 bowiem, \u017ce wbrew obiegowej opinii i wizerunku czaj\u0105cych si\u0119 za rogiem drapie\u017cnych tygrys\u00f3w, ich rzeczywisty wzrost popularno\u015bci nieco si\u0119 zatrzyma\u0142. Alexander podkre\u015bla te\u017c znaczenie twardych fakt\u00f3w nad nadmiernym entuzjazmem, a j\u0119zyki maj\u0105 swoj\u0105 nisz\u0119 - taki cho\u0107by wspomniany ju\u017c Rust to rywal C++ i nie jest bezpo\u015brednim konkurentem dla j\u0119zyk\u00f3w z automatycznym zarz\u0105dzaniem pami\u0119ci\u0105, takimi jak Java i Scali.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":17537,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-5.png\" alt=\"\" class=\"wp-image-17537\"\/><figcaption class=\"wp-element-caption\">Po prostu o ile \"Safe Code without Memory leaks\" to fajna sprawa, to czasem wygrywaj\u0105 inne argumenty.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-5.png\" alt=\"\" class=\"wp-image-17537\"\/><figcaption class=\"wp-element-caption\">Po prostu o ile \"Safe Code without Memory leaks\" to fajna sprawa, to czasem wygrywaj\u0105 inne argumenty.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W samej dyskusji na temat Scali, autor podkre\u015bla za\u015b jej siln\u0105 spo\u0142eczno\u015b\u0107 i r\u00f3\u017cnorodne ekosystemy, zwracaj\u0105c uwag\u0119 na bardzo produktywn\u0105 natur\u0119 community pomimo jego stosunkowo mniejszego rozmiaru. Post omawia r\u00f3wnie\u017c podr\u00f3\u017c Pythona i jego d\u0142ug\u0105, trudn\u0105 migracj\u0119 do Pythona 3. Pomimo wielu przeszk\u00f3d i obaw, Python to teraz wed\u0142ug wielu statystyk najpopularniejszy j\u0119zyk \u015bwiata, nie bior\u0105cy je\u0144c\u00f3w w takich obszarach jak cho\u0107by ML. Ten Pythona nie pojawia si\u0119 tam przez przypadek - Alexander wysnuwa paralele mi\u0119dzy nim, a obecn\u0105 trajektori\u0105 Scali, sugeruj\u0105c, \u017ce cho\u0107 migracja ca\u0142ej spo\u0142eczno\u015bci do Scali 3.0 zajmie czas i z pewno\u015bci\u0105 b\u0119dzie trudna, to jest to dobry kierunek. Dzi\u0119ki temu, \u017ce Scala 3.0 to obiektywnie lepszy j\u0119zyk od wersji 2.0, po bolesnym okresie tranzycji ekosystem b\u0119dzie w znacznie lepszej pozycji do walki o serca programist\u00f3w z ca\u0142ego \u015bwiata.<\/p>\n","innerContent":["\n<p>W samej dyskusji na temat Scali, autor podkre\u015bla za\u015b jej siln\u0105 spo\u0142eczno\u015b\u0107 i r\u00f3\u017cnorodne ekosystemy, zwracaj\u0105c uwag\u0119 na bardzo produktywn\u0105 natur\u0119 community pomimo jego stosunkowo mniejszego rozmiaru. Post omawia r\u00f3wnie\u017c podr\u00f3\u017c Pythona i jego d\u0142ug\u0105, trudn\u0105 migracj\u0119 do Pythona 3. Pomimo wielu przeszk\u00f3d i obaw, Python to teraz wed\u0142ug wielu statystyk najpopularniejszy j\u0119zyk \u015bwiata, nie bior\u0105cy je\u0144c\u00f3w w takich obszarach jak cho\u0107by ML. Ten Pythona nie pojawia si\u0119 tam przez przypadek - Alexander wysnuwa paralele mi\u0119dzy nim, a obecn\u0105 trajektori\u0105 Scali, sugeruj\u0105c, \u017ce cho\u0107 migracja ca\u0142ej spo\u0142eczno\u015bci do Scali 3.0 zajmie czas i z pewno\u015bci\u0105 b\u0119dzie trudna, to jest to dobry kierunek. Dzi\u0119ki temu, \u017ce Scala 3.0 to obiektywnie lepszy j\u0119zyk od wersji 2.0, po bolesnym okresie tranzycji ekosystem b\u0119dzie w znacznie lepszej pozycji do walki o serca programist\u00f3w z ca\u0142ego \u015bwiata.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A jak to wygl\u0105da u Was? Wierzycie w to, \u017ce Scale czeka \u015bwietlana przysz\u0142o\u015b\u0107? A mo\u017ce w\u0142a\u015bnie przepisujecie si\u0119 na Scal\u0119 3.0?<\/p>\n","innerContent":["\n<p>A jak to wygl\u0105da u Was? Wierzycie w to, \u017ce Scale czeka \u015bwietlana przysz\u0142o\u015b\u0107? A mo\u017ce w\u0142a\u015bnie przepisujecie si\u0119 na Scal\u0119 3.0?<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">2. Jak Uber radzi sobie z setkami terabajt\u00f3w log\u00f3w?<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">2. Jak Uber radzi sobie z setkami terabajt\u00f3w log\u00f3w?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":17539,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-6-1024x585.png\" alt=\"\" class=\"wp-image-17539\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-6-1024x585.png\" alt=\"\" class=\"wp-image-17539\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tym razem troch\u0119 naci\u0105gn\u0119, ale rzadko mam okazje dzieli\u0107 si\u0119 fajnym case z Ubera. Zawsze lubi\u0142em ich publikacje, bo cz\u0119sto zamiast skupia\u0107 si\u0119 na dosy\u0107 abstrakcyjnych tematach architektonicznych (patrz\u0119 si\u0119 na Was, Netflix) schodz\u0105 na rzeczy bardziej przyziemne, ale dalej b\u0119d\u0105ce kawa\u0142kiem ciekawej in\u017cynierii. Nie inaczej jest w wypadku <a href=\"https:\/\/www.uber.com\/en-PL\/blog\/reducing-logging-cost-by-two-orders-of-magnitude-using-clp\/\">Reducing Logging Cost by Two Orders of Magnitude using CLP<\/a>. Tekst ma ju\u017c ponad rok, ale ostatnimi czasy na nowo wyp\u0142yn\u0105\u0142 w socialkach, a od tego czasu nie zestarza\u0142 si\u0119 ani o jot\u0119.<\/p>\n","innerContent":["\n<p>Tym razem troch\u0119 naci\u0105gn\u0119, ale rzadko mam okazje dzieli\u0107 si\u0119 fajnym case z Ubera. Zawsze lubi\u0142em ich publikacje, bo cz\u0119sto zamiast skupia\u0107 si\u0119 na dosy\u0107 abstrakcyjnych tematach architektonicznych (patrz\u0119 si\u0119 na Was, Netflix) schodz\u0105 na rzeczy bardziej przyziemne, ale dalej b\u0119d\u0105ce kawa\u0142kiem ciekawej in\u017cynierii. Nie inaczej jest w wypadku <a href=\"https:\/\/www.uber.com\/en-PL\/blog\/reducing-logging-cost-by-two-orders-of-magnitude-using-clp\/\">Reducing Logging Cost by Two Orders of Magnitude using CLP<\/a>. Tekst ma ju\u017c ponad rok, ale ostatnimi czasy na nowo wyp\u0142yn\u0105\u0142 w socialkach, a od tego czasu nie zestarza\u0142 si\u0119 ani o jot\u0119.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":17541,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-7.png\" alt=\"\" class=\"wp-image-17541\"\/><figcaption class=\"wp-element-caption\">Potraktujcie to jako przejaw ocieplania wizerunku nekromancji.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-7.png\" alt=\"\" class=\"wp-image-17541\"\/><figcaption class=\"wp-element-caption\">Potraktujcie to jako przejaw ocieplania wizerunku nekromancji.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dlaczego co\u015b takiego trafia do Javowego Newslettera? Artyku\u0142 omawia bowiem, w jaki spos\u00f3b Uber znacz\u0105co obni\u017cy\u0142 koszty logowania poprzez integracj\u0119 narz\u0119dzia <a href=\"https:\/\/github.com\/y-scope\/clp\/\">Compressed Log Processor<\/a> (CLP) z bibliotek\u0105 Log4j w ichniejszej platformie przetwarzania danych. Jak \u0142atwo si\u0119 domy\u015ble\u0107, wraz z rozwojem dzia\u0142alno\u015bci Ubera obj\u0119to\u015b\u0107 logowanych danych dramatycznie wzros\u0142a, prowadz\u0105c do wysokich koszt\u00f3w i konieczno\u015bci szybkiego rotowania log\u00f3w. Integracja CLP umo\u017cliwi\u0142a osi\u0105gni\u0119cie wsp\u00f3\u0142czynnika kompresji na poziomie 169x, znacznie obni\u017caj\u0105c wymagania dotycz\u0105ce przechowywania, pami\u0119ci i przepustowo\u015bci sieci. Ta poprawka pozwoli\u0142a Uberowi na retencje log\u00f3w przez d\u0142u\u017cszy okres, umo\u017cliwiaj\u0105c wgl\u0105d w historyczne dane i efektywniejsze przeszukiwaniu log\u00f3w bez konieczno\u015bci dekompresji.<\/p>\n","innerContent":["\n<p>Dlaczego co\u015b takiego trafia do Javowego Newslettera? Artyku\u0142 omawia bowiem, w jaki spos\u00f3b Uber znacz\u0105co obni\u017cy\u0142 koszty logowania poprzez integracj\u0119 narz\u0119dzia <a href=\"https:\/\/github.com\/y-scope\/clp\/\">Compressed Log Processor<\/a> (CLP) z bibliotek\u0105 Log4j w ichniejszej platformie przetwarzania danych. Jak \u0142atwo si\u0119 domy\u015ble\u0107, wraz z rozwojem dzia\u0142alno\u015bci Ubera obj\u0119to\u015b\u0107 logowanych danych dramatycznie wzros\u0142a, prowadz\u0105c do wysokich koszt\u00f3w i konieczno\u015bci szybkiego rotowania log\u00f3w. Integracja CLP umo\u017cliwi\u0142a osi\u0105gni\u0119cie wsp\u00f3\u0142czynnika kompresji na poziomie 169x, znacznie obni\u017caj\u0105c wymagania dotycz\u0105ce przechowywania, pami\u0119ci i przepustowo\u015bci sieci. Ta poprawka pozwoli\u0142a Uberowi na retencje log\u00f3w przez d\u0142u\u017cszy okres, umo\u017cliwiaj\u0105c wgl\u0105d w historyczne dane i efektywniejsze przeszukiwaniu log\u00f3w bez konieczno\u015bci dekompresji.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tekst pozwala te\u017c przyjrze\u0107 si\u0119 bli\u017cej rozmiarowi samego Ubera - przed wprowadzeniem poprawki firma generowa\u0142a do 200 TB log\u00f3w (!) w peaku. Z tego wzgl\u0119du standardowe, istniej\u0105ce narz\u0119dzia do zarz\u0105dzania logami, takie jak Elasticsearch i ClickHouse, by\u0142y albo zbyt kosztowne, albo niedopasowane do efektywnego obs\u0142ugiwania skali log\u00f3w Ubera. Z tekstu dowiemy si\u0119, \u017ce przy tej skali okazuje si\u0119, \u017ce nawet takie wydawa\u0142oby si\u0119 pomijalne przez wi\u0119kszo\u015b\u0107 z nas rzeczy, jak zapisywania plik\u00f3w log\u00f3w ma\u0142ymi porcjami w czasie powodowa\u0142a przedwczesne zu\u017cycie SSD.<\/p>\n","innerContent":["\n<p>Tekst pozwala te\u017c przyjrze\u0107 si\u0119 bli\u017cej rozmiarowi samego Ubera - przed wprowadzeniem poprawki firma generowa\u0142a do 200 TB log\u00f3w (!) w peaku. Z tego wzgl\u0119du standardowe, istniej\u0105ce narz\u0119dzia do zarz\u0105dzania logami, takie jak Elasticsearch i ClickHouse, by\u0142y albo zbyt kosztowne, albo niedopasowane do efektywnego obs\u0142ugiwania skali log\u00f3w Ubera. Z tekstu dowiemy si\u0119, \u017ce przy tej skali okazuje si\u0119, \u017ce nawet takie wydawa\u0142oby si\u0119 pomijalne przez wi\u0119kszo\u015b\u0107 z nas rzeczy, jak zapisywania plik\u00f3w log\u00f3w ma\u0142ymi porcjami w czasie powodowa\u0142a przedwczesne zu\u017cycie SSD.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":17550,"width":"418px","height":"auto","sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-10.png\" alt=\"\" class=\"wp-image-17550\" style=\"width:418px;height:auto\"\/><figcaption class=\"wp-element-caption\">Powy\u017csze problemy niech u\u015bwiadomi\u0105 wszystkim, \u017ce nie zawsze \"czas developer\u00f3w jest cenniejszy ni\u017c koszt dodatkowych maszyn\" to s\u0142uszna heurystyka.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-10.png\" alt=\"\" class=\"wp-image-17550\" style=\"width:418px;height:auto\"\/><figcaption class=\"wp-element-caption\">Powy\u017csze problemy niech u\u015bwiadomi\u0105 wszystkim, \u017ce nie zawsze \"czas developer\u00f3w jest cenniejszy ni\u017c koszt dodatkowych maszyn\" to s\u0142uszna heurystyka.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">3. U\u017cycie Wirtualnych W\u0105tk\u00f3w nie zawsze jest trywialne? Kto by si\u0119 spodziewa\u0142\u2026<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">3. U\u017cycie Wirtualnych W\u0105tk\u00f3w nie zawsze jest trywialne? Kto by si\u0119 spodziewa\u0142\u2026<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":17544,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-8-1024x585.png\" alt=\"\" class=\"wp-image-17544\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-8-1024x585.png\" alt=\"\" class=\"wp-image-17544\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A na koniec mam dla Was ciekawy przyk\u0142ad u\u017cycia Virtual Threads w realnych, nietrywialnych przypadkach. Autorem publikacji <a href=\"https:\/\/blog.ydb.tech\/how-we-switched-to-java-21-virtual-threads-and-got-deadlock-in-tpc-c-for-postgresql-cca2fe08d70b\">How we switched to Java 21 virtual threads and got a deadlock in TPC-C for PostgreSQL<\/a> jest Evgeniy Ivanov, pracuj\u0105cy nad baz\u0105 danych YDB. Jej tw\u00f3rcy pracuj\u0105 aktualnie nad kompatybilno\u015bci\u0105 PostgreSQL z YDB, g\u0142\u00f3wnie ze wzgl\u0119du na du\u017cy popyt ze strony u\u017cytkownik\u00f3w PostgreSQL. Podczas tego procesu pracowali nad implementacj\u0105 benchmark\u00f3w por\u00f3wnawczych, co sprawi\u0142o, \u017ce natkn\u0119li si\u0119 na nieoczekiwane problemy.<\/p>\n","innerContent":["\n<p>A na koniec mam dla Was ciekawy przyk\u0142ad u\u017cycia Virtual Threads w realnych, nietrywialnych przypadkach. Autorem publikacji <a href=\"https:\/\/blog.ydb.tech\/how-we-switched-to-java-21-virtual-threads-and-got-deadlock-in-tpc-c-for-postgresql-cca2fe08d70b\">How we switched to Java 21 virtual threads and got a deadlock in TPC-C for PostgreSQL<\/a> jest Evgeniy Ivanov, pracuj\u0105cy nad baz\u0105 danych YDB. Jej tw\u00f3rcy pracuj\u0105 aktualnie nad kompatybilno\u015bci\u0105 PostgreSQL z YDB, g\u0142\u00f3wnie ze wzgl\u0119du na du\u017cy popyt ze strony u\u017cytkownik\u00f3w PostgreSQL. Podczas tego procesu pracowali nad implementacj\u0105 benchmark\u00f3w por\u00f3wnawczych, co sprawi\u0142o, \u017ce natkn\u0119li si\u0119 na nieoczekiwane problemy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Post omawia wyzwania i rozwi\u0105zania napotkane podczas implementacji TPC-C (Transaction Processing Performance Council Benchmark C) dla PostgreSQL przy u\u017cyciu wirtualnych w\u0105tk\u00f3w Java 21. TPC-C to standardowy test wydajno\u015bciowy dla system\u00f3w baz danych, opracowany przez Transaction Processing Performance Council (TPC) i pozwalaj\u0105cy oceni\u0107 wydajno\u015b\u0107 przetwarzania tranzakcji. Jak to z benchmarkami bywa, ich implementacja bywa \"tricky\", wymagaj\u0105 bowiem cz\u0119sto niestandardowych technik. Tak by\u0142o i w tym przypadku - pocz\u0105tkowo autorzy napotkali bowiem problem z ograniczeniem wsp\u00f3\u0142bie\u017cno\u015bci z powodu tworzenia zbyt wielu fizycznych w\u0105tk\u00f3w w oryginalnej u\u017cywanej przez nich implementacji TPC-C. Aby temu zaradzi\u0107, postanowili u\u017cy\u0107 wirtualnych w\u0105tk\u00f3w z JDK 21, chc\u0105c bardziej efektywne poradzi\u0107 sobie z du\u017c\u0105 wsp\u00f3\u0142bie\u017cno\u015bci\u0105. Jednak szybko odkryli, \u017ce wirtualne w\u0105tki mog\u0105 prowadzi\u0107 do nieprzewidywalnych zakleszcze\u0144, zw\u0142aszcza gdy wyst\u0119puj\u0105 g\u0142\u0119boko w u\u017cywanych bibliotekach.<\/p>\n","innerContent":["\n<p>Post omawia wyzwania i rozwi\u0105zania napotkane podczas implementacji TPC-C (Transaction Processing Performance Council Benchmark C) dla PostgreSQL przy u\u017cyciu wirtualnych w\u0105tk\u00f3w Java 21. TPC-C to standardowy test wydajno\u015bciowy dla system\u00f3w baz danych, opracowany przez Transaction Processing Performance Council (TPC) i pozwalaj\u0105cy oceni\u0107 wydajno\u015b\u0107 przetwarzania tranzakcji. Jak to z benchmarkami bywa, ich implementacja bywa \"tricky\", wymagaj\u0105 bowiem cz\u0119sto niestandardowych technik. Tak by\u0142o i w tym przypadku - pocz\u0105tkowo autorzy napotkali bowiem problem z ograniczeniem wsp\u00f3\u0142bie\u017cno\u015bci z powodu tworzenia zbyt wielu fizycznych w\u0105tk\u00f3w w oryginalnej u\u017cywanej przez nich implementacji TPC-C. Aby temu zaradzi\u0107, postanowili u\u017cy\u0107 wirtualnych w\u0105tk\u00f3w z JDK 21, chc\u0105c bardziej efektywne poradzi\u0107 sobie z du\u017c\u0105 wsp\u00f3\u0142bie\u017cno\u015bci\u0105. Jednak szybko odkryli, \u017ce wirtualne w\u0105tki mog\u0105 prowadzi\u0107 do nieprzewidywalnych zakleszcze\u0144, zw\u0142aszcza gdy wyst\u0119puj\u0105 g\u0142\u0119boko w u\u017cywanych bibliotekach.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Przyk\u0142adowo, autor napotka\u0142 si\u0119 na sytuacj\u0119 zakleszczenia w swojej implementacji TPC-C dla PostgreSQL przy u\u017cyciu <a href=\"https:\/\/github.com\/swaldman\/c3p0\">c3p0<\/a> - biblioteka do pulowania po\u0142\u0105cze\u0144 JDBC w sytuacji wysokiej wsp\u00f3\u0142bie\u017cno\u015bci, z obs\u0142ug\u0105 buforowania i ponownego wykorzystania <code>PreparedStatements<\/code> do pulowania po\u0142\u0105cze\u0144. Aby rozwi\u0105za\u0107 problem, zacz\u0119li schodzi\u0107 coraz ni\u017cej i odkryli, \u017ce wirtualne w\u0105tki oczekuj\u0105ce na sesj\u0119 blokuj\u0105 ich w\u0105tek no\u015bny. Rozwi\u0105zaniem by\u0142o u\u017cycie <code>java.util.concurrent.Semaphore<\/code> do opakowania po\u0142\u0105czenia, co zapobiega\u0142o blokowaniu wewn\u0105trz c3p0 i umo\u017cliwi\u0142o efektywne u\u017cywanie wirtualnych w\u0105tk\u00f3w. Ten przyk\u0142ad pokazuje z\u0142o\u017cono\u015b\u0107 implementacji wirtualnych w\u0105tk\u00f3w i znaczenie zrozumienia, jak wchodz\u0105 one w interakcje z innymi komponentami w systemie. Okazuje si\u0119, \u017ce problemy mog\u0105 trafi\u0107 z nieoczekiwanych miejsc, a nawet je\u015bli my sami u\u017cyjemy Wirtualnych W\u0105tk\u00f3w w prawid\u0142owy spos\u00f3b, to nigdy nie mo\u017cemy ufa\u0107, \u017ce u\u017cywane przez nas zale\u017cno\u015bci nie sprawi\u0105 nam niespodzianki.<\/p>\n","innerContent":["\n<p>Przyk\u0142adowo, autor napotka\u0142 si\u0119 na sytuacj\u0119 zakleszczenia w swojej implementacji TPC-C dla PostgreSQL przy u\u017cyciu <a href=\"https:\/\/github.com\/swaldman\/c3p0\">c3p0<\/a> - biblioteka do pulowania po\u0142\u0105cze\u0144 JDBC w sytuacji wysokiej wsp\u00f3\u0142bie\u017cno\u015bci, z obs\u0142ug\u0105 buforowania i ponownego wykorzystania <code>PreparedStatements<\/code> do pulowania po\u0142\u0105cze\u0144. Aby rozwi\u0105za\u0107 problem, zacz\u0119li schodzi\u0107 coraz ni\u017cej i odkryli, \u017ce wirtualne w\u0105tki oczekuj\u0105ce na sesj\u0119 blokuj\u0105 ich w\u0105tek no\u015bny. Rozwi\u0105zaniem by\u0142o u\u017cycie <code>java.util.concurrent.Semaphore<\/code> do opakowania po\u0142\u0105czenia, co zapobiega\u0142o blokowaniu wewn\u0105trz c3p0 i umo\u017cliwi\u0142o efektywne u\u017cywanie wirtualnych w\u0105tk\u00f3w. Ten przyk\u0142ad pokazuje z\u0142o\u017cono\u015b\u0107 implementacji wirtualnych w\u0105tk\u00f3w i znaczenie zrozumienia, jak wchodz\u0105 one w interakcje z innymi komponentami w systemie. Okazuje si\u0119, \u017ce problemy mog\u0105 trafi\u0107 z nieoczekiwanych miejsc, a nawet je\u015bli my sami u\u017cyjemy Wirtualnych W\u0105tk\u00f3w w prawid\u0142owy spos\u00f3b, to nigdy nie mo\u017cemy ufa\u0107, \u017ce u\u017cywane przez nas zale\u017cno\u015bci nie sprawi\u0105 nam niespodzianki.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":17548,"width":"811px","height":"auto","sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-777.png\" alt=\"\" class=\"wp-image-17548\" style=\"width:811px;height:auto\"\/><figcaption class=\"wp-element-caption\">Kwestionuj wszystko, nie ufaj nikomu.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/Group-777.png\" alt=\"\" class=\"wp-image-17548\" style=\"width:811px;height:auto\"\/><figcaption class=\"wp-element-caption\">Kwestionuj wszystko, nie ufaj nikomu.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Artyku\u0142 jest ca\u0142kiem ciekawym \u017ar\u00f3d\u0142em dla rozwa\u017caj\u0105cych przej\u015bcie na wirtualne w\u0105tki, poniewa\u017c dotyka nioczywistych niuans\u00f3w, kt\u00f3re cz\u0119sto gin\u0105 pod wysypem Hello World. Post (a <a href=\"https:\/\/blog.ydb.tech\">tak\u017ce wcze\u015bniejsze publikacje YDB<\/a>) zawiera te\u017c sporo inny ciekawych informacji dla interesuj\u0105cych si\u0119 wsp\u00f3\u0142bie\u017cno\u015bci\u0105 baz danych. Je\u017celi kiedykolwiek interesowa\u0142 Was temat - bardzo polecam.<\/p>\n","innerContent":["\n<p>Artyku\u0142 jest ca\u0142kiem ciekawym \u017ar\u00f3d\u0142em dla rozwa\u017caj\u0105cych przej\u015bcie na wirtualne w\u0105tki, poniewa\u017c dotyka nioczywistych niuans\u00f3w, kt\u00f3re cz\u0119sto gin\u0105 pod wysypem Hello World. Post (a <a href=\"https:\/\/blog.ydb.tech\">tak\u017ce wcze\u015bniejsze publikacje YDB<\/a>) zawiera te\u017c sporo inny ciekawych informacji dla interesuj\u0105cych si\u0119 wsp\u00f3\u0142bie\u017cno\u015bci\u0105 baz danych. Je\u017celi kiedykolwiek interesowa\u0142 Was temat - bardzo polecam.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":17546,"width":"847px","height":"auto","sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-9-1024x768.png\" alt=\"\" class=\"wp-image-17546\" style=\"width:847px;height:auto\"\/><figcaption class=\"wp-element-caption\">A jeszcze bardziej sugeruje zapozna\u0107 si\u0119 z ksi\u0105\u017ck\u0105 <a href=\"https:\/\/www.amazon.com\/Database-Internals-Deep-Distributed-Systems\/dp\/1492040347\">Database Internals<\/a> - zaskakuj\u0105co, by\u0142a to chyba moja ulubiona techniczna pozycja, jak\u0105 przeczyta\u0142em w 2023.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2024\/01\/image-9-1024x768.png\" alt=\"\" class=\"wp-image-17546\" style=\"width:847px;height:auto\"\/><figcaption class=\"wp-element-caption\">A jeszcze bardziej sugeruje zapozna\u0107 si\u0119 z ksi\u0105\u017ck\u0105 <a href=\"https:\/\/www.amazon.com\/Database-Internals-Deep-Distributed-Systems\/dp\/1492040347\">Database Internals<\/a> - zaskakuj\u0105co, by\u0142a to chyba moja ulubiona techniczna pozycja, jak\u0105 przeczyta\u0142em w 2023.<\/figcaption><\/figure>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/17531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=17531"}],"version-history":[{"count":6,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/17531\/revisions"}],"predecessor-version":[{"id":17557,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/17531\/revisions\/17557"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/17554"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=17531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=17531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=17531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}