{"id":28346,"date":"2023-10-05T11:53:41","date_gmt":"2023-10-05T02:53:41","guid":{"rendered":"http:\/\/nori.company\/?p=28346"},"modified":"2023-10-05T11:53:41","modified_gmt":"2023-10-05T02:53:41","slug":"pgroll-postgres%eb%a5%bc-%ec%9c%84%ed%95%9c-%ec%a0%9c%eb%a1%9c-%eb%8b%a4%ec%9a%b4%ed%83%80%ec%9e%84-%eb%90%98%eb%8f%8c%eb%a6%b4-%ec%88%98-%ec%9e%88%eb%8a%94-%ec%8a%a4%ed%82%a4%eb%a7%88-%eb%a7%88","status":"publish","type":"post","link":"https:\/\/nori.company\/?p=28346","title":{"rendered":"Pgroll: Postgres\ub97c \uc704\ud55c \uc81c\ub85c \ub2e4\uc6b4\ud0c0\uc784, \ub418\ub3cc\ub9b4 \uc218 \uc788\ub294 \uc2a4\ud0a4\ub9c8 \ub9c8\uc774\uadf8\ub808\uc774\uc158"},"content":{"rendered":"<ul>\n<li>\uc774 \uae30\uc0ac\uc5d0\uc11c\ub294 PostgreSQL\uc744 \uc704\ud55c \uc548\uc804\ud558\uace0 \ub418\ub3cc\ub9b4 \uc218 \uc788\ub294 \uc2a4\ud0a4\ub9c8 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc744 \uc704\ud574 \uc124\uacc4\ub41c \uc0c8\ub85c\uc6b4 \uba85\ub839 \uc904 \ub3c4\uad6c\uc778 <strong>pgroll<\/strong>\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/li>\n<li>\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc2a4\ud0a4\ub9c8 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc740 \uc2dc\uc2a4\ud15c \uc5c5\ub370\uc774\ud2b8\uc5d0 \ud544\uc218\uc801\uc774\uc9c0\ub9cc, \uc7a0\uc7ac\uc801\uc778 \ud30c\uad34\uc801 \ubcc0\ud654, \ubcf5\uc7a1\ud55c \ub2e4\ub2e8\uacc4 \ud504\ub85c\uc138\uc2a4, \uc608\uae30\uce58 \uc54a\uc740 \ub370\uc774&#8230;\n<p>\ucd9c\ucc98 : <a href=\"https:\/\/news.hada.io\/topic?id=11188\" target=\"_blank\" rel=\"noopener\">GeekNews &#8211; \uac1c\ubc1c\/\uae30\uc220\/\uc2a4\ud0c0\ud2b8\uc5c5 \ub274\uc2a4 \uc11c\ube44\uc2a4 <\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\uc774 \uae30\uc0ac\uc5d0\uc11c\ub294 PostgreSQL\uc744 \uc704\ud55c \uc548\uc804\ud558\uace0 \ub418\ub3cc\ub9b4 \uc218 \uc788\ub294 \uc2a4\ud0a4\ub9c8 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc744 \uc704\ud574 \uc124\uacc4\ub41c \uc0c8\ub85c\uc6b4 \uba85\ub839 \uc904 \ub3c4\uad6c\uc778 pgroll\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4. \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc2a4\ud0a4\ub9c8&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[138],"tags":[163],"class_list":["post-28346","post","type-post","status-publish","format-standard","hentry","category-it","tag-geeknews-----"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pa3PO4-7nc","jetpack-related-posts":[{"id":25185,"url":"https:\/\/nori.company\/?p=25185","url_meta":{"origin":28346,"position":0},"title":"Citus 12: PostgreSQL\uc744 \uc704\ud55c \uc2a4\ud0a4\ub9c8 \uae30\ubc18 \uc0e4\ub529","author":"\ub178\ub9ac\ucef4\ud37c\ub2c8","date":"2023\ub144 7\uc6d4 21\uc77c","format":false,"excerpt":"Citus 12\ubc84\uc804\ubd80\ud130 \ubcc4\ub3c4\uc758 \ub370\uc774\ud130 \ubaa8\ub378\ub9c1 \ub2e8\uacc4 \uc5c6\uc774 \uc2a4\ud0a4\ub9c8 \uc774\ub984 \ub9cc\uc73c\ub85c \uc0e4\ub529\uc744 \uc9c0\uc6d0 \uba40\ud2f0\ud14c\ub10c\ud2b8 SaaS, \uac19\uc740 DB\ub97c \uc774\uc6a9\ud558\ub294 Microservice \ub4f1\uc5d0 \uc190\uc27d\uac8c \uc0e4\ub529 \uc801\uc6a9 \uac00\ub2a5 Citus\ub294 \uae30\uc874\uc5d0 Row-based \uc0e4\ub529\uc774\uc5c8\uc74c \ubd84\uc11d \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ucd5c\uc801 \uba40\ud2f0 \ud14c\ub10c\ud2b8\uc5d0\ub3c4 \uc0ac\uc6a9\uc740 \uac00... \ucd9c\ucc98 : GeekNews - \uac1c\ubc1c\/\uae30\uc220\/\uc2a4\ud0c0\ud2b8\uc5c5 \ub274\uc2a4 \uc11c\ube44\uc2a4","rel":"","context":"&quot;IT&quot;\uc5d0\uc11c","block_context":{"text":"IT","link":"https:\/\/nori.company\/?cat=138"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28524,"url":"https:\/\/nori.company\/?p=28524","url_meta":{"origin":28346,"position":1},"title":"pgroll &#8211; \uc81c\ub85c \ub2e4\uc6b4\ud0c0\uc784, \uc6d0\ubcf5 \uac00\ub2a5\ud55c Postgrest \uc2a4\ud0a4\ub9c8 \uc774\uad00 \ub3c4\uad6c \uc624\ud508\uc18c\uc2a4","author":"\ub178\ub9ac\ucef4\ud37c\ub2c8","date":"2023\ub144 10\uc6d4 10\uc77c","format":false,"excerpt":"\uc548\uc804\ud55c \uc2a4\ud0a4\ub9c8 Migration\uc6a9 CLI \ub3c4\uad6c \uc774\uad00 \uc911\uc5d0 \uae30\uc874\/\uc2e0\uaddc \uc2a4\ud0a4\ub9c8 \ubc84\uc804\uc774 \ub3d9\uc2dc\uc5d0 \ub3d9\uc791\ud558\ub3c4\ub85d \uc720\uc9c0 \uc774\uc288 \ubc1c\uc0dd\uc2dc \uc989\uc2dc \ub864\ubc31 \uac00\ub2a5 \ud544\uc694\uc2dc \uc790\ub3d9 \uceec\ub7fc \ubc31\ud544\ub9c1(Backfilling) \uc9c0\uc6d0 JSON \ud3ec\ub9f7\uc73c\ub85c Migration \ub3d9\uc791\uc744 \uc815\uc758 \uae30\uc874 \uc2a4\ud0a4\ub9c8 \ub300\uc0c1\uc73c\ub85c \ub3d9\uc791. \ucc98\uc74c\ubd80\ud130 \uc2dc\uc791\ud560 \ud544\uc694... \ucd9c\ucc98 : GeekNews - \uac1c\ubc1c\/\uae30\uc220\/\uc2a4\ud0c0\ud2b8\uc5c5 \ub274\uc2a4 \uc11c\ube44\uc2a4","rel":"","context":"&quot;IT&quot;\uc5d0\uc11c","block_context":{"text":"IT","link":"https:\/\/nori.company\/?cat=138"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":22783,"url":"https:\/\/nori.company\/?p=22783","url_meta":{"origin":28346,"position":2},"title":"[Nestia] NestJS \uc758 \uc18d\ub3c4\ub97c (\ucd5c\ub300 2\ub9cc\ubc30) \uac1c\uc120\ud558\uace0, \uc0ac\uc6a9\ud558\uae30 \ub354 \uc27d\uac8c \ub9cc\ub4e4\uc5b4\uc90c","author":"\ub178\ub9ac\ucef4\ud37c\ub2c8","date":"2023\ub144 4\uc6d4 28\uc77c","format":false,"excerpt":"Request body data validation \uc18d\ub3c4 \ucd5c\ub300 2\ub9cc\ubc30 \ud5a5\uc0c1 JSON serialization \uc18d\ub3c4 \ucd5c\ub300 2\ubc31\ubc30 \ud5a5\uc0c1 \ud504\ub860\ud2b8 \uac1c\ubc1c\uc790\ub97c \uc704\ud55c SDK Library \uc0dd\uc131 \ub3c4\uad6c \uc81c\uacf5 DTO \uc2a4\ud0a4\ub9c8 \uc911\ubcf5 \uc815\uc758 \uc5c6\uc774, TypeScript \ud0c0\uc785 \uadf8\ub300\ub85c \uc0ac\uc6a9 \uac00\ub2a5 \uc6d0\ub9ac: AOT \ucef4\ud30c\uc77c \ucd5c\uc801\ud654 ... \ucd9c\ucc98 : GeekNews - \uac1c\ubc1c\/\uae30\uc220\/\uc2a4\ud0c0\ud2b8\uc5c5 \ub274\uc2a4 \uc11c\ube44\uc2a4","rel":"","context":"&quot;IT&quot;\uc5d0\uc11c","block_context":{"text":"IT","link":"https:\/\/nori.company\/?cat=138"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26544,"url":"https:\/\/nori.company\/?p=26544","url_meta":{"origin":28346,"position":3},"title":"JSON Schema Store","author":"\ub178\ub9ac\ucef4\ud37c\ub2c8","date":"2023\ub144 8\uc6d4 23\uc77c","format":false,"excerpt":"\ub2e4\uc591\ud55c \ud615\uc2dd\uc5d0 \ub300\ud55c JSON \uc2a4\ud0a4\ub9c8 \uc800\uc7a5\uc18c (\ud604\uc7ac 716\uac1c) Configuration, Manifest, File Spec,.. \uc774 \uc2a4\ud0a4\ub9c8 \uc815\ubcf4\ub97c \uc774\uc6a9\ud558\uc5ec VSCode, IntelliJ, Sublime, Neovim \ub4f1\uc758 \ub2e4\uc591\ud55c \uc5d0\ub514\ud130\uc5d0\uc11c \uc790\ub3d9\uc644\uc131 \ubc0f \ud3ec\ub9f7 \uac80\uc99d\uc744 \uc9c0\uc6d0 \uc2a4\ud0a4\ub9c8 \uba54\ud0c0\ub370\uc774\ud130\ub97c \ub9ac\uc2a4\ud2b8 API\ub85c\ub3c4 \uc81c\uacf5","rel":"","context":"&quot;IT&quot;\uc5d0\uc11c","block_context":{"text":"IT","link":"https:\/\/nori.company\/?cat=138"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27964,"url":"https:\/\/nori.company\/?p=27964","url_meta":{"origin":28346,"position":4},"title":"Show GN: ERD \ubc0f \ud574\uc124\uc11c \uc790\ub3d9 \uc0dd\uc131\uae30 for Prisma ORM","author":"\ub178\ub9ac\ucef4\ud37c\ub2c8","date":"2023\ub144 9\uc6d4 24\uc77c","format":false,"excerpt":"Prisma ORM \uc2a4\ud0a4\ub9c8 \ud30c\uc77c\uc744 \uc77d\uc5b4\uc11c ERD \ubc0f \ud574\uc124\uc11c \uc790\ub3d9 \uc0dd\uc131 ERD\ub294 mermaid \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc73c\ub85c \uc0dd\uc131 \ud574\uc124\uc11c\ub294 Prisma ORM\uc758 \uc8fc\uc11d\uc744 \uc77d\uc5b4\ub4e4\uc5ec \uad6c\uc131 \uc218\ubc31\/\uc218\ucc9c\uac1c\uc758 \ud14c\uc774\ube14\ub3c4 \ud398\uc774\uc9c0 \ubd84\ud560\uc744 \uc774\uc6a9\ud574 \ud45c\ud604 \uac00\ub2a5 ... \ucd9c\ucc98 : GeekNews - \uac1c\ubc1c\/\uae30\uc220\/\uc2a4\ud0c0\ud2b8\uc5c5 \ub274\uc2a4 \uc11c\ube44\uc2a4","rel":"","context":"&quot;IT&quot;\uc5d0\uc11c","block_context":{"text":"IT","link":"https:\/\/nori.company\/?cat=138"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27904,"url":"https:\/\/nori.company\/?p=27904","url_meta":{"origin":28346,"position":5},"title":"\uc138\uc0c1\uc5d0\uc11c \uac00\uc7a5 \uc26c\uc6b4 Protobuf \ub77c\uc774\ube0c\ub7ec\ub9ac of TypeScript","author":"\ub178\ub9ac\ucef4\ud37c\ub2c8","date":"2023\ub144 9\uc6d4 22\uc77c","format":false,"excerpt":"Runtime validator \ub77c\uc774\ube0c\ub7ec\ub9ac typia \uc5d0\uc11c \uad6c\uae00\uc758 Protocol Buffer \uc9c0\uc6d0 \uc2dc\uc791 Typia \uc720\uc800\ub4e4\uc774 protobuf \uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc744 \uafb8\uc900\ud788 \uc694\uccad\ud558\uc5ec \uac1c\ubc1c\ud558 Protobuf \uc2a4\ud0a4\ub9c8 \uc815\uc758 \uc5c6\uc774, \uc21c\uc218 TS \ud0c0\uc785\ub9cc\uc73c\ub85c \uc0ac\uc6a9 \uac00\ub2a5 \ub2e8 \ud55c \uc904\uc758 \ucf54\ub4dc\ub9cc\uc73c\ub85c protobuf encode\/decode \uc2dc\uc804 TS \ud0c0\uc785 -> \ucd9c\ucc98 : GeekNews - \uac1c\ubc1c\/\uae30\uc220\/\uc2a4\ud0c0\ud2b8\uc5c5 \ub274\uc2a4 \uc11c\ube44\uc2a4","rel":"","context":"&quot;IT&quot;\uc5d0\uc11c","block_context":{"text":"IT","link":"https:\/\/nori.company\/?cat=138"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/nori.company\/index.php?rest_route=\/wp\/v2\/posts\/28346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nori.company\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nori.company\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nori.company\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nori.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=28346"}],"version-history":[{"count":1,"href":"https:\/\/nori.company\/index.php?rest_route=\/wp\/v2\/posts\/28346\/revisions"}],"predecessor-version":[{"id":28347,"href":"https:\/\/nori.company\/index.php?rest_route=\/wp\/v2\/posts\/28346\/revisions\/28347"}],"wp:attachment":[{"href":"https:\/\/nori.company\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nori.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nori.company\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}