+| Company | Industry | Use case | Reference | Cluster Size | (Un)Compressed data size |
+|----------------------------------------------------------------------------------------------------|-------------------------------------------------|-------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| [1Flow](https://1flow.ai/) | Feedback automation | — | ClickHouse Cloud user | — | — |
+| [2gis](https://2gis.ru) | Maps | Monitoring | [Talk in Russian, July 2019](https://youtu.be/58sPkXfq6nw) | — | — |
+| [3xpl](https://3xpl.com/) | Software & Technology | Blockchain Explorer | [Reddit, February 2023](https://www.reddit.com/r/ethereum/comments/1159pdg/new_ethereum_explorer_by_3xpl_no_ads_super_fast/) | — | — |
+| [5CNetwork](https://www.5cnetwork.com/) | Software | Analytics | [Community Slack](https://clickhouse.com/slack) | — | — |
+| [ABTasty](https://www.abtasty.com/) | Web Analytics | Analytics | [Paris Meetup, March 2024](https://www.meetup.com/clickhouse-france-user-group/events/298997115/) | — | — |
+| [Arkhn](https://www.arkhn.com) | Healthcare | Data Warehouse | [Paris Meetup, March 2024](https://www.meetup.com/clickhouse-france-user-group/events/298997115/) | — | — |
+| [ASO.dev](https://aso.dev/) | Software & Technology | App store optimisation | [Twitter, April 2023](https://twitter.com/gorniv/status/1642847791226445828) | — | — |
+| [AdGreetz](https://www.adgreetz.com/) | Software & Technology | AdTech & MarTech | [Blog, April 2023](https://clickhouse.com/blog/adgreetz-processes-millions-of-daily-ad-impressions) | — | — |
+| [AdGuard](https://adguard.com/) | Anti-Ads | AdGuard DNS | [Official Website, August 2022](https://adguard.com/en/blog/adguard-dns-2-0-goes-open-source.html) | — | 1,000,000 DNS requests per second from over 50 million users |
+| [AdScribe](http://www.adscribe.tv/) | Ads | TV Analytics | [A quote from CTO](https://altinity.com/24x7-support/) | — | — |
+| [Adapty](https://adapty.io/) | Subscription Analytics | Main product | [Twitter, November 2021](https://twitter.com/iwitaly/status/1462698148061659139) | — | — |
+| [Adevinta](https://www.adevinta.com/) | Software & Technology | Online Classifieds | [Blog, April 2023](https://clickhouse.com/blog/serving-real-time-analytics-across-marketplaces-at-adevinta) | — | — |
+| [Admiral](https://getadmiral.com/) | MarTech | Engagement Management | [Webinar Slides, June 2020](https://altinity.com/presentations/2020/06/16/big-data-in-real-time-how-clickhouse-powers-admirals-visitor-relationships-for-publishers) | — | — |
+| [Admixer](https://admixer.com/) | Media & Entertainment | Ad Analytics | [Blog Post](https://clickhouse.com/blog/admixer-aggregates-over-1-billion-unique-users-a-day-using-clickhouse) | — | — |
+| [Aggregations.io](https://aggregations.io/) | Real-time analytics | Main product | [Twitter](https://twitter.com/jsneedles/status/1734606200199889282) | — | — |
+| [Ahrefs](https://ahrefs.com/) | SEO | Analytics | [Job listing](https://ahrefs.com/jobs/data-scientist-search) | Main cluster is 100k+ CPU cores, 800TB RAM. | 110PB NVME storage, uncompressed data size on main cluster is 1EB. |
+| [Airfold](https://www.airfold.co/) | API platform | Main Product | [Documentation](https://docs.airfold.co/workspace/pipes) | — | — |
+| [Aiven](https://aiven.io/) | Cloud data platform | Managed Service | [Blog post](https://aiven.io/blog/introduction-to-clickhouse) | — | — |
+| [Akamai](https://www.akamai.com/) | Software & Technology | CDN | [LinkedIn](https://www.linkedin.com/in/david-piatek-bb27368/) | — | — |
+| [Akvorado](https://demo.akvorado.net/) | Network Monitoring | Main Product | [Documentation](https://demo.akvorado.net/docs/intro) | — | — |
+| [Alauda](https://alauda.io) | Software & Technology | Analytics, Logs | [Alauda, November 2024](https://www.alauda.io) | — | — |
+| [AlgoNode](https://algonode.io/) | Software & Technology | Algorand Hosting | [Twitter, April 2023](https://twitter.com/AlgoNode_io/status/1650594948998213632) | — | — |
+| [Alibaba Cloud](https://cn.aliyun.com/) | Cloud | E-MapReduce | [Official Website](https://help.aliyun.com/document_detail/212195.html) | — | — |
+| [Alibaba Cloud](https://cn.aliyun.com/) | Cloud | Managed Service | [Official Website](https://help.aliyun.com/product/144466.html) | — | — |
+| [Aloha Browser](https://alohabrowser.com/) | Mobile App | Browser backend | [Slides in Russian, May 2019](https://presentations.clickhouse.com/meetup22/aloha.pdf) | — | — |
+| [Altinity](https://altinity.com/) | Cloud, SaaS | Main product | [Official Website](https://altinity.com/) | — | — |
+| [Amadeus](https://amadeus.com/) | Travel | Analytics | [Press Release, April 2018](https://www.altinity.com/blog/2018/4/5/amadeus-technologies-launches-investment-and-insights-tool-based-on-machine-learning-and-strategy-algorithms) | — | — |
+| [AMP](https://useamp.com/) | Software & Technology | e-Commerce Metrics | [Twitter Post, May 2024](https://x.com/pc_barnes/status/1793846059724357832) [Meetup Slides](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-melbourne-2/Talk%20Track%201%20-%20AMP's%20data%20journey%20from%20OSS%20to%20ClickHouse%20Cloud%20-%20Chris%20Lawrence%20.pdf) | — | — |
+| [Android Hub](https://bestforandroid.com/) | Blogging, Analytics, Advertising data | — | [Official Website](https://bestforandroid.com/) | — | — |
+| [AnswerAI](https://www.answerai.co.uk/) | Software & Technology | AI Customer Support | [Twitter, May 2024](https://twitter.com/TomAnswerAi/status/1791062219678998880) | — | — |
+| [Anton](https://anton.tools/) | Software & Technology | Blockchain Indexer | [GitHub](https://github.com/tonindexer/anton) | — | — |
+| [Antrea](https://antrea.io/) | Software & Technology | Kubernetes Network Security | [Documentation](https://antrea.io/docs/main/docs/network-flow-visibility/) | — | — |
+| [ApiRoad](https://apiroad.net/) | API marketplace | Analytics | [Blog post, November 2018, March 2020](https://pixeljets.com/blog/clickhouse-vs-elasticsearch/) | — | — |
+| [Apitally](https://apitally.io/) | Software & Technology | API Monitoring | [Twitter, March 2024](https://twitter.com/simongurcke/status/1766005582971170926) | — | — |
+| [Appsflyer](https://www.appsflyer.com) | Mobile analytics | Main product | [Talk in Russian, July 2019](https://www.youtube.com/watch?v=M3wbRlcpBbY) | — | — |
+| [Aptabase](https://aptabase.com/) | Analytics | Privacy-first / open-source Firebase Analytics alternative | [GitHub Repository](https://github.com/aptabase/aptabase/tree/main/etc/clickhouse) | — | — |
+| [ArenaData](https://arenadata.tech/) | Data Platform | Main product | [Slides in Russian, December 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup38/indexes.pdf) | — | — |
+| [Argedor](https://www.argedor.com/en/clickhouse/) | ClickHouse support | — | [Official website](https://www.argedor.com/en/clickhouse/) | — | — |
+| [Atani](https://atani.com/en/) | Software & Technology | Crypto Platform | [CTO LinkedIn](https://www.linkedin.com/in/fbadiola/) | — | — |
+| [Attentive](https://www.attentive.com/) | Email Marketing | Main product | [Blog Post](https://clickhouse.com/blog/confoundingly-fast-inside-attentives-migration-to-clickhouse) | — | — |
+| [Astronomer](https://www.astronomer.io/) | Software & Technology | Observability | [Slide Deck](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-san-francisco/2024.12.09%20Clickhouse%20_%20Powering%20Astro%20Observe%20with%20Clickhouse.pdf) | — | — |
+| [Autoblocks](https://autoblocks.ai) | Software & Technology | LLM Monitoring & Deployment | [Twitter, August 2023](https://twitter.com/nolte_adam/status/1690722237953794048) | — | — |
+| [Aviso](https://www.aviso.com/) | AI Platform | Reporting | ClickHouse Cloud user | — | — |
+| [Avito](https://avito.ru/) | Classifieds | Monitoring | [Meetup, April 2020](https://www.youtube.com/watch?v=n1tm4j4W8ZQ) | — | — |
+| [Axis Communications](https://www.axis.com/en-ca) | Video surveillance | Main product | [Blog post](https://engineeringat.axis.com/schema-changes-clickhouse/) | — | — |
+| [Azura](https://azura.xyz/) | Crypto | Analytics | [Meetup Video](https://youtu.be/S3uroekuYuQ) | — | — |
+| [AzurePrice](https://azureprice.net/) | Analytics | Main Product | [Blog, November 2022](https://blog.devgenius.io/how-i-migrate-to-clickhouse-and-speedup-my-backend-7x-and-decrease-cost-by-6x-part-1-2553251a9059) | — | — |
+| [AzurGames](https://azurgames.com/) | Gaming | Analytics | [AWS Blog, Aug 2024](https://aws.amazon.com/blogs/gametech/azur-games-migrates-all-game-analytics-data-to-clickhouse-cloud-on-aws/) | — | — |
+| [B2Metric](https://b2metric.com/) | Marketing | Analytics | [ProductHunt, July 2023](https://www.producthunt.com/posts/b2metric-decision-intelligence?bc=1) | — | — |
+| [BIGO](https://www.bigo.sg/) | Video | Computing Platform | [Blog Article, August 2020](https://www.programmersought.com/article/44544895251/) | — | — |
+| [Badoo](https://badoo.com) | Dating | Time series | [Slides in Russian, December 2019](https://presentations.clickhouse.com/meetup38/forecast.pdf) | — | 1.6 mln events/sec (2018) |
+| [Baidu](https://www.baidu.com/) | Internet services | Data warehousing | [GitHub](https://github.com/ClickHouse/ClickHouse/pull/60361) | — | — |
+| [Baselime](https://baselime.io/) | Software & Technology | Observability for Serverless | [Official website](https://baselime.io/) | — | — |
+| [Basic RUM](https://www.basicrum.com/) | Software & Technology | Real User Monitoring | [Official website](https://www.basicrum.com/) | — | — |
+| [Beehiiv](https://www.beehiiv.com/) | Marketing | Analytics | [Blog, Aug 2024](https://clickhouse.com/blog/data-hive-the-story-of-beehiivs-journey-from-postgres-to-clickhouse) | — | — |
+| [Beeline](https://beeline.ru/) | Telecom | Data Platform | [Blog post, July 2021](https://habr.com/en/company/beeline/blog/567508/) | — | — |
+| [Beekeeper](https://www.beekeeper.io/) | Workforce Enablement | Analytics | [Blog post, April 2024](https://www.meetup.com/clickhouse-switzerland-meetup-group/events/299628922) | — | — |
+| [Beetested](https://www.beetested.com/) | Software & Technology | Game Testing | [Case Study, June 2023](https://double.cloud/resources/case-studies/beetested-analyze-millions-of-gamers-emotions-with-doublecloud/) | — | — |
+| [Benocs](https://www.benocs.com/) | Network Telemetry and Analytics | Main Product | [Slides, December 2022](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup66/Self%20repairing%20processing%20using%20ClickHouse.pdf) [Blog Post, March 2022](https://clickhouse.com/blog/-indexing-for-data-streams-benocs-telco/) [Slides in English, October 2017](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup9/lpm.pdf) | — | — |
+| [Bento](https://bento.me/en/home) | Software & Technology | Personal Portfolio | [Twitter, May 2023](https://twitter.com/gubmee/status/1653405962542219264) | — | — |
+| [Better Stack](https://betterstack.com/) | Cloud, SaaS | Log Management | [Official Website](https://betterstack.com/logtail) | — | — |
+| [BiliBili](https://www.bilibili.com/) | Video sharing | — | [Blog post, June 2021](https://chowdera.com/2021/06/20210622012241476b.html) | — | — |
+| [Binom](https://binom.org/) | Analytics | Website analytics | [Twitter, 2023](https://twitter.com/BinomTracker/status/1722948130948206940) | — | — |
+| [Bitquery](https://bitquery.io/) | Software & Technology | Blockchain Data Company | [Hacker News, December 2020](https://bitquery.io/blog/blockchain-intelligence-system) | — | — |
+| [Bloomberg](https://www.bloomberg.com/) | Finance, Media | Monitoring | [Meetup Video, December 2022](https://www.youtube.com/watch?v=HmJTIrGyVls&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=9) [Slides, December 2022](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup67/ClickHouse%20for%20Financial%20Analytics%20-%20Bloomberg.pdf) | — | — |
+| [Bloxy](https://bloxy.info) | Blockchain | Analytics | [Slides in Russian, August 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup17/4_bloxy.pptx) | — | — |
+| [Bonree](https://www.bonree.com/) | Software & Technology | Performance Monitoring & Observability | ClickHouse Meetup in Hangzhou, May 2024 | — | — |
+| [Bonside](https://www.bonside.com/) | FinTech | — | [Hacker News, July 2023](https://news.ycombinator.com/item?id=36619722) | — | — |
+| [BoundaryML](https://www.boundaryml.com/) | Software Development | AI Platform | [Meetup, March 2025](https://youtu.be/DV-zkQUvuPc) | — | — |
+| [Botify](https://www.botify.com/) | SaaS | SEO | [Blog Article, September 2022](https://tech.marksblogg.com/billion-taxi-rides-doublecloud-clickhouse.html) | — | — |
+| [Braintrust](https://www.usebraintrust.com/) | Software & Technology | Real-time Analytics | [Written Blog from Meetup Video, July 2024](https://clickhouse.com/blog/building-better-ai-products-faster-how-braintrust-uses-clickhouse-for-real-time-data-analysis) | — | — |
+| [Braze](https://www.braze.com/) | Software & Technology | Real-time Analytics | [Meetup Video](https://youtu.be/NmEyElaa_xI) | — | — |
+| [Buildkite](https://buildkite.com/) | Software & Technology | Real-time analytics | [Wellington meetup, February 2025](https://clickhouse.com/videos/wellington-meetup-buildkite-clickhouse-test-analytics) | — | — |
+| [ByConity](https://byconity.github.io/) | Software & Technology | Big Data Analysis Engine | [GitHub](https://github.com/ByConity/ByConity) | — | — |
+| [Bytedance](https://www.bytedance.com) | Social platforms | — | [The ClickHouse Meetup East, October 2020](https://www.youtube.com/watch?v=ckChUkC3Pns) | — | — |
+| [CARTO](https://carto.com/) | Business Intelligence | Geo analytics | [Geospatial processing with ClickHouse](https://carto.com/blog/geospatial-processing-with-clickhouse/) | — | — |
+| [CERN](http://public.web.cern.ch/public/) | Research | Experiment | [Press release, April 2012](https://www.yandex.com/company/press_center/press_releases/2012/2012-04-10/) | — | — |
+| [CHEQ](https://cheq.ai/) | Software & Technology | GTM Security | [Meetup Video, January 2023](https://www.youtube.com/watch?v=rxIO6w4er3k&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=7) [Slides, January 2023](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup68/ClickHouse%20Meetup%20-%20CHEQ.pptx.pdf) | — | — |
+| [Campaign Deputy](https://campaigndeputy.com/) | SaaS | Analytics, Logs | [Twitter, February 2023](https://twitter.com/joshabartley/status/1627669208074014721), [Tweet, July 2023](https://twitter.com/joshabartley/status/1677008728711651331) | — | — |
+| [Canopus Networks](https://canopusnetworks.com/) | AI for Telecom | Real-time analytics | [Meetup Presentation](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-sydney/Talk%20Track%201%20-%20Canopus%20Networks.pdf) | — | — |
+| [Capgo.app](https://capgo.app/) | App development | Real-time statistics | [Twitter](https://twitter.com/martindonadieu/status/1735728943406219736) | — | — |
+| [CardsMobile](https://cardsmobile.ru/) | Finance | Analytics | [VC.ru](https://vc.ru/s/cardsmobile/143449-rukovoditel-gruppy-analiza-dannyh) | — | — |
+| [Castle](https://castle.io/) | Fraud Detection | Main product | [Community Slack](https://clickhouse.com/slack) | — | — |
+| [Cato Networks](https://www.catonetworks.com/) | Network Security | Security event analytics | [Full Stack Developers Israel, Jan 2023](https://www.youtube.com/watch?v=Is4TC2gf5EM) | — | 8B (4TB) new events per day |
+| [CDN77](https://www.cdn77.com/) | Software & Technology | Content Delivery Network | [GitHub Comment, April 2024](https://github.com/ClickHouse/ClickHouse/issues/61093#issuecomment-2070150654) | — | — |
+| [Chainbase](https://chainbase.online/) | Blockchain | Main product | [Documentation](https://docs.chainbase.online/r/data-cloud-studio/data-cloud-api) | — | — |
+| [ChartMetric](https://chartmetric.com/) | Music Industry | Analytics | [Meetup Video](https://youtu.be/gd1yWbnaalk) | — | — |
+| [ChatLayer](https://chatlayer.ai/) | AI virtual assistants | Analytics | [Press Release, December 2021](https://aiven.io/blog/aiven-for-clickhouse-now-generally-available) | — | — |
+| [Checkly](https://www.checklyhq.com/) | Software Development | Analytics | [Twitter, October 2021](https://twitter.com/tim_nolet/status/1445810665743081474?s=20) | — | — |
+| [ChelPipe Group](https://chelpipegroup.com/) | Analytics | — | [Blog post, June 2021](https://vc.ru/trade/253172-tyazhelomu-proizvodstvu-user-friendly-sayt-internet-magazin-trub-dlya-chtpz) | — | — |
+| [Chroma](https://www.trychroma.com/) | Software & Technology | AI-native embedded database | [GitHub Repository](https://github.com/chroma-core/chroma) [Twitter, February 2023](https://twitter.com/atroyn/status/1625605732644298752) | — | — |
+| [CipherStash](https://cipherstash.com/) | Software & Technology | Analytics | [Meetup Presentation](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-sydney/Talk%20Track%203%20-%20CipherStash.pdf) | — | — |
+| [Cisco](http://cisco.com/) | Networking | Traffic analysis | [Lightning talk, October 2019](https://youtu.be/-hI1vDR2oPY?t=5057) | — | — |
+| [Citadel Securities](https://www.citadelsecurities.com/) | Finance | — | [Contribution, March 2019](https://github.com/ClickHouse/ClickHouse/pull/4774) | — | — |
+| [Citymobil](https://city-mobil.ru) | Taxi | Analytics | [Blog Post in Russian, March 2020](https://habr.com/en/company/citymobil/blog/490660/) | — | — |
+| [Clearbit](https://clearbit.com/) | AI | Product usage | ClickHouse Cloud user | — | — |
+| [ClickFunnels](https://www.clickfunnels.com/) | Website Builder | | ClickHouse Cloud user | — | — |
+| [ClickVisual](https://clickvisual.net/) | Software | Logging Platform | [Blog Post, May 2022](https://golangexample.com/a-light-weight-log-visual-analytic-platform-for-clickhouse/) | — | — |
+| [Clog](https://www.hybridlogic.co.uk/) | Software & Technology | Logging | [Blog, February 2023](https://www.hybridlogic.co.uk/2023/02/clog/) | — | — |
+| [Cloud Circus, Inc.](https://cloudcircus.jp/) | Software & Technology | Logging | [Tokyo Meetup, January 2025](https://clickhouse.com/videos/tokyo-meetup-cloudcircus-accelerating-cloudfront-log-analysis) | — | — |
+| [Cloudflare](https://cloudflare.com) | CDN | Traffic analysis | [Blog post, May 2017](https://blog.cloudflare.com/how-cloudflare-analyzes-1m-dns-queries-per-second/), [Blog post, March 2018](https://blog.cloudflare.com/http-analytics-for-6m-requests-per-second-using-clickhouse/) | 36 servers | — |
+| [CloudRaft](https://www.cloudraft.io/) | Software & Technology | Consulting Services | [Twitter, May 2024](https://x.com/anjuls/status/1792048331805606156) | — | — |
+| [Codegiant](https://codegiant.io/) | Security | Main product | [Blog, December 2023](https://blog.codegiant.io/clickhouse-in-codegiant-observability-ecosystem/) | — | — |
+| [Cognitiv](https://cognitiv.ai/) | AdTech | Offline Feature Store | [Blog, Aug 2024](https://clickhouse.com/blog/transforming-ad-tech-how-cognitiv-uses-clickhouse-to-build-better-machine-learning-models) | — | — |
+| [Coinhall](https://coinhall.org/) | Web3 | Blockchain Data Platform | [Blog, Aug 2024](https://clickhouse.com/blog/trade-secrets-how-coinhall-uses-clickhouse-to-power-its-blockchain-data-platform) | — | — |
+| [Coinpaprika](https://coinpaprika.com/) | Software & Technology | Cryptocurrency Market Data Analysis | [Blog, May 2023](https://clickhouse.com/blog/coinpaprika-aggregates-pricing-data) | — | — |
+| [Comcast](https://corporate.comcast.com/) | Media | CDN Traffic Analysis | [ApacheCon 2019 Talk](https://www.youtube.com/watch?v=e9TZ6gFDjNg) | — | — |
+| [Common Room](https://www.commonroom.io/) | Marketing SaaS | Real-Time Analytics | [Seattle Meetup, March 2024](https://www.youtube.com/watch?v=liTgGiTuhJE) | — | — |
+| [Constructor](https://constructor.io/) | E-commerce Search | E-commerce Search | ClickHouse Cloud user | — | — |
+| [Constant Contact](https://www.constantcontact.com/) | Marketing Saas | Real-Time Analytics | [Meetup Video](https://youtu.be/6SeEurehp10) | — | — |
+| [Contentsquare](https://contentsquare.com) | Web analytics | Main product | [Meetup Video, January 2023](https://www.youtube.com/watch?v=zvuCBAl2T0Q&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=5) [Blog Post, October 2022](https://clickhouse.com/blog/contentsquare-migration-from-elasticsearch-to-clickhouse) [Blog post in French, November 2018](http://souslecapot.net/2018/11/21/patrick-chatain-vp-engineering-chez-contentsquare-penser-davantage-amelioration-continue-que-revolution-constante/) | — | — |
+| [Coroot](https://coroot.com/) | Software & Technology | Observability | [Twitter, July 2023](https://twitter.com/coroot_com/status/1680993372385804288?s=20) | — | — |
+| [Corsearch](https://corsearch.com/) | Marketing SaaS (Brand Protection) | Main Datastore | [Seattle Meetup, March 2023](https://www.youtube.com/watch?v=BuS8jFL9cvw&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=10) | — | — |
+| [Corunet](https://coru.net/) | Analytics | Main product | [Slides in English, April 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup21/predictive_models.pdf) | — | — |
+| [Covalent](https://www.covalenthq.com/) | Financial — Crypto | Blockchain analysis | ClickHouse Cloud user | — | — |
+| [CraiditX 氪信](https://www.creditx.com) | Finance AI | Analysis | [Slides in English, November 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup33/udf.pptx) | — | — |
+| [Craigslist](https://sfbay.craigslist.org/) | Classifieds | Rate limiting (Redis replacement) | [SF Meetup, March 2024](https://www.youtube.com/watch?v=wRwqrbUjRe4&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=9) | — | — |
+| [Crazypanda](https://crazypanda.ru/en/) | Games | | Live session on ClickHouse meetup | — | — |
+| [Criteo](https://www.criteo.com/) | Retail | Main product | [Slides in English, October 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup18/3_storetail.pptx) | — | — |
+| [Cryptology](https://cryptology.com/) | Digital Assets Trading Platform | — | [Job advertisement, March 2021](https://career.habr.com/companies/cryptology/vacancies) | — | — |
+| [Culver Max Entertainment/Sony Pictures](https://www.sonypicturesnetworks.com/overview) | Television/Entertainment | Media streaming analytics | ClickHouse Cloud user | — | — |
+| [Cumul.io](https://www.cumul.io) | Software & Technology | Customer Analytics | [Blog Post, June 2022](https://clickhouse.com/blog/optimizing-your-customer-facing-analytics-experience-with-cumul-io-and-clickhouse) | — | — |
+| [DB Pilot](https://www.dbpilot.io/) | Software & Technology | Database GUI | [Twitter, August 2023](https://twitter.com/dennis_hellweg/status/1701349566354686143) | — | — |
+| [DENIC](https://www.denic.de/) | Software & Technology | Data Science Analytics | [Blog Post, May 2022](https://clickhouse.com/blog/denic-improves-query-times-by-10x-with-clickhouse) | — | — |
+| [DNSMonster](https://dnsmonster.dev/) | Software & Technology | DNS Monitoring | [GitHub Repository](https://github.com/mosajjal/dnsmonster) | — | — |
+| [Darwinium](https://www.darwinium.com/) | Software & Technology | Security and Fraud Analytics | [Blog Post, July 2022](https://clickhouse.com/blog/fast-feature-rich-and-mutable-clickhouse-powers-darwiniums-security-and-fraud-analytics-use-cases) | — | — |
+| [Dash0](https://www.dash0.com/) | APM Platform | Main product | [Careers page](https://careers.dash0.com/senior-product-engineer-backend/en) | — | — |
+| [Dashdive](https://www.dashdive.com/) | Infrastructure management | Analytics | [Hacker News, 2024](https://news.ycombinator.com/item?id=39178753) | — | — |
+| [Dassana](https://lake.dassana.io/) | Cloud data platform | Main product | [Blog Post, Jan 2023](https://clickhouse.com/blog/clickhouse-powers-dassanas-security-data-lake) [Direct reference, April 2022](https://news.ycombinator.com/item?id=31111432) | — | — |
+| [Datafold](https://www.datafold.com/) | Data Reliability Platform | — | [Job advertisement, April 2022](https://www.datafold.com/careers) | — | — |
+| [Dataliance for China Telecom](https://www.chinatelecomglobal.com/) | Telecom | Analytics | [Slides in Chinese, January 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup12/telecom.pdf) | — | — |
+| [DeepFlow](https://deepflow.io) | Software & Technology | Observability | [GitHub](https://github.com/deepflowio/deepflow) | — | — |
+| [DeepL](https://www.deepl.com/) | Machine Learning | — | [Blog Post, July 2022](https://clickhouse.com/blog/deepls-journey-with-clickhouse) [Video, October 2021](https://www.youtube.com/watch?v=WIYJiPwxXdM&t=1182s) | — | — |
+| [Deepglint 格灵深瞳](https://www.deepglint.com/) | AI, Computer Vision | OLAP | [Official Website](https://www.deepglint.com/) | — | — |
+| [Deeplay](https://deeplay.io/eng/) | Gaming Analytics | — | [Job advertisement, 2020](https://career.habr.com/vacancies/1000062568) | — | — |
+| [Depot](https://depot.dev/) | Software & Technology | CI & Build Acceleration | [Twitter, April 2024](https://twitter.com/jacobwgillespie/status/1778463642150695048) | — | — |
+| [Deutsche Bank](https://db.com) | Finance | BI Analytics | [Meetup Video, December 2022](https://www.youtube.com/watch?v=O3GJ6jag3Hc&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=11) [Slides in English, October 2019](https://bigdatadays.ru/wp-content/uploads/2019/10/D2-H3-3_Yakunin-Goihburg.pdf) | — | — |
+| [DevHubStack](http://devhubstack.com/) | Software & Technology | Community Management | [Twitter, May 2024](https://twitter.com/thedevhubstack/status/1790655455229771789) | — | — |
+| [DeWu Poizon](https://www.dewu.com/) | E-commerce | Real-Time Analytics | [Blog, March 2025](https://clickhouse.com/blog/observing-in-style-how-poizon-rebuilt-its-data-platform-with-clickhouse-enterprise-edition) | — | — |
+| [Didi](https://web.didiglobal.com/) | Transportation & Ride Sharing | Observability | [Blog, Apr 2024](https://clickhouse.com/blog/didi-migrates-from-elasticsearch-to-clickHouse-for-a-new-generation-log-storage-system) | 400+ logging, 40 tracing | PBs/day / 40GB/s write throughput, 15M queries/day, 200 QPS peak |
+| [DigiCert](https://www.digicert.com) | Network Security | DNS Platform | [Job posting, Aug 2022](https://www.indeed.com/viewjob?t=Senior+Principal+Software+Engineer+Architect&c=DigiCert&l=Lehi,+UT&jk=403c35f96c46cf37&rtk=1g9mnof7qk7dv800) | — | over 35 billion events per day |
+| [Disney+](https://www.disneyplus.com/) | Video Streaming | Analytics | [Meetup Video, December 2022](https://www.youtube.com/watch?v=CVVp6N8Xeoc&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=8) [Slides, December 2022](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup67/Disney%20plus%20ClickHouse.pdf) | — | 395 TiB |
+| [Dittofeed](https://dittofeed.com/) | Software & Technology | Open Source Customer Engagement | [Hacker News, June 2023](https://news.ycombinator.com/item?id=36061344) | — | — |
+| [Diva-e](https://www.diva-e.com) | Digital consulting | Main Product | [Slides in English, September 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup29/ClickHouse-MeetUp-Unusual-Applications-sd-2019-09-17.pdf) | — | — |
+| [Dolphin Emulator](https://dolphin-emu.org/) | Games | Analytics | [Twitter, September 2022](https://twitter.com/delroth_/status/1567300096160665601) | — | — |
+| [DoorDash](https://www.doordash.com/home) | E-commerce | Monitoring | [Meetup, December 2024](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-san-francisco/Clickhouse%20Meetup%20Slides%20(1).pdf) | — | — |
+| [Dopple.io](https://dolphin-emu.org/) | E-commerce | 3D Analytics | [Meetup, September 2024](https://docs.google.com/presentation/d/1_i7H1EIfEttPKtP9CCAB_4Ajs_Li4N6S/edit#slide=id.p4) | — | — |
+| [DotSentry](https://forum.polkadot.network/t/dotsentry-ecosystem-wide-monitoring-solution/8210) | Software & Technology | Monitoring for Polkadot Ecosystem | [Forum Post, May 2024](https://forum.polkadot.network/t/dotsentry-ecosystem-wide-monitoring-solution/8210) | — | — |
+| [DrDroid](https://www.drdroid.io/) | Software & Technology | Monitoring | [Slack, August 2023](https://clickhousedb.slack.com/archives/C04N3AU38DV/p1694151014185729) | — | — |
+| [Duckbill Group](https://www.duckbillgroup.com/) | Software & Technology | — | [Twitter, May 2024](https://twitter.com/mike_julian/status/1789737184192315876) | — | — |
+| [eBay](https://www.ebay.com/) | E-commerce | Logs, Metrics and Events | [Official website, Sep 2020](https://tech.ebayinc.com/engineering/ou-online-analytical-processing/) | — | — |
+| [Ecommpay](https://ecommpay.com/) | Payment Processing | Logs | [Video, Nov 2019](https://www.youtube.com/watch?v=d3GdZTOWGLk) | — | — |
+| [Ecwid](https://www.ecwid.com/) | E-commerce SaaS | Metrics, Logging | [Slides in Russian, April 2019](https://nastachku.ru/var/files/1/presentation/backend/2_Backend_6.pdf) | — | — |
+| [Effodio](https://www.effodio.com/) | Observability, Root cause analysis | Event storage | [Blog, 2024](https://peng.fyi/post/factorial-growth-of-clickhouse-with-clause/) | — | — |
+| [Egg](https://github.com/ducc/egg) | Error Aggregation | Main Product | [GitHub repository](https://github.com/ducc/egg) | — | — |
+| [Electrum](https://www.electrum.id/) | Technology | Real-time Analytics | [Meetup Blog, October 2024](https://clickhouse.com/videos/driving-jakarta-electric-motorcycle-transformation-with-clickhouse) | — | — |
+| [Engage](https://engage.so/) | Software & Technology | Customer Engagement | [Twitter Post, May 2024](https://x.com/kehers/status/1793935987778724038) | — | — |
+| [Embrace](https://embrace.io/) | Observability | Logs | [Blog post, June 2024](https://embrace.io/blog/solving-large-logs-with-clickhouse/) | — | — |
+| [Ensemble](https://ensembleanalytics.io/) | Analytics | Analytics | [Official website, Sep 2020](https://ensembleanalytics.io/blog/why-we-went-all-in-clickhouse) | — | — |
+| [EventBunker.io](https://www.eventbunker.io/) | Serverless Data Processing | — | [Twitter, April 2021](https://twitter.com/Halil_D_/status/1379839133472985091) | — | — |
+| [ExitLag](http://www.exitlag.com/) | Software & Technology | Gaming Data Routing | [Blog, June 2023](https://clickhouse.com/blog/boosting-game-performance-exitlag-quest-for-a-better-data-management-system) | — | — |
+| [ExitLag](https://www.exitlag.com/) | Software & Technology | Optimized Gaming Experience | [ClickHouse Blog, June 2023](https://clickhouse.com/blog/boosting-game-performance-exitlag-quest-for-a-better-data-management-system) | — | — |
+| [Exness](https://www.exness.com/) | Trading | Metrics, Logging | [Talk in Russian, May 2019](https://youtu.be/_rpU-TvSfZ8?t=3215) | — | — |
+| [Explo](https://www.explo.co/) | Analytics | — | [Meetup Video](https://youtu.be/FZyPvKpFiDk) | — | — |
+| [Fastly](https://www.fastly.com/) | Internet Services | Metrics (Graphite replacement) | [Boston Meetup, Dec 2023](https://clickhouse.com/videos/scaling-graphite-with-clickhouse) | — | — |
+| [FastNetMon](https://fastnetmon.com/) | DDoS Protection | Main Product | [Official website](https://fastnetmon.com/docs-fnm-advanced/fastnetmon-advanced-traffic-persistency/) | | — |
+| [Fastnear](https://fastnear.com/) | Infrastructure | Main product | [Twitter, 2024](https://twitter.com/ekuzyakov/status/1762500731154698421) | — | — |
+| [FeatBit](https://www.featbit.co/) | Software & Technology | Feature Flag Management | [GitHub, August 2023](https://github.com/featbit/featbit) | — | — |
+| [FinBox](https://finbox.in/) | Software & Technology | Financial Services | [Slack](https://clickhousedb.slack.com/archives/C04N3AU38DV/p1688198501884219) | — | — |
+| [Fingerprint](https://fingerprint.com/) | Fraud detection | Fraud detection | [Meetup](https://www.linkedin.com/posts/system29a_clickhouse-meetup-in-berlin-tue-may-16-activity-7063805876570050561-UE-n/) | — | — |
+| [Firebolt](https://www.firebolt.io/) | Analytics | Main product | [VLDB 2022 paper](https://www.firebolt.io/content/firebolt-vldb-cdms-2022), [VLDB 2022 slides](https://cdmsworkshop.github.io/2022/Slides/Fri_C2.5_MoshaPasumansky.pdf) | — | — |
+| [Fl0](https://www.fl0.com/) | Cloud | Server management | [Meetup presentation](https://presentations.clickhouse.com/?path=meetup94) | — | — |
+| [Flipkart](https://www.flipkart.com/) | e-Commerce | — | [Talk in English, July 2020](https://youtu.be/GMiXCMFDMow?t=239) | — | — |
+| [Flipt](https://www.flipt.io/) | Software | Software development management | [Blog, 2024](https://www.flipt.io/blog/analytics-with-clickhouse) | — | — |
+| [Flock Safety](https://www.flocksafety.com/) | Crime Surveillance | Real Time Traffic Analytics | [Meetup,December 2024](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-new-york/flock-safety-clickhouse-presentation.pdf) | — | — |
+| [FortiSIEM](https://www.fortinet.com/) | Information Security | Supervisor and Worker | [Documentation](https://help.fortinet.com/fsiem/6-6-0/Online-Help/HTML5_Help/clickhouse_config.htm) | — | — |
+| [Fortis Games](https://fortisgames.com/) | Game studio | Online data analytics | [Blog post, July 2023](https://thenewstack.io/a-real-time-data-platform-for-player-driven-game-experiences/) | — | — |
+| [Foxway](https://www.foxway.com/en/) | Software & Technology | e-Commerce | [ClickHouse Meetup, April 2024](https://twitter.com/ClickHouseDB/status/1782833838886121492) | — | — |
+| [Friendly Captcha](https://friendlycaptcha.com) | Bot Protection | — | [Job Posting, Aug 2022](https://news.ycombinator.com/item?id=32311825) | — | — |
+| [FunCorp](https://fun.co/rp) | Games | | [Article](https://www.altinity.com/blog/migrating-from-redshift-to-clickhouse) | — | 14 bn records/day as of Jan 2021 |
+| [Futurra Group](https://futurragroup.com/) | Analytics | — | [Article in Russian, December 2021](https://dou.ua/forums/topic/35587/) | — | — |
+| [G-Core Labs](https://gcorelabs.com/) | Security | Main product | [Job posting, May 2022](https://careers.gcorelabs.com/jobs/Careers) | — | — |
+| [Galaxy-Future](https://www.galaxy-future.com/en/home) | Software & Technology | Metric Monitoring & Measurement | [CudgX GitHub Repository](https://github.com/galaxy-future/cudgx) | — | — |
+| [Geniee](https://geniee.co.jp) | Ad network | Main product | [Blog post in Japanese, July 2017](https://tech.geniee.co.jp/entry/2017/07/20/160100) | — | — |
+| [Genotek](https://www.genotek.ru/) | Bioinformatics | Main product | [Video, August 2020](https://youtu.be/v3KyZbz9lEE) | — | — |
+| [Gigapipe](https://gigapipe.com/) | Managed ClickHouse | Main product | [Official website](https://gigapipe.com/) | — | — |
+| [Gigasheet](https://gigasheet.co/) | Analytics | Main product | Direct Reference, February 2022 | — | — |
+| [GitLab](https://gitlab.com/) | Code and DevOps | APM | [Official website](https://gitlab.com/gitlab-org/incubation-engineering/apm/apm) | — | — |
+| [Glaber](https://glaber.io/) | Monitoring | Main product | [Website](https://glaber.io/) | — | — |
+| [Glenrose Group](https://www.glenrosegroup.com/) | Expense management | — | [Twitter](https://twitter.com/EncodedRose/status/1706145758897180783) | — | — |
+| [Gluten](https://github.com/oap-project/gluten) | Software & Technology | Spark performance | [Github, July 2023](https://github.com/oap-project/gluten) | — | — |
+| [Goldsky](https://goldsky.com/) | Software & Technology | Blockchain data analytics | [Documentation, July 2023](https://docs.goldsky.com/) | — | — |
+| [Good Job Games](https://goodjobgames.com/) | Games | Event Processing | [Job Posting, Aug 2022](https://news.ycombinator.com/item?id=32313170) | — | — |
+| [Goodpeople](https://twitter.com/_suzychoi/status/1702113350258180245) | Human Resources | OLAP | [Twitter, 2023](https://twitter.com/_suzychoi/status/1702113350258180245) | — | — |
+| [Gorgias](https://www.gorgias.com/) | Software & Technology | eCommerce Helpdesk Analytics | [ClickHouse Slack, April 2023](https://clickhousedb.slack.com/archives/C04N3AU38DV/p1682502827729909) | — | — |
+| [Grafbase](https://grafbase.com/) | Software & Technology | GraphQL API Management | [Blog, June 2023](https://grafbase.com/blog/how-to-build-your-own-realtime-analytics-dashboards) | — | — |
+| [GraphCDN](https://graphcdn.io/) | CDN | Traffic Analytics | [Blog Post in English, August 2021](https://altinity.com/blog/delivering-insight-on-graphql-apis-with-clickhouse-at-graphcdn/) | — | — |
+| [GraphJSON](https://www.graphjson.com) | Cloud analytics platform | Main product | [Official Website, November 2021](https://www.graphjson.com/guides/about) | — | — |
+| [GraphQL Hive](https://graphql-hive.com/) | Software Development | Traffic analysis | [Source code](https://github.com/kamilkisiela/graphql-hive) | — | — |
+| [Groundcover](https://groundcover.com/) | Observability | Kubernetes Observability | [Documentation, July 2023](https://docs.groundcover.com/docs/learn-more/architecture) | — | — |
+| [Grouparoo](https://www.grouparoo.com) | Data Warehouse Integrations | Main product | [Official Website, August 2021](https://www.grouparoo.com/integrations) | — | — |
+| [Growthbook](https://www.growthbook.io) | Open Source Feature Flagging | Integration | [Meetup Video](https://youtu.be/pVNxXfVB2cE) | — | — |
+| [Gumlet](https://www.gumlet.com/) | CDN | Analytics | [Meetup Presentation](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-bangalore-2/Talk%20Track%202%20-%20Gumlet.pdf) | — | — |
+| [Harvey](https://www.harvey.ai/) | AI for legal | Network analytics | [San Francisco Meetup, September 2024](https://clickhouse.com/videos/effective-network-threat-detection) | — | — |
+| [Hasura](https://hasura.io/) | Software & Technology | Data Platform | [Blog, January 2025](https://hasura.io/blog/hasura-ddn-the-most-incredible-api-for-clickhouse) | — | — |
+| [HUYA](https://www.huya.com/) | Video Streaming | Analytics | [Slides in Chinese, October 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup19/7.%20ClickHouse万亿数据分析实践%20李本旺(sundy-li)%20虎牙.pdf) | — | — |
+| [Haibo 海博科技](https://www.botech.com.cn/) | Big Data | OLAP | [Personal reference](https://github.com/ClickHouse/clickhouse-docs/pull/279) | — | — |
+| [Helicone](https://helicone.ai) | Software & Technology | LLM monitoring | [Meetup, August 2023](https://clickhouse.com/blog/helicones-migration-from-postgres-to-clickhouse-for-advanced-llm-monitoring) | — | — |
+| [Hewlett-Packard](https://www.hp.com) | Software & Technology | — | [LinkedIn post, November 2023](https://www.indeed.com/viewjob?t=Machine+Learning+Engineer&c=Hewlett-Packard+CDS+GmbH&l=Houston,+TX&jk=109385f349350746&rtk=1hg3128s9kkf6800) | — | — |
+| [Hi-Fi](https://hi.fi/) | Software & Technology | Music Industry Analytics | [Blog Post, January 2023](https://clickhouse.com/blog/hifis-migration-from-bigquery-to-clickhouse) | — | — |
+| [Highlight](https://www.highlight.io/) | Software & Technology | Monitoring | [Hacker News, February 2023](https://news.ycombinator.com/item?id=34897645), [GitHub](https://github.com/highlight/highlight/tree/87f7e3882b88e9019d690847a134231e943890fe/backend/clickhouse) | — | — |
+| [HockeyStack](https://hockeystack.com/) | Analytics platform | OLAP | [Blog](https://hockeystack.com/blog/a-new-database/) | — | — |
+| [Honeybadger](https://www.honeybadger.io/) | Software | Error tracking | [Mastadon 2024](https://hachyderm.io/@wood/111904268945097226) | — | — |
+| [Hookdeck](https://hookdeck.com/) | Software & Technology | Webhook | [Twitter, June 2023](https://twitter.com/mkherlakian/status/1666214460824997889) | — | — |
+| [Hopsteiner](https://www.hopsteiner.com/) | Agriculture | — | [Job post, July 2023](https://www.indeed.com/viewjob?t=Systems+Administrator&c=S+S+STEINER&l=Yakima,+WA&jk=5b9b7336de0577d5&rtk=1h45ruu32j30q800&from=rss) | — | — |
+| [Horizon](https://horizon.io/) | Software & Technology | Gaming Analytics | [Twitter, July 2023](https://twitter.com/peterk/status/1677099027110805504) | — | — |
+| [Huawei](https://www.huaweicloud.com/intl/en-us/) | Software & Technology | Cloud data platform | [Documentation](https://doc.hcs.huawei.com/usermanual/mrs/mrs_01_2344.html) | — | — |
+| [Hubalz](https://hubalz.com) | Web analytics | Main product | [Twitter, July 2023](https://twitter.com/Derinilkcan/status/1676197439152312321) | — | — |
+| [Huntress](https://www.huntress.com) | Security analytics | Main product | [Blog Post, November 2024](https://clickhouse.com/blog/how-huntress-improved-performance-and-slashed-costs-with-clickHouse) | — | — |
+| [Hydrolix](https://www.hydrolix.io/) | Cloud data platform | Main product | [Documentation](https://docs.hydrolix.io/guide/query) | — | — |
+| [HyperDx](https://www.hyperdx.io/) | Software & Technology | Open Telemetry | [HackerNews, May 2023](https://news.ycombinator.com/item?id=35881942) | — | — |
+| [Hystax](https://hystax.com) | Cloud Operations | Observability Analytics | [Blog](https://hystax.com/clickhouse-for-real-time-cost-saving-analytics-how-to-stop-hammering-screws-and-use-an-electric-screwdriver/) | — | — |
+| [IBM](https://www.ibm.com) | APM Platform | Ex-Instana | See Instana | — | — |
+| [IBM QRadar](https://www.ibm.com) | IBM QRadar Log Insights | Main Product | [IBM Blog](https://www.ibm.com/blog/closing-breach-window-from-data-to-action/) | — | — |
+| [ICA](https://www.the-ica.com/) | FinTech | Risk Management | [Blog Post in English, Sep 2020](https://altinity.com/blog/clickhouse-vs-redshift-performance-for-fintech-risk-management?utm_campaign=ClickHouse%20vs%20RedShift&utm_content=143520807&utm_medium=social&utm_source=twitter&hss_channel=tw-3894792263) | — | — |
+| [Idealista](https://www.idealista.com) | Real Estate | Analytics | [Blog Post in English, April 2019](https://clickhouse.com/blog/en/clickhouse-meetup-in-madrid-on-april-2-2019) | — | — |
+| [Idea Clan](https://ideaclan.com/) | Digital Marketing | Real-Time Analytics | [Gurgaon Meetup talk, March 2025](https://clickhouse.com/videos/gurgaon-meetup-fabfunnel-and-clickhouse-delivering-real-time-marketing-analytics) | — | — |
+| [Improvado](https://improvado.io/) | Revenue Operations | Data Stack | [Blog Post, December 2021](https://improvado.io/blog/clickhouse-warehousing-pricing) | — | — |
+| [INCREFF](https://www.increff.com/) | Retail Technology | Business Intelligence | [Meetup Presentation](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-bangalore-2/Talk%20Track%203%20-%20Scaling%20BI%20at%20Increff%20with%20Clickhouse.pdf) | — | — |
+| [Inigo](https://inigo.io/) | Software & Technology | GraphQL Gateway | [Blog, March 2023](https://inigo.io/blog/materialized_views_and_clickhouse) [Blog, June 2023](https://clickhouse.com/blog/harnessing-the-power-of-materialized-views-and-clickhouse-for-high-performance-analytics-at-inigo) | — | — |
+| [Infobaleen](https://infobaleen.com) | AI markting tool | Analytics | [Official site](https://infobaleen.com) | — | — |
+| [Infovista](https://www.infovista.com/) | Networks | Analytics | [Slides in English, October 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup30/infovista.pdf) | — | — |
+| [Inngest](https://www.inngest.com/) | Software & Technology | Serverless queues and jobs | [TechCrunch, July 2023](https://techcrunch.com/2023/07/12/inngest-helps-developers-build-their-backend-workflows-raises-3m/) | — | — |
+| [InnoGames](https://www.innogames.com) | Games | Metrics, Logging | [Slides in Russian, September 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup28/graphite_and_clickHouse.pdf) | — | — |
+| [Instabug](https://instabug.com/) | APM Platform | Main product | [Blog Post, May 2022](https://clickhouse.com/blog/10x-improved-response-times-cheaper-to-operate-and-30-storage-reduction-why-instabug-chose-clickhouse-for-apm) | — | — |
+| [Instacart](https://instacart.com/) | Delivery | Data Engineering and Infrastructure | [Blog Post, May 2022](https://www.instacart.com/company/how-its-made/data-engineering-and-infrastructure-at-instacart-with-engineering-manager-abhi-kalakuntla/) | — | — |
+| [Instana](https://www.instana.com) | APM Platform | Main product | [Twitter post](https://twitter.com/mieldonkers/status/1248884119158882304) | — | — |
+| [Integros](https://integros.com) | Platform for video services | Analytics | [Slides in Russian, May 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup22/strategies.pdf) | — | — |
+| [inwt](https://www.inwt-statistics.com/) | Software & Technology | Data Science | [Blog Post, December 2023](https://www.inwt-statistics.com/blog/business_case_air_pollution_forecast) | — | — |
+| [Ippon Technologies](https://ippon.tech) | Technology Consulting | — | [Talk in English, July 2020](https://youtu.be/GMiXCMFDMow?t=205) | — | — |
+| [Ivi](https://www.ivi.ru/) | Online Cinema | Analytics, Monitoring | [Article in Russian, Jan 2018](https://habr.com/en/company/ivi/blog/347408/) | — | — |
+| [Jerry](https://getjerry.com/) | Automotive SaaS | Analytics (Migrate from Redshift) | [Blog, May 2024](https://juicefs.com/en/blog/user-stories/read-write-separation) | — | — |
+| [Jinshuju 金数据](https://jinshuju.net) | BI Analytics | Main product | [Slides in Chinese, October 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup24/3.%20金数据数据架构调整方案Public.pdf) | — | — |
+| [Jitsu](https://jitsu.com) | Cloud Software | Data Pipeline | [Documentation](https://jitsu.com/docs/destinations-configuration/clickhouse-destination), [Hacker News post](https://news.ycombinator.com/item?id=29106082) | — | — |
+| [JuiceFS](https://juicefs.com/) | Storage | Shopping Cart | [Blog](https://juicefs.com/blog/en/posts/shopee-clickhouse-with-juicefs/) | — | — |
+| [Jump Capital](https://jumpcap.com/) | Fintech | Investor | [Chicago meetup, September 2024](https://clickhouse.com/videos/fireside-chat-with-alexey-saurabh) | — | — |
+| [Jump Trading](https://www.jumptrading.com/) | Financial | Analytics | [Chicago meetup, September 2024](https://clickhouse.com/videos/clikchouse-demo) | — | — |
+| [June](https://www.june.so/) | Product analytics | Main product | [Job post](https://www.ycombinator.com/companies/june/jobs/SHd7fFLYG-founding-engineer) | — | — |
+| [Juspay](https://juspay.in/) | Software & Technology | Payments | [Blog, March 2023](https://clickhouse.com/blog/juspay-analyzes-payment-transactions-in-real-time-with-clickhouse) | — | — |
+| [KGK Global](https://www.kgk-global.com/en/) | Vehicle monitoring | — | [Press release, June 2021](https://zoom.cnews.ru/news/item/530921) | — | — |
+| [KMK Online](https://www.kmkonline.co.id/) | Digital Services | Streaming analytics | ClickHouse Cloud user | — | — |
+| [Kaiko](https://www.kaiko.com/) | Digital Assets Data Provider | — | [Job advertisement, April 2022](https://kaiko.talentlyft.com/) | — | — |
+| [Kakaocorp](https://www.kakaocorp.com/) | Internet company | — | [if(kakao)2020](https://tv.kakao.com/channel/3693125/cliplink/414129353), [if(kakao)2021](https://if.kakao.com/session/24) | — | — |
+| [Kami](https://www.kamiapp.com/) | Education, Software & Technology | Real-time Analytics | [Auckland Meetup, CTO talk, February 2025](https://clickhouse.com/videos/auckland-meetup-kami-ingesting-clickstream-data-into-clickhouse), [Auckland Meetup, Head of Data talk, Feburary 2025](https://clickhouse.com/videos/auckland-meetup-kami-evolution-of-kami-data-infrastructure) | — | — |
+| [Klaviyo](https://www.klaviyo.com/) | E-Commerce Marketing Automation Platform | — | [Klaviyo Engineering Blog, Jan 2023](https://klaviyo.tech/adaptive-concurrency-control-for-mixed-analytical-workloads-51350439aeec) , [Klaviyo Engineering Blog, July 2023](https://klaviyo.tech/taking-the-first-sip-an-overview-of-klaviyos-segmentation-improvement-project-7db997f36b39), [video](https://youtu.be/8Sk5iO9HGRY) | 128 nodes | — |
+| [Knock.app](https://knock.app/) | Software | Notifications management | [Twitter, 2024](https://twitter.com/cjbell_/status/1759989849577181356) | — | — |
+| [Kodiak Data](https://www.kodiakdata.com/) | Clouds | Main product | [Slides in Engish, April 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup13/kodiak_data.pdf) | — | — |
+| [Kontur](https://kontur.ru) | Software Development | Metrics | [Talk in Russian, November 2018](https://www.youtube.com/watch?v=U4u4Bd0FtrY) | — | — |
+| [Kopo Kopo](https://kopokopo.co.ke/) | FinTech | Metrics | ClickHouse Cloud user | — | — |
+| [Kuaishou](https://www.kuaishou.com/) | Video | — | [ClickHouse Meetup, October 2018](https://clickhouse.com/blog/en/2018/clickhouse-community-meetup-in-beijing-on-october-28-2018/) | — | — |
+| [Kujiale 酷家乐](https://www.kujiale.com/) | VR smart interior design platform. | Use in log monitoring platform. | [Blog, July 2023](https://juejin.cn/post/7251786922615111740/) | Main cluster is 800+ CPU cores, 4000+ GB RAM. | SSD 140+ TB, HDD 280+ TB. |
+| [Kyligence](https://kyligence.io/) | Managed Service | Main Product | [Website](https://kyligence.io/all-inclusive-olap/) | — | — |
+| [LANCOM Systems](https://www.lancom-systems.com/) | Network Solutions | Traffic analysis | [ClickHouse Operator for Kubernetes](https://www.lancom-systems.com/), [Hacker News post](https://news.ycombinator.com/item?id=29413660) | — | — |
+| [Langchain](https://www.langchain.com/) | Software & Technology | LLM Monitoring | [Blog, Apr 2024](https://clickhouse.com/blog/langchain-why-we-choose-clickhouse-to-power-langchain) | — | — |
+| [LangDB](https://langdb.ai/) | Software & Technology | AI Gateway | [Singapore Meetup talk, February 2025](https://clickhouse.com/videos/singapore-meetup-langdb-building-intelligent-applications-with-clickhouse) | — | — |
+| [LangFuse](https://langfuse.com/) | Software & Technology | LLM Monitoring | [Meetup, March 2025](https://youtu.be/AnghkoucpN0) | — | — |
+| [Langtrace AI](https://www.langtrace.ai/) | Software & Technology | LLM Monitoring | [Twitter, May 2024](https://x.com/karthikkalyan90/status/1790483625743716703) | — | — |
+| [Lago](https://www.getlago.com/) | Billing automation | — | [GitHub Wiki post](https://github.com/getlago/lago/wiki/How-ClickHouse-saved-our-events-engine-problem) | — | — |
+| [Lagon](https://lagon.app/) | Software Development | Serverless Functions | [Twitter, 2023](https://twitter.com/tomlienard/status/1702759256909394010) | — | — |
+| [Last9](https://last9.io/) | Software & Technology | Observability | [Mumbai Meetup, February 2025](https://clickhouse.com/videos/the-telemetry-data-platform-breaking-down-operational-silos) , [Bangalore Meetup, February 2025](https://clickhouse.com/videos/less-war-more-room-last9) , [Blog, April 2025](https://clickhouse.com/blog/last9-clickhouse-delivering-seamless-observability-minus-the-chaos) | — | — |
+| [Laudspeaker](https://laudspeaker.com/) | Software & Technology | Open Source Messaging | [GitHub](https://github.com/laudspeaker/laudspeaker) | — | — |
+| [Lawrence Berkeley National Laboratory](https://www.lbl.gov) | Research | Traffic analysis | [Slides in English, April 2019](https://www.smitasin.com/presentations/2019-04-17_DOE-NSM.pdf) | 5 servers | 55 TiB |
+| [Lever](https://www.lever.co/) | Talent Management | Recruiting | [Hacker News post](https://news.ycombinator.com/item?id=29558544) | — | — |
+| [LifeStreet](https://lifestreet.com/) | Ad network | Main product | [Blog post in Russian, February 2017](https://habr.com/en/post/322620/) | 75 servers (3 replicas) | 5.27 PiB |
+| [LimeChat](https://www.limechat.ai/) | Mobile chat | Whatsapp Commerce | [LinkedIn 2024](https://www.linkedin.com/pulse/scaling-analytics-clickhouse-story-nikhil-gupta-gezcc/) | — | — |
+| [LINE Digital Frontier](https://ldfcorp.com/ja) | Gaming | Real-time Analytics | [Tokyo Meetup, January 2025](https://clickhouse.com/videos/tokyo-meetup-line-from-stateles-servers-to-real-time-analytics) | — | — |
+| [LiteLLM](https://github.com/BerriAI/litellm) | Software | API management | [GitHub](https://github.com/BerriAI/litellm/blob/e7b88c2134a013f527304de29358238a5593f91f/cookbook/misc/clickhouse_insert_logs.py#L4) | | — |
+| [Little Red Book (Xiaohongshu)](http://www.xiaohongshu.com/) | Social Media | Data warehouse | [Presentation, March 2023](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup71/LittleRedBook.pdf) | — | — |
+| [LogfireAI](https://logfire.ai/) | Software & Technology | Monitoring & Observability | [Twitter, March 2024](https://twitter.com/logfire_ai/status/1765947119200841883) | — | — |
+| [LogSnag](https://logsnag.com/) | Software & Technology | Realtime Monitoring | [Interview, December 2022](https://founderbeats.com/shayan-on-building-and-growing-logsnag-as-a-solo-founder) | — | — |
+| [Logtail](https://betterstack.com/logtail) | Cloud, SaaS | Log Management | [Official Website](https://betterstack.com/logtail) | — | — |
+| [Loja Integrada](https://lojaintegrada.com.br/) | E-Commerce | — | [Case Study, March 2023](https://double.cloud/resources/case-studies/lojaintegrada-and-pagali-switch-to-doublecloud-to-make-running-clickhouse-easier) | — | — |
+| [Longbridge Technology](https://longbridge.com/) | E-Commerce | — | [Blog, March 2025](https://clickhouse.com/blog/longbridge-technology-simplifies-their-architecture-and-achieves-10x-performance-boost-with-clickhouse) | — | — |
+| [Lookforsale](https://lookforsale.ru/) | E-Commerce | — | [Job Posting, December 2021](https://telegram.me/javascript_jobs/587318) | — | — |
+| [Loopme](https://loopme.com/) | AdTech | Analytics | [Blog, Aug 2024](https://clickhouse.com/blog/measuring-brand-impact-how-loopme-uses-clickhouse-to-deliver-better-brand-advertising-outcomes) | — | — |
+| [Luabase](https://luabase.com/) | Software | Analytics | [Hacker News, April 2022](https://news.ycombinator.com/item?id=31040190) | — | — |
+| [Lyft](https://lyft.com) | Rideshare | — | [Twitter, July 2023](https://twitter.com/riteshvaryani/status/1685160430606639104) | — | — |
+| [MAXILECT](https://maxilect.com/) | Ad Tech, Blockchain, ML, AI | — | [Job advertisement, 2021](https://www.linkedin.com/feed/update/urn:li:activity:6780842017229430784/) | — | — |
+| [MGID](https://www.mgid.com/) | Ad network | Web-analytics | [Blog post in Russian, April 2020](http://gs-studio.com/news-about-it/32777-—-—clickhouse-—-c) | — | — |
+| [MUX](https://mux.com/) | Online Video | Video Analytics | [Talk in English, August 2019](https://altinity.com/presentations/2019/8/13/how-clickhouse-became-the-default-analytics-database-for-mux/) | — | — |
+| [Mail.ru Cloud Solutions](https://mcs.mail.ru/) | Cloud services | Main product | [Article in Russian](https://mcs.mail.ru/help/db-create/clickhouse#) | — | — |
+| [Marfeel](https://www.marfeel.com/) | Mobile SaaS | — | Job offer, Apr 2022 | — | — |
+| [Marilyn](https://tech.mymarilyn.ru) | Advertising | Statistics | [Talk in Russian, June 2017](https://www.youtube.com/watch?v=iXlIgx2khwc) | — | — |
+| [MasMovil](https://www.masmovil.es/) | Telecom | Telecom services | [Blog](https://clickhouse.com/blog/how-grupo-masmovil-monitors-radio-access-networks-with-clickhouse) | — | — |
+| [Match Systems](https://matchsystems.com/) | Software & Technology | Blockchain Intelligence & AML | [Job Posting, March 2024](https://telegra-ph.translate.goog/Senior-Database-Administrator-11-28?_x_tr_sl=ru&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp) | — | — |
+| [Mello](https://mellodesign.ru/) | Marketing | Analytics | [Article, October 2020](https://vc.ru/marketing/166180-razrabotka-tipovogo-otcheta-skvoznoy-analitiki) | 1 server | — |
+| [Memfault](https://https://memfault.com/) | Software & Technology | IOT Monitoring | [Job Listing, August 2023](https://www.ycombinator.com/companies/memfault/jobs/zALzwIe-backend-engineer-systems-data) | — | — |
+| [cBioPortal](https://www.cbioportal.org/) | Healthcare | Datstore backing portal for cancer genomics | [NYC Meetup, Dec 2023](https://clickhouse.com/videos/fast-answers-in-cancer-research) | — | — |
+| [MessageBird](https://www.messagebird.com) | Telecommunications | Statistics | [Slides in English, November 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup20/messagebird.pdf) | — | — |
+| [Metoda](https://metoda.com/) | Software & Technology | Advertisting | [ClickHouse Meetup, September 2022](https://www.youtube.com/watch?v=uS5uA-aZSlQ&t=1770s) | — | — |
+| [MetricFire](https://www.metricfire.com) | Managed Service | Monitoring | [Blog, November 2022](https://www.metricfire.com/blog/using-clickhouse-with-metricfire) | — | — |
+| [Microsoft — Clarity](https://clarity.microsoft.com/) | Web Analytics | Clarity (Main Product) | [Meetup Video, January 2023](https://www.youtube.com/watch?v=rUVZlquVGw0&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=2) [A question on GitHub](https://github.com/ClickHouse/ClickHouse/issues/21556) | — | — |
+| [Microsoft — Titan](https://www.microsoft.com/) | Software & Technology | Internal Data Analytics (Titan) | [Meetup Video, January 2023](https://www.youtube.com/watch?v=r1ZqjU8ZbNs&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=2) | — | — |
+| [Middleware](https://middleware.io/) | Software | Cloud management | [SF Meetup, March 2024](https://www.youtube.com/watch?v=xCLMuXJWx80&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=10) | — | — |
+| [MindsDB](https://www.mindsdb.com/) | Machine Learning | Main Product | [Official Website](https://www.mindsdb.com/blog/machine-learning-models-as-tables-in-ch) | — | — |
+| [Modeo](https://modeo.ai/) | Software & Technology | Data Engineering | [Blog, June 2023](https://clickhouse.com/blog/driving-sustainable-data-management-with-clickhouse-introducing-stash-by-modeo) | — | — |
+| [moosejs](https://www.moosejs.com/) | Software & Technology | Open-source developer framework | [Blog Post, May 2024](https://www.fiveonefour.com/blog/product-update-2) | — | — |
+| [Motodata](https://www.motadata.com/) | Monitoring | Main Product | [Official Website](https://www.motadata.com/docs) | — | — |
+| [Muse Group](https://mu.se/) | Music Software | Performance Monitoring | [Blog post in Russian, January 2021](https://habr.com/en/post/647079/) | — | — |
+| [MyScale](https://myscale.com/) | Software & Technology | AI Database | [Docs](https://docs.myscale.com/en/overview/) | — | — |
+| [NANO Corp](https://nanocorp.fr/en/) | Software & Technology | NOC as a Service | [Blog Post, July 2022](https://clickhouse.com/blog/from-experimentation-to-production-the-journey-to-supercolumn) | — | — |
+| [NGINX](https://nginx.com/) | Application Delivery Network | NGINX Management Suite | [Documentation](https://docs.nginx.com/nginx-management-suite/admin-guides/getting-started/prerequisites/configure-clickhouse/) | — | — |
+| [NIC Labs](https://niclabs.cl/) | Network Monitoring | RaTA-DNS | [Blog post, March 2021](https://niclabs.cl/ratadns/2021/03/Clickhouse) | — | — |
+| [Nixys](https://nixys.io/) | Software & Technology | DevOps, SRE and DevSecOps | [Blog Post, March 2024](https://habr-com.translate.goog/ru/companies/nixys/articles/801029/?_x_tr_hist=true/ru/companies/nixys/articles/801029/?_x_tr_sl=ru&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp&_x_tr_hist=true) | — | — |
+| [NLMK](https://nlmk.com/en/) | Steel | Monitoring | [Article in Russian, Jan 2022](https://habr.com/en/company/nlmk/blog/645943/) | — | — |
+| [NOC Project](https://getnoc.com/) | Network Monitoring | Analytics | [Official Website](https://getnoc.com/features/big-data/) | Main Product | — |
+| [Nansen](https://www.nansen.ai/) | Finance — Crypto | Analytics | [Press release](https://clickhouse.com/blog/clickhouse-cloud-on-google-cloud-platform-gcp-is-generally-available) | — | — |
+| [Narrative](https://www.trynarrative.com/) | Software & Technology | AI Automation | [Hacker News, May 2024](https://news.ycombinator.com/item?id=40225998) | — | — |
+| [Nationale Databank Wegverkeers](https://www.ndw.nu/) | Software & Technology | Road Traffic Monitoring | [Presentation at Foss4G, August 2019](https://av.tib.eu/media/43434) | — | — |
+| [Nebius](https://nebius.com/il/docs/managed-clickhouse/) | SaaS | Main product | [Official website](https://nebius.com/il/docs/managed-clickhouse/) | — | — |
+| [Neocom](https://www.neocom.ai/) | AI SaaS | Main product | [Job listing](https://news.ycombinator.com/item?id=38497724) | — | — |
+| [Neocom](https://www.neocom.ai/) | Software & Technology | Sales Platform | [Hacker News, September 2023](https://news.ycombinator.com/item?id=37359122) | — | — |
+| [NeonDB](https://neon.tech/) | Cloud | Postgres management | [Blog, 2024](https://double.cloud/resources/case-studies/neon-increases-data-granularity-with-managed-clickhouse/) | — | — |
+| [NetApp Instaclustr](https://www.instaclustr.com/platform/managed-clickhouse/) | Cloud Storage | Analytics | [Documentation](https://www.instaclustr.com/support/documentation/clickhouse/getting-started-with-clickhouse/creating-a-clickhouse-cluster/) | — | — |
+| [NetMeta](https://github.com/monogon-dev/NetMeta/blob/main/README.md) | Observability | Main Product | [Twitter, December 2022](https://twitter.com/leolukde/status/1605643470239977475) | — | — |
+| [Netflix](https://www.netflix.com/) | Software & Technology | Video Streaming | [Meetup, March 2025](https://youtu.be/64TFG_Qt5r4) | — | — |
+| [Netskope](https://www.netskope.com/) | Network Security | — | [Job advertisement, March 2021](https://www.mendeley.com/careers/job/senior-software-developer-backend-developer-1346348) | — | — |
+| [Nexpath Networks](https://www.nexpath.net/) | Software & Technology | Network Analysis | [Slides, September 2021](https://opensips.org/events/Summit-2021Distributed/assets/presentations/2021-jon-abrams-big-telco-data-with-clickhouse.pdf) [Video, September 2021](https://www.youtube.com/watch?v=kyu_wDcO0S4&t=3840s) | — | — |
+| [NineData](https://www.ninedata.cloud/) | Software & Technology | DMaaS | ClickHouse Meetup in Hangzhou, May 2024 | — | — |
+| [Noction](https://www.noction.com) | Network Technology | Main Product | [Official Website](https://www.noction.com/news/irp-3-11-remote-triggered-blackholing-capability) | — | — |
+| [Notionlytics](https://notionlytics.com/) | Software & Technology | Page analytics for Notion | [Twitter, July 2023](https://twitter.com/MaxPrilutskiy/status/1675428469403004928) | — | — |
+| [Ntop](https://www.ntop.org/) | Network Monitoning | Monitoring | [Official website, January 2022](https://www.ntop.org/ntop/historical-traffic-analysis-at-scale-using-clickhouse-with-ntopng/) | — | — |
+| [Nuna Inc.](https://www.nuna.com/) | Health Data Analytics | — | [Talk in English, July 2020](https://youtu.be/GMiXCMFDMow?t=170) | — | — |
+| [Nuon](https://nuon.co/) | Software & Technology | — | [Meetup video](https://youtu.be/2rHfWt6epIQ) | — | — |
+| [Nutanix](https://www.nutanix.com/) | Software & Technology | Main Product | [Slides, March 2024](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-bengaluru/2-Unified_data_platform_with_clickhouse_by_Sachidanad_Gaurav_Nutanix.pdf) | — | — |
+| [Nvidia](https://www.nvidia.com/) | Software & Technology | NVIDIA AI Aerial | [Documentation](https://docs.nvidia.com/aerial/archive/aerial-dt/1.0/text/overview.html#clickhouse) | — | — |
+| [Oden](https://oden.io/) | Software & Technology | Manufacturing | | | |
+| [Oden](https://oden.io/) | Software & Technology | Manufacturing | [Meetup, April 2023](https://www.youtube.com/watch?v=pAKGJDOO6lo) | — | — |
+| [Odoscope](https://www.odoscope.com/) | Software & Technology | Customer Engagement Platform | [Awards Submission, February 2023](https://ecommercegermanyawards.com/vote/164051) | — | — |
+| [Ok.ru](https://ok.ru) | Social Network | — | [SmartData conference, October 2021](https://assets.ctfassets.net/oxjq45e8ilak/4JPHkbJenLgZhBGGyyonFP/57472ec6987003ec4078d0941740703b/____________________ClickHouse_______________________.pdf) | 72 servers | 810 TB compressed, 50bn rows/day, 1.5 TB/day |
+| [OLX India](https://www.olx.in/) | E-commerce | Log Management | [Gurgaon Meetup talk, March 2025](https://clickhouse.com/videos/gurgaon-meetup-olx-india-optimizing-log-management) | — | — |
+| [Omnicomm](https://omnicomm.ru/) | Transportation Monitoring | — | [Facebook post, October 2021](https://www.facebook.com/OmnicommTeam/posts/2824479777774500) | — | — |
+| [OneAPM](https://www.oneapm.com/) | Monitoring and Data Analysis | Main product | [Slides in Chinese, October 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup19/8.%20clickhouse在OneAPM的应用%20杜龙.pdf) | — | — |
+| [One Fact Foundation](https://www.onefact.org/) | Healthcare | CDN/Web data | [GitHub repository](https://github.com/ClickHouse/ClickHouse/issues/67296) | — | 2PB |
+| [OneUptime](https://oneuptime.com/) | Observability platform | Analytics | [GitHub repository](https://github.com/OneUptime/oneuptime) | — | — |
+| [Onepixel.link](https://onepixel.link/) | Software | URL shorterner | [Twitter, 2024](https://twitter.com/championswimmer/status/1759195487134220415) | — | — |
+| [Ongage](https://www.ongage.com/) | Marketing | Analytics | [Blog](https://clickhouse.com/blog/ongages-strategic-shift-to-clickhouse-for-real-time-email-marketing) | — | — |
+| [Ookla](https://www.ookla.com/) | Software & Technology | Network Intelligence | [Presentation at J on the Beach, June 2023](https://www.youtube.com/watch?v=OZ0XpfDM8J0) | — | — |
+| [OONI](https://ooni.org/) | Open Observatory of Network Interference (OONI) | Main product | [Blog, May 2023]( https://clickhouse.com/blog/ooni-analyzes-internet-censorship-data-with-clickhouse)[Twitter August 2022](https://twitter.com/OpenObservatory/status/1558014810746265600?s=20&t=hvcDU-LIrgCApP0rZCzuoA) | — | — |
+| [Open Targets](https://www.opentargets.org/) | Genome Research | Genome Search | [Twitter, October 2021](https://twitter.com/OpenTargets/status/1452570865342758913?s=20), [Blog](https://blog.opentargets.org/graphql/) | — | — |
+| [OpenLIT](https://openlit.io/) | Software & Technology | OTEL Monitoring with AI | [GitHub](https://github.com/openlit/openlit) | — | — |
+| [OpenMeter](https://openmeter.io) | Expense Management | Main product | [Offical blog post, 2023](https://openmeter.io/blog/how-openmeter-uses-clickhouse-for-usage-metering#heading-querying-historical-usage) | — | — |
+| [OpenReplay](https://openreplay.com/) | Product Analytics | Session Replay | [Docs](https://docs.openreplay.com/en/deployment/openreplay-admin/) | — | — |
+| [Opensee](https://opensee.io/) | Financial Analytics | Main product | [Blog Post, February 2022](https://clickhouse.com/blog/opensee-analyzing-terabytes-of-financial-data-a-day-with-clickhouse/) [Blog Post, December 2021](https://opensee.io/news/from-moscow-to-wall-street-the-remarkable-journey-of-clickhouse/) | — | — |
+| [Oppo](https://www.oppo.com/cn/) | Hardware | Consumer Electronics Company | ClickHouse Meetup in Chengdu, April 2024 | — | — |
+| [OpsVerse](https://opsverse.io/) | Observability | — | [Twitter, 2022](https://twitter.com/OpsVerse/status/1584548242100219904) | — | — |
+| [Opstrace](https://opstrace.com/) | Observability | — | [Source code](https://gitlab.com/gitlab-org/opstrace/jaeger-clickhouse/-/blob/main/README.md) | — | — |
+| [Outerbase](https://www.outerbase.com/) | Software & Technology | Database Interface | [Official Website](https://www.outerbase.com/) | — | — |
+| [Oxide](https://oxide.computer/) | Hardware & Software | Server Control Plane | [GitHub Repository](https://github.com/oxidecomputer/omicron) | — | — |
+| [OZON](https://corp.ozon.com/) | E-commerce | — | [Official website](https://job.ozon.ru/vacancy/razrabotchik-clickhouse-ekspluatatsiya-40991870/) | — | — |
+| [PITS Globale Datenrettungsdienste](https://www.pitsdatenrettung.de/) | Data Recovery | Analytics | | — | — |
+| [PRANA](https://prana-system.com/en/) | Industrial predictive analytics | Main product | [News (russian), Feb 2021](https://habr.com/en/news/t/541392/) | — | — |
+| [Pace](https://www.paceapp.com/) | Marketing & Sales | Internal app | ClickHouse Cloud user | — | — |
+| [Panelbear](https://panelbear.com/) | Analytics | Monitoring and Analytics | [Tech Stack, November 2020](https://panelbear.com/blog/tech-stack/) | — | — |
+| [Papermark](https://www.papermark.io/) | Software & Technology | Document Sharing & Analytics | [Twitter, September 2023](https://twitter.com/mfts0/status/1698670144367567263) | — | — |
+| [Parcel Perform](https://www.parcelperform.com/) | E-commerce | Real-Time Analaytics | [Ho Chi Minh Meetup talk, April 2025](https://clickhouse.com/videos/hochiminh-meetup-parcel-perform-clickhouse-at-a-midsize-company) | — | — |
+| [Percent 百分点](https://www.percent.cn/) | Analytics | Main Product | [Slides in Chinese, June 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup24/4.%20ClickHouse万亿数据双中心的设计与实践%20.pdf) | — | — |
+| [Percona](https://www.percona.com/) | Performance analysis | Percona Monitoring and Management | [Official website, Mar 2020](https://www.percona.com/blog/2020/03/30/advanced-query-analysis-in-percona-monitoring-and-management-with-direct-clickhouse-access/) | — | — |
+| [Phare](https://phare.io/) | Uptime Monitoring | Main Product | [Official website, Aug 2023](https://docs.phare.io/changelog/platform/2023#faster-monitoring-statistics) | — | — |
+| [PheLiGe](https://phelige.com/about) | Software & Technology | Genetic Studies | [Academic Paper, November 2020](https://academic.oup.com/nar/article/49/D1/D1347/6007654?login=false) | — | — |
+| [Physics Wallah](https://www.pw.live/) | Education Technology | Real-Time Analytics | [Gurgaon Meetup talk, March 2025](https://clickhouse.com/videos/gurgaon-meetup-clickhouse-at-physics-wallah) | — | — |
+| [PingCAP](https://pingcap.com/) | Analytics | Real-Time Transactional and Analytical Processing | [GitHub, TiFlash/TiDB](https://github.com/pingcap/tiflash) | — | — |
+| [Pirsch](https://pirsch.io/) | Software & Technology | Web Analytics | [Hacker News, April 2023](https://news.ycombinator.com/item?id=35692201) | — | — |
+| [Piwik PRO](https://piwik.pro/) | Web Analytics | — | [Official website, Dec 2018](https://piwik.pro/blog/piwik-pro-clickhouse-faster-efficient-reports/) | — | — |
+| [Plane](https://plane.so/) | Software & Technology | Project Management | [Twitter, September 2023](https://twitter.com/vamsi_kurama/status/1699593472704176441) | — | — |
+| [Plausible](https://plausible.io/) | Analytics | Main Product | [Blog Post, December 2021](https://clickhouse.com/blog/plausible-analytics-uses-click-house-to-power-their-privacy-friendly-google-analytics-alternative) [Twitter, June 2020](https://twitter.com/PlausibleHQ/status/1273889629087969280) | — | — |
+| [PoeticMetric](https://www.poeticmetric.com/) | Metrics | Main Product | Community Slack, April 2022 | — | — |
+| [PQL](https://pql.dev/) | Software & Technology | SQL Query Tool | [Official Website](https://pql.dev/) | — | — |
+| [Portkey AI](https://portkey.ai/) | LLMOps | Main Product | [LinkedIn post, August 2023](https://www.linkedin.com/feed/update/urn:li:activity:7094676373826330626/) | — | — |
+| [PostHog](https://posthog.com/) | Product Analytics | Main Product | [Release Notes, October 2020](https://posthog.com/blog/the-posthog-array-1-15-0), [Blog, November 2021](https://posthog.com/blog/how-we-turned-clickhouse-into-our-eventmansion) | — | — |
+| [Postmates](https://postmates.com/) | Delivery | — | [Talk in English, July 2020](https://youtu.be/GMiXCMFDMow?t=188) | — | — |
+| [Pragma Innovation](http://www.pragma-innovation.fr/) | Telemetry and Big Data Analysis | Main product | [Slides in English, October 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup18/4_pragma_innovation.pdf) | — | — |
+| [Prefect](https://www.prefect.io/) | Software & Technology | Main Product | [Blog, May 2024](https://clickhouse.com/blog/prefect-event-driven-workflow-orchestration-powered-by-clickhouse) | — | — |
+| [Propel](https://www.propeldata.com/) | Analytics | Main product | [Blog, January 2024](https://www.propeldata.com/blog/how-to-store-json-in-clickhouse-the-right-way) | — | — |
+| [Property Finder](https://www.propertyfinder.com/) | Real Estate | — | ClickHouse Cloud user | — | — |
+| [QINGCLOUD](https://www.qingcloud.com/) | Cloud services | Main product | [Slides in Chinese, October 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup19/4.%20Cloud%20%2B%20TSDB%20for%20ClickHouse%20张健%20QingCloud.pdf) | — | — |
+| [Qrator](https://qrator.net) | DDoS protection | Main product | [Blog Post, March 2019](https://blog.qrator.net/en/clickhouse-ddos-mitigation_37/) | — | — |
+| [Qualified](https://www.qualified.com/) | Sales Pipeline Management | Data and Messaging layers | [Job posting, Nov 2022](https://news.ycombinator.com/item?id=33425109) | — | — |
+| [Qube Research & Technologies](https://www.qube-rt.com/) | FinTech | Analysis | ClickHouse Cloud user | — | — |
+| [QuickCheck](https://quickcheck.ng/) | FinTech | Analytics | [Blog post, May 2022](https://clickhouse.com/blog/how-quickcheck-uses-clickhouse-to-bring-banking-to-the-unbanked/) | — | — |
+| [R-Vision](https://rvision.pro/en/) | Information Security | — | [Article in Russian, December 2021](https://www.anti-malware.ru/reviews/R-Vision-SENSE-15) | — | — |
+| [RELEX](https://relexsolutions.com) | Supply Chain Planning | Forecasting | [Meetup Video, December 2022](https://www.youtube.com/watch?v=wyOSMR8l-DI&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=16) [Slides, December 2022](https://presentations.clickhouse.com/meetup65/CRUDy%20OLAP.pdf) | — | — |
+| [Raiffeisenbank](https://www.rbinternational.com/) | Banking | Analytics | [Lecture in Russian, December 2020](https://cs.hse.ru/announcements/421965599.html) | — | — |
+| [Railway](https://railway.app/) | Software & Technology | PaaS Software Tools | [Changelog, May 2023](https://railway.app/changelog/2023-05-19-horizontal-scaling#logs-are-getting-faster) | — | — |
+| [Rambler](https://rambler.ru) | Internet services | Analytics | [Talk in Russian, April 2018](https://medium.com/@ramblertop/разработка-api-clickhouse-для-рамблер-топ-100-f4c7e56f3141) | — | — |
+| [Ramp](https://ramp.com/) | Financial Services | Real-Time Analytics, Fraud Detection | [NYC Meetup, March 2024](https://www.youtube.com/watch?v=7BtUgUb4gCs) | — | — |
+| [Rapid Delivery Analytics](https://rda.team/) | Retail | Analytics | ClickHouse Cloud user | — | — |
+| [Real Estate Analytics](https://rea-global.com/) | Software & Technology | Real-time Analytics | [Singapore meetup, February 2025](https://clickhouse.com/videos/singapore-meetup-real-estate-analytics-clickhouse-journey) , [Blog, April 2025](https://clickhouse.com/blog/how-real-estate-analytics-made-its-data-pipeline-50x-faster-with-clickhouse) | — | — |
+| [Releem](https://releem.com/) | Databases | MySQL management | [Blog 2024](https://releem.com/blog/whats-new-at-releem-june-2023) | — | — |
+| [Replica](https://replicahq.com) | Urban Planning | Analytics | [Job advertisement](https://boards.greenhouse.io/replica/jobs/5547732002?gh_jid=5547732002) | — | — |
+| [Request Metrics](https://requestmetrics.com/) | Software & Technology | Observability | [Hacker News, May 2023](https://news.ycombinator.com/item?id=35982281) | — | — |
+| [Rengage](https://rengage.ai/) | Marketing Analytics | Main product | [Bellevue Meetup, August 2024](https://github.com/user-attachments/files/17135804/Rengage.-.clickhouse.1.pptx) | — | — |
+| [Resmo](https://replicahq.com) | Software & Technology | Cloud Security & Asset Management | | 1 c7g.xlarge node, | |
+| [Retell](https://retell.cc/) | Speech synthesis | Analytics | [Blog Article, August 2020](https://vc.ru/services/153732-kak-sozdat-audiostati-na-vashem-sayte-i-zachem-eto-nuzhno) | — | — |
+| [Rivet](https://rivet.gg/) | Software & Technology | Gamer Server Scaling | [HackerNews, August 2023](https://news.ycombinator.com/item?id=37188659) | — | — |
+| [Roblox](https://www.roblox.com/) | Gaming | Safety operations | [San Francisco Meetup, September 2024](https://github.com/user-attachments/files/17135964/2024-09-05-ClickHouse-Meetup-Roblox.1.pdf) | — | 100M events per day |
+| [Rokt](https://www.rokt.com/) | Software & Technology | eCommerce | [Meetup Video, December 2022](https://www.youtube.com/watch?v=BEP07Edor-0&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=10) [Slides, December 2022](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup67/Building%20the%20future%20of%20reporting%20at%20Rokt.pdf) | — | — |
+| [Rollbar](https://www.rollbar.com) | Software Development | Main Product | [Official Website](https://www.rollbar.com) | — | — |
+| [Rspamd](https://rspamd.com/) | Antispam | Analytics | [Official Website](https://rspamd.com/doc/modules/clickhouse.html) | — | — |
+| [RuSIEM](https://rusiem.com/en) | SIEM | Main Product | [Official Website](https://rusiem.com/en/products/architecture) | — | — |
+| [RunReveal](https://runreveal.com/) | SIEM | Main Product | [SF Meetup, Nov 2023](https://www.youtube.com/watch?v=rVZ9JnbzHTQ&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=25) | — | — |
+| [S7 Airlines](https://www.s7.ru) | Airlines | Metrics, Logging | [Talk in Russian, March 2019](https://www.youtube.com/watch?v=nwG68klRpPg&t=15s) | — | — |
+| [SEMrush](https://www.semrush.com/) | Marketing | Main product | [Slides in Russian, August 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup17/5_semrush.pdf) | — | — |
+| [SESCO Trading](https://www.sescotrading.com/) | Financial | Analysis | ClickHouse Cloud user | — | — |
+| [SGK](http://www.sgk.gov.tr/wps/portal/sgk/tr) | Government Social Security | Analytics | [Slides in English, November 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup35/ClickHouse%20Meetup-Ramazan%20POLAT.pdf) | — | — |
+| [SMI2](https://smi2.ru/) | News | Analytics | [Blog Post in Russian, November 2017](https://habr.com/ru/company/smi2/blog/314558/) | — | — |
+| [Synclite](https://www.synclite.io/) | Software & Technology | Database Replication | [Official Website](https://www.synclite.io/) | — | — |
+| [SQLPad](https://getsqlpad.com/en/introduction/) | Software & Technology | Web-based SQL editor. | [GitHub, March 2023](https://github.com/sqlpad/sqlpad/blob/master/server/package.json#L43) | — | — |
+| [Santiment](https://www.santiment.net) | Behavioral analytics for the crypto market | Main Product | [Github repo](https://github.com/santiment/sanbase2) | — | — |
+| [Sber](https://www.sberbank.com/index) | Banking, Fintech, Retail, Cloud, Media | — | [Job advertisement, March 2021](https://career.habr.com/vacancies/1000073536) | 128 servers | >1 PB |
+| [Scale8](https://scale8.com) | Tag Management and Analytics | Main product | [Source Code](https://github.com/scale8/scale8) | — | — |
+| [Scarf](https://about.scarf.sh/) | Open source analytics | Main product | [Meetup, December 2024](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-san-francisco/ClickHouse%20Meet-up%20talk_%20Scarf%20%26%20Clickhouse.pdf) | — | — |
+| [Scireum GmbH](https://www.scireum.de/) | e-Commerce | Main product | [Talk in German, February 2020](https://www.youtube.com/watch?v=7QWAn5RbyR4) | — | — |
+| [ScrapingBee](https://www.scrapingbee.com/) | Software & Technology | Web scraping API | [Twitter, January 2024](https://twitter.com/PierreDeWulf/status/1745464855723986989) | — | — |
+| [ScratchDB](https://scratchdb.com/) | Software & Technology | Serverless Analytics | [GitHub](https://github.com/scratchdata/ScratchDB) | — | — |
+| [Segment](https://segment.com/) | Data processing | Main product | [Slides, 2019](https://slides.com/abraithwaite/segment-clickhouse) | 9 * i3en.3xlarge nodes 7.5TB NVME SSDs, 96GB Memory, 12 vCPUs | — |
+| [sembot.io](https://sembot.io/) | Shopping Ads | — | A comment on LinkedIn, 2020 | — | — |
+| [Sendinblue](https://www.sendinblue.com/) | Software & Technology | Segmentation | [Blog, February 2023](https://engineering.sendinblue.com/segmentation-to-target-the-right-audience/) | 100 nodes | — |
+| [Sentio](https://www.sentio.xyz/) | Software & Technology | Observability | [Twitter, April 2023](https://twitter.com/qiaokan/status/1650736518955438083) | — | — |
+| [Sentry](https://sentry.io/) | Software Development | Main product | [Blog Post in English, May 2019](https://blog.sentry.io/2019/05/16/introducing-snuba-sentrys-new-search-infrastructure) | — | — |
+| [seo.do](https://seo.do/) | Analytics | Main product | [Slides in English, November 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup35/CH%20Presentation-%20Metehan%20Çetinkaya.pdf) | — | — |
+| [Serif Health](https://www.serifhealth.com/) | Healthcare | Price transparency platform | [Chicago meetup, Sempteber 2019](https://clickhouse.com/videos/price-transparency-made-easy) | — | — |
+| [Serverless](https://www.serverless.com/) | Serverless Apps | Metrics | ClickHouse Cloud user | — | — |
+| [ServiceNow](https://www.servicenow.com/) | Managed Services | Qualitative Mobile Analytics | [Meetup Video, January 2023](https://www.youtube.com/watch?v=b4Pmpx3iRK4&list=PL0Z2YDlm0b3iNDUzpY1S3L_iV4nARda_U&index=6) [Slides, January 2023](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup68/Appsee%20Remodeling%20-%20ClickHouse.pdf) | — | — |
+| [Sewer AI](https://www.sewerai.com/) | Software & Technology | — | ClickHouse Cloud user | — | — |
+| [Shopee](https://www.shopee.com/) | E-Commerce | Distributed Tracing | [Meetup Video, April 2024](https://youtu.be/_BVy-V2wy9s?feature=shared) [Slides, April 2024](https://raw.githubusercontent.com/ClickHouse/clickhouse-presentations/master/2024-meetup-singapore-1/Shopee%20-%20Distributed%20Tracing%20in%20ClickHouse.pdf) [Blog Post, June 2024](https://clickhouse.com/blog/seeing-the-big-picture-shopees-journey-to-distributed-tracing-with-clickhouse) | — | — |
+| [SigNoz](https://signoz.io/) | Observability Platform | Main Product | [Source code](https://github.com/SigNoz/signoz) , [Bangalore Meetup, February 2025](https://clickhouse.com/videos/lessons-from-building-a-scalable-observability-backend) | — | — |
+| [Sina](http://english.sina.com/index.html) | News | — | [Slides in Chinese, October 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup19/6.%20ClickHouse最佳实践%20高鹏_新浪.pdf) | — | — |
+| [Sinch](https://www.sinch.com/) | Software & Technology | Customer Communications Cloud | [HackerNews, May 2023](https://news.ycombinator.com/item?id=36042104) | — | — |
+| [Sipfront](https://www.sipfront.com/) | Software Development | Analytics | [Twitter, October 2021](https://twitter.com/andreasgranig/status/1446404332337913895?s=20) | — | — |
+| [SiteBehaviour Analytics](https://www.sitebehaviour.com/) | Software | Analytics | [Twitter, 2024](https://twitter.com/developer_jass/status/1763023792970883322) | — | — |
+| [Skool](https://www.skool.com/) | Community platform | Behavioral/Experimentation Analytics | [SoCal Meetup, August 2024](https://github.com/user-attachments/files/17081161/ClickHouse.Meetup.pptx) | — | 100m rows/day |
+| [slido](https://www.slido.com/) | Software & Technology | Q&A and Polling | [Meetup, April 2023](https://www.linkedin.com/events/datameetup-3-spotlightondataeng7048914766324473856/about/) | — | — |
+| [Solarwinds](https://www.solarwinds.com/) | Software & Technology | Main product | [Talk in English, March 2018](https://www.youtube.com/watch?v=w8eTlqGEkkw) | — | — |
+| [Sonrai Security](https://sonraisecurity.com/) | Cloud Security | — | Slack comments | — | — |
+| [Spark New Zealand](https://www.spark.co.nz/) | Telecommunications | Security Operations | [Blog Post, Feb 2020](https://blog.n0p.me/2020/02/2020-02-05-dnsmonster/) | — | — |
+| [Spec](https://www.specprotected.com/) | Software & Technology | Online Fraud Detection | [HackerNews, August 2023](https://news.ycombinator.com/item?id=36965317) | — | — |
+| [spectate](https://spectate.net/) | Software & Technology | Monitoring & Incident Management | [Twitter, August 2023](https://twitter.com/BjarnBronsveld/status/1700458569861112110) | — | — |
+| [Splio](https://splio.com/en/) | Software & Technology | Individuation Marketing | [Slack, September 2023](https://clickhousedb.slack.com/archives/C04N3AU38DV/p1693995069023669) | — | — |
+| [Splitbee](https://splitbee.io) | Analytics | Main Product | [Blog Post, Mai 2021](https://splitbee.io/blog/new-pricing) | — | — |
+| [Splunk](https://www.splunk.com/) | Business Analytics | Main product | [Slides in English, January 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup12/splunk.pdf) | — | — |
+| [Spotify](https://www.spotify.com) | Music | Experimentation | [Slides, July 2018](https://www.slideshare.net/glebus/using-clickhouse-for-experimentation-104247173) | — | — |
+| [Staffbase](https://staffbase.com/en/) | Software & Technology | Internal Communications | [ClickHouse Slack, April 2023](https://clickhousedb.slack.com/archives/C04N3AU38DV/p1682781081062859) | — | — |
+| [Staffcop](https://www.staffcop.ru/) | Information Security | Main Product | [Official website, Documentation](https://www.staffcop.ru/sce43) | — | — |
+| [Statsig](https://statsig.com/) | Software & Technology | Real-time analytics | [Video](https://clickhouse.com/videos/statsig) | — | — |
+| [Streamkap](https://streamkap.com/) | Data Platform | — | [Video](https://clickhouse.com/videos/switching-from-elasticsearch-to-clickhouse) | — | — |
+| [Suning](https://www.suning.com/) | E-Commerce | User behaviour analytics | [Blog article](https://www.sohu.com/a/434152235_411876) | — | — |
+| [Superology](https://superology.com/) | Software & Technology | Customer Analytics | [Blog Post, June 2022](https://clickhouse.com/blog/collecting-semi-structured-data-from-kafka-topics-using-clickhouse-kafka-engine) | — | — |
+| [Superwall](https://superwall.me/) | Monetization Tooling | Main product | [Word of mouth, Jan 2022](https://github.com/ClickHouse/ClickHouse/pull/33573) | — | — |
+| [SwarmFarm Robotics](https://www.swarmfarm.com/) | Agriculture & Technology | Main Product | [Meetup Slides](https://github.com/ClickHouse/clickhouse-presentations/blob/master/2024-meetup-melbourne-2/Talk%20Track%202%20-%20Harvesting%20Big%20Data%20at%20SwarmFarm%20Robotics%20-%20Angus%20Ross.pdf) | — | — |
+| [Swetrix](https://swetrix.com) | Analytics | Main Product | [Source code](https://github.com/swetrix/swetrix-api) | — | — |
+| [Swift Navigation](https://www.swiftnav.com/) | Geo Positioning | Data Pipelines | [Job posting, Nov 2022](https://news.ycombinator.com/item?id=33426590) | — | — |
+| [Synerise](https://synerise.com/) | ML&AI | Feature Store | [Presentation, April 2020](https://www.slideshare.net/AndrzejMichaowski/feature-store-solving-antipatterns-in-mlsystems-232829863) | — | — |
+| [Synpse](https://synpse.net/) | Application Management | Main Product | [Twitter, January 2022](https://twitter.com/KRusenas/status/1483571168363880455) | — | — |
+| [Synq](https://www.synq.io) | Software & Technology | Main Product | [Blog Post, July 2023](https://clickhouse.com/blog/building-a-unified-data-platform-with-clickhouse) | — | — |
+| [sumsub](https://sumsub.com/) | Software & Technology | Verification platform | [Meetup, July 2022](https://www.youtube.com/watch?v=F74bBGSMwGo) | — | — |
+| [Talo Game Services](https://trytalo.com) | Gaming Analytics | Event-based player analytics | [Blog, August 2024](https://trytalo.com/blog/events-clickhouse-migration) | — | — |
+| [Tasrie IT Services](https://tasrieit.com) | Software & Technology | Analytics | [Blog, January 2025](https://tasrieit.com/how-tasrie-it-services-uses-clickhouse) | — | — |
+| [TURBOARD](https://www.turboard.com/) | BI Analytics | — | [Official website](https://www.turboard.com/blogs/clickhouse) | — | — |
+| [TeamApt](https://www.teamapt.com/) | FinTech | Data Processing | [Official Website](https://www.teamapt.com/) | — | — |
+| [Teamtailor](https://www.teamtailor.com/en/) | Recruitment Software | — | ClickHouse Cloud user | — | — |
+| [Tekion](https://tekion.com/) | Automotive Retail | Clickstream Analytics | [Blog Post, June 2024](https://clickhouse.com/blog/tekion-adopts-clickhouse-cloud-to-power-application-performance-and-metrics-monitoring) | — | — |
+| [Temporal](https://www.tencentmusic.com/) | Infrastructure software | Observability product | [Bellevue Meetup, August 2024](https://github.com/user-attachments/files/17135746/Temporal.Supercharged.Observability.with.ClickHouse.pdf) | — | — |
+| [Tencent Music Entertainment (TME)](https://www.tencentmusic.com/) | BigData | Data processing | [Blog in Chinese, June 2020](https://cloud.tencent.com/developer/article/1637840) | — | — |
+| [Tencent](https://www.tencent.com) | Big Data | Data processing | [Slides in Chinese, October 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup19/5.%20ClickHouse大数据集群应用_李俊飞腾讯网媒事业部.pdf) | — | — |
+| [Tencent](https://www.tencent.com) | Messaging | Logging | [Talk in Chinese, November 2019](https://youtu.be/T-iVQRuw-QY?t=5050) | — | — |
+| [Teralytics](https://www.teralytics.net/) | Mobility | Analytics | [Tech blog](https://www.teralytics.net/knowledge-hub/visualizing-mobility-data-the-scalability-challenge) | — | — |
+| [Tesla](https://www.tesla.com/) | Electric vehicle and clean energy company | — | [Vacancy description, March 2021](https://news.ycombinator.com/item?id=26306170) | — | — |
+| [The Guild](https://the-guild.dev/) | API Platform | Monitoring | [Blog Post, November 2022](https://clickhouse.com/blog/100x-faster-graphql-hive-migration-from-elasticsearch-to-clickhouse) [Blog](https://the-guild.dev/blog/graphql-hive-and-clickhouse) | — | — |
+| [Theia](https://theia.so/) | Software & Technology | Threat Intelligence | [Twitter, July 2023](https://twitter.com/jreynoldsdev/status/1680639586999980033) | — | — |
+| [ThirdWeb](https://thirdweb.com/) | Software & Technology | Blockchain analysis | ClickHouse Cloud user | — | — |
+| [Timeflow](https://timeflow.systems) | Software | Analytics | [Blog](https://timeflow.systems/why-we-moved-from-druid-to-clickhouse/ ) | — | — |
+| [Timeplus](https://www.timeplus.com/) | Software & Technology | Streaming Analytics | [Meetup, August 2023](https://www.meetup.com/clickhouse-silicon-valley-meetup-group/events/294472987/) | — | — |
+| [Tinybird](https://www.tinybird.co/) | Real-time Data Products | Data processing | [Official website](https://www.tinybird.co/) | — | — |
+| [TrackingPlan](https://www.trackingplan.com/) | Marketing & Sales | Monitoring | ClickHouse Cloud user | — | — |
+| [Traffic Stars](https://trafficstars.com/) | AD network | — | [Slides in Russian, May 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup15/lightning/ninja.pdf) | 300 servers in Europe/US | 1.8 PiB, 700 000 insert rps (as of 2021) |
+| [Trillabit](https://www.trillabit.com/home) | Software & Technology | Business Intelligence | [Blog, January 2023](https://clickhouse.com/blog/trillabit-utilizes-the-power-of-clickhouse-for-fast-scalable-results-within-their-self-service-search-driven-analytics-offering) | — | — |
+| [Trip.com](https://trip.com/) | Travel Services | Logging | [Meetup, March 2023](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup71/Trip.com.pdf) | — | — |
+| [Turkcell](https://www.turkcell.com.tr/) | Telecom | BI Analytics | [YouTube Video](https://www.youtube.com/watch?v=ckvPBgXl82Q) | 2 nodes | 2TB per day, 100TB in total |
+| [Tweeq](https://tweeq.sa/en) | Fintech | Spending Account | [Engineering Blog, May 2024](https://engineering.tweeq.sa/tweeq-data-platform-journey-and-lessons-learned-clickhouse-dbt-dagster-and-superset-fa27a4a61904) | — | — |
+| [Twilio](https://www.twilio.com) | Customer engagement | Twilio SendGrid | [Meetup presentation, September 2024](https://github.com/user-attachments/files/17135790/twilio-sendgrid-clickhouse.1.pdf) | — | 10b events/day |
+| [Tydo](https://www.tydo.com) | Customer intelligence | Customer Segmentation product | [SoCal meetup, August 2024](https://github.com/user-attachments/files/17081169/Tydo_ClickHouse.Presentation.8_21.pdf) | — | — |
+| [URLsLab](https://www.urlslab.com/) | Software & Technology | WordPress Plugin | [Twitter, July 2023](https://twitter.com/Yasha_br/status/1680224776302784514) , [Twitter, September 2023](https://twitter.com/Yasha_br/status/1698724654339215812) | — | — |
+| [UTMSTAT](https://hello.utmstat.com/) | Analytics | Main product | [Blog post, June 2020](https://vc.ru/tribuna/133956-striming-dannyh-iz-servisa-skvoznoy-analitiki-v-clickhouse) | — | — |
+| [Uber](https://www.uber.com) | Taxi | Logging | [Slides, February 2020](https://presentations.clickhouse.com/meetup40/uber.pdf) | — | — |
+| [Uptrace](https://uptrace.dev/) | Software | Tracing Solution | [Official website, March 2021](https://uptrace.dev/open-source/) | — | — |
+| [UseTech](https://usetech.com/) | Software Development | — | [Job Posting, December 2021](https://vk.com/wall136266658_2418) | — | — |
+| [Usermaven](https://usermaven.com/) | Product Analytics | Main Product | [HackerNews, January 2023](https://news.ycombinator.com/item?id=34404706) | — | — |
+| [VKontakte](https://vk.com) | Social Network | Statistics, Logging | [Slides in Russian, August 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup17/3_vk.pdf) | — | — |
+| [VKontech](https://vkontech.com/) | Distributed Systems | Migrating from MongoDB | [Blog, January 2022](https://vkontech.com/migrating-your-reporting-queries-from-a-general-purpose-db-mongodb-to-a-data-warehouse-clickhouse-performance-overview/) | — | — |
+| [VMware](https://www.vmware.com/) | Cloud | VeloCloud, SDN | [Product documentation](https://docs.vmware.com/en/vRealize-Operations-Manager/8.3/com.vmware.vcom.metrics.doc/GUID-A9AD72E1-C948-4CA2-971B-919385AB3CA8.html) | — | — |
+| [Valueleaf Services Pvt.Ltd](http://valueleaf.com/) | Software & Technology | Martech platform, Ads platform and Loan aggregator platform | [ClickHouse Slack, April 2023](https://clickhousedb.slack.com/archives/C04N3AU38DV/p1681122299263959) | — | — |
+| [Vantage](https://www.vantage.sh/) | Software & Technology | Cloud Cost Management | [Meetup, April 2023](https://www.youtube.com/watch?v=gBgXcHM_ldc) , [ClickHouse Blog, June 2023](https://clickhouse.com/blog/nyc-meetup-report-vantages-journey-from-redshift-and-postgres-to-clickhouse) | — | — |
+| [Velvet](https://www.usevelvet.com/) | Database management | Main product | [Job listing](https://news.ycombinator.com/item?id=38492272) | — | — |
+| [Vercel](https://vercel.com/) | Traffic and Performance Analytics | — | Direct reference, October 2021 | — | — |
+| [Vexo](https://www.vexo.co/) | App development | Analytics | [Twitter, December 2023](https://twitter.com/FalcoAgustin/status/1737161334213546279) | — | — |
+| [Vidazoo](https://www.vidazoo.com/) | Advertising | Analytics | ClickHouse Cloud user | — | — |
+| [Vimeo](https://vimeo.com/) | Video hosting | Analytics | [Blog post](https://medium.com/vimeo-engineering-blog/clickhouse-is-in-the-house-413862c8ac28) | — | — |
+| [Visiology](https://visiology.com/) | Business intelligence | Analytics | [Company website](https://visiology.com/) | — | — |
+| [Voltmetrix](https://voltmetrix.com/) | Database management | Main product | [Blog post](https://voltmetrix.com/blog/voltmetrix-iot-manufacturing-use-case/) | — | — |
+| [Voltus](https://www.voltus.co/) | Energy | — | [Blog Post, Aug 2022](https://medium.com/voltus-engineering/migrating-kafka-to-amazon-msk-1f3a7d45b5f2) | — | — |
+| [W3 Analytics](https://w3analytics.hottoshotto.com/) | Blockchain | Dashboards for NFT analytics | [Community Slack, July 2023](https://clickhousedb.slack.com/archives/CU170QE9H/p1689907164648339) | — | — |
+| [WSPR Live](https://wspr.live/) | Software & Technology | WSPR Spot Data | [Twitter, April 2023](https://twitter.com/HB9VQQ/status/1652723207475015680) | — | — |
+| [Waitlyst](https://waitlyst.co/) | Software & Technology | AI Customer Journey Management | [Twitter, June 2023](https://twitter.com/aaronkazah/status/1668261900554051585) | — | — |
+| [Walmart Labs](https://www.walmartlabs.com/) | Internet, Retail | — | [Talk in English, July 2020](https://youtu.be/GMiXCMFDMow?t=144) | — | — |
+| [WanShanData](http://wanshandata.com/home) | Software & Technology | Main Product | [Meetup Slides in Chinese](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup56/wanshandata.pdf) | — | — |
+| [Wargaming](https://wargaming.com/en/) | Games | | [Interview](https://habr.com/en/post/496954/) | — | — |
+| [WebGazer](https://www.webgazer.io/) | Uptime Monitoring | Main Product | Community Slack, April 2022 | — | — |
+| [WebScrapingHQ](https://www.webscrapinghq.com/) | Software & Technology | Web scraping API | [X, Novemeber 2024](https://x.com/harsh_maur/status/1862129151806968054) | — | — |
+| [Weights & Biases](https://wandb.ai/site) | Software & Technology | LLM Monitoring | [Twitter, April 2024](https://github.com/user-attachments/files/17157064/Lukas.-.Clickhouse.pptx) | — | — |
+| [Wildberries](https://www.wildberries.ru/) | E-commerce | | [Official website](https://it.wildberries.ru/) | — | — |
+| [Wisebits](https://wisebits.com/) | IT Solutions | Analytics | [Slides in Russian, May 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup22/strategies.pdf) | — | — |
+| [Workato](https://www.workato.com/) | Automation Software | — | [Talk in English, July 2020](https://youtu.be/GMiXCMFDMow?t=334) | — | — |
+| [Wowza](https://www.wowza.com/) | Video Platform | Streaming Analytics | ClickHouse Cloud user | — | — |
+| [Wundergraph](https://wundergraph.com/) | Software & Technology | API Platform | [Twitter, February 2023](https://twitter.com/dustindeus/status/1628757807913750531) | — | — |
+| [Xata](https://xata.io/) | Software & Technology | SaaS observability dashboard | [Twitter, March 2024](https://x.com/tudor_g/status/1770517054971318656) | — | — |
+| [Xenoss](https://xenoss.io/) | Martech, Adtech development | — | [Official website](https://xenoss.io/big-data-solution-development) | — | — |
+| [Xiaoxin Tech](http://www.xiaoxintech.cn/) | Education | Common purpose | [Slides in English, November 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup33/sync-clickhouse-with-mysql-mongodb.pptx) | — | — |
+| [Ximalaya](https://www.ximalaya.com/) | Audio sharing | OLAP | [Slides in English, November 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup33/ximalaya.pdf) | — | — |
+| [YTsaurus](https://ytsaurus.tech/) | Distributed Storage and Processing | Main product | [Main website](https://ytsaurus.tech/) | — | — |
+| [Yandex Cloud](https://cloud.yandex.ru/services/managed-clickhouse) | Public Cloud | Main product | [Talk in Russian, December 2019](https://www.youtube.com/watch?v=pgnak9e_E0o) | — | — |
+| [Yandex DataLens](https://cloud.yandex.ru/services/datalens) | Business Intelligence | Main product | [Slides in Russian, December 2019](https://presentations.clickhouse.com/meetup38/datalens.pdf) | — | — |
+| [Yandex Market](https://market.yandex.ru/) | e-Commerce | Metrics, Logging | [Talk in Russian, January 2019](https://youtu.be/_l1qP0DyBcA?t=478) | — | — |
+| [Yandex Metrica](https://metrica.yandex.com) | Web analytics | Main product | [Slides, February 2020](https://presentations.clickhouse.com/meetup40/introduction/#13) | 630 servers in one cluster, 360 servers in another cluster, 1862 servers in one department | 133 PiB / 8.31 PiB / 120 trillion records |
+| [Yellowfin](https://www.yellowfinbi.com) | Analytics | Main product | [Integration](https://www.yellowfinbi.com/campaign/yellowfin-9-whats-new#el-30219e0e) | — | — |
+| [Yotascale](https://www.yotascale.com/) | Cloud | Data pipeline | [LinkedIn (Accomplishments)](https://www.linkedin.com/in/adilsaleem/) | — | 2 bn records/day |
+| [Your Analytics](https://www.your-analytics.org/) | Product Analytics | Main Product | [Twitter, November 2021](https://twitter.com/mikenikles/status/1459737241165565953) | — | — |
+| [Zagrava Trading](https://zagravagames.com/en/) | — | — | [Job offer, May 2021](https://twitter.com/datastackjobs/status/1394707267082063874) | — | — |
+| [Zappi](https://www.zappi.io/web/) | Software & Technology | Market Research | [Twitter Post, June 2024](https://x.com/HermanLangner/status/1805870318218580004)) | — | — |
+| [Zerodha](https://zerodha.tech/) | Stock Broker | Logging | [Blog, March 2023](https://zerodha.tech/blog/logging-at-zerodha/) | — | — |
+| [Zing Data](https://getzingdata.com/) | Software & Technology | Business Intelligence | [Blog, May 2023](https://clickhouse.com/blog/querying-clickhouse-on-your-phone-with-zing-data) | — | — |
+| [Zipy](https://www.zipy.ai/) | Software & Technology | User session debug | [Blog, April 2023](https://www.zipy.ai/blog/deep-dive-into-clickhouse) | — | — |
+| [Zomato](https://www.zomato.com/) | Online food ordering | Logging | [Blog, July 2023](https://www.zomato.com/blog/building-a-cost-effective-logging-platform-using-clickhouse-for-petabyte-scale) | — | — |
+| [Zomato](https://www.zomato.com/ncr/golf-course-order-online) | Food & Beverage | Food Delivery | [Blog 2024](https://blog.zomato.com/building-a-cost-effective-logging-platform-using-clickhouse-for-petabyte-scale) | — | — |
+| [Zoox](https://zoox.com/) | Software & Technology | Observability | [Job listing](https://www.linkedin.com/jobs/view/senior-software-engineer-observability-at-zoox-4139400247) | — | — |
+| [АС "Стрела"](https://magenta-technology.ru/sistema-upravleniya-marshrutami-inkassacii-as-strela/) | Transportation | — | [Job posting, Jan 2022](https://vk.com/topic-111905078_35689124?post=3553) | — | — |
+| [ДомКлик](https://domclick.ru/) | Real Estate | — | [Article in Russian, October 2021](https://habr.com/ru/company/domclick/blog/585936/) | — | — |
+| [МКБ](https://mkb.ru/) | Bank | Web-system monitoring | [Slides in Russian, September 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup28/mkb.pdf) | — | — |
+| [ООО «МПЗ Богородский»](https://shop.okraina.ru/) | Agriculture | — | [Article in Russian, November 2020](https://cloud.yandex.ru/cases/okraina) | — | — |
+| [ЦВТ](https://htc-cs.ru/) | Software Development | Metrics, Logging | [Blog Post, March 2019, in Russian](https://vc.ru/dev/62715-kak-my-stroili-monitoring-na-prometheus-clickhouse-i-elk) | — | — |
+| [ЦФТ](https://cft.ru/) | Banking, Financial products, Payments | — | [Meetup in Russian, April 2020](https://team.cft.ru/events/162) | — | — |
+| [Цифровой Рабочий](https://promo.croc.ru/digitalworker) | Industrial IoT, Analytics | — | [Blog post in Russian, March 2021](https://habr.com/en/company/croc/blog/548018/) | — | — |
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/beta-and-experimental-features.md b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/beta-and-experimental-features.md
new file mode 100644
index 00000000000..31d7bac6755
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/beta-and-experimental-features.md
@@ -0,0 +1,168 @@
+---
+'sidebar_position': 1
+'sidebar_label': '베타 기능 및 실험적'
+'title': '베타 및 실험적 기능'
+'description': 'ClickHouse에는 베타 및 실험적 기능이 있습니다. 이 문서 페이지는 정의에 대해 논의합니다.'
+'slug': '/beta-and-experimental-features'
+'doc_type': 'reference'
+---
+
+ClickHouse는 오픈 소스이기 때문에 ClickHouse 직원뿐만 아니라 커뮤니티에서도 많은 기여를 받고 있습니다. 이러한 기여는 종종 서로 다른 속도로 개발되며, 특정 기능은 충분한 프로토타입 단계나 커뮤니티 피드백과 반복을 위해 긴 시간이 필요하여 일반적으로 사용 가능한 상태(GA)로 간주되기까지 시간이 걸릴 수 있습니다.
+
+기능이 일반적으로 사용 가능하게 분류되는 시점에 대한 불확실성으로 인해, 우리는 기능을 두 가지 범주로 구분합니다: **베타(Beta)**와 **실험적(Experimental)**.
+
+**베타** 기능은 ClickHouse 팀에 의해 공식적으로 지원됩니다. **실험적** 기능은 ClickHouse 팀이나 커뮤니티가 주도하는 초기 프로토타입으로, 공식적으로 지원되지 않습니다.
+
+아래 섹션에서는 **베타**와 **실험적** 기능의 속성을 명시적으로 설명합니다:
+
+## 베타 기능 {#beta-features}
+
+- 일반적으로 사용 가능(GA)하도록 활발히 개발 중
+- 주요 알려진 문제는 GitHub에서 추적할 수 있음
+- 기능은 미래에 변경될 수 있음
+- ClickHouse Cloud에서 사용 가능할 수 있음
+- ClickHouse 팀이 베타 기능을 지원함
+
+아래는 ClickHouse Cloud에서 베타로 간주되며 사용 가능한 기능입니다.
+
+참고: 최근에 도입된 기능을 사용하려면 ClickHouse의 [compatibility](/operations/settings/settings#compatibility) 설정이 현재 버전을 사용하고 있는지 확인하십시오.
+
+## 실험적 기능 {#experimental-features}
+
+- GA가 되지 않을 수 있음
+- 제거될 수 있음
+- 중단된 변경을 도입할 수 있음
+- 기능은 향후 변경될 수 있음
+- 고의적으로 활성화해야 함
+- ClickHouse 팀은 **실험적** 기능을 지원하지 않음
+- 중요한 기능 및 문서가 부족할 수 있음
+- 클라우드에서는 활성화할 수 없음
+
+참고: 위에 나열된 베타 외의 추가 실험적 기능은 ClickHouse Cloud에서 활성화될 수 없습니다.
+
+
+
+
+## 베타 설정 {#beta-settings}
+
+| 이름 | 기본값 |
+|------|--------|
+| [geotoh3_argument_order](/operations/settings/settings#geotoh3_argument_order) | `lat_lon` |
+| [enable_lightweight_update](/operations/settings/settings#enable_lightweight_update) | `1` |
+| [allow_experimental_correlated_subqueries](/operations/settings/settings#allow_experimental_correlated_subqueries) | `1` |
+| [allow_experimental_parallel_reading_from_replicas](/operations/settings/settings#allow_experimental_parallel_reading_from_replicas) | `0` |
+| [parallel_replicas_mode](/operations/settings/settings#parallel_replicas_mode) | `read_tasks` |
+| [parallel_replicas_count](/operations/settings/settings#parallel_replicas_count) | `0` |
+| [parallel_replica_offset](/operations/settings/settings#parallel_replica_offset) | `0` |
+| [parallel_replicas_custom_key](/operations/settings/settings#parallel_replicas_custom_key) | `` |
+| [parallel_replicas_custom_key_range_lower](/operations/settings/settings#parallel_replicas_custom_key_range_lower) | `0` |
+| [parallel_replicas_custom_key_range_upper](/operations/settings/settings#parallel_replicas_custom_key_range_upper) | `0` |
+| [cluster_for_parallel_replicas](/operations/settings/settings#cluster_for_parallel_replicas) | `` |
+| [parallel_replicas_allow_in_with_subquery](/operations/settings/settings#parallel_replicas_allow_in_with_subquery) | `1` |
+| [parallel_replicas_for_non_replicated_merge_tree](/operations/settings/settings#parallel_replicas_for_non_replicated_merge_tree) | `0` |
+| [parallel_replicas_min_number_of_rows_per_replica](/operations/settings/settings#parallel_replicas_min_number_of_rows_per_replica) | `0` |
+| [parallel_replicas_prefer_local_join](/operations/settings/settings#parallel_replicas_prefer_local_join) | `1` |
+| [parallel_replicas_mark_segment_size](/operations/settings/settings#parallel_replicas_mark_segment_size) | `0` |
+| [parallel_replicas_local_plan](/operations/settings/settings#parallel_replicas_local_plan) | `1` |
+| [parallel_replicas_index_analysis_only_on_coordinator](/operations/settings/settings#parallel_replicas_index_analysis_only_on_coordinator) | `1` |
+| [parallel_replicas_support_projection](/operations/settings/settings#parallel_replicas_support_projection) | `1` |
+| [parallel_replicas_only_with_analyzer](/operations/settings/settings#parallel_replicas_only_with_analyzer) | `1` |
+| [parallel_replicas_insert_select_local_pipeline](/operations/settings/settings#parallel_replicas_insert_select_local_pipeline) | `1` |
+| [parallel_replicas_connect_timeout_ms](/operations/settings/settings#parallel_replicas_connect_timeout_ms) | `300` |
+| [allow_experimental_database_iceberg](/operations/settings/settings#allow_experimental_database_iceberg) | `0` |
+| [allow_experimental_database_unity_catalog](/operations/settings/settings#allow_experimental_database_unity_catalog) | `0` |
+| [allow_experimental_database_glue_catalog](/operations/settings/settings#allow_experimental_database_glue_catalog) | `0` |
+| [session_timezone](/operations/settings/settings#session_timezone) | `` |
+| [low_priority_query_wait_time_ms](/operations/settings/settings#low_priority_query_wait_time_ms) | `1000` |
+| [allow_experimental_delta_kernel_rs](/operations/settings/settings#allow_experimental_delta_kernel_rs) | `1` |
+
+
+## 실험적 설정 {#experimental-settings}
+
+| 이름 | 기본값 |
+|------|--------|
+| [allow_experimental_replacing_merge_with_cleanup](/operations/settings/merge-tree-settings#allow_experimental_replacing_merge_with_cleanup) | `0` |
+| [allow_experimental_reverse_key](/operations/settings/merge-tree-settings#allow_experimental_reverse_key) | `0` |
+| [allow_remote_fs_zero_copy_replication](/operations/settings/merge-tree-settings#allow_remote_fs_zero_copy_replication) | `0` |
+| [enable_replacing_merge_with_cleanup_for_min_age_to_force_merge](/operations/settings/merge-tree-settings#enable_replacing_merge_with_cleanup_for_min_age_to_force_merge) | `0` |
+| [force_read_through_cache_for_merges](/operations/settings/merge-tree-settings#force_read_through_cache_for_merges) | `0` |
+| [merge_selector_algorithm](/operations/settings/merge-tree-settings#merge_selector_algorithm) | `Simple` |
+| [notify_newest_block_number](/operations/settings/merge-tree-settings#notify_newest_block_number) | `0` |
+| [part_moves_between_shards_delay_seconds](/operations/settings/merge-tree-settings#part_moves_between_shards_delay_seconds) | `30` |
+| [part_moves_between_shards_enable](/operations/settings/merge-tree-settings#part_moves_between_shards_enable) | `0` |
+| [remote_fs_zero_copy_path_compatible_mode](/operations/settings/merge-tree-settings#remote_fs_zero_copy_path_compatible_mode) | `0` |
+| [remote_fs_zero_copy_zookeeper_path](/operations/settings/merge-tree-settings#remote_fs_zero_copy_zookeeper_path) | `/clickhouse/zero_copy` |
+| [remove_rolled_back_parts_immediately](/operations/settings/merge-tree-settings#remove_rolled_back_parts_immediately) | `1` |
+| [shared_merge_tree_activate_coordinated_merges_tasks](/operations/settings/merge-tree-settings#shared_merge_tree_activate_coordinated_merges_tasks) | `0` |
+| [shared_merge_tree_enable_coordinated_merges](/operations/settings/merge-tree-settings#shared_merge_tree_enable_coordinated_merges) | `0` |
+| [shared_merge_tree_enable_keeper_parts_extra_data](/operations/settings/merge-tree-settings#shared_merge_tree_enable_keeper_parts_extra_data) | `0` |
+| [shared_merge_tree_merge_coordinator_election_check_period_ms](/operations/settings/merge-tree-settings#shared_merge_tree_merge_coordinator_election_check_period_ms) | `30000` |
+| [shared_merge_tree_merge_coordinator_factor](/operations/settings/merge-tree-settings#shared_merge_tree_merge_coordinator_factor) | `1.1` |
+| [shared_merge_tree_merge_coordinator_fetch_fresh_metadata_period_ms](/operations/settings/merge-tree-settings#shared_merge_tree_merge_coordinator_fetch_fresh_metadata_period_ms) | `10000` |
+| [shared_merge_tree_merge_coordinator_max_merge_request_size](/operations/settings/merge-tree-settings#shared_merge_tree_merge_coordinator_max_merge_request_size) | `20` |
+| [shared_merge_tree_merge_coordinator_max_period_ms](/operations/settings/merge-tree-settings#shared_merge_tree_merge_coordinator_max_period_ms) | `10000` |
+| [shared_merge_tree_merge_coordinator_merges_prepare_count](/operations/settings/merge-tree-settings#shared_merge_tree_merge_coordinator_merges_prepare_count) | `100` |
+| [shared_merge_tree_merge_coordinator_min_period_ms](/operations/settings/merge-tree-settings#shared_merge_tree_merge_coordinator_min_period_ms) | `1` |
+| [shared_merge_tree_merge_worker_fast_timeout_ms](/operations/settings/merge-tree-settings#shared_merge_tree_merge_worker_fast_timeout_ms) | `100` |
+| [shared_merge_tree_merge_worker_regular_timeout_ms](/operations/settings/merge-tree-settings#shared_merge_tree_merge_worker_regular_timeout_ms) | `10000` |
+| [shared_merge_tree_virtual_parts_discovery_batch](/operations/settings/merge-tree-settings#shared_merge_tree_virtual_parts_discovery_batch) | `1` |
+| [allow_experimental_time_time64_type](/operations/settings/settings#allow_experimental_time_time64_type) | `0` |
+| [allow_experimental_kafka_offsets_storage_in_keeper](/operations/settings/settings#allow_experimental_kafka_offsets_storage_in_keeper) | `0` |
+| [allow_experimental_delta_lake_writes](/operations/settings/settings#allow_experimental_delta_lake_writes) | `0` |
+| [allow_experimental_materialized_postgresql_table](/operations/settings/settings#allow_experimental_materialized_postgresql_table) | `0` |
+| [allow_experimental_funnel_functions](/operations/settings/settings#allow_experimental_funnel_functions) | `0` |
+| [allow_experimental_nlp_functions](/operations/settings/settings#allow_experimental_nlp_functions) | `0` |
+| [allow_experimental_hash_functions](/operations/settings/settings#allow_experimental_hash_functions) | `0` |
+| [allow_experimental_time_series_table](/operations/settings/settings#allow_experimental_time_series_table) | `0` |
+| [allow_experimental_codecs](/operations/settings/settings#allow_experimental_codecs) | `0` |
+| [throw_on_unsupported_query_inside_transaction](/operations/settings/settings#throw_on_unsupported_query_inside_transaction) | `1` |
+| [wait_changes_become_visible_after_commit_mode](/operations/settings/settings#wait_changes_become_visible_after_commit_mode) | `wait_unknown` |
+| [implicit_transaction](/operations/settings/settings#implicit_transaction) | `0` |
+| [grace_hash_join_initial_buckets](/operations/settings/settings#grace_hash_join_initial_buckets) | `1` |
+| [grace_hash_join_max_buckets](/operations/settings/settings#grace_hash_join_max_buckets) | `1024` |
+| [join_to_sort_minimum_perkey_rows](/operations/settings/settings#join_to_sort_minimum_perkey_rows) | `40` |
+| [join_to_sort_maximum_table_rows](/operations/settings/settings#join_to_sort_maximum_table_rows) | `10000` |
+| [allow_experimental_join_right_table_sorting](/operations/settings/settings#allow_experimental_join_right_table_sorting) | `0` |
+| [allow_statistics_optimize](/operations/settings/settings#allow_statistics_optimize) | `0` |
+| [allow_experimental_statistics](/operations/settings/settings#allow_experimental_statistics) | `0` |
+| [use_statistics_cache](/operations/settings/settings#use_statistics_cache) | `0` |
+| [allow_experimental_full_text_index](/operations/settings/settings#allow_experimental_full_text_index) | `0` |
+| [allow_experimental_window_view](/operations/settings/settings#allow_experimental_window_view) | `0` |
+| [window_view_clean_interval](/operations/settings/settings#window_view_clean_interval) | `60` |
+| [window_view_heartbeat_interval](/operations/settings/settings#window_view_heartbeat_interval) | `15` |
+| [wait_for_window_view_fire_signal_timeout](/operations/settings/settings#wait_for_window_view_fire_signal_timeout) | `10` |
+| [stop_refreshable_materialized_views_on_startup](/operations/settings/settings#stop_refreshable_materialized_views_on_startup) | `0` |
+| [allow_experimental_database_materialized_postgresql](/operations/settings/settings#allow_experimental_database_materialized_postgresql) | `0` |
+| [allow_experimental_qbit_type](/operations/settings/settings#allow_experimental_qbit_type) | `0` |
+| [allow_experimental_query_deduplication](/operations/settings/settings#allow_experimental_query_deduplication) | `0` |
+| [allow_experimental_database_hms_catalog](/operations/settings/settings#allow_experimental_database_hms_catalog) | `0` |
+| [allow_experimental_kusto_dialect](/operations/settings/settings#allow_experimental_kusto_dialect) | `0` |
+| [allow_experimental_prql_dialect](/operations/settings/settings#allow_experimental_prql_dialect) | `0` |
+| [enable_adaptive_memory_spill_scheduler](/operations/settings/settings#enable_adaptive_memory_spill_scheduler) | `0` |
+| [allow_experimental_insert_into_iceberg](/operations/settings/settings#allow_experimental_insert_into_iceberg) | `0` |
+| [allow_experimental_iceberg_compaction](/operations/settings/settings#allow_experimental_iceberg_compaction) | `0` |
+| [write_full_path_in_iceberg_metadata](/operations/settings/settings#write_full_path_in_iceberg_metadata) | `0` |
+| [iceberg_metadata_compression_method](/operations/settings/settings#iceberg_metadata_compression_method) | `` |
+| [make_distributed_plan](/operations/settings/settings#make_distributed_plan) | `0` |
+| [distributed_plan_execute_locally](/operations/settings/settings#distributed_plan_execute_locally) | `0` |
+| [distributed_plan_default_shuffle_join_bucket_count](/operations/settings/settings#distributed_plan_default_shuffle_join_bucket_count) | `8` |
+| [distributed_plan_default_reader_bucket_count](/operations/settings/settings#distributed_plan_default_reader_bucket_count) | `8` |
+| [distributed_plan_force_exchange_kind](/operations/settings/settings#distributed_plan_force_exchange_kind) | `` |
+| [distributed_plan_max_rows_to_broadcast](/operations/settings/settings#distributed_plan_max_rows_to_broadcast) | `20000` |
+| [allow_experimental_ytsaurus_table_engine](/operations/settings/settings#allow_experimental_ytsaurus_table_engine) | `0` |
+| [allow_experimental_ytsaurus_table_function](/operations/settings/settings#allow_experimental_ytsaurus_table_function) | `0` |
+| [allow_experimental_ytsaurus_dictionary_source](/operations/settings/settings#allow_experimental_ytsaurus_dictionary_source) | `0` |
+| [distributed_plan_force_shuffle_aggregation](/operations/settings/settings#distributed_plan_force_shuffle_aggregation) | `0` |
+| [enable_join_runtime_filters](/operations/settings/settings#enable_join_runtime_filters) | `0` |
+| [join_runtime_filter_exact_values_limit](/operations/settings/settings#join_runtime_filter_exact_values_limit) | `10000` |
+| [join_runtime_bloom_filter_bytes](/operations/settings/settings#join_runtime_bloom_filter_bytes) | `524288` |
+| [join_runtime_bloom_filter_hash_functions](/operations/settings/settings#join_runtime_bloom_filter_hash_functions) | `3` |
+| [rewrite_in_to_join](/operations/settings/settings#rewrite_in_to_join) | `0` |
+| [allow_experimental_time_series_aggregate_functions](/operations/settings/settings#allow_experimental_time_series_aggregate_functions) | `0` |
+| [promql_database](/operations/settings/settings#promql_database) | `` |
+| [promql_table](/operations/settings/settings#promql_table) | `` |
+| [promql_evaluation_time](/operations/settings/settings#promql_evaluation_time) | `auto` |
+| [allow_experimental_alias_table_engine](/operations/settings/settings#allow_experimental_alias_table_engine) | `0` |
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/beta-and-experimental-features.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/beta-and-experimental-features.md.hash
new file mode 100644
index 00000000000..e93dc279328
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/beta-and-experimental-features.md.hash
@@ -0,0 +1 @@
+79093daf423d9087
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/cloud.md b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/cloud.md
new file mode 100644
index 00000000000..79e5c9adaaa
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/cloud.md
@@ -0,0 +1,61 @@
+---
+'slug': '/about-us/cloud'
+'sidebar_label': '클라우드 서비스'
+'sidebar_position': 10
+'description': 'ClickHouse Cloud'
+'title': 'ClickHouse Cloud'
+'keywords':
+- 'ClickHouse Cloud'
+- 'cloud database'
+- 'managed ClickHouse'
+- 'serverless database'
+- 'cloud OLAP'
+'doc_type': 'reference'
+---
+
+
+
+# ClickHouse Cloud
+
+ClickHouse Cloud는 인기 있는 오픈 소스 OLAP 데이터베이스 ClickHouse의 원래 제작자가 만든 클라우드 서비스입니다.
+[무료 평가판 시작하기](https://console.clickhouse.cloud/signUp)를 통해 ClickHouse Cloud를 경험해 보세요.
+
+## ClickHouse Cloud 이점 {#clickhouse-cloud-benefits}
+
+ClickHouse Cloud를 사용할 때의 몇 가지 이점은 아래에 설명되어 있습니다:
+
+- **빠른 가치 실현**: 클러스터를 크기 조정하고 확장할 필요 없이 즉시 구축을 시작할 수 있습니다.
+- **매끄러운 확장성**: 자동 확장이 가변 워크로드에 맞춰 조정되므로 최대 사용량을 위해 과도하게 프로비저닝할 필요가 없습니다.
+- **서버리스 운영**: 크기 조정, 보안, 신뢰성 및 업그레이드에 대한 걱정을 덜 수 있습니다.
+- **투명한 가격 책정**: 사용한 만큼만 비용을 지불하며, 자원 예약 및 확장 제어를 제공합니다.
+- **총 소유 비용**: 가장 좋은 가격/성능 비율과 낮은 관리 비용.
+- **폭넓은 생태계**: 좋아하는 데이터 커넥터, 시각화 도구, SQL 및 언어 클라이언트를 함께 가져올 수 있습니다.
+
+
+
+## ClickHouse Cloud는 어떤 버전의 ClickHouse를 사용하나요? {#what-version-of-clickhouse-does-clickhouse-cloud-use}
+
+ClickHouse Cloud는 서비스를 지속적으로 새로운 버전으로 업그레이드합니다. 오픈 소스에서 핵심 데이터베이스 버전을 게시한 후, 클라우드 스테이징 환경에서 추가 검증을 수행하며, 이는 일반적으로 프로덕션에 배포되기 전에 6-8주가 걸립니다. 배포는 클라우드 서비스 제공업체, 서비스 유형 및 지역에 따라 단계적으로 진행됩니다.
+
+정기 릴리스 일정보다 먼저 업데이트를 구독할 수 있는 "빠른" 릴리스 채널을 제공합니다. 자세한 내용은 ["빠른 릴리스 채널"](/manage/updates#fast-release-channel-early-upgrades)를 참조하세요.
+
+이전 버전의 기능에 의존하는 경우, 경우에 따라 서비스의 호환성 설정을 사용하여 이전 동작으로 되돌릴 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/cloud.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/cloud.md.hash
new file mode 100644
index 00000000000..22aebd70f24
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/cloud.md.hash
@@ -0,0 +1 @@
+b2eda1c48cce2407
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/distinctive-features.md b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/distinctive-features.md
new file mode 100644
index 00000000000..25c1321c26c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/distinctive-features.md
@@ -0,0 +1,104 @@
+---
+'slug': '/about-us/distinctive-features'
+'sidebar_label': 'ClickHouse가 독특한 이유는 무엇인가?'
+'sidebar_position': 50
+'description': '다른 데이터베이스 관리 시스템과 ClickHouse를 구별짓는 요소를 이해하세요.'
+'title': 'ClickHouse의 독특한 특징'
+'keywords':
+- 'compression'
+- 'secondary-indexes'
+- 'column-oriented'
+'doc_type': 'guide'
+---
+
+
+
+# ClickHouse의 특징
+
+## 진정한 컬럼형 데이터베이스 관리 시스템 {#true-column-oriented-database-management-system}
+
+진정한 컬럼형 DBMS에서는 값과 함께 추가 데이터가 저장되지 않습니다. 이는 길이를 저장하지 않기 위해 고정 길이 값을 지원해야 함을 의미합니다. 예를 들어, 10억 개의 UInt8 유형 값은 압축되지 않은 상태에서 대략 1GB를 차지해야 하며, 그렇지 않으면 CPU 사용에 강한 영향을 미칩니다. 압축되지 않은 상태에서도 데이터를 간결하게 저장하는 것은 필수적입니다("쓰레기" 없이) 왜냐하면 압축 해제 속도(CPU 사용량)가 주로 압축되지 않은 데이터의 양에 따라 달라지기 때문입니다.
+
+이는 값을 별도로 저장할 수 있지만, HBase, Bigtable, Cassandra, Hypertable과 같은 다른 시나리오에 최적화되어 있어 분석 쿼리를 효과적으로 처리할 수 없는 시스템과 대조적입니다. 이러한 시스템에서는 초당 약 십만 개의 행을 처리할 수 있지만, 수억 개의 행을 처리할 수는 없습니다.
+
+마지막으로, ClickHouse는 단일 데이터베이스가 아닌 데이터베이스 관리 시스템입니다. 이는 서버를 재구성하거나 재시작하지 않고도 런타임에 테이블과 데이터베이스를 생성하고, 데이터를 로드하며 쿼리를 실행할 수 있게 합니다.
+
+## 데이터 압축 {#data-compression}
+
+일부 컬럼형 DBMS는 데이터 압축을 사용하지 않습니다. 그러나 데이터 압축은 뛰어난 성능을 달성하는 데 중요한 역할을 합니다.
+
+ClickHouse는 디스크 공간과 CPU 소비 간의 서로 다른 트레이드오프를 가진 효율적인 범용 압축 코덱 외에도, 특정 데이터 유형을 위한 [전문 코덱](/sql-reference/statements/create/table.md#specialized-codecs)을 제공하여 ClickHouse가 시간 시리즈와 같은 더 전문화된 데이터베이스와 경쟁하고 이를 능가할 수 있게 합니다.
+
+## 데이터의 디스크 저장 {#disk-storage-of-data}
+
+기본 키에 의해 물리적으로 정렬된 데이터를 유지하면 특정 값이나 값 범위에 따라 낮은 대기 시간(수십 밀리초 이내)으로 데이터를 추출할 수 있습니다. SAP HANA와 Google PowerDrill과 같은 일부 컬럼형 DBMS는 RAM에서만 작동할 수 있습니다. 이 접근 방식은 실시간 분석을 위해 필요 이상의 하드웨어 예산 할당이 필요합니다.
+
+ClickHouse는 일반 하드 드라이브에서 작업하도록 설계되었으며, 이는 데이터 저장의 GB당 비용이 낮음을 의미하지만, SSD 및 추가 RAM도 가능한 경우 완전히 활용됩니다.
+
+## 여러 코어에서의 병렬 처리 {#parallel-processing-on-multiple-cores}
+
+대규모 쿼리는 자연스럽게 병렬화되어 현재 서버에서 사용 가능한 모든 리소스를 사용합니다.
+
+## 여러 서버에서의 분산 처리 {#distributed-processing-on-multiple-servers}
+
+위에 언급된 거의 모든 컬럼형 DBMS는 분산 쿼리 처리를 지원하지 않습니다.
+
+ClickHouse에서는 데이터가 서로 다른 샤드에 저장될 수 있습니다. 각 샤드는 내결함성을 위해 사용되는 복제본 그룹이 될 수 있습니다. 모든 샤드는 사용자가 투명하게 쿼리를 병렬로 실행하는 데 사용됩니다.
+
+## SQL 지원 {#sql-support}
+
+ClickHouse는 대부분 ANSI SQL 표준과 호환되는 SQL 기반의 [선언적 쿼리 언어](/sql-reference/)를 지원합니다.
+
+지원되는 쿼리에는 [GROUP BY](../sql-reference/statements/select/group-by.md), [ORDER BY](../sql-reference/statements/select/order-by.md), [FROM](../sql-reference/statements/select/from.md) 문 내의 서브쿼리, [JOIN](../sql-reference/statements/select/join.md) 절, [IN](../sql-reference/operators/in.md) 연산자, [윈도우 함수](../sql-reference/window-functions/index.md) 및 스칼라 서브쿼리가 포함됩니다.
+
+서로 연관된(의존하는) 서브쿼리는 현재 작성 시점에서는 지원되지 않지만, 미래에 제공될 가능성이 있습니다.
+
+## 벡터 계산 엔진 {#vector-engine}
+
+데이터는 컬럼별로 저장될 뿐만 아니라 벡터(컬럼의 일부)로 처리되어 높은 CPU 효율성을 달성할 수 있게 합니다.
+
+## 실시간 데이터 삽입 {#real-time-data-updates}
+
+ClickHouse는 기본 키가 있는 테이블을 지원합니다. 기본 키 범위에 대한 쿼리를 빠르게 수행하기 위해 데이터는 병합 트리를 사용하여 점진적으로 정렬됩니다. 이로 인해 데이터가 테이블에 지속적으로 추가될 수 있습니다. 새로운 데이터가 수집될 때는 잠금을 설정하지 않습니다.
+
+## 기본 인덱스 {#primary-index}
+
+기본 키에 의해 물리적으로 정렬된 데이터는 특정 값 또는 값 범위에 따라 낮은 대기 시간(수십 밀리초 이내)으로 데이터를 추출할 수 있게 합니다.
+
+## 보조 인덱스 {#secondary-indexes}
+
+다른 데이터베이스 관리 시스템과 달리, ClickHouse의 보조 인덱스는 특정 행이나 행 범위를 가리키지 않습니다. 대신, 데이터베이스가 일부 데이터 파트의 모든 행이 쿼리 필터링 조건에 일치하지 않을 것임을 미리 알 수 있어, 이를 전혀 읽지 않도록 하여 [데이터 스킵 인덱스](../engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-data_skipping-indexes)라고 불립니다.
+
+## 온라인 쿼리에 적합 {#suitable-for-online-queries}
+
+대부분의 OLAP 데이터베이스 관리 시스템은 초 단위 대기 시간을 목표로 하지 않습니다. 대체 시스템에서는 수십 초 또는 몇 분의 보고서 작성 시간이 종종 수용 가능하다고 간주됩니다. 때때로 더 많은 시간이 걸리기도 하여 시스템이 보고서를 오프라인에서 준비하도록 강제합니다(미리 또는 "나중에 다시 오세요"라는 응답으로).
+
+ClickHouse에서 "낮은 대기 시간"은 쿼리를 지연 없이 처리할 수 있으며 사용자가 인터페이스 페이지를 로딩하는 순간에 미리 준비된 답변을 시도하지 않고 바로 처리할 수 있음을 의미합니다 — 다시 말해, *온라인*입니다.
+
+## 근사 계산 지원 {#support-for-approximated-calculations}
+
+ClickHouse는 성능을 위해 정확성을 거래할 수 있는 다양한 방법을 제공합니다:
+
+1. 고유 값 수, 중앙값 및 사분위를 근사적으로 계산하기 위한 집계 함수.
+2. 데이터의 일부([SAMPLE](../sql-reference/statements/select/sample.md))를 기반으로 쿼리를 실행하고 근사적인 결과를 얻기. 이 경우 디스크에서 비례적으로 적은 데이터를 검색합니다.
+3. 모든 키가 아닌 제한된 수의 무작위 키에 대해 집계를 실행합니다. 데이터의 키 분포에 대한 특정 조건에서, 이는 적은 리소스를 사용하면서도 reasonably 정확한 결과를 제공합니다.
+
+## 적응형 조인 알고리즘 {#adaptive-join-algorithm}
+
+ClickHouse는 여러 테이블을 [JOIN](../sql-reference/statements/select/join.md)할 때 적응적으로 선택하며, 해시 조인을 선호하고 큰 테이블이 두 개 이상인 경우 병합 조인으로 되돌립니다.
+
+## 데이터 복제 및 데이터 무결성 지원 {#data-replication-and-data-integrity-support}
+
+ClickHouse는 비동기 다중 마스터 복제를 사용합니다. 사용 가능한 복제본에 기록된 후, 모든 나머지 복제본은 백그라운드에서 자신의 복사본을 수신합니다. 시스템은 서로 다른 복제본에서 동일한 데이터를 유지합니다. 대부분의 장애 후 복구는 자동으로 수행되거나 복잡한 사례에서는 반자동으로 진행됩니다.
+
+자세한 내용은 [데이터 복제](../engines/table-engines/mergetree-family/replication.md) 섹션을 참조하십시오.
+
+## 역할 기반 접근 제어 {#role-based-access-control}
+
+ClickHouse는 SQL 쿼리를 사용한 사용자 계정 관리를 구현하고, ANSI SQL 표준 및 인기 있는 관계형 데이터베이스 관리 시스템에서 찾아볼 수 있는 [역할 기반 접근 제어 구성](/guides/sre/user-management/index.md)을 허용합니다.
+
+## 단점으로 간주될 수 있는 특징 {#clickhouse-features-that-can-be-considered-disadvantages}
+
+1. 완전한 거래 지원 없음.
+2. 높은 비율과 낮은 대기 시간으로 이미 삽입된 데이터를 수정하거나 삭제할 수 있는 기능 부족. 예를 들어, [GDPR](https://gdpr-info.eu) 준수를 위해 데이터를 정리하거나 수정하기 위한 배치 삭제 및 업데이트가 가능합니다.
+3. 스파스 인덱스 때문에 ClickHouse는 키로 단일 행을 검색하는 포인트 쿼리에 대해 그리 효율적이지 않습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/distinctive-features.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/distinctive-features.md.hash
new file mode 100644
index 00000000000..a85d4f125cb
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/distinctive-features.md.hash
@@ -0,0 +1 @@
+30311dc49b5fece2
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/history.md b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/history.md
new file mode 100644
index 00000000000..a138875ccff
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/history.md
@@ -0,0 +1,61 @@
+---
+'slug': '/about-us/history'
+'sidebar_label': 'ClickHouse 역사'
+'sidebar_position': 40
+'description': 'ClickHouse 개발의 역사'
+'keywords':
+- 'history'
+- 'development'
+- 'Metrica'
+'title': 'ClickHouse 역사'
+'doc_type': 'reference'
+---
+
+
+# ClickHouse 역사 {#clickhouse-history}
+
+ClickHouse는 처음에 [Yandex.Metrica](https://metrica.yandex.com/)를 지원하기 위해 개발되었으며, [세계에서 두 번째로 큰 웹 분석 플랫폼](http://w3techs.com/technologies/overview/traffic_analysis/all)으로 계속해서 핵심 구성 요소로 남아 있습니다. 데이터베이스에 13조 개 이상의 레코드와 매일 200억 건 이상의 이벤트가 존재하며, ClickHouse는 비집계 데이터에서 즉시 맞춤 보고서를 생성할 수 있도록 합니다. 이 글에서는 ClickHouse의 초기 개발 목표를 간략히 다룹니다.
+
+Yandex.Metrica는 사용자에 의해 정의된 임의의 세그먼트를 기반으로 클릭 수 및 세션에 따라 즉석에서 맞춤 보고서를 생성합니다. 이는 종종 보고서를 만들기 위한 새로운 데이터를 실시간으로 수집하며, 고유 사용자 수와 같은 복잡한 집계를 구축해야 합니다.
+
+2014년 4월 기준으로 Yandex.Metrica는 매일 약 120억 개의 이벤트(페이지 조회 및 클릭)를 추적하고 있었습니다. 이러한 모든 이벤트는 맞춤 보고서를 구축하기 위해 저장되어야 했습니다. 단일 쿼리는 몇 백 밀리초 내에 수백만 행을 스캔하거나 몇 초 만에 수억 행을 스캔해야 할 수 있습니다.
+
+## Yandex.Metrica 및 기타 Yandex 서비스에서의 사용 {#usage-in-yandex-metrica-and-other-yandex-services}
+
+ClickHouse는 Yandex.Metrica에서 여러 가지 용도로 사용됩니다.
+주요 임무는 비집계 데이터를 사용하여 온라인 모드에서 보고서를 생성하는 것입니다. 이는 374대의 서버 클러스터를 사용하며, 데이터베이스에 20.3조 행 이상의 데이터를 저장합니다. 압축된 데이터의 양은 중복 및 복제본을 고려하지 않고도 약 2PB입니다. 비압축 데이터(TSV 형식)의 양은 약 17PB입니다.
+
+ClickHouse는 다음 프로세스에서도 중요한 역할을 합니다:
+
+- Yandex.Metrica의 세션 리플레이 데이터를 저장합니다.
+- 중간 데이터를 처리합니다.
+- 분석과 함께 글로벌 보고서를 생성합니다.
+- Yandex.Metrica 엔진의 디버깅을 위한 쿼리를 실행합니다.
+- API 및 사용자 인터페이스의 로그를 분석합니다.
+
+현재 Yandex 서비스 및 부서에는 수십 개의 ClickHouse 설치가 있으며, 여기에는 검색 분야, 전자 상거래, 광고, 비즈니스 분석, 모바일 개발, 개인 서비스 등이 포함됩니다.
+
+## 집계 데이터와 비집계 데이터 {#aggregated-and-non-aggregated-data}
+
+효과적으로 통계를 계산하려면 데이터를 집계해야 한다는 일반적인 의견이 있습니다. 이는 데이터의 양을 줄여주기 때문입니다.
+
+하지만 데이터 집계에는 많은 제한이 있습니다:
+
+- 요구되는 보고서의 사전 정의된 목록이 필요합니다.
+- 사용자는 맞춤 보고서를 만들 수 없습니다.
+- 많은 수의 고유 키에 대해 집계할 경우 데이터 양이 거의 줄어들지 않아 집계는 쓸모가 없습니다.
+- 많은 수의 보고서에 대해 너무 많은 집계 변형이 존재합니다(조합 폭발).
+- 높은 기수(예: URL)를 가진 키를 집계할 때 데이터 양이 크게 줄어들지 않습니다(두 배 미만).
+- 이러한 이유로 집계된 데이터의 양은 줄어드는 대신 증가할 수 있습니다.
+- 사용자는 우리가 생성하는 모든 보고서를 보는 것이 아닙니다. 이러한 계산의 상당 부분은 쓸모가 없습니다.
+- 다양한 집계로 인해 데이터의 논리적 무결성이 위배될 수 있습니다.
+
+우리가 아무 것도 집계하지 않고 비집계 데이터로 작업한다면 계산의 양이 줄어들 수 있습니다.
+
+그러나 집계를 사용하면 상당 부분의 작업이 오프라인에서 수행되고 비교적 평온하게 완료됩니다. 반면 온라인 계산은 결과를 기다리는 사용자 때문에 가능한 한 빨리 계산해야 합니다.
+
+Yandex.Metrica에는 대부분의 보고서에 사용되는 Metrage라는 데이터 집계 전용 시스템이 있습니다.
+2009년부터 Yandex.Metrica는 비집계 데이터를 위한 OLAPServer라는 특수 OLAP 데이터베이스를 사용하는데, 이는 이전에 보고서 빌더에 사용되었습니다.
+OLAPServer는 비집계 데이터에서 잘 작동했지만, 모든 보고서에 원하는 대로 사용하기에는 많은 제약이 있었습니다. 이에는 데이터 유형(숫자만 지원) 지원 부족과 실시간으로 데이터를 점진적으로 업데이트할 수 없는 점(매일 데이터를 다시 쓰는 방식만 가능)이 포함되었습니다. OLAPServer는 DBMS가 아니라 특수 데이터베이스입니다.
+
+ClickHouse의 초기 목표는 OLAPServer의 제한을 제거하고 모든 보고서에서 비집계 데이터를 다루는 문제를 해결하는 것이었지만, 수년에 걸쳐 다양한 분석 작업에 적합한 범용 데이터베이스 관리 시스템으로 발전하게 되었습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/history.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/history.md.hash
new file mode 100644
index 00000000000..3975a15962e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/history.md.hash
@@ -0,0 +1 @@
+8df0aced82610d94
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/index.md
new file mode 100644
index 00000000000..f07468ae537
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/index.md
@@ -0,0 +1,23 @@
+---
+'slug': '/about'
+'title': 'ClickHouse에 대하여'
+'description': 'ClickHouse에 대한 랜딩 페이지'
+'doc_type': 'landing-page'
+'keywords':
+- 'about'
+- 'overview'
+- 'introduction'
+---
+
+
+# ClickHouse 소개
+
+이 문서 섹션에서는 ClickHouse에 대한 정보를 찾을 수 있습니다. 아래 목차를 참조하여 이 문서 섹션의 페이지 목록을 확인하십시오.
+
+| 페이지 | 설명 |
+|----------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [Adopters](/about-us/adopters) | ClickHouse를 사용하는 기업 및 그들의 성공 사례 목록이 있으며, 공공 자료에서 수집되었습니다. |
+| [Support](/about-us/support) | ClickHouse Cloud 지원 서비스 및 그들의 사명에 대한 소개입니다. |
+| [Beta features and experimental features](/beta-and-experimental-features) | ClickHouse가 "Beta" 및 "Experimental" 레이블을 사용하여 공식 지원 기능과 개발 속도가 다양한 커뮤니티 기여로 인해 초기 단계의 지원되지 않는 기능을 구분하는 방법에 대해 알아보십시오. |
+| [Cloud service](/about-us/cloud) | ClickHouse Cloud를 발견하십시오 - 사용자가 오픈 소스 ClickHouse 데이터베이스를 신속하게 생성할 수 있도록 하는 완전 관리형 서비스로, 빠른 가치 실현, 원활한 확장 및 서버리스 운영과 같은 이점을 제공합니다. |
+| [ClickHouse history](/about-us/history) | ClickHouse의 역사에 대해 더 알아보십시오. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/index.md.hash
new file mode 100644
index 00000000000..977e296673e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/index.md.hash
@@ -0,0 +1 @@
+8ab342c8103a3167
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/support.md b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/support.md
new file mode 100644
index 00000000000..f38f6cc4cbd
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/support.md
@@ -0,0 +1,30 @@
+---
+'slug': '/about-us/support'
+'sidebar_label': '지원'
+'title': 'ClickHouse Cloud 지원 서비스'
+'sidebar_position': 30
+'description': 'ClickHouse Cloud 지원 서비스에 대한 정보'
+'doc_type': 'reference'
+'keywords':
+- 'support'
+- 'help'
+- 'customer service'
+- 'technical support'
+- 'service level agreement'
+---
+
+
+# ClickHouse Cloud 지원 서비스
+
+ClickHouse는 ClickHouse Cloud 사용자 및 고객을 위한 지원 서비스를 제공합니다. 우리의 목표는 ClickHouse 제품을 대표하는 지원 서비스 팀을 구성하는 것으로, 이는 비할 데 없는 성능, 사용 용이성, 그리고 매우 빠르고 고품질의 결과를 의미합니다. 자세한 내용은 [ClickHouse 지원 프로그램](https://clickhouse.com/support/program/) 페이지를 방문하십시오.
+
+[클라우드 콘솔에 로그인](https://console.clickhouse.cloud/support)하고 메뉴 옵션에서 **도움 -> 지원**을 선택하여 새로운 지원 사례를 열고 제출된 사례의 상태를 확인할 수 있습니다.
+
+우리 플랫폼에 영향을 미치는 사건에 대해 빠르게 알림을 받으려면 [상태 페이지](https://status.clickhouse.com)를 구독할 수도 있습니다.
+
+:::note
+구독 고객만 지원 사건에 대한 서비스 수준 계약이 있음을 유의해 주시기 바랍니다. 현재 ClickHouse Cloud 사용자이시 아닌 경우, 질문에 답변을 시도하겠지만, 우리 커뮤니티 리소스 중 하나를 대신 방문하시기를 권장합니다:
+
+- [ClickHouse 커뮤니티 Slack 채널](https://clickhouse.com/slack)
+- [기타 커뮤니티 옵션](https://github.com/ClickHouse/ClickHouse/blob/master/README.md#useful-links)
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/about-us/support.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/support.md.hash
new file mode 100644
index 00000000000..d38d3637299
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/about-us/support.md.hash
@@ -0,0 +1 @@
+e06a2c2669e52b4b
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_async_inserts.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_async_inserts.md
new file mode 100644
index 00000000000..6107e17f6f7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_async_inserts.md
@@ -0,0 +1,63 @@
+import Image from '@theme/IdealImage';
+import async_inserts from '@site/static/images/bestpractices/async_inserts.png';
+
+Asynchronous inserts in ClickHouse는 클라이언트 측 배치가 불가능할 때 강력한 대안을 제공합니다. 이는 수백 또는 수천 개의 에이전트가 지속적으로 데이터를 전송하는 관측 가능성 작업에서 특히 가치가 있습니다—로그, 메트릭, 추적—종종 작고 실시간 페이로드로 이루어집니다. 이러한 환경에서 클라이언트 측에서 데이터를 버퍼링하면 복잡성이 증가하며, 충분히 큰 배치를 전송하기 위해 중앙 집중식 큐가 필요합니다.
+
+:::note
+동기 모드에서 많은 작은 배치를 전송하는 것은 권장되지 않으며, 이는 많은 파트가 생성되는 결과를 초래합니다. 이는 쿼리 성능 저하와 ["너무 많은 파트"](/knowledgebase/exception-too-many-parts) 오류를 초래할 수 있습니다.
+:::
+
+비동기 삽입은 들어오는 데이터를 인메모리 버퍼에 기록한 후 구성 가능한 임계값에 따라 저장소로 플러시하여 클라이언트에서 서버로 배치 책임을 전가합니다. 이 접근 방식은 파트 생성 오버헤드를 상당히 줄이고 CPU 사용량을 낮추며 고수준의 동시성 하에서도 효율적인 데이터 수집을 보장합니다.
+
+핵심 동작은 [`async_insert`](/operations/settings/settings#async_insert) 설정을 통해 제어됩니다.
+
+
+
+활성화되면 (1) 삽입이 버퍼링되며 플러시 조건 중 하나가 충족될 때만 디스크에 기록됩니다:
+
+(1) 버퍼가 지정된 크기에 도달할 때 (async_insert_max_data_size)
+(2) 시간 임계값이 경과할 때 (async_insert_busy_timeout_ms) 또는
+(3) 최대 삽입 쿼리 수가 누적될 때 (async_insert_max_query_number).
+
+이 배치 프로세스는 클라이언트에 보이지 않으며 ClickHouse가 여러 소스의 삽입 트래픽을 효율적으로 병합하는 데 도움을 줍니다. 그러나 플러시가 발생할 때까지 데이터는 쿼리할 수 없습니다. 중요한 것은 각 삽입 형태와 설정 조합에 따라 여러 버퍼가 있으며, 클러스터에서는 노드별로 버퍼가 유지되어 다중 테넌트 환경에서 세분화된 제어가 가능합니다. 삽입 메커니즘은 [동기 삽입](/best-practices/selecting-an-insert-strategy#synchronous-inserts-by-default)에서 설명한 것과 동일합니다.
+
+### 반환 모드 선택 {#choosing-a-return-mode}
+
+비동기 삽입의 동작은 [`wait_for_async_insert`](/operations/settings/settings#wait_for_async_insert) 설정을 통해 더욱 세분화됩니다.
+
+1로 설정하면(기본값), ClickHouse는 데이터가 디스크에 성공적으로 플러시된 후에만 삽입을 인정합니다. 이는 강력한 내구성 보장을 보장하고 오류 처리를 간단하게 만듭니다: 플러시 중에 문제가 발생하면 오류가 클라이언트에 반환됩니다. 이 모드는 삽입 실패를 신뢰할 수 있게 추적해야 하는 대부분의 프로덕션 시나리오에 추천됩니다.
+
+[벤치마크](https://clickhouse.com/blog/asynchronous-data-inserts-in-clickhouse)는 200 또는 500 클라이언트를 실행하더라도 동시성에서 잘 확장된다는 것을 보여줍니다—적응형 삽입 및 안정적인 파트 생성 동작 덕분입니다.
+
+`wait_for_async_insert = 0`으로 설정하면 "fire-and-forget" 모드가 활성화됩니다. 이 경우, 서버는 데이터가 버퍼링되는 즉시 삽입을 인정하며 저장소에 도달할 때까지 기다리지 않습니다.
+
+이것은 초저지연 삽입과 최대 처리량을 제공하며, 고속, 낮은 중요성 데이터를 위해 이상적입니다. 그러나 이러한 방식에는 단점이 있습니다: 데이터가 지속될 것이라는 보장이 없으며, 오류는 플러시 중에만 나타날 수 있고, 실패한 삽입을 추적하기 어렵습니다. 데이터 손실을 허용할 수 있는 작업 부하가 아니라면 이 모드를 사용하지 마십시오.
+
+[벤치마크 또한 보여줍니다](https://clickhouse.com/blog/asynchronous-data-inserts-in-clickhouse) 버퍼 플러시가 드문 경우(예: 30초마다) 파트 수가 상당히 줄어들고 CPU 사용량이 낮아지지만, 침묵의 실패 위험은 여전히 존재합니다.
+
+비동기 삽입을 사용할 경우 `async_insert=1,wait_for_async_insert=1`을 사용하는 것을 강력히 추천합니다. `wait_for_async_insert=0`을 사용하는 것은 매우 위험하며, 이는 INSERT 클라이언트가 오류를 인식하지 못할 수 있고, ClickHouse 서버가 쓰기를 늦춰야 할 필요가 있을 때 클라이언트가 계속해서 빠르게 쓰는 경우 과부하를 초래할 수 있습니다.
+
+### 중복 제거 및 신뢰성 {#deduplication-and-reliability}
+
+기본적으로 ClickHouse는 동기 삽입에 대해 자동 중복 제거를 수행하여 실패 시나리오에서 재시도를 안전하게 합니다. 그러나 비동기 삽입에서는 명시적으로 활성화하지 않는 한 이 기능이 비활성화됩니다(의존성 있는 물리화된 뷰가 있는 경우에는 활성화하지 않아야 합니다—[문제 참고](https://github.com/ClickHouse/ClickHouse/issues/66003)).
+
+실제로, 중복 제거가 활성화되고 동일한 삽입을 재시도하는 경우—예를 들어, 타임아웃이나 네트워크 중단으로 인해—ClickHouse는 중복을 안전하게 무시할 수 있습니다. 이는 불변성을 유지하고 데이터를 두 번 쓰는 것을 피하는 데 도움이 됩니다. 그러나 삽입 검증 및 스키마 파싱은 버퍼 플러시 중에만 발생하므로, 오류(예: 타입 불일치)는 그 시점에서만 나타날 수 있습니다.
+
+### 비동기 삽입 활성화 {#enabling-asynchronous-inserts}
+
+비동기 삽입은 특정 사용자 또는 특정 쿼리에 대해 활성화할 수 있습니다:
+
+- 사용자 수준에서 비동기 삽입 활성화. 이 예제에서는 사용자 `default`를 사용하며, 다른 사용자를 만들면 해당 사용자 이름으로 대체하십시오:
+```sql
+ALTER USER default SETTINGS async_insert = 1
+```
+- 삽입 쿼리의 SETTINGS 절을 사용하여 비동기 삽입 설정을 지정할 수 있습니다:
+```sql
+INSERT INTO YourTable SETTINGS async_insert=1, wait_for_async_insert=1 VALUES (...)
+```
+- ClickHouse 프로그래밍 언어 클라이언트를 사용할 때 연결 매개변수로 비동기 삽입 설정을 지정할 수도 있습니다.
+
+ 예를 들어, ClickHouse Cloud에 연결할 때 ClickHouse Java JDBC 드라이버를 사용할 때 JDBC 연결 문자열 내에서 이렇게 할 수 있습니다:
+```bash
+"jdbc:ch://HOST.clickhouse.cloud:8443/?user=default&password=PASSWORD&ssl=true&custom_http_params=async_insert=1,wait_for_async_insert=1"
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_async_inserts.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_async_inserts.md.hash
new file mode 100644
index 00000000000..84f2ed15e40
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_async_inserts.md.hash
@@ -0,0 +1 @@
+77e1037ea78d7255
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_mutations.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_mutations.md
new file mode 100644
index 00000000000..1e5d9ef937e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_mutations.md
@@ -0,0 +1,17 @@
+In ClickHouse, **변경**은 테이블의 기존 데이터를 수정하거나 삭제하는 작업을 지칭합니다. 일반적으로 `ALTER TABLE ... DELETE` 또는 `ALTER TABLE ... UPDATE`를 사용합니다. 이러한 문장은 표준 SQL 작업과 유사해 보일 수 있지만, 내부적으로는 근본적으로 다릅니다.
+
+ClickHouse에서 변경은 행을 제자리에서 수정하는 것이 아니라, 변경의 영향을 받는 전체 [데이터 파트](/parts)를 재작성하는 비동기 백그라운드 프로세스입니다. 이 접근 방식은 ClickHouse의 컬럼형, 불변 저장 모델로 인해 필요하며, 상당한 I/O 및 자원 사용을 초래할 수 있습니다.
+
+변경이 발행되면 ClickHouse는 새로운 **변경된 파트**의 생성을 예약하며, 새로운 파트가 준비될 때까지 원래 파트는 손대지 않습니다. 준비가 완료되면 변경된 파트가 원본을 원자적으로 대체합니다. 그러나 이 작업은 전체 파트를 재작성하기 때문에, 단일 행을 업데이트하는 것과 같은 사소한 변경도 대규모 재작성 및 과도한 쓰기 증폭을 초래할 수 있습니다.
+
+대규모 데이터셋의 경우, 이는 디스크 I/O에 상당한 급증을 유발하고 전체 클러스터 성능을 저하시킬 수 있습니다. 병합과 달리, 변경은 제출된 이후 롤백할 수 없으며, 명시적으로 취소하지 않는 한 서버 재시작 후에도 계속 실행됩니다—[`KILL MUTATION`](/sql-reference/statements/kill#kill-mutation)을 참조하십시오.
+
+:::tip ClickHouse에서 활성 또는 대기 중인 변경 수 모니터링
+활성 또는 대기 중인 변경 수를 모니터링하는 방법에 대한 내용은 다음 [지식 기반 기사](/knowledgebase/view_number_of_active_mutations)를 참조하십시오.
+:::
+
+변경은 **완전히 순서화**됩니다: 이는 변경이 발행되기 전의 데이터에 적용되며, 새로운 데이터는 영향을 받지 않습니다. 변경은 삽입을 차단하지 않지만, 여전히 다른 진행 중인 쿼리와 겹칠 수 있습니다. 변경 중 실행되는 SELECT는 변경된 파트와 변경되지 않은 파트를 혼합하여 읽을 수 있으며, 이로 인해 실행 중 데이터의 일관되지 않은 뷰가 발생할 수 있습니다. ClickHouse는 각 파트별로 변경을 병렬로 실행하여 복잡한 서브쿼리(예: x IN (SELECT ...))가 포함되었을 경우 메모리 및 CPU 사용량을 더욱 증가시킬 수 있습니다.
+
+일반적으로, **빈번하거나 대규모 변경을 피하세요**, 특히 고용량 테이블에서. 대신 데이터 수정 작업을 쿼리 시 또는 병합 중에 보다 효율적으로 처리할 수 있도록 설계된 대체 테이블 엔진인 [ReplacingMergeTree](/guides/replacing-merge-tree) 또는 [CollapsingMergeTree](/engines/table-engines/mergetree-family/collapsingmergetree)를 사용하십시오. 변경이 절대적으로 필요하다면, system.mutations 테이블을 사용하여 신중하게 모니터링하고, 프로세스가 멈추거나 비정상 작동할 경우 `KILL MUTATION`을 사용하십시오. 변경을 잘못 사용하면 성능 저하, 과도한 저장소 churn, 잠재적인 서비스 불안정성을 초래할 수 있으므로 주의하여 드물게 사용하십시오.
+
+데이터 삭제를 위해 사용자는 또한 [경량 삭제](/guides/developer/lightweight-delete) 또는 데이터 관리를 위한 [파티션](/best-practices/choosing-a-partitioning-key)을 고려할 수 있으며, 이를 통해 전체 파트를 [효율적으로 드롭](/sql-reference/statements/alter/partition#drop-partitionpart)할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_mutations.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_mutations.md.hash
new file mode 100644
index 00000000000..7e4daace48b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_mutations.md.hash
@@ -0,0 +1 @@
+f41f7738198bb4a6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_nullable_columns.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_nullable_columns.md
new file mode 100644
index 00000000000..3779f60959a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_nullable_columns.md
@@ -0,0 +1,28 @@
+[`Nullable` 컬럼](/sql-reference/data-types/nullable/) (예: `Nullable(String)`)은 `UInt8` 타입의 별도 컬럼을 생성합니다. 이 추가 컬럼은 사용자가 Nullable 컬럼을 사용할 때마다 처리해야 합니다. 이로 인해 추가 저장 공간이 사용되며, 성능에 거의 항상 부정적인 영향을 미칩니다.
+
+`Nullable` 컬럼을 피하기 위해, 해당 컬럼에 대한 기본 값을 설정하는 것을 고려하십시오. 예를 들어, 대신에:
+
+```sql
+CREATE TABLE default.sample
+(
+ `x` Int8,
+ -- highlight-next-line
+ `y` Nullable(Int8)
+)
+ENGINE = MergeTree
+ORDER BY x
+```
+사용하십시오.
+
+```sql
+CREATE TABLE default.sample2
+(
+ `x` Int8,
+ -- highlight-next-line
+ `y` Int8 DEFAULT 0
+)
+ENGINE = MergeTree
+ORDER BY x
+```
+
+사용 사례를 고려하십시오; 기본 값이 부적절할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_nullable_columns.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_nullable_columns.md.hash
new file mode 100644
index 00000000000..242632d42d2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_nullable_columns.md.hash
@@ -0,0 +1 @@
+fe3a9592c68954e0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_optimize_final.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_optimize_final.md
new file mode 100644
index 00000000000..e342029754b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_optimize_final.md
@@ -0,0 +1,47 @@
+import Image from '@theme/IdealImage';
+import simple_merges from '@site/static/images/bestpractices/simple_merges.png';
+
+ClickHouse 테이블은 **MergeTree 엔진**을 사용하여 데이터를 **변경 불가능한 파트**로 디스크에 저장하며, 데이터가 삽입될 때마다 생성됩니다.
+
+각 삽입은 정렬되고 압축된 컬럼 파일을 포함하는 새로운 파트를 생성하며, 인덱스 및 체크섬과 같은 메타데이터도 포함됩니다. 파트 구조와 형성 방법에 대한 자세한 설명은 이 [가이드](/parts)를 권장합니다.
+
+시간이 지남에 따라 백그라운드 프로세스는 더 큰 파트로 더 작은 파트를 병합하여 조각화를 줄이고 쿼리 성능을 향상시킵니다.
+
+
+
+다음과 같이 수동으로 이 병합을 트리거하고 싶을 수 있지만:
+
+```sql
+OPTIMIZE TABLE
FINAL;
+```
+
+**대부분의 경우 `OPTIMIZE FINAL` 작업을 피해야 합니다**. 이는 자원 집약적인 작업을 시작하여 클러스터 성능에 영향을 줄 수 있습니다.
+
+:::note OPTIMIZE FINAL vs FINAL
+`OPTIMIZE FINAL`은 `FINAL`과 다르며, 때때로 `ReplacingMergeTree`와 같은 중복 없이 결과를 얻기 위해 사용해야 할 필요가 있습니다. 일반적으로, `FINAL`은 기본 키와 동일한 컬럼에 필터링하는 쿼리의 경우 사용할 수 있습니다.
+:::
+
+## 왜 피해야 하는가? {#why-avoid}
+
+### 비용이 많이 듭니다 {#its-expensive}
+
+`OPTIMIZE FINAL`을 실행하면 ClickHouse가 **모든** 활성 파트를 **단일 파트**로 병합하도록 강제합니다. 이는 이미 큰 병합이 발생했더라도 마찬가지입니다. 다음과 같은 작업을 포함합니다:
+
+1. **모든 파트 압축 해제**
+2. **데이터 병합**
+3. **다시 압축**
+4. **최종 파트를 디스크 또는 객체 저장소에 기록**
+
+이 단계는 **CPU 및 I/O 집약적**이며, 특히 대량의 데이터셋이 관련된 경우 시스템에 상당한 부담을 줄 수 있습니다.
+
+### 안전 한계를 무시합니다 {#it-ignores-safety-limits}
+
+일반적으로 ClickHouse는 ~150 GB( [max_bytes_to_merge_at_max_space_in_pool](/operations/settings/merge-tree-settings#max_bytes_to_merge_at_max_space_in_pool) 를 통해 구성 가능)의 파트병합을 피합니다. 하지만 `OPTIMIZE FINAL`은 **이 안전 장치를 무시**하며, 이는 다음을 의미합니다:
+
+* **복수의 150 GB 파트**를 하나의 거대한 파트로 병합하려 할 수 있습니다.
+* 이로 인해 **긴 병합 시간**, **메모리 압박**, 또는 **메모리 부족 오류**가 발생할 수 있습니다.
+* 이러한 대형 파트는 병합하기 어려워질 수 있으며, 위에서 언급한 이유로 그들을 추가로 병합하려는 시도가 실패할 수 있습니다. 쿼리 시간 동작에 대한 정확한 병합이 필요한 경우, 이는 [ReplacingMergeTree](/guides/developer/deduplication#using-replacingmergetree-for-upserts)에서 중복이 축적되는 등의 원치 않는 결과를 초래할 수 있으며, 쿼리 시간 성능을 저하시킬 수 있습니다.
+
+## 백그라운드 병합이 작업을 수행하게 하세요 {#let-background-merges-do-the-work}
+
+ClickHouse는 이미 저장소 및 쿼리 효율성을 최적화하기 위해 스마트한 백그라운드 병합을 수행합니다. 이러한 병합은 점진적이며 자원 인식적이며 구성된 임계값을 Respect합니다. 특정한 필요가 있는 경우(예: 테이블을 동결하기 전에 데이터 마감 또는 내보내기), **ClickHouse가 스스로 병합을 관리하게 하는 것이 더 낫습니다**.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_optimize_final.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_optimize_final.md.hash
new file mode 100644
index 00000000000..4400d3c6819
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_optimize_final.md.hash
@@ -0,0 +1 @@
+218b4923bd026504
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_bulk_inserts.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_bulk_inserts.md
new file mode 100644
index 00000000000..650f0ea95b0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_bulk_inserts.md
@@ -0,0 +1,11 @@
+위의 메커니즘은 삽입 크기에 관계없이 지속적인 오버헤드를 나타내며, 배치 크기가 데이터 수집 처리량에 대한 가장 중요한 최적화 요소임을 보여줍니다. 삽입을 배치 처리하면 오버헤드가 총 삽입 시간의 비율로 줄어들고 처리 효율성이 향상됩니다.
+
+1,000행 이상의 배치로 데이터를 삽입하는 것을 권장하며, 이상적으로는 10,000–100,000행 사이의 배치를 권장합니다. 더 적은 수의 큰 삽입은 기록되는 파트 수를 줄이고, 병합 부하를 최소화하며 전체 시스템 자원 사용량을 낮춥니다.
+
+**동기 삽입 전략이 효과적이기 위해서는 이 클라이언트 측 배치가 필요합니다.**
+
+클라이언트 측에서 데이터를 배치할 수 없는 경우, ClickHouse는 서버 측으로 배치 작업을 이동시키는 비동기 삽입을 지원합니다 ([자세히 보기](/best-practices/selecting-an-insert-strategy#asynchronous-inserts)).
+
+:::tip
+삽입 크기에 관계없이, 삽입 쿼리 수를 초당 약 1개로 유지하는 것을 권장합니다. 이 권장 사항의 이유는 생성된 파트가 백그라운드에서 더 큰 파트로 병합되기 때문이며(읽기 쿼리를 최적화하기 위해), 초당 너무 많은 삽입 쿼리를 보내는 경우 백그라운드 병합이 새로운 파트 수를 따라잡지 못할 수 있습니다. 그러나 비동기 삽입을 사용할 때는 초당 더 높은 삽입 쿼리 비율을 사용할 수 있습니다(비동기 삽입 참조).
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_bulk_inserts.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_bulk_inserts.md.hash
new file mode 100644
index 00000000000..77fc29c4f82
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_bulk_inserts.md.hash
@@ -0,0 +1 @@
+48eaad5ac8b45ddf
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md
new file mode 100644
index 00000000000..ff40c0fe381
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md
@@ -0,0 +1,12 @@
+| Page | Description |
+|--------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|
+| [기본 키 선택하기](/best-practices/choosing-a-primary-key) | 쿼리 성능을 극대화하고 저장 오버헤드를 최소화하는 기본 키 선택 방법. |
+| [데이터 유형 선택하기](/best-practices/select-data-types) | 메모리 사용량을 줄이고, 압축을 개선하며, 쿼리를 가속화하기 위해 최적의 데이터 유형 선택하기. |
+| [물리화된 뷰 사용하기](/best-practices/use-materialized-views) | 물리화된 뷰를 활용하여 데이터를 사전 집계하고 분석 쿼리를 극적으로 가속화하기. |
+| [JOIN 최소화 및 최적화하기](/best-practices/minimize-optimize-joins) | ClickHouse의 `JOIN` 기능을 효율적으로 사용하는 모범 사례. |
+| [파티셔닝 키 선택하기](/best-practices/choosing-a-partitioning-key) | 효율적인 데이터 가지치기와 더 빠른 쿼리 실행을 가능하게 하는 파티셔닝 전략 선택하기. |
+| [삽입 전략 선택하기](/best-practices/selecting-an-insert-strategy) | 적절한 삽입 패턴으로 데이터 수집 처리량을 최적화하고 자원 소비를 줄이기. |
+| [데이터 스킵 인덱스](/best-practices/use-data-skipping-indices-where-appropriate) | irrelevant한 데이터 블록을 건너뛰고 필터링된 쿼리를 가속화하기 위해 이차 인덱스를 전략적으로 적용하기. |
+| [변경 피하기](/best-practices/avoid-mutations) | 성능 향상을 위해 비용이 많이 드는 `UPDATE`/`DELETE` 작업을 제거하는 스키마 및 워크플로 설계하기. |
+| [OPTIMIZE FINAL 피하기](/best-practices/avoid-optimize-final) | `OPTIMIZE FINAL`이 도움이 되기보다는 해로운 경우를 이해하여 성능 병목 현상을 예방하기. |
+| [적절한 경우 JSON 사용하기](/best-practices/use-json-where-appropriate) | ClickHouse에서 반구조화된 JSON 데이터를 다룰 때 유연성과 성능의 균형을 맞추기. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md.hash
new file mode 100644
index 00000000000..aea720ae24d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md.hash
@@ -0,0 +1 @@
+80cab0f1d1e0f25a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_mutations.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_mutations.md
new file mode 100644
index 00000000000..3f11e23e0a2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_mutations.md
@@ -0,0 +1,14 @@
+---
+'slug': '/best-practices/avoid-mutations'
+'sidebar_position': 10
+'sidebar_label': '변형을 피하세요'
+'title': '변형을 피하세요'
+'description': 'ClickHouse에서 변형을 피해야 하는 이유를 설명하는 페이지'
+'keywords':
+- 'mutations'
+'doc_type': 'guide'
+---
+
+import Content from '@site/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_mutations.md';
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_mutations.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_mutations.md.hash
new file mode 100644
index 00000000000..a52f4bdabc5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_mutations.md.hash
@@ -0,0 +1 @@
+7aaf355003bb3b53
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_optimize_final.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_optimize_final.md
new file mode 100644
index 00000000000..c03dda8a961
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_optimize_final.md
@@ -0,0 +1,19 @@
+---
+'slug': '/best-practices/avoid-optimize-final'
+'sidebar_position': 10
+'sidebar_label': 'OPTIMIZE FINAL 피하기'
+'title': 'OPTIMIZE FINAL을 피하세요'
+'description': 'ClickHouse에서 OPTIMIZE FINAL 절을 피해야 하는 이유를 설명하는 페이지'
+'keywords':
+- 'avoid OPTIMIZE FINAL'
+- 'background merges'
+'hide_title': true
+'doc_type': 'guide'
+---
+
+import Content from '@site/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_optimize_final.md';
+
+
+# `OPTIMIZE FINAL` 사용 피하기
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_optimize_final.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_optimize_final.md.hash
new file mode 100644
index 00000000000..4702cb8dbdc
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/avoid_optimize_final.md.hash
@@ -0,0 +1 @@
+ef918b3a2bf0aa09
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/choosing_a_primary_key.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/choosing_a_primary_key.md
new file mode 100644
index 00000000000..1432758956a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/choosing_a_primary_key.md
@@ -0,0 +1,177 @@
+---
+'slug': '/best-practices/choosing-a-primary-key'
+'sidebar_position': 10
+'sidebar_label': '기본 키 선택하기'
+'title': '기본 키 선택하기'
+'description': '이 페이지는 ClickHouse에서 기본 키를 선택하는 방법을 설명합니다.'
+'keywords':
+- 'primary key'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import create_primary_key from '@site/static/images/bestpractices/create_primary_key.gif';
+import primary_key from '@site/static/images/bestpractices/primary_key.gif';
+
+> 이 페이지에서는 "주문 키"라는 용어를 "기본 키"와 상호 교환적으로 사용합니다. 엄밀히 말하면, [이들은 ClickHouse에서 다릅니다](/engines/table-engines/mergetree-family/mergetree#choosing-a-primary-key-that-differs-from-the-sorting-key), 그러나 이 문서의 목적상, 독자는 이들을 상호 교환 가능하게 사용할 수 있으며, 주문 키는 테이블 `ORDER BY`에서 지정된 컬럼을 가리킵니다.
+
+ClickHouse의 기본 키는 OLTP 데이터베이스와 유사한 용어에 익숙한 사람들에게는 [매우 다르게](/migrations/postgresql/data-modeling-techniques#primary-ordering-keys-in-clickhouse) 작동합니다.
+
+ClickHouse에서 효과적인 기본 키를 선택하는 것은 쿼리 성능과 저장 효율성에 매우 중요합니다. ClickHouse는 데이터를 여러 파트로 구성하며, 각 파트는 자체 스파스 기본 인덱스를 포함합니다. 이 인덱스는 스캔되는 데이터 양을 줄여 쿼리 속도를 크게 향상시킵니다. 또한 기본 키는 디스크상의 데이터 물리적 순서를 결정하므로, 압축 효율성에 직접적인 영향을 미칩니다. 최적의 순서로 정렬된 데이터는 더 효과적으로 압축되어 I/O를 줄여 성능을 더 향상시킵니다.
+
+1. 주문 키를 선택할 때, 쿼리 필터(즉, `WHERE` 절)에서 자주 사용되는 컬럼을 우선시하십시오. 특히 많은 행을 제외하는 컬럼이 중요합니다.
+2. 테이블의 다른 데이터와 높은 상관관계를 가진 컬럼도 유익하며, 연속 저장이 `GROUP BY` 및 `ORDER BY` 작업 중에 압축 비율과 메모리 효율성을 개선합니다.
+
+주문 키 선택을 도와줄 간단한 규칙을 적용할 수 있습니다. 다음 항목들은 때때로 상충할 수 있으므로 순서에 따라 고려하십시오. **사용자는 이 과정에서 여러 키를 식별할 수 있으며, 일반적으로 4-5개가 충분합니다**:
+
+:::note Important
+주문 키는 테이블 생성 시 정의되어야 하며 추가할 수 없습니다. 데이터 삽입 후(또는 전에) 프로젝션으로 알려진 기능을 통해 테이블에 추가 주문을 추가할 수 있습니다. 이 경우 데이터 중복이 발생합니다. 추가 세부정보는 [여기서]( /sql-reference/statements/alter/projection) 확인하십시오.
+:::
+
+## 예시 {#example}
+
+`posts_unordered` 테이블을 고려해 보십시오. 이 테이블은 Stack Overflow 게시물마다 행을 포함합니다.
+
+이 테이블에는 기본 키가 없습니다 - `ORDER BY tuple()`로 표시됩니다.
+
+```sql
+CREATE TABLE posts_unordered
+(
+ `Id` Int32,
+ `PostTypeId` Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4,
+ 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime,
+ `Score` Int32,
+ `ViewCount` UInt32,
+ `Body` String,
+ `OwnerUserId` Int32,
+ `OwnerDisplayName` String,
+ `LastEditorUserId` Int32,
+ `LastEditorDisplayName` String,
+ `LastEditDate` DateTime,
+ `LastActivityDate` DateTime,
+ `Title` String,
+ `Tags` String,
+ `AnswerCount` UInt16,
+ `CommentCount` UInt8,
+ `FavoriteCount` UInt8,
+ `ContentLicense`LowCardinality(String),
+ `ParentId` String,
+ `CommunityOwnedDate` DateTime,
+ `ClosedDate` DateTime
+)
+ENGINE = MergeTree
+ORDER BY tuple()
+```
+
+사용자가 2024년 이후 제출된 질문 수를 계산하려고 한다고 가정해 보겠습니다. 이 쿼리는 가장 일반적인 접근 패턴을 나타냅니다.
+
+```sql
+SELECT count()
+FROM stackoverflow.posts_unordered
+WHERE (CreationDate >= '2024-01-01') AND (PostTypeId = 'Question')
+
+┌─count()─┐
+│ 192611 │
+└─────────┘
+--highlight-next-line
+1 row in set. Elapsed: 0.055 sec. Processed 59.82 million rows, 361.34 MB (1.09 billion rows/s., 6.61 GB/s.)
+```
+
+이 쿼리로 읽은 행 수와 바이트 수에 주목하십시오. 기본 키가 없으면 쿼리는 전체 데이터 세트를 스캔해야 합니다.
+
+`EXPLAIN indexes=1`을 사용하면 인덱스의 부족으로 인한 전체 테이블 스캔을 확인할 수 있습니다.
+
+```sql
+EXPLAIN indexes = 1
+SELECT count()
+FROM stackoverflow.posts_unordered
+WHERE (CreationDate >= '2024-01-01') AND (PostTypeId = 'Question')
+
+┌─explain───────────────────────────────────────────────────┐
+│ Expression ((Project names + Projection)) │
+│ Aggregating │
+│ Expression (Before GROUP BY) │
+│ Expression │
+│ ReadFromMergeTree (stackoverflow.posts_unordered) │
+└───────────────────────────────────────────────────────────┘
+
+5 rows in set. Elapsed: 0.003 sec.
+```
+
+`posts_ordered`라는 동일한 데이터를 포함하는 테이블이 `(PostTypeId, toDate(CreationDate))`로 정의된 `ORDER BY`와 함께 있다고 가정해 보겠습니다.
+
+```sql
+CREATE TABLE posts_ordered
+(
+ `Id` Int32,
+ `PostTypeId` Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6,
+ 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+...
+)
+ENGINE = MergeTree
+ORDER BY (PostTypeId, toDate(CreationDate))
+```
+
+`PostTypeId`는 8의 카디널리티를 가지며, 우리의 주문 키의 첫 번째 항목으로 논리적인 선택을 나타냅니다. 날짜 세분화 필터링이 충분할 것이라고 인식하면서 (여전히 날짜 및 시간 필터에 이점이 있을 것입니다) `toDate(CreationDate)`를 키의 두 번째 구성 요소로 사용합니다. 날짜는 16비트로 표현할 수 있으므로 더 작은 인덱스를 생성하여 필터링 속도를 높입니다.
+
+다음 애니메이션은 Stack Overflow 게시물 테이블의 최적화된 스파스 기본 인덱스가 생성되는 방법을 보여줍니다. 개별 행을 인덱싱하는 대신, 인덱스는 행 블록을 대상으로 합니다:
+
+
+
+이 주문 키가 있는 테이블에서 동일한 쿼리를 반복하면:
+
+```sql
+SELECT count()
+FROM stackoverflow.posts_ordered
+WHERE (CreationDate >= '2024-01-01') AND (PostTypeId = 'Question')
+
+┌─count()─┐
+│ 192611 │
+└─────────┘
+--highlight-next-line
+1 row in set. Elapsed: 0.013 sec. Processed 196.53 thousand rows, 1.77 MB (14.64 million rows/s., 131.78 MB/s.)
+```
+
+이 쿼리는 이제 스파스 인덱싱을 활용하여 읽는 데이터 양을 크게 줄이고 실행 시간을 4배 향상시킵니다 - 읽은 행과 바이트 수의 감소를 주목하십시오.
+
+인덱스 사용은 `EXPLAIN indexes=1`로 확인할 수 있습니다.
+
+```sql
+EXPLAIN indexes = 1
+SELECT count()
+FROM stackoverflow.posts_ordered
+WHERE (CreationDate >= '2024-01-01') AND (PostTypeId = 'Question')
+
+┌─explain─────────────────────────────────────────────────────────────────────────────────────┐
+│ Expression ((Project names + Projection)) │
+│ Aggregating │
+│ Expression (Before GROUP BY) │
+│ Expression │
+│ ReadFromMergeTree (stackoverflow.posts_ordered) │
+│ Indexes: │
+│ PrimaryKey │
+│ Keys: │
+│ PostTypeId │
+│ toDate(CreationDate) │
+│ Condition: and((PostTypeId in [1, 1]), (toDate(CreationDate) in [19723, +Inf))) │
+│ Parts: 14/14 │
+│ Granules: 39/7578 │
+└─────────────────────────────────────────────────────────────────────────────────────────────┘
+
+13 rows in set. Elapsed: 0.004 sec.
+```
+
+또한, 스파스 인덱스가 예제 쿼리에 대한 일치 항목을 포함할 수 없는 모든 행 블록을 어떻게 잘라내는지를 시각화합니다:
+
+
+
+:::note
+테이블의 모든 컬럼은 지정된 주문 키의 값에 따라 정렬됩니다. 키 자체에 포함되어 있는지와 관계없이 처리됩니다. 예를 들어, `CreationDate`가 키로 사용되면 다른 모든 컬럼의 값 순서는 `CreationDate` 컬럼의 값 순서와 일치합니다. 여러 개의 주문 키를 지정할 수 있으며, 이는 `SELECT` 쿼리의 `ORDER BY` 절과 동일한 의미로 정렬됩니다.
+:::
+
+기본 키 선택에 대한 완전한 고급 가이드는 [여기에서]( /guides/best-practices/sparse-primary-indexes) 확인하실 수 있습니다.
+
+주문 키가 압축을 개선하고 저장을 더 최적화하는 방법에 대한 자세한 내용은 [ClickHouse의 압축](/data-compression/compression-in-clickhouse) 및 [컬럼 압축 코덱](/data-compression/compression-in-clickhouse#choosing-the-right-column-compression-codec)에 대한 공식 가이드를 참조하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/choosing_a_primary_key.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/choosing_a_primary_key.md.hash
new file mode 100644
index 00000000000..5cdb43889a8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/choosing_a_primary_key.md.hash
@@ -0,0 +1 @@
+83020be9ce7fccb8
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/index.md
new file mode 100644
index 00000000000..6a598d8a116
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/index.md
@@ -0,0 +1,28 @@
+---
+'slug': '/best-practices'
+'keywords':
+- 'Cloud'
+- 'Primary key'
+- 'Ordering key'
+- 'Materialized Views'
+- 'Best Practices'
+- 'Bulk Inserts'
+- 'Asynchronous Inserts'
+- 'Avoid Mutations'
+- 'Avoid nullable Columns'
+- 'Avoid Optimize Final'
+- 'Partitioning Key'
+'title': '개요'
+'hide_title': true
+'description': 'ClickHouse의 모범 사례 섹션을 위한 랜딩 페이지'
+'doc_type': 'landing-page'
+---
+
+import TableOfContents from '@site/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md';
+
+
+# Best Practices in ClickHouse {#best-practices-in-clickhouse}
+
+이 섹션에서는 ClickHouse를 최대한 활용하기 위해 따라야 할 최선의 관행을 제공합니다.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/index.md.hash
new file mode 100644
index 00000000000..33e77cfc023
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/index.md.hash
@@ -0,0 +1 @@
+d31757d44d4fd158
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/json_type.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/json_type.md
new file mode 100644
index 00000000000..6e020c79c80
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/json_type.md
@@ -0,0 +1,319 @@
+---
+'slug': '/best-practices/use-json-where-appropriate'
+'sidebar_position': 10
+'sidebar_label': 'JSON 사용하기'
+'title': '적절할 때 JSON 사용'
+'description': 'JSON을 언제 사용해야 하는지 설명하는 페이지'
+'keywords':
+- 'JSON'
+'show_related_blogs': true
+'doc_type': 'reference'
+---
+
+ClickHouse는 이제 반구조적이고 동적인 데이터에 맞춰 설계된 네이티브 JSON 컬럼 유형을 제공합니다. **이것은 데이터 형식이 아니라 컬럼 유형이라는 점을 명확히 하는 것이 중요합니다**—JSON을 ClickHouse에 문자열로 삽입하거나 [JSONEachRow](/interfaces/formats/JSONEachRow)와 같은 지원되는 형식을 통해 삽입할 수 있지만, 이는 JSON 컬럼 유형을 사용하는 것을 의미하지 않습니다. 사용자는 데이터의 구조가 동적일 때만 JSON 유형을 사용해야 하며, 단순히 JSON 형식을 저장할 때는 사용하지 않아야 합니다.
+
+## JSON 유형을 사용할 때 {#when-to-use-the-json-type}
+
+데이터에 다음과 같은 특성이 있을 때 JSON 유형을 사용하십시오:
+
+* **예측할 수 없는 키**가 시간이 지남에 따라 변할 수 있습니다.
+* **다양한 유형의 값**이 포함되어 있습니다 (예: 경로가 때때로 문자열을 포함할 수 있고, 때로는 숫자를 포함할 수 있음).
+* 엄격한 형식 지정이 불가능한 스키마의 유연성이 필요합니다.
+
+데이터 구조가 알려져 있고 일관된 경우, JSON 유형의 필요성은 거의 없으며, 데이터가 JSON 형식에 있더라도 마찬가지입니다. 특히 데이터가 다음과 같은 경우에는:
+
+* **알려진 키를 가진 평면 구조**: 표준 컬럼 유형(예: String)을 사용하십시오.
+* **예측 가능한 중첩 구조**: 이러한 구조에는 Tuple, Array 또는 Nested 유형을 사용하십시오.
+* **변동되는 유형의 예측 가능한 구조**: Dynamic 또는 Variant 유형을 고려하십시오.
+
+정적 컬럼을 예측 가능한 최상위 필드에 사용하고 페이로드의 동적 섹션에 대해 단일 JSON 컬럼을 사용하는 등 방법을 혼합할 수도 있습니다.
+
+## JSON 사용 시 고려 사항 및 팁 {#considerations-and-tips-for-using-json}
+
+JSON 유형은 경로를 하위 컬럼으로 평면화하여 효율적인 컬럼 저장을 가능하게 합니다. 그러나 유연성에는 책임이 따릅니다. 이를 효과적으로 사용하려면:
+
+* **[컬럼 정의의 힌트](/sql-reference/data-types/newjson)를 사용하여 경로 유형을 지정하십시오**. 이를 통해 알려진 하위 컬럼의 유형을 지정하므로 불필요한 형식 추론을 피할 수 있습니다.
+* **필요하지 않은 경로는 건너뛰십시오**, [SKIP 및 SKIP REGEXP](/sql-reference/data-types/newjson)을 사용하여 저장 공간을 줄이고 성능을 향상시킵니다.
+* **[`max_dynamic_paths`](/sql-reference/data-types/newjson#reaching-the-limit-of-dynamic-paths-inside-json)를 너무 높게 설정하는 것을 피하십시오**—큰 값은 자원 소비를 증가시키고 효율성을 떨어뜨립니다. 일반적인 경험법칙으로 10,000 이하로 유지하는 것이 좋습니다.
+
+:::note 유형 힌트
+유형 힌트는 불필요한 형식 추론을 피하는 방법 그 이상을 제공합니다—저장 및 처리 간접성을 완전히 없앱니다. 유형 힌트가 있는 JSON 경로는 항상 전통적인 컬럼처럼 저장되어 [**구분자 컬럼**](https://clickhouse.com/blog/a-new-powerful-json-data-type-for-clickhouse#storage-extension-for-dynamically-changing-data)이나 쿼리 시 동적 해석의 필요성을 우회합니다. 잘 정의된 유형 힌트가 있는 경우, 중첩된 JSON 필드는 처음부터 최상위 필드로 모델링된 것처럼 동일한 성능과 효율성을 달성합니다. 따라서 데이터셋이 대체로 일관되지만 여전히 JSON의 유연성으로부터 이익을 얻는 경우, 유형 힌트는 스키마나 데이터 수집 파이프라인을 다시 구조화할 필요 없이 성능을 보존하는 편리한 방법을 제공합니다.
+:::
+
+## 고급 기능 {#advanced-features}
+
+* JSON 컬럼은 다른 컬럼과 마찬가지로 **기본 키에 사용할 수** 있습니다. 하위 컬럼에 대한 코덱은 지정할 수 없습니다.
+* [`JSONAllPathsWithTypes()` 및 `JSONDynamicPaths()`](/sql-reference/data-types/newjson#introspection-functions)와 같은 기능을 통해 내부 검사가 가능합니다.
+* `.^` 구문을 사용하여 중첩된 하위 객체를 읽을 수 있습니다.
+* 쿼리 구문은 표준 SQL과 다를 수 있으며, 중첩 필드에 대한 특별한 형식 변환이나 연산자가 필요할 수 있습니다.
+
+추가 지침은 [ClickHouse JSON 문서](/sql-reference/data-types/newjson)를 참조하거나 블로그 게시물 [ClickHouse를 위한 새로운 강력한 JSON 데이터 유형](https://clickhouse.com/blog/a-new-powerful-json-data-type-for-clickhouse)을 탐색하십시오.
+
+## 예제 {#examples}
+
+다음 JSON 샘플을 고려하십시오. 이는 [Python PyPI 데이터셋](https://clickpy.clickhouse.com/)에서 나온 행을 나타냅니다.
+
+```json
+{
+ "date": "2022-11-15",
+ "country_code": "ES",
+ "project": "clickhouse-connect",
+ "type": "bdist_wheel",
+ "installer": "pip",
+ "python_minor": "3.9",
+ "system": "Linux",
+ "version": "0.3.0"
+}
+```
+
+이 스키마가 정적이며 유형을 잘 정의할 수 있다고 가정합니다. 데이터 형식이 NDJSON(각 행이 JSON)일지라도 그러한 스키마에 JSON 유형을 사용할 필요는 없습니다. 클래식 유형으로 스키마를 정의하십시오.
+
+```sql
+CREATE TABLE pypi (
+ `date` Date,
+ `country_code` String,
+ `project` String,
+ `type` String,
+ `installer` String,
+ `python_minor` String,
+ `system` String,
+ `version` String
+)
+ENGINE = MergeTree
+ORDER BY (project, date)
+```
+
+그리고 JSON 행을 삽입하십시오:
+
+```sql
+INSERT INTO pypi FORMAT JSONEachRow
+{"date":"2022-11-15","country_code":"ES","project":"clickhouse-connect","type":"bdist_wheel","installer":"pip","python_minor":"3.9","system":"Linux","version":"0.3.0"}
+```
+
+[arXiv 데이터셋](https://www.kaggle.com/datasets/Cornell-University/arxiv?resource=download)을 고려하십시오. 이 데이터셋은 250만 개의 학술 논문을 포함하고 있습니다. 이 데이터셋의 각 행은 발표된 학술 논문을 나타냅니다. 다음은 예제 행입니다:
+
+```json
+{
+ "id": "2101.11408",
+ "submitter": "Daniel Lemire",
+ "authors": "Daniel Lemire",
+ "title": "Number Parsing at a Gigabyte per Second",
+ "comments": "Software at https://github.com/fastfloat/fast_float and\n https://github.com/lemire/simple_fastfloat_benchmark/",
+ "journal-ref": "Software: Practice and Experience 51 (8), 2021",
+ "doi": "10.1002/spe.2984",
+ "report-no": null,
+ "categories": "cs.DS cs.MS",
+ "license": "http://creativecommons.org/licenses/by/4.0/",
+ "abstract": "With disks and networks providing gigabytes per second ....\n",
+ "versions": [
+ {
+ "created": "Mon, 11 Jan 2021 20:31:27 GMT",
+ "version": "v1"
+ },
+ {
+ "created": "Sat, 30 Jan 2021 23:57:29 GMT",
+ "version": "v2"
+ }
+ ],
+ "update_date": "2022-11-07",
+ "authors_parsed": [
+ [
+ "Lemire",
+ "Daniel",
+ ""
+ ]
+ ]
+}
+```
+
+여기의 JSON은 중첩된 구조로 복잡하지만, 예측 가능합니다. 필드의 수와 유형은 변하지 않을 것입니다. 이 예제에 JSON 유형을 사용할 수 있지만, [Tuples](/sql-reference/data-types/tuple) 및 [Nested](/sql-reference/data-types/nested-data-structures/nested) 유형을 사용하여 구조를 명시적으로 정의할 수도 있습니다:
+
+```sql
+CREATE TABLE arxiv
+(
+ `id` String,
+ `submitter` String,
+ `authors` String,
+ `title` String,
+ `comments` String,
+ `journal-ref` String,
+ `doi` String,
+ `report-no` String,
+ `categories` String,
+ `license` String,
+ `abstract` String,
+ `versions` Array(Tuple(created String, version String)),
+ `update_date` Date,
+ `authors_parsed` Array(Array(String))
+)
+ENGINE = MergeTree
+ORDER BY update_date
+```
+
+다시 JSON으로 데이터를 삽입할 수 있습니다:
+
+```sql
+INSERT INTO arxiv FORMAT JSONEachRow
+{"id":"2101.11408","submitter":"Daniel Lemire","authors":"Daniel Lemire","title":"Number Parsing at a Gigabyte per Second","comments":"Software at https://github.com/fastfloat/fast_float and\n https://github.com/lemire/simple_fastfloat_benchmark/","journal-ref":"Software: Practice and Experience 51 (8), 2021","doi":"10.1002/spe.2984","report-no":null,"categories":"cs.DS cs.MS","license":"http://creativecommons.org/licenses/by/4.0/","abstract":"With disks and networks providing gigabytes per second ....\n","versions":[{"created":"Mon, 11 Jan 2021 20:31:27 GMT","version":"v1"},{"created":"Sat, 30 Jan 2021 23:57:29 GMT","version":"v2"}],"update_date":"2022-11-07","authors_parsed":[["Lemire","Daniel",""]]}
+```
+
+`tags`라는 다른 컬럼이 추가되었다고 가정해 봅시다. 만약 이것이 단순한 문자열 목록이라면 `Array(String)`으로 모델링할 수 있지만, 사용자가 혼합 유형의 임의 태그 구조를 추가할 수 있다고 가정해 봅시다(여기서 `score`는 문자열 또는 정수입니다). 우리의 수정된 JSON 문서:
+
+```sql
+{
+ "id": "2101.11408",
+ "submitter": "Daniel Lemire",
+ "authors": "Daniel Lemire",
+ "title": "Number Parsing at a Gigabyte per Second",
+ "comments": "Software at https://github.com/fastfloat/fast_float and\n https://github.com/lemire/simple_fastfloat_benchmark/",
+ "journal-ref": "Software: Practice and Experience 51 (8), 2021",
+ "doi": "10.1002/spe.2984",
+ "report-no": null,
+ "categories": "cs.DS cs.MS",
+ "license": "http://creativecommons.org/licenses/by/4.0/",
+ "abstract": "With disks and networks providing gigabytes per second ....\n",
+ "versions": [
+ {
+ "created": "Mon, 11 Jan 2021 20:31:27 GMT",
+ "version": "v1"
+ },
+ {
+ "created": "Sat, 30 Jan 2021 23:57:29 GMT",
+ "version": "v2"
+ }
+ ],
+ "update_date": "2022-11-07",
+ "authors_parsed": [
+ [
+ "Lemire",
+ "Daniel",
+ ""
+ ]
+ ],
+ "tags": {
+ "tag_1": {
+ "name": "ClickHouse user",
+ "score": "A+",
+ "comment": "A good read, applicable to ClickHouse"
+ },
+ "28_03_2025": {
+ "name": "professor X",
+ "score": 10,
+ "comment": "Didn't learn much",
+ "updates": [
+ {
+ "name": "professor X",
+ "comment": "Wolverine found more interesting"
+ }
+ ]
+ }
+ }
+}
+```
+
+이 경우, arXiv 문서를 모두 JSON으로 모델링하거나 단순히 JSON `tags` 컬럼을 추가할 수 있습니다. 아래에 두 가지 예제를 제공합니다:
+
+```sql
+CREATE TABLE arxiv
+(
+ `doc` JSON(update_date Date)
+)
+ENGINE = MergeTree
+ORDER BY doc.update_date
+```
+
+:::note
+JSON 정의에서 `update_date` 컬럼에 대한 유형 힌트를 제공합니다. 우리는 이를 정렬/기본 키로 사용합니다. 이는 ClickHouse가 이 컬럼이 null이 아닐 것임을 알고, 어떤 `update_date` 하위 컬럼을 사용해야 하는지 알 수 있도록 도와줍니다(유형마다 여러 개가 있을 수 있으므로, 그렇지 않으면 애매합니다).
+:::
+
+이 테이블에 삽입하고 [`JSONAllPathsWithTypes`](/sql-reference/functions/json-functions#JSONAllPathsWithTypes) 함수와 [`PrettyJSONEachRow`](/interfaces/formats/PrettyJSONEachRow) 출력 형식으로 그 후에 추론된 스키마를 볼 수 있습니다:
+
+```sql
+INSERT INTO arxiv FORMAT JSONAsObject
+{"id":"2101.11408","submitter":"Daniel Lemire","authors":"Daniel Lemire","title":"Number Parsing at a Gigabyte per Second","comments":"Software at https://github.com/fastfloat/fast_float and\n https://github.com/lemire/simple_fastfloat_benchmark/","journal-ref":"Software: Practice and Experience 51 (8), 2021","doi":"10.1002/spe.2984","report-no":null,"categories":"cs.DS cs.MS","license":"http://creativecommons.org/licenses/by/4.0/","abstract":"With disks and networks providing gigabytes per second ....\n","versions":[{"created":"Mon, 11 Jan 2021 20:31:27 GMT","version":"v1"},{"created":"Sat, 30 Jan 2021 23:57:29 GMT","version":"v2"}],"update_date":"2022-11-07","authors_parsed":[["Lemire","Daniel",""]],"tags":{"tag_1":{"name":"ClickHouse user","score":"A+","comment":"A good read, applicable to ClickHouse"},"28_03_2025":{"name":"professor X","score":10,"comment":"Didn't learn much","updates":[{"name":"professor X","comment":"Wolverine found more interesting"}]}}}
+```
+
+```sql
+SELECT JSONAllPathsWithTypes(doc)
+FROM arxiv
+FORMAT PrettyJSONEachRow
+
+{
+ "JSONAllPathsWithTypes(doc)": {
+ "abstract": "String",
+ "authors": "String",
+ "authors_parsed": "Array(Array(Nullable(String)))",
+ "categories": "String",
+ "comments": "String",
+ "doi": "String",
+ "id": "String",
+ "journal-ref": "String",
+ "license": "String",
+ "submitter": "String",
+ "tags.28_03_2025.comment": "String",
+ "tags.28_03_2025.name": "String",
+ "tags.28_03_2025.score": "Int64",
+ "tags.28_03_2025.updates": "Array(JSON(max_dynamic_types=16, max_dynamic_paths=256))",
+ "tags.tag_1.comment": "String",
+ "tags.tag_1.name": "String",
+ "tags.tag_1.score": "String",
+ "title": "String",
+ "update_date": "Date",
+ "versions": "Array(JSON(max_dynamic_types=16, max_dynamic_paths=256))"
+ }
+}
+
+1 row in set. Elapsed: 0.003 sec.
+```
+
+또는 이전 스키마와 JSON `tags` 컬럼을 사용하여 모델링할 수도 있습니다. 이는 일반적으로 ClickHouse가 요구하는 추론을 최소화하므로 선호됩니다:
+
+```sql
+CREATE TABLE arxiv
+(
+ `id` String,
+ `submitter` String,
+ `authors` String,
+ `title` String,
+ `comments` String,
+ `journal-ref` String,
+ `doi` String,
+ `report-no` String,
+ `categories` String,
+ `license` String,
+ `abstract` String,
+ `versions` Array(Tuple(created String, version String)),
+ `update_date` Date,
+ `authors_parsed` Array(Array(String)),
+ `tags` JSON()
+)
+ENGINE = MergeTree
+ORDER BY update_date
+```
+
+```sql
+INSERT INTO arxiv FORMAT JSONEachRow
+{"id":"2101.11408","submitter":"Daniel Lemire","authors":"Daniel Lemire","title":"Number Parsing at a Gigabyte per Second","comments":"Software at https://github.com/fastfloat/fast_float and\n https://github.com/lemire/simple_fastfloat_benchmark/","journal-ref":"Software: Practice and Experience 51 (8), 2021","doi":"10.1002/spe.2984","report-no":null,"categories":"cs.DS cs.MS","license":"http://creativecommons.org/licenses/by/4.0/","abstract":"With disks and networks providing gigabytes per second ....\n","versions":[{"created":"Mon, 11 Jan 2021 20:31:27 GMT","version":"v1"},{"created":"Sat, 30 Jan 2021 23:57:29 GMT","version":"v2"}],"update_date":"2022-11-07","authors_parsed":[["Lemire","Daniel",""]],"tags":{"tag_1":{"name":"ClickHouse user","score":"A+","comment":"A good read, applicable to ClickHouse"},"28_03_2025":{"name":"professor X","score":10,"comment":"Didn't learn much","updates":[{"name":"professor X","comment":"Wolverine found more interesting"}]}}}
+```
+
+이제 하위 컬럼 `tags`의 유형을 추론할 수 있습니다.
+
+```sql
+SELECT JSONAllPathsWithTypes(tags)
+FROM arxiv
+FORMAT PrettyJSONEachRow
+
+{
+ "JSONAllPathsWithTypes(tags)": {
+ "28_03_2025.comment": "String",
+ "28_03_2025.name": "String",
+ "28_03_2025.score": "Int64",
+ "28_03_2025.updates": "Array(JSON(max_dynamic_types=16, max_dynamic_paths=256))",
+ "tag_1.comment": "String",
+ "tag_1.name": "String",
+ "tag_1.score": "String"
+ }
+}
+
+1 row in set. Elapsed: 0.002 sec.
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/json_type.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/json_type.md.hash
new file mode 100644
index 00000000000..78f11424b12
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/json_type.md.hash
@@ -0,0 +1 @@
+e9e2aecc86e64ae2
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/minimize_optimize_joins.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/minimize_optimize_joins.md
new file mode 100644
index 00000000000..3ba1cb3b5e0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/minimize_optimize_joins.md
@@ -0,0 +1,71 @@
+---
+'slug': '/best-practices/minimize-optimize-joins'
+'sidebar_position': 10
+'sidebar_label': 'JOIN을 최소화하고 최적화하기'
+'title': 'JOIN을 최소화하고 최적화하기'
+'description': 'JOIN에 대한 모범 사례를 설명하는 페이지'
+'keywords':
+- 'JOIN'
+- 'Parallel Hash JOIN'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import joins from '@site/static/images/bestpractices/joins-speed-memory.png';
+
+ClickHouse는 다양한 JOIN 유형과 알고리즘을 지원하며, 최근 릴리스에서는 JOIN 성능이 크게 향상되었습니다. 그러나 JOIN은 본질적으로 단일 비정규화 테이블에서 쿼리하는 것보다 비용이 더 비쌉니다. 비정규화는 쿼리 시간 대신 삽입 또는 전처리 시간으로 계산 작업을 이동시켜 런타임에서 상당히 낮은 대기 시간을 발생시킵니다. 실시간 또는 지연에 민감한 분석 쿼리의 경우, **비정규화가 강력히 권장됩니다**.
+
+일반적으로 비정규화가 필요할 때는 다음과 같습니다:
+
+- 테이블이 드물게 변경되거나 배치 갱신이 허용되는 경우.
+- 관계가 다대다 관계가 아니거나 과도한 카디널성을 가지지 않는 경우.
+- 쿼리할 컬럼의 하위 집합만 필요한 경우, 즉 특정 컬럼은 비정규화에서 제외할 수 있는 경우.
+- 실시간 풍부화 또는 평탄화가 관리될 수 있는 Flink와 같은 업스트림 시스템으로 처리를 이동할 수 있는 능력이 있는 경우.
+
+모든 데이터가 비정규화될 필요는 없으며, 자주 쿼리되는 속성에 집중해야 합니다. 또한 전체 서브 테이블을 복제하는 대신 점진적으로 집계를 계산하기 위해 [물리화된 뷰](/best-practices/use-materialized-views)를 고려하십시오. 스키마 업데이트가 드물고 대기 시간이 중요한 경우, 비정규화가 최고의 성능 트레이드 오프를 제공합니다.
+
+ClickHouse에서 데이터 비정규화에 대한 전체 가이드는 [여기](/data-modeling/denormalization)를 참조하십시오.
+
+## JOIN이 필요한 경우 {#when-joins-are-required}
+
+JOIN이 필요한 경우, **최소 24.12 버전을 사용하고 가능하면 최신 버전을 사용**하고 있는지 확인하세요. 각 새로운 릴리스마다 JOIN 성능이 개선되고 있습니다. ClickHouse 24.12부터는 쿼리 계획자가 자동으로 더 작은 테이블을 조인의 오른쪽에 배치하여 최적의 성능을 보장합니다 — 이는 이전에는 수동으로 수행해야 했던 작업입니다. 더 공격적인 필터 푸시다운 및 다중 조인의 자동 재배치와 같은 더욱 향상된 기능이 곧 포함될 예정입니다.
+
+JOIN 성능을 개선하기 위한 모범 사례를 따르십시오:
+
+* **카르테시안 곱을 피하십시오**: 왼쪽 측의 값이 오른쪽 측의 여러 값과 일치하는 경우, JOIN은 여러 행을 반환합니다 — 소위 카르테시안 곱입니다. 사용 사례에서 오른쪽 측의 모든 일치를 필요로 하지 않고 단일 일치만 필요한 경우 `ANY` JOIN(예: `LEFT ANY JOIN`)을 사용할 수 있습니다. 이들은 일반 JOIN보다 더 빠르고 메모리를 적게 사용합니다.
+* **JOIN된 테이블의 크기를 줄이십시오**: JOIN의 실행 시간과 메모리 소비는 왼쪽 및 오른쪽 테이블의 크기에 비례하여 증가합니다. JOIN에서 처리되는 데이터의 양을 줄이기 위해 쿼리의 `WHERE` 또는 `JOIN ON` 절에 추가 필터 조건을 추가하십시오. ClickHouse는 필터 조건을 쿼리 계획에서 가능한 한 깊게 푸시합니다. 필터가 자동으로 푸시되지 않는 경우(JOIN의 한쪽을 서브 쿼리로 재작성하여 푸시를 강제해야 함) 이 방법을 사용하십시오.
+* **필요한 경우 딕셔너리를 통한 직접 JOIN을 사용하십시오**: ClickHouse의 표준 JOIN은 두 단계로 실행됩니다: 해시 테이블을 구축하기 위해 오른쪽 측을 반복하는 빌드 단계와 해시 테이블 조회를 통해 일치하는 JOIN 파트너를 찾기 위해 왼쪽 측을 반복하는 프로브 단계입니다. 오른쪽 측이 [딕셔너리](/dictionary) 또는 키-값 특성이 있는 다른 테이블 엔진(예: [EmbeddedRocksDB](/engines/table-engines/integrations/embedded-rocksdb) 또는 [JOIN 테이블 엔진](/engines/table-engines/special/join))인 경우, ClickHouse는 해시 테이블 구축이 필요 없는 "직접" JOIN 알고리즘을 사용할 수 있어 쿼리 처리 속도를 높입니다. 이 알고리즘은 `INNER` 및 `LEFT OUTER` JOIN에 대해 작동하며 실시간 분석 워크로드에 적합합니다.
+* **JOIN을 위한 테이블 정렬 활용하기**: ClickHouse의 각 테이블은 테이블의 기본 키 컬럼에 따라 정렬됩니다. `full_sorting_merge` 및 `partial_merge`와 같은 소위 정렬-병합 JOIN 알고리즘을 사용하여 테이블의 정렬을 활용할 수 있습니다. 해시 테이블 기반의 표준 JOIN 알고리즘(아래 `parallel_hash`, `hash`, `grace_hash` 참조)과 달리, 정렬-병합 JOIN 알고리즘은 먼저 정렬하고 두 테이블을 병합합니다. 쿼리가 각 테이블의 기본 키 컬럼으로 JOIN되면, 정렬 단계가 생략되는 최적화가 있어 처리 시간과 오버헤드를 절약할 수 있습니다.
+* **디스크 스필 JOIN을 피하십시오**: JOIN의 중간 상태(예: 해시 테이블)가 너무 커져서 메인 메모리에 더 이상 맞지 않게 됩니다. 이 경우, ClickHouse는 기본적으로 메모리 부족 오류를 반환합니다. 일부 JOIN 알고리즘(아래 참조) 예: [`grace_hash`](https://clickhouse.com/blog/clickhouse-fully-supports-joins-hash-joins-part2), [`partial_merge`](https://clickhouse.com/blog/clickhouse-fully-supports-joins-full-sort-partial-merge-part3) 및 [`full_sorting_merge`](https://clickhouse.com/blog/clickhouse-fully-supports-joins-full-sort-partial-merge-part3)는 중간 상태를 디스크로 스필하고 쿼리 실행을 계속할 수 있습니다. 그러나 디스크 접근이 JOIN 처리 속도를 크게 저하시킬 수 있으므로 이러한 JOIN 알고리즘은 신중하게 사용해야 합니다. 대신 중간 상태의 크기를 줄이기 위해 JOIN 쿼리를 다른 방법으로 최적화하는 것이 좋습니다.
+* **외부 JOIN에서의 기본값을 비 일치 마커로 사용**: 왼쪽/오른쪽/전체 외부 JOIN은 왼쪽/오른쪽/두 테이블의 모든 값을 포함합니다. 다른 테이블에서 어떤 값의 JOIN 파트너가 발견되지 않으면 ClickHouse는 JOIN 파트너를 특별한 마커로 대체합니다. SQL 표준에서는 데이터베이스가 NULL을 이러한 마커로 사용하도록 규정하고 있습니다. ClickHouse에서 이를 위해서는 결과 컬럼을 Nullable로 래핑해야 하며, 추가적인 메모리와 성능 오버헤드가 발생합니다. 대안으로, 설정 `join_use_nulls = 0`을 구성하고 결과 컬럼 데이터 타입의 기본값을 마커로 사용할 수 있습니다.
+
+:::note 딕셔너리를 신중하게 사용하세요
+ClickHouse에서 JOIN을 위해 딕셔너리를 사용할 때, 설계상 딕셔너리가 중복 키를 허용하지 않음을 이해하는 것이 중요합니다. 데이터 로딩 중에 모든 중복 키는 조용히 제거되며 — 주어진 키에 대한 마지막 로드된 값만 유지됩니다. 이러한 동작은 딕셔너리를 일대일 또는 다대일 관계에 이상적으로 만듭니다. 그런데 하나의 키가 여러 번 일치하는 다대다 관계(예: 하나의 배우가 여러 역할을 가질 수 있는 경우)에 대한 JOIN에 딕셔너리를 사용할 경우, 모든 일치하는 행 중 하나를 제외한 나머지 행이 삭제되면서 데이터 손실이 발생하게 됩니다. 따라서 딕셔너리는 다수의 일치에서 완전한 관계적 충실도가 필요한 시나리오에는 적합하지 않습니다.
+:::
+
+## 올바른 JOIN 알고리즘 선택 {#choosing-the-right-join-algorithm}
+
+ClickHouse는 속도와 메모리 간의 균형을 맞추는 몇 가지 JOIN 알고리즘을 지원합니다:
+
+* **병렬 해시 JOIN (기본값)**: 메모리에 맞는 소형에서 중형의 오른쪽 테이블에 빠릅니다.
+* **직접 JOIN**: `INNER` 또는 `LEFT ANY JOIN`에서 딕셔너리(또는 다른 키-값 특성을 가진 테이블 엔진)를 사용하는 경우 이상적입니다 — 해시 테이블을 빌드할 필요가 없어 포인트 조회에 가장 빠른 방법입니다.
+* **전체 정렬 병합 JOIN**: 두 테이블이 JOIN 키를 기준으로 정렬된 경우 효율적입니다.
+* **부분 병합 JOIN**: 메모리를 최소화하지만 느립니다 — 메모리가 제한된 대형 테이블을 조인할 때 가장 적합합니다.
+* **그레이스 해시 JOIN**: 유연하고 메모리 조정 가능, 조정 가능한 성능 특성을 가진 대용량 데이터 세트에 적합합니다.
+
+
+
+:::note
+각 알고리즘은 다양한 JOIN 유형에 대한 지원이 다릅니다. 각 알고리즘의 지원되는 JOIN 유형의 전체 목록은 [여기](/guides/joining-tables#choosing-a-join-algorithm)에서 확인할 수 있습니다.
+:::
+
+ClickHouse가 최적의 알고리즘을 선택하게 하려면 `join_algorithm = 'auto'`(기본값)를 설정하거나 워크로드에 따라 명시적으로 제어할 수 있습니다. 성능 또는 메모리 오버헤드를 최적화하기 위해 JOIN 알고리즘을 선택해야 하는 경우, [이 가이드](/guides/joining-tables#choosing-a-join-algorithm)를 추천합니다.
+
+최적의 성능을 위해:
+
+* 고성능 워크로드에서 JOIN을 최소한으로 유지하십시오.
+* 쿼리당 3~4개의 JOIN을 초과하지 않도록 하십시오.
+* 실제 데이터에서 서로 다른 알고리즘을 벤치마킹하십시오 — 성능은 JOIN 키 분포 및 데이터 크기에 따라 달라집니다.
+
+JOIN 최적화 전략, JOIN 알고리즘 및 조정 방법에 대한 자세한 내용은 [ClickHouse 문서](/guides/joining-tables)와 이 [블로그 시리즈](https://clickhouse.com/blog/clickhouse-fully-supports-joins-part1)를 참조하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/minimize_optimize_joins.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/minimize_optimize_joins.md.hash
new file mode 100644
index 00000000000..b4738f2cb7e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/minimize_optimize_joins.md.hash
@@ -0,0 +1 @@
+2ecb618805b1d019
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/partitioning_keys.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/partitioning_keys.mdx
new file mode 100644
index 00000000000..7f0314453a3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/partitioning_keys.mdx
@@ -0,0 +1,70 @@
+---
+'slug': '/best-practices/choosing-a-partitioning-key'
+'sidebar_position': 10
+'sidebar_label': '파티션 키 선택하기'
+'title': '파티션 키 선택하기'
+'description': '파티션 키를 선택하는 방법을 설명하는 페이지'
+'keywords':
+- 'partitioning key'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import partitions from '@site/static/images/bestpractices/partitions.png';
+import merges_with_partitions from '@site/static/images/bestpractices/merges_with_partitions.png';
+
+
+:::note A data management technique
+파티셔닝은 주로 데이터 관리 기술이며 쿼리 최적화 도구가 아닙니다. 특정 작업 부하에서 성능을 향상시킬 수 있지만, 쿼리를 가속화하는 첫 번째 메커니즘으로 사용해서는 안 됩니다. 파티셔닝 키는 그 의미를 명확하게 이해한 상태에서 신중하게 선택해야 하며, 데이터 수명 주기 필요 또는 잘 이해된 접근 패턴과 일치할 때에만 적용해야 합니다.
+:::
+
+ClickHouse에서 파티셔닝은 지정된 키를 기반으로 데이터를 논리적 세그먼트로 조직합니다. 이는 테이블 생성 시 `PARTITION BY` 절을 사용하여 정의되며, 일반적으로 시간 간격, 카테고리 또는 기타 비즈니스 관련 차원에 따라 행을 그룹화하는 데 사용됩니다. 파티셔닝 표현의 각 고유 값은 디스크에 고유한 물리적 파티션을 형성하며, ClickHouse는 이러한 각 값에 대해 데이터를 별도의 파트로 저장합니다. 파티셔닝은 데이터 관리를 개선하고 보존 정책을 단순화하며 특정 쿼리 패턴에 도움이 될 수 있습니다.
+
+예를 들어, `toStartOfMonth(date)`의 파티셔닝 키를 가진 다음과 같은 영국 지불 가격 데이터셋 테이블을 고려해 보십시오.
+
+```sql
+CREATE TABLE uk.uk_price_paid_simple_partitioned
+(
+ date Date,
+ town LowCardinality(String),
+ street LowCardinality(String),
+ price UInt32
+)
+ENGINE = MergeTree
+ORDER BY (town, street)
+PARTITION BY toStartOfMonth(date)
+```
+
+테이블에 행 세트를 삽입할 때, ClickHouse는 모든 삽입된 행이 포함된 (적어도 하나의) 단일 데이터 파트를 생성하는 대신 (여기서 설명된 대로) 삽입된 행 중 고유한 각 파티션 키 값에 대해 새 데이터 파트를 생성합니다:
+
+
+
+ClickHouse 서버는 먼저 위의 예시 삽입에서 4개의 행을 `toStartOfMonth(date)`의 파티션 키 값에 따라 분할합니다. 그런 다음 각 식별된 파티션에 대해, 행은 여러 순차적 단계를 수행하여 [일반적으로](/parts) 처리됩니다 (① 정렬, ② 컬럼으로 분할, ③ 압축, ④ 디스크에 기록).
+
+파티셔닝에 대한 보다 자세한 설명은 [이 가이드](/partitions)를 권장합니다.
+
+파티셔닝이 활성화되면, ClickHouse는 파티션의 내부에서만 [병합](/merges)을 수행하지만, 파티션 간의 병합은 수행하지 않습니다. 위의 예시 테이블에 대해 이를 설명합니다:
+
+
+
+## Applications of partitioning {#applications-of-partitioning}
+
+파티셔닝은 ClickHouse에서 대규모 데이터셋을 관리하는 강력한 도구로, 특히 관찰성과 분석 사용 사례에 유용합니다. 이는 전체 파티션을 단일 메타데이터 작업에서 삭제, 이동 또는 보관할 수 있게 하여 효율적인 데이터 수명 주기 작업을 가능하게 합니다. 이는 행 수준 삭제 또는 복사 작업보다 훨씬 빠르고 리소스 집약적이지 않습니다. 파티셔닝은 TTL 및 계층화된 스토리지와 같은 ClickHouse 기능과 원활하게 통합되어 사용자 정의 오케스트레이션 없이 보존 정책이나 핫/콜드 스토리지 전략을 구현할 수 있게 합니다. 예를 들어, 최근 데이터는 빠른 SSD 기반 스토리지에 유지되고, 오래된 파티션은 자동으로 저렴한 객체 스토리지로 이동됩니다.
+
+파티셔닝이 일부 작업 부하에 대해 쿼리 성능을 개선할 수 있지만, 응답 시간에 부정적인 영향을 줄 수도 있습니다.
+
+파티셔닝 키가 기본 키에 포함되어 있지 않고 필터링하고 있는 경우, 사용자들은 파티셔닝을 통해 쿼리 성능이 개선되는 것을 느낄 수 있습니다. [여기서](/partitions#query-optimization) 예제를 확인하십시오.
+
+반대로, 쿼리가 파티션을 넘어 쿼리해야 하는 경우 총 파트 수 증가로 인해 성능이 부정적으로 영향을 받을 수 있습니다. 이러한 이유로 사용자들은 쿼리 최적화 기술로 고려하기 전에 접근 패턴을 이해해야 합니다.
+
+요약하자면, 사용자는 파티셔닝을 주로 데이터 관리 기술로 생각해야 합니다. 데이터 관리에 대한 예시는 관찰성 사용 사례 가이드의 ["데이터 관리"](/observability/managing-data) 및 Core Concepts - 테이블 파티션의 ["테이블 파티션은 무엇을 위해 사용됩니까?"](/partitions#data-management)를 참조하십시오.
+
+## Choose a low cardinality partitioning key {#choose-a-low-cardinality-partitioning-key}
+
+중요하게도, 파트 수가 많아지면 쿼리 성능에 부정적인 영향을 미칠 것입니다. 따라서 ClickHouse는 [“너무 많은 파트”](/knowledgebase/exception-too-many-parts) 오류에 대해, 총 파트 수가 [총합](/operations/settings/merge-tree-settings#max_parts_in_total) 또는 [파티션당](/operations/settings/merge-tree-settings#parts_to_throw_insert) 지정된 제한을 초과할 경우 응답합니다.
+
+파티셔닝 키에 적합한 **카디널리티**를 선택하는 것은 매우 중요합니다. 고카디널리티 파티셔닝 키 - 고유한 파티션 값의 수가 많은 경우 - 는 데이터 파트의 급증을 초래할 수 있습니다. ClickHouse는 파티션 간의 파트를 병합하지 않기 때문에, 너무 많은 파티션은 너무 많은 병합되지 않은 파트를 초래하고 결국 "너무 많은 파트" 오류를 발생시킵니다. [병합은 필수적입니다](/merges) 스토리지 단편화를 줄이고 쿼리 속도를 최적화하기 위해, 그러나 고카디널리티 파티션에서는 그 병합 가능성이 상실됩니다.
+
+대조적으로, **저카디널리티 파티셔닝 키**—100 - 1,000개 미만의 고유 값—가 보통 최적입니다. 이는 효율적인 파트 병합을 가능하게 하고, 메타데이터 오버헤드를 낮게 유지하며, 저장소에서 과도한 객체 생성을 방지합니다. 또한 ClickHouse는 파티션 컬럼에 대해 MinMax 인덱스를 자동으로 생성하여 해당 컬럼에서 필터링할 때 쿼리 속도를 크게 향상시킬 수 있습니다. 예를 들어, 테이블이 `toStartOfMonth(date)`로 파티션되어 있을 때 월별로 필터링하면 엔진이 관련 없는 파티션과 그 파트를 완전히 건너뛸 수 있습니다.
+
+파티셔닝이 일부 쿼리 패턴에서 성능을 향상시킬 수 있지만, 주로 데이터 관리 기능입니다. 많은 경우, 모든 파티션을 쿼리하는 것은 데이터 단편화 증가 및 스캔되는 파트 수 증가로 인해 비파티셔닝 테이블을 사용하는 것보다 느릴 수 있습니다. 파티셔닝을 신중하게 사용하고 항상 선택한 키가 저카디널리티이며 데이터 수명 주기 정책(예: TTL을 통한 보존)에 맞는지 확인하십시오. 파티셔닝이 필요한지 확실하지 않다면, 시작할 때 파티셔닝 없이 시작하고 관찰된 접근 패턴에 따라 나중에 최적화할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/partitioning_keys.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/partitioning_keys.mdx.hash
new file mode 100644
index 00000000000..216c7e901e7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/partitioning_keys.mdx.hash
@@ -0,0 +1 @@
+48f58d99f6715179
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/select_data_type.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/select_data_type.md
new file mode 100644
index 00000000000..9a47ded5307
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/select_data_type.md
@@ -0,0 +1,141 @@
+---
+'slug': '/best-practices/select-data-types'
+'sidebar_position': 10
+'sidebar_label': '데이터 유형 선택하기'
+'title': '데이터 유형 선택하기'
+'description': 'ClickHouse에서 데이터 유형을 선택하는 방법에 대해 설명하는 페이지'
+'keywords':
+- 'data types'
+'doc_type': 'reference'
+---
+
+import NullableColumns from '@site/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_avoid_nullable_columns.md';
+
+One of the core reasons for ClickHouse's query performance is its efficient data compression. Less data on disk results in faster queries and inserts by minimizing I/O overhead. ClickHouse's column-oriented architecture naturally arranges similar data adjacently, enabling compression algorithms and codecs to reduce data size dramatically. To maximize these compression benefits, it's essential to carefully choose appropriate data types.
+
+Compression efficiency in ClickHouse depends mainly on three factors: the ordering key, data types, and codecs, all defined through the table schema. Choosing optimal data types yields immediate improvements in both storage and query performance.
+
+Some straightforward guidelines can significantly enhance the schema:
+
+* **Use Strict Types:** Always select the correct data type for columns. Numeric and date fields should use appropriate numeric and date types rather than general-purpose String types. This ensures correct semantics for filtering and aggregations.
+
+* **Avoid nullable Columns:** Nullable columns introduce additional overhead by maintaining separate columns for tracking null values. Only use Nullable if explicitly required to distinguish between empty and null states. Otherwise, default or zero-equivalent values typically suffice. For further information on why this type should be avoided unless needed, see [Avoid nullable Columns](/best-practices/select-data-types#avoid-nullable-columns).
+
+* **Minimize Numeric Precision:** Select numeric types with minimal bit-width that still accommodate the expected data range. For instance, prefer [UInt16 over Int32](/sql-reference/data-types/int-uint) if negative values aren't needed, and the range fits within 0–65535.
+
+* **Optimize Date and Time Precision:** Choose the most coarse-grained date or datetime type that meets query requirements. Use Date or Date32 for date-only fields, and prefer DateTime over DateTime64 unless millisecond or finer precision is essential.
+
+* **Leverage LowCardinality and Specialized Types:** For columns with fewer than approximately 10,000 unique values, use LowCardinality types to significantly reduce storage through dictionary encoding. Similarly, use FixedString only when the column values are strictly fixed-length strings (e.g., country or currency codes), and prefer Enum types for columns with a finite set of possible values to enable efficient storage and built-in data validation.
+
+* **Enums for data validation:** The Enum type can be used to efficiently encode enumerated types. Enums can either be 8 or 16 bits, depending on the number of unique values they are required to store. Consider using this if you need either the associated validation at insert time (undeclared values will be rejected) or wish to perform queries which exploit a natural ordering in the Enum values e.g. imagine a feedback column containing user responses Enum(':(' = 1, ':|' = 2, ':)' = 3).
+
+## Example {#example}
+
+ClickHouse offers built-in tools to streamline type optimization. For example, schema inference can automatically identify initial types. Consider the Stack Overflow dataset, publicly available in Parquet format. Running a simple schema inference via the [`DESCRIBE`](/sql-reference/statements/describe-table) command provides an initial non-optimized schema.
+
+:::note
+By default, ClickHouse maps these to equivalent Nullable types. This is preferred as the schema is based on a sample of the rows only.
+:::
+
+```sql
+DESCRIBE TABLE s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/posts/*.parquet')
+SETTINGS describe_compact_output = 1
+
+┌─name───────────────────────┬─type──────────────────────────────┐
+│ Id │ Nullable(Int64) │
+│ PostTypeId │ Nullable(Int64) │
+│ AcceptedAnswerId │ Nullable(Int64) │
+│ CreationDate │ Nullable(DateTime64(3, 'UTC')) │
+│ Score │ Nullable(Int64) │
+│ ViewCount │ Nullable(Int64) │
+│ Body │ Nullable(String) │
+│ OwnerUserId │ Nullable(Int64) │
+│ OwnerDisplayName │ Nullable(String) │
+│ LastEditorUserId │ Nullable(Int64) │
+│ LastEditorDisplayName │ Nullable(String) │
+│ LastEditDate │ Nullable(DateTime64(3, 'UTC')) │
+│ LastActivityDate │ Nullable(DateTime64(3, 'UTC')) │
+│ Title │ Nullable(String) │
+│ Tags │ Nullable(String) │
+│ AnswerCount │ Nullable(Int64) │
+│ CommentCount │ Nullable(Int64) │
+│ FavoriteCount │ Nullable(Int64) │
+│ ContentLicense │ Nullable(String) │
+│ ParentId │ Nullable(String) │
+│ CommunityOwnedDate │ Nullable(DateTime64(3, 'UTC')) │
+│ ClosedDate │ Nullable(DateTime64(3, 'UTC')) │
+└────────────────────────────┴───────────────────────────────────┘
+
+22 rows in set. Elapsed: 0.130 sec.
+```
+
+:::note
+Note below we use the glob pattern *.parquet to read all files in the stackoverflow/parquet/posts folder.
+:::
+
+By applying our early simple rules to our posts table, we can identify an optimal type for each column:
+
+| Column | Is Numeric | Min, Max | Unique Values | Nulls | Comment | Optimized Type |
+|------------------------|------------|------------------------------------------------------------------------|----------------|--------|----------------------------------------------------------------------------------------------|------------------------------------------|
+| `PostTypeId` | Yes | 1, 8 | 8 | No | | `Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8)` |
+| `AcceptedAnswerId` | Yes | 0, 78285170 | 12282094 | Yes | Differentiate Null with 0 value | UInt32 |
+| `CreationDate` | No | 2008-07-31 21:42:52.667000000, 2024-03-31 23:59:17.697000000 | - | No | Millisecond granularity is not required, use DateTime | DateTime |
+| `Score` | Yes | -217, 34970 | 3236 | No | | Int32 |
+| `ViewCount` | Yes | 2, 13962748 | 170867 | No | | UInt32 |
+| `Body` | No | - | - | No | | String |
+| `OwnerUserId` | Yes | -1, 4056915 | 6256237 | Yes | | Int32 |
+| `OwnerDisplayName` | No | - | 181251 | Yes | Consider Null to be empty string | String |
+| `LastEditorUserId` | Yes | -1, 9999993 | 1104694 | Yes | 0 is an unused value can be used for Nulls | Int32 |
+| `LastEditorDisplayName` | No | - | 70952 | Yes | Consider Null to be an empty string. Tested LowCardinality and no benefit | String |
+| `LastEditDate` | No | 2008-08-01 13:24:35.051000000, 2024-04-06 21:01:22.697000000 | - | No | Millisecond granularity is not required, use DateTime | DateTime |
+| `LastActivityDate` | No | 2008-08-01 12:19:17.417000000, 2024-04-06 21:01:22.697000000 | - | No | Millisecond granularity is not required, use DateTime | DateTime |
+| `Title` | No | - | - | No | Consider Null to be an empty string | String |
+| `Tags` | No | - | - | No | Consider Null to be an empty string | String |
+| `AnswerCount` | Yes | 0, 518 | 216 | No | Consider Null and 0 to same | UInt16 |
+| `CommentCount` | Yes | 0, 135 | 100 | No | Consider Null and 0 to same | UInt8 |
+| `FavoriteCount` | Yes | 0, 225 | 6 | Yes | Consider Null and 0 to same | UInt8 |
+| `ContentLicense` | No | - | 3 | No | LowCardinality outperforms FixedString | LowCardinality(String) |
+| `ParentId` | No | - | 20696028 | Yes | Consider Null to be an empty string | String |
+| `CommunityOwnedDate` | No | 2008-08-12 04:59:35.017000000, 2024-04-01 05:36:41.380000000 | - | Yes | Consider default 1970-01-01 for Nulls. Millisecond granularity is not required, use DateTime | DateTime |
+| `ClosedDate` | No | 2008-09-04 20:56:44, 2024-04-06 18:49:25.393000000 | - | Yes | Consider default 1970-01-01 for Nulls. Millisecond granularity is not required, use DateTime | DateTime |
+
+:::note Tip
+Identifying the type for a column relies on understanding its numeric range and number of unique values. To find the range of all columns, and the number of distinct values, users can use the simple query `SELECT * APPLY min, * APPLY max, * APPLY uniq FROM table FORMAT Vertical`. We recommend performing this over a smaller subset of the data as this can be expensive.
+:::
+
+This results in the following optimized schema (with respect to types):
+
+```sql
+CREATE TABLE posts
+(
+ Id Int32,
+ PostTypeId Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5,
+ 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ AcceptedAnswerId UInt32,
+ CreationDate DateTime,
+ Score Int32,
+ ViewCount UInt32,
+ Body String,
+ OwnerUserId Int32,
+ OwnerDisplayName String,
+ LastEditorUserId Int32,
+ LastEditorDisplayName String,
+ LastEditDate DateTime,
+ LastActivityDate DateTime,
+ Title String,
+ Tags String,
+ AnswerCount UInt16,
+ CommentCount UInt8,
+ FavoriteCount UInt8,
+ ContentLicense LowCardinality(String),
+ ParentId String,
+ CommunityOwnedDate DateTime,
+ ClosedDate DateTime
+)
+ENGINE = MergeTree
+ORDER BY tuple()
+```
+
+## Avoid nullable columns {#avoid-nullable-columns}
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/select_data_type.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/select_data_type.md.hash
new file mode 100644
index 00000000000..0f8ebec4055
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/select_data_type.md.hash
@@ -0,0 +1 @@
+e96d8d07c3e01ab6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/selecting_an_insert_strategy.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/selecting_an_insert_strategy.md
new file mode 100644
index 00000000000..277a61cd42e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/selecting_an_insert_strategy.md
@@ -0,0 +1,153 @@
+---
+'slug': '/best-practices/selecting-an-insert-strategy'
+'sidebar_position': 10
+'sidebar_label': '삽입 전략 선택하기'
+'title': '삽입 전략 선택하기'
+'description': 'ClickHouse에서 삽입 전략을 선택하는 방법에 대한 페이지'
+'keywords':
+- 'INSERT'
+- 'asynchronous inserts'
+- 'compression'
+- 'batch inserts'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import insert_process from '@site/static/images/bestpractices/insert_process.png';
+import async_inserts from '@site/static/images/bestpractices/async_inserts.png';
+import AsyncInserts from '@site/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_async_inserts.md';
+import BulkInserts from '@site/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_bulk_inserts.md';
+
+Efficient data ingestion forms the basis of high-performance ClickHouse deployments. Selecting the right insert strategy can dramatically impact throughput, cost, and reliability. This section outlines best practices, tradeoffs, and configuration options to help you make the right decision for your workload.
+
+:::note
+다음 내용은 클라이언트를 통해 ClickHouse에 데이터를 전송하는 경우를 가정합니다. 만약 [s3](/sql-reference/table-functions/s3)와 [gcs](/sql-reference/table-functions/gcs)와 같은 내장 테이블 함수들을 사용하여 ClickHouse로 데이터를 가져오고 있다면, ["S3 삽입 및 읽기 성능 최적화 가이드"](/integrations/s3/performance)를 참고하시기 바랍니다.
+:::
+
+## 기본값으로 동기 삽입 {#synchronous-inserts-by-default}
+
+기본적으로 ClickHouse에 대한 삽입은 동기적입니다. 각 삽입 쿼리는 즉시 디스크에 메타데이터와 인덱스를 포함한 저장 파트를 생성합니다.
+
+:::note 클라이언트 측에서 데이터를 배치할 수 있다면 동기 삽입을 사용하세요
+그렇지 않다면 아래의 [비동기 삽입](#asynchronous-inserts)을 참조하세요.
+:::
+
+아래에서 ClickHouse의 MergeTree 삽입 메커니즘을 간략히 검토합니다:
+
+
+
+#### 클라이언트 측 단계 {#client-side-steps}
+
+최적의 성능을 위해 데이터는 ① [배치](https://clickhouse.com/blog/asynchronous-data-inserts-in-clickhouse#data-needs-to-be-batched-for-optimal-performance)되어야 하며, 배치 크기가 **첫 번째 결정 사항**입니다.
+
+ClickHouse는 삽입된 데이터를 디스크에, [주 키 컬럼 순서대로](/guides/best-practices/sparse-primary-indexes#data-is-stored-on-disk-ordered-by-primary-key-columns) 저장합니다. **두 번째 결정 사항**은 서버로 전송하기 전에 데이터를 ② 미리 정렬할 것인지입니다. 배치가 주 키 컬럼 순서에 따라 미리 정렬되어 도착한다면 ClickHouse는 ⑩ 정렬 단계를 [건너뛰고](https://github.com/ClickHouse/ClickHouse/blob/94ce8e95404e991521a5608cd9d636ff7269743d/src/Storages/MergeTree/MergeTreeDataWriter.cpp#L595) 삽입 속도를 높일 수 있습니다.
+
+삽입할 데이터에 미리 정의된 형식이 없는 경우, **주요 결정**은 형식 선택입니다. ClickHouse는 [70개 이상의 형식](/interfaces/formats)으로 데이터 삽입을 지원합니다. 그러나 ClickHouse 명령줄 클라이언트나 프로그래밍 언어 클라이언트를 사용할 때 이 선택은 종종 자동으로 처리됩니다. 필요 시 이 자동 선택을 명시적으로 오버라이드할 수도 있습니다.
+
+다음 **주요 결정**은 ④ ClickHouse 서버로 전송하기 전에 데이터를 압축할 것인지입니다. 압축은 전송 크기를 줄이고 네트워크 효율성을 향상시켜, 특히 대규모 데이터 세트에 대해 더 빠른 데이터 전송과 낮은 대역폭 사용을 가능하게 합니다.
+
+데이터는 ⑤ ClickHouse 네트워크 인터페이스—[네이티브](/interfaces/tcp) 또는 [HTTP](/interfaces/http) 인터페이스—로 전송됩니다(이 부분은 나중에 [비교](https://clickhouse.com/blog/clickhouse-input-format-matchup-which-is-fastest-most-efficient#clickhouse-client-defaults)합니다).
+
+#### 서버 측 단계 {#server-side-steps}
+
+ClickHouse는 ⑥ 데이터를 수신하면, 압축이 사용되었다면 이를 ⑦ 압축 해제하고, 원래 전송된 형식에서 ⑧ 구문 분석을 진행합니다.
+
+형식화된 데이터의 값과 대상 테이블의 [DDL](/sql-reference/statements/create/table) 문을 사용하여, ClickHouse는 ⑨ MergeTree 형식의 메모리 내 [블록](/development/architecture#block)을 구축하고, 주 키 컬럼에 따라 행을 ⑩ [정렬](/parts#what-are-table-parts-in-clickhouse)하며, ⑪ [스파스 기본 인덱스](/guides/best-practices/sparse-primary-indexes)를 생성하고, ⑫ [컬럼별 압축](/parts#what-are-table-parts-in-clickhouse)을 적용하며, ⑬ 데이터를 새 ⑭ [데이터 파트](/parts)로 디스크에 기록합니다.
+
+### 동기인 경우 배치 삽입 {#batch-inserts-if-synchronous}
+
+
+
+### 아이들포턴트 재시도 보장 {#ensure-idempotent-retries}
+
+동기 삽입은 **아이들포턴트**입니다. MergeTree 엔진을 사용할 때, ClickHouse는 기본적으로 삽입을 중복 제거합니다. 이는 다음과 같은 애매한 실패 사례로부터 보호합니다:
+
+* 삽입이 성공했으나 클라이언트가 네트워크 중단으로 인해 응답을 받지 못함.
+* 삽입이 서버에서 실패하고 타임아웃 됨.
+
+두 경우 모두 **삽입을 재시도하는 것이 안전합니다** — 배치 내용과 순서가 동일한 한에서. 이러한 이유로, 클라이언트가 일관되게 재시도하고 데이터를 수정하거나 재정렬하지 않는 것이 중요합니다.
+
+### 올바른 삽입 대상을 선택하세요 {#choose-the-right-insert-target}
+
+샤드 클러스터에서는 두 가지 옵션이 있습니다:
+
+* **MergeTree** 또는 **ReplicatedMergeTree** 테이블에 직접 삽입합니다. 클라이언트가 샤드 간 부하 분산을 수행할 수 있을 때 가장 효율적인 옵션입니다. `internal_replication = true`를 설정하면 ClickHouse가 복제를 투명하게 처리합니다.
+* [분산 테이블](/engines/table-engines/special/distributed)에 삽입합니다. 이를 통해 클라이언트는 데이터를任意 노드로 전송하고 ClickHouse가 이를 올바른 샤드로 전달하게 할 수 있습니다. 이는 간단하지만 추가 포워딩 단계 때문에 성능이 약간 떨어집니다. 여전히 `internal_replication = true`를 권장합니다.
+
+**ClickHouse Cloud에서는 모든 노드가 동일한 단일 샤드에 대해 읽고 씁니다. 삽입은 자동으로 노드 간에 균형을 이룹니다. 사용자는 노출된 엔드포인트에 간단히 삽입을 전송할 수 있습니다.**
+
+### 올바른 형식 선택 {#choose-the-right-format}
+
+올바른 입력 형식 선택은 ClickHouse에서 효율적인 데이터 삽입을 위해 매우 중요합니다. 지원되는 70개 이상의 형식 중에서 가장 성능이 우수한 옵션을 선택하면 삽입 속도, CPU 및 메모리 사용, 시스템 전체 효율성에 큰 영향을 미칠 수 있습니다.
+
+데이터 엔지니어링 및 파일 기반 가져오기에 유용한 유연성도 있지만, **애플리케이션은 성능 지향 형식을 우선시해야 합니다**:
+
+* **네이티브 형식** (권장): 가장 효율적입니다. 컬럼 지향이며, 서버 측에서의 최소한의 구문 분석이 필요합니다. Go 및 Python 클라이언트에서 기본적으로 사용됩니다.
+* **RowBinary**: 효율적인 행 기반 형식으로, 클라이언트 측에서 컬럼형 변환이 어려운 경우에 적합합니다. Java 클라이언트에서 사용됩니다.
+* **JSONEachRow**: 사용하기 쉽지만 구문 분석 비용이 발생합니다. 저체적 사용 사례나 빠른 통합에 적합합니다.
+
+### 압축 사용 {#use-compression}
+
+압축은 네트워크 오버헤드를 줄이고 삽입 속도를 높이며 ClickHouse의 저장 비용을 낮추는 데 중요한 역할을 합니다. 효과적으로 사용하면 데이터 형식이나 스키마 변경을 요구하지 않고도 삽입 성능을 향상시킵니다.
+
+삽입할 데이터를 압축하면 네트워크를 통해 전송되는 페이로드 크기가 줄어들어 대역폭 사용을 최소화하고 전송 속도를 가속화합니다.
+
+삽입의 경우, 네이티브 형식과 함께 사용할 때 압축이 특히 효과적입니다. 이 형식은 ClickHouse의 내부 컬럼형 저장 모델과 이미 일치합니다. 이 설정에서 서버는 빠르게 데이터의 압축을 해제하고 최소한의 변형으로 데이터를 직접 저장할 수 있습니다.
+
+#### 속도를 위한 LZ4 사용, 압축 비율을 위한 ZSTD 사용 {#use-lz4-for-speed-zstd-for-compression-ratio}
+
+ClickHouse는 데이터 전송 중 여러 압축 코덱을 지원합니다. 두 가지 일반적인 옵션은 다음과 같습니다:
+
+* **LZ4**: 빠르고 경량입니다. CPU 오버헤드가 최소화되어 높은 전송량의 삽입에 적합하며, 대부분의 ClickHouse 클라이언트에서 기본적으로 사용됩니다.
+* **ZSTD**: 더 높은 압축 비율을 제공하지만 CPU 집약적입니다. 네트워크 전송 비용이 높은 경우(예: 크로스 리전 또는 클라우드 공급자 시나리오) 유용하지만 클라이언트 측 컴퓨팅과 서버 측 압축 해제 시간이 약간 증가합니다.
+
+모범 사례: 대역폭 제약이나 데이터 이탈 비용이 없다면 LZ4를 사용하세요 — 그렇지 않으면 ZSTD를 고려하세요.
+
+:::note
+[FastFormats 벤치마크](https://clickhouse.com/blog/clickhouse-input-format-matchup-which-is-fastest-most-efficient) 테스트에서 LZ4 압축된 네이티브 삽입은 데이터 크기를 50% 이상 줄여 5.6 GiB 데이터 세트의 삽입 시간을 150초에서 131초로 단축했습니다. ZSTD로 전환 시 같은 데이터 세트의 크기가 1.69 GiB로 줄어들었지만 서버 측 처리 시간이 약간 증가했습니다.
+:::
+
+#### 압축이 자원 사용을 줄입니다 {#compression-reduces-resource-usage}
+
+압축은 네트워크 트래픽을 줄일 뿐만 아니라 서버의 CPU 및 메모리 효율성 또한 개선합니다. 압축된 데이터를 통해 ClickHouse는 더 적은 바이트를 수신하고 대량 입력 구문 분석에 소요되는 시간을 줄입니다. 이 이점은 관찰 가능성 시나리오와 같이 여러 동시 클라이언트로부터 데이터를 삽입할 때 특히 중요합니다.
+
+LZ4의 경우 CPU와 메모리에 대한 영향은 미미하며 ZSTD의 경우 중간 정도입니다. 부하가 있을 때도 데이터의 양이 줄어들어 서버 측 효율성이 개선됩니다.
+
+**압축과 배치 및 효율적인 입력 형식(예: 네이티브)을 결합하면 최상의 삽입 성능을 얻을 수 있습니다.**
+
+네이티브 인터페이스([clickhouse-client](/interfaces/cli) 등)를 사용할 때 LZ4 압축이 기본적으로 활성화됩니다. 필요한 경우 설정을 통해 ZSTD로 전환할 수 있습니다.
+
+[HTTP 인터페이스](/interfaces/http)를 사용할 때는 콘텐츠 인코딩 헤더를 사용하여 압축을 적용합니다(예: Content-Encoding: lz4). 전체 페이로드를 전송 전에 압축해야 합니다.
+
+### 저비용이라면 미리 정렬 {#pre-sort-if-low-cost}
+
+삽입 전에 데이터를 주 키로 미리 정렬하면 ClickHouse에서 삽입 효율성을 높일 수 있으며, 특히 대규모 배치의 경우 그렇습니다.
+
+데이터가 미리 정렬되어 도착하면 ClickHouse는 파트 생성 과정에서 내부 정렬 단계를 건너뛰거나 간소화할 수 있어 CPU 사용량을 줄이고 삽입 프로세스를 가속화할 수 있습니다. 미리 정렬은 또한 유사한 값이 함께 그룹화되므로, LZ4 또는 ZSTD와 같은 코덱이 더 나은 압축 비율을 달성할 수 있습니다. 이는 대량 배치 삽입 및 압축과 결합할 때 특히 유리하여 처리 오버헤드와 전송되는 데이터 양을 줄입니다.
+
+**말하자면, 미리 정렬은 선택적 최적화일 뿐 필수 사항은 아닙니다.** ClickHouse는 병렬 처리를 사용하여 데이터를 매우 효율적으로 정렬하며, 많은 경우 서버 측에서의 정렬이 클라이언트 측에서 미리 정렬하는 것보다 더 빠르거나 편리합니다.
+
+**데이터가 거의 정렬되어 있거나 클라이언트 측 리소스(CPU, 메모리)가 충분하고 활용도가 낮은 경우에만 미리 정렬을 권장합니다.** 관찰 가능성 같은 지연 민감 또는 고TPS 사용 사례에서는 데이터가 정렬되지 않거나 여러 에이전트에서 오는 경우가 많기 때문에 미리 정렬을 건너뛰고 ClickHouse의 내장 성능을 활용하는 것이 더 좋습니다.
+
+## 비동기 삽입 {#asynchronous-inserts}
+
+
+
+## 인터페이스 선택 - HTTP 또는 네이티브 {#choose-an-interface}
+
+### 네이티브 {#choose-an-interface-native}
+
+ClickHouse는 데이터 삽입을 위한 두 가지 주요 인터페이스: **네이티브 인터페이스**와 **HTTP 인터페이스**를 제공합니다—각각 성능과 유연성 간의 트레이드오프가 있습니다. [clickhouse-client](/interfaces/cli) 및 Go, C++와 같은 특정 언어 클라이언트에서 사용되는 네이티브 인터페이스는 성능을 위해 목적에 맞게 설계되었습니다. 이 인터페이스는 항상 ClickHouse의 매우 효율적인 네이티브 형식으로 데이터를 전송하며, LZ4 또는 ZSTD로 블록 단위 압축을 지원하고, 서버 측에서 구문 분석 및 형식 변환과 같은 작업을 클라이언트로 오프로드하여 서버 측 처리를 최소화합니다.
+
+또한 MATERIALIZED 및 DEFAULT 컬럼 값의 클라이언트 측 계산을 허용하여 서버가 이러한 단계를 완전히 건너뛰도록 합니다. 이는 효율성이 중요한 고속 삽입 시나리오에 대해 네이티브 인터페이스가 이상적이게 합니다.
+
+### HTTP {#choose-an-interface-http}
+
+많은 전통적인 데이터베이스와 달리 ClickHouse는 HTTP 인터페이스도 지원합니다. **반대의 경우, 이 인터페이스는 호환성과 유연성을 우선시합니다.** 이는 [모든 지원 형식](/integrations/data-formats)—JSON, CSV, Parquet 등—으로 데이터를 전송할 수 있으며, Python, Java, JavaScript, Rust를 포함한 대부분의 ClickHouse 클라이언트에서 널리 지원됩니다.
+
+이것은 ClickHouse의 네이티브 프로토콜보다 선호되는 경우가 많으며, 로드 밸런서를 통해 트래픽을 쉽게 전환할 수 있도록 합니다. 네이티브 프로토콜에서는 성능이 약간 덜하지만 삽입 성능에서 소규모 차이를 기대할 수 있습니다.
+
+단, 네이티브 프로토콜의 깊은 통합이 부족하고 MATERIALIZED 값 계산이나 네이티브 형식으로의 자동 변환과 같은 클라이언트 측 최적화를 수행할 수 없습니다. 비록 HTTP 삽입이 여전히 표준 HTTP 헤더(e.g. `Content-Encoding: lz4`)를 사용하여 압축할 수 있지만, 압축이 개별 데이터 블록이 아니라 전체 페이로드에 적용됩니다. 이 인터페이스는 종종 프로토콜 단순성, 로드 밸런싱 또는 폭넓은 형식 호환성이 원초적 성능보다 더 중요한 환경에서 선호됩니다.
+
+이들 인터페이스에 대한 더 자세한 설명은 [여기](https://interfaces/overview)를 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/selecting_an_insert_strategy.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/selecting_an_insert_strategy.md.hash
new file mode 100644
index 00000000000..7b58ec9e708
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/selecting_an_insert_strategy.md.hash
@@ -0,0 +1 @@
+d1c4275cfe20b837
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/sizing-and-hardware-recommendations.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/sizing-and-hardware-recommendations.md
new file mode 100644
index 00000000000..fb25c8125b4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/sizing-and-hardware-recommendations.md
@@ -0,0 +1,242 @@
+---
+'slug': '/guides/sizing-and-hardware-recommendations'
+'sidebar_label': '크기 조정 및 하드웨어 권장 사항'
+'sidebar_position': 4
+'title': '크기 조정 및 하드웨어 권장 사항'
+'description': '이 가이드는 오픈 소스 사용자를 위한 하드웨어, 컴퓨팅, 메모리 및 디스크 구성에 대한 일반적인 권장 사항을 설명합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'sizing'
+- 'hardware'
+- 'capacity planning'
+- 'best practices'
+- 'performance'
+---
+
+
+# 크기 측정 및 하드웨어 권장 사항
+
+이 가이드는 오픈 소스 사용자를 위한 하드웨어, 컴퓨트, 메모리 및 디스크 구성에 대한 일반적인 권장 사항을 논의합니다. 설정을 단순화하려면 [ClickHouse Cloud](https://clickhouse.com/cloud)를 사용하는 것이 좋습니다. 이를 통해 인프라 관리에 관련된 비용을 최소화하면서 작업 부하에 맞게 자동으로 확장하고 조정합니다.
+
+ClickHouse 클러스터의 구성은 애플리케이션의 사용 사례 및 작업 패턴에 따라 크게 달라집니다. 아키텍처를 계획할 때에는 다음과 같은 요소를 고려해야 합니다:
+
+- 동시성 (초당 요청 수)
+- 처리량 (초당 처리되는 행 수)
+- 데이터 볼륨
+- 데이터 보존 정책
+- 하드웨어 비용
+- 유지 관리 비용
+
+## 디스크 {#disk}
+
+ClickHouse와 함께 사용할 디스크 유형은 데이터 볼륨, 지연 시간 또는 처리량 요구 사항에 따라 달라집니다.
+
+### 성능 최적화 {#optimizing-for-performance}
+
+성능을 극대화하기 위해, AWS에서 제공하는 [프로비저닝된 IOPS SSD 볼륨](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/provisioned-iops.html) 또는 클라우드 공급자에서 제공하는 동등한 서비스를 직접 연결하는 것을 권장합니다. 이는 IO를 최적화합니다.
+
+### 저장 비용 최적화 {#optimizing-for-storage-costs}
+
+비용을 절감하려면 [일반 용도 SSD EBS 볼륨](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/general-purpose.html)을 사용할 수 있습니다.
+
+SSD와 HDD를 사용하여 [핫/웜/콜드 아키텍처](/guides/developer/ttl#implementing-a-hotwarmcold-architecture)를 구현하는 방법도 있습니다. 또는, [AWS S3](https://aws.amazon.com/s3/)를 사용하여 컴퓨트와 저장소를 분리하는 것도 가능합니다. ClickHouse를 사용하여 컴퓨트와 저장소를 분리하는 방법에 대한 가이드는 [여기](https://aws.amazon.com/s3/)에서 확인하십시오. ClickHouse Cloud에서는 기본적으로 컴퓨트와 저장소의 분리가 가능합니다.
+
+## CPU {#cpu}
+
+### 어떤 CPU를 사용해야 하나요? {#which-cpu-should-i-use}
+
+사용해야 할 CPU 유형은 사용 패턴에 따라 달라집니다. 그러나 일반적으로, 동시에 여러 쿼리를 자주 실행하거나 더 많은 데이터를 처리하는 애플리케이션, 또는 계산 집약적인 UDF를 사용하는 애플리케이션은 더 많은 CPU 코어가 필요합니다.
+
+**저지연 또는 고객-facing 애플리케이션**
+
+상용 작업 부하와 같이 10밀리초의 지연 요구사항이 있는 경우, AWS의 EC2 [i3 라인](https://aws.amazon.com/ec2/instance-types/i3/) 또는 [i4i 라인](https://aws.amazon.com/ec2/instance-types/i4i/) 및 클라우드 제공자의 동등한 제품을 추천합니다. 이는 IO에 최적화되어 있습니다.
+
+**높은 동시성 애플리케이션**
+
+100건 이상의 쿼리를 초당 처리해야 하는 작업 부하의 경우, AWS의 [컴퓨트 최적화 C 시리즈](https://aws.amazon.com/ec2/instance-types/#Compute_Optimized) 또는 클라우드 제공자의 동등한 제품을 추천합니다.
+
+**데이터 웨어하우징 사용 사례**
+
+데이터 웨어하우징 작업 및 애드혹 분석 쿼리를 위한 경우, AWS의 [R형 시리즈](https://aws.amazon.com/ec2/instance-types/#Memory_Optimized) 또는 클라우드 제공자의 동등한 제품을 추천합니다. 이들은 메모리 최적화되어 있습니다.
+
+---
+
+### CPU 활용률은 어느 정도여야 하나요? {#what-should-cpu-utilization-be}
+
+ClickHouse에 대한 표준 CPU 활용률 목표는 없습니다. [iostat](https://linux.die.net/man/1/iostat)와 같은 도구를 사용하여 평균 CPU 사용량을 측정하고, 예기치 않은 트래픽 급증을 관리하기 위해 서버 크기를 조절하세요. 그러나 분석 또는 데이터 웨어하우징을 위한 애드혹 쿼리의 경우, 10-20% CPU 활용률을 목표로 해야 합니다.
+
+### CPU 코어 수는 얼마나 사용해야 하나요? {#how-many-cpu-cores-should-i-use}
+
+사용해야 할 CPU 수는 작업 부하에 따라 다릅니다. 하지만 CPU 유형에 따라 일반적으로 다음과 같은 메모리-CPU 코어 비율을 권장합니다:
+
+- **[M형](https://aws.amazon.com/ec2/instance-types/) (일반 용도 사용 사례):** 4 GB:1 메모리 대 CPU 코어 비율
+- **[R형](https://aws.amazon.com/ec2/instance-types/#Memory_Optimized) (데이터 웨어하우징 사용 사례):** 8 GB:1 메모리 대 CPU 코어 비율
+- **[C형](https://aws.amazon.com/ec2/instance-types/#Compute_Optimized) (컴퓨트 최적화 사용 사례):** 2 GB:1 메모리 대 CPU 코어 비율
+
+예를 들어, M형 CPU를 사용할 때는 25 CPU 코어당 100GB의 메모리를 프로비저닝하는 것을 권장합니다. 애플리케이션에 적합한 메모리 양을 결정하기 위해 메모리 사용량을 프로파일링해야 합니다. [메모리 문제 디버깅에 대한 가이드](/guides/developer/debugging-memory-issues)를 읽거나 [내장된 가시성 대시보드](/operations/monitoring)를 사용하여 ClickHouse를 모니터링할 수 있습니다.
+
+## 메모리 {#memory}
+
+CPU 선택과 마찬가지로 메모리-저장소 비율 및 메모리-CPU 비율 선택은 사용 사례에 따라 달라집니다.
+
+필요한 RAM 용량은 일반적으로 다음에 따라 달라집니다:
+- 쿼리의 복잡성.
+- 쿼리에서 처리되는 데이터의 양.
+
+일반적으로 메모리 용량이 많을수록 쿼리 실행 속도가 빨라집니다.
+가격에 민감한 사용 사례의 경우, 메모리 용량을 줄일 수 있으며 설정([`max_bytes_before_external_group_by`](/operations/settings/settings#max_bytes_before_external_group_by) 및 [`max_bytes_before_external_sort`](/operations/settings/settings#max_bytes_before_external_sort))을 활성화하여 데이터를 디스크에 스필할 수 있도록 할 수 있지만, 이는 쿼리 성능에 중대한 영향을 미칠 수 있습니다.
+
+### 메모리-저장소 비율은 어떠해야 하나요? {#what-should-the-memory-to-storage-ratio-be}
+
+낮은 데이터 볼륨의 경우, 1:1 메모리-저장소 비율이 허용되지만 총 메모리는 8GB를 밑돌아서는 안 됩니다.
+
+데이터의 보존 기간이 길거나 높은 데이터 볼륨을 가진 사용 사례의 경우, 1:100에서 1:130의 메모리-저장소 비율을 권장합니다. 예를 들어, 10TB의 데이터를 저장하는 경우, 복제본마다 100GB의 RAM을 사용하면 됩니다.
+
+고객-facing 작업과 같은 자주 접근하는 사용 사례의 경우, 1:30에서 1:50의 메모리-저장소 비율을 사용할 것을 권장합니다.
+
+## 복제본 {#replicas}
+
+샤드당 최소 3개의 복제본을 가지는 것이 좋습니다(또는 [Amazon EBS](https://aws.amazon.com/ebs/)와 함께 2개의 복제본). 또한, 추가 복제본(수평 확장)을 추가하기 전에 모든 복제본을 수직으로 확장할 것을 권장합니다.
+
+ClickHouse는 자동으로 샤딩되지 않으며, 데이터 세트를 다시 샤딩하려면 상당한 처리 능력이 필요합니다. 따라서, 향후 데이터를 다시 샤딩할 필요가 없도록 최대의 서버를 사용하는 것을 권장합니다.
+
+[ClickHouse Cloud](https://clickhouse.com/cloud)를 사용하는 것을 고려하세요. 이 서비스는 자동으로 확장되며 사용 사례에 맞게 복제본 수를 손쉽게 조절할 수 있습니다.
+
+## 대규모 작업 부하에 대한 예제 구성 {#example-configurations-for-large-workloads}
+
+ClickHouse 구성은 특정 애플리케이션의 요구 사항에 크게 의존합니다. 비용 및 성능 최적화를 위해 도움이 필요하시면 [판매에 문의](https://clickhouse.com/company/contact?loc=docs-sizing-and-hardware-recommendations)하시기 바랍니다.
+
+안내 목적으로, 다음은 프로덕션 환경에서 ClickHouse 사용자의 예제 구성입니다:
+
+### 포춘 500 B2B SaaS {#fortune-500-b2b-saas}
+
+
+
+## 추가 자료 {#further-reading}
+
+아래는 오픈 소스 ClickHouse를 사용하는 기업들의 아키텍처에 대한 게시된 블로그 포스트입니다:
+
+- [Cloudflare](https://blog.cloudflare.com/http-analytics-for-6m-requests-per-second-using-clickhouse/?utm_source=linkedin&utm_medium=social&utm_campaign=blog)
+- [eBay](https://innovation.ebayinc.com/tech/engineering/ou-online-analytical-processing/)
+- [GitLab](https://handbook.gitlab.com/handbook/engineering/development/ops/monitor/observability/#clickhouse-datastore)
+- [Lyft](https://eng.lyft.com/druid-deprecation-and-clickhouse-adoption-at-lyft-120af37651fd)
+- [MessageBird](https://clickhouse.com/blog/how-messagebird-uses-clickhouse-to-monitor-the-delivery-of-billions-of-messages)
+- [Microsoft](https://clickhouse.com/blog/self-service-data-analytics-for-microsofts-biggest-web-properties)
+- [Uber](https://www.uber.com/en-ES/blog/logging/)
+- [Zomato](https://blog.zomato.com/building-a-cost-effective-logging-platform-using-clickhouse-for-petabyte-scale)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/sizing-and-hardware-recommendations.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/sizing-and-hardware-recommendations.md.hash
new file mode 100644
index 00000000000..d2d62d12cd4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/sizing-and-hardware-recommendations.md.hash
@@ -0,0 +1 @@
+3e1a429b593b5e47
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/use_materialized_views.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/use_materialized_views.md
new file mode 100644
index 00000000000..e6ad06ce2b2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/use_materialized_views.md
@@ -0,0 +1,84 @@
+---
+'slug': '/best-practices/use-materialized-views'
+'sidebar_position': 10
+'sidebar_label': '물리화된 뷰 사용'
+'title': '물리화된 뷰 사용'
+'description': '페이지 설명 Materialized Views'
+'keywords':
+- 'materialized views'
+- 'medallion architecture'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import incremental_materialized_view from '@site/static/images/bestpractices/incremental_materialized_view.gif';
+import refreshable_materialized_view from '@site/static/images/bestpractices/refreshable_materialized_view.gif';
+
+ClickHouse는 두 종류의 물리화된 뷰를 지원합니다: [**증분**](/materialized-view/incremental-materialized-view) 및 [**갱신 가능**](/materialized-view/refreshable-materialized-view). 두 유형 모두 결과를 사전 계산하고 저장하여 쿼리를 가속화하도록 설계되었지만, 기본 쿼리가 실행되는 방법과 시기, 어떤 작업에 적합한지, 데이터 신선도가 처리되는 방식에서 크게 다릅니다.
+
+**사용자는 이전 모범 사례 [딕셔너리](/best-practices/select-data-types) 및 [기본 키 최적화](/best-practices/choosing-a-primary-key)가 수행되었다고 가정할 때, 가속화가 필요한 특정 쿼리 패턴에 대해 물리화된 뷰를 고려해야 합니다.**
+
+**증분 물리화된 뷰**는 실시간으로 업데이트됩니다. 새로운 데이터가 원본 테이블에 삽입되면, ClickHouse는 새로운 데이터 블록에 물리화된 뷰의 쿼리를 자동으로 적용하고 결과를 별도의 대상 테이블에 기록합니다. 시간이 지나면서 ClickHouse는 이러한 부분 결과를 병합하여 완전하고 최신의 뷰를 생성합니다. 이 접근법은 계산 비용을 삽입 시점으로 이동시켜 새로운 데이터만 처리하므로 매우 효율적입니다. 결과적으로 대상 테이블에 대한 `SELECT` 쿼리는 빠르고 경량입니다. 증분 뷰는 모든 집계 함수를 지원하며, 삽입되는 데이터셋의 작은 최신 하위 집합에서 각 쿼리가 작동하기 때문에 페타바이트 규모의 데이터까지 잘 확장됩니다.
+
+
+
+반면에 **갱신 가능 물리화된 뷰**는 일정에 따라 업데이트됩니다. 이러한 뷰는 정기적으로 전체 쿼리를 다시 실행하고 결과를 대상 테이블에 덮어씁니다. 이는 Postgres와 같은 전통적인 OLTP 데이터베이스의 물리화된 뷰와 유사합니다.
+
+
+
+증분 물리화된 뷰와 갱신 가능 물리화된 뷰 사이의 선택은 쿼리의 특성, 데이터가 변경되는 빈도, 뷰에 대한 업데이트가 삽입될 때마다 모든 행을 반영해야 하는지, 아니면 주기적인 갱신이 허용되는지에 크게 의존합니다. 이러한 거래를 이해하는 것은 ClickHouse에서 성능이 뛰어나고 확장 가능한 물리화된 뷰를 설계하는 데 필수적입니다.
+
+## 증분 물리화된 뷰를 사용할 때 {#when-to-use-incremental-materialized-views}
+
+증분 물리화된 뷰는 일반적으로 선호되며, 원본 테이블이 새로운 데이터를 수신할 때마다 자동으로 실시간으로 업데이트됩니다. 이들은 모든 집계 함수를 지원하며 단일 테이블에 대한 집계에 특히 효과적입니다. 삽입 시점에서 결과를 증분으로 계산함으로써 쿼리는 훨씬 더 작은 데이터 하위 집합에서 실행되며, 이러한 뷰는 페타바이트 규모의 데이터까지 effortlessly 확장할 수 있습니다. 대부분의 경우 전체 클러스터 성능에 실질적인 영향을 미치지 않습니다.
+
+증분 물리화된 뷰를 사용할 때:
+
+- 매 삽입 시마다 업데이트된 실시간 쿼리 결과가 필요합니다.
+- 대량의 데이터를 자주 집계하거나 필터링하고 있습니다.
+- 쿼리에 대해 단순한 변환이나 단일 테이블에 대한 집계가 포함되어 있습니다.
+
+증분 물리화된 뷰의 예시는 [여기](/materialized-view/incremental-materialized-view)에서 확인하십시오.
+
+## 갱신 가능 물리화된 뷰를 사용할 때 {#when-to-use-refreshable-materialized-views}
+
+갱신 가능 물리화된 뷰는 증분이 아닌 주기적으로 쿼리를 실행하여 쿼리 결과 집합을 신속하게 검색할 수 있도록 저장합니다.
+
+쿼리 성능이 중요한 경우(예: 서브 밀리세컨드 대기 시간) 약간의 오래된 결과가 허용될 때 가장 유용합니다. 전체 쿼리가 다시 실행되므로, 갱신 가능 뷰는 계산하기 상대적으로 빠르거나 불규칙한 간격(예: 매시간)으로 계산할 수 있는 쿼리에 가장 적합합니다. 이러한 쿼리에는 “상위 N” 결과나 조회 테이블을 캐싱하는 작업이 포함됩니다.
+
+시스템에 과도한 부하를 피하기 위해 실행 빈도는 신중하게 조정해야 합니다. 자원이 많이 소모되는 매우 복잡한 쿼리는 조심스럽게 예약해야 하며, 이들은 캐시 및 CPU와 메모리를 소모하여 전체 클러스터 성능을 저하시킬 수 있습니다. 쿼리는 클러스터 과부하를 피하기 위해 갱신 간격에 비해 상대적으로 빨리 실행되어야 합니다. 예를 들어, 쿼리 자체가 계산하는 데 최소 10초가 걸리면 10초마다 뷰를 갱신하도록 예약하지 마십시오.
+
+## 요약 {#summary}
+
+요약하면, 갱신 가능 물리화된 뷰는 다음과 같은 경우에 사용하십시오:
+
+- 즉시 사용할 수 있는 캐시된 쿼리 결과가 필요하고, 신선도의 약간의 지연이 허용됩니다.
+- 쿼리 결과 집합에 대한 상위 N이 필요합니다.
+- 결과 집합의 크기가 시간이 지남에 따라 무한정 커지지 않아야 합니다. 이는 대상 뷰의 성능을 저하시키게 됩니다.
+- 여러 테이블을 포함하는 복잡한 조인 또는 비정규화 작업을 수행하고, 원본 테이블이 변경될 때마다 업데이트가 필요합니다.
+- 배치 워크플로우, 비정규화 작업 또는 DBT DAG와 유사한 뷰 의존성을 구축하고 있을 때입니다.
+
+갱신 가능 물리화된 뷰의 예시는 [여기](/materialized-view/refreshable-materialized-view)에서 확인하십시오.
+
+### APPEND vs REPLACE 모드 {#append-vs-replace-mode}
+
+갱신 가능 물리화된 뷰는 대상 테이블에 데이터를 쓰기 위한 두 가지 모드인 `APPEND`와 `REPLACE`를 지원합니다. 이러한 모드는 뷰가 갱신될 때 쿼리 결과가 기록되는 방식을 정의합니다.
+
+`REPLACE`는 기본 동작입니다. 뷰가 갱신될 때마다, 대상 테이블의 이전 내용은 최신 쿼리 결과로 완전히 덮어씌워집니다. 이는 뷰가 항상 최신 상태를 반영해야 하는 사용 사례에 적합합니다.
+
+반면에 `APPEND`는 새 행이 대상 테이블의 끝에 추가되어 기존 내용을 대체하는 것을 허용합니다. 이는 주기적인 스냅샷을 캡처하는 등의 추가 사용 사례를 가능하게 합니다. `APPEND`는 각 갱신이 특정 시점 또는 결과의 역사적 축적을 나타낼 때 특히 유용합니다.
+
+`APPEND` 모드를 선택하십시오:
+
+- 과거 갱신의 기록을 보존하고 싶을 때.
+- 주기적인 스냅샷이나 보고서를 구축하고 있을 때.
+- 시간이 지남에 따라 갱신된 결과를 점진적으로 수집해야 할 때.
+
+`REPLACE` 모드를 선택하십시오:
+
+- 최신 결과만 필요할 때.
+- 오래된 데이터는 완전히 버려야 할 때.
+- 뷰가 현재 상태 또는 조회를 나타낼 때.
+
+사용자는 [Medallion architecture](https://clickhouse.com/blog/building-a-medallion-architecture-for-bluesky-json-data-with-clickhouse)를 구축할 때 `APPEND` 기능을 적용한 사례를 찾아볼 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/use_materialized_views.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/use_materialized_views.md.hash
new file mode 100644
index 00000000000..3257b430d63
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/use_materialized_views.md.hash
@@ -0,0 +1 @@
+99a3f06c0fd74e25
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/using_data_skipping_indices.md b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/using_data_skipping_indices.md
new file mode 100644
index 00000000000..eba05dd84f1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/using_data_skipping_indices.md
@@ -0,0 +1,261 @@
+---
+'slug': '/best-practices/use-data-skipping-indices-where-appropriate'
+'sidebar_position': 10
+'sidebar_label': '데이터 스킵 인덱스'
+'title': '적절한 경우 데이터 스킵 인덱스를 사용하세요'
+'description': '데이터 스킵 인덱스를 사용하는 방법과 시기를 설명하는 페이지'
+'keywords':
+- 'data skipping index'
+- 'skip index'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import building_skipping_indices from '@site/static/images/bestpractices/building_skipping_indices.gif';
+import using_skipping_indices from '@site/static/images/bestpractices/using_skipping_indices.gif';
+
+데이터 스킵 인덱스는 기본 키가 특정 필터 조건에 유용하지 않은 경우 쿼리 실행 중 스캔되는 데이터 양을 극적으로 줄일 수 있는 강력한 메커니즘입니다. 이전 최선의 관행이 따랐던 경우, 즉 데이터 타입이 최적화되고 좋은 기본 키가 선택되어 물리화된 뷰가 활용되었을 때 고려해야 합니다. 스킵 인덱스 사용이 처음이라면 [이 가이드](/optimize/skipping-indexes)를 시작하기에 좋은 곳입니다.
+
+이러한 유형의 인덱스는 사용 방법을 이해하고 신중하게 사용할 경우 쿼리 성능을 가속화하는 데 사용할 수 있습니다.
+
+ClickHouse는 스캔하는 데이터 양을 줄이는 데 도움을 주는 **데이터 스킵 인덱스**를 제공합니다. 전통적인 데이터베이스는 행 기반의 보조 인덱스 (예: B-트리)에 의존하지만 ClickHouse는 컬럼형 스토어로 행 위치를 이러한 구조를 지원하는 방식으로 저장하지 않습니다. 대신 스킵 인덱스를 사용하여 쿼리의 필터 조건과 일치하지 않는 데이터 블록을 읽지 않도록 돕습니다.
+
+스킵 인덱스는 데이터 블록에 대한 메타데이터를 저장함으로써 작동합니다. 이 메타데이터는 최소/최대 값, 값 집합 또는 Bloom 필터 표현과 같은 정보를 포함하며 쿼리 실행 시 이 메타데이터를 사용하여 어떤 데이터 블록을 완전히 스킵할 수 있는지를 판단합니다. 이러한 인덱스는 [MergeTree 패밀리](/engines/table-engines/mergetree-family/mergetree)의 테이블 엔진에만 적용되며, 표현식, 인덱스 유형, 이름 및 각 인덱스 블록의 크기를 정의하는 세분화를 사용하여 정의됩니다. 이러한 인덱스는 테이블 데이터와 함께 저장되며, 쿼리 필터가 인덱스 표현과 일치할 때 참조됩니다.
+
+데이터 스킵 인덱스에는 여러 유형이 있으며, 각 유형은 다양한 쿼리 및 데이터 분포에 적합합니다:
+
+* **minmax**: 블록당 표현식의 최소 및 최대 값을 추적합니다. 느슨하게 정렬된 데이터에 대한 범위 쿼리에 이상적입니다.
+* **set(N)**: 각 블록에 대해 지정된 크기 N까지의 값 집합을 추적합니다. 블록당 낮은 카디널리티 컬럼에 효과적입니다.
+* **bloom_filter**: 특정 블록에 값이 존재하는지 확률적으로 판단하여 집합 멤버십에 대한 빠른 근사 필터링을 허용합니다. "바늘 찾기"와 같은 쿼리를 최적화하는 데 효과적입니다.
+* **tokenbf_v1 / ngrambf_v1**: 문자열에서 토큰이나 문자 시퀀스를 검색하기 위해 설계된 전문화된 Bloom 필터 변형으로, 로그 데이터나 텍스트 검색 사용 사례에서 특히 유용합니다.
+
+강력하지만 스킵 인덱스는 주의하여 사용해야 합니다. 이들은 데이터 블록의 의미 있는 수를 제거할 때만 이점을 제공하며, 쿼리 또는 데이터 구조가 일치하지 않으면 실제로 오버헤드를 초래할 수 있습니다. 블록에서 단 하나의 일치하는 값이 존재하더라도 해당 블록 전체를 여전히 읽어야 합니다.
+
+**효과적인 스킵 인덱스 사용은 일반적으로 인덱스 컬럼과 테이블의 기본 키 간의 강한 상관관계에 의존하거나 비슷한 값을 함께 그룹화하여 데이터를 삽입하는 것에 달려 있습니다.**
+
+일반적으로 데이터 스킵 인덱스는 올바른 기본 키 디자인과 데이터 타입 최적화가 보장된 후에 적용하는 것이 가장 좋습니다. 특히 유용한 경우는 다음과 같습니다:
+
+* 전체 카디널리티가 높지만 블록마다 카디널리티가 낮은 컬럼.
+* 검색에 중요한 희귀 값 (예: 오류 코드, 특정 ID).
+* 비기본 키 컬럼에서 국소화된 분포로 필터링이 이루어지는 경우.
+
+항상:
+
+1. 실제 데이터와 현실적인 쿼리에서 스킵 인덱스를 테스트합니다. 다양한 인덱스 유형 및 세분화 값을 시도하십시오.
+2. 인덱스 효과를 살펴보기 위해 send_logs_level='trace' 및 `EXPLAIN indexes=1`과 같은 도구를 사용하여 그 영향을 평가하십시오.
+3. 인덱스의 크기와 세분화에 의해 영향을 받는 방식을 항상 평가하십시오. 세분화 크기를 줄이면 성능이 개선되겠지만, 낮은 세분화로 인해 인덱스 크기가 증가하면 성능이 저하될 수 있습니다. 다양한 세분화 데이터 포인트에 대한 성능 및 인덱스 크기를 측정하십시오. 이는 Bloom 필터 인덱스에 특히 관련이 있습니다.
+
+
+**적절하게 사용하면 스킵 인덱스는 상당한 성능 향상을 제공할 수 있지만, 맹목적으로 사용하면 불필요한 비용을 초래할 수 있습니다.**
+
+데이터 스킵 인덱스에 대한 더욱 자세한 가이드는 [여기](/sql-reference/statements/alter/skipping-index)에서 확인하십시오.
+
+## 예제 {#example}
+
+최적화된 아래 테이블을 고려해 보십시오. 이 테이블은 각 게시물에 대한 Stack Overflow 데이터를 포함합니다.
+
+```sql
+CREATE TABLE stackoverflow.posts
+(
+ `Id` Int32 CODEC(Delta(4), ZSTD(1)),
+ `PostTypeId` Enum8('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime64(3, 'UTC'),
+ `Score` Int32,
+ `ViewCount` UInt32 CODEC(Delta(4), ZSTD(1)),
+ `Body` String,
+ `OwnerUserId` Int32,
+ `OwnerDisplayName` String,
+ `LastEditorUserId` Int32,
+ `LastEditorDisplayName` String,
+ `LastEditDate` DateTime64(3, 'UTC') CODEC(Delta(8), ZSTD(1)),
+ `LastActivityDate` DateTime64(3, 'UTC'),
+ `Title` String,
+ `Tags` String,
+ `AnswerCount` UInt16 CODEC(Delta(2), ZSTD(1)),
+ `CommentCount` UInt8,
+ `FavoriteCount` UInt8,
+ `ContentLicense` LowCardinality(String),
+ `ParentId` String,
+ `CommunityOwnedDate` DateTime64(3, 'UTC'),
+ `ClosedDate` DateTime64(3, 'UTC')
+)
+ENGINE = MergeTree
+PARTITION BY toYear(CreationDate)
+ORDER BY (PostTypeId, toDate(CreationDate))
+```
+
+이 테이블은 게시물 유형 및 날짜로 필터링하고 집계하는 쿼리에 최적화되어 있습니다. 2009년 이후에 발행된 조회수가 10,000,000이 넘는 게시물 수를 세고 싶다고 가정해 보겠습니다.
+
+```sql
+SELECT count()
+FROM stackoverflow.posts
+WHERE (CreationDate > '2009-01-01') AND (ViewCount > 10000000)
+
+┌─count()─┐
+│ 5 │
+└─────────┘
+
+1 row in set. Elapsed: 0.720 sec. Processed 59.55 million rows, 230.23 MB (82.66 million rows/s., 319.56 MB/s.)
+```
+
+이 쿼리는 기본 인덱스를 사용하여 일부 행(및 세분화)을 제외할 수 있습니다. 그러나 위 응답과 다음의 `EXPLAIN indexes = 1`에서 나타난 것처럼 여전히 대부분의 행을 읽어야 합니다.
+
+```sql
+EXPLAIN indexes = 1
+SELECT count()
+FROM stackoverflow.posts
+WHERE (CreationDate > '2009-01-01') AND (ViewCount > 10000000)
+LIMIT 1
+
+┌─explain──────────────────────────────────────────────────────────┐
+│ Expression ((Project names + Projection)) │
+│ Limit (preliminary LIMIT (without OFFSET)) │
+│ Aggregating │
+│ Expression (Before GROUP BY) │
+│ Expression │
+│ ReadFromMergeTree (stackoverflow.posts) │
+│ Indexes: │
+│ MinMax │
+│ Keys: │
+│ CreationDate │
+│ Condition: (CreationDate in ('1230768000', +Inf)) │
+│ Parts: 123/128 │
+│ Granules: 8513/8545 │
+│ Partition │
+│ Keys: │
+│ toYear(CreationDate) │
+│ Condition: (toYear(CreationDate) in [2009, +Inf)) │
+│ Parts: 123/123 │
+│ Granules: 8513/8513 │
+│ PrimaryKey │
+│ Keys: │
+│ toDate(CreationDate) │
+│ Condition: (toDate(CreationDate) in [14245, +Inf)) │
+│ Parts: 123/123 │
+│ Granules: 8513/8513 │
+└──────────────────────────────────────────────────────────────────┘
+
+25 rows in set. Elapsed: 0.070 sec.
+```
+
+간단한 분석을 통해 `ViewCount`가 `CreationDate`(주 키)와 상관관계가 있는 것으로 나타납니다. 사용자가 예상하는 대로 게시물이 존재하는 시간이 길어질수록 더 많이 조회됩니다.
+
+```sql
+SELECT toDate(CreationDate) AS day, avg(ViewCount) AS view_count FROM stackoverflow.posts WHERE day > '2009-01-01' GROUP BY day
+```
+
+따라서 데이터 스킵 인덱스에 대해 논리적인 선택이 됩니다. 숫자형 데이터 타입을 고려할 때, minmax 인덱스가 적합합니다. 다음 `ALTER TABLE` 명령을 사용하여 인덱스를 추가합니다. 먼저 추가한 후 "물리화"합니다.
+
+```sql
+ALTER TABLE stackoverflow.posts
+ (ADD INDEX view_count_idx ViewCount TYPE minmax GRANULARITY 1);
+
+ALTER TABLE stackoverflow.posts MATERIALIZE INDEX view_count_idx;
+```
+
+이 인덱스는 초기 테이블 생성 중에 추가할 수도 있습니다. DDL의 일환으로 minmax 인덱스가 정의된 스키마는 다음과 같습니다.
+
+```sql
+CREATE TABLE stackoverflow.posts
+(
+ `Id` Int32 CODEC(Delta(4), ZSTD(1)),
+ `PostTypeId` Enum8('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime64(3, 'UTC'),
+ `Score` Int32,
+ `ViewCount` UInt32 CODEC(Delta(4), ZSTD(1)),
+ `Body` String,
+ `OwnerUserId` Int32,
+ `OwnerDisplayName` String,
+ `LastEditorUserId` Int32,
+ `LastEditorDisplayName` String,
+ `LastEditDate` DateTime64(3, 'UTC') CODEC(Delta(8), ZSTD(1)),
+ `LastActivityDate` DateTime64(3, 'UTC'),
+ `Title` String,
+ `Tags` String,
+ `AnswerCount` UInt16 CODEC(Delta(2), ZSTD(1)),
+ `CommentCount` UInt8,
+ `FavoriteCount` UInt8,
+ `ContentLicense` LowCardinality(String),
+ `ParentId` String,
+ `CommunityOwnedDate` DateTime64(3, 'UTC'),
+ `ClosedDate` DateTime64(3, 'UTC'),
+ INDEX view_count_idx ViewCount TYPE minmax GRANULARITY 1 --index here
+)
+ENGINE = MergeTree
+PARTITION BY toYear(CreationDate)
+ORDER BY (PostTypeId, toDate(CreationDate))
+```
+
+다음 애니메이션은 예제 테이블에 대한 minmax 스킵 인덱스가 어떻게 구축되는지를 보여주며, 테이블의 각 행 블록(세분화)에 대한 최소 및 최대 `ViewCount` 값을 추적합니다:
+
+
+
+이전에 한 쿼리를 반복하면 성능이 크게 향상됩니다. 스캔된 행 수가 줄어든 것을 확인하십시오:
+
+```sql
+SELECT count()
+FROM stackoverflow.posts
+WHERE (CreationDate > '2009-01-01') AND (ViewCount > 10000000)
+
+┌─count()─┐
+│ 5 │
+└─────────┘
+
+1 row in set. Elapsed: 0.012 sec. Processed 39.11 thousand rows, 321.39 KB (3.40 million rows/s., 27.93 MB/s.)
+```
+
+`EXPLAIN indexes = 1`은 인덱스의 사용을 확인합니다.
+
+```sql
+EXPLAIN indexes = 1
+SELECT count()
+FROM stackoverflow.posts
+WHERE (CreationDate > '2009-01-01') AND (ViewCount > 10000000)
+
+┌─explain────────────────────────────────────────────────────────────┐
+│ Expression ((Project names + Projection)) │
+│ Aggregating │
+│ Expression (Before GROUP BY) │
+│ Expression │
+│ ReadFromMergeTree (stackoverflow.posts) │
+│ Indexes: │
+│ MinMax │
+│ Keys: │
+│ CreationDate │
+│ Condition: (CreationDate in ('1230768000', +Inf)) │
+│ Parts: 123/128 │
+│ Granules: 8513/8545 │
+│ Partition │
+│ Keys: │
+│ toYear(CreationDate) │
+│ Condition: (toYear(CreationDate) in [2009, +Inf)) │
+│ Parts: 123/123 │
+│ Granules: 8513/8513 │
+│ PrimaryKey │
+│ Keys: │
+│ toDate(CreationDate) │
+│ Condition: (toDate(CreationDate) in [14245, +Inf)) │
+│ Parts: 123/123 │
+│ Granules: 8513/8513 │
+│ Skip │
+│ Name: view_count_idx │
+│ Description: minmax GRANULARITY 1 │
+│ Parts: 5/123 │
+│ Granules: 23/8513 │
+└────────────────────────────────────────────────────────────────────┘
+
+29 rows in set. Elapsed: 0.211 sec.
+```
+
+또한 minmax 스킵 인덱스가 예제 쿼리에서의 `ViewCount` > 10,000,000 술어에 대해 일치할 수 없는 모든 행 블록을 어떻게 잘라내는지를 보여주는 애니메이션을 제공합니다:
+
+
+
+## 관련 문서 {#related-docs}
+- [데이터 스킵 인덱스 가이드](/optimize/skipping-indexes)
+- [데이터 스킵 인덱스 예제](/optimize/skipping-indexes/examples)
+- [데이터 스킵 인덱스 조작](/sql-reference/statements/alter/skipping-index)
+- [시스템 테이블 정보](/operations/system-tables/data_skipping_indices)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/using_data_skipping_indices.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/using_data_skipping_indices.md.hash
new file mode 100644
index 00000000000..64d82513fd9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/using_data_skipping_indices.md.hash
@@ -0,0 +1 @@
+105e26d43fd3e94c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/api/python.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/api/python.md
new file mode 100644
index 00000000000..f9965562504
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/api/python.md
@@ -0,0 +1,3225 @@
+---
+'title': 'chDB Python API 참조'
+'sidebar_label': 'Python API'
+'slug': '/chdb/api/python'
+'description': 'chDB에 대한 전체 Python API 참조'
+'keywords':
+- 'chdb'
+- 'embedded'
+- 'clickhouse-lite'
+- 'python'
+- 'api'
+- 'reference'
+'doc_type': 'reference'
+---
+
+
+# Python API Reference
+## Core Query Functions {#core-query-functions}
+### `chdb.query` {#chdb-query}
+
+chDB 엔진을 사용하여 SQL 쿼리를 실행합니다.
+
+이것은 임베디드 ClickHouse 엔진을 사용하여 SQL 문을 실행하는 주요 쿼리 함수입니다. 다양한 출력 형식을 지원하며 메모리 내 또는 파일 기반 데이터베이스에서 작업할 수 있습니다.
+
+**구문**
+
+```python
+chdb.query(sql, output_format='CSV', path='', udf_path='')
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|-------------------|---------|--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `sql` | str | *필수* | 실행할 SQL 쿼리 문자열 |
+| `output_format` | str | `"CSV"` | 결과의 출력 형식. 지원되는 형식: • `"CSV"` - 쉼표로 구분된 값 • `"JSON"` - JSON 형식 • `"Arrow"` - Apache Arrow 형식 • `"Parquet"` - Parquet 형식 • `"DataFrame"` - Pandas DataFrame • `"ArrowTable"` - PyArrow Table • `"Debug"` - 자세한 로깅 활성화 |
+| `path` | str | `""` | 데이터베이스 파일 경로. 기본값은 메모리 내 데이터베이스입니다. 파일 경로일 수 있으며, 메모리 내 데이터베이스를 위해 `":memory:"`로 설정할 수 있습니다. |
+| `udf_path` | str | `""` | 사용자 정의 함수 디렉터리 경로 |
+
+**반환값**
+
+지정된 형식으로 쿼리 결과를 반환합니다:
+
+| 반환 유형 | 조건 |
+|------------------------|----------------------------------------------------|
+| `str` | CSV, JSON과 같은 텍스트 형식의 경우 |
+| `pd.DataFrame` | `output_format`이 `"DataFrame"` 또는 `"dataframe"`인 경우 |
+| `pa.Table` | `output_format`이 `"ArrowTable"` 또는 `"arrowtable"`인 경우 |
+| chdb 결과 객체 | 기타 형식의 경우 |
+
+**예외 발생**
+
+| 예외 | 조건 |
+|-----------------|---------------------------------------------------------|
+| `ChdbError` | SQL 쿼리 실행에 실패한 경우 |
+| `ImportError` | DataFrame/Arrow 형식에 필요한 종속성이 누락된 경우 |
+
+**예제**
+
+```pycon
+>>> # Basic CSV query
+>>> result = chdb.query("SELECT 1, 'hello'")
+>>> print(result)
+"1,hello"
+```
+
+```pycon
+>>> # Query with DataFrame output
+>>> df = chdb.query("SELECT 1 as id, 'hello' as msg", "DataFrame")
+>>> print(df)
+ id msg
+0 1 hello
+```
+
+```pycon
+>>> # Query with file-based database
+>>> result = chdb.query("CREATE TABLE test (id INT) ENGINE = Memory", path="mydb.chdb")
+```
+
+```pycon
+>>> # Query with UDF
+>>> result = chdb.query("SELECT my_udf('test')", udf_path="/path/to/udfs")
+```
+
+---
+### `chdb.sql` {#chdb_sql}
+
+chDB 엔진을 사용하여 SQL 쿼리를 실행합니다.
+
+이것은 임베디드 ClickHouse 엔진을 사용하여 SQL 문을 실행하는 주요 쿼리 함수입니다. 다양한 출력 형식을 지원하며 메모리 내 또는 파일 기반 데이터베이스에서 작업할 수 있습니다.
+
+**구문**
+
+```python
+chdb.sql(sql, output_format='CSV', path='', udf_path='')
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|-------------------|---------|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `sql` | str | *필수* | 실행할 SQL 쿼리 문자열 |
+| `output_format` | str | `"CSV"` | 결과의 출력 형식. 지원되는 형식: • `"CSV"` - 쉼표로 구분된 값 • `"JSON"` - JSON 형식 • `"Arrow"` - Apache Arrow 형식 • `"Parquet"` - Parquet 형식 • `"DataFrame"` - Pandas DataFrame • `"ArrowTable"` - PyArrow Table • `"Debug"` - 자세한 로깅 활성화 |
+| `path` | str | `""` | 데이터베이스 파일 경로. 기본값은 메모리 내 데이터베이스입니다. 파일 경로일 수 있으며, 메모리 내 데이터베이스를 위해 `":memory:"`로 설정할 수 있습니다. |
+| `udf_path` | str | `""` | 사용자 정의 함수 디렉터리 경로 |
+
+**반환값**
+
+지정된 형식으로 쿼리 결과를 반환합니다:
+
+| 반환 유형 | 조건 |
+|------------------------|----------------------------------------------------|
+| `str` | CSV, JSON과 같은 텍스트 형식의 경우 |
+| `pd.DataFrame` | `output_format`이 `"DataFrame"` 또는 `"dataframe"`인 경우 |
+| `pa.Table` | `output_format`이 `"ArrowTable"` 또는 `"arrowtable"`인 경우 |
+| chdb 결과 객체 | 기타 형식의 경우 |
+
+**예외 발생**
+
+| 예외 | 조건 |
+|-----------------------|-----------------------------------------------------|
+| [`ChdbError`](#chdberror) | SQL 쿼리 실행에 실패한 경우 |
+| `ImportError` | DataFrame/Arrow 형식에 필요한 종속성이 누락된 경우 |
+
+**예제**
+
+```pycon
+>>> # Basic CSV query
+>>> result = chdb.query("SELECT 1, 'hello'")
+>>> print(result)
+"1,hello"
+```
+
+```pycon
+>>> # Query with DataFrame output
+>>> df = chdb.query("SELECT 1 as id, 'hello' as msg", "DataFrame")
+>>> print(df)
+ id msg
+0 1 hello
+```
+
+```pycon
+>>> # Query with file-based database
+>>> result = chdb.query("CREATE TABLE test (id INT) ENGINE = Memory", path="mydb.chdb")
+```
+
+```pycon
+>>> # Query with UDF
+>>> result = chdb.query("SELECT my_udf('test')", udf_path="/path/to/udfs")
+```
+
+---
+### `chdb.to_arrowTable` {#chdb-state-sqlitelike-to_arrowtable}
+
+쿼리 결과를 PyArrow Table로 변환합니다.
+
+chDB 쿼리 결과를 PyArrow Table로 변환하여 효율적인 컬럼형 데이터 처리를 수행합니다. 결과가 비어 있는 경우 빈 테이블을 반환합니다.
+
+**구문**
+
+```python
+chdb.to_arrowTable(res)
+```
+
+**매개변수**
+
+| 매개변수 | 설명 |
+|-----------|-------------------------------------------------|
+| `res` | 이진 Arrow 데이터를 포함하는 chDB 쿼리 결과 객체 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|-----------|------------------------------------|
+| `pa.Table` | 쿼리 결과를 포함하는 PyArrow Table |
+
+**예외 발생**
+
+| 오류 유형 | 설명 |
+|---------------|------------------------------------|
+| `ImportError` | pyarrow 또는 pandas가 설치되지 않은 경우 |
+
+**예제**
+
+```pycon
+>>> result = chdb.query("SELECT 1 as id, 'hello' as msg", "Arrow")
+>>> table = chdb.to_arrowTable(result)
+>>> print(table.to_pandas())
+ id msg
+0 1 hello
+```
+
+---
+### `chdb.to_df` {#chdb_to_df}
+
+쿼리 결과를 pandas DataFrame으로 변환합니다.
+
+chDB 쿼리 결과를 pandas DataFrame으로 변환하기 위해 먼저 PyArrow Table로 변환한 후, 멀티 스레딩을 사용하여 성능을 향상시킵니다.
+
+**구문**
+
+```python
+chdb.to_df(r)
+```
+
+**매개변수**
+
+| 매개변수 | 설명 |
+|-----------|----------------------------------------------|
+| `r` | 이진 Arrow 데이터를 포함하는 chDB 쿼리 결과 객체 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------------|-------------------------------|
+| `pd.DataFrame` | 쿼리 결과를 포함하는 pandas DataFrame |
+
+**예외 발생**
+
+| 예외 | 조건 |
+|---------------------|-------------------------------------------|
+| `ImportError` | pyarrow 또는 pandas가 설치되지 않은 경우 |
+
+**예제**
+
+```pycon
+>>> result = chdb.query("SELECT 1 as id, 'hello' as msg", "Arrow")
+>>> df = chdb.to_df(result)
+>>> print(df)
+ id msg
+0 1 hello
+```
+## Connection and Session Management {#connection-session-management}
+
+다음 세션 함수가 제공됩니다:
+### `chdb.connect` {#chdb-connect}
+
+chDB 백그라운드 서버에 연결을 생성합니다.
+
+이 함수는 chDB(ClickHouse) 데이터베이스 엔진에 대한 [Connection](#chdb-state-sqlitelike-connection)을 설정합니다.
+프로세스당 하나의 열린 연결만 허용됩니다.
+같은 연결 문자열로 여러 번 호출하면 동일한 연결 객체가 반환됩니다.
+
+```python
+chdb.connect(connection_string: str = ':memory:') → Connection
+```
+
+**매개변수:**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|----------------------|---------|--------------|------------------------------------------|
+| `connection_string` | str | `":memory:"` | 데이터베이스 연결 문자열. 아래 형식 참조. |
+
+**기본 형식**
+
+| 형식 | 설명 |
+|-------------------------|-------------------------------|
+| `":memory:"` | 메모리 내 데이터베이스(기본값) |
+| `"test.db"` | 상대 경로 데이터베이스 파일 |
+| `"file:test.db"` | 상대 경로와 동일 |
+| `"/path/to/test.db"` | 절대 경로 데이터베이스 파일 |
+| `"file:/path/to/test.db"` | 절대 경로와 동일 |
+
+**쿼리 매개변수와 함께**
+
+| 형식 | 설명 |
+|-------------------------------------------------------|-----------------------------|
+| `"file:test.db?param1=value1¶m2=value2"` | 매개변수가 있는 상대 경로 |
+| `"file::memory:?verbose&log-level=test"` | 매개변수가 있는 메모리 |
+| `"///path/to/test.db?param1=value1¶m2=value2"` | 매개변수가 있는 절대 경로 |
+
+**쿼리 매개변수 처리**
+
+쿼리 매개변수는 시작 인수로 ClickHouse 엔진에 전달됩니다.
+특별 매개변수 처리:
+
+| 특별 매개변수 | 변환되는 내용 | 설명 |
+|------------------|-------------------|-------------------------|
+| `mode=ro` | `--readonly=1` | 읽기 전용 모드 |
+| `verbose` | (플래그) | 자세한 로깅 활성화 |
+| `log-level=test` | (설정) | 로깅 수준 설정 |
+
+전체 매개변수 목록은 `clickhouse local --help --verbose`를 참조하십시오.
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `Connection` | 다음을 지원하는 데이터베이스 연결 객체: • `Connection.cursor()`로 커서 생성하기 • `Connection.query()`로 직접 쿼리하기 • `Connection.send_query()`로 스트리밍 쿼리하기 • 자동 정리를 위한 컨텍스트 관리 프로토콜 |
+
+**예외 발생**
+
+| 예외 | 조건 |
+|-----------------|------------------------------------|
+| `RuntimeError` | 데이터베이스에 연결할 수 없는 경우 |
+
+:::warning
+프로세스당 하나의 연결만 지원됩니다.
+새 연결을 생성하면 기존 연결이 종료됩니다.
+:::
+
+**예제**
+
+```pycon
+>>> # In-memory database
+>>> conn = connect()
+>>> conn = connect(":memory:")
+>>>
+>>> # File-based database
+>>> conn = connect("my_data.db")
+>>> conn = connect("/path/to/data.db")
+>>>
+>>> # With parameters
+>>> conn = connect("data.db?mode=ro") # Read-only mode
+>>> conn = connect(":memory:?verbose&log-level=debug") # Debug logging
+>>>
+>>> # Using context manager for automatic cleanup
+>>> with connect("data.db") as conn:
+... result = conn.query("SELECT 1")
+... print(result)
+>>> # Connection automatically closed
+```
+
+**참고**
+- [`Connection`](#chdb-state-sqlitelike-connection) - 데이터베이스 연결 클래스
+- [`Cursor`](#chdb-state-sqlitelike-cursor) - DB-API 2.0 작업을 위한 데이터베이스 커서
+## Exception Handling {#chdb-exceptions}
+### **class** `chdb.ChdbError` {#chdb_chdbError}
+
+Bases: `Exception`
+
+chDB 관련 오류에 대한 기본 예외 클래스입니다.
+
+이 예외는 chDB 쿼리 실행에 실패하거나 오류가 발생하는 경우 발생합니다. 표준 Python Exception 클래스에서 상속하며, 기본 ClickHouse 엔진에서 오류 정보를 제공합니다.
+
+---
+### **class** `chdb.session.Session` {#chdb_session_session}
+
+Bases: `object`
+
+세션은 쿼리 상태를 유지합니다.
+경로가 None인 경우 임시 디렉터리를 만들어 데이터베이스 경로로 사용하며, 세션이 종료될 때 임시 디렉터리는 삭제됩니다.
+데이터를 유지할 경로를 제공하여 데이터베이스를 생성할 수도 있습니다.
+
+연결 문자열을 사용하여 경로와 기타 매개변수를 전달할 수도 있습니다.
+
+```python
+class chdb.session.Session(path=None)
+```
+
+**예제**
+
+| 연결 문자열 | 설명 |
+|-----------------------------------------------------|-------------------------------------|
+| `":memory:"` | 메모리 내 데이터베이스 |
+| `"test.db"` | 상대 경로 |
+| `"file:test.db"` | 위와 동일 |
+| `"/path/to/test.db"` | 절대 경로 |
+| `"file:/path/to/test.db"` | 위와 동일 |
+| `"file:test.db?param1=value1¶m2=value2"` | 쿼리 매개변수가 있는 상대 경로 |
+| `"file::memory:?verbose&log-level=test"` | 쿼리 매개변수가 있는 메모리 데이터베이스 |
+| `"///path/to/test.db?param1=value1¶m2=value2"` | 쿼리 매개변수가 있는 절대 경로 |
+
+:::note 연결 문자열 인자 처리
+
+Connection strings containing query params like “[file:test.db?param1=value1¶m2=value2](file:test.db?param1=value1¶m2=value2)”
+“param1=value1” will be passed to ClickHouse engine as start up args.
+
+더 많은 세부정보는 `clickhouse local –help –verbose`을 참고하십시오.
+
+특별 인자 처리:
+- “mode=ro”는 clickhouse에 대해 “–readonly=1”이 됩니다(읽기 전용 모드)
+:::
+
+:::warning 중요
+- 한 번에 하나의 세션만 있을 수 있습니다. 새 세션을 만들려면 기존 세션을 닫아야 합니다.
+- 새 세션을 만들면 기존 세션이 닫힙니다.
+:::
+
+---
+#### `cleanup` {#cleanup}
+
+예외 처리와 함께 세션 리소스를 정리합니다.
+
+이 메서드는 정리 과정에서 발생할 수 있는 예외를 무시하면서 세션을 닫으려고 합니다. 이는 오류 처리 시나리오나 세션 상태에 관계없이 정리가 발생하도록 해야 할 때 유용합니다.
+
+**구문**
+
+```python
+cleanup()
+```
+
+:::note
+이 메서드는 결코 예외를 발생시키지 않으므로 finally 블록이나 소멸자에서 호출하기 안전합니다.
+:::
+
+**예제**
+
+```pycon
+>>> session = Session("test.db")
+>>> try:
+... session.query("INVALID SQL")
+... finally:
+... session.cleanup() # Safe cleanup regardless of errors
+```
+
+**참고**
+- [`close()`](#chdb-session-session-close) - 오류 전파가 있는 명시적인 세션 닫기를 위한 메서드
+
+---
+#### `close` {#close}
+
+세션을 닫고 리소스를 정리합니다.
+
+이 메서드는 기본 연결을 닫고 전역 세션 상태를 리셋합니다.
+이 메서드를 호출한 후 세션은 유효하지 않게 되며 더 이상 쿼리에 사용할 수 없습니다.
+
+**구문**
+
+```python
+close()
+```
+
+:::note
+이 메서드는 세션이 컨텍스트 관리자로 사용되거나 세션 객체가 파괴될 때 자동으로 호출됩니다.
+:::
+
+:::warning 중요
+`close()` 호출 이후에 세션을 사용하려고 하면 오류가 발생합니다.
+:::
+
+**예제**
+
+```pycon
+>>> session = Session("test.db")
+>>> session.query("SELECT 1")
+>>> session.close() # Explicitly close the session
+```
+
+---
+#### `query` {#chdb-session-session-query}
+
+SQL 쿼리를 실행하고 결과를 반환합니다.
+
+이 메서드는 세션의 데이터베이스에 대한 SQL 쿼리를 실행하고 지정된 형식으로 결과를 반환합니다. 이 메서드는 다양한 출력 형식을 지원하며 쿼리 간의 세션 상태를 유지합니다.
+
+**구문**
+
+```python
+query(sql, fmt='CSV', udf_path='')
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|-------------------|---------|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `sql` | str | *필수* | 실행할 SQL 쿼리 문자열 |
+| `fmt` | str | `"CSV"` | 결과의 출력 형식. 사용 가능한 형식: • `"CSV"` - 쉼표로 구분된 값 • `"JSON"` - JSON 형식 • `"TabSeparated"` - 탭으로 구분된 값 • `"Pretty"` - 예쁘게 출력된 테이블 형식 • `"JSONCompact"` - 압축된 JSON 형식 • `"Arrow"` - Apache Arrow 형식 • `"Parquet"` - Parquet 형식 |
+| `udf_path` | str | `""` | 사용자 정의 함수 경로. 지정하지 않으면 세션 초기화에서 UDF 경로를 사용합니다. |
+
+**반환값**
+
+지정된 형식으로 쿼리 결과를 반환합니다.
+정확한 반환 유형은 형식 매개변수에 따라 다릅니다:
+- 문자열 형식 (CSV, JSON 등)은 str을 반환합니다.
+- 이진 형식 (Arrow, Parquet)은 bytes를 반환합니다.
+
+**예외 발생**
+
+| 예외 | 조건 |
+|-----------------|------------------------------------|
+| `RuntimeError` | 세션이 닫혀있거나 유효하지 않은 경우 |
+| `ValueError` | SQL 쿼리가 잘못된 경우 |
+
+:::note
+"Debug" 형식은 지원되지 않으며 경고와 함께 "CSV"로 자동 변환됩니다.
+디버깅할 때는 대신 연결 문자열 매개변수를 사용하세요.
+:::
+
+:::warning 경고
+이 메서드는 쿼리를 동기적으로 실행하고 모든 결과를 메모리에 로드합니다. 큰 결과 집합의 경우 [`send_query()`](#chdb-session-session-send_query) 사용을 고려하세요.
+:::
+
+**예제**
+
+```pycon
+>>> session = Session("test.db")
+>>>
+>>> # Basic query with default CSV format
+>>> result = session.query("SELECT 1 as number")
+>>> print(result)
+number
+1
+```
+
+```pycon
+>>> # Query with JSON format
+>>> result = session.query("SELECT 1 as number", fmt="JSON")
+>>> print(result)
+{"number": "1"}
+```
+
+```pycon
+>>> # Complex query with table creation
+>>> session.query("CREATE TABLE test (id INT, name String) ENGINE = Memory")
+>>> session.query("INSERT INTO test VALUES (1, 'Alice'), (2, 'Bob')")
+>>> result = session.query("SELECT * FROM test ORDER BY id")
+>>> print(result)
+id,name
+1,Alice
+2,Bob
+```
+
+**참조**
+- [`send_query()`](#chdb-session-session-send_query) - 스트리밍 쿼리 실행을 위한 메서드
+- [`sql`](#chdb-session-session-sql) - 이 메서드의 별칭
+
+---
+#### `send_query` {#chdb-session-session-send_query}
+
+SQL 쿼리를 실행하고 스트리밍 결과 반복자를 반환합니다.
+
+이 메서드는 세션의 데이터베이스에 대한 SQL 쿼리를 실행하고 모든 데이터를 한 번에 메모리에 로드하지 않고 결과를 반복할 수 있는 스트리밍 결과 객체를 반환합니다. 이는 특히 큰 결과 집합에 유용합니다.
+
+**구문**
+
+```python
+send_query(sql, fmt='CSV') → StreamingResult
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|----------------|---------|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `sql` | str | *필수* | 실행할 SQL 쿼리 문자열 |
+| `fmt` | str | `"CSV"` | 결과의 출력 형식. 사용 가능한 형식: • `"CSV"` - 쉼표로 구분된 값 • `"JSON"` - JSON 형식 • `"TabSeparated"` - 탭으로 구분된 값 • `"JSONCompact"` - 압축된 JSON 형식 • `"Arrow"` - Apache Arrow 형식 • `"Parquet"` - Parquet 형식 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|-----------------|--------------------------------------------------------------------------------------------------------------------------|
+| `StreamingResult` | 쿼리 결과를 점진적으로 생성하는 스트리밍 결과 반복자. 반복자는 for 루프에서 사용할 수 있거나 다른 데이터 구조로 변환될 수 있습니다. |
+
+**예외 발생**
+
+| 예외 | 조건 |
+|-----------------|------------------------------------|
+| `RuntimeError` | 세션이 닫혀 있거나 유효하지 않은 경우 |
+| `ValueError` | SQL 쿼리가 잘못된 경우 |
+
+:::note
+"Debug" 형식은 지원되지 않으며 경고와 함께 "CSV"로 자동 변환됩니다. 디버깅할 때는 대신 연결 문자열 매개변수를 사용하세요.
+:::
+
+:::warning
+반환된 StreamingResult 객체는 즉시 소비되거나 적절히 저장되어야 하며, 데이터베이스에 대한 연결을 유지합니다.
+:::
+
+**예제**
+
+```pycon
+>>> session = Session("test.db")
+>>> session.query("CREATE TABLE big_table (id INT, data String) ENGINE = MergeTree() order by id")
+>>>
+>>> # Insert large dataset
+>>> for i in range(1000):
+... session.query(f"INSERT INTO big_table VALUES ({i}, 'data_{i}')")
+>>>
+>>> # Stream results to avoid memory issues
+>>> streaming_result = session.send_query("SELECT * FROM big_table ORDER BY id")
+>>> for chunk in streaming_result:
+... print(f"Processing chunk: {len(chunk)} bytes")
+... # Process chunk without loading entire result set
+```
+
+```pycon
+>>> # Using with context manager
+>>> with session.send_query("SELECT COUNT(*) FROM big_table") as stream:
+... for result in stream:
+... print(f"Count result: {result}")
+```
+
+**참조**
+- [`query()`](#chdb-session-session-query) - 비스트리밍 쿼리 실행을 위한 메서드
+- `chdb.state.sqlitelike.StreamingResult` - 스트리밍 결과 반복자
+
+---
+#### `sql` {#chdb-session-session-sql}
+
+SQL 쿼리를 실행하고 결과를 반환합니다.
+
+이 메서드는 세션의 데이터베이스에 대한 SQL 쿼리를 실행하고 지정된 형식으로 결과를 반환합니다. 이 메서드는 다양한 출력 형식을 지원하며 쿼리 간의 세션 상태를 유지합니다.
+
+**구문**
+
+```python
+sql(sql, fmt='CSV', udf_path='')
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|-------------------|---------|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `sql` | str | *필수* | 실행할 SQL 쿼리 문자열 |
+| `fmt` | str | `"CSV"` | 결과의 출력 형식. 사용 가능한 형식: • `"CSV"` - 쉼표로 구분된 값 • `"JSON"` - JSON 형식 • `"TabSeparated"` - 탭으로 구분된 값 • `"Pretty"` - 예쁘게 출력된 테이블 형식 • `"JSONCompact"` - 압축된 JSON 형식 • `"Arrow"` - Apache Arrow 형식 • `"Parquet"` - Parquet 형식 |
+| `udf_path` | str | `""` | 사용자 정의 함수 경로. 지정하지 않으면 세션 초기화에서 UDF 경로를 사용합니다. |
+
+**반환값**
+
+지정된 형식으로 쿼리 결과를 반환합니다.
+정확한 반환 유형은 형식 매개변수에 따라 다릅니다:
+- 문자열 형식 (CSV, JSON 등)은 str을 반환합니다.
+- 이진 형식 (Arrow, Parquet)은 bytes를 반환합니다.
+
+**예외 발생:**
+
+| 예외 | 조건 |
+|-----------------|------------------------------------|
+| `RuntimeError` | 세션이 닫혀있거나 유효하지 않은 경우 |
+| `ValueError` | SQL 쿼리가 잘못된 경우 |
+
+:::note
+"Debug" 형식은 지원되지 않으며 경고와 함께 "CSV"로 자동 변환됩니다. 디버깅할 때는 대신 연결 문자열 매개변수를 사용하세요.
+:::
+
+:::warning 경고
+이 메서드는 쿼리를 동기적으로 실행하고 모든 결과를 메모리에 로드합니다. 큰 결과 집합의 경우 [`send_query()`](#chdb-session-session-send_query) 사용을 고려하세요.
+:::
+
+**예제**
+
+```pycon
+>>> session = Session("test.db")
+>>>
+>>> # Basic query with default CSV format
+>>> result = session.query("SELECT 1 as number")
+>>> print(result)
+number
+1
+```
+
+```pycon
+>>> # Query with JSON format
+>>> result = session.query("SELECT 1 as number", fmt="JSON")
+>>> print(result)
+{"number": "1"}
+```
+
+```pycon
+>>> # Complex query with table creation
+>>> session.query("CREATE TABLE test (id INT, name String) ENGINE = MergeTree() order by id")
+>>> session.query("INSERT INTO test VALUES (1, 'Alice'), (2, 'Bob')")
+>>> result = session.query("SELECT * FROM test ORDER BY id")
+>>> print(result)
+id,name
+1,Alice
+2,Bob
+```
+
+**참조**
+- [`send_query()`](#chdb-session-session-send_query) - 스트리밍 쿼리 실행을 위한 메서드
+- [`sql`](#chdb-session-session-sql) - 이 메서드의 별칭
+## State Management {#chdb-state-management}
+### `chdb.state.connect` {#chdb_state_connect}
+
+chDB 백그라운드 서버에 대한 [Connection](#chdb-state-sqlitelike-connection)을 생성합니다.
+
+이 함수는 chDB(ClickHouse) 데이터베이스 엔진에 대한 연결을 설정합니다.
+프로세스당 하나의 열린 연결만 허용됩니다. 여러 번 같은 연결 문자열로 호출하면 동일한 연결 객체가 반환됩니다.
+
+**구문**
+
+```python
+chdb.state.connect(connection_string: str = ':memory:') → Connection
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------------------------------|---------|--------------|------------------------------------------|
+| `connection_string(str, optional)` | str | `":memory:"` | 데이터베이스 연결 문자열. 아래 형식 참조. |
+
+**기본 형식**
+
+지원되는 연결 문자열 형식:
+
+| 형식 | 설명 |
+|-------------------------|-------------------------------|
+| `":memory:"` | 메모리 내 데이터베이스(기본값) |
+| `"test.db"` | 상대 경로 데이터베이스 파일 |
+| `"file:test.db"` | 상대 경로와 동일 |
+| `"/path/to/test.db"` | 절대 경로 데이터베이스 파일 |
+| `"file:/path/to/test.db"` | 절대 경로와 동일 |
+
+**쿼리 매개변수와 함께**
+
+| 형식 | 설명 |
+|-------------------------------------------------------|-----------------------------|
+| `"file:test.db?param1=value1¶m2=value2"` | 매개변수가 있는 상대 경로 |
+| `"file::memory:?verbose&log-level=test"` | 매개변수가 있는 메모리 |
+| `"///path/to/test.db?param1=value1¶m2=value2"` | 매개변수가 있는 절대 경로 |
+
+**쿼리 매개변수 처리**
+
+쿼리 매개변수는 시작 인수로 ClickHouse 엔진에 전달됩니다.
+특별 매개변수 처리:
+
+| 특별 매개변수 | 변환되는 내용 | 설명 |
+|------------------|-------------------|-------------------------|
+| `mode=ro` | `--readonly=1` | 읽기 전용 모드 |
+| `verbose` | (플래그) | 자세한 로깅 활성화 |
+| `log-level=test` | (설정) | 로깅 수준 설정 |
+
+전체 매개변수 목록은 `clickhouse local --help --verbose`를 참조하십시오.
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `Connection` | 다음을 지원하는 데이터베이스 연결 객체: • `Connection.cursor()`로 커서 생성하기 • `Connection.query()`로 직접 쿼리하기 • `Connection.send_query()`로 스트리밍 쿼리하기 • 자동 정리를 위한 컨텍스트 관리 프로토콜 |
+
+**예외 발생**
+
+| 예외 | 조건 |
+|-----------------|------------------------------------|
+| `RuntimeError` | 데이터베이스에 연결할 수 없는 경우 |
+
+:::warning 경고
+프로세스당 하나의 연결만 지원됩니다.
+새 연결을 생성하면 기존 연결이 종료됩니다.
+:::
+
+**예제**
+
+```pycon
+>>> # In-memory database
+>>> conn = connect()
+>>> conn = connect(":memory:")
+>>>
+>>> # File-based database
+>>> conn = connect("my_data.db")
+>>> conn = connect("/path/to/data.db")
+>>>
+>>> # With parameters
+>>> conn = connect("data.db?mode=ro") # Read-only mode
+>>> conn = connect(":memory:?verbose&log-level=debug") # Debug logging
+>>>
+>>> # Using context manager for automatic cleanup
+>>> with connect("data.db") as conn:
+... result = conn.query("SELECT 1")
+... print(result)
+>>> # Connection automatically closed
+```
+
+**참고**
+- `Connection` - 데이터베이스 연결 클래스
+- `Cursor` - DB-API 2.0 작업을 위한 데이터베이스 커서
+### **class** `chdb.state.sqlitelike.Connection` {#chdb-state-sqlitelike-connection}
+
+Bases: `object`
+
+**구문**
+
+```python
+class chdb.state.sqlitelike.Connection(connection_string: str)
+```
+
+---
+#### `close` {#chdb-session-session-close}
+
+연결을 닫고 리소스를 정리합니다.
+
+이 메서드는 데이터베이스 연결을 닫고 활동 중인 커서를 포함한 모든 관련 리소스를 정리합니다. 이 메서드를 호출한 후 연결은 유효하지 않게 되며 더 이상 추가 작업에 사용할 수 없습니다.
+
+**구문**
+
+```python
+close() → None
+```
+
+:::note
+이 메서드는 멱등성입니다 - 여러 번 호출하는 것은 안전합니다.
+:::
+
+:::warning 경고
+연결이 닫힐 때 진행 중인 스트리밍 쿼리는 취소됩니다. 닫기 전에 모든 중요한 데이터가 처리되었는지 확인하십시오.
+:::
+
+**예제**
+
+```pycon
+>>> conn = connect("test.db")
+>>> # Use connection for queries
+>>> conn.query("CREATE TABLE test (id INT) ENGINE = Memory")
+>>> # Close when done
+>>> conn.close()
+```
+
+```pycon
+>>> # Using with context manager (automatic cleanup)
+>>> with connect("test.db") as conn:
+... conn.query("SELECT 1")
+... # Connection automatically closed
+```
+
+---
+#### `cursor` {#chdb-state-sqlitelike-connection-cursor}
+
+쿼리를 실행하기 위한 [Cursor](#chdb-state-sqlitelike-cursor) 객체를 생성합니다.
+
+이 메서드는 쿼리를 실행하고 결과를 가져오는 표준 DB-API 2.0 인터페이스를 제공하는 데이터베이스 커서를 만듭니다. 커서는 쿼리 실행 및 결과 검색에 대한 세밀한 제어를 허용합니다.
+
+**구문**
+
+```python
+cursor() → Cursor
+```
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|----------------------------------|
+| `Cursor` | 데이터베이스 작업을 위한 커서 객체 |
+
+:::note
+새로운 커서를 생성하면 이 연결과 관련된 기존 커서는 대체됩니다. 연결 당 하나의 커서만 지원됩니다.
+:::
+
+**예시**
+
+```pycon
+>>> conn = connect(":memory:")
+>>> cursor = conn.cursor()
+>>> cursor.execute("CREATE TABLE test (id INT, name String) ENGINE = Memory")
+>>> cursor.execute("INSERT INTO test VALUES (1, 'Alice')")
+>>> cursor.execute("SELECT * FROM test")
+>>> rows = cursor.fetchall()
+>>> print(rows)
+((1, 'Alice'),)
+```
+
+**참조**
+- [`Cursor`](#chdb-state-sqlitelike-cursor) - 데이터베이스 커서 구현
+
+---
+#### `query` {#chdb-state-sqlitelike-connection-query}
+
+SQL 쿼리를 실행하고 전체 결과를 반환합니다.
+
+이 메서드는 SQL 쿼리를 동기식으로 실행하고 전체 결과 집합을 반환합니다. 다양한 출력 형식을 지원하며 형식에 맞는 후처리를 자동으로 적용합니다.
+
+**구문**
+
+```python
+query(query: str, format: str = 'CSV') → Any
+```
+
+**매개변수:**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------|-------|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `query` | str | *필수* | 실행할 SQL 쿼리 문자열 |
+| `format` | str | `"CSV"` | 결과의 출력 형식. 지원되는 형식: • `"CSV"` - 쉼표로 구분된 값 (문자열) • `"JSON"` - JSON 형식 (문자열) • `"Arrow"` - Apache Arrow 형식 (바이트) • `"Dataframe"` - Pandas DataFrame (pandas 필요) • `"Arrowtable"` - PyArrow Table (pyarrow 필요) |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|--------------------|----------------------------------------|
+| `str` | 문자열 형식의 경우 (CSV, JSON) |
+| `bytes` | Arrow 형식의 경우 |
+| `pandas.DataFrame` | 데이터프레임 형식의 경우 |
+| `pyarrow.Table` | arrowtable 형식의 경우 |
+
+**예외**
+
+| 예외 | 조건 |
+|---------------|-----------------------------------------|
+| `RuntimeError` | 쿼리 실행 실패 시 |
+| `ImportError` | 형식에 필요한 패키지가 설치되지 않았을 경우 |
+
+:::warning 경고
+이 메서드는 전체 결과 집합을 메모리에 로드합니다. 대규모 결과를 처리할 경우, [`send_query()`](#chdb-state-sqlitelike-connection-send_query)를 사용하여 스트리밍하는 것을 고려하십시오.
+:::
+
+**예시**
+
+```pycon
+>>> conn = connect(":memory:")
+>>>
+>>> # Basic CSV query
+>>> result = conn.query("SELECT 1 as num, 'hello' as text")
+>>> print(result)
+num,text
+1,hello
+```
+
+```pycon
+>>> # DataFrame format
+>>> df = conn.query("SELECT number FROM numbers(5)", "dataframe")
+>>> print(df)
+ number
+0 0
+1 1
+2 2
+3 3
+4 4
+```
+
+**참조**
+- [`send_query()`](#chdb-state-sqlitelike-connection-send_query) - 비스트리밍 쿼리 실행을 위한
+
+---
+#### `send_query` {#chdb-state-sqlitelike-connection-send_query}
+
+SQL 쿼리를 실행하고 스트리밍 결과 반복자를 반환합니다.
+
+이 메서드는 SQL 쿼리를 실행하고 결과를 한 번에 모두 로드하지 않고 반복할 수 있는 StreamingResult 객체를 반환합니다. 이는 대규모 결과 집합을 처리하는 데 이상적입니다.
+
+**구문**
+
+```python
+send_query(query: str, format: str = 'CSV') → StreamingResult
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------|-------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `query` | str | *필수* | 실행할 SQL 쿼리 문자열 |
+| `format` | str | `"CSV"` | 결과의 출력 형식. 지원되는 형식: • `"CSV"` - 쉼표로 구분된 값 • `"JSON"` - JSON 형식 • `"Arrow"` - Apache Arrow 형식 (record_batch() 메서드 사용 가능) • `"dataframe"` - Pandas DataFrame 청크 • `"arrowtable"` - PyArrow Table 청크 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `StreamingResult` | 쿼리 결과에 대한 스트리밍 반복기를 제공합니다: • 반복자 프로토콜 (for 루프) • 컨텍스트 관리자 프로토콜 (with 문) • fetch() 메서드를 통한 수동 가져오기 • PyArrow RecordBatch 스트리밍 (Arrow 형식 전용) |
+
+**예외**
+
+| 예외 | 조건 |
+|---------------|-----------------------------------------|
+| `RuntimeError` | 쿼리 실행 실패 시 |
+| `ImportError` | 형식에 필요한 패키지가 설치되지 않았을 경우 |
+
+:::note
+반환된 StreamingResult에서 `record_batch()` 메서드를 지원하는 것은 "Arrow" 형식만 가능합니다.
+:::
+
+**예시**
+
+```pycon
+>>> conn = connect(":memory:")
+>>>
+>>> # Basic streaming
+>>> stream = conn.send_query("SELECT number FROM numbers(1000)")
+>>> for chunk in stream:
+... print(f"Processing chunk: {len(chunk)} bytes")
+```
+
+```pycon
+>>> # Using context manager for cleanup
+>>> with conn.send_query("SELECT * FROM large_table") as stream:
+... chunk = stream.fetch()
+... while chunk:
+... process_data(chunk)
+... chunk = stream.fetch()
+```
+
+```pycon
+>>> # Arrow format with RecordBatch streaming
+>>> stream = conn.send_query("SELECT * FROM data", "Arrow")
+>>> reader = stream.record_batch(rows_per_batch=10000)
+>>> for batch in reader:
+... print(f"Batch shape: {batch.num_rows} x {batch.num_columns}")
+```
+
+**참조**
+- [`query()`](#chdb-state-sqlitelike-connection-query) - 비스트리밍 쿼리 실행을 위한
+- `StreamingResult` - 스트리밍 결과 반복자
+
+---
+### **class** `chdb.state.sqlitelike.Cursor` {#chdb-state-sqlitelike-cursor}
+
+기초: `object`
+
+```python
+class chdb.state.sqlitelike.Cursor(connection)
+```
+
+---
+#### `close` {#cursor-close-none}
+
+커서를 닫고 리소스를 정리합니다.
+
+이 메서드는 커서를 닫고 관련된 리소스를 정리합니다. 이 메서드를 호출한 후 커서는 유효하지 않게 되어 더 이상 작업을 수행할 수 없습니다.
+
+**구문**
+
+```python
+close() → None
+```
+
+:::note
+이 메서드는 항등적입니다 - 여러 번 호출해도 안전합니다. 연결이 닫힐 때 커서도 자동으로 닫힙니다.
+:::
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>> cursor.execute("SELECT 1")
+>>> result = cursor.fetchone()
+>>> cursor.close() # Cleanup cursor resources
+```
+
+---
+#### `column_names` {#chdb-state-sqlitelike-cursor-column_names}
+
+마지막으로 실행된 쿼리의 컬럼 이름 목록을 반환합니다.
+
+이 메서드는 가장 최근에 실행된 SELECT 쿼리의 컬럼 이름을 반환합니다. 이름은 결과 집합에 나타나는 순서와 동일하게 반환됩니다.
+
+**구문**
+
+```python
+column_names() → list
+```
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|-----------------------------------------------------------------------------------------------------------|
+| `list` | 컬럼 이름 문자열 목록, 쿼리가 실행되지 않았거나 쿼리가 컬럼을 반환하지 않는 경우 빈 목록 반환 |
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>> cursor.execute("SELECT id, name, email FROM users LIMIT 1")
+>>> print(cursor.column_names())
+['id', 'name', 'email']
+```
+
+**참조**
+- [`column_types()`](#chdb-state-sqlitelike-cursor-column_types) - 컬럼 유형 정보 가져오기
+- [`description`](#chdb-state-sqlitelike-cursor-description) - DB-API 2.0 컬럼 설명
+
+---
+#### `column_types` {#chdb-state-sqlitelike-cursor-column_types}
+
+마지막으로 실행된 쿼리의 컬럼 유형 목록을 반환합니다.
+
+이 메서드는 가장 최근에 실행된 SELECT 쿼리의 ClickHouse 컬럼 유형 이름을 반환합니다. 유형은 결과 집합에 나타나는 순서와 동일하게 반환됩니다.
+
+**구문**
+
+```python
+column_types() → list
+```
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|-----------|-------|
+| `list` | ClickHouse 유형 이름 문자열 목록, 쿼리가 실행되지 않았거나 쿼리가 컬럼을 반환하지 않는 경우 빈 목록 반환 |
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>> cursor.execute("SELECT toInt32(1), toString('hello')")
+>>> print(cursor.column_types())
+['Int32', 'String']
+```
+
+**참조**
+- [`column_names()`](#chdb-state-sqlitelike-cursor-column_names) - 컬럼 이름 정보 가져오기
+- [`description`](#chdb-state-sqlitelike-cursor-description) - DB-API 2.0 컬럼 설명
+
+---
+#### `commit` {#commit}
+
+보류 중인 트랜잭션을 커밋합니다.
+
+이 메서드는 보류 중인 데이터베이스 트랜잭션을 커밋합니다. ClickHouse에서는 대부분의 작업이 자동 커밋되지만, 이 메서드는 DB-API 2.0 호환성을 위해 제공됩니다.
+
+:::note
+ClickHouse는 일반적으로 작업을 자동으로 커밋하므로 명시적인 커밋은 보통 필요하지 않습니다. 이 메서드는 표준 DB-API 2.0 워크플로우와의 호환성을 위해 제공됩니다.
+:::
+
+**구문**
+
+```python
+commit() → None
+```
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>> cursor.execute("INSERT INTO test VALUES (1, 'data')")
+>>> cursor.commit()
+```
+
+---
+#### `property description : list` {#chdb-state-sqlitelike-cursor-description}
+
+DB-API 2.0 사양에 따라 컬럼 설명을 반환합니다.
+
+이 속성은 가장 최근에 실행된 SELECT 쿼리의 결과 집합에서 각 컬럼을 설명하는 7개 항목의 튜플 목록을 반환합니다. 각 튜플은 다음을 포함합니다: (name, type_code, display_size, internal_size, precision, scale, null_ok)
+
+현재는 name과 type_code만 제공되며, 나머지 필드는 None으로 설정되어 있습니다.
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|-----------|-------|
+| `list` | 각 컬럼을 설명하는 7개의 튜플 목록, 또는 SELECT 쿼리가 실행되지 않은 경우 빈 목록 반환 |
+
+:::note
+이 구현은 cursor.description에 대한 DB-API 2.0 사양을 따릅니다. 첫 번째 두 요소 (name 및 type_code)만 의미 있는 데이터를 포함합니다.
+:::
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>> cursor.execute("SELECT id, name FROM users LIMIT 1")
+>>> for desc in cursor.description:
+... print(f"Column: {desc[0]}, Type: {desc[1]}")
+Column: id, Type: Int32
+Column: name, Type: String
+```
+
+**참조**
+- [`column_names()`](#chdb-state-sqlitelike-cursor-column_names) - 컬럼 이름만 가져오기
+- [`column_types()`](#chdb-state-sqlitelike-cursor-column_types) - 컬럼 유형만 가져오기
+
+---
+#### `execute` {#execute}
+
+SQL 쿼리를 실행하고 결과를 가져올 준비를 합니다.
+
+이 메서드는 SQL 쿼리를 실행하고 fetch 메서드를 사용하여 결과를 검색할 준비를 합니다. 결과 데이터의 구문 분석 및 ClickHouse 데이터 유형에 대한 자동 유형 변환을 처리합니다.
+
+**구문**
+
+```python
+execute(query: str) → None
+```
+
+**매개변수:**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-------|---------------------------------------|
+| `query` | str | 실행할 SQL 쿼리 문자열 |
+
+**예외**
+
+| 예외 | 조건 |
+|---------------|------|
+| `Exception` | 쿼리 실행 실패 또는 결과 구문 분석 실패 시 |
+
+:::note
+이 메서드는 `cursor.execute()`에 대한 DB-API 2.0 사양을 따릅니다. 실행 후, `fetchone()`, `fetchmany()`, 또는 `fetchall()`을 사용하여 결과를 검색하십시오.
+:::
+
+:::note
+이 메서드는 ClickHouse 데이터 유형을 적절한 Python 유형으로 자동 변환합니다:
+
+- Int/UInt 유형 → int
+- Float 유형 → float
+- String/FixedString → str
+- DateTime → datetime.datetime
+- Date → datetime.date
+- Bool → bool
+:::
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>>
+>>> # Execute DDL
+>>> cursor.execute("CREATE TABLE test (id INT, name String) ENGINE = Memory")
+>>>
+>>> # Execute DML
+>>> cursor.execute("INSERT INTO test VALUES (1, 'Alice')")
+>>>
+>>> # Execute SELECT and fetch results
+>>> cursor.execute("SELECT * FROM test")
+>>> rows = cursor.fetchall()
+>>> print(rows)
+((1, 'Alice'),)
+```
+
+**참조**
+- [`fetchone()`](#chdb-state-sqlitelike-cursor-fetchone) - 단일 행 가져오기
+- [`fetchmany()`](#chdb-state-sqlitelike-cursor-fetchmany) - 여러 행 가져오기
+- [`fetchall()`](#chdb-state-sqlitelike-cursor-fetchall) - 남은 모든 행 가져오기
+
+---
+#### `fetchall` {#chdb-state-sqlitelike-cursor-fetchall}
+
+쿼리 결과에서 모든 남은 행을 가져옵니다.
+
+이 메서드는 현재 커서 위치에서 시작하여 현재 쿼리 결과 집합에서 남은 모든 행을 검색합니다. 적절한 Python 유형 변환이 적용된 행 튜플의 튜플을 반환합니다.
+
+**구문**
+
+```python
+fetchall() → tuple
+```
+
+**반환값:**
+
+| 반환 유형 | 설명 |
+|-----------|-------|
+| `tuple` | 결과 집합에서 남은 모든 행 튜플을 포함하는 튜플. 사용할 수 있는 행이 없으면 빈 튜플 반환 |
+
+:::warning 경고
+이 메서드는 모든 남은 행을 한 번에 메모리에 로드합니다. 대규모 결과 집합을 처리할 경우, [`fetchmany()`](#chdb-state-sqlitelike-cursor-fetchmany)를 사용하여 배치 방식으로 결과를 처리하는 것을 고려하십시오.
+:::
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>> cursor.execute("SELECT id, name FROM users")
+>>> all_users = cursor.fetchall()
+>>> for user_id, user_name in all_users:
+... print(f"User {user_id}: {user_name}")
+```
+
+**참조**
+- [`fetchone()`](#chdb-state-sqlitelike-cursor-fetchone) - 단일 행 가져오기
+- [`fetchmany()`](#chdb-state-sqlitelike-cursor-fetchmany) - 여러 행 배치로 가져오기
+
+---
+#### `fetchmany` {#chdb-state-sqlitelike-cursor-fetchmany}
+
+쿼리 결과에서 여러 행을 가져옵니다.
+
+이 메서드는 현재 쿼리 결과 집합에서 최대 ‘size’ 행을 검색합니다. 각 행은 적절한 Python 유형 변환이 적용된 컬럼 값을 포함하는 행 튜플을 반환합니다.
+
+**구문**
+
+```python
+fetchmany(size: int = 1) → tuple
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|-----------|------|---------|-------------|
+| `size` | int | `1` | 가져올 최대 행 수 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|-----------|---------------------------------------------------------------------------------------|
+| `tuple` | 최대 'size' 행 튜플을 포함하는 튜플. 결과 집합이 소진된 경우 더 적은 행을 포함할 수 있음 |
+
+:::note
+이 메서드는 DB-API 2.0 사양을 따릅니다. 결과 집합이 소진된 경우 ‘size’보다 적은 행을 반환합니다.
+:::
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>> cursor.execute("SELECT * FROM large_table")
+>>>
+>>> # Process results in batches
+>>> while True:
+... batch = cursor.fetchmany(100) # Fetch 100 rows at a time
+... if not batch:
+... break
+... process_batch(batch)
+```
+
+**참조**
+- [`fetchone()`](#chdb-state-sqlitelike-cursor-fetchone) - 단일 행 가져오기
+- [`fetchall()`](#chdb-state-sqlitelike-cursor-fetchall) - 남은 모든 행 가져오기
+
+---
+#### `fetchone` {#chdb-state-sqlitelike-cursor-fetchone}
+
+쿼리 결과에서 다음 행을 가져옵니다.
+
+이 메서드는 현재 쿼리 결과 집합에서 다음 사용 가능한 행을 검색합니다. 적절한 Python 유형 변환이 적용된 컬럼 값을 포함하는 튜플을 반환합니다.
+
+**구문**
+
+```python
+fetchone() → tuple | None
+```
+
+**반환값:**
+
+| 반환 유형 | 설명 |
+|------------------|----------------------------------------------------------------------|
+| `Optional[tuple]` | 다음 행을 컬럼 값의 튜플로 반환, 더 이상 행이 없으면 None 반환 |
+
+:::note
+이 메서드는 DB-API 2.0 사양을 따릅니다. 컬럼 값은 ClickHouse 컬럼 유형에 따라 자동으로 적절한 Python 유형으로 변환됩니다.
+:::
+
+**예시**
+
+```pycon
+>>> cursor = conn.cursor()
+>>> cursor.execute("SELECT id, name FROM users")
+>>> row = cursor.fetchone()
+>>> while row is not None:
+... user_id, user_name = row
+... print(f"User {user_id}: {user_name}")
+... row = cursor.fetchone()
+```
+
+**참조**
+- [`fetchmany()`](#chdb-state-sqlitelike-cursor-fetchmany) - 여러 행 가져오기
+- [`fetchall()`](#chdb-state-sqlitelike-cursor-fetchall) - 남은 모든 행 가져오기
+
+---
+### `chdb.state.sqlitelike` {#state-sqlitelike-to_arrowtable}
+
+쿼리 결과를 PyArrow Table로 변환합니다.
+
+이 함수는 chdb 쿼리 결과를 PyArrow Table 형식으로 변환하며, 이는 효율적인 컬럼형 데이터 접근과 다른 데이터 처리 라이브러리와의 상호 운용성을 제공합니다.
+
+**구문**
+
+```python
+chdb.state.sqlitelike.to_arrowTable(res)
+```
+
+**매개변수:**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-------|-----------------------------------------------------|
+| `res` | - | Arrow 형식 데이터를 포함하는 chdb의 쿼리 결과 객체 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|---------------|-------------------------------------|
+| `pyarrow.Table` | 쿼리 결과를 포함하는 PyArrow Table |
+
+**예외**
+
+| 예외 | 조건 |
+|--------------|--------------------------------------------|
+| `ImportError` | pyarrow 또는 pandas 패키지가 설치되지 않았을 경우 |
+
+:::note
+이 기능은 pyarrow와 pandas가 모두 설치되어 있어야 합니다. 설치하려면: `pip install pyarrow pandas`
+:::
+
+:::warning 경고
+빈 결과는 스키마가 없는 빈 PyArrow Table을 반환합니다.
+:::
+
+**예시**
+
+```pycon
+>>> import chdb
+>>> result = chdb.query("SELECT 1 as num, 'hello' as text", "Arrow")
+>>> table = to_arrowTable(result)
+>>> print(table.schema)
+num: int64
+text: string
+>>> print(table.to_pandas())
+ num text
+0 1 hello
+```
+
+---
+### `chdb.state.sqlitelike.to_df` {#state-sqlitelike-to_df}
+
+쿼리 결과를 Pandas DataFrame으로 변환합니다.
+
+이 함수는 chdb 쿼리 결과를 PyArrow Table로 변환한 다음 DataFrame 형식으로 변환하여 Pandas API로 편리한 데이터 분석 기능을 제공합니다.
+
+**구문**
+
+```python
+chdb.state.sqlitelike.to_df(r)
+```
+
+**매개변수:**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-------|-----------------------------------------------------|
+| `r` | - | Arrow 형식 데이터를 포함하는 chdb의 쿼리 결과 객체 |
+
+**반환값:**
+
+| 반환 유형 | 설명 |
+|------------------|--------------------------------------------------------------------------------|
+| `pandas.DataFrame` | 적절한 컬럼 이름과 데이터 유형을 포함하는 쿼리 결과의 DataFrame |
+
+**예외**
+
+| 예외 | 조건 |
+|--------------|--------------------------------------------|
+| `ImportError` | pyarrow 또는 pandas 패키지가 설치되지 않았을 경우 |
+
+:::note
+이 기능은 대규모 데이터셋에 대한 성능 향상을 위해 Arrow에서 Pandas로 변환할 때 멀티스레딩을 사용합니다.
+:::
+
+**참조**
+- [`to_arrowTable()`](#chdb-state-sqlitelike-to_arrowtable) - PyArrow Table 형식 변환을 위한
+
+**예시**
+
+```pycon
+>>> import chdb
+>>> result = chdb.query("SELECT 1 as num, 'hello' as text", "Arrow")
+>>> df = to_df(result)
+>>> print(df)
+ num text
+0 1 hello
+>>> print(df.dtypes)
+num int64
+text object
+dtype: object
+```
+## 데이터프레임 통합 {#dataframe-integration}
+### **class** `chdb.dataframe.Table` {#chdb-dataframe-table}
+
+기초:
+
+```python
+class chdb.dataframe.Table(*args: Any, **kwargs: Any)
+```
+## 데이터베이스 API (DBAPI) 2.0 인터페이스 {#database-api-interface}
+
+chDB는 데이터베이스 연결을 위한 Python DB-API 2.0 호환 인터페이스를 제공하여, 표준 데이터베이스 인터페이스를 기대하는 도구 및 프레임워크와 함께 사용할 수 있도록 합니다.
+
+chDB DB-API 2.0 인터페이스에는 다음이 포함됩니다:
+
+- **연결**: 연결 문자열을 사용한 데이터베이스 연결 관리
+- **커서**: 쿼리 실행 및 결과 검색
+- **형식 시스템**: DB-API 2.0 준수 형식 상수 및 변환기
+- **오류 처리**: 표준 데이터베이스 예외 계층
+- **스레드 안전성**: 레벨 1 스레드 안전성 (스레드는 모듈을 공유할 수 있지만 연결은 공유할 수 없습니다)
+
+---
+### 핵심 기능 {#core-functions}
+
+데이터베이스 API (DBAPI) 2.0 인터페이스는 다음 핵심 기능을 구현합니다:
+#### `chdb.dbapi.connect` {#dbapi-connect}
+
+새로운 데이터베이스 연결을 초기화합니다.
+
+**구문**
+
+```python
+chdb.dbapi.connect(*args, **kwargs)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------|-------|----------|------------------------------------------|
+| `path` | str | `None` | 데이터베이스 파일 경로. 메모리 내 데이터베이스의 경우 None |
+
+**예외**
+
+| 예외 | 조건 |
+|---------------------------------------|----------------------------------------|
+| [`err.Error`](#chdb-dbapi-err-error) | 연결을 설정할 수 없을 경우 |
+
+---
+#### `chdb.dbapi.get_client_info()` {#dbapi-get-client-info}
+
+클라이언트 버전 정보를 가져옵니다.
+
+MySQLdb 호환성을 위한 문자열 형식으로 chDB 클라이언트 버전을 반환합니다.
+
+**구문**
+
+```python
+chdb.dbapi.get_client_info()
+```
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|---------------------------------------|
+| `str` | `'major.minor.patch'` 형식의 버전 문자열 |
+
+---
+### 형식 생성자 {#type-constructors}
+#### `chdb.dbapi.Binary(x)` {#dbapi-binary}
+
+x를 바이너리 유형으로 반환합니다.
+
+이 함수는 입력을 bytes 유형으로 변환하여 바이너리 데이터베이스 필드에 사용합니다. DB-API 2.0 사양을 따릅니다.
+
+**구문**
+
+```python
+chdb.dbapi.Binary(x)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-------|-------------------------|
+| `x` | - | 바이너리로 변환할 입력 데이터 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|----------------------|
+| `bytes` | 바이트로 변환된 입력 |
+
+---
+### 연결 클래스 {#connection-class}
+#### **class** `chdb.dbapi.connections.Connection(path=None)` {#chdb-dbapi-connections-connection}
+
+기초: `object`
+
+DB-API 2.0 준수 chDB 데이터베이스의 연결.
+
+이 클래스는 chDB 데이터베이스에 연결하고 상호작용하기 위한 표준 DB-API 인터페이스를 제공합니다. 메모리 내 데이터베이스와 파일 기반 데이터베이스 모두를 지원합니다.
+
+연결은 기본 chDB 엔진을 관리하고 쿼리 실행, 트랜잭션 관리(ClickHouse의 경우 사용하지 않음), 커서 생성 메서드를 제공합니다.
+
+```python
+class chdb.dbapi.connections.Connection(path=None)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------|-------|----------|-----------------------------------------------------------------------------------------------------------------|
+| `path` | str | `None` | 데이터베이스 파일 경로. None일 경우 메모리 내 데이터베이스를 사용합니다. 'database.db'와 같은 파일 경로일 수 있으며 ':memory:'의 경우 None으로 설정됩니다. |
+
+**변수**
+
+| 변수 | 유형 | 설명 |
+|------------|-------|-----------------------------------------------|
+| `encoding` | str | 쿼리의 문자 인코딩, 기본값은 'utf8' |
+| `open` | bool | 연결이 열려 있으면 True, 닫혀 있으면 False |
+
+**예시**
+
+```pycon
+>>> # In-memory database
+>>> conn = Connection()
+>>> cursor = conn.cursor()
+>>> cursor.execute("SELECT 1")
+>>> result = cursor.fetchall()
+>>> conn.close()
+```
+
+```pycon
+>>> # File-based database
+>>> conn = Connection('mydata.db')
+>>> with conn.cursor() as cur:
+... cur.execute("CREATE TABLE users (id INT, name STRING) ENGINE = MergeTree() order by id")
+... cur.execute("INSERT INTO users VALUES (1, 'Alice')")
+>>> conn.close()
+```
+
+```pycon
+>>> # Context manager usage
+>>> with Connection() as cur:
+... cur.execute("SELECT version()")
+... version = cur.fetchone()
+```
+
+:::note
+ClickHouse는 전통적인 트랜잭션을 지원하지 않으므로 commit() 및 rollback() 작업은 아무 작업도 하지 않지만 DB-API 준수를 위해 제공됩니다.
+:::
+
+---
+#### `close` {#dbapi-connection-close}
+
+데이터베이스 연결을 닫습니다.
+
+기본 chDB 연결을 닫고 이 연결을 닫은 것으로 표시합니다. 이 연결에서의 후속 작업은 오류를 발생시킵니다.
+
+**구문**
+
+```python
+close()
+```
+
+**예외**
+
+| 예외 | 조건 |
+|---------------------------------------|----------------------------------------|
+| [`err.Error`](#chdb-dbapi-err-error) | 연결이 이미 닫힌 경우 |
+
+---
+#### `commit` {#dbapi-commit}
+
+현재 트랜잭션을 커밋합니다.
+
+**구문**
+
+```python
+commit()
+```
+
+:::note
+이 작업은 chDB/ClickHouse에 대한 no-op(아무 작업도 하지 않음)입니다. 전통적인 트랜잭션을 지원하지 않기 때문입니다. DB-API 2.0 호환성을 위해 제공됩니다.
+:::
+
+---
+#### `cursor` {#dbapi-cursor}
+
+쿼리를 실행하기 위한 새 커서를 만듭니다.
+
+**구문**
+
+```python
+cursor(cursor=None)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|------|-----------------------------------|
+| `cursor` | - | 호환성을 위해 제공된 무시됨 입력 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|----------------------------------|
+| `Cursor` | 이 연결을 위한 새 커서 객체 |
+
+**예외**
+
+| 예외 | 조건 |
+|---------------------------------------|--------------------------|
+| [`err.Error`](#chdb-dbapi-err-error) | 연결이 닫힌 경우 |
+
+**예시**
+
+```pycon
+>>> conn = Connection()
+>>> cur = conn.cursor()
+>>> cur.execute("SELECT 1")
+>>> result = cur.fetchone()
+```
+
+---
+#### `escape` {#escape}
+
+SQL 쿼리에 안전하게 포함시키기 위한 값을 이스케이프합니다.
+
+**구문**
+
+```python
+escape(obj, mapping=None)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-------|-----------------------------------------|
+| `obj` | - | 이스케이프 할 값 (문자열, 바이트, 숫자 등) |
+| `mapping` | - | 이스케이프를 위한 선택적 문자 매핑 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|-------------------------------------------------------|
+| - | SQL 쿼리에 적합한 이스케이프된 입력 버전 |
+
+**예시**
+
+```pycon
+>>> conn = Connection()
+>>> safe_value = conn.escape("O'Reilly")
+>>> query = f"SELECT * FROM users WHERE name = {safe_value}"
+```
+
+---
+#### `escape_string` {#escape-string}
+
+SQL 쿼리에 사용할 문자열 값을 이스케이프합니다.
+
+**구문**
+
+```python
+escape_string(s)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-------|---------------------------|
+| `s` | str | 이스케이프할 문자열 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|-----------------------------------|
+| `str` | SQL 포함에 안전한 이스케이프된 문자열 |
+
+---
+#### `property open` {#property-open}
+
+연결이 열려 있는지 확인합니다.
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|------------------------------------------|
+| `bool` | 연결이 열려 있으면 True, 닫혀 있으면 False |
+
+---
+#### `query` {#dbapi-query}
+
+SQL 쿼리를 직접 실행하고 원시 결과를 반환합니다.
+
+이 메서드는 커서 인터페이스를 우회하고 쿼리를 직접 실행합니다. 표준 DB-API 사용을 위해서는 cursor() 메서드를 사용하는 것이 좋습니다.
+
+**구문**
+
+```python
+query(sql, fmt='CSV')
+```
+
+**매개변수:**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------|---------------|------------|-----------------------------------------------------------------------------|
+| `sql` | str 또는 bytes | *필수* | 실행할 SQL 쿼리 |
+| `fmt` | str | `"CSV"` | 출력 형식. 지원되는 형식에는 "CSV", "JSON", "Arrow", "Parquet" 등이 포함됩니다. |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|-------------------------------------|
+| - | 지정된 형식으로 쿼리 결과 |
+
+**예외**
+
+| 예외 | 조건 |
+|-------------------------------------------------------|-------------------------------------|
+| [`err.InterfaceError`](#chdb-dbapi-err-interfaceerror) | 연결이 닫혀 있거나 쿼리가 실패한 경우 |
+
+**예시**
+
+```pycon
+>>> conn = Connection()
+>>> result = conn.query("SELECT 1, 'hello'", "CSV")
+>>> print(result)
+"1,hello\n"
+```
+
+---
+#### `property resp` {#property-resp}
+
+마지막 쿼리 응답을 가져옵니다.
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|---------------------------------------|
+| - | 마지막 query() 호출의 원시 응답 |
+
+:::note
+이 속성은 query()가 직접 호출될 때마다 업데이트됩니다. 커스를 통해 실행된 쿼리는 반영되지 않습니다.
+:::
+
+---
+#### `rollback` {#rollback}
+
+현재 트랜잭션을 롤백합니다.
+
+**구문**
+
+```python
+rollback()
+```
+
+:::note
+이 작업은 chDB/ClickHouse에 대한 no-op(아무 작업도 하지 않음)입니다. 전통적인 트랜잭션을 지원하지 않기 때문입니다. DB-API 2.0 호환성을 위해 제공됩니다.
+:::
+
+---
+### 커서 클래스 {#cursor-class}
+#### **class** `chdb.dbapi.cursors.Cursor` {#chdb-dbapi-cursors-cursor}
+
+기초: `object`
+
+쿼리 실행 및 결과 가져오기에 대한 DB-API 2.0 커서.
+
+커서는 SQL 문 실행, 쿼리 결과 관리 및 결과 집합 탐색을 위한 메서드를 제공합니다. 매개변수 바인딩, 대량 작업을 지원하며 DB-API 2.0 사양을 따릅니다.
+
+Cursor 인스턴스를 직접 생성하지 마십시오. 대신 `Connection.cursor()`를 사용하십시오.
+
+```python
+class chdb.dbapi.cursors.Cursor(connection)
+```
+
+| 변수 | 유형 | 설명 |
+|--------------------|-------|----------------------------------------------|
+| `description` | 튜플 | 마지막 쿼리 결과에 대한 컬럼 메타데이터 |
+| `rowcount` | int | 마지막 쿼리에 의해 영향을 받은 행 수 (-1이면 알 수 없음) |
+| `arraysize` | int | 기본적으로 한 번에 가져올 행 수 (기본값: 1) |
+| `lastrowid` | - | 마지막으로 삽입된 행의 ID (해당 시) |
+| `max_stmt_length` | int | executemany()에 대한 최대 문장 크기 (기본값: 1024000) |
+
+**예시**
+
+```pycon
+>>> conn = Connection()
+>>> cur = conn.cursor()
+>>> cur.execute("SELECT 1 as id, 'test' as name")
+>>> result = cur.fetchone()
+>>> print(result) # (1, 'test')
+>>> cur.close()
+```
+
+:::note
+[DB-API 2.0 Cursor Objects](https://www.python.org/dev/peps/pep-0249/#cursor-objects)에서 전체 사양 세부정보를 확인하세요.
+:::
+
+---
+#### `callproc` {#callproc}
+
+저장 프로시저를 실행합니다 (플레이스홀더 구현).
+
+**구문**
+
+```python
+callproc(procname, args=())
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|----------|-----------------------------------------|
+| `procname` | str | 실행할 저장 프로시저의 이름 |
+| `args` | 시퀀스 | 프로시저에 전달할 매개변수 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|---------------------------------------|
+| `시퀀스` | 원본 args 매개변수(수정되지 않음) |
+
+:::note
+chDB/ClickHouse는 전통적인 의미에서 저장 프로시저를 지원하지 않습니다. 이 메서드는 DB-API 2.0 준수를 위해 제공되지만 실제 작업을 수행하지 않습니다. 모든 SQL 작업에는 execute()를 사용하십시오.
+:::
+
+:::warning 호환성
+이것은 플레이스홀더 구현입니다. OUT/INOUT 매개변수, 여러 결과 집합 및 서버 변수를 포함한 전통적인 저장 프로시저 기능은 기본 ClickHouse 엔진에서 지원되지 않습니다.
+:::
+
+---
+#### `close` {#dbapi-cursor-close}
+
+커서를 닫고 관련된 리소스를 해제합니다.
+
+닫은 후, 커서는 더 이상 사용이 불가능해지며 모든 작업은 예외를 발생시킵니다. 커서를 닫으면 남아있는 모든 데이터가 소진되고 기본 커서가 해제됩니다.
+
+**구문**
+
+```python
+close()
+```
+
+---
+#### `execute` {#dbapi-execute}
+
+옵션 매개변수 바인딩이 포함된 SQL 쿼리를 실행합니다.
+
+이 메소드는 선택적인 매개변수 치환을 사용하여 단일 SQL 문을 실행합니다. 유연성을 위해 여러 매개변수 자리 표시자 스타일을 지원합니다.
+
+**구문**
+
+```python
+execute(query, args=None)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------|-----------------|------------|------------------------------------|
+| `query` | str | *필수* | 실행할 SQL 쿼리 |
+| `args` | tuple/list/dict | `None` | 자리 표시자에 바인딩할 매개변수 |
+
+**반환**
+
+| 반환 유형 | 설명 |
+|--------------|----------------------------------------|
+| `int` | 영향을 받은 행 수 (-1은 알 수 없음) |
+
+**매개변수 스타일**
+
+| 스타일 | 예시 |
+|---------------------|---------------------------------------------------|
+| 물음표 스타일 | `"SELECT * FROM users WHERE id = ?"` |
+| 명명된 스타일 | `"SELECT * FROM users WHERE name = %(name)s"` |
+| 포맷 스타일 | `"SELECT * FROM users WHERE age = %s"` (레거시) |
+
+**예제**
+
+```pycon
+>>> # Question mark parameters
+>>> cur.execute("SELECT * FROM users WHERE id = ? AND age > ?", (123, 18))
+>>>
+>>> # Named parameters
+>>> cur.execute("SELECT * FROM users WHERE name = %(name)s", {'name': 'Alice'})
+>>>
+>>> # No parameters
+>>> cur.execute("SELECT COUNT(*) FROM users")
+```
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|----------------------------------------|
+| [`ProgrammingError`](#chdb-dbapi-err-programmingerror) | 커서가 닫혀 있거나 쿼리가 잘못된 경우 |
+| [`InterfaceError`](#chdb-dbapi-err-interfaceerror) | 실행 중 데이터베이스 오류가 발생한 경우 |
+
+---
+#### `executemany(query, args)` {#chdb-dbapi-cursors-cursor-executemany}
+
+다양한 매개변수 집합으로 쿼리를 여러 번 실행합니다.
+
+이 메소드는 다른 매개변수 값으로 동일한 SQL 쿼리를 여러 번 효율적으로 실행합니다. 대량 INSERT 작업에 특히 유용합니다.
+
+**구문**
+
+```python
+executemany(query, args)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-----------|---------------------------------------------|
+| `query` | str | 여러 번 실행할 SQL 쿼리 |
+| `args` | 시퀀스 | 각 실행에 대한 매개변수 튜플/딕트/리스트 |
+
+**반환**
+
+| 반환 유형 | 설명 |
+|--------------|-----------------------------------------------|
+| `int` | 모든 실행에서 영향을 받은 행 수의 합계 |
+
+**예제**
+
+```pycon
+>>> # Bulk insert with question mark parameters
+>>> users_data = [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')]
+>>> cur.executemany("INSERT INTO users VALUES (?, ?)", users_data)
+>>>
+>>> # Bulk insert with named parameters
+>>> users_data = [
+... {'id': 1, 'name': 'Alice'},
+... {'id': 2, 'name': 'Bob'}
+... ]
+>>> cur.executemany(
+... "INSERT INTO users VALUES (%(id)s, %(name)s)",
+... users_data
+... )
+```
+
+:::note
+이 메소드는 쿼리 실행 과정을 최적화하여 여러 행 INSERT 및 UPDATE 작업의 성능을 향상시킵니다.
+:::
+
+---
+#### `fetchall()` {#dbapi-fetchall}
+
+쿼리 결과에서 남아 있는 모든 행을 가져옵니다.
+
+**구문**
+
+```python
+fetchall()
+```
+
+**반환**
+
+| 반환 유형 | 설명 |
+|--------------|---------------------------------------------|
+| `list` | 남아 있는 모든 행을 나타내는 튜플 목록 |
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|-------------------------------------------|
+| [`ProgrammingError`](#chdb-dbapi-err-programmingerror) | 먼저 execute()가 호출되지 않은 경우 |
+
+:::warning 경고
+이 메소드는 큰 결과 세트에 대해 많은 메모리를 소비할 수 있습니다.
+큰 데이터 세트의 경우 `fetchmany()` 사용을 고려하세요.
+:::
+
+**예제**
+
+```pycon
+>>> cursor.execute("SELECT id, name FROM users")
+>>> all_rows = cursor.fetchall()
+>>> print(len(all_rows)) # Number of total rows
+```
+
+---
+#### `fetchmany` {#dbapi-fetchmany}
+
+쿼리 결과에서 여러 행을 가져옵니다.
+
+**구문**
+
+```python
+fetchmany(size=1)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------|--------|----------|-----------------------------------------------|
+| `size` | int | `1` | 가져올 행 수입니다. 지정되지 않은 경우 커서의 arraysize 사용 |
+
+**반환**
+
+| 반환 유형 | 설명 |
+|--------------|---------------------------------------------|
+| `list` | 가져온 행을 나타내는 튜플 목록 |
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|-------------------------------------------|
+| [`ProgrammingError`](#chdb-dbapi-err-programmingerror) | 먼저 execute()가 호출되지 않은 경우 |
+
+**예제**
+
+```pycon
+>>> cursor.execute("SELECT id, name FROM users")
+>>> rows = cursor.fetchmany(3)
+>>> print(rows) # [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')]
+```
+
+---
+#### `fetchone` {#dbapi-fetchone}
+
+쿼리 결과에서 다음 행을 가져옵니다.
+
+**구문**
+
+```python
+fetchone()
+```
+
+**반환**
+
+| 반환 유형 | 설명 |
+|-----------------|---------------------------------------------|
+| `tuple or None` | 다음 행을 튜플로 나타내며, 더 이상 행이 없으면 None을 반환 |
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|-------------------------------------------|
+| [`ProgrammingError`](#chdb-dbapi-err-programmingerror) | `execute()`가 먼저 호출되지 않은 경우 |
+
+**예제**
+
+```pycon
+>>> cursor.execute("SELECT id, name FROM users LIMIT 3")
+>>> row = cursor.fetchone()
+>>> print(row) # (1, 'Alice')
+>>> row = cursor.fetchone()
+>>> print(row) # (2, 'Bob')
+```
+
+---
+#### `max_stmt_length = 1024000` {#max-stmt-length}
+
+[`executemany()`](#chdb-dbapi-cursors-cursor-executemany)가 생성하는 최대 문장 크기입니다.
+
+기본값은 1024000입니다.
+
+---
+#### `mogrify` {#mogrify}
+
+데이터베이스에 전송될 정확한 쿼리 문자열을 반환합니다.
+
+이 메소드는 매개변수 치환 후 최종 SQL 쿼리를 보여줍니다. 이는 디버깅 및 로깅 목적으로 유용합니다.
+
+**구문**
+
+```python
+mogrify(query, args=None)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|------------|-----------------|------------|-----------------------------------------|
+| `query` | str | *필수* | 매개변수 자리 표시자가 포함된 SQL 쿼리 |
+| `args` | tuple/list/dict | `None` | 대체할 매개변수 |
+
+**반환**
+
+| 반환 유형 | 설명 |
+|--------------|---------------------------------------------|
+| `str` | 매개변수가 대체된 최종 SQL 쿼리 문자열 |
+
+**예제**
+
+```pycon
+>>> cur.mogrify("SELECT * FROM users WHERE id = ?", (123,))
+"SELECT * FROM users WHERE id = 123"
+```
+
+:::note
+이 메소드는 Psycopg에서 사용되는 DB-API 2.0 확장을 따릅니다.
+:::
+
+---
+#### `nextset` {#nextset}
+
+다음 결과 집합으로 이동합니다 (지원되지 않음).
+
+**구문**
+
+```python
+nextset()
+```
+
+**반환**
+
+| 반환 유형 | 설명 |
+|--------------|-----------------------------------------------|
+| `None` | 항상 None을 반환하며 여러 결과 집합이 지원되지 않음 |
+
+:::note
+chDB/ClickHouse는 단일 쿼리에서 여러 결과 집합을 지원하지 않습니다. 이 메소드는 DB-API 2.0 준수를 위해 제공되지만 항상 None을 반환합니다.
+:::
+
+---
+#### `setinputsizes` {#setinputsizes}
+
+매개변수의 입력 크기를 설정합니다 (no-op 구현).
+
+**구문**
+
+```python
+setinputsizes(*args)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-------|-----------------------------------------------|
+| `*args` | - | 매개변수 크기 사양 (무시됨) |
+
+:::note
+이 메소드는 아무 작업도 하지 않지만 DB-API 2.0 사양에 의해 요구됩니다. chDB는 내부적으로 매개변수 크기를 자동으로 처리합니다.
+:::
+
+---
+#### `setoutputsizes` {#setoutputsizes}
+
+출력 열 크기를 설정합니다 (no-op 구현).
+
+**구문**
+
+```python
+setoutputsizes(*args)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|-------|-----------------------------------------|
+| `*args` | - | 열 크기 사양 (무시됨) |
+
+:::note
+이 메소드는 아무 작업도 하지 않지만 DB-API 2.0 사양에 의해 요구됩니다. chDB는 내부적으로 출력 크기를 자동으로 처리합니다.
+:::
+
+---
+### 오류 클래스 {#error-classes}
+
+chdb 데이터베이스 작업에 대한 예외 클래스입니다.
+
+이 모듈은 Python 데이터베이스 API 사양 v2.0을 따르며 chdb의 데이터베이스 관련 오류를 처리하기 위한 완전한 예외 클래스 계층을 제공합니다.
+
+예외 계층 구조는 다음과 같습니다:
+
+```default
+StandardError
+├── Warning
+└── Error
+ ├── InterfaceError
+ └── DatabaseError
+ ├── DataError
+ ├── OperationalError
+ ├── IntegrityError
+ ├── InternalError
+ ├── ProgrammingError
+ └── NotSupportedError
+```
+
+각 예외 클래스는 데이터베이스 오류의 특정 범주를 나타냅니다:
+
+| 예외 | 설명 |
+|---------------------|--------------------------------------------------|
+| `Warning` | 데이터베이스 작업 중 비치명적 경고 |
+| `InterfaceError` | 데이터베이스 인터페이스 자체에 대한 문제 |
+| `DatabaseError` | 모든 데이터베이스 관련 오류의 기본 클래스 |
+| `DataError` | 데이터 처리 문제 (잘못된 값, 유형 오류) |
+| `OperationalError` | 데이터베이스 운영 문제 (연결성, 리소스) |
+| `IntegrityError` | 제약 조건 위반 (외래 키, 고유성) |
+| `InternalError` | 데이터베이스 내부 오류 및 데이터 손상 |
+| `ProgrammingError` | SQL 구문 오류 및 API 오용 |
+| `NotSupportedError` | 지원되지 않는 기능 또는 작업 |
+
+:::note
+이 예외 클래스는 Python DB API 2.0 사양을 준수하며 서로 다른 데이터베이스 작업에서 일관된 오류 처리를 제공합니다.
+:::
+
+**참조**
+- [Python Database API 사양 v2.0](https://peps.python.org/pep-0249/)
+- `chdb.dbapi.connections` - 데이터베이스 연결 관리
+- `chdb.dbapi.cursors` - 데이터베이스 커서 작업
+
+**예제**
+
+```pycon
+>>> try:
+... cursor.execute("SELECT * FROM nonexistent_table")
+... except ProgrammingError as e:
+... print(f"SQL Error: {e}")
+...
+SQL Error: Table 'nonexistent_table' doesn't exist
+```
+
+```pycon
+>>> try:
+... cursor.execute("INSERT INTO users (id) VALUES (1), (1)")
+... except IntegrityError as e:
+... print(f"Constraint violation: {e}")
+...
+Constraint violation: Duplicate entry '1' for key 'PRIMARY'
+```
+
+---
+#### **예외** `chdb.dbapi.err.DataError` {#chdb-dbapi-err-dataerror}
+
+기반: [`DatabaseError`](#chdb-dbapi-err-databaseerror)
+
+처리된 데이터 문제로 인해 발생한 오류에 대한 예외입니다.
+
+이 예외는 데이터베이스 작업이 처리되는 데이터와 관련된 문제로 인해 실패할 때 발생합니다. 예를 들면:
+
+- 영(0)으로 나누기 작업
+- 범위를 초과한 숫자 값
+- 잘못된 날짜/시간 값
+- 문자열 자르기 오류
+- 유형 변환 실패
+- 열 유형에 대한 잘못된 데이터 형식
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|-----------|-----------|
+| [`DataError`](#chdb-dbapi-err-dataerror) | 데이터 유효성 검사 또는 처리 실패 시 |
+
+**예제**
+
+```pycon
+>>> # Division by zero in SQL
+>>> cursor.execute("SELECT 1/0")
+DataError: Division by zero
+```
+
+```pycon
+>>> # Invalid date format
+>>> cursor.execute("INSERT INTO table VALUES ('invalid-date')")
+DataError: Invalid date format
+```
+
+---
+#### **예외** `chdb.dbapi.err.DatabaseError` {#chdb-dbapi-err-databaseerror}
+
+기반: [`Error`](#chdb-dbapi-err-error)
+
+데이터베이스와 관련된 오류에 대해 발생하는 예외입니다.
+
+이것은 모든 데이터베이스 관련 오류의 기본 클래스입니다. 데이터베이스 작업 중 발생하는 오류와 인터페이스와 관련된 것이 아니라 데이터베이스 자체와 관련된 모든 오류를 포괄합니다.
+
+일반적인 시나리오는 다음과 같습니다:
+
+- SQL 실행 오류
+- 데이터베이스 연결 문제
+- 트랜잭션 관련 문제
+- 데이터베이스 특정 제약 조건 위반
+
+:::note
+이는 [`DataError`](#chdb-dbapi-err-dataerror), [`OperationalError`](#chdb-dbapi-err-operationalerror)와 같은 더 구체적인 데이터베이스 오류 유형의 부모 클래스 역할을 합니다.
+:::
+
+---
+#### **예외** `chdb.dbapi.err.Error` {#chdb-dbapi-err-error}
+
+기반: [`StandardError`](#chdb-dbapi-err-standarderror)
+
+모든 다른 오류 예외의 기본 클래스입니다 (Warning 제외).
+
+이것은 chdb의 모든 오류 예외에 대한 기본 클래스입니다. 작업의 성공적인 완료를 방해하는 데이터베이스 오류 조건에 대한 부모 클래스 역할을 합니다.
+
+:::note
+이 예외 계층 구조는 Python DB API 2.0 사양을 따릅니다.
+:::
+
+**참조**
+- [`Warning`](#chdb-dbapi-err-warning) - 작업 완성을 방해하지 않는 비치명적인 경고에 대해
+
+#### **예외** `chdb.dbapi.err.IntegrityError` {#chdb-dbapi-err-integrityerror}
+
+기반: [`DatabaseError`](#chdb-dbapi-err-databaseerror)
+
+데이터베이스의 관계 무결성에 영향을 미치는 경우 발생하는 예외입니다.
+
+이 예외는 데이터베이스 작업이 무결성 제약 조건을 위반할 때 발생합니다. 포함되는 사항은 다음과 같습니다:
+
+- 외래 키 제약 조건 위반
+- 기본 키 또는 고유 제약 조건 위반 (중복 키)
+- 체크 제약 조건 위반
+- NOT NULL 제약 조건 위반
+- 참조 무결성 위반
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|-----------------------------------------------|
+| [`IntegrityError`](#chdb-dbapi-err-integrityerror) | 데이터베이스 무결성 제약 조건 위반 시 |
+
+**예제**
+
+```pycon
+>>> # Duplicate primary key
+>>> cursor.execute("INSERT INTO users (id, name) VALUES (1, 'John')")
+>>> cursor.execute("INSERT INTO users (id, name) VALUES (1, 'Jane')")
+IntegrityError: Duplicate entry '1' for key 'PRIMARY'
+```
+
+```pycon
+>>> # Foreign key violation
+>>> cursor.execute("INSERT INTO orders (user_id) VALUES (999)")
+IntegrityError: Cannot add or update a child row: foreign key constraint fails
+```
+
+---
+#### **예외** `chdb.dbapi.err.InterfaceError` {#chdb-dbapi-err-interfaceerror}
+
+기반: [`Error`](#chdb-dbapi-err-error)
+
+데이터베이스 자체보다는 데이터베이스 인터페이스와 관련된 오류에 대해 발생하는 예외입니다.
+
+이 예외는 데이터베이스 인터페이스 구현에 문제가 있을 때 발생합니다. 예를 들면:
+
+- 잘못된 연결 매개변수
+- API 오용 (닫힌 연결에서 메소드 호출)
+- 인터페이스 수준 프로토콜 오류
+- 모듈 가져오기 또는 초기화 실패
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|----------------------------------------------|
+| [`InterfaceError`](#chdb-dbapi-err-interfaceerror) | 데이터베이스 인터페이스에서 데이터베이스 작업과 관련되지 않은 오류가 발생한 경우 |
+
+:::note
+이러한 오류는 일반적으로 프로그래밍 오류나 구성 문제로, 클라이언트 코드나 구성을 수정하여 해결할 수 있습니다.
+:::
+
+---
+#### **예외** `chdb.dbapi.err.InternalError` {#chdb-dbapi-err-internalerror}
+
+기반: [`DatabaseError`](#chdb-dbapi-err-databaseerror)
+
+데이터베이스가 내부 오류를 만났을 때 발생하는 예외입니다.
+
+이 예외는 데이터베이스 시스템이 응용 프로그램에 의해 유발되지 않은 내부 오류를 만났을 때 발생합니다. 예를 들면:
+
+- 잘못된 커서 상태 (커서가 더 이상 유효하지 않음)
+- 트랜잭션 상태 불일치 (트랜잭션이 동기화되지 않음)
+- 데이터베이스 손상 문제
+- 내부 데이터 구조 손상
+- 시스템 수준 데이터베이스 오류
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|-----------------------------------------------|
+| [`InternalError`](#chdb-dbapi-err-internalerror) | 데이터베이스가 내부 불일치를 만났을 경우 |
+
+:::warning 경고
+내부 오류는 데이터베이스 관리자 주의가 필요한 심각한 데이터베이스 문제를 나타낼 수 있습니다. 이러한 오류는 일반적으로 응용 프로그램 수준의 재시도 논리를 통해 복구할 수 없습니다.
+:::
+
+:::note
+이러한 오류는 일반적으로 응용 프로그램의 제어를 벗어나며 데이터베이스 재시작이나 복구 작업이 필요할 수 있습니다.
+:::
+
+---
+#### **예외** `chdb.dbapi.err.NotSupportedError` {#chdb-dbapi-err-notsupportederror}
+
+기반: [`DatabaseError`](#chdb-dbapi-err-databaseerror)
+
+메소드나 데이터베이스 API가 지원되지 않을 때 발생하는 예외입니다.
+
+이 예외는 응용 프로그램이 현재 데이터베이스 구성 또는 버전에서 지원되지 않는 데이터베이스 기능이나 API 메소드를 사용하려고 할 때 발생합니다. 예를 들면:
+
+- 트랜잭션 지원이 없는 연결에서 `rollback()` 요청
+- 데이터베이스 버전에서 지원하지 않는 고급 SQL 기능 사용
+- 현재 드라이버에 의해 구현되지 않은 메소드 호출
+- 비활성화된 데이터베이스 기능 사용 시도
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|-------------------------------------------------------|------------------------------------------------|
+| [`NotSupportedError`](#chdb_dbapi_err_notsupportederror) | 지원되지 않는 데이터베이스 기능에 접근할 때 |
+
+**예제**
+
+```pycon
+>>> # Transaction rollback on non-transactional connection
+>>> connection.rollback()
+NotSupportedError: Transactions are not supported
+```
+
+```pycon
+>>> # Using unsupported SQL syntax
+>>> cursor.execute("SELECT * FROM table WITH (NOLOCK)")
+NotSupportedError: WITH clause not supported in this database version
+```
+
+:::note
+이러한 오류를 피하기 위해 데이터베이스 문서와 드라이버 기능을 확인하십시오. 가능한 경우 우아한 대체 방법을 고려하십시오.
+:::
+
+---
+#### **예외** `chdb.dbapi.err.OperationalError` {#chdb-dbapi-err-operationalerror}
+
+기반: [`DatabaseError`](#chdb-dbapi-err-databaseerror)
+
+데이터베이스의 작업과 관련된 오류에 대해 발생하는 예외입니다.
+
+이 예외는 데이터베이스 작업 중 발생하는 오류로, 프로그래머의 제어 하에 있지 않을 수도 있습니다. 예를 들면:
+
+- 데이터베이스에서의 예기치 않은 연결 종료
+- 데이터베이스 서버를 찾지 못하거나 접근할 수 없음
+- 트랜잭션 처리 실패
+- 처리 중 메모리 할당 오류
+- 디스크 공간 또는 자원 소진
+- 데이터베이스 서버 내부 오류
+- 인증 또는 권한 오류
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|-------------------------------------------|
+| [`OperationalError`](#chdb-dbapi-err-operationalerror) | 운영 문제로 인해 데이터베이스 작업이 실패한 경우 |
+
+:::note
+이러한 오류는 일반적으로 일시적이며, 작업을 다시 시도하거나 시스템 수준의 문제를 해결하여 해결할 수 있습니다.
+:::
+
+:::warning 경고
+일부 운영 오류는 관리 개입이 필요한 심각한 시스템 문제를 나타낼 수 있습니다.
+:::
+
+---
+#### **예외** `chdb.dbapi.err.ProgrammingError` {#chdb-dbapi-err-programmingerror}
+
+기반: [`DatabaseError`](#chdb-dbapi-err-databaseerror)
+
+데이터베이스 작업의 프로그래밍 오류에 대해 발생하는 예외입니다.
+
+이 예외는 응용 프로그램의 데이터베이스 사용에서 프로그래밍 오류가 있을 때 발생합니다. 예를 들면:
+
+- 테이블 또는 컬럼을 찾을 수 없음
+- 생성 시 이미 존재하는 테이블 또는 인덱스
+- 문에서 SQL 구문 오류
+- 준비된 문에서 지정된 잘못된 매개변수 수
+- 잘못된 SQL 작업 (예: 존재하지 않는 객체에 대한 DROP)
+- 데이터베이스 API 메소드의 잘못된 사용
+
+**발생하는 예외**
+
+| 예외 | 조건 |
+|--------------------------------------------------|--------------------------------------------|
+| [`ProgrammingError`](#chdb-dbapi-err-programmingerror) | SQL 문 또는 API 사용에 오류가 포함된 경우 |
+
+**예제**
+
+```pycon
+>>> # Table not found
+>>> cursor.execute("SELECT * FROM nonexistent_table")
+ProgrammingError: Table 'nonexistent_table' doesn't exist
+```
+
+```pycon
+>>> # SQL syntax error
+>>> cursor.execute("SELCT * FROM users")
+ProgrammingError: You have an error in your SQL syntax
+```
+
+```pycon
+>>> # Wrong parameter count
+>>> cursor.execute("INSERT INTO users (name, age) VALUES (%s)", ('John',))
+ProgrammingError: Column count doesn't match value count
+```
+
+---
+#### **예외** `chdb.dbapi.err.StandardError` {#chdb-dbapi-err-standarderror}
+
+기반: `Exception`
+
+chdb와의 작업과 관련된 예외입니다.
+
+이것은 모든 chdb 관련 예외의 기본 클래스입니다. Python의 기본 Exception 클래스에서 상속받으며 데이터베이스 작업을 위한 예외 계층 구조의 루트 역할을 합니다.
+
+:::note
+이 예외 클래스는 데이터베이스 예외 처리를 위해 Python DB API 2.0 사양을 따릅니다.
+:::
+
+---
+#### **예외** `chdb.dbapi.err.Warning` {#chdb-dbapi-err-warning}
+
+기반: [`StandardError`](#chdb-dbapi-err-standarderror)
+
+삽입 중 데이터 잘림과 같은 중요한 경고에 대해 발생하는 예외입니다.
+
+이 예외는 데이터베이스 작업이 완료되었지만 응용 프로그램이 주목해야 하는 중요한 경고가 있을 때 발생합니다. 일반적인 시나리오는 다음과 같습니다:
+
+- 삽입 중 데이터 잘림
+- 숫자 변환에서의 정밀도 손실
+- 문자 집합 변환 경고
+
+:::note
+이는 경고 예외에 대한 Python DB API 2.0 사양을 따릅니다.
+:::
+
+---
+### 모듈 상수 {#module-constants}
+#### `chdb.dbapi.apilevel = '2.0'` {#apilevel}
+
+```python
+str(object=’’) -> str
+str(bytes_or_buffer[, encoding[, errors]]) -> str
+```
+
+주어진 객체에서 새 문자열 객체를 생성합니다. 인코딩이나 오류가 지정되면 객체는 주어진 인코딩 및 오류 처리기를 사용하여 디코딩될 데이터 버퍼를 노출해야 합니다. 그렇지 않으면 `object.__str__()`의 결과(정의된 경우) 또는 `repr(object)`를 반환합니다.
+
+- 인코딩의 기본값은 'utf-8'입니다.
+- 오류의 기본값은 'strict'입니다.
+
+---
+#### `chdb.dbapi.threadsafety = 1` {#threadsafety}
+
+```python
+int([x]) -> integer
+int(x, base=10) -> integer
+```
+
+숫자 또는 문자열을 정수로 변환하거나 인수가 주어지지 않으면 0을 반환합니다. x가 숫자인 경우 x.__int__()를 반환합니다. 부동 소수점 수의 경우, 이는 0쪽으로 잘라내어집니다.
+
+x가 숫자가 아니거나 base가 지정되면, x는 주어진 진수로 정수 리터럴을 나타내는 문자열, 바이트 또는 바이트 배열 인스턴스여야 합니다. 리터럴은 ‘+’ 또는 ‘-’로 선행될 수 있으며 공백으로 둘러쌓일 수 있습니다. 기본 진수는 10입니다. 유효한 진수는 0 및 2-36입니다. 기본 0은 문자열에서 진수를 정수 리터럴로 해석하는 것을 의미합니다.
+
+```python
+>>> int(‘0b100’, base=0)
+4
+```
+
+---
+#### `chdb.dbapi.paramstyle = 'format'` {#paramstyle}
+
+```python
+str(object=’’) -> str
+str(bytes_or_buffer[, encoding[, errors]]) -> str
+```
+
+주어진 객체에서 새 문자열 객체를 생성합니다. 인코딩이나 오류가 지정되면, 객체는 주어진 인코딩 및 오류 처리기를 사용하여 디코딩될 데이터 버퍼를 노출해야 합니다. 그렇지 않으면 `object.__str__()`의 결과(정의된 경우) 또는 `repr(object)`를 반환합니다. 인코딩의 기본값은 'utf-8'입니다. 오류의 기본값은 'strict'입니다.
+
+---
+### 유형 상수 {#type-constants}
+#### `chdb.dbapi.STRING = frozenset({247, 253, 254})` {#string-type}
+
+DB-API 2.0 유형 비교를 위한 확장된 frozenset입니다.
+
+이 클래스는 DB-API 2.0 유형 비교 의미론을 지원하기 위해 frozenset을 확장합니다. 개별 항목을 동등성과 부등식 연산자 모두를 사용하여 집합과 비교할 수 있는 유연한 유형 검사 기능을 제공합니다.
+
+이는 STRING, BINARY, NUMBER 등과 같은 유형 상수에서 사용되며 “field_type == STRING”과 같은 비교를 가능하게 합니다. 여기서 field_type은 단일 유형 값입니다.
+
+**예제**
+
+```pycon
+>>> string_types = DBAPISet([FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
+>>> FIELD_TYPE.STRING == string_types # Returns True
+>>> FIELD_TYPE.INT != string_types # Returns True
+>>> FIELD_TYPE.BLOB in string_types # Returns False
+```
+
+---
+#### `chdb.dbapi.BINARY = frozenset({249, 250, 251, 252})` {#binary-type}
+
+DB-API 2.0 유형 비교를 위한 확장된 frozenset입니다.
+
+이 클래스는 DB-API 2.0 유형 비교 의미론을 지원하기 위해 frozenset을 확장합니다. 개별 항목을 동등성과 부등식 연산자 모두를 사용하여 집합과 비교할 수 있는 유연한 유형 검사 기능을 제공합니다.
+
+이는 STRING, BINARY, NUMBER 등과 같은 유형 상수에서 사용되며 “field_type == STRING”과 같은 비교를 가능하게 합니다. 여기서 field_type은 단일 유형 값입니다.
+
+**예제**
+
+```pycon
+>>> string_types = DBAPISet([FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
+>>> FIELD_TYPE.STRING == string_types # Returns True
+>>> FIELD_TYPE.INT != string_types # Returns True
+>>> FIELD_TYPE.BLOB in string_types # Returns False
+```
+
+---
+#### `chdb.dbapi.NUMBER = frozenset({0, 1, 3, 4, 5, 8, 9, 13})` {#number-type}
+
+DB-API 2.0 유형 비교를 위한 확장된 frozenset입니다.
+
+이 클래스는 DB-API 2.0 유형 비교 의미론을 지원하기 위해 frozenset을 확장합니다. 개별 항목을 동등성과 부등식 연산자 모두를 사용하여 집합과 비교할 수 있는 유연한 유형 검사 기능을 제공합니다.
+
+이는 STRING, BINARY, NUMBER 등과 같은 유형 상수에서 사용되며 “field_type == STRING”과 같은 비교를 가능하게 합니다. 여기서 field_type은 단일 유형 값입니다.
+
+**예제**
+
+```pycon
+>>> string_types = DBAPISet([FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
+>>> FIELD_TYPE.STRING == string_types # Returns True
+>>> FIELD_TYPE.INT != string_types # Returns True
+>>> FIELD_TYPE.BLOB in string_types # Returns False
+```
+
+---
+#### `chdb.dbapi.DATE = frozenset({10, 14})` {#date-type}
+
+DB-API 2.0 유형 비교를 위한 확장된 frozenset입니다.
+
+이 클래스는 DB-API 2.0 유형 비교 의미론을 지원하기 위해 frozenset을 확장합니다. 개별 항목을 동등성과 부등식 연산자 모두를 사용하여 집합과 비교할 수 있는 유연한 유형 검사 기능을 제공합니다.
+
+이는 STRING, BINARY, NUMBER 등과 같은 유형 상수에서 사용되며 “field_type == STRING”과 같은 비교를 가능하게 합니다. 여기서 field_type은 단일 유형 값입니다.
+
+**예제**
+
+```pycon
+>>> string_types = DBAPISet([FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
+>>> FIELD_TYPE.STRING == string_types # Returns True
+>>> FIELD_TYPE.INT != string_types # Returns True
+>>> FIELD_TYPE.BLOB in string_types # Returns False
+```
+
+---
+#### `chdb.dbapi.TIME = frozenset({11})` {#time-type}
+
+DB-API 2.0 유형 비교를 위한 확장된 frozenset입니다.
+
+이 클래스는 DB-API 2.0 유형 비교 의미론을 지원하기 위해 frozenset을 확장합니다. 개별 항목을 동등성과 부등식 연산자 모두를 사용하여 집합과 비교할 수 있는 유연한 유형 검사 기능을 제공합니다.
+
+이는 STRING, BINARY, NUMBER 등과 같은 유형 상수에서 사용되며 “field_type == STRING”과 같은 비교를 가능하게 합니다. 여기서 field_type은 단일 유형 값입니다.
+
+**예제**
+
+```pycon
+>>> string_types = DBAPISet([FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
+>>> FIELD_TYPE.STRING == string_types # Returns True
+>>> FIELD_TYPE.INT != string_types # Returns True
+>>> FIELD_TYPE.BLOB in string_types # Returns False
+```
+
+---
+#### `chdb.dbapi.TIMESTAMP = frozenset({7, 12})` {#timestamp-type}
+
+DB-API 2.0 유형 비교를 위한 확장된 frozenset입니다.
+
+이 클래스는 DB-API 2.0 유형 비교 의미론을 지원하기 위해 frozenset을 확장합니다. 개별 항목을 동등성과 부등식 연산자 모두를 사용하여 집합과 비교할 수 있는 유연한 유형 검사 기능을 제공합니다.
+
+이는 STRING, BINARY, NUMBER 등과 같은 유형 상수에서 사용되며 “field_type == STRING”과 같은 비교를 가능하게 합니다. 여기서 field_type은 단일 유형 값입니다.
+
+**예제**
+
+```pycon
+>>> string_types = DBAPISet([FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
+>>> FIELD_TYPE.STRING == string_types # Returns True
+>>> FIELD_TYPE.INT != string_types # Returns True
+>>> FIELD_TYPE.BLOB in string_types # Returns False
+```
+#### `chdb.dbapi.DATETIME = frozenset({7, 12})` {#datetime-type}
+
+DB-API 2.0 유형 비교를 위한 확장된 frozenset입니다.
+
+이 클래스는 DB-API 2.0 유형 비교 의미론을 지원하기 위해 frozenset을 확장합니다. 개별 항목을 동등성과 부등식 연산자 모두를 사용하여 집합과 비교할 수 있는 유연한 유형 검사 기능을 제공합니다.
+
+이는 STRING, BINARY, NUMBER 등과 같은 유형 상수에서 사용되며 “field_type == STRING”과 같은 비교를 가능하게 합니다. 여기서 field_type은 단일 유형 값입니다.
+
+**예제**
+
+```pycon
+>>> string_types = DBAPISet([FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
+>>> FIELD_TYPE.STRING == string_types # Returns True
+>>> FIELD_TYPE.INT != string_types # Returns True
+>>> FIELD_TYPE.BLOB in string_types # Returns False
+```
+
+---
+#### `chdb.dbapi.ROWID = frozenset({})` {#rowid-type}
+
+DB-API 2.0 유형 비교를 위한 확장된 frozenset입니다.
+
+이 클래스는 DB-API 2.0 유형 비교 의미론을 지원하기 위해 frozenset을 확장합니다. 개별 항목을 동등성과 부등식 연산자 모두를 사용하여 집합과 비교할 수 있는 유연한 유형 검사 기능을 제공합니다.
+
+이는 STRING, BINARY, NUMBER 등과 같은 유형 상수에서 사용되며 “field_type == STRING”과 같은 비교를 가능하게 합니다. 여기서 field_type은 단일 유형 값입니다.
+
+**예제**
+
+```pycon
+>>> string_types = DBAPISet([FIELD_TYPE.STRING, FIELD_TYPE.VAR_STRING])
+>>> FIELD_TYPE.STRING == string_types # Returns True
+>>> FIELD_TYPE.INT != string_types # Returns True
+>>> FIELD_TYPE.BLOB in string_types # Returns False
+```
+
+**사용 예제**
+
+기본 쿼리 예제:
+
+```python
+import chdb.dbapi as dbapi
+
+print("chdb driver version: {0}".format(dbapi.get_client_info()))
+
+
+# Create connection and cursor
+conn = dbapi.connect()
+cur = conn.cursor()
+
+
+# Execute query
+cur.execute('SELECT version()')
+print("description:", cur.description)
+print("data:", cur.fetchone())
+
+
+# Clean up
+cur.close()
+conn.close()
+```
+
+데이터 작업:
+
+```python
+import chdb.dbapi as dbapi
+
+conn = dbapi.connect()
+cur = conn.cursor()
+
+
+# Create table
+cur.execute("""
+ CREATE TABLE employees (
+ id UInt32,
+ name String,
+ department String,
+ salary Decimal(10,2)
+ ) ENGINE = Memory
+""")
+
+
+# Insert data
+cur.execute("""
+ INSERT INTO employees VALUES
+ (1, 'Alice', 'Engineering', 75000.00),
+ (2, 'Bob', 'Marketing', 65000.00),
+ (3, 'Charlie', 'Engineering', 80000.00)
+""")
+
+
+# Query data
+cur.execute("SELECT * FROM employees WHERE department = 'Engineering'")
+
+
+# Fetch results
+print("Column names:", [desc[0] for desc in cur.description])
+for row in cur.fetchall():
+ print(row)
+
+conn.close()
+```
+
+연결 관리:
+
+```python
+import chdb.dbapi as dbapi
+
+
+# In-memory database (default)
+conn1 = dbapi.connect()
+
+
+# Persistent database file
+conn2 = dbapi.connect("./my_database.chdb")
+
+
+# Connection with parameters
+conn3 = dbapi.connect("./my_database.chdb?log-level=debug&verbose")
+
+
+# Read-only connection
+conn4 = dbapi.connect("./my_database.chdb?mode=ro")
+
+
+# Automatic connection cleanup
+with dbapi.connect("test.chdb") as conn:
+ cur = conn.cursor()
+ cur.execute("SELECT count() FROM numbers(1000)")
+ result = cur.fetchone()
+ print(f"Count: {result[0]}")
+ cur.close()
+```
+
+**모범 사례**
+
+1. **연결 관리**: 작업이 끝나면 항상 연결 및 커서를 닫으세요.
+2. **컨텍스트 관리자**: 자동 정리를 위해 `with` 문을 사용하세요.
+3. **배치 처리**: 큰 결과 세트는 `fetchmany()`를 사용하세요.
+4. **오류 처리**: 데이터베이스 작업을 try-except 블록으로 감싸세요.
+5. **매개변수 바인딩**: 가능한 경우 매개변수화된 쿼리를 사용하세요.
+6. **메모리 관리**: 매우 큰 데이터 세트의 경우 `fetchall()`을 피하세요.
+
+:::note
+- chDB의 DB-API 2.0 인터페이스는 대부분의 Python 데이터베이스 도구와 호환됩니다.
+- 이 인터페이스는 Level 1 스레드 안전성을 제공합니다 (스레드는 모듈을 공유할 수 있지만 연결은 공유할 수 없음).
+- 연결 문자열은 chDB 세션과 동일한 매개변수를 지원합니다.
+- 모든 표준 DB-API 2.0 예외가 지원됩니다.
+:::
+
+:::warning 경고
+- 항상 자원 누수를 피하기 위해 커서와 연결을 닫으세요.
+- 큰 결과 세트는 배치로 처리해야 합니다.
+- 매개변수 바인딩 구문은 포맷 스타일을 따릅니다: `%s`
+:::
+## 사용자 정의 함수 (UDF) {#user-defined-functions}
+
+chDB를 위한 사용자 정의 함수 모듈입니다.
+
+이 모듈은 chDB에서 사용자 정의 함수 (UDF)를 생성하고 관리하기 위한 기능을 제공합니다. 이를 통해 SQL 쿼리에서 호출할 수 있는 사용자 정의 Python 함수를 작성하여 chDB의 기능을 확장할 수 있습니다.
+### `chdb.udf.chdb_udf` {#chdb-udf}
+
+chDB Python UDF(사용자 정의 함수)에 대한 데코레이터입니다.
+
+**구문**
+
+```python
+chdb.udf.chdb_udf(return_type='String')
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|---------------|-------|------------|------------------------------------------------------------------|
+| `return_type` | str | `"String"` | 함수의 반환 유형. ClickHouse 데이터 유형 중 하나여야 합니다. |
+
+**비고**
+
+1. 함수는 상태 비저장이어야 합니다. UDF만 지원되며 UDAF는 지원되지 않습니다.
+2. 기본 반환 유형은 String입니다. 반환 유형은 ClickHouse 데이터 유형 중 하나여야 합니다.
+3. 함수는 String 유형의 인수를 받아야 합니다. 모든 인수는 문자열입니다.
+4. 함수는 입력의 각 행마다 호출됩니다.
+5. 함수는 순수한 Python 함수여야 하며, 함수에서 사용되는 모든 모듈을 가져와야 합니다.
+6. 사용되는 Python 인터프리터는 스크립트를 실행하는 데 사용되는 것과 동일합니다.
+
+**예제**
+
+```python
+@chdb_udf()
+def sum_udf(lhs, rhs):
+ return int(lhs) + int(rhs)
+
+@chdb_udf()
+def func_use_json(arg):
+ import json
+ # ... use json module
+```
+
+---
+### `chdb.udf.generate_udf` {#generate-udf}
+
+UDF 구성 및 실행 가능 스크립트 파일을 생성합니다.
+
+이 함수는 chDB에서 사용자 정의 함수 (UDF)를 위해 필요한 파일을 생성합니다:
+1. 입력 데이터를 처리하는 Python 실행 가능 스크립트
+2. ClickHouse에 UDF를 등록하는 XML 구성 파일
+
+**구문**
+
+```python
+chdb.udf.generate_udf(func_name, args, return_type, udf_body)
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|---------------|-------|---------------------------------------------------|
+| `func_name` | str | UDF 함수의 이름 |
+| `args` | list | 함수의 인수 이름 목록 |
+| `return_type` | str | 함수의 ClickHouse 반환 유형 |
+| `udf_body` | str | UDF 함수의 Python 소스 코드 본문 |
+
+:::note
+이 함수는 일반적으로 @chdb_udf 데코레이터에 의해 호출되며, 사용자가 직접 호출해서는 안 됩니다.
+:::
+
+---
+## 유틸리티 {#utilities}
+
+chDB를 위한 유틸리티 함수 및 도우미입니다.
+
+이 모듈은 데이터 유형 추론, 데이터 변환 도우미 및 디버깅 유틸리티 등 chDB 작업을 위한 다양한 유틸리티 함수를 포함하고 있습니다.
+
+---
+### `chdb.utils.convert_to_columnar` {#convert-to-columnar}
+
+사전 목록을 컬럼형(format)으로 변환합니다.
+
+이 함수는 사전 목록을 받아 각 키가 컬럼에 해당하고 각 값이 컬럼 값의 목록인 사전으로 변환합니다. 사전에서 누락된 값은 None으로 나타냅니다.
+
+**구문**
+
+```python
+chdb.utils.convert_to_columnar(items: List[Dict[str, Any]]) → Dict[str, List[Any]]
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|------------|------------------------|---------------------------------------|
+| `items` | `List[Dict[str, Any]]` | 변환할 사전 목록 |
+
+**반환**
+
+| 반환 유형 | 설명 |
+|------------------------|---------------------------------------------------------------|
+| `Dict[str, List[Any]]` | 키가 컬럼 이름이고 값이 컬럼 값 목록인 사전 |
+
+**예제**
+
+```pycon
+>>> items = [
+... {"name": "Alice", "age": 30, "city": "New York"},
+... {"name": "Bob", "age": 25},
+... {"name": "Charlie", "city": "San Francisco"}
+... ]
+>>> convert_to_columnar(items)
+{
+ 'name': ['Alice', 'Bob', 'Charlie'],
+ 'age': [30, 25, None],
+ 'city': ['New York', None, 'San Francisco']
+}
+```
+### `chdb.utils.flatten_dict` {#flatten-dict}
+
+중첩된 딕셔너리를 평탄화합니다.
+
+이 기능은 중첩된 딕셔너리를 받아서 평탄화하며, 중첩된 키를 구분자로 연결합니다. 딕셔너리의 리스트는 JSON 문자열로 직렬화됩니다.
+
+**문법**
+
+```python
+chdb.utils.flatten_dict(d: Dict[str, Any], parent_key: str = '', sep: str = '_') → Dict[str, Any]
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|--------------|---------------------|------------|----------------------------------------------|
+| `d` | `Dict[str, Any]` | *필수* | 평탄화할 딕셔너리 |
+| `parent_key` | str | `""` | 각 키 앞에 추가할 기본 키 |
+| `sep` | str | `"_"` | 연결된 키 사이에 사용할 구분자 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|-----------------|-------------------------------------|
+| `Dict[str, Any]` | 평탄화된 딕셔너리 |
+
+**예시**
+
+```pycon
+>>> nested_dict = {
+... "a": 1,
+... "b": {
+... "c": 2,
+... "d": {
+... "e": 3
+... }
+... },
+... "f": [4, 5, {"g": 6}],
+... "h": [{"i": 7}, {"j": 8}]
+... }
+>>> flatten_dict(nested_dict)
+{
+ 'a': 1,
+ 'b_c': 2,
+ 'b_d_e': 3,
+ 'f_0': 4,
+ 'f_1': 5,
+ 'f_2_g': 6,
+ 'h': '[{"i": 7}, {"j": 8}]'
+}
+```
+
+---
+### `chdb.utils.infer_data_type` {#infer-data-type}
+
+값 목록에 대해 가장 적합한 데이터 유형을 추론합니다.
+
+이 기능은 값 목록을 검사하고 목록의 모든 값을 나타낼 수 있는 가장 적절한 데이터 유형을 결정합니다. 정수, 부호 없는 정수, 소수 및 부동 소수점 유형을 고려하며, 값이 숫자 유형으로 나타낼 수 없거나 모든 값이 None인 경우 “문자열”로 기본 설정됩니다.
+
+**문법**
+
+```python
+chdb.utils.infer_data_type(values: List[Any]) → str
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|-------------|-----------------|------------------------------------------------|
+| `values` | `List[Any]` | 분석할 값 목록. 값은 어떤 유형일 수 있습니다. |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `str` | 추론된 데이터 유형을 나타내는 문자열. 가능한 반환 값은: “int8”, “int16”, “int32”, “int64”, “int128”, “int256”, “uint8”, “uint16”, “uint32”, “uint64”, “uint128”, “uint256”, “decimal128”, “decimal256”, “float32”, “float64”, 또는 “문자열”입니다. |
+
+:::note
+- 목록의 모든 값이 None인 경우, 함수는 “문자열”을 반환합니다.
+- 목록의 값 중 하나라도 문자열인 경우, 함수는 즉시 “문자열”을 반환합니다.
+- 함수는 숫자 값을 범위 및 정밀도에 따라 정수, 소수, 또는 부동 소수점으로 나타낼 수 있다고 가정합니다.
+:::
+
+---
+### `chdb.utils.infer_data_types` {#infer-data-types}
+
+컬럼형 데이터 구조의 각 컬럼에 대한 데이터 유형을 추론합니다.
+
+이 기능은 각 컬럼의 값을 분석하고 데이터 샘플에 따라 각 컬럼에 가장 적합한 데이터 유형을 추론합니다.
+
+**문법**
+
+```python
+chdb.utils.infer_data_types`(column_data: Dict[str, List[Any]], n_rows: int = 10000) → List[tuple]
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 기본값 | 설명 |
+|---------------|--------------------------|--------------|---------------------------------------------------------------------------|
+| `column_data` | `Dict[str, List[Any]]` | *필수* | 키가 컬럼 이름이고 값이 컬럼 값 목록인 딕셔너리 |
+| `n_rows` | int | `10000` | 유형 추론을 위해 샘플링할 행의 수 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|---------------|-------------------------------------------------------------|
+| `List[tuple]` | 각 튜플이 컬럼 이름과 추론된 데이터 유형을 포함하는 튜플의 리스트 |
+
+## Abstract Base Classes {#abstract-base-classes}
+### **class** `chdb.rwabc.PyReader`(data: Any)` {#pyreader}
+
+기초: `ABC`
+
+```python
+class chdb.rwabc.PyReader(data: Any)
+```
+
+---
+#### **abstractmethod** `read` {#read}
+
+지정된 컬럼에서 행의 수를 읽고, 각 객체가 컬럼의 값을 위한 값의 시퀀스인 객체 목록을 반환합니다.
+
+```python
+abstractmethod (col_names: List[str], count: int) → List[Any]
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|-------------|------------------|----------------------------------------------|
+| `col_names` | `List[str]` | 읽을 컬럼 이름 목록 |
+| `count` | int | 읽을 최대 행 수 |
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|----------------------------------------|
+| `List[Any]` | 각 컬럼에 대해 하나의 시퀀스 목록 |
+### **class** `chdb.rwabc.PyWriter` {#pywriter}
+
+기초: `ABC`
+
+```python
+class chdb.rwabc.PyWriter(col_names: List[str], types: List[type], data: Any)
+```
+
+---
+#### **abstractmethod** finalize {#finalize}
+
+블록에서 최종 데이터를 조합하고 반환합니다. 하위 클래스에서 구현해야 합니다.
+
+```python
+abstractmethod finalize() → bytes
+```
+
+**반환값**
+
+| 반환 유형 | 설명 |
+|------------|----------------------------------------|
+| `bytes` | 최종 직렬화된 데이터 |
+
+---
+#### **abstractmethod** `write` {#write}
+
+데이터의 컬럼을 블록에 저장합니다. 하위 클래스에서 구현해야 합니다.
+
+```python
+abstractmethod write(col_names: List[str], columns: List[List[Any]]) → None
+```
+
+**매개변수**
+
+| 매개변수 | 유형 | 설명 |
+|-------------|---------------------|----------------------------------------------------------|
+| `col_names` | `List[str]` | 작성 중인 컬럼 이름 목록 |
+| `columns` | `List[List[Any]]` | 각 컬럼이 리스트로 표현되는 컬럼 데이터 목록 |
+## Exception Handling {#exception-handling}
+### **class** `chdb.ChdbError` {#chdberror}
+
+기초: `Exception`
+
+chDB 관련 오류의 기본 예외 클래스입니다.
+
+이 예외는 chDB 쿼리 실행이 실패하거나 오류가 발생할 때 발생합니다. 이는 표준 Python 예외 클래스에서 상속하며, 기본 ClickHouse 엔진에서 오류 정보를 제공합니다.
+
+예외 메시지에는 일반적으로 ClickHouse의 상세한 오류 정보가 포함되어 있으며, 구문 오류, 유형 불일치, 누락된 테이블/컬럼 및 기타 쿼리 실행 문제를 포함합니다.
+
+**변수**
+
+| 변수 | 유형 | 설명 |
+|----------|-------|-------------------------------------------------------------|
+| `args` | - | 오류 메시지와 추가 인수를 포함하는 튜플 |
+
+**예시**
+
+```pycon
+>>> try:
+... result = chdb.query("SELECT * FROM non_existent_table")
+... except chdb.ChdbError as e:
+... print(f"Query failed: {e}")
+Query failed: Table 'non_existent_table' doesn't exist
+```
+
+```pycon
+>>> try:
+... result = chdb.query("SELECT invalid_syntax FROM")
+... except chdb.ChdbError as e:
+... print(f"Syntax error: {e}")
+Syntax error: Syntax error near 'FROM'
+```
+
+:::note
+이 예외는 ClickHouse 엔진이 오류를 보고할 때 chdb.query() 및 관련 함수에 의해 자동으로 발생합니다. 실패할 수 있는 쿼리를 처리할 때 이 예외를 잡아 적절한 오류 처리를 제공해야 합니다.
+:::
+## Version Information {#version-information}
+### `chdb.chdb_version = ('3', '6', '0')` {#chdb-version}
+
+내장된 불변 시퀀스입니다.
+
+인수를 제공하지 않으면, 생성자는 빈 튜플을 반환합니다. iterable이 지정되면, 튜플은 iterable의 항목으로 초기화됩니다.
+
+인수가 튜플인 경우, 반환 값은 동일한 객체입니다.
+
+---
+### `chdb.engine_version = '25.5.2.1'` {#engine-version}
+
+```python
+str(object=’’) -> str
+str(bytes_or_buffer[, encoding[, errors]]) -> str
+```
+
+주어진 객체에서 새로운 문자열 객체를 생성합니다. 인코딩이나 오류가 지정되면, 객체는 주어진 인코딩과 오류 처리기를 사용하여 디코딩될 데이터 버퍼를 노출해야 합니다. 그렇지 않으면, object.__str__() (정의된 경우) 또는 repr(object)의 결과를 반환합니다.
+
+- 인코딩의 기본값은 ‘utf-8’입니다.
+- 오류의 기본값은 ‘strict’입니다.
+
+---
+### `chdb.__version__ = '3.6.0'` {#version}
+
+```python
+str(object=’’) -> str
+str(bytes_or_buffer[, encoding[, errors]]) -> str
+```
+
+주어진 객체에서 새로운 문자열 객체를 생성합니다. 인코딩이나 오류가 지정되면, 객체는 주어진 인코딩과 오류 처리기를 사용하여 디코딩될 데이터 버퍼를 노출해야 합니다. 그렇지 않으면, object.__str__() (정의된 경우) 또는 repr(object)의 결과를 반환합니다.
+
+- 인코딩의 기본값은 ‘utf-8’입니다.
+- 오류의 기본값은 ‘strict’입니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/api/python.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/api/python.md.hash
new file mode 100644
index 00000000000..926dde74cd9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/api/python.md.hash
@@ -0,0 +1 @@
+ec6d9035f44e6d98
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/getting-started.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/getting-started.md
new file mode 100644
index 00000000000..2b6da760df0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/getting-started.md
@@ -0,0 +1,387 @@
+---
+'title': 'chDB 시작하기'
+'sidebar_label': '시작하기'
+'slug': '/chdb/getting-started'
+'description': 'chDB는 ClickHouse로 구동되는 인프로세스 SQL OLAP 엔진입니다.'
+'keywords':
+- 'chdb'
+- 'embedded'
+- 'clickhouse-lite'
+- 'in-process'
+- 'in process'
+'doc_type': 'guide'
+---
+
+
+# chDB 시작하기
+
+이 가이드에서는 chDB의 Python 변형을 사용하여 시작하는 방법에 대해 설명합니다.
+우리는 S3에 저장된 JSON 파일을 쿼리한 후, JSON 파일을 기반으로 chDB에 테이블을 생성하고 데이터를 쿼리하는 방법을 배울 것입니다.
+또한 Apache Arrow 및 Panda와 같은 다양한 형식으로 데이터를 반환하는 방법과 Pandas DataFrames을 쿼리하는 방법도 알아볼 것입니다.
+
+## 설정 {#setup}
+
+먼저 가상 환경을 생성해 보겠습니다:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+그리고 이제 chDB를 설치할 차례입니다.
+버전 2.0.3 이상이 설치되어 있는지 확인하세요:
+
+```bash
+pip install "chdb>=2.0.2"
+```
+
+그리고 이제 [ipython](https://ipython.org/)을 설치하겠습니다:
+
+```bash
+pip install ipython
+```
+
+우리는 나머지 가이드에서 명령을 실행하기 위해 `ipython`을 사용할 예정이며, 다음을 실행하여 시작할 수 있습니다:
+
+```bash
+ipython
+```
+
+이 가이드에서는 Pandas와 Apache Arrow도 사용할 예정이므로, 이 라이브러리들도 설치하겠습니다:
+
+```bash
+pip install pandas pyarrow
+```
+
+## S3에서 JSON 파일 쿼리하기 {#querying-a-json-file-in-s3}
+
+이제 S3 버킷에 저장된 JSON 파일을 쿼리하는 방법을 살펴보겠습니다.
+[YouTube dislikes 데이터세트](/getting-started/example-datasets/youtube-dislikes)에는 2021년까지의 YouTube 비디오에 대한 40억 개 이상의 불만이 포함되어 있습니다.
+우리는 그 데이터세트의 JSON 파일 중 하나로 작업할 것입니다.
+
+chdb를 가져옵니다:
+
+```python
+import chdb
+```
+
+다음 쿼리를 작성하여 JSON 파일 중 하나의 구조를 설명할 수 있습니다:
+
+```python
+chdb.query(
+ """
+ DESCRIBE s3(
+ 's3://clickhouse-public-datasets/youtube/original/files/' ||
+ 'youtubedislikes_20211127161229_18654868.1637897329_vid.json.zst',
+ 'JSONLines'
+ )
+ SETTINGS describe_compact_output=1
+ """
+)
+```
+
+```text
+"id","Nullable(String)"
+"fetch_date","Nullable(String)"
+"upload_date","Nullable(String)"
+"title","Nullable(String)"
+"uploader_id","Nullable(String)"
+"uploader","Nullable(String)"
+"uploader_sub_count","Nullable(Int64)"
+"is_age_limit","Nullable(Bool)"
+"view_count","Nullable(Int64)"
+"like_count","Nullable(Int64)"
+"dislike_count","Nullable(Int64)"
+"is_crawlable","Nullable(Bool)"
+"is_live_content","Nullable(Bool)"
+"has_subtitles","Nullable(Bool)"
+"is_ads_enabled","Nullable(Bool)"
+"is_comments_enabled","Nullable(Bool)"
+"description","Nullable(String)"
+"rich_metadata","Array(Tuple(
+ call Nullable(String),
+ content Nullable(String),
+ subtitle Nullable(String),
+ title Nullable(String),
+ url Nullable(String)))"
+"super_titles","Array(Tuple(
+ text Nullable(String),
+ url Nullable(String)))"
+"uploader_badges","Nullable(String)"
+"video_badges","Nullable(String)"
+```
+
+또한 해당 파일의 행 수를 계산할 수 있습니다:
+
+```python
+chdb.query(
+ """
+ SELECT count()
+ FROM s3(
+ 's3://clickhouse-public-datasets/youtube/original/files/' ||
+ 'youtubedislikes_20211127161229_18654868.1637897329_vid.json.zst',
+ 'JSONLines'
+ )"""
+)
+```
+
+```text
+336432
+```
+
+이 파일에는 300,000개 이상의 레코드가 포함되어 있습니다.
+
+chdb는 아직 쿼리 매개변수를 전달하는 것을 지원하지 않지만, 경로를 추출하여 f-String을 통해 전달할 수 있습니다.
+
+```python
+path = 's3://clickhouse-public-datasets/youtube/original/files/youtubedislikes_20211127161229_18654868.1637897329_vid.json.zst'
+```
+
+```python
+chdb.query(
+ f"""
+ SELECT count()
+ FROM s3('{path}','JSONLines')
+ """
+)
+```
+
+:::warning
+프로그램에서 정의된 변수와 함께 이것을 수행하는 것은 괜찮지만, 사용자 제공 입력으로는 수행하지 마세요. 그렇지 않으면 쿼리가 SQL 주입에 노출될 수 있습니다.
+:::
+
+## 출력 형식 구성하기 {#configuring-the-output-format}
+
+기본 출력 형식은 `CSV`지만, `output_format` 매개변수를 통해 변경할 수 있습니다.
+chDB는 ClickHouse 데이터 형식과 함께 [자체 형식](/chdb/reference/data-formats.md)인 `DataFrame`도 지원하며, 이는 Pandas DataFrame을 반환합니다:
+
+```python
+result = chdb.query(
+ f"""
+ SELECT is_ads_enabled, count()
+ FROM s3('{path}','JSONLines')
+ GROUP BY ALL
+ """,
+ output_format="DataFrame"
+)
+
+print(type(result))
+print(result)
+```
+
+```text
+
+ is_ads_enabled count()
+0 False 301125
+1 True 35307
+```
+
+또는 Apache Arrow 테이블을 반환하고 싶다면 다음과 같이 할 수 있습니다:
+
+```python
+result = chdb.query(
+ f"""
+ SELECT is_live_content, count()
+ FROM s3('{path}','JSONLines')
+ GROUP BY ALL
+ """,
+ output_format="ArrowTable"
+)
+
+print(type(result))
+print(result)
+```
+
+```text
+
+pyarrow.Table
+is_live_content: bool
+count(): uint64 not null
+----
+is_live_content: [[false,true]]
+count(): [[315746,20686]]
+```
+
+## JSON 파일에서 테이블 만들기 {#creating-a-table-from-json-file}
+
+다음으로, chDB에 테이블을 생성하는 방법을 살펴보겠습니다.
+이를 위해서는 다른 API를 사용해야 하므로, 먼저 이를 가져오겠습니다:
+
+```python
+from chdb import session as chs
+```
+
+다음으로 세션을 초기화하겠습니다.
+세션이 디스크에 지속되기를 원하면 디렉터리 이름을 제공해야 합니다.
+비워두면 데이터베이스는 인메모리 상태가 되고 Python 프로세스를 종료하면 사라집니다.
+
+```python
+sess = chs.Session("gettingStarted.chdb")
+```
+
+다음으로 데이터베이스를 생성하겠습니다:
+
+```python
+sess.query("CREATE DATABASE IF NOT EXISTS youtube")
+```
+
+이제 JSON 파일의 스키마를 기반으로 `dislikes` 테이블을 생성할 수 있으며, `CREATE...EMPTY AS` 기법을 사용할 것입니다.
+컬럼 유형이 모두 `Nullable`로 설정되지 않도록 [`schema_inference_make_columns_nullable`](/operations/settings/formats/#schema_inference_make_columns_nullable) 설정을 사용할 것입니다.
+
+```python
+sess.query(f"""
+ CREATE TABLE youtube.dislikes
+ ORDER BY fetch_date
+ EMPTY AS
+ SELECT *
+ FROM s3('{path}','JSONLines')
+ SETTINGS schema_inference_make_columns_nullable=0
+ """
+)
+```
+
+그런 다음 `DESCRIBE` 절을 사용하여 스키마를 검사할 수 있습니다:
+
+```python
+sess.query(f"""
+ DESCRIBE youtube.dislikes
+ SETTINGS describe_compact_output=1
+ """
+)
+```
+
+```text
+"id","String"
+"fetch_date","String"
+"upload_date","String"
+"title","String"
+"uploader_id","String"
+"uploader","String"
+"uploader_sub_count","Int64"
+"is_age_limit","Bool"
+"view_count","Int64"
+"like_count","Int64"
+"dislike_count","Int64"
+"is_crawlable","Bool"
+"is_live_content","Bool"
+"has_subtitles","Bool"
+"is_ads_enabled","Bool"
+"is_comments_enabled","Bool"
+"description","String"
+"rich_metadata","Array(Tuple(
+ call String,
+ content String,
+ subtitle String,
+ title String,
+ url String))"
+"super_titles","Array(Tuple(
+ text String,
+ url String))"
+"uploader_badges","String"
+"video_badges","String"
+```
+
+다음으로 해당 테이블을 채우겠습니다:
+
+```python
+sess.query(f"""
+ INSERT INTO youtube.dislikes
+ SELECT *
+ FROM s3('{path}','JSONLines')
+ SETTINGS schema_inference_make_columns_nullable=0
+ """
+)
+```
+
+이 두 단계를 한 번에 수행할 수도 있으며, `CREATE...AS` 기법을 사용할 것입니다.
+이 방법으로 다른 테이블을 만들겠습니다:
+
+```python
+sess.query(f"""
+ CREATE TABLE youtube.dislikes2
+ ORDER BY fetch_date
+ AS
+ SELECT *
+ FROM s3('{path}','JSONLines')
+ SETTINGS schema_inference_make_columns_nullable=0
+ """
+)
+```
+
+## 테이블 쿼리하기 {#querying-a-table}
+
+마지막으로, 테이블을 쿼리해 보겠습니다:
+
+```sql
+df = sess.query("""
+ SELECT uploader, sum(view_count) AS viewCount, sum(like_count) AS likeCount, sum(dislike_count) AS dislikeCount
+ FROM youtube.dislikes
+ GROUP BY ALL
+ ORDER BY viewCount DESC
+ LIMIT 10
+ """,
+ "DataFrame"
+)
+df
+```
+
+```text
+ uploader viewCount likeCount dislikeCount
+0 Jeremih 139066569 812602 37842
+1 TheKillersMusic 109313116 529361 11931
+2 LetsGoMartin- Canciones Infantiles 104747788 236615 141467
+3 Xiaoying Cuisine 54458335 1031525 37049
+4 Adri 47404537 279033 36583
+5 Diana and Roma IND 43829341 182334 148740
+6 ChuChuTV Tamil 39244854 244614 213772
+7 Cheez-It 35342270 108 27
+8 Anime Uz 33375618 1270673 60013
+9 RC Cars OFF Road 31952962 101503 49489
+```
+
+그런 다음 DataFrame에 좋아요와 싫어요의 비율을 계산하기 위해 추가 컬럼을 추가한다고 가정해 보겠습니다.
+다음 코드를 작성할 수 있습니다:
+
+```python
+df["likeDislikeRatio"] = df["likeCount"] / df["dislikeCount"]
+```
+
+## Pandas DataFrame 쿼리하기 {#querying-a-pandas-dataframe}
+
+이제 chDB에서 해당 DataFrame을 쿼리할 수 있습니다:
+
+```python
+chdb.query(
+ """
+ SELECT uploader, likeDislikeRatio
+ FROM Python(df)
+ """,
+ output_format="DataFrame"
+)
+```
+
+```text
+ uploader likeDislikeRatio
+0 Jeremih 21.473548
+1 TheKillersMusic 44.368536
+2 LetsGoMartin- Canciones Infantiles 1.672581
+3 Xiaoying Cuisine 27.842182
+4 Adri 7.627395
+5 Diana and Roma IND 1.225857
+6 ChuChuTV Tamil 1.144275
+7 Cheez-It 4.000000
+8 Anime Uz 21.173296
+9 RC Cars OFF Road 2.051021
+```
+
+Pandas DataFrame을 쿼리하는 방법에 대한 자세한 내용은 [Querying Pandas 개발자 가이드](guides/querying-pandas.md)에서 확인할 수 있습니다.
+
+## 다음 단계 {#next-steps}
+
+이 가이드가 chDB에 대한 좋은 개요를 제공했기를 바랍니다.
+더 많은 내용을 배우고 싶다면 다음 개발자 가이드를 확인하세요:
+
+* [Pandas DataFrames 쿼리하기](guides/querying-pandas.md)
+* [Apache Arrow 쿼리하기](guides/querying-apache-arrow.md)
+* [JupySQL에서 chDB 사용하기](guides/jupysql.md)
+* [기존 clickhouse-local 데이터베이스와 chDB 사용하기](guides/clickhouse-local.md)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/getting-started.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/getting-started.md.hash
new file mode 100644
index 00000000000..e21dcce1db5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/getting-started.md.hash
@@ -0,0 +1 @@
+b95df43787d70a89
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/clickhouse-local.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/clickhouse-local.md
new file mode 100644
index 00000000000..86c813a9dba
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/clickhouse-local.md
@@ -0,0 +1,136 @@
+---
+'title': 'clickhouse-local 데이터베이스 사용하기'
+'sidebar_label': 'clickhouse-local 데이터베이스 사용하기'
+'slug': '/chdb/guides/clickhouse-local'
+'description': 'chDB와 함께 clickhouse-local 데이터베이스를 사용하는 방법을 배웁니다.'
+'keywords':
+- 'chdb'
+- 'clickhouse-local'
+'doc_type': 'guide'
+---
+
+[clickhouse-local](/operations/utilities/clickhouse-local)는 ClickHouse의 내장 버전이 포함된 CLI입니다.
+사용자가 서버를 설치하지 않고도 ClickHouse의 기능을 사용할 수 있도록 해줍니다.
+이번 가이드에서는 chDB에서 clickhouse-local 데이터베이스를 사용하는 방법을 배워보겠습니다.
+
+## 설정 {#setup}
+
+먼저 가상 환경을 생성해 보겠습니다:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+이제 chDB를 설치하겠습니다.
+버전 2.0.2 이상이 설치되어 있는지 확인하세요:
+
+```bash
+pip install "chdb>=2.0.2"
+```
+
+그리고 [ipython](https://ipython.org/)을 설치하겠습니다:
+
+```bash
+pip install ipython
+```
+
+가이드의 나머지 부분에서 사용할 명령을 실행하기 위해 `ipython`을 사용할 것입니다.
+`ipython`을 실행하려면 다음을 입력하세요:
+
+```bash
+ipython
+```
+
+## clickhouse-local 설치 {#installing-clickhouse-local}
+
+clickhouse-local의 다운로드 및 설치는 [ClickHouse 다운로드 및 설치](/install)와 동일합니다.
+다음 명령을 실행하여 이를 수행할 수 있습니다:
+
+```bash
+curl https://clickhouse.com/ | sh
+```
+
+데이터를 디렉터리에 지속적으로 저장하는 clickhouse-local을 실행하려면 `--path`를 전달해야 합니다:
+
+```bash
+./clickhouse -m --path demo.chdb
+```
+
+## clickhouse-local에 데이터 수집하기 {#ingesting-data-into-clickhouse-local}
+
+기본 데이터베이스는 메모리에만 데이터를 저장하므로, 우리가 수집하는 데이터가 디스크에 지속적으로 저장되도록 명명된 데이터베이스를 생성해야 합니다.
+
+```sql
+CREATE DATABASE foo;
+```
+
+테이블을 생성하고 일부 랜덤 숫자를 삽입해 보겠습니다:
+
+```sql
+CREATE TABLE foo.randomNumbers
+ORDER BY number AS
+SELECT rand() AS number
+FROM numbers(10_000_000);
+```
+
+어떤 데이터가 있는지 확인하기 위해 쿼리를 작성해 보겠습니다:
+
+```sql
+SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
+FROM foo.randomNumbers
+
+┌─quants────────────────────────────────┐
+│ [69,2147776478,3221525118,4252096960] │
+└───────────────────────────────────────┘
+```
+
+이 작업을 완료한 후에는 CLI에서 `exit;`를 입력하세요.
+이 디렉터리에 대한 잠금은 하나의 프로세스만 보유할 수 있기 때문입니다.
+이 작업을 수행하지 않으면 chDB에서 데이터베이스에 연결하려 할 때 다음 오류가 발생합니다:
+
+```text
+ChdbError: Code: 76. DB::Exception: Cannot lock file demo.chdb/status. Another server instance in same directory is already running. (CANNOT_OPEN_FILE)
+```
+
+## clickhouse-local 데이터베이스에 연결하기 {#connecting-to-a-clickhouse-local-database}
+
+`ipython` 셸로 돌아가서 chDB에서 `session` 모듈을 가져옵니다:
+
+```python
+from chdb import session as chs
+```
+
+`demo..chdb`를 가리키는 세션을 초기화합니다:
+
+```python
+sess = chs.Session("demo.chdb")
+```
+
+그런 다음 숫자의 분위수를 반환하는 동일한 쿼리를 실행할 수 있습니다:
+
+```python
+sess.query("""
+SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
+FROM foo.randomNumbers
+""", "Vertical")
+
+Row 1:
+──────
+quants: [0,9976599,2147776478,4209286886]
+```
+
+chDB에서 이 데이터베이스에 데이터를 삽입할 수도 있습니다:
+
+```python
+sess.query("""
+INSERT INTO foo.randomNumbers
+SELECT rand() AS number FROM numbers(10_000_000)
+""")
+
+Row 1:
+──────
+quants: [0,9976599,2147776478,4209286886]
+```
+
+그런 다음 chDB 또는 clickhouse-local에서 분위수 쿼리를 다시 실행할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/clickhouse-local.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/clickhouse-local.md.hash
new file mode 100644
index 00000000000..72ed8351d28
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/clickhouse-local.md.hash
@@ -0,0 +1 @@
+622c08a0671e11d6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/index.md
new file mode 100644
index 00000000000..fe17f00d701
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/index.md
@@ -0,0 +1,28 @@
+---
+'title': 'chDB 가이드'
+'slug': '/chdb/guides'
+'description': 'chDB 가이드의 인덱스 페이지'
+'keywords':
+- 'chdb'
+- 'guides'
+'doc_type': 'landing-page'
+---
+
+아래의 chDB 개발자 가이드를 확인해 보세요:
+
+
+
+
+| 페이지 | 설명 |
+|-----|-----|
+| [원격 ClickHouse 서버에 쿼리하는 방법](/chdb/guides/query-remote-clickhouse) | 이 가이드에서는 chDB를 사용하여 원격 ClickHouse 서버에 쿼리하는 방법을 배웁니다. |
+| [chDB로 Apache Arrow 쿼리하는 방법](/chdb/guides/apache-arrow) | 이 가이드에서는 chDB를 사용하여 Apache Arrow 테이블에 쿼리하는 방법을 배웁니다. |
+| [S3 버킷에서 데이터 쿼리하는 방법](/chdb/guides/querying-s3) | chDB를 사용하여 S3 버킷에서 데이터를 쿼리하는 방법을 배웁니다. |
+| [chDB로 Pandas DataFrame 쿼리하는 방법](/chdb/guides/pandas) | chDB를 사용하여 Pandas DataFrame에 쿼리하는 방법을 배웁니다. |
+| [Parquet 파일 쿼리하는 방법](/chdb/guides/querying-parquet) | chDB를 사용하여 Parquet 파일에 쿼리하는 방법을 배웁니다. |
+| [JupySQL과 chDB](/chdb/guides/jupysql) | Bun용 chDB 설치 방법입니다. |
+| [clickhouse-local 데이터베이스 사용하기](/chdb/guides/clickhouse-local) | chDB를 사용하여 clickhouse-local 데이터베이스를 사용하는 방법을 배웁니다. |
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/index.md.hash
new file mode 100644
index 00000000000..105b639f490
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/index.md.hash
@@ -0,0 +1 @@
+ffc7fe8c836f634c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/jupysql.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/jupysql.md
new file mode 100644
index 00000000000..ff9236ae719
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/jupysql.md
@@ -0,0 +1,411 @@
+---
+'title': 'JupySQL 및 chDB'
+'sidebar_label': 'JupySQL'
+'slug': '/chdb/guides/jupysql'
+'description': 'Bun에 대해 chDB를 설치하는 방법'
+'keywords':
+- 'chdb'
+- 'JupySQL'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import PlayersPerRank from '@site/static/images/chdb/guides/players_per_rank.png';
+
+[JupySQL](https://jupysql.ploomber.io/en/latest/quick-start.html)은 Jupyter 노트북 및 IPython 셸에서 SQL을 실행할 수 있게 해주는 Python 라이브러리입니다. 이 가이드에서는 chDB 및 JupySQL을 사용하여 데이터를 쿼리하는 방법을 배워볼 것입니다.
+
+
+
+
+
+## Setup {#setup}
+
+먼저 가상 환경을 생성해 봅시다:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+그리고 JupySQL, IPython 및 Jupyter Lab을 설치하겠습니다:
+
+```bash
+pip install jupysql ipython jupyterlab
+```
+
+JupySQL은 IPython에서 사용할 수 있으며, 다음 명령어를 실행하여 시작할 수 있습니다:
+
+```bash
+ipython
+```
+
+또는 Jupyter Lab에서 다음 명령어를 실행하여 시작할 수 있습니다:
+
+```bash
+jupyter lab
+```
+
+:::note
+Jupyter Lab을 사용하는 경우 나머지 가이드를 따르기 전에 노트북을 생성해야 합니다.
+:::
+
+## Downloading a dataset {#downloading-a-dataset}
+
+[Jeff Sackmann의 tennis_atp](https://github.com/JeffSackmann/tennis_atp) 데이터셋 중 하나를 사용할 것입니다. 이 데이터셋에는 선수와 그들의 순위에 대한 메타데이터가 포함되어 있습니다. 순위 파일부터 다운로드하겠습니다:
+
+```python
+from urllib.request import urlretrieve
+```
+
+```python
+files = ['00s', '10s', '20s', '70s', '80s', '90s', 'current']
+base = "https://raw.githubusercontent.com/JeffSackmann/tennis_atp/master"
+for file in files:
+ _ = urlretrieve(
+ f"{base}/atp_rankings_{file}.csv",
+ f"atp_rankings_{file}.csv",
+ )
+```
+
+## Configuring chDB and JupySQL {#configuring-chdb-and-jupysql}
+
+다음으로 chDB의 `dbapi` 모듈을 임포트하겠습니다:
+
+```python
+from chdb import dbapi
+```
+
+그리고 chDB 연결을 생성하겠습니다. 우리가 지속할 데이터는 `atp.chdb` 디렉토리에 저장됩니다:
+
+```python
+conn = dbapi.connect(path="atp.chdb")
+```
+
+이제 `sql` 매직을 로드하고 chDB에 대한 연결을 생성해봅시다:
+
+```python
+%load_ext sql
+%sql conn --alias chdb
+```
+
+다음으로 쿼리의 결과가 잘리도록 제한을 표시하겠습니다:
+
+```python
+%config SqlMagic.displaylimit = None
+```
+
+## Querying data in CSV files {#querying-data-in-csv-files}
+
+`atp_rankings` 접두사가 붙은 여러 파일을 다운로드했습니다. `DESCRIBE` 절을 사용하여 스키마를 이해해 보겠습니다:
+
+```python
+%%sql
+DESCRIBE file('atp_rankings*.csv')
+SETTINGS describe_compact_output=1,
+ schema_inference_make_columns_nullable=0
+```
+
+```text
++--------------+-------+
+| name | type |
++--------------+-------+
+| ranking_date | Int64 |
+| rank | Int64 |
+| player | Int64 |
+| points | Int64 |
++--------------+-------+
+```
+
+이 파일들에 대해 직접 `SELECT` 쿼리를 작성하여 데이터가 어떻게 생겼는지 확인할 수 있습니다:
+
+```python
+%sql SELECT * FROM file('atp_rankings*.csv') LIMIT 1
+```
+
+```text
++--------------+------+--------+--------+
+| ranking_date | rank | player | points |
++--------------+------+--------+--------+
+| 20000110 | 1 | 101736 | 4135 |
++--------------+------+--------+--------+
+```
+
+데이터 형식이 약간 이상합니다. 날짜를 정리하고 `REPLACE` 절을 사용하여 정리된 `ranking_date`를 반환해 보겠습니다:
+
+```python
+%%sql
+SELECT * REPLACE (
+ toDate(parseDateTime32BestEffort(toString(ranking_date))) AS ranking_date
+)
+FROM file('atp_rankings*.csv')
+LIMIT 10
+SETTINGS schema_inference_make_columns_nullable=0
+```
+
+```text
++--------------+------+--------+--------+
+| ranking_date | rank | player | points |
++--------------+------+--------+--------+
+| 2000-01-10 | 1 | 101736 | 4135 |
+| 2000-01-10 | 2 | 102338 | 2915 |
+| 2000-01-10 | 3 | 101948 | 2419 |
+| 2000-01-10 | 4 | 103017 | 2184 |
+| 2000-01-10 | 5 | 102856 | 2169 |
+| 2000-01-10 | 6 | 102358 | 2107 |
+| 2000-01-10 | 7 | 102839 | 1966 |
+| 2000-01-10 | 8 | 101774 | 1929 |
+| 2000-01-10 | 9 | 102701 | 1846 |
+| 2000-01-10 | 10 | 101990 | 1739 |
++--------------+------+--------+--------+
+```
+
+## Importing CSV files into chDB {#importing-csv-files-into-chdb}
+
+이제 이러한 CSV 파일의 데이터를 테이블에 저장할 것입니다. 기본 데이터베이스는 디스크에 데이터를 저장하지 않기 때문에, 먼저 다른 데이터베이스를 생성해야 합니다:
+
+```python
+%sql CREATE DATABASE atp
+```
+
+이제 CSV 파일의 데이터 구조에서 파생된 스키마를 가진 `rankings`라는 테이블을 생성하겠습니다:
+
+```python
+%%sql
+CREATE TABLE atp.rankings
+ENGINE=MergeTree
+ORDER BY ranking_date AS
+SELECT * REPLACE (
+ toDate(parseDateTime32BestEffort(toString(ranking_date))) AS ranking_date
+)
+FROM file('atp_rankings*.csv')
+SETTINGS schema_inference_make_columns_nullable=0
+```
+
+테이블의 데이터에 대해 간단히 확인해 봅시다:
+
+```python
+%sql SELECT * FROM atp.rankings LIMIT 10
+```
+
+```text
++--------------+------+--------+--------+
+| ranking_date | rank | player | points |
++--------------+------+--------+--------+
+| 2000-01-10 | 1 | 101736 | 4135 |
+| 2000-01-10 | 2 | 102338 | 2915 |
+| 2000-01-10 | 3 | 101948 | 2419 |
+| 2000-01-10 | 4 | 103017 | 2184 |
+| 2000-01-10 | 5 | 102856 | 2169 |
+| 2000-01-10 | 6 | 102358 | 2107 |
+| 2000-01-10 | 7 | 102839 | 1966 |
+| 2000-01-10 | 8 | 101774 | 1929 |
+| 2000-01-10 | 9 | 102701 | 1846 |
+| 2000-01-10 | 10 | 101990 | 1739 |
++--------------+------+--------+--------+
+```
+
+좋습니다 - 출력 결과는 예상한 대로 CSV 파일을 직접 쿼리할 때와 동일합니다.
+
+선수 메타데이터에 대한 동일한 프로세스를 따를 것입니다. 이번에는 데이터가 하나의 CSV 파일에 모두 포함되어 있으므로 해당 파일을 다운로드하겠습니다:
+
+```python
+_ = urlretrieve(
+ f"{base}/atp_players.csv",
+ "atp_players.csv",
+)
+```
+
+그리고 CSV 파일의 내용을 기반으로 `players`라는 테이블을 생성합니다. `dob` 필드를 정리하여 `Date32` 유형으로 만들겠습니다.
+
+> ClickHouse에서 `Date` 유형은 1970년 이후의 날짜만 지원합니다. `dob` 열에는 1970년 이전의 날짜가 포함되어 있으므로 대신 `Date32` 유형을 사용하겠습니다.
+
+```python
+%%sql
+CREATE TABLE atp.players
+Engine=MergeTree
+ORDER BY player_id AS
+SELECT * REPLACE (
+ makeDate32(
+ toInt32OrNull(substring(toString(dob), 1, 4)),
+ toInt32OrNull(substring(toString(dob), 5, 2)),
+ toInt32OrNull(substring(toString(dob), 7, 2))
+ )::Nullable(Date32) AS dob
+)
+FROM file('atp_players.csv')
+SETTINGS schema_inference_make_columns_nullable=0
+```
+
+작업이 완료되면 우리가 수집한 데이터를 살펴보겠습니다:
+
+```python
+%sql SELECT * FROM atp.players LIMIT 10
+```
+
+```text
++-----------+------------+-----------+------+------------+-----+--------+-------------+
+| player_id | name_first | name_last | hand | dob | ioc | height | wikidata_id |
++-----------+------------+-----------+------+------------+-----+--------+-------------+
+| 100001 | Gardnar | Mulloy | R | 1913-11-22 | USA | 185 | Q54544 |
+| 100002 | Pancho | Segura | R | 1921-06-20 | ECU | 168 | Q54581 |
+| 100003 | Frank | Sedgman | R | 1927-10-02 | AUS | 180 | Q962049 |
+| 100004 | Giuseppe | Merlo | R | 1927-10-11 | ITA | 0 | Q1258752 |
+| 100005 | Richard | Gonzalez | R | 1928-05-09 | USA | 188 | Q53554 |
+| 100006 | Grant | Golden | R | 1929-08-21 | USA | 175 | Q3115390 |
+| 100007 | Abe | Segal | L | 1930-10-23 | RSA | 0 | Q1258527 |
+| 100008 | Kurt | Nielsen | R | 1930-11-19 | DEN | 0 | Q552261 |
+| 100009 | Istvan | Gulyas | R | 1931-10-14 | HUN | 0 | Q51066 |
+| 100010 | Luis | Ayala | R | 1932-09-18 | CHI | 170 | Q1275397 |
++-----------+------------+-----------+------+------------+-----+--------+-------------+
+```
+
+## Querying chDB {#querying-chdb}
+
+데이터 수집이 완료되었습니다. 이제 재미있는 부분 - 데이터를 쿼리해 보겠습니다!
+
+테니스 선수들은 자신이 참가한 토너먼트에서의 성과에 따라 포인트를 받습니다. 각각의 선수는 52주 롤링 기간 동안 획득한 포인트를 기록합니다. 각 선수의 최대 포인트와 그 시점의 순위를 찾는 쿼리를 작성하겠습니다:
+
+```python
+%%sql
+SELECT name_first, name_last,
+ max(points) as maxPoints,
+ argMax(rank, points) as rank,
+ argMax(ranking_date, points) as date
+FROM atp.players
+JOIN atp.rankings ON rankings.player = players.player_id
+GROUP BY ALL
+ORDER BY maxPoints DESC
+LIMIT 10
+```
+
+```text
++------------+-----------+-----------+------+------------+
+| name_first | name_last | maxPoints | rank | date |
++------------+-----------+-----------+------+------------+
+| Novak | Djokovic | 16950 | 1 | 2016-06-06 |
+| Rafael | Nadal | 15390 | 1 | 2009-04-20 |
+| Andy | Murray | 12685 | 1 | 2016-11-21 |
+| Roger | Federer | 12315 | 1 | 2012-10-29 |
+| Daniil | Medvedev | 10780 | 2 | 2021-09-13 |
+| Carlos | Alcaraz | 9815 | 1 | 2023-08-21 |
+| Dominic | Thiem | 9125 | 3 | 2021-01-18 |
+| Jannik | Sinner | 8860 | 2 | 2024-05-06 |
+| Stefanos | Tsitsipas | 8350 | 3 | 2021-09-20 |
+| Alexander | Zverev | 8240 | 4 | 2021-08-23 |
++------------+-----------+-----------+------+------------+
+```
+
+흥미로운 점은 이 목록에 있는 일부 선수들이 총 포인트가 1위가 아님에도 불구하고 많은 포인트를 축적했다는 것입니다.
+
+## Saving queries {#saving-queries}
+
+`--save` 매개변수를 사용하여 쿼리를 저장할 수 있습니다. 이는 `%%sql` 매직과 동일한 줄에 위치해야 합니다. `--no-execute` 매개변수는 쿼리 실행이 건너뛰어진다는 것을 의미합니다.
+
+```python
+%%sql --save best_points --no-execute
+SELECT name_first, name_last,
+ max(points) as maxPoints,
+ argMax(rank, points) as rank,
+ argMax(ranking_date, points) as date
+FROM atp.players
+JOIN atp.rankings ON rankings.player = players.player_id
+GROUP BY ALL
+ORDER BY maxPoints DESC
+```
+
+저장된 쿼리를 실행하면 Common Table Expression (CTE)으로 변환된 후 실행됩니다. 다음 쿼리는 1위일 때 선수들이 얻은 최대 포인트를 계산합니다:
+
+```python
+%sql select * FROM best_points WHERE rank=1
+```
+
+```text
++-------------+-----------+-----------+------+------------+
+| name_first | name_last | maxPoints | rank | date |
++-------------+-----------+-----------+------+------------+
+| Novak | Djokovic | 16950 | 1 | 2016-06-06 |
+| Rafael | Nadal | 15390 | 1 | 2009-04-20 |
+| Andy | Murray | 12685 | 1 | 2016-11-21 |
+| Roger | Federer | 12315 | 1 | 2012-10-29 |
+| Carlos | Alcaraz | 9815 | 1 | 2023-08-21 |
+| Pete | Sampras | 5792 | 1 | 1997-08-11 |
+| Andre | Agassi | 5652 | 1 | 1995-08-21 |
+| Lleyton | Hewitt | 5205 | 1 | 2002-08-12 |
+| Gustavo | Kuerten | 4750 | 1 | 2001-09-10 |
+| Juan Carlos | Ferrero | 4570 | 1 | 2003-10-20 |
+| Stefan | Edberg | 3997 | 1 | 1991-02-25 |
+| Jim | Courier | 3973 | 1 | 1993-08-23 |
+| Ivan | Lendl | 3420 | 1 | 1990-02-26 |
+| Ilie | Nastase | 0 | 1 | 1973-08-27 |
++-------------+-----------+-----------+------+------------+
+```
+
+## Querying with parameters {#querying-with-parameters}
+
+쿼리에서 매개변수를 사용할 수도 있습니다. 매개변수는 일반 변수입니다:
+
+```python
+rank = 10
+```
+
+그러면 쿼리에서 `{{variable}}` 구문을 사용할 수 있습니다. 다음 쿼리는 선수가 Top 10에 첫 번째 순위를 기록한 날과 마지막 순위를 기록한 날 사이의 최소 일수를 찾습니다:
+
+```python
+%%sql
+SELECT name_first, name_last,
+ MIN(ranking_date) AS earliest_date,
+ MAX(ranking_date) AS most_recent_date,
+ most_recent_date - earliest_date AS days,
+ 1 + (days/7) AS weeks
+FROM atp.rankings
+JOIN atp.players ON players.player_id = rankings.player
+WHERE rank <= {{rank}}
+GROUP BY ALL
+ORDER BY days
+LIMIT 10
+```
+
+```text
++------------+-----------+---------------+------------------+------+-------+
+| name_first | name_last | earliest_date | most_recent_date | days | weeks |
++------------+-----------+---------------+------------------+------+-------+
+| Alex | Metreveli | 1974-06-03 | 1974-06-03 | 0 | 1 |
+| Mikael | Pernfors | 1986-09-22 | 1986-09-22 | 0 | 1 |
+| Felix | Mantilla | 1998-06-08 | 1998-06-08 | 0 | 1 |
+| Wojtek | Fibak | 1977-07-25 | 1977-07-25 | 0 | 1 |
+| Thierry | Tulasne | 1986-08-04 | 1986-08-04 | 0 | 1 |
+| Lucas | Pouille | 2018-03-19 | 2018-03-19 | 0 | 1 |
+| John | Alexander | 1975-12-15 | 1975-12-15 | 0 | 1 |
+| Nicolas | Massu | 2004-09-13 | 2004-09-20 | 7 | 2 |
+| Arnaud | Clement | 2001-04-02 | 2001-04-09 | 7 | 2 |
+| Ernests | Gulbis | 2014-06-09 | 2014-06-23 | 14 | 3 |
++------------+-----------+---------------+------------------+------+-------+
+```
+
+## Plotting histograms {#plotting-histograms}
+
+JupySQL은 제한된 차트 기능도 제공합니다. 박스 플롯이나 히스토그램을 생성할 수 있습니다.
+
+히스토그램을 생성할 것이지만, 먼저 각 선수가 달성한 상위 100위 내 순위를 계산하는 쿼리를 작성 (및 저장) 하겠습니다. 이를 통해 얼마나 많은 선수가 각 순위를 달성했는지 세는 히스토그램을 만들 수 있을 것입니다:
+
+```python
+%%sql --save players_per_rank --no-execute
+select distinct player, rank
+FROM atp.rankings
+WHERE rank <= 100
+```
+
+그런 다음 다음 명령어로 히스토그램을 생성할 수 있습니다:
+
+```python
+from sql.ggplot import ggplot, geom_histogram, aes
+
+plot = (
+ ggplot(
+ table="players_per_rank",
+ with_="players_per_rank",
+ mapping=aes(x="rank", fill="#69f0ae", color="#fff"),
+ ) + geom_histogram(bins=100)
+)
+```
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/jupysql.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/jupysql.md.hash
new file mode 100644
index 00000000000..59f4f3c3f26
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/jupysql.md.hash
@@ -0,0 +1 @@
+b1a7781811cdb9e9
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/query-remote-clickhouse.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/query-remote-clickhouse.md
new file mode 100644
index 00000000000..d0f7a9c944e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/query-remote-clickhouse.md
@@ -0,0 +1,191 @@
+---
+'title': '원격 ClickHouse 서버 쿼리하는 방법'
+'sidebar_label': '원격 ClickHouse 쿼리'
+'slug': '/chdb/guides/query-remote-clickhouse'
+'description': '이 가이드에서는 chDB에서 원격 ClickHouse 서버를 쿼리하는 방법을 배웁니다.'
+'keywords':
+- 'chdb'
+- 'clickhouse'
+'doc_type': 'guide'
+---
+
+In this guide, we're going to learn how to query a remote ClickHouse server from chDB.
+
+## Setup {#setup}
+
+먼저 가상 환경을 생성해 보겠습니다:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+이제 chDB를 설치할 것입니다.
+버전 2.0.2 이상인지 확인하세요:
+
+```bash
+pip install "chdb>=2.0.2"
+```
+
+이제 pandas와 ipython을 설치하겠습니다:
+
+```bash
+pip install pandas ipython
+```
+
+우리는 나머지 가이드의 명령을 실행하기 위해 `ipython`을 사용할 것이며, 다음 명령을 실행하여 시작할 수 있습니다:
+
+```bash
+ipython
+```
+
+또한 Python 스크립트나 좋아하는 노트북에서 코드를 사용할 수 있습니다.
+
+## An intro to ClickPy {#an-intro-to-clickpy}
+
+우리가 쿼리할 원격 ClickHouse 서버는 [ClickPy](https://clickpy.clickhouse.com)입니다.
+ClickPy는 PyPI 패키지의 모든 다운로드를 추적하고 사용자 인터페이스를 통해 패키지의 통계를 탐색할 수 있게 합니다.
+기본 데이터베이스는 `play` 사용자로 쿼리할 수 있습니다.
+
+ClickPy에 대해 더 알아보려면 [GitHub 리포지토리](https://github.com/ClickHouse/clickpy)를 참조하세요.
+
+## Querying the ClickPy ClickHouse service {#querying-the-clickpy-clickhouse-service}
+
+chDB를 가져옵니다:
+
+```python
+import chdb
+```
+
+우리는 ClickPy를 `remoteSecure` 함수를 사용하여 쿼리할 것입니다.
+이 함수는 최소한 호스트 이름, 테이블 이름 및 사용자 이름을 필요로 합니다.
+
+다음 쿼리를 작성하여 [`openai` 패키지](https://clickpy.clickhouse.com/dashboard/openai)의 일일 다운로드 수를 Pandas DataFrame으로 반환할 수 있습니다:
+
+```python
+query = """
+SELECT
+ toStartOfDay(date)::Date32 AS x,
+ sum(count) AS y
+FROM remoteSecure(
+ 'clickpy-clickhouse.clickhouse.com',
+ 'pypi.pypi_downloads_per_day',
+ 'play'
+)
+WHERE project = 'openai'
+GROUP BY x
+ORDER BY x ASC
+"""
+
+openai_df = chdb.query(query, "DataFrame")
+openai_df.sort_values(by=["x"], ascending=False).head(n=10)
+```
+
+```text
+ x y
+2392 2024-10-02 1793502
+2391 2024-10-01 1924901
+2390 2024-09-30 1749045
+2389 2024-09-29 1177131
+2388 2024-09-28 1157323
+2387 2024-09-27 1688094
+2386 2024-09-26 1862712
+2385 2024-09-25 2032923
+2384 2024-09-24 1901965
+2383 2024-09-23 1777554
+```
+
+이제 동일한 방법으로 [`scikit-learn`](https://clickpy.clickhouse.com/dashboard/scikit-learn)의 다운로드 수를 반환해 보겠습니다:
+
+```python
+query = """
+SELECT
+ toStartOfDay(date)::Date32 AS x,
+ sum(count) AS y
+FROM remoteSecure(
+ 'clickpy-clickhouse.clickhouse.com',
+ 'pypi.pypi_downloads_per_day',
+ 'play'
+)
+WHERE project = 'scikit-learn'
+GROUP BY x
+ORDER BY x ASC
+"""
+
+sklearn_df = chdb.query(query, "DataFrame")
+sklearn_df.sort_values(by=["x"], ascending=False).head(n=10)
+```
+
+```text
+ x y
+2392 2024-10-02 1793502
+2391 2024-10-01 1924901
+2390 2024-09-30 1749045
+2389 2024-09-29 1177131
+2388 2024-09-28 1157323
+2387 2024-09-27 1688094
+2386 2024-09-26 1862712
+2385 2024-09-25 2032923
+2384 2024-09-24 1901965
+2383 2024-09-23 1777554
+```
+
+## Merging Pandas DataFrames {#merging-pandas-dataframes}
+
+이제 날짜(`x` 컬럼)를 기준으로 두 개의 DataFrame을 병합할 수 있습니다:
+
+```python
+df = openai_df.merge(
+ sklearn_df,
+ on="x",
+ suffixes=("_openai", "_sklearn")
+)
+df.head(n=5)
+```
+
+```text
+ x y_openai y_sklearn
+0 2018-02-26 83 33971
+1 2018-02-27 31 25211
+2 2018-02-28 8 26023
+3 2018-03-01 8 20912
+4 2018-03-02 5 23842
+```
+
+그런 다음 다음과 같이 Open AI 다운로드와 `scikit-learn` 다운로드의 비율을 계산할 수 있습니다:
+
+```python
+df['ratio'] = df['y_openai'] / df['y_sklearn']
+df.head(n=5)
+```
+
+```text
+ x y_openai y_sklearn ratio
+0 2018-02-26 83 33971 0.002443
+1 2018-02-27 31 25211 0.001230
+2 2018-02-28 8 26023 0.000307
+3 2018-03-01 8 20912 0.000383
+4 2018-03-02 5 23842 0.000210
+```
+
+## Querying Pandas DataFrames {#querying-pandas-dataframes}
+
+다음으로, 가장 좋은 비율과 최악의 비율을 가진 날짜를 찾고 싶다고 가정해 보겠습니다.
+다시 chDB로 돌아가서 해당 값을 계산할 수 있습니다:
+
+```python
+chdb.query("""
+SELECT max(ratio) AS bestRatio,
+ argMax(x, ratio) AS bestDate,
+ min(ratio) AS worstRatio,
+ argMin(x, ratio) AS worstDate
+FROM Python(df)
+""", "DataFrame")
+```
+
+```text
+ bestRatio bestDate worstRatio worstDate
+0 0.693855 2024-09-19 0.000003 2020-02-09
+```
+
+Pandas DataFrames 쿼리에 대해 더 알고 싶다면, [Pandas DataFrames 개발자 가이드](querying-pandas.md)를 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/query-remote-clickhouse.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/query-remote-clickhouse.md.hash
new file mode 100644
index 00000000000..37f9cc9afb9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/query-remote-clickhouse.md.hash
@@ -0,0 +1 @@
+c63bc1c67e93d664
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-apache-arrow.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-apache-arrow.md
new file mode 100644
index 00000000000..4b8ace0e645
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-apache-arrow.md
@@ -0,0 +1,172 @@
+---
+'title': 'Apache Arrow를 chDB로 쿼리하는 방법'
+'sidebar_label': 'Apache Arrow 쿼리하기'
+'slug': '/chdb/guides/apache-arrow'
+'description': '이 가이드에서는 chDB를 사용하여 Apache Arrow 테이블을 쿼리하는 방법을 배웁니다.'
+'keywords':
+- 'chdb'
+- 'Apache Arrow'
+'doc_type': 'guide'
+---
+
+[Apache Arrow](https://arrow.apache.org/)는 데이터 커뮤니티에서 인기를 얻고 있는 표준화된 컬럼 지향 메모리 형식입니다. 이 가이드에서는 `Python` 테이블 함수를 사용하여 Apache Arrow를 쿼리하는 방법을 배웁니다.
+
+## Setup {#setup}
+
+먼저 가상 환경을 생성해 보겠습니다:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+이제 chDB를 설치하겠습니다. 2.0.2 버전 이상이 설치되어 있는지 확인하세요:
+
+```bash
+pip install "chdb>=2.0.2"
+```
+
+이제 PyArrow, pandas 및 ipython을 설치하겠습니다:
+
+```bash
+pip install pyarrow pandas ipython
+```
+
+이 가이드의 나머지 명령을 실행하기 위해 `ipython`을 사용할 예정이며, 다음을 실행하여 시작할 수 있습니다:
+
+```bash
+ipython
+```
+
+코드를 Python 스크립트나 즐겨 사용하는 노트북에서도 사용할 수 있습니다.
+
+## Creating an Apache Arrow table from a file {#creating-an-apache-arrow-table-from-a-file}
+
+먼저 [Ookla dataset](https://github.com/teamookla/ookla-open-data) 중 하나의 Parquet 파일을 다운로드합니다. [AWS CLI 도구](https://aws.amazon.com/cli/)를 사용하세요:
+
+```bash
+aws s3 cp \
+ --no-sign \
+ s3://ookla-open-data/parquet/performance/type=mobile/year=2023/quarter=2/2023-04-01_performance_mobile_tiles.parquet .
+```
+
+:::note
+더 많은 파일을 다운로드하려면 `aws s3 ls`를 사용하여 모든 파일 목록을 가져온 후 위의 명령을 업데이트하세요.
+:::
+
+다음으로 `pyarrow` 패키지에서 Parquet 모듈을 가져옵니다:
+
+```python
+import pyarrow.parquet as pq
+```
+
+그런 다음 Parquet 파일을 Apache Arrow 테이블로 읽을 수 있습니다:
+
+```python
+arrow_table = pq.read_table("./2023-04-01_performance_mobile_tiles.parquet")
+```
+
+스키마는 아래에 표시됩니다:
+
+```python
+arrow_table.schema
+```
+
+```text
+quadkey: string
+tile: string
+tile_x: double
+tile_y: double
+avg_d_kbps: int64
+avg_u_kbps: int64
+avg_lat_ms: int64
+avg_lat_down_ms: int32
+avg_lat_up_ms: int32
+tests: int64
+devices: int64
+```
+
+`shape` 속성을 호출하여 행과 열의 개수를 얻을 수 있습니다:
+
+```python
+arrow_table.shape
+```
+
+```text
+(3864546, 11)
+```
+
+## Querying Apache Arrow {#querying-apache-arrow}
+
+이제 chDB에서 Arrow 테이블을 쿼리해 보겠습니다. 먼저 chDB를 import합니다:
+
+```python
+import chdb
+```
+
+그런 다음 테이블을 설명할 수 있습니다:
+
+```python
+chdb.query("""
+DESCRIBE Python(arrow_table)
+SETTINGS describe_compact_output=1
+""", "DataFrame")
+```
+
+```text
+ name type
+0 quadkey String
+1 tile String
+2 tile_x Float64
+3 tile_y Float64
+4 avg_d_kbps Int64
+5 avg_u_kbps Int64
+6 avg_lat_ms Int64
+7 avg_lat_down_ms Int32
+8 avg_lat_up_ms Int32
+9 tests Int64
+10 devices Int64
+```
+
+행 수를 계산할 수도 있습니다:
+
+```python
+chdb.query("SELECT count() FROM Python(arrow_table)", "DataFrame")
+```
+
+```text
+ count()
+0 3864546
+```
+
+이제 좀 더 흥미로운 작업을 해보겠습니다. 다음 쿼리는 `quadkey` 및 `tile.*` 컬럼을 제외하고 나머지 컬럼에 대한 평균과 최대 값을 계산합니다:
+
+```python
+chdb.query("""
+WITH numericColumns AS (
+ SELECT * EXCEPT ('tile.*') EXCEPT(quadkey)
+ FROM Python(arrow_table)
+)
+SELECT * APPLY(max), * APPLY(avg) APPLY(x -> round(x, 2))
+FROM numericColumns
+""", "Vertical")
+```
+
+```text
+Row 1:
+──────
+max(avg_d_kbps): 4155282
+max(avg_u_kbps): 1036628
+max(avg_lat_ms): 2911
+max(avg_lat_down_ms): 2146959360
+max(avg_lat_up_ms): 2146959360
+max(tests): 111266
+max(devices): 1226
+round(avg(avg_d_kbps), 2): 84393.52
+round(avg(avg_u_kbps), 2): 15540.4
+round(avg(avg_lat_ms), 2): 41.25
+round(avg(avg_lat_down_ms), 2): 554355225.76
+round(avg(avg_lat_up_ms), 2): 552843178.3
+round(avg(tests), 2): 6.31
+round(avg(devices), 2): 2.88
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-apache-arrow.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-apache-arrow.md.hash
new file mode 100644
index 00000000000..6f20f6722fb
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-apache-arrow.md.hash
@@ -0,0 +1 @@
+371b57d604cd4014
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-pandas.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-pandas.md
new file mode 100644
index 00000000000..91f22c58e97
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-pandas.md
@@ -0,0 +1,396 @@
+---
+'title': 'chDB로 Pandas DataFrame 쿼리하기'
+'sidebar_label': 'Pandas 쿼리하기'
+'slug': '/chdb/guides/pandas'
+'description': 'chDB로 Pandas DataFrame을 쿼리하는 방법을 배우세요'
+'keywords':
+- 'chDB'
+- 'Pandas'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+[Pandas](https://pandas.pydata.org/)는 Python에서 데이터 조작 및 분석을 위한 인기 있는 라이브러리입니다. chDB 버전 2에서는 Pandas DataFrame 쿼리 성능을 개선하고 `Python` 테이블 함수를 도입했습니다. 이 가이드를 통해 `Python` 테이블 함수를 사용하여 Pandas를 쿼리하는 방법을 배우게 됩니다.
+
+## Setup {#setup}
+
+먼저 가상 환경을 생성하겠습니다:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+이제 chDB를 설치하겠습니다. 버전 2.0.2 이상이 설치되어 있는지 확인하세요:
+
+```bash
+pip install "chdb>=2.0.2"
+```
+
+그 다음 Pandas와 몇 가지 라이브러리를 설치하겠습니다:
+
+```bash
+pip install pandas requests ipython
+```
+
+이제 나머지 가이드의 명령을 실행하기 위해 `ipython`을 사용할 예정입니다. 아래 명령을 실행하여 시작할 수 있습니다:
+
+```bash
+ipython
+```
+
+또한 Python 스크립트나 좋아하는 노트북에서 코드를 사용할 수 있습니다.
+
+## Creating a Pandas DataFrame from a URL {#creating-a-pandas-dataframe-from-a-url}
+
+[StatsBomb GitHub repository](https://github.com/statsbomb/open-data/tree/master?tab=readme-ov-file)에서 데이터를 쿼리할 것입니다. 먼저 requests와 pandas를 임포트하겠습니다:
+
+```python
+import requests
+import pandas as pd
+```
+
+그 후, 경기 JSON 파일 중 하나를 DataFrame으로 로드하겠습니다:
+
+```python
+response = requests.get(
+ "https://raw.githubusercontent.com/statsbomb/open-data/master/data/matches/223/282.json"
+)
+matches_df = pd.json_normalize(response.json(), sep='_')
+```
+
+어떤 데이터를 사용할지 살펴보겠습니다:
+
+```python
+matches_df.iloc[0]
+```
+
+```text
+match_id 3943077
+match_date 2024-07-15
+kick_off 04:15:00.000
+home_score 1
+away_score 0
+match_status available
+match_status_360 unscheduled
+last_updated 2024-07-15T15:50:08.671355
+last_updated_360 None
+match_week 6
+competition_competition_id 223
+competition_country_name South America
+competition_competition_name Copa America
+season_season_id 282
+season_season_name 2024
+home_team_home_team_id 779
+home_team_home_team_name Argentina
+home_team_home_team_gender male
+home_team_home_team_group None
+home_team_country_id 11
+home_team_country_name Argentina
+home_team_managers [{'id': 5677, 'name': 'Lionel Sebastián Scalon...
+away_team_away_team_id 769
+away_team_away_team_name Colombia
+away_team_away_team_gender male
+away_team_away_team_group None
+away_team_country_id 49
+away_team_country_name Colombia
+away_team_managers [{'id': 5905, 'name': 'Néstor Gabriel Lorenzo'...
+metadata_data_version 1.1.0
+metadata_shot_fidelity_version 2
+metadata_xy_fidelity_version 2
+competition_stage_id 26
+competition_stage_name Final
+stadium_id 5337
+stadium_name Hard Rock Stadium
+stadium_country_id 241
+stadium_country_name United States of America
+referee_id 2638
+referee_name Raphael Claus
+referee_country_id 31
+referee_country_name Brazil
+Name: 0, dtype: object
+```
+
+다음으로, 이벤트 JSON 파일 중 하나를 로드하고 해당 DataFrame에 `match_id`라는 컬럼을 추가하겠습니다:
+
+```python
+response = requests.get(
+ "https://raw.githubusercontent.com/statsbomb/open-data/master/data/events/3943077.json"
+)
+events_df = pd.json_normalize(response.json(), sep='_')
+events_df["match_id"] = 3943077
+```
+
+다시 한 번 첫 번째 행을 살펴보겠습니다:
+
+```python
+with pd.option_context("display.max_rows", None):
+ first_row = events_df.iloc[0]
+ non_nan_columns = first_row[first_row.notna()].T
+ display(non_nan_columns)
+```
+
+```text
+id 279b7d66-92b5-4daa-8ff6-cba8fce271d9
+index 1
+period 1
+timestamp 00:00:00.000
+minute 0
+second 0
+possession 1
+duration 0.0
+type_id 35
+type_name Starting XI
+possession_team_id 779
+possession_team_name Argentina
+play_pattern_id 1
+play_pattern_name Regular Play
+team_id 779
+team_name Argentina
+tactics_formation 442.0
+tactics_lineup [{'player': {'id': 6909, 'name': 'Damián Emili...
+match_id 3943077
+Name: 0, dtype: object
+```
+
+## Querying Pandas DataFrames {#querying-pandas-dataframes}
+
+다음으로, chDB를 사용하여 이러한 DataFrame을 쿼리하는 방법을 살펴보겠습니다. 라이브러리를 임포트하겠습니다:
+
+```python
+import chdb
+```
+
+Pandas DataFrame을 `Python` 테이블 함수를 사용하여 쿼리할 수 있습니다:
+
+```sql
+SELECT *
+FROM Python()
+```
+
+따라서 `matches_df`의 컬럼 목록을 나열하고 싶다면 다음과 같이 작성할 수 있습니다:
+
+```python
+chdb.query("""
+DESCRIBE Python(matches_df)
+SETTINGS describe_compact_output=1
+""", "DataFrame")
+```
+
+```text
+ name type
+0 match_id Int64
+1 match_date String
+2 kick_off String
+3 home_score Int64
+4 away_score Int64
+5 match_status String
+6 match_status_360 String
+7 last_updated String
+8 last_updated_360 String
+9 match_week Int64
+10 competition_competition_id Int64
+11 competition_country_name String
+12 competition_competition_name String
+13 season_season_id Int64
+14 season_season_name String
+15 home_team_home_team_id Int64
+16 home_team_home_team_name String
+17 home_team_home_team_gender String
+18 home_team_home_team_group String
+19 home_team_country_id Int64
+20 home_team_country_name String
+21 home_team_managers String
+22 away_team_away_team_id Int64
+23 away_team_away_team_name String
+24 away_team_away_team_gender String
+25 away_team_away_team_group String
+26 away_team_country_id Int64
+27 away_team_country_name String
+28 away_team_managers String
+29 metadata_data_version String
+30 metadata_shot_fidelity_version String
+31 metadata_xy_fidelity_version String
+32 competition_stage_id Int64
+33 competition_stage_name String
+34 stadium_id Int64
+35 stadium_name String
+36 stadium_country_id Int64
+37 stadium_country_name String
+38 referee_id Int64
+39 referee_name String
+40 referee_country_id Int64
+41 referee_country_name String
+```
+
+그런 다음, 한 경기 이상 주심을 맡은 심판을 찾는 쿼리를 작성할 수 있습니다:
+
+```python
+chdb.query("""
+SELECT referee_name, count() AS count
+FROM Python(matches_df)
+GROUP BY ALL
+HAVING count > 1
+ORDER BY count DESC
+""", "DataFrame")
+```
+
+```text
+ referee_name count
+0 César Arturo Ramos Palazuelos 3
+1 Maurizio Mariani 3
+2 Piero Maza Gomez 3
+3 Mario Alberto Escobar Toca 2
+4 Wilmar Alexander Roldán Pérez 2
+5 Jesús Valenzuela Sáez 2
+6 Wilton Pereira Sampaio 2
+7 Darío Herrera 2
+8 Andrés Matonte 2
+9 Raphael Claus 2
+```
+
+이제 `events_df`를 탐색해 보겠습니다.
+
+```python
+chdb.query("""
+SELECT pass_recipient_name, count()
+FROM Python(events_df)
+WHERE type_name = 'Pass' AND pass_recipient_name <> ''
+GROUP BY ALL
+ORDER BY count() DESC
+LIMIT 10
+""", "DataFrame")
+```
+
+```text
+ pass_recipient_name count()
+0 Davinson Sánchez Mina 76
+1 Ángel Fabián Di María Hernández 64
+2 Alexis Mac Allister 62
+3 Enzo Fernandez 57
+4 James David Rodríguez Rubio 56
+5 Johan Andrés Mojica Palacio 55
+6 Rodrigo Javier De Paul 54
+7 Jefferson Andrés Lerma Solís 53
+8 Jhon Adolfo Arias Andrade 52
+9 Carlos Eccehomo Cuesta Figueroa 50
+```
+
+## Joining Pandas DataFrames {#joining-pandas-dataframes}
+
+쿼리에서 DataFrame을 함께 조인할 수도 있습니다. 예를 들어, 경기 개요를 얻기 위해 다음 쿼리를 작성할 수 있습니다:
+
+```python
+chdb.query("""
+SELECT home_team_home_team_name, away_team_away_team_name, home_score, away_score,
+ countIf(type_name = 'Pass' AND possession_team_id=home_team_home_team_id) AS home_passes,
+ countIf(type_name = 'Pass' AND possession_team_id=away_team_away_team_id) AS away_passes,
+ countIf(type_name = 'Shot' AND possession_team_id=home_team_home_team_id) AS home_shots,
+ countIf(type_name = 'Shot' AND possession_team_id=away_team_away_team_id) AS away_shots
+FROM Python(matches_df) AS matches
+JOIN Python(events_df) AS events ON events.match_id = matches.match_id
+GROUP BY ALL
+LIMIT 5
+""", "DataFrame").iloc[0]
+```
+
+```text
+home_team_home_team_name Argentina
+away_team_away_team_name Colombia
+home_score 1
+away_score 0
+home_passes 527
+away_passes 669
+home_shots 11
+away_shots 19
+Name: 0, dtype: object
+```
+
+## Populating a table from a DataFrame {#populating-a-table-from-a-dataframe}
+
+DataFrame에서 ClickHouse 테이블을 생성하고 채울 수도 있습니다. chDB에서 테이블을 생성하려면 Stateful Session API를 사용해야 합니다.
+
+세션 모듈을 임포트하겠습니다:
+
+```python
+from chdb import session as chs
+```
+
+세션을 초기화합니다:
+
+```python
+sess = chs.Session()
+```
+
+다음으로, 데이터베이스를 생성하겠습니다:
+
+```python
+sess.query("CREATE DATABASE statsbomb")
+```
+
+그런 다음, `events_df`를 기반으로 `events` 테이블을 생성합니다:
+
+```python
+sess.query("""
+CREATE TABLE statsbomb.events ORDER BY id AS
+SELECT *
+FROM Python(events_df)
+""")
+```
+
+그 후, 최상위 패스 수신자를 반환하는 쿼리를 실행할 수 있습니다:
+
+```python
+sess.query("""
+SELECT pass_recipient_name, count()
+FROM statsbomb.events
+WHERE type_name = 'Pass' AND pass_recipient_name <> ''
+GROUP BY ALL
+ORDER BY count() DESC
+LIMIT 10
+""", "DataFrame")
+```
+
+```text
+ pass_recipient_name count()
+0 Davinson Sánchez Mina 76
+1 Ángel Fabián Di María Hernández 64
+2 Alexis Mac Allister 62
+3 Enzo Fernandez 57
+4 James David Rodríguez Rubio 56
+5 Johan Andrés Mojica Palacio 55
+6 Rodrigo Javier De Paul 54
+7 Jefferson Andrés Lerma Solís 53
+8 Jhon Adolfo Arias Andrade 52
+9 Carlos Eccehomo Cuesta Figueroa 50
+```
+
+## Joining a Pandas DataFrame and table {#joining-a-pandas-dataframe-and-table}
+
+마지막으로, `matches_df` DataFrame을 `statsbomb.events` 테이블과 조인하는 쿼리를 업데이트할 수 있습니다:
+
+```python
+sess.query("""
+SELECT home_team_home_team_name, away_team_away_team_name, home_score, away_score,
+ countIf(type_name = 'Pass' AND possession_team_id=home_team_home_team_id) AS home_passes,
+ countIf(type_name = 'Pass' AND possession_team_id=away_team_away_team_id) AS away_passes,
+ countIf(type_name = 'Shot' AND possession_team_id=home_team_home_team_id) AS home_shots,
+ countIf(type_name = 'Shot' AND possession_team_id=away_team_away_team_id) AS away_shots
+FROM Python(matches_df) AS matches
+JOIN statsbomb.events AS events ON events.match_id = matches.match_id
+GROUP BY ALL
+LIMIT 5
+""", "DataFrame").iloc[0]
+```
+
+```text
+home_team_home_team_name Argentina
+away_team_away_team_name Colombia
+home_score 1
+away_score 0
+home_passes 527
+away_passes 669
+home_shots 11
+away_shots 19
+Name: 0, dtype: object
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-pandas.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-pandas.md.hash
new file mode 100644
index 00000000000..1449879ae97
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-pandas.md.hash
@@ -0,0 +1 @@
+5b126d990139b54f
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-parquet.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-parquet.md
new file mode 100644
index 00000000000..cc74be81e9c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-parquet.md
@@ -0,0 +1,360 @@
+---
+'title': 'Parquet 파일 쿼리하는 방법'
+'sidebar_label': 'Parquet 파일 쿼리하기'
+'slug': '/chdb/guides/querying-parquet'
+'description': 'chDB로 Parquet 파일을 쿼리하는 방법을 배워보세요.'
+'keywords':
+- 'chdb'
+- 'parquet'
+'doc_type': 'guide'
+---
+
+A lot of the world's data lives in Amazon S3 buckets.
+In this guide, we'll learn how to query that data using chDB.
+
+## Setup {#setup}
+
+Let's first create a virtual environment:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+And now we'll install chDB.
+Make sure you have version 2.0.2 or higher:
+
+```bash
+pip install "chdb>=2.0.2"
+```
+
+And now we're going to install IPython:
+
+```bash
+pip install ipython
+```
+
+We're going to use `ipython` to run the commands in the rest of the guide, which you can launch by running:
+
+```bash
+ipython
+```
+
+You can also use the code in a Python script or in your favorite notebook.
+
+## Exploring Parquet metadata {#exploring-parquet-metadata}
+
+We're going to explore a Parquet file from the [Amazon reviews](/getting-started/example-datasets/amazon-reviews) dataset.
+But first, let's install `chDB`:
+
+```python
+import chdb
+```
+
+When querying Parquet files, we can use the [`ParquetMetadata`](/interfaces/formats/ParquetMetadata) input format to have it return Parquet metadata rather than the content of the file.
+Let's use the `DESCRIBE` clause to see the fields returned when we use this format:
+
+```python
+query = """
+DESCRIBE s3(
+ 'https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2015.snappy.parquet',
+ ParquetMetadata
+)
+SETTINGS describe_compact_output=1
+"""
+
+chdb.query(query, 'TabSeparated')
+```
+
+```text
+num_columns UInt64
+num_rows UInt64
+num_row_groups UInt64
+format_version String
+metadata_size UInt64
+total_uncompressed_size UInt64
+total_compressed_size UInt64
+columns Array(Tuple(name String, path String, max_definition_level UInt64, max_repetition_level UInt64, physical_type String, logical_type String, compression String, total_uncompressed_size UInt64, total_compressed_size UInt64, space_saved String, encodings Array(String)))
+row_groups Array(Tuple(num_columns UInt64, num_rows UInt64, total_uncompressed_size UInt64, total_compressed_size UInt64, columns Array(Tuple(name String, path String, total_compressed_size UInt64, total_uncompressed_size UInt64, have_statistics Bool, statistics Tuple(num_values Nullable(UInt64), null_count Nullable(UInt64), distinct_count Nullable(UInt64), min Nullable(String), max Nullable(String))))))
+```
+
+Let's have now have a look at the metadata for this file.
+`columns` and `row_groups` both contain arrays of tuples containing many properties, so we'll exclude those for now.
+
+```python
+query = """
+SELECT * EXCEPT(columns, row_groups)
+FROM s3(
+ 'https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2015.snappy.parquet',
+ ParquetMetadata
+)
+"""
+
+chdb.query(query, 'Vertical')
+```
+
+```text
+Row 1:
+──────
+num_columns: 15
+num_rows: 41905631
+num_row_groups: 42
+format_version: 2.6
+metadata_size: 79730
+total_uncompressed_size: 14615827169
+total_compressed_size: 9272262304
+```
+
+From this output, we learn that this Parquet file has over 40 million rows, split across 42 row groups, with 15 columns of data per row.
+A row group is a logical horizontal partitioning of the data into rows.
+Each row group has associated metadata and querying tools can make use of that metadata to efficiently query the file.
+
+Let's take a look at one of the row groups:
+
+```python
+query = """
+WITH rowGroups AS (
+ SELECT rg
+ FROM s3(
+ 'https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2015.snappy.parquet',
+ ParquetMetadata
+ )
+ ARRAY JOIN row_groups AS rg
+ LIMIT 1
+)
+SELECT tupleElement(c, 'name') AS name, tupleElement(c, 'total_compressed_size') AS total_compressed_size,
+ tupleElement(c, 'total_uncompressed_size') AS total_uncompressed_size,
+ tupleElement(tupleElement(c, 'statistics'), 'min') AS min,
+ tupleElement(tupleElement(c, 'statistics'), 'max') AS max
+FROM rowGroups
+ARRAY JOIN tupleElement(rg, 'columns') AS c
+"""
+
+chdb.query(query, 'DataFrame')
+```
+
+```text
+ name total_compressed_size total_uncompressed_size min max
+0 review_date 493 646 16455 16472
+1 marketplace 66 64 US US
+2 customer_id 5207967 7997207 10049 53096413
+3 review_id 14748425 17991290 R10004U8OQDOGE RZZZUTBAV1RYI
+4 product_id 8003456 13969668 0000032050 BT00DDVMVQ
+5 product_parent 5758251 7974737 645 999999730
+6 product_title 41068525 63355320 ! Small S 1pc Black 1pc Navy (Blue) Replacemen... 🌴 Vacation On The Beach
+7 product_category 1726 1815 Apparel Pet Products
+8 star_rating 369036 374046 1 5
+9 helpful_votes 538940 1022990 0 3440
+10 total_votes 610902 1080520 0 3619
+11 vine 11426 125999 0 1
+12 verified_purchase 102634 125999 0 1
+13 review_headline 16538189 27634740 🤹🏽♂️🎤Great product. Practice makes perfect. D...
+14 review_body 145886383 232457911 🚅 +🐧=💥 😀
+```
+
+## Querying Parquet files {#querying-parquet-files}
+
+Next, let's query the contents of the file.
+We can do this by adjusting the above query to remove `ParquetMetadata` and then, say, compute the most popular `star_rating` across all reviews:
+
+```python
+query = """
+SELECT star_rating, count() AS count, formatReadableQuantity(count)
+FROM s3(
+ 'https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2015.snappy.parquet'
+)
+GROUP BY ALL
+ORDER BY star_rating
+"""
+
+chdb.query(query, 'DataFrame')
+```
+
+```text
+ star_rating count formatReadableQuantity(count())
+0 1 3253070 3.25 million
+1 2 1865322 1.87 million
+2 3 3130345 3.13 million
+3 4 6578230 6.58 million
+4 5 27078664 27.08 million
+```
+
+Interestingly, there are more 5 star reviews than all the other ratings combined!
+It looks like people like the products on Amazon or, if they don't, they just don't submit a rating.
+
+---
+
+아래는 번역된 내용입니다.
+
+많은 세계의 데이터가 Amazon S3 버킷에 저장되어 있습니다.
+이 가이드에서는 chDB를 사용하여 해당 데이터를 쿼리하는 방법을 배우겠습니다.
+
+## 설정 {#setup}
+
+먼저 가상 환경을 만들겠습니다:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+이제 chDB를 설치하겠습니다.
+버전 2.0.2 이상인지 확인하세요:
+
+```bash
+pip install "chdb>=2.0.2"
+```
+
+이제 IPython을 설치하겠습니다:
+
+```bash
+pip install ipython
+```
+
+이 가이드의 나머지 명령을 실행하기 위해 `ipython`을 사용할 것이며, 다음과 같이 실행할 수 있습니다:
+
+```bash
+ipython
+```
+
+Python 스크립트나 좋아하는 노트북에서 코드를 사용할 수도 있습니다.
+
+## Parquet 메타데이터 탐색 {#exploring-parquet-metadata}
+
+[Amazon 리뷰](/getting-started/example-datasets/amazon-reviews) 데이터 세트에서 Parquet 파일을 탐색할 것입니다.
+하지만 먼저 `chDB`를 설치합시다:
+
+```python
+import chdb
+```
+
+Parquet 파일을 쿼리할 때는 [`ParquetMetadata`](/interfaces/formats/ParquetMetadata) 입력 형식을 사용하여 파일의 내용이 아닌 Parquet 메타데이터를 반환하게 할 수 있습니다.
+이 형식을 사용할 때 반환되는 필드를 보려면 `DESCRIBE` 절을 사용해 보겠습니다:
+
+```python
+query = """
+DESCRIBE s3(
+ 'https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2015.snappy.parquet',
+ ParquetMetadata
+)
+SETTINGS describe_compact_output=1
+"""
+
+chdb.query(query, 'TabSeparated')
+```
+
+```text
+num_columns UInt64
+num_rows UInt64
+num_row_groups UInt64
+format_version String
+metadata_size UInt64
+total_uncompressed_size UInt64
+total_compressed_size UInt64
+columns Array(Tuple(name String, path String, max_definition_level UInt64, max_repetition_level UInt64, physical_type String, logical_type String, compression String, total_uncompressed_size UInt64, total_compressed_size UInt64, space_saved String, encodings Array(String)))
+row_groups Array(Tuple(num_columns UInt64, num_rows UInt64, total_uncompressed_size UInt64, total_compressed_size UInt64, columns Array(Tuple(name String, path String, total_compressed_size UInt64, total_uncompressed_size UInt64, have_statistics Bool, statistics Tuple(num_values Nullable(UInt64), null_count Nullable(UInt64), distinct_count Nullable(UInt64), min Nullable(String), max Nullable(String))))))
+```
+
+이제 이 파일의 메타데이터를 살펴보겠습니다.
+`columns`와 `row_groups`는 둘 다 많은 속성을 포함하는 튜플의 배열을 포함하고 있으므로, 지금은 이를 제외하겠습니다.
+
+```python
+query = """
+SELECT * EXCEPT(columns, row_groups)
+FROM s3(
+ 'https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2015.snappy.parquet',
+ ParquetMetadata
+)
+"""
+
+chdb.query(query, 'Vertical')
+```
+
+```text
+Row 1:
+──────
+num_columns: 15
+num_rows: 41905631
+num_row_groups: 42
+format_version: 2.6
+metadata_size: 79730
+total_uncompressed_size: 14615827169
+total_compressed_size: 9272262304
+```
+
+이 출력으로부터, 이 Parquet 파일은 4천만 개 이상의 행을 가지고 있으며, 42개의 행 그룹에 나누어져 있고, 행당 15개의 데이터 컬럼이 있습니다.
+행 그룹은 데이터를 행으로 논리적으로 수평 분할하는 것입니다.
+각 행 그룹은 관련 메타데이터를 가지고 있으며, 쿼리 도구는 해당 메타데이터를 사용하여 파일을 효율적으로 쿼리할 수 있습니다.
+
+행 그룹 중 하나를 살펴보겠습니다:
+
+```python
+query = """
+WITH rowGroups AS (
+ SELECT rg
+ FROM s3(
+ 'https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2015.snappy.parquet',
+ ParquetMetadata
+ )
+ ARRAY JOIN row_groups AS rg
+ LIMIT 1
+)
+SELECT tupleElement(c, 'name') AS name, tupleElement(c, 'total_compressed_size') AS total_compressed_size,
+ tupleElement(c, 'total_uncompressed_size') AS total_uncompressed_size,
+ tupleElement(tupleElement(c, 'statistics'), 'min') AS min,
+ tupleElement(tupleElement(c, 'statistics'), 'max') AS max
+FROM rowGroups
+ARRAY JOIN tupleElement(rg, 'columns') AS c
+"""
+
+chdb.query(query, 'DataFrame')
+```
+
+```text
+ name total_compressed_size total_uncompressed_size min max
+0 review_date 493 646 16455 16472
+1 marketplace 66 64 US US
+2 customer_id 5207967 7997207 10049 53096413
+3 review_id 14748425 17991290 R10004U8OQDOGE RZZZUTBAV1RYI
+4 product_id 8003456 13969668 0000032050 BT00DDVMVQ
+5 product_parent 5758251 7974737 645 999999730
+6 product_title 41068525 63355320 ! Small S 1pc Black 1pc Navy (Blue) Replacemen... 🌴 Vacation On The Beach
+7 product_category 1726 1815 Apparel Pet Products
+8 star_rating 369036 374046 1 5
+9 helpful_votes 538940 1022990 0 3440
+10 total_votes 610902 1080520 0 3619
+11 vine 11426 125999 0 1
+12 verified_purchase 102634 125999 0 1
+13 review_headline 16538189 27634740 🤹🏽♂️🎤Great product. Practice makes perfect. D...
+14 review_body 145886383 232457911 🚅 +🐧=💥 😀
+```
+
+## Parquet 파일 쿼리하기 {#querying-parquet-files}
+
+다음으로, 파일의 내용을 쿼리해 보겠습니다.
+위 쿼리에서 `ParquetMetadata`를 제거하고, 모든 리뷰에 대해 가장 인기 있는 `star_rating`를 계산해 보겠습니다:
+
+```python
+query = """
+SELECT star_rating, count() AS count, formatReadableQuantity(count)
+FROM s3(
+ 'https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_2015.snappy.parquet'
+)
+GROUP BY ALL
+ORDER BY star_rating
+"""
+
+chdb.query(query, 'DataFrame')
+```
+
+```text
+ star_rating count formatReadableQuantity(count())
+0 1 3253070 3.25 million
+1 2 1865322 1.87 million
+2 3 3130345 3.13 million
+3 4 6578230 6.58 million
+4 5 27078664 27.08 million
+```
+
+흥미롭게도, 5성 리뷰가 모든 다른 평점을 합친 것보다 더 많습니다!
+사람들이 Amazon의 제품을 좋아하는 것 같거나, 그렇지 않다면 평점을 제출하지 않는 것 같습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-parquet.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-parquet.md.hash
new file mode 100644
index 00000000000..e3d700213db
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-parquet.md.hash
@@ -0,0 +1 @@
+53d1d5a8e309aeda
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-s3-bucket.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-s3-bucket.md
new file mode 100644
index 00000000000..191e56dfaa5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-s3-bucket.md
@@ -0,0 +1,200 @@
+---
+'title': 'S3 버킷에서 데이터를 쿼리하는 방법'
+'sidebar_label': 'S3에서 데이터 쿼리하기'
+'slug': '/chdb/guides/querying-s3'
+'description': 'chDB를 사용하여 S3 버킷에서 데이터를 쿼리하는 방법을 배워보세요.'
+'keywords':
+- 'chdb'
+- 's3'
+'doc_type': 'guide'
+---
+
+A lot of the world's data lives in Amazon S3 buckets.
+In this guide, we'll learn how to query that data using chDB.
+
+## Setup {#setup}
+
+Let's first create a virtual environment:
+
+```bash
+python -m venv .venv
+source .venv/bin/activate
+```
+
+And now we'll install chDB.
+Make sure you have version 2.0.2 or higher:
+
+```bash
+pip install "chdb>=2.0.2"
+```
+
+And now we're going to install IPython:
+
+```bash
+pip install ipython
+```
+
+We're going to use `ipython` to run the commands in the rest of the guide, which you can launch by running:
+
+```bash
+ipython
+```
+
+You can also use the code in a Python script or in your favorite notebook.
+
+## Listing files in an S3 bucket {#listing-files-in-an-s3-bucket}
+
+Let's start by listing all the files in [Amazon 리뷰가 포함된 S3 버킷](/getting-started/example-datasets/amazon-reviews).
+To do this, we can use the [`s3` 테이블 함수](/sql-reference/table-functions/s3) and pass in the path to a file or a wildcard to a set of files.
+
+:::tip
+If you pass just the bucket name it will throw an exception.
+:::
+
+We're also going to use the [`One`](/interfaces/formats/One) 입력 형식 so that the file isn't parsed, instead a single row is returned per file and we can access the file via the `_file` 가상 컬럼 and the path via the `_path` 가상 컬럼.
+
+```python
+import chdb
+
+chdb.query("""
+SELECT
+ _file,
+ _path
+FROM s3('s3://datasets-documentation/amazon_reviews/*.parquet', One)
+SETTINGS output_format_pretty_row_numbers=0
+""", 'PrettyCompact')
+```
+
+```text
+┌─_file───────────────────────────────┬─_path─────────────────────────────────────────────────────────────────────┐
+│ amazon_reviews_2010.snappy.parquet │ datasets-documentation/amazon_reviews/amazon_reviews_2010.snappy.parquet │
+│ amazon_reviews_1990s.snappy.parquet │ datasets-documentation/amazon_reviews/amazon_reviews_1990s.snappy.parquet │
+│ amazon_reviews_2013.snappy.parquet │ datasets-documentation/amazon_reviews/amazon_reviews_2013.snappy.parquet │
+│ amazon_reviews_2015.snappy.parquet │ datasets-documentation/amazon_reviews/amazon_reviews_2015.snappy.parquet │
+│ amazon_reviews_2014.snappy.parquet │ datasets-documentation/amazon_reviews/amazon_reviews_2014.snappy.parquet │
+│ amazon_reviews_2012.snappy.parquet │ datasets-documentation/amazon_reviews/amazon_reviews_2012.snappy.parquet │
+│ amazon_reviews_2000s.snappy.parquet │ datasets-documentation/amazon_reviews/amazon_reviews_2000s.snappy.parquet │
+│ amazon_reviews_2011.snappy.parquet │ datasets-documentation/amazon_reviews/amazon_reviews_2011.snappy.parquet │
+└─────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────┘
+```
+
+This bucket contains only Parquet files.
+
+## Querying files in an S3 bucket {#querying-files-in-an-s3-bucket}
+
+Next, let's learn how to query those files.
+If we want to count the number of rows in each of those files, we can run the following 쿼리:
+
+```python
+chdb.query("""
+SELECT
+ _file,
+ count() AS count,
+ formatReadableQuantity(count) AS readableCount
+FROM s3('s3://datasets-documentation/amazon_reviews/*.parquet')
+GROUP BY ALL
+SETTINGS output_format_pretty_row_numbers=0
+""", 'PrettyCompact')
+```
+
+```text
+┌─_file───────────────────────────────┬────count─┬─readableCount───┐
+│ amazon_reviews_2013.snappy.parquet │ 28034255 │ 28.03 million │
+│ amazon_reviews_1990s.snappy.parquet │ 639532 │ 639.53 thousand │
+│ amazon_reviews_2011.snappy.parquet │ 6112495 │ 6.11 million │
+│ amazon_reviews_2015.snappy.parquet │ 41905631 │ 41.91 million │
+│ amazon_reviews_2012.snappy.parquet │ 11541011 │ 11.54 million │
+│ amazon_reviews_2000s.snappy.parquet │ 14728295 │ 14.73 million │
+│ amazon_reviews_2014.snappy.parquet │ 44127569 │ 44.13 million │
+│ amazon_reviews_2010.snappy.parquet │ 3868472 │ 3.87 million │
+└─────────────────────────────────────┴──────────┴─────────────────┘
+```
+
+We can also pass in the HTTP URI for an S3 bucket and will get the same results:
+
+```python
+chdb.query("""
+SELECT
+ _file,
+ count() AS count,
+ formatReadableQuantity(count) AS readableCount
+FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/*.parquet')
+GROUP BY ALL
+SETTINGS output_format_pretty_row_numbers=0
+""", 'PrettyCompact')
+```
+
+Let's have a look at the schema of these Parquet files using the `DESCRIBE` 절:
+
+```python
+chdb.query("""
+DESCRIBE s3('s3://datasets-documentation/amazon_reviews/*.parquet')
+SETTINGS describe_compact_output=1
+""", 'PrettyCompact')
+```
+
+```text
+ ┌─name──────────────┬─type─────────────┐
+ 1. │ review_date │ Nullable(UInt16) │
+ 2. │ marketplace │ Nullable(String) │
+ 3. │ customer_id │ Nullable(UInt64) │
+ 4. │ review_id │ Nullable(String) │
+ 5. │ product_id │ Nullable(String) │
+ 6. │ product_parent │ Nullable(UInt64) │
+ 7. │ product_title │ Nullable(String) │
+ 8. │ product_category │ Nullable(String) │
+ 9. │ star_rating │ Nullable(UInt8) │
+10. │ helpful_votes │ Nullable(UInt32) │
+11. │ total_votes │ Nullable(UInt32) │
+12. │ vine │ Nullable(Bool) │
+13. │ verified_purchase │ Nullable(Bool) │
+14. │ review_headline │ Nullable(String) │
+15. │ review_body │ Nullable(String) │
+ └───────────────────┴──────────────────┘
+```
+
+Let's now compute the top product categories based on number of reviews, as well as computing the average star rating:
+
+```python
+chdb.query("""
+SELECT product_category, count() AS reviews, round(avg(star_rating), 2) as avg
+FROM s3('s3://datasets-documentation/amazon_reviews/*.parquet')
+GROUP BY ALL
+LIMIT 10
+""", 'PrettyCompact')
+```
+
+```text
+ ┌─product_category─┬──reviews─┬──avg─┐
+ 1. │ Toys │ 4864056 │ 4.21 │
+ 2. │ Apparel │ 5906085 │ 4.11 │
+ 3. │ Luggage │ 348644 │ 4.22 │
+ 4. │ Kitchen │ 4880297 │ 4.21 │
+ 5. │ Books │ 19530930 │ 4.34 │
+ 6. │ Outdoors │ 2302327 │ 4.24 │
+ 7. │ Video │ 380596 │ 4.19 │
+ 8. │ Grocery │ 2402365 │ 4.31 │
+ 9. │ Shoes │ 4366757 │ 4.24 │
+10. │ Jewelry │ 1767667 │ 4.14 │
+ └──────────────────┴──────────┴──────┘
+```
+
+## Querying files in a private S3 bucket {#querying-files-in-a-private-s3-bucket}
+
+If we're querying files in a private S3 bucket, we need to pass in an access key and secret.
+We can pass in those credentials to the `s3` 테이블 함수:
+
+```python
+chdb.query("""
+SELECT product_category, count() AS reviews, round(avg(star_rating), 2) as avg
+FROM s3('s3://datasets-documentation/amazon_reviews/*.parquet', 'access-key', 'secret')
+GROUP BY ALL
+LIMIT 10
+""", 'PrettyCompact')
+```
+
+:::note
+This query won't work because it's a public bucket!
+:::
+
+An alternative way is to used [이름이 지정된 컬렉션](/operations/named-collections), but this approach isn't yet supported by chDB.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-s3-bucket.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-s3-bucket.md.hash
new file mode 100644
index 00000000000..3e1c9d1d377
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/guides/querying-s3-bucket.md.hash
@@ -0,0 +1 @@
+4a8602abea740623
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/index.md
new file mode 100644
index 00000000000..bfc74385eb2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/index.md
@@ -0,0 +1,83 @@
+---
+'title': 'chDB'
+'sidebar_label': '개요'
+'slug': '/chdb'
+'description': 'chDB는 ClickHouse로 구동되는 프로세스 내 SQL OLAP 엔진입니다.'
+'keywords':
+- 'chdb'
+- 'embedded'
+- 'clickhouse-lite'
+- 'in-process'
+- 'in process'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import dfBench from '@site/static/images/chdb/df_bench.png';
+
+
+
+# chDB
+
+chDB는 [ClickHouse](https://github.com/clickhouse/clickhouse)에서 제공하는 빠른 인프로세스 SQL OLAP 엔진입니다. ClickHouse 서버에 연결할 필요 없이 프로그래밍 언어에서 ClickHouse의 기능을 활용할 수 있습니다.
+
+## Key features {#key-features}
+
+- **인프로세스 SQL OLAP 엔진** - ClickHouse에서 제공하며, ClickHouse 서버를 설치할 필요 없음
+- **다양한 데이터 형식** - Parquet, CSV, JSON, Arrow, ORC 등의 입력 및 출력을 지원하며 [70개 이상의 형식](/interfaces/formats) 지원
+- **데이터 복사 최소화** - C++에서 Python으로 [python memoryview](https://docs.python.org/3/c-api/memoryview.html)를 통해
+- **풍부한 Python 생태계 통합** - Pandas, Arrow, DB API 2.0에 대한 기본 지원, 기존 데이터 과학 워크플로우에 매끄럽게 적합
+- **제로 의존성** - 외부 데이터베이스 설치가 필요 없음
+
+## What languages are supported by chDB? {#what-languages-are-supported-by-chdb}
+
+chDB는 다음 언어 바인딩을 지원합니다:
+
+* [Python](install/python.md) - [API Reference](api/python.md)
+* [Go](install/go.md)
+* [Rust](install/rust.md)
+* [NodeJS](install/nodejs.md)
+* [Bun](install/bun.md)
+* [C and C++](install/c.md)
+
+## How do I get started? {#how-do-i-get-started}
+
+* [Go](install/go.md), [Rust](install/rust.md), [NodeJS](install/nodejs.md), [Bun](install/bun.md) 또는 [C and C++](install/c.md)를 사용하는 경우 해당 언어 페이지를 참조하십시오.
+* Python을 사용하는 경우 [시작하기 개발자 가이드](getting-started.md) 또는 [chDB 주문형 과정](https://learn.clickhouse.com/user_catalog_class/show/1901178)을 참조하십시오. 다음과 같은 일반 작업을 수행하는 방법을 보여주는 가이드도 있습니다:
+ * [JupySQL](guides/jupysql.md)
+ * [Pandas 쿼리하기](guides/querying-pandas.md)
+ * [Apache Arrow 쿼리하기](guides/querying-apache-arrow.md)
+ * [S3에서 데이터 쿼리하기](guides/querying-s3-bucket.md)
+ * [Parquet 파일 쿼리하기](guides/querying-parquet.md)
+ * [원격 ClickHouse 쿼리하기](guides/query-remote-clickhouse.md)
+ * [clickhouse-local 데이터베이스 사용하기](guides/clickhouse-local.md)
+
+## An introductory video {#an-introductory-video}
+
+ClickHouse의 원래 제작자 Alexey Milovidov의 설명으로 chDB 프로젝트에 대한 간략한 소개를 들을 수 있습니다:
+
+
+
+
+
+## Performance benchmarks {#performance-benchmarks}
+
+chDB는 다양한 시나리오에서 뛰어난 성능을 제공합니다:
+
+- **[내장 엔진의 ClickBench](https://benchmark.clickhouse.com/#eyJzeXN0ZW0iOnsiQXRoZW5hIChwYXJ0aXRpb25lZCkiOnRydWUsIkF0aGVuYSAoc2luZ2xlKSI6dHJ1ZSwiQXVyb3JhIGZvciBNeVNRTCI6dHJ1ZSwiQXVyb3JhIGZvciBQb3N0Z3JlU1FMIjp0cnVlLCJCeXRlSG91c2UiOnRydWUsImNoREIiOnRydWUsIkNpdHVzIjp0cnVlLCJjbGlja2hvdXNlLWxvY2FsIChwYXJ0aXRpb25lZCkiOnRydWUsImNsaWNraG91c2UtbG9jYWwgKHNpbmdsZSkiOnRydWUsIkNsaWNrSG91c2UiOnRydWUsIkNsaWNrSG91c2UgKHR1bmVkKSI6dHJ1ZSwiQ2xpY2tIb3VzZSAoenN0ZCkiOnRydWUsIkNsaWNrSG91c2UgQ2xvdWQiOnRydWUsIkNsaWNrSG91c2UgKHdlYikiOnRydWUsIkNyYXRlREIiOnRydWUsIkRhdGFiZW5kIjp0cnVlLCJEYXRhRnVzaW9uIChzaW5nbGUpIjp0cnVlLCJBcGFjaGUgRG9yaXMiOnRydWUsIkRydWlkIjp0cnVlLCJEdWNrREIgKFBhcnF1ZXQpIjp0cnVlLCJEdWNrREIiOnRydWUsIkVsYXN0aWNzZWFyY2giOnRydWUsIkVsYXN0aWNzZWFyY2ggKHR1bmVkKSI6ZmFsc2UsIkdyZWVucGx1bSI6dHJ1ZSwiSGVhdnlBSSI6dHJ1ZSwiSHlkcmEiOnRydWUsIkluZm9icmlnaHQiOnRydWUsIktpbmV0aWNhIjp0cnVlLCJNYXJpYURCIENvbHVtblN0b3JlIjp0cnVlLCJNYXJpYURCIjpmYWxzZSwiTW9uZXREQiI6dHJ1ZSwiTW9uZ29EQiI6dHJ1ZSwiTXlTUUwgKE15SVNBTSkiOnRydWUsIk15U1FMIjp0cnVlLCJQaW5vdCI6dHJ1ZSwiUG9zdGdyZVNRTCI6dHJ1ZSwiUG9zdGdyZVNRTCAodHVuZWQpIjpmYWxzZSwiUXVlc3REQiAocGFydGl0aW9uZWQpIjp0cnVlLCJRdWVzdERCIjp0cnVlLCJSZWRzaGlmdCI6dHJ1ZSwiU2VsZWN0REIiOnRydWUsIlNpbmdsZVN0b3JlIjp0cnVlLCJTbm93Zmxha2UiOnRydWUsIlNRTGl0ZSI6dHJ1ZSwiU3RhclJvY2tzIjp0cnVlLCJUaW1lc2NhbGVEQiAoY29tcHJlc3Npb24pIjp0cnVlLCJUaW1lc2NhbGVEQiI6dHJ1ZX0sInR5cGUiOnsic3RhdGVsZXNzIjpmYWxzZSwibWFuYWdlZCI6ZmFsc2UsIkphdmEiOmZhbHNlLCJjb2x1bW4tb3JpZW50ZWQiOmZhbHNlLCJDKysiOmZhbHNlLCJNeVNRTCBjb21wYXRpYmxlIjpmYWxzZSwicm93LW9yaWVudGVkIjpmYWxzZSwiQyI6ZmFsc2UsIlBvc3RncmVTUUwgY29tcGF0aWJsZSI6ZmFsc2UsIkNsaWNrSG91c2UgZGVyaXZhdGl2ZSI6ZmFsc2UsImVtYmVkZGVkIjp0cnVlLCJzZXJ2ZXJsZXNzIjpmYWxzZSwiUnVzdCI6ZmFsc2UsInNlYXJjaCI6ZmFsc2UsImRvY3VtZW50IjpmYWxzZSwidGltZS1zZXJpZXMiOmZhbHNlfSwibWFjaGluZSI6eyJzZXJ2ZXJsZXNzIjp0cnVlLCIxNmFjdSI6dHJ1ZSwiTCI6dHJ1ZSwiTSI6dHJ1ZSwiUyI6dHJ1ZSwiWFMiOnRydWUsImM2YS5tZXRhbCwgNTAwZ2IgZ3AyIjp0cnVlLCJjNmEuNHhsYXJnZSwgNTAwZ2IgZ3AyIjp0cnVlLCJjNS40eGxhcmdlLCA1MDBnYiBncDIiOnRydWUsIjE2IHRocmVhZHMiOnRydWUsIjIwIHRocmVhZHMiOnRydWUsIjI0IHRocmVhZHMiOnRydWUsIjI4IHRocmVhZHMiOnRydWUsIjMwIHRocmVhZHMiOnRydWUsIjQ4IHRocmVhZHMiOnRydWUsIjYwIHRocmVhZHMiOnRydWUsIm01ZC4yNHhsYXJnZSI6dHJ1ZSwiYzVuLjR4bGFyZ2UsIDIwMGdiIGdwMiI6dHJ1ZSwiYzZhLjR4bGFyZ2UsIDE1MDBnYiBncDIiOnRydWUsImRjMi44eGxhcmdlIjp0cnVlLCJyYTMuMTZ4bGFyZ2UiOnRydWUsInJhMy40eGxhcmdlIjp0cnVlLCJyYTMueGxwbHVzIjp0cnVlLCJTMjQiOnRydWUsIlMyIjp0cnVlLCIyWEwiOnRydWUsIjNYTCI6dHJ1ZSwiNFhMIjp0cnVlLCJYTCI6dHJ1ZX0sImNsdXN0ZXJfc2l6ZSI6eyIxIjp0cnVlLCIyIjp0cnVlLCI0Ijp0cnVlLCI4Ijp0cnVlLCIxNiI6dHJ1ZSwiMzIiOnRydWUsIjY0Ijp0cnVlLCIxMjgiOnRydWUsInNlcnZlcmxlc3MiOnRydWUsInVuZGVmaW5lZCI6dHJ1ZX0sIm1ldHJpYyI6ImhvdCIsInF1ZXJpZXMiOlt0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlXX0=)** - 포괄적인 성능 비교
+- **[데이터프레임 처리 성능](https://colab.research.google.com/drive/1FogLujJ_-ds7RGurDrUnK-U0IW8a8Qd0)** - 다른 데이터프레임 라이브러리와의 비교 분석
+- **[DataFrame 벤치마크](https://benchmark.clickhouse.com/#eyJzeXN0ZW0iOnsiQWxsb3lEQiI6dHJ1ZSwiQWxsb3lEQiAodHVuZWQpIjp0cnVlLCJBdGhlbmEgKHBhcnRpdGlvbmVkKSI6dHJ1ZSwiQXRoZW5hIChzaW5nbGUpIjp0cnVlLCJBdXJvcmEgZm9yIE15U1FMIjp0cnVlLCJBdXJvcmEgZm9yIFBvc3RncmVTUUwiOnRydWUsIkJ5Q29uaXR5Ijp0cnVlLCJCeXRlSG91c2UiOnRydWUsImNoREIgKERhdGFGcmFtZSkiOnRydWUsImNoREIgKFBhcnF1ZXQsIHBhcnRpdGlvbmVkKSI6dHJ1ZSwiY2hEQiI6dHJ1ZSwiQ2l0dXMiOnRydWUsIkNsaWNrSG91c2UgQ2xvdWQgKGF3cykiOnRydWUsIkNsaWNrSG91c2UgQ2xvdWQgKGF6dXJlKSI6dHJ1ZSwiQ2xpY2tIb3VzZSBDbG91ZCAoZ2NwKSI6dHJ1ZSwiQ2xpY2tIb3VzZSAoZGF0YSBsYWtlLCBwYXJ0aXRpb25lZCkiOnRydWUsIkNsaWNrSG91c2UgKGRhdGEgbGFrZSwgc2luZ2xlKSI6dHJ1ZSwiQ2xpY2tIb3VzZSAoUGFycXVldCwgcGFydGl0aW9uZWQpIjp0cnVlLCJDbGlja0hvdXNlIChQYXJxdWV0LCBzaW5nbGUpIjp0cnVlLCJDbGlja0hvdXNlICh3ZWIpIjp0cnVlLCJDbGlja0hvdXNlIjp0cnVlLCJDbGlja0hvdXNlICh0dW5lZCkiOnRydWUsIkNsaWNrSG91c2UgKHR1bmVkLCBtZW1vcnkpIjp0cnVlLCJDbG91ZGJlcnJ5Ijp0cnVlLCJDcmF0ZURCIjp0cnVlLCJDcnVuY2h5IEJyaWRnZSBmb3IgQW5hbHl0aWNzIChQYXJxdWV0KSI6dHJ1ZSwiRGF0YWJlbmQiOnRydWUsIkRhdGFGdXNpb24gKFBhcnF1ZXQsIHBhcnRpdGlvbmVkKSI6dHJ1ZSwiRGF0YUZ1c2lvbiAoUGFycXVldCwgc2luZ2xlKSI6dHJ1ZSwiQXBhY2hlIERvcmlzIjp0cnVlLCJEcnVpZCI6dHJ1ZSwiRHVja0RCIChEYXRhRnJhbWUpIjp0cnVlLCJEdWNrREIgKFBhcnF1ZXQsIHBhcnRpdGlvbmVkKSI6dHJ1ZSwiRHVja0RCIjp0cnVlLCJFbGFzdGljc2VhcmNoIjp0cnVlLCJFbGFzdGljc2VhcmNoICh0dW5lZCkiOmZhbHNlLCJHbGFyZURCIjp0cnVlLCJHcmVlbnBsdW0iOnRydWUsIkhlYXZ5QUkiOnRydWUsIkh5ZHJhIjp0cnVlLCJJbmZvYnJpZ2h0Ijp0cnVlLCJLaW5ldGljYSI6dHJ1ZSwiTWFyaWFEQiBDb2x1bW5TdG9yZSI6dHJ1ZSwiTWFyaWFEQiI6ZmFsc2UsIk1vbmV0REIiOnRydWUsIk1vbmdvREIiOnRydWUsIk1vdGhlcmR1Y2siOnRydWUsIk15U1FMIChNeUlTQU0pIjp0cnVlLCJNeVNRTCI6dHJ1ZSwiT3hsYSI6dHJ1ZSwiUGFuZGFzIChEYXRhRnJhbWUpIjp0cnVlLCJQYXJhZGVEQiAoUGFycXVldCwgcGFydGl0aW9uZWQpIjp0cnVlLCJQYXJhZGVEQiAoUGFycXVldCwgc2luZ2xlKSI6dHJ1ZSwiUGlub3QiOnRydWUsIlBvbGFycyAoRGF0YUZyYW1lKSI6dHJ1ZSwiUG9zdGdyZVNRTCAodHVuZWQpIjpmYWxzZSwiUG9zdGdyZVNRTCI6dHJ1ZSwiUXVlc3REQiAocGFydGl0aW9uZWQpIjp0cnVlLCJRdWVzdERCIjp0cnVlLCJSZWRzaGlmdCI6dHJ1ZSwiU2luZ2xlU3RvcmUiOnRydWUsIlNub3dmbGFrZSI6dHJ1ZSwiU1FMaXRlIjp0cnVlLCJTdGFyUm9ja3MiOnRydWUsIlRhYmxlc3BhY2UiOnRydWUsIlRlbWJvIE9MQVAgKGNvbHVtbmFyKSI6dHJ1ZSwiVGltZXNjYWxlREIgKGNvbXByZXNzaW9uKSI6dHJ1ZSwiVGltZXNjYWxlREIiOnRydWUsIlVtYnJhIjp0cnVlfSwidHlwZSI6eyJDIjpmYWxzZSwiY29sdW1uLW9yaWVudGVkIjpmYWxzZSwiUG9zdGdyZVNRTCBjb21wYXRpYmxlIjpmYWxzZSwibWFuYWdlZCI6ZmFsc2UsImdjcCI6ZmFsc2UsInN0YXRlbGVzcyI6ZmFsc2UsIkphdmEiOmZhbHNlLCJDKysiOmZhbHNlLCJNeVNRTCBjb21wYXRpYmxlIjpmYWxzZSwicm93LW9yaWVudGVkIjpmYWxzZSwiQ2xpY2tIb3VzZSBkZXJpdmF0aXZlIjpmYWxzZSwiZW1iZWRkZWQiOmZhbHNlLCJzZXJ2ZXJsZXNzIjpmYWxzZSwiZGF0YWZyYW1lIjp0cnVlLCJhd3MiOmZhbHNlLCJhenVyZSI6ZmFsc2UsImFuYWx5dGljYWwiOmZhbHNlLCJSdXN0IjpmYWxzZSwic2VhcmNoIjpmYWxzZSwiZG9jdW1lbnQiOmZhbHNlLCJzb21ld2hhdCBQb3N0Z3JlU1FMIGNvbXBhdGlibGUiOmZhbHNlLCJ0aW1lLXNlcmllcyI6ZmFsc2V9LCJtYWNoaW5lIjp7IjE2IHZDUFUgMTI4R0IiOnRydWUsIjggdkNQVSA2NEdCIjp0cnVlLCJzZXJ2ZXJsZXNzIjp0cnVlLCIxNmFjdSI6dHJ1ZSwiYzZhLjR4bGFyZ2UsIDUwMGdiIGdwMiI6dHJ1ZSwiTCI6dHJ1ZSwiTSI6dHJ1ZSwiUyI6dHJ1ZSwiWFMiOnRydWUsImM2YS5tZXRhbCwgNTAwZ2IgZ3AyIjp0cnVlLCIxOTJHQiI6dHJ1ZSwiMjRHQiI6dHJ1ZSwiMzYwR0IiOnRydWUsIjQ4R0IiOnRydWUsIjcyMEdCIjp0cnVlLCI5NkdCIjp0cnVlLCJkZXYiOnRydWUsIjcwOEdCIjp0cnVlLCJjNW4uNHhsYXJnZSwgNTAwZ2IgZ3AyIjp0cnVlLCJBbmFseXRpY3MtMjU2R0IgKDY0IHZDb3JlcywgMjU2IEdCKSI6dHJ1ZSwiYzUuNHhsYXJnZSwgNTAwZ2IgZ3AyIjp0cnVlLCJjNmEuNHhsYXJnZSwgMTUwMGdiIGdwMiI6dHJ1ZSwiY2xvdWQiOnRydWUsImRjMi44eGxhcmdlIjp0cnVlLCJyYTMuMTZ4bGFyZ2UiOnRydWUsInJhMy40eGxhcmdlIjp0cnVlLCJyYTMueGxwbHVzIjp0cnVlLCJTMiI6dHJ1ZSwiUzI0Ijp0cnVlLCIyWEwiOnRydWUsIjNYTCI6dHJ1ZSwiNFhMIjp0cnVlLCJYTCI6dHJ1ZSwiTDEgLSAxNkNQVSAzMkdCIjp0cnVlLCJjNmEuNHhsYXJnZSwgNTAwZ2IgZ3AzIjp0cnVlfSwiY2x1c3Rlcl9zaXplIjp7IjEiOnRydWUsIjIiOnRydWUsIjQiOnRydWUsIjgiOnRydWUsIjE2Ijp0cnVlLCIzMiI6dHJ1ZSwiNjQiOnRydWUsIjEyOCI6dHJ1ZSwic2VydmVybGVzcyI6dHJ1ZX0sIm1ldHJpYyI6ImhvdCIsInF1ZXJpZXMiOlt0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlXX0=)**
+
+
+
+## About chDB {#about-chdb}
+
+- [블로그](https://clickhouse.com/blog/chdb-embedded-clickhouse-rocket-engine-on-a-bicycle)에서 chDB 프로젝트의 출생 이야기를 읽어보세요.
+- [블로그](https://clickhouse.com/blog/welcome-chdb-to-clickhouse)에서 chDB와 그 사용 사례에 대해 알아보세요.
+- [chDB 주문형 과정](https://learn.clickhouse.com/user_catalog_class/show/1901178)을 수강하세요.
+- [codapi 예제](https://antonz.org/trying-chdb/)를 사용하여 브라우저에서 chDB를 발견하세요.
+- 더 많은 예제는 (https://github.com/chdb-io/chdb/tree/main/examples)에서 확인하세요.
+
+## License {#license}
+
+chDB는 Apache License, Version 2.0에 따라 제공됩니다. 자세한 내용은 [LICENSE](https://github.com/chdb-io/chdb/blob/main/LICENSE.txt)를 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/index.md.hash
new file mode 100644
index 00000000000..1b14879e101
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/index.md.hash
@@ -0,0 +1 @@
+1b23a7330fc61f1e
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/bun.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/bun.md
new file mode 100644
index 00000000000..5462fc956b2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/bun.md
@@ -0,0 +1,134 @@
+---
+'title': 'chDB for Bun'
+'sidebar_label': 'Bun'
+'slug': '/chdb/install/bun'
+'description': 'Bun 런타임과 함께 chDB를 설치하고 사용하는 방법'
+'keywords':
+- 'chdb'
+- 'bun'
+- 'javascript'
+- 'typescript'
+- 'embedded'
+- 'clickhouse'
+- 'sql'
+- 'olap'
+'doc_type': 'guide'
+---
+
+
+# chDB for Bun
+
+chDB-bun은 chDB에 대한 실험적인 FFI (Foreign Function Interface) 바인딩을 제공하여 ClickHouse 쿼리를 Bun 애플리케이션에서 외부 의존성 없이 직접 실행할 수 있게 해줍니다.
+
+## Installation {#installation}
+
+### Step 1: 시스템 의존성 설치 {#install-system-dependencies}
+
+먼저, 필요한 시스템 의존성을 설치합니다:
+
+#### libchdb 설치 {#install-libchdb}
+
+```bash
+curl -sL https://lib.chdb.io | bash
+```
+
+#### 빌드 도구 설치 {#install-build-tools}
+
+시스템에 `gcc` 또는 `clang`가 설치되어 있어야 합니다:
+
+### Step 2: chDB-bun 설치 {#install-chdb-bun}
+
+```bash
+
+# Install from the GitHub repository
+bun add github:chdb-io/chdb-bun
+
+
+# Or clone and build locally
+git clone https://github.com/chdb-io/chdb-bun.git
+cd chdb-bun
+bun install
+bun run build
+```
+
+## Usage {#usage}
+
+chDB-bun은 두 가지 쿼리 모드를 지원합니다: 일회성 작업을 위한 일시적인 쿼리와 데이터베이스 상태를 유지하기 위한 지속적인 세션.
+
+### 일시적인 쿼리 {#ephemeral-queries}
+
+지속적인 상태가 필요 없는 간단한 일회성 쿼리를 위한 것입니다:
+
+```typescript
+import { query } from 'chdb-bun';
+
+// Basic query
+const result = query("SELECT version()", "CSV");
+console.log(result); // "23.10.1.1"
+
+// Query with different output formats
+const jsonResult = query("SELECT 1 as id, 'Hello' as message", "JSON");
+console.log(jsonResult);
+
+// Query with calculations
+const mathResult = query("SELECT 2 + 2 as sum, pi() as pi_value", "Pretty");
+console.log(mathResult);
+
+// Query system information
+const systemInfo = query("SELECT * FROM system.functions LIMIT 5", "CSV");
+console.log(systemInfo);
+```
+
+### 지속적인 세션 {#persistent-sessions}
+
+쿼리 간에 상태를 유지해야 하는 복잡한 작업을 위한 것입니다:
+
+```typescript
+import { Session } from 'chdb-bun';
+
+// Create a session with persistent storage
+const sess = new Session('./chdb-bun-tmp');
+
+try {
+ // Create a database and table
+ sess.query(`
+ CREATE DATABASE IF NOT EXISTS mydb;
+ CREATE TABLE IF NOT EXISTS mydb.users (
+ id UInt32,
+ name String,
+ email String
+ ) ENGINE = MergeTree() ORDER BY id
+ `, "CSV");
+
+ // Insert data
+ sess.query(`
+ INSERT INTO mydb.users VALUES
+ (1, 'Alice', 'alice@example.com'),
+ (2, 'Bob', 'bob@example.com'),
+ (3, 'Charlie', 'charlie@example.com')
+ `, "CSV");
+
+ // Query the data
+ const users = sess.query("SELECT * FROM mydb.users ORDER BY id", "JSON");
+ console.log("Users:", users);
+
+ // Create and use custom functions
+ sess.query("CREATE FUNCTION IF NOT EXISTS hello AS () -> 'Hello chDB'", "CSV");
+ const greeting = sess.query("SELECT hello() as message", "Pretty");
+ console.log(greeting);
+
+ // Aggregate queries
+ const stats = sess.query(`
+ SELECT
+ COUNT(*) as total_users,
+ MAX(id) as max_id,
+ MIN(id) as min_id
+ FROM mydb.users
+ `, "JSON");
+ console.log("Statistics:", stats);
+
+} finally {
+ // Always cleanup the session to free resources
+ sess.cleanup(); // This deletes the database files
+}
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/bun.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/bun.md.hash
new file mode 100644
index 00000000000..10a66b6464d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/bun.md.hash
@@ -0,0 +1 @@
+dc8ea61c3f6531fd
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/c.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/c.md
new file mode 100644
index 00000000000..e0854de1939
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/c.md
@@ -0,0 +1,342 @@
+---
+'title': 'chDB for C and C++'
+'sidebar_label': 'C and C++'
+'slug': '/chdb/install/c'
+'description': 'C 및 C++와 함께 chDB를 설치하고 사용하는 방법'
+'keywords':
+- 'chdb'
+- 'c'
+- 'cpp'
+- 'embedded'
+- 'clickhouse'
+- 'sql'
+- 'olap'
+- 'api'
+'doc_type': 'guide'
+---
+
+
+# chDB for C and C++
+
+chDB는 ClickHouse 기능을 애플리케이션에 직접 포함할 수 있는 네이티브 C/C++ API를 제공합니다. 이 API는 간단한 쿼리와 지속적인 연결, 스트리밍 쿼리 결과와 같은 고급 기능을 모두 지원합니다.
+
+## Installation {#installation}
+
+### Step 1: Install libchdb {#install-libchdb}
+
+시스템에 chDB 라이브러리를 설치합니다:
+
+```bash
+curl -sL https://lib.chdb.io | bash
+```
+
+### Step 2: Include headers {#include-headers}
+
+프로젝트에 chDB 헤더를 포함합니다:
+
+```c
+#include
+```
+
+### Step 3: Link library {#link-library}
+
+애플리케이션을 chDB와 함께 컴파일하고 링크합니다:
+
+```bash
+
+# C compilation
+gcc -o myapp myapp.c -lchdb
+
+
+# C++ compilation
+g++ -o myapp myapp.cpp -lchdb
+```
+
+## C Examples {#c-examples}
+
+### Basic connection and queries {#basic-connection-queries}
+
+```c
+#include
+#include
+
+int main() {
+ // Create connection arguments
+ char* args[] = {"chdb", "--path", "/tmp/chdb-data"};
+ int argc = 3;
+
+ // Connect to chDB
+ chdb_connection* conn = chdb_connect(argc, args);
+ if (!conn) {
+ printf("Failed to connect to chDB\n");
+ return 1;
+ }
+
+ // Execute a query
+ chdb_result* result = chdb_query(*conn, "SELECT version()", "CSV");
+ if (!result) {
+ printf("Query execution failed\n");
+ chdb_close_conn(conn);
+ return 1;
+ }
+
+ // Check for errors
+ const char* error = chdb_result_error(result);
+ if (error) {
+ printf("Query error: %s\n", error);
+ } else {
+ // Get result data
+ char* data = chdb_result_buffer(result);
+ size_t length = chdb_result_length(result);
+ double elapsed = chdb_result_elapsed(result);
+ uint64_t rows = chdb_result_rows_read(result);
+
+ printf("Result: %.*s\n", (int)length, data);
+ printf("Elapsed: %.3f seconds\n", elapsed);
+ printf("Rows: %llu\n", rows);
+ }
+
+ // Cleanup
+ chdb_destroy_query_result(result);
+ chdb_close_conn(conn);
+ return 0;
+}
+```
+
+### Streaming queries {#streaming-queries}
+
+```c
+#include
+#include
+
+int main() {
+ char* args[] = {"chdb", "--path", "/tmp/chdb-stream"};
+ chdb_connection* conn = chdb_connect(3, args);
+
+ if (!conn) {
+ printf("Failed to connect\n");
+ return 1;
+ }
+
+ // Start streaming query
+ chdb_result* stream_result = chdb_stream_query(*conn,
+ "SELECT number FROM system.numbers LIMIT 1000000", "CSV");
+
+ if (!stream_result) {
+ printf("Failed to start streaming query\n");
+ chdb_close_conn(conn);
+ return 1;
+ }
+
+ uint64_t total_rows = 0;
+
+ // Process chunks
+ while (true) {
+ chdb_result* chunk = chdb_stream_fetch_result(*conn, stream_result);
+ if (!chunk) break;
+
+ // Check if we have data in this chunk
+ size_t chunk_length = chdb_result_length(chunk);
+ if (chunk_length == 0) {
+ chdb_destroy_query_result(chunk);
+ break; // End of stream
+ }
+
+ uint64_t chunk_rows = chdb_result_rows_read(chunk);
+ total_rows += chunk_rows;
+
+ printf("Processed chunk: %llu rows, %zu bytes\n", chunk_rows, chunk_length);
+
+ // Process the chunk data here
+ // char* data = chdb_result_buffer(chunk);
+
+ chdb_destroy_query_result(chunk);
+
+ // Progress reporting
+ if (total_rows % 100000 == 0) {
+ printf("Progress: %llu rows processed\n", total_rows);
+ }
+ }
+
+ printf("Streaming complete. Total rows: %llu\n", total_rows);
+
+ // Cleanup streaming query
+ chdb_destroy_query_result(stream_result);
+ chdb_close_conn(conn);
+ return 0;
+}
+```
+
+### Working with different data formats {#data-formats}
+
+```c
+#include
+#include
+
+int main() {
+ char* args[] = {"chdb"};
+ chdb_connection* conn = chdb_connect(1, args);
+
+ const char* query = "SELECT number, toString(number) as str FROM system.numbers LIMIT 3";
+
+ // CSV format
+ chdb_result* csv_result = chdb_query(*conn, query, "CSV");
+ printf("CSV Result:\n%.*s\n\n",
+ (int)chdb_result_length(csv_result),
+ chdb_result_buffer(csv_result));
+ chdb_destroy_query_result(csv_result);
+
+ // JSON format
+ chdb_result* json_result = chdb_query(*conn, query, "JSON");
+ printf("JSON Result:\n%.*s\n\n",
+ (int)chdb_result_length(json_result),
+ chdb_result_buffer(json_result));
+ chdb_destroy_query_result(json_result);
+
+ // Pretty format
+ chdb_result* pretty_result = chdb_query(*conn, query, "Pretty");
+ printf("Pretty Result:\n%.*s\n\n",
+ (int)chdb_result_length(pretty_result),
+ chdb_result_buffer(pretty_result));
+ chdb_destroy_query_result(pretty_result);
+
+ chdb_close_conn(conn);
+ return 0;
+}
+```
+
+## C++ example {#cpp-example}
+
+```cpp
+#include
+#include
+#include
+#include
+
+class ChDBConnection {
+private:
+ chdb_connection* conn;
+
+public:
+ ChDBConnection(const std::vector& args) {
+ // Convert string vector to char* array
+ std::vector argv;
+ for (const auto& arg : args) {
+ argv.push_back(const_cast(arg.c_str()));
+ }
+
+ conn = chdb_connect(argv.size(), argv.data());
+ if (!conn) {
+ throw std::runtime_error("Failed to connect to chDB");
+ }
+ }
+
+ ~ChDBConnection() {
+ if (conn) {
+ chdb_close_conn(conn);
+ }
+ }
+
+ std::string query(const std::string& sql, const std::string& format = "CSV") {
+ chdb_result* result = chdb_query(*conn, sql.c_str(), format.c_str());
+ if (!result) {
+ throw std::runtime_error("Query execution failed");
+ }
+
+ const char* error = chdb_result_error(result);
+ if (error) {
+ std::string error_msg(error);
+ chdb_destroy_query_result(result);
+ throw std::runtime_error("Query error: " + error_msg);
+ }
+
+ std::string data(chdb_result_buffer(result), chdb_result_length(result));
+
+ // Get query statistics
+ std::cout << "Query statistics:\n";
+ std::cout << " Elapsed: " << chdb_result_elapsed(result) << " seconds\n";
+ std::cout << " Rows read: " << chdb_result_rows_read(result) << "\n";
+ std::cout << " Bytes read: " << chdb_result_bytes_read(result) << "\n";
+
+ chdb_destroy_query_result(result);
+ return data;
+ }
+};
+
+int main() {
+ try {
+ // Create connection
+ ChDBConnection db({{"chdb", "--path", "/tmp/chdb-cpp"}});
+
+ // Create and populate table
+ db.query("CREATE TABLE test (id UInt32, value String) ENGINE = MergeTree() ORDER BY id");
+ db.query("INSERT INTO test VALUES (1, 'hello'), (2, 'world'), (3, 'chdb')");
+
+ // Query with different formats
+ std::cout << "CSV Results:\n" << db.query("SELECT * FROM test", "CSV") << "\n";
+ std::cout << "JSON Results:\n" << db.query("SELECT * FROM test", "JSON") << "\n";
+
+ // Aggregation query
+ std::cout << "Count: " << db.query("SELECT COUNT(*) FROM test") << "\n";
+
+ } catch (const std::exception& e) {
+ std::cerr << "Error: " << e.what() << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
+```
+
+## Error handling best practices {#error-handling}
+
+```c
+#include
+#include
+
+int safe_query_example() {
+ chdb_connection* conn = NULL;
+ chdb_result* result = NULL;
+ int return_code = 0;
+
+ // Create connection
+ char* args[] = {"chdb"};
+ conn = chdb_connect(1, args);
+ if (!conn) {
+ printf("Failed to create connection\n");
+ return 1;
+ }
+
+ // Execute query
+ result = chdb_query(*conn, "SELECT invalid_syntax", "CSV");
+ if (!result) {
+ printf("Query execution failed\n");
+ return_code = 1;
+ goto cleanup;
+ }
+
+ // Check for query errors
+ const char* error = chdb_result_error(result);
+ if (error) {
+ printf("Query error: %s\n", error);
+ return_code = 1;
+ goto cleanup;
+ }
+
+ // Process successful result
+ printf("Result: %.*s\n",
+ (int)chdb_result_length(result),
+ chdb_result_buffer(result));
+
+cleanup:
+ if (result) chdb_destroy_query_result(result);
+ if (conn) chdb_close_conn(conn);
+ return return_code;
+}
+```
+
+## GitHub repository {#github-repository}
+
+- **Main Repository**: [chdb-io/chdb](https://github.com/chdb-io/chdb)
+- **Issues and Support**: [GitHub repository](https://github.com/chdb-io/chdb/issues)에서 문제를 보고하세요
+- **C API Documentation**: [Bindings Documentation](https://github.com/chdb-io/chdb/blob/main/bindings.md)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/c.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/c.md.hash
new file mode 100644
index 00000000000..24388c065ce
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/c.md.hash
@@ -0,0 +1 @@
+410ac9448a262702
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/go.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/go.md
new file mode 100644
index 00000000000..387869d9033
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/go.md
@@ -0,0 +1,259 @@
+---
+'title': 'chDB for Go'
+'sidebar_label': 'Go'
+'slug': '/chdb/install/go'
+'description': 'Go로 chDB를 설치하고 사용하는 방법'
+'keywords':
+- 'chdb'
+- 'go'
+- 'golang'
+- 'embedded'
+- 'clickhouse'
+- 'sql'
+- 'olap'
+'doc_type': 'guide'
+---
+
+
+# chDB for Go
+
+chDB-go는 chDB에 대한 Go 바인딩을 제공하여 Go 애플리케이션에서 ClickHouse 쿼리를 외부 종속성 없이 직접 실행할 수 있게 해줍니다.
+
+## Installation {#installation}
+
+### Step 1: Install libchdb {#install-libchdb}
+
+먼저, chDB 라이브러리를 설치하십시오:
+
+```bash
+curl -sL https://lib.chdb.io | bash
+```
+
+### Step 2: Install chdb-go {#install-chdb-go}
+
+Go 패키지를 설치하십시오:
+
+```bash
+go install github.com/chdb-io/chdb-go@latest
+```
+
+또는 `go.mod`에 추가하십시오:
+
+```bash
+go get github.com/chdb-io/chdb-go
+```
+
+## Usage {#usage}
+
+### Command line interface {#cli}
+
+chDB-go는 빠른 쿼리를 위한 CLI를 포함하고 있습니다:
+
+```bash
+
+# Simple query
+./chdb-go "SELECT 123"
+
+
+# Interactive mode
+./chdb-go
+
+
+# Interactive mode with persistent storage
+./chdb-go --path /tmp/chdb
+```
+
+### Go Library - quick start {#quick-start}
+
+#### Stateless queries {#stateless-queries}
+
+간단한 일회성 쿼리를 위한:
+
+```go
+package main
+
+import (
+ "fmt"
+ "github.com/chdb-io/chdb-go"
+)
+
+func main() {
+ // Execute a simple query
+ result, err := chdb.Query("SELECT version()", "CSV")
+ if err != nil {
+ panic(err)
+ }
+ fmt.Println(result)
+}
+```
+
+#### Stateful queries with session {#stateful-queries}
+
+상태를 지속하는 복잡한 쿼리를 위한:
+
+```go
+package main
+
+import (
+ "fmt"
+ "github.com/chdb-io/chdb-go"
+)
+
+func main() {
+ // Create a session with persistent storage
+ session, err := chdb.NewSession("/tmp/chdb-data")
+ if err != nil {
+ panic(err)
+ }
+ defer session.Cleanup()
+
+ // Create database and table
+ _, err = session.Query(`
+ CREATE DATABASE IF NOT EXISTS testdb;
+ CREATE TABLE IF NOT EXISTS testdb.test_table (
+ id UInt32,
+ name String
+ ) ENGINE = MergeTree() ORDER BY id
+ `, "")
+
+ if err != nil {
+ panic(err)
+ }
+
+ // Insert data
+ _, err = session.Query(`
+ INSERT INTO testdb.test_table VALUES
+ (1, 'Alice'), (2, 'Bob'), (3, 'Charlie')
+ `, "")
+
+ if err != nil {
+ panic(err)
+ }
+
+ // Query data
+ result, err := session.Query("SELECT * FROM testdb.test_table ORDER BY id", "Pretty")
+ if err != nil {
+ panic(err)
+ }
+
+ fmt.Println(result)
+}
+```
+
+#### SQL driver interface {#sql-driver}
+
+chDB-go는 Go의 `database/sql` 인터페이스를 구현합니다:
+
+```go
+package main
+
+import (
+ "database/sql"
+ "fmt"
+ _ "github.com/chdb-io/chdb-go/driver"
+)
+
+func main() {
+ // Open database connection
+ db, err := sql.Open("chdb", "")
+ if err != nil {
+ panic(err)
+ }
+ defer db.Close()
+
+ // Query with standard database/sql interface
+ rows, err := db.Query("SELECT COUNT(*) FROM url('https://datasets.clickhouse.com/hits/hits.parquet')")
+ if err != nil {
+ panic(err)
+ }
+ defer rows.Close()
+
+ for rows.Next() {
+ var count int
+ err := rows.Scan(&count)
+ if err != nil {
+ panic(err)
+ }
+ fmt.Printf("Count: %d\n", count)
+ }
+}
+```
+
+#### Query streaming for large datasets {#query-streaming}
+
+메모리에 맞지 않는 대형 데이터셋을 처리하기 위한 스트리밍 쿼리를 사용하십시오:
+
+```go
+package main
+
+import (
+ "fmt"
+ "log"
+ "github.com/chdb-io/chdb-go/chdb"
+)
+
+func main() {
+ // Create a session for streaming queries
+ session, err := chdb.NewSession("/tmp/chdb-stream")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer session.Cleanup()
+
+ // Execute a streaming query for large dataset
+ streamResult, err := session.QueryStreaming(
+ "SELECT number, number * 2 as double FROM system.numbers LIMIT 1000000",
+ "CSV",
+ )
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer streamResult.Free()
+
+ rowCount := 0
+
+ // Process data in chunks
+ for {
+ chunk := streamResult.GetNext()
+ if chunk == nil {
+ // No more data
+ break
+ }
+
+ // Check for streaming errors
+ if err := streamResult.Error(); err != nil {
+ log.Printf("Streaming error: %v", err)
+ break
+ }
+
+ rowsRead := chunk.RowsRead()
+ // You can process the chunk data here
+ // For example, write to file, send over network, etc.
+ fmt.Printf("Processed chunk with %d rows\n", rowsRead)
+ rowCount += int(rowsRead)
+ if rowCount%100000 == 0 {
+ fmt.Printf("Processed %d rows so far...\n", rowCount)
+ }
+ }
+
+ fmt.Printf("Total rows processed: %d\n", rowCount)
+}
+```
+
+**쿼리 스트리밍의 이점:**
+- **메모리 효율적** - 모든 데이터를 메모리에 로드하지 않고 대형 데이터셋을 처리할 수 있습니다.
+- **실시간 처리** - 첫 번째 청크가 도착하는 즉시 데이터 처리를 시작할 수 있습니다.
+- **취소 지원** - `Cancel()`로 장기 실행 쿼리를 취소할 수 있습니다.
+- **오류 처리** - 스트리밍 중 오류를 `Error()`로 확인할 수 있습니다.
+
+## API documentation {#api-documentation}
+
+chDB-go는 고수준 및 저수준 API를 모두 제공합니다:
+
+- **[High-Level API Documentation](https://github.com/chdb-io/chdb-go/blob/main/chdb.md)** - 대부분의 사용 사례에 권장됩니다.
+- **[Low-Level API Documentation](https://github.com/chdb-io/chdb-go/blob/main/lowApi.md)** - 세밀한 제어가 필요한 고급 사용 사례를 위한 것입니다.
+
+## System requirements {#requirements}
+
+- Go 1.21 이상
+- Linux, macOS와 호환됩니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/go.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/go.md.hash
new file mode 100644
index 00000000000..6878366f00f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/go.md.hash
@@ -0,0 +1 @@
+f5bd98c8d05c68ae
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/index.md
new file mode 100644
index 00000000000..632fe082143
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/index.md
@@ -0,0 +1,25 @@
+---
+'title': '언어 통합 인덱스'
+'slug': '/chdb/install'
+'description': 'chDB 언어 통합을 위한 인덱스 페이지'
+'keywords':
+- 'python'
+- 'NodeJS'
+- 'Go'
+- 'Rust'
+- 'Bun'
+- 'C'
+- 'C++'
+'doc_type': 'landing-page'
+---
+
+chDB 설정 방법에 대한 지침은 아래의 언어 및 런타임에 대해 제공됩니다:
+
+| 언어 | API 참조 |
+|-----------------------------------------|--------------------------------------|
+| [Python](/chdb/install/python) | [Python API](/chdb/api/python) |
+| [NodeJS](/chdb/install/nodejs) | |
+| [Go](/chdb/install/go) | |
+| [Rust](/chdb/install/rust) | |
+| [Bun](/chdb/install/bun) | |
+| [C and C++](/chdb/install/c) | |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/index.md.hash
new file mode 100644
index 00000000000..8bfb01f5b9b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/index.md.hash
@@ -0,0 +1 @@
+04c84539c1f70e3c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/nodejs.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/nodejs.md
new file mode 100644
index 00000000000..7ca86f1297e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/nodejs.md
@@ -0,0 +1,201 @@
+---
+'title': 'chDB for Node.js'
+'sidebar_label': 'Node.js'
+'slug': '/chdb/install/nodejs'
+'description': 'Node.js와 함께 chDB를 설치하고 사용하는 방법'
+'keywords':
+- 'chdb'
+- 'nodejs'
+- 'javascript'
+- 'embedded'
+- 'clickhouse'
+- 'sql'
+- 'olap'
+'doc_type': 'guide'
+---
+
+
+# chDB for Node.js
+
+chDB-node는 Node.js 애플리케이션에서 ClickHouse 쿼리를 외부 의존성 없이 직접 실행할 수 있도록 Node.js 바인딩을 제공합니다.
+
+## Installation {#installation}
+
+```bash
+npm install chdb
+```
+
+## Usage {#usage}
+
+chDB-node는 두 가지 쿼리 모드를 지원합니다: 간단한 작업을 위한 독립형 쿼리와 데이터베이스 상태 유지를 위한 세션 기반 쿼리.
+
+### Standalone queries {#standalone-queries}
+
+지속적인 상태가 필요하지 않은 간단한 일회성 쿼리의 경우:
+
+```javascript
+const { query } = require("chdb");
+
+// Basic query
+const result = query("SELECT version()", "CSV");
+console.log("ClickHouse version:", result);
+
+// Query with multiple columns
+const multiResult = query("SELECT 'Hello' as greeting, 'chDB' as engine, 42 as answer", "CSV");
+console.log("Multi-column result:", multiResult);
+
+// Mathematical operations
+const mathResult = query("SELECT 2 + 2 as sum, pi() as pi_value", "JSON");
+console.log("Math result:", mathResult);
+
+// System information
+const systemInfo = query("SELECT * FROM system.functions LIMIT 5", "Pretty");
+console.log("System functions:", systemInfo);
+```
+
+### Session-Based queries {#session-based-queries}
+
+```javascript
+const { Session } = require("chdb");
+
+// Create a session with persistent storage
+const session = new Session("./chdb-node-data");
+
+try {
+ // Create database and table
+ session.query(`
+ CREATE DATABASE IF NOT EXISTS myapp;
+ CREATE TABLE IF NOT EXISTS myapp.users (
+ id UInt32,
+ name String,
+ email String,
+ created_at DateTime DEFAULT now()
+ ) ENGINE = MergeTree() ORDER BY id
+ `);
+
+ // Insert sample data
+ session.query(`
+ INSERT INTO myapp.users (id, name, email) VALUES
+ (1, 'Alice', 'alice@example.com'),
+ (2, 'Bob', 'bob@example.com'),
+ (3, 'Charlie', 'charlie@example.com')
+ `);
+
+ // Query the data with different formats
+ const csvResult = session.query("SELECT * FROM myapp.users ORDER BY id", "CSV");
+ console.log("CSV Result:", csvResult);
+
+ const jsonResult = session.query("SELECT * FROM myapp.users ORDER BY id", "JSON");
+ console.log("JSON Result:", jsonResult);
+
+ // Aggregate queries
+ const stats = session.query(`
+ SELECT
+ COUNT(*) as total_users,
+ MAX(id) as max_id,
+ MIN(created_at) as earliest_signup
+ FROM myapp.users
+ `, "Pretty");
+ console.log("User Statistics:", stats);
+
+} finally {
+ // Always cleanup the session
+ session.cleanup(); // This deletes the database files
+}
+```
+
+### Processing external data {#processing-external-data}
+
+```javascript
+const { Session } = require("chdb");
+
+const session = new Session("./data-processing");
+
+try {
+ // Process CSV data from URL
+ const result = session.query(`
+ SELECT
+ COUNT(*) as total_records,
+ COUNT(DISTINCT "UserID") as unique_users
+ FROM url('https://datasets.clickhouse.com/hits/hits.csv', 'CSV')
+ LIMIT 1000
+ `, "JSON");
+
+ console.log("External data analysis:", result);
+
+ // Create table from external data
+ session.query(`
+ CREATE TABLE web_analytics AS
+ SELECT * FROM url('https://datasets.clickhouse.com/hits/hits.csv', 'CSV')
+ LIMIT 10000
+ `);
+
+ // Analyze the imported data
+ const analysis = session.query(`
+ SELECT
+ toDate("EventTime") as date,
+ COUNT(*) as events,
+ COUNT(DISTINCT "UserID") as unique_users
+ FROM web_analytics
+ GROUP BY date
+ ORDER BY date
+ LIMIT 10
+ `, "Pretty");
+
+ console.log("Daily analytics:", analysis);
+
+} finally {
+ session.cleanup();
+}
+```
+
+## Error handling {#error-handling}
+
+chDB를 사용할 때 항상 오류를 적절하게 처리하세요:
+
+```javascript
+const { query, Session } = require("chdb");
+
+// Error handling for standalone queries
+function safeQuery(sql, format = "CSV") {
+ try {
+ const result = query(sql, format);
+ return { success: true, data: result };
+ } catch (error) {
+ console.error("Query error:", error.message);
+ return { success: false, error: error.message };
+ }
+}
+
+// Example usage
+const result = safeQuery("SELECT invalid_syntax");
+if (result.success) {
+ console.log("Query result:", result.data);
+} else {
+ console.log("Query failed:", result.error);
+}
+
+// Error handling for sessions
+function safeSessionQuery() {
+ const session = new Session("./error-test");
+
+ try {
+ // This will throw an error due to invalid syntax
+ const result = session.query("CREATE TABLE invalid syntax", "CSV");
+ console.log("Unexpected success:", result);
+ } catch (error) {
+ console.error("Session query error:", error.message);
+ } finally {
+ // Always cleanup, even if an error occurred
+ session.cleanup();
+ }
+}
+
+safeSessionQuery();
+```
+
+## GitHub repository {#github-repository}
+
+- **GitHub Repository**: [chdb-io/chdb-node](https://github.com/chdb-io/chdb-node)
+- **Issues and Support**: [GitHub repository](https://github.com/chdb-io/chdb-node/issues)에서 문제를 보고하세요.
+- **NPM Package**: [chdb on npm](https://www.npmjs.com/package/chdb)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/nodejs.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/nodejs.md.hash
new file mode 100644
index 00000000000..9865fc0349a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/nodejs.md.hash
@@ -0,0 +1 @@
+7b69f28e40cc310d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/python.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/python.md
new file mode 100644
index 00000000000..4369898bfc8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/python.md
@@ -0,0 +1,837 @@
+---
+'title': 'chDB 설치하기 위한 Python'
+'sidebar_label': 'Python'
+'slug': '/chdb/install/python'
+'description': 'Python용 chDB 설치 방법'
+'keywords':
+- 'chdb'
+- 'embedded'
+- 'clickhouse-lite'
+- 'python'
+- 'install'
+'doc_type': 'guide'
+---
+
+## 요구 사항 {#requirements}
+
+- Python 3.8+
+- 지원 플랫폼: macOS 및 Linux (x86_64 및 ARM64)
+
+## 설치 {#install}
+
+```bash
+pip install chdb
+```
+
+## 사용법 {#usage}
+
+### 명령줄 인터페이스 {#command-line-interface}
+
+명령줄에서 직접 SQL 쿼리를 실행합니다:
+
+```bash
+
+# Basic query
+python3 -m chdb "SELECT 1, 'abc'" Pretty
+
+
+# Query with formatting
+python3 -m chdb "SELECT version()" JSON
+```
+
+### 기본 파이썬 사용법 {#basic-python-usage}
+
+```python
+import chdb
+
+
+# Simple query
+result = chdb.query("SELECT 1 as id, 'Hello World' as message", "CSV")
+print(result)
+
+
+# Get query statistics
+print(f"Rows read: {result.rows_read()}")
+print(f"Bytes read: {result.bytes_read()}")
+print(f"Execution time: {result.elapsed()} seconds")
+```
+
+### 연결 기반 API (권장) {#connection-based-api}
+
+리소스 관리 및 성능을 개선하기 위해:
+
+```python
+import chdb
+
+
+# Create connection (in-memory by default)
+conn = chdb.connect(":memory:")
+
+# Or use file-based: conn = chdb.connect("mydata.db")
+
+
+# Create cursor for query execution
+cur = conn.cursor()
+
+
+# Execute queries
+cur.execute("SELECT number, toString(number) as str FROM system.numbers LIMIT 3")
+
+
+# Fetch results in different ways
+print(cur.fetchone()) # Single row: (0, '0')
+print(cur.fetchmany(2)) # Multiple rows: ((1, '1'), (2, '2'))
+
+
+# Get metadata
+print(cur.column_names()) # ['number', 'str']
+print(cur.column_types()) # ['UInt64', 'String']
+
+
+# Use cursor as iterator
+for row in cur:
+ print(row)
+
+
+# Always close resources
+cur.close()
+conn.close()
+```
+
+## 데이터 입력 방법 {#data-input}
+
+### 파일 기반 데이터 소스 {#file-based-data-sources}
+
+chDB는 직접 파일 쿼리를 위해 70개 이상의 데이터 형식을 지원합니다:
+
+```python
+import chdb
+
+# Prepare your data
+
+# ...
+
+
+# Query Parquet files
+result = chdb.query("""
+ SELECT customer_id, sum(amount) as total
+ FROM file('sales.parquet', Parquet)
+ GROUP BY customer_id
+ ORDER BY total DESC
+ LIMIT 10
+""", 'JSONEachRow')
+
+
+# Query CSV with headers
+result = chdb.query("""
+ SELECT * FROM file('data.csv', CSVWithNames)
+ WHERE column1 > 100
+""", 'DataFrame')
+
+
+# Multiple file formats
+result = chdb.query("""
+ SELECT * FROM file('logs*.jsonl', JSONEachRow)
+ WHERE timestamp > '2024-01-01'
+""", 'Pretty')
+```
+
+### 출력 형식 예제 {#output-format-examples}
+
+```python
+
+# DataFrame for analysis
+df = chdb.query('SELECT * FROM system.numbers LIMIT 5', 'DataFrame')
+print(type(df)) #
+
+
+# Arrow Table for interoperability
+arrow_table = chdb.query('SELECT * FROM system.numbers LIMIT 5', 'ArrowTable')
+print(type(arrow_table)) #
+
+
+# JSON for APIs
+json_result = chdb.query('SELECT version()', 'JSON')
+print(json_result)
+
+
+# Pretty format for debugging
+pretty_result = chdb.query('SELECT * FROM system.numbers LIMIT 3', 'Pretty')
+print(pretty_result)
+```
+
+### 데이터프레임 작업 {#dataframe-operations}
+
+#### 레거시 데이터프레임 API {#legacy-dataframe-api}
+
+```python
+import chdb.dataframe as cdf
+import pandas as pd
+
+
+# Join multiple DataFrames
+df1 = pd.DataFrame({'a': [1, 2, 3], 'b': ["one", "two", "three"]})
+df2 = pd.DataFrame({'c': [1, 2, 3], 'd': ["①", "②", "③"]})
+
+result_df = cdf.query(
+ sql="SELECT * FROM __tbl1__ t1 JOIN __tbl2__ t2 ON t1.a = t2.c",
+ tbl1=df1,
+ tbl2=df2
+)
+print(result_df)
+
+
+# Query the result DataFrame
+summary = result_df.query('SELECT b, sum(a) FROM __table__ GROUP BY b')
+print(summary)
+```
+
+#### 파이썬 테이블 엔진 (권장) {#python-table-engine-recommended}
+
+```python
+import chdb
+import pandas as pd
+import pyarrow as pa
+
+
+# Query Pandas DataFrame directly
+df = pd.DataFrame({
+ "customer_id": [1, 2, 3, 1, 2],
+ "product": ["A", "B", "A", "C", "A"],
+ "amount": [100, 200, 150, 300, 250],
+ "metadata": [
+ {'category': 'electronics', 'priority': 'high'},
+ {'category': 'books', 'priority': 'low'},
+ {'category': 'electronics', 'priority': 'medium'},
+ {'category': 'clothing', 'priority': 'high'},
+ {'category': 'books', 'priority': 'low'}
+ ]
+})
+
+
+# Direct DataFrame querying with JSON support
+result = chdb.query("""
+ SELECT
+ customer_id,
+ sum(amount) as total_spent,
+ toString(metadata.category) as category
+ FROM Python(df)
+ WHERE toString(metadata.priority) = 'high'
+ GROUP BY customer_id, toString(metadata.category)
+ ORDER BY total_spent DESC
+""").show()
+
+
+# Query Arrow Table
+arrow_table = pa.table({
+ "id": [1, 2, 3, 4],
+ "name": ["Alice", "Bob", "Charlie", "David"],
+ "score": [98, 89, 86, 95]
+})
+
+chdb.query("""
+ SELECT name, score
+ FROM Python(arrow_table)
+ ORDER BY score DESC
+""").show()
+```
+
+### 상태 유지 세션 {#stateful-sessions}
+
+세션은 여러 작업 간에 쿼리 상태를 유지하여 복잡한 워크플로우를 가능하게 합니다:
+
+```python
+from chdb import session
+
+
+# Temporary session (auto-cleanup)
+sess = session.Session()
+
+
+# Or persistent session with specific path
+
+# sess = session.Session("/path/to/data")
+
+
+# Create database and tables
+sess.query("CREATE DATABASE IF NOT EXISTS analytics ENGINE = Atomic")
+sess.query("USE analytics")
+
+sess.query("""
+ CREATE TABLE sales (
+ id UInt64,
+ product String,
+ amount Decimal(10,2),
+ sale_date Date
+ ) ENGINE = MergeTree()
+ ORDER BY (sale_date, id)
+""")
+
+
+# Insert data
+sess.query("""
+ INSERT INTO sales VALUES
+ (1, 'Laptop', 999.99, '2024-01-15'),
+ (2, 'Mouse', 29.99, '2024-01-16'),
+ (3, 'Keyboard', 79.99, '2024-01-17')
+""")
+
+
+# Create materialized views
+sess.query("""
+ CREATE MATERIALIZED VIEW daily_sales AS
+ SELECT
+ sale_date,
+ count() as orders,
+ sum(amount) as revenue
+ FROM sales
+ GROUP BY sale_date
+""")
+
+
+# Query the view
+result = sess.query("SELECT * FROM daily_sales ORDER BY sale_date", "Pretty")
+print(result)
+
+
+# Session automatically manages resources
+sess.close() # Optional - auto-closed when object is deleted
+```
+
+### 고급 세션 기능 {#advanced-session-features}
+
+```python
+
+# Session with custom settings
+sess = session.Session(
+ path="/tmp/analytics_db",
+)
+
+
+# Query performance optimization
+result = sess.query("""
+ SELECT product, sum(amount) as total
+ FROM sales
+ GROUP BY product
+ ORDER BY total DESC
+ SETTINGS max_threads = 4
+""", "JSON")
+```
+
+참고: [test_stateful.py](https://github.com/chdb-io/chdb/blob/main/tests/test_stateful.py).
+
+### 파이썬 DB-API 2.0 인터페이스 {#python-db-api-20}
+
+기존 파이썬 애플리케이션과의 호환성을 위한 표준 데이터베이스 인터페이스:
+
+```python
+import chdb.dbapi as dbapi
+
+
+# Check driver information
+print(f"chDB driver version: {dbapi.get_client_info()}")
+
+
+# Create connection
+conn = dbapi.connect()
+cursor = conn.cursor()
+
+
+# Execute queries with parameters
+cursor.execute("""
+ SELECT number, number * ? as doubled
+ FROM system.numbers
+ LIMIT ?
+""", (2, 5))
+
+
+# Get metadata
+print("Column descriptions:", cursor.description)
+print("Row count:", cursor.rowcount)
+
+
+# Fetch results
+print("First row:", cursor.fetchone())
+print("Next 2 rows:", cursor.fetchmany(2))
+
+
+# Fetch remaining rows
+for row in cursor.fetchall():
+ print("Row:", row)
+
+
+# Batch operations
+data = [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')]
+cursor.execute("""
+ CREATE TABLE temp_users (
+ id UInt64,
+ name String
+ ) ENGINE = MergeTree()
+ ORDER BY (id)
+""")
+cursor.executemany(
+ "INSERT INTO temp_users (id, name) VALUES (?, ?)",
+ data
+)
+```
+
+### 사용자 정의 함수 (UDF) {#user-defined-functions}
+
+SQL을 사용자 정의 파이썬 함수로 확장합니다:
+
+#### 기본 UDF 사용법 {#basic-udf-usage}
+
+```python
+from chdb.udf import chdb_udf
+from chdb import query
+
+
+# Simple mathematical function
+@chdb_udf()
+def add_numbers(a, b):
+ return int(a) + int(b)
+
+
+# String processing function
+@chdb_udf()
+def reverse_string(text):
+ return text[::-1]
+
+
+# JSON processing function
+@chdb_udf()
+def extract_json_field(json_str, field):
+ import json
+ try:
+ data = json.loads(json_str)
+ return str(data.get(field, ''))
+ except:
+ return ''
+
+
+# Use UDFs in queries
+result = query("""
+ SELECT
+ add_numbers('10', '20') as sum_result,
+ reverse_string('hello') as reversed,
+ extract_json_field('{"name": "John", "age": 30}', 'name') as name
+""")
+print(result)
+```
+
+#### 사용자 정의 반환 유형으로 고급 UDF {#advanced-udf-custom-return-types}
+
+```python
+
+# UDF with specific return type
+@chdb_udf(return_type="Float64")
+def calculate_bmi(height_str, weight_str):
+ height = float(height_str) / 100 # Convert cm to meters
+ weight = float(weight_str)
+ return weight / (height * height)
+
+
+# UDF for data validation
+@chdb_udf(return_type="UInt8")
+def is_valid_email(email):
+ import re
+ pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
+ return 1 if re.match(pattern, email) else 0
+
+
+# Use in complex queries
+result = query("""
+ SELECT
+ name,
+ calculate_bmi(height, weight) as bmi,
+ is_valid_email(email) as has_valid_email
+ FROM (
+ SELECT
+ 'John' as name, '180' as height, '75' as weight, 'john@example.com' as email
+ UNION ALL
+ SELECT
+ 'Jane' as name, '165' as height, '60' as weight, 'invalid-email' as email
+ )
+""", "Pretty")
+print(result)
+```
+
+#### UDF 모범 사례 {#udf-best-practices}
+
+1. **무상태 함수**: UDF는 부작용이 없는 순수 함수여야 합니다.
+2. **함수 내 임포트**: 필수 모듈은 모두 UDF 내에서 임포트해야 합니다.
+3. **문자열 입력/출력**: 모든 UDF 매개변수는 문자열입니다 (TabSeparated 형식).
+4. **오류 처리**: 견고한 UDF를 위해 try-catch 블록을 포함하십시오.
+5. **성능**: UDF는 각 행에 대해 호출되므로 성능을 최적화하십시오.
+
+```python
+
+# Well-structured UDF with error handling
+@chdb_udf(return_type="String")
+def safe_json_extract(json_str, path):
+ import json
+ try:
+ data = json.loads(json_str)
+ keys = path.split('.')
+ result = data
+ for key in keys:
+ if isinstance(result, dict) and key in result:
+ result = result[key]
+ else:
+ return 'null'
+ return str(result)
+ except Exception as e:
+ return f'error: {str(e)}'
+
+
+# Use with complex nested JSON
+query("""
+ SELECT safe_json_extract(
+ '{"user": {"profile": {"name": "Alice", "age": 25}}}',
+ 'user.profile.name'
+ ) as extracted_name
+""")
+```
+
+### 스트리밍 쿼리 처리 {#streaming-queries}
+
+상수 메모리 사용으로 대규모 데이터셋을 처리합니다:
+
+```python
+from chdb import session
+
+sess = session.Session()
+
+
+# Setup large dataset
+sess.query("""
+ CREATE TABLE large_data ENGINE = Memory() AS
+ SELECT number as id, toString(number) as data
+ FROM numbers(1000000)
+""")
+
+
+# Example 1: Basic streaming with context manager
+total_rows = 0
+with sess.send_query("SELECT * FROM large_data", "CSV") as stream:
+ for chunk in stream:
+ chunk_rows = len(chunk.data().split('\n')) - 1
+ total_rows += chunk_rows
+ print(f"Processed chunk: {chunk_rows} rows")
+
+ # Early termination if needed
+ if total_rows > 100000:
+ break
+
+print(f"Total rows processed: {total_rows}")
+
+
+# Example 2: Manual iteration with explicit cleanup
+stream = sess.send_query("SELECT * FROM large_data WHERE id % 100 = 0", "JSONEachRow")
+processed_count = 0
+
+while True:
+ chunk = stream.fetch()
+ if chunk is None:
+ break
+
+ # Process chunk data
+ lines = chunk.data().strip().split('\n')
+ for line in lines:
+ if line: # Skip empty lines
+ processed_count += 1
+
+ print(f"Processed {processed_count} records so far...")
+
+stream.close() # Important: explicit cleanup
+
+
+# Example 3: Arrow integration for external libraries
+import pyarrow as pa
+from deltalake import write_deltalake
+
+
+# Stream results in Arrow format
+stream = sess.send_query("SELECT * FROM large_data LIMIT 100000", "Arrow")
+
+
+# Create RecordBatchReader with custom batch size
+batch_reader = stream.record_batch(rows_per_batch=10000)
+
+
+# Export to Delta Lake
+write_deltalake(
+ table_or_uri="./my_delta_table",
+ data=batch_reader,
+ mode="overwrite"
+)
+
+stream.close()
+sess.close()
+```
+
+### 파이썬 테이블 엔진 {#python-table-engine}
+
+#### Pandas 데이터프레임 쿼리하기 {#query-pandas-dataframes}
+
+```python
+import chdb
+import pandas as pd
+
+
+# Complex DataFrame with nested data
+df = pd.DataFrame({
+ "customer_id": [1, 2, 3, 4, 5, 6],
+ "customer_name": ["Alice", "Bob", "Charlie", "Alice", "Bob", "David"],
+ "orders": [
+ {"order_id": 101, "amount": 250.50, "items": ["laptop", "mouse"]},
+ {"order_id": 102, "amount": 89.99, "items": ["book"]},
+ {"order_id": 103, "amount": 1299.99, "items": ["phone", "case", "charger"]},
+ {"order_id": 104, "amount": 45.50, "items": ["pen", "paper"]},
+ {"order_id": 105, "amount": 199.99, "items": ["headphones"]},
+ {"order_id": 106, "amount": 15.99, "items": ["cable"]}
+ ]
+})
+
+
+# Advanced querying with JSON operations
+result = chdb.query("""
+ SELECT
+ customer_name,
+ count() as order_count,
+ sum(toFloat64(orders.amount)) as total_spent,
+ arrayStringConcat(
+ arrayDistinct(
+ arrayFlatten(
+ groupArray(orders.items)
+ )
+ ),
+ ', '
+ ) as all_items
+ FROM Python(df)
+ GROUP BY customer_name
+ HAVING total_spent > 100
+ ORDER BY total_spent DESC
+""").show()
+
+
+# Window functions on DataFrames
+window_result = chdb.query("""
+ SELECT
+ customer_name,
+ toFloat64(orders.amount) as amount,
+ sum(toFloat64(orders.amount)) OVER (
+ PARTITION BY customer_name
+ ORDER BY toInt32(orders.order_id)
+ ) as running_total
+ FROM Python(df)
+ ORDER BY customer_name, toInt32(orders.order_id)
+""", "Pretty")
+print(window_result)
+```
+
+#### PyReader로 사용자 정의 데이터 소스 {#custom-data-sources-pyreader}
+
+전문화된 데이터 소스를 위한 사용자 정의 데이터 리더를 구현합니다:
+
+```python
+import chdb
+from typing import List, Tuple, Any
+import json
+
+class DatabaseReader(chdb.PyReader):
+ """Custom reader for database-like data sources"""
+
+ def __init__(self, connection_string: str):
+ # Simulate database connection
+ self.data = self._load_data(connection_string)
+ self.cursor = 0
+ self.batch_size = 1000
+ super().__init__(self.data)
+
+ def _load_data(self, conn_str):
+ # Simulate loading from database
+ return {
+ "id": list(range(1, 10001)),
+ "name": [f"user_{i}" for i in range(1, 10001)],
+ "score": [i * 10 + (i % 7) for i in range(1, 10001)],
+ "metadata": [
+ json.dumps({"level": i % 5, "active": i % 3 == 0})
+ for i in range(1, 10001)
+ ]
+ }
+
+ def get_schema(self) -> List[Tuple[str, str]]:
+ """Define table schema with explicit types"""
+ return [
+ ("id", "UInt64"),
+ ("name", "String"),
+ ("score", "Int64"),
+ ("metadata", "String") # JSON stored as string
+ ]
+
+ def read(self, col_names: List[str], count: int) -> List[List[Any]]:
+ """Read data in batches"""
+ if self.cursor >= len(self.data["id"]):
+ return [] # No more data
+
+ end_pos = min(self.cursor + min(count, self.batch_size), len(self.data["id"]))
+
+ # Return data for requested columns
+ result = []
+ for col in col_names:
+ if col in self.data:
+ result.append(self.data[col][self.cursor:end_pos])
+ else:
+ # Handle missing columns
+ result.append([None] * (end_pos - self.cursor))
+
+ self.cursor = end_pos
+ return result
+
+### JSON Type Inference and Handling {#json-type-inference-handling}
+
+chDB automatically handles complex nested data structures:
+
+```python
+import pandas as pd
+import chdb
+
+
+# DataFrame with mixed JSON objects
+df_with_json = pd.DataFrame({
+ "user_id": [1, 2, 3, 4],
+ "profile": [
+ {"name": "Alice", "age": 25, "preferences": ["music", "travel"]},
+ {"name": "Bob", "age": 30, "location": {"city": "NYC", "country": "US"}},
+ {"name": "Charlie", "skills": ["python", "sql", "ml"], "experience": 5},
+ {"score": 95, "rank": "gold", "achievements": [{"title": "Expert", "date": "2024-01-01"}]}
+ ]
+})
+
+
+# Control JSON inference with settings
+result = chdb.query("""
+ SELECT
+ user_id,
+ profile.name as name,
+ profile.age as age,
+ length(profile.preferences) as pref_count,
+ profile.location.city as city
+ FROM Python(df_with_json)
+ SETTINGS pandas_analyze_sample = 1000 -- Analyze all rows for JSON detection
+""", "Pretty")
+print(result)
+
+
+# Advanced JSON operations
+complex_json = chdb.query("""
+ SELECT
+ user_id,
+ JSONLength(toString(profile)) as json_fields,
+ JSONType(toString(profile), 'preferences') as pref_type,
+ if(
+ JSONHas(toString(profile), 'achievements'),
+ JSONExtractString(toString(profile), 'achievements[0].title'),
+ 'None'
+ ) as first_achievement
+ FROM Python(df_with_json)
+""", "JSONEachRow")
+print(complex_json)
+```
+
+## 성능 및 최적화 {#performance-optimization}
+
+### 벤치마크 {#benchmarks}
+
+chDB는 다른 임베디드 엔진보다 일관되게 더 높은 성능을 보입니다:
+- **데이터프레임 작업**: 분석 쿼리에 대해 기존 데이터프레임 라이브러리보다 2-5배 빠릅니다.
+- **Parquet 처리**: 선도적인 컬럼형 엔진과 경쟁력이 있습니다.
+- **메모리 효율성**: 대안보다 낮은 메모리 풋프린트를 가집니다.
+
+[더 많은 벤치마크 결과 세부정보](https://github.com/chdb-io/chdb?tab=readme-ov-file#benchmark)
+
+### 성능 팁 {#performance-tips}
+
+```python
+import chdb
+
+
+# 1. Use appropriate output formats
+df_result = chdb.query("SELECT * FROM large_table", "DataFrame") # For analysis
+arrow_result = chdb.query("SELECT * FROM large_table", "Arrow") # For interop
+native_result = chdb.query("SELECT * FROM large_table", "Native") # For chDB-to-chDB
+
+
+# 2. Optimize queries with settings
+fast_result = chdb.query("""
+ SELECT customer_id, sum(amount)
+ FROM sales
+ GROUP BY customer_id
+ SETTINGS
+ max_threads = 8,
+ max_memory_usage = '4G',
+ use_uncompressed_cache = 1
+""", "DataFrame")
+
+
+# 3. Leverage streaming for large datasets
+from chdb import session
+
+sess = session.Session()
+
+
+# Setup large dataset
+sess.query("""
+ CREATE TABLE large_sales ENGINE = Memory() AS
+ SELECT
+ number as sale_id,
+ number % 1000 as customer_id,
+ rand() % 1000 as amount
+ FROM numbers(10000000)
+""")
+
+
+# Stream processing with constant memory usage
+total_amount = 0
+processed_rows = 0
+
+with sess.send_query("SELECT customer_id, sum(amount) as total FROM large_sales GROUP BY customer_id", "JSONEachRow") as stream:
+ for chunk in stream:
+ lines = chunk.data().strip().split('\n')
+ for line in lines:
+ if line: # Skip empty lines
+ import json
+ row = json.loads(line)
+ total_amount += row['total']
+ processed_rows += 1
+
+ print(f"Processed {processed_rows} customer records, running total: {total_amount}")
+
+ # Early termination for demo
+ if processed_rows > 1000:
+ break
+
+print(f"Final result: {processed_rows} customers processed, total amount: {total_amount}")
+
+
+# Stream to external systems (e.g., Delta Lake)
+stream = sess.send_query("SELECT * FROM large_sales LIMIT 1000000", "Arrow")
+batch_reader = stream.record_batch(rows_per_batch=50000)
+
+
+# Process in batches
+for batch in batch_reader:
+ print(f"Processing batch with {batch.num_rows} rows...")
+ # Transform or export each batch
+ # df_batch = batch.to_pandas()
+ # process_batch(df_batch)
+
+stream.close()
+sess.close()
+```
+
+## GitHub 저장소 {#github-repository}
+
+- **주 저장소**: [chdb-io/chdb](https://github.com/chdb-io/chdb)
+- **문제 및 지원**: [GitHub 저장소](https://github.com/chdb-io/chdb/issues)에서 문제를 보고합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/python.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/python.md.hash
new file mode 100644
index 00000000000..a994ddbeaec
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/python.md.hash
@@ -0,0 +1 @@
+a7d9de3caef570e5
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/rust.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/rust.md
new file mode 100644
index 00000000000..0a0998272f3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/rust.md
@@ -0,0 +1,169 @@
+---
+'title': 'Installing chDB for Rust'
+'sidebar_label': 'Rust'
+'slug': '/chdb/install/rust'
+'description': 'chDB Rust 바인딩을 설치하고 사용하는 방법'
+'keywords':
+- 'chdb'
+- 'embedded'
+- 'clickhouse-lite'
+- 'rust'
+- 'install'
+- 'ffi'
+- 'bindings'
+'doc_type': 'guide'
+---
+
+
+# chDB for Rust {#chdb-for-rust}
+
+chDB-rust는 chDB에 대한 실험적 FFI (Foreign Function Interface) 바인딩을 제공하여, Rust 애플리케이션에서 ClickHouse 쿼리를 외부 의존성 없이 직접 실행할 수 있게 해줍니다.
+
+## 설치 {#installation}
+
+### libchdb 설치 {#install-libchdb}
+
+chDB 라이브러리를 설치합니다:
+
+```bash
+curl -sL https://lib.chdb.io | bash
+```
+
+## 사용법 {#usage}
+
+chDB Rust는 무상태 및 유상태 쿼리 실행 모드를 모두 제공합니다.
+
+### 무상태 사용법 {#stateless-usage}
+
+지속적인 상태 없이 간단한 쿼리를 위한 경우:
+
+```rust
+use chdb_rust::{execute, arg::Arg, format::OutputFormat};
+
+fn main() -> Result<(), Box> {
+ // Execute a simple query
+ let result = execute(
+ "SELECT version()",
+ Some(&[Arg::OutputFormat(OutputFormat::JSONEachRow)])
+ )?;
+ println!("ClickHouse version: {}", result.data_utf8()?);
+
+ // Query with CSV file
+ let result = execute(
+ "SELECT * FROM file('data.csv', 'CSV')",
+ Some(&[Arg::OutputFormat(OutputFormat::JSONEachRow)])
+ )?;
+ println!("CSV data: {}", result.data_utf8()?);
+
+ Ok(())
+}
+```
+
+### 유상태 사용법 (세션) {#stateful-usage-sessions}
+
+데이터베이스 및 테이블과 같이 지속적인 상태가 필요한 쿼리의 경우:
+
+```rust
+use chdb_rust::{
+ session::SessionBuilder,
+ arg::Arg,
+ format::OutputFormat,
+ log_level::LogLevel
+};
+use tempdir::TempDir;
+
+fn main() -> Result<(), Box> {
+ // Create a temporary directory for database storage
+ let tmp = TempDir::new("chdb-rust")?;
+
+ // Build session with configuration
+ let session = SessionBuilder::new()
+ .with_data_path(tmp.path())
+ .with_arg(Arg::LogLevel(LogLevel::Debug))
+ .with_auto_cleanup(true) // Cleanup on drop
+ .build()?;
+
+ // Create database and table
+ session.execute(
+ "CREATE DATABASE demo; USE demo",
+ Some(&[Arg::MultiQuery])
+ )?;
+
+ session.execute(
+ "CREATE TABLE logs (id UInt64, msg String) ENGINE = MergeTree() ORDER BY id",
+ None,
+ )?;
+
+ // Insert data
+ session.execute(
+ "INSERT INTO logs (id, msg) VALUES (1, 'Hello'), (2, 'World')",
+ None,
+ )?;
+
+ // Query data
+ let result = session.execute(
+ "SELECT * FROM logs ORDER BY id",
+ Some(&[Arg::OutputFormat(OutputFormat::JSONEachRow)]),
+ )?;
+
+ println!("Query results:\n{}", result.data_utf8()?);
+
+ // Get query statistics
+ println!("Rows read: {}", result.rows_read());
+ println!("Bytes read: {}", result.bytes_read());
+ println!("Query time: {:?}", result.elapsed());
+
+ Ok(())
+}
+```
+
+## 빌드 및 테스트 {#building-testing}
+
+### 프로젝트 빌드 {#build-the-project}
+
+```bash
+cargo build
+```
+
+### 테스트 실행 {#run-tests}
+
+```bash
+cargo test
+```
+
+### 개발 의존성 {#development-dependencies}
+
+프로젝트에는 다음과 같은 개발 의존성이 포함되어 있습니다:
+- `bindgen` (v0.70.1) - C 헤더에서 FFI 바인딩 생성
+- `tempdir` (v0.3.7) - 테스트용 임시 디렉토리 처리
+- `thiserror` (v1) - 오류 처리 유틸리티
+
+## 오류 처리 {#error-handling}
+
+chDB Rust는 `Error` 열거형을 통해 포괄적인 오류 처리를 제공합니다:
+
+```rust
+use chdb_rust::{execute, error::Error};
+
+match execute("SELECT 1", None) {
+ Ok(result) => {
+ println!("Success: {}", result.data_utf8()?);
+ },
+ Err(Error::QueryError(msg)) => {
+ eprintln!("Query failed: {}", msg);
+ },
+ Err(Error::NoResult) => {
+ eprintln!("No result returned");
+ },
+ Err(Error::NonUtf8Sequence(e)) => {
+ eprintln!("Invalid UTF-8: {}", e);
+ },
+ Err(e) => {
+ eprintln!("Other error: {}", e);
+ }
+}
+```
+
+## GitHub 리포지토리 {#github-repository}
+
+프로젝트에 대한 GitHub 리포지토리는 [chdb-io/chdb-rust](https://github.com/chdb-io/chdb-rust)에서 확인할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/rust.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/rust.md.hash
new file mode 100644
index 00000000000..0e82181b79c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/install/rust.md.hash
@@ -0,0 +1 @@
+a90aab846dc359bd
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/data-formats.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/data-formats.md
new file mode 100644
index 00000000000..281fe5a518b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/data-formats.md
@@ -0,0 +1,212 @@
+---
+'title': '데이터 형식'
+'sidebar_label': '데이터 형식'
+'slug': '/chdb/reference/data-formats'
+'description': 'chDB의 데이터 형식'
+'keywords':
+- 'chdb'
+- 'data formats'
+'doc_type': 'reference'
+---
+
+When it comes to data formats, chDB is 100% feature compatible with ClickHouse.
+
+Input formats are used to parse the data provided to `INSERT` and `SELECT` from a file-backed table such as `File`, `URL` or `S3`.
+Output formats are used to arrange the results of a `SELECT`, and to perform `INSERT`s into a file-backed table.
+As well as the data formats that ClickHouse supports, chDB also supports:
+
+- `ArrowTable` as an output format, the type is Python `pyarrow.Table`
+- `DataFrame` as an input and output format, the type is Python `pandas.DataFrame`. For examples, see [`test_joindf.py`](https://github.com/chdb-io/chdb/blob/main/tests/test_joindf.py)
+- `Debug` as ab output (as an alias of `CSV`), but with enabled debug verbose output from ClickHouse.
+
+The supported data formats from ClickHouse are:
+
+| Format | Input | Output |
+|---------------------------------|-------|--------|
+| TabSeparated | ✔ | ✔ |
+| TabSeparatedRaw | ✔ | ✔ |
+| TabSeparatedWithNames | ✔ | ✔ |
+| TabSeparatedWithNamesAndTypes | ✔ | ✔ |
+| TabSeparatedRawWithNames | ✔ | ✔ |
+| TabSeparatedRawWithNamesAndTypes| ✔ | ✔ |
+| Template | ✔ | ✔ |
+| TemplateIgnoreSpaces | ✔ | ✗ |
+| CSV | ✔ | ✔ |
+| CSVWithNames | ✔ | ✔ |
+| CSVWithNamesAndTypes | ✔ | ✔ |
+| CustomSeparated | ✔ | ✔ |
+| CustomSeparatedWithNames | ✔ | ✔ |
+| CustomSeparatedWithNamesAndTypes| ✔ | ✔ |
+| SQLInsert | ✗ | ✔ |
+| Values | ✔ | ✔ |
+| Vertical | ✗ | ✔ |
+| JSON | ✔ | ✔ |
+| JSONAsString | ✔ | ✗ |
+| JSONAsObject | ✔ | ✗ |
+| JSONStrings | ✔ | ✔ |
+| JSONColumns | ✔ | ✔ |
+| JSONColumnsWithMetadata | ✔ | ✔ |
+| JSONCompact | ✔ | ✔ |
+| JSONCompactStrings | ✗ | ✔ |
+| JSONCompactColumns | ✔ | ✔ |
+| JSONEachRow | ✔ | ✔ |
+| PrettyJSONEachRow | ✗ | ✔ |
+| JSONEachRowWithProgress | ✗ | ✔ |
+| JSONStringsEachRow | ✔ | ✔ |
+| JSONStringsEachRowWithProgress | ✗ | ✔ |
+| JSONCompactEachRow | ✔ | ✔ |
+| JSONCompactEachRowWithNames | ✔ | ✔ |
+| JSONCompactEachRowWithNamesAndTypes | ✔ | ✔ |
+| JSONCompactEachRowWithProgress | ✗ | ✔ |
+| JSONCompactStringsEachRow | ✔ | ✔ |
+| JSONCompactStringsEachRowWithNames | ✔ | ✔ |
+| JSONCompactStringsEachRowWithNamesAndTypes | ✔ | ✔ |
+| JSONCompactStringsEachRowWithProgress | ✗ | ✔ |
+| JSONObjectEachRow | ✔ | ✔ |
+| BSONEachRow | ✔ | ✔ |
+| TSKV | ✔ | ✔ |
+| Pretty | ✗ | ✔ |
+| PrettyNoEscapes | ✗ | ✔ |
+| PrettyMonoBlock | ✗ | ✔ |
+| PrettyNoEscapesMonoBlock | ✗ | ✔ |
+| PrettyCompact | ✗ | ✔ |
+| PrettyCompactNoEscapes | ✗ | ✔ |
+| PrettyCompactMonoBlock | ✗ | ✔ |
+| PrettyCompactNoEscapesMonoBlock | ✗ | ✔ |
+| PrettySpace | ✗ | ✔ |
+| PrettySpaceNoEscapes | ✗ | ✔ |
+| PrettySpaceMonoBlock | ✗ | ✔ |
+| PrettySpaceNoEscapesMonoBlock | ✗ | ✔ |
+| Prometheus | ✗ | ✔ |
+| Protobuf | ✔ | ✔ |
+| ProtobufSingle | ✔ | ✔ |
+| ProtobufList | ✔ | ✔ |
+| Avro | ✔ | ✔ |
+| AvroConfluent | ✔ | ✗ |
+| Parquet | ✔ | ✔ |
+| ParquetMetadata | ✔ | ✗ |
+| Arrow | ✔ | ✔ |
+| ArrowStream | ✔ | ✔ |
+| ORC | ✔ | ✔ |
+| One | ✔ | ✗ |
+| Npy | ✔ | ✔ |
+| RowBinary | ✔ | ✔ |
+| RowBinaryWithNames | ✔ | ✔ |
+| RowBinaryWithNamesAndTypes | ✔ | ✔ |
+| RowBinaryWithDefaults | ✔ | ✗ |
+| Native | ✔ | ✔ |
+| Null | ✗ | ✔ |
+| XML | ✗ | ✔ |
+| CapnProto | ✔ | ✔ |
+| LineAsString | ✔ | ✔ |
+| Regexp | ✔ | ✗ |
+| RawBLOB | ✔ | ✔ |
+| MsgPack | ✔ | ✔ |
+| MySQLDump | ✔ | ✗ |
+| DWARF | ✔ | ✗ |
+| Markdown | ✗ | ✔ |
+| Form | ✔ | ✗ |
+
+For further information and examples, see [ClickHouse formats for input and output data](/interfaces/formats).
+
+---
+
+데이터 형식에 관한 한, chDB는 ClickHouse와 100% 기능 호환됩니다.
+
+입력 형식은 `INSERT` 및 `SELECT`에 제공된 데이터를 구문 분석하는 데 사용되며, `File`, `URL` 또는 `S3`와 같은 파일 기반 테이블에서 사용됩니다.
+출력 형식은 `SELECT`의 결과를 정렬하고 파일 기반 테이블에 `INSERT`를 수행하는 데 사용됩니다.
+ClickHouse가 지원하는 데이터 형식 외에도 chDB는 다음을 지원합니다:
+
+- 출력 형식으로서의 `ArrowTable`, 타입은 Python `pyarrow.Table`입니다.
+- 입력 및 출력 형식으로서의 `DataFrame`, 타입은 Python `pandas.DataFrame`입니다. 예제는 [`test_joindf.py`](https://github.com/chdb-io/chdb/blob/main/tests/test_joindf.py)를 참조하십시오.
+- `Debug`는 ClickHouse에서 디버그 상세 출력을 활성화한 상태의 `CSV`의 별칭으로서의 출력입니다.
+
+ClickHouse에서 지원하는 데이터 형식은 다음과 같습니다:
+
+| 형식 | 입력 | 출력 |
+|-------------------------------|------|------|
+| TabSeparated | ✔ | ✔ |
+| TabSeparatedRaw | ✔ | ✔ |
+| TabSeparatedWithNames | ✔ | ✔ |
+| TabSeparatedWithNamesAndTypes | ✔ | ✔ |
+| TabSeparatedRawWithNames | ✔ | ✔ |
+| TabSeparatedRawWithNamesAndTypes | ✔ | ✔ |
+| Template | ✔ | ✔ |
+| TemplateIgnoreSpaces | ✔ | ✗ |
+| CSV | ✔ | ✔ |
+| CSVWithNames | ✔ | ✔ |
+| CSVWithNamesAndTypes | ✔ | ✔ |
+| CustomSeparated | ✔ | ✔ |
+| CustomSeparatedWithNames | ✔ | ✔ |
+| CustomSeparatedWithNamesAndTypes | ✔ | ✔ |
+| SQLInsert | ✗ | ✔ |
+| Values | ✔ | ✔ |
+| Vertical | ✗ | ✔ |
+| JSON | ✔ | ✔ |
+| JSONAsString | ✔ | ✗ |
+| JSONAsObject | ✔ | ✗ |
+| JSONStrings | ✔ | ✔ |
+| JSONColumns | ✔ | ✔ |
+| JSONColumnsWithMetadata | ✔ | ✔ |
+| JSONCompact | ✔ | ✔ |
+| JSONCompactStrings | ✗ | ✔ |
+| JSONCompactColumns | ✔ | ✔ |
+| JSONEachRow | ✔ | ✔ |
+| PrettyJSONEachRow | ✗ | ✔ |
+| JSONEachRowWithProgress | ✗ | ✔ |
+| JSONStringsEachRow | ✔ | ✔ |
+| JSONStringsEachRowWithProgress | ✗ | ✔ |
+| JSONCompactEachRow | ✔ | ✔ |
+| JSONCompactEachRowWithNames | ✔ | ✔ |
+| JSONCompactEachRowWithNamesAndTypes | ✔ | ✔ |
+| JSONCompactEachRowWithProgress | ✗ | ✔ |
+| JSONCompactStringsEachRow | ✔ | ✔ |
+| JSONCompactStringsEachRowWithNames | ✔ | ✔ |
+| JSONCompactStringsEachRowWithNamesAndTypes | ✔ | ✔ |
+| JSONCompactStringsEachRowWithProgress | ✗ | ✔ |
+| JSONObjectEachRow | ✔ | ✔ |
+| BSONEachRow | ✔ | ✔ |
+| TSKV | ✔ | ✔ |
+| Pretty | ✗ | ✔ |
+| PrettyNoEscapes | ✗ | ✔ |
+| PrettyMonoBlock | ✗ | ✔ |
+| PrettyNoEscapesMonoBlock | ✗ | ✔ |
+| PrettyCompact | ✗ | ✔ |
+| PrettyCompactNoEscapes | ✗ | ✔ |
+| PrettyCompactMonoBlock | ✗ | ✔ |
+| PrettyCompactNoEscapesMonoBlock| ✗ | ✔ |
+| PrettySpace | ✗ | ✔ |
+| PrettySpaceNoEscapes | ✗ | ✔ |
+| PrettySpaceMonoBlock | ✗ | ✔ |
+| PrettySpaceNoEscapesMonoBlock | ✗ | ✔ |
+| Prometheus | ✗ | ✔ |
+| Protobuf | ✔ | ✔ |
+| ProtobufSingle | ✔ | ✔ |
+| ProtobufList | ✔ | ✔ |
+| Avro | ✔ | ✔ |
+| AvroConfluent | ✔ | ✗ |
+| Parquet | ✔ | ✔ |
+| ParquetMetadata | ✔ | ✗ |
+| Arrow | ✔ | ✔ |
+| ArrowStream | ✔ | ✔ |
+| ORC | ✔ | ✔ |
+| One | ✔ | ✗ |
+| Npy | ✔ | ✔ |
+| RowBinary | ✔ | ✔ |
+| RowBinaryWithNames | ✔ | ✔ |
+| RowBinaryWithNamesAndTypes | ✔ | ✔ |
+| RowBinaryWithDefaults | ✔ | ✗ |
+| Native | ✔ | ✔ |
+| Null | ✗ | ✔ |
+| XML | ✗ | ✔ |
+| CapnProto | ✔ | ✔ |
+| LineAsString | ✔ | ✔ |
+| Regexp | ✔ | ✗ |
+| RawBLOB | ✔ | ✔ |
+| MsgPack | ✔ | ✔ |
+| MySQLDump | ✔ | ✗ |
+| DWARF | ✔ | ✗ |
+| Markdown | ✗ | ✔ |
+| Form | ✔ | ✗ |
+
+더 많은 정보와 예제는 [ClickHouse의 입력 및 출력 데이터 형식](/interfaces/formats)을 참조하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/data-formats.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/data-formats.md.hash
new file mode 100644
index 00000000000..65bb758994b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/data-formats.md.hash
@@ -0,0 +1 @@
+ad7ada464b3551ee
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/index.md
new file mode 100644
index 00000000000..2fbe3ad4b30
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/index.md
@@ -0,0 +1,14 @@
+---
+'title': 'chDB 기술 참조'
+'slug': '/chdb/reference'
+'description': 'chDB를 위한 데이터 형식'
+'keywords':
+- 'chdb'
+- 'data formats'
+'doc_type': 'reference'
+---
+
+| 참조 페이지 |
+|----------------------|
+| [데이터 형식](/chdb/reference/data-formats) |
+| [SQL 참조](/chdb/reference/sql-reference) |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/index.md.hash
new file mode 100644
index 00000000000..8b0ed5d16b0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/index.md.hash
@@ -0,0 +1 @@
+e1ecb4a270740e58
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/sql-reference.md b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/sql-reference.md
new file mode 100644
index 00000000000..4cdac0d844f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/sql-reference.md
@@ -0,0 +1,25 @@
+---
+'title': 'SQL 참조'
+'sidebar_label': 'SQL 참조'
+'slug': '/chdb/reference/sql-reference'
+'description': 'chDB에 대한 SQL 참조'
+'keywords':
+- 'chdb'
+- 'sql reference'
+'doc_type': 'reference'
+---
+
+chdb는 ClickHouse와 동일한 SQL 구문, 구문, 엔진 및 함수를 지원합니다:
+
+| 주제 |
+|----------------------------|
+| [SQL 구문](/sql-reference/syntax) |
+| [구문](/sql-reference/statements) |
+| [테이블 엔진](/engines/table-engines) |
+| [데이터베이스 엔진](/engines/database-engines) |
+| [일반 함수](/sql-reference/functions) |
+| [집계 함수](/sql-reference/aggregate-functions) |
+| [테이블 함수](/sql-reference/table-functions) |
+| [윈도우 함수](/sql-reference/window-functions) |
+
+추가 정보와 예제는 [ClickHouse SQL Reference](/sql-reference)를 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/sql-reference.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/sql-reference.md.hash
new file mode 100644
index 00000000000..7a7cd5576ec
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/chdb/reference/sql-reference.md.hash
@@ -0,0 +1 @@
+8c74a862b16d5c5d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_category_.yml b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_category_.yml
new file mode 100644
index 00000000000..4fcbe452846
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_category_.yml
@@ -0,0 +1,7 @@
+position: 1
+label: 'Benefits'
+collapsible: true
+collapsed: true
+link:
+ type: doc
+ id: en/cloud/index
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_clickpipes_faq.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_clickpipes_faq.md
new file mode 100644
index 00000000000..4daeefed3ad
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_clickpipes_faq.md
@@ -0,0 +1,94 @@
+import Image from '@theme/IdealImage';
+import clickpipesPricingFaq1 from '@site/static/images/cloud/manage/jan2025_faq/external_clickpipes_pricing_faq_1.png';
+import clickpipesPricingFaq2 from '@site/static/images/cloud/manage/jan2025_faq/external_clickpipes_pricing_faq_2.png';
+import clickpipesPricingFaq3 from '@site/static/images/cloud/manage/jan2025_faq/external_clickpipes_pricing_faq_3.png';
+
+
+
+ClickPipes 복제본이란 무엇인가요?
+
+ClickPipes는 ClickHouse Cloud 서비스와 독립적으로 실행되고 확장되는 전용 인프라를 통해 원격 데이터 소스에서 데이터를 수집합니다. 이러한 이유로 ClickPipes는 전용 컴퓨팅 복제본을 사용합니다. 아래 다이어그램은 단순화된 아키텍처를 보여줍니다.
+
+스트리밍 ClickPipes의 경우, ClickPipes 복제본은 원격 데이터 소스(예: Kafka 브로커)에 접근하여 데이터를 가져오고 처리하여 목적지 ClickHouse 서비스로 삽입합니다.
+
+
+
+객체 저장소 ClickPipes의 경우, ClickPipes 복제본은 데이터 로딩 작업을 조정합니다(복사할 파일 식별, 상태 유지 및 파티션 이동) . 이때 데이터는 ClickHouse 서비스에서 직접 가져옵니다.
+
+
+
+
+
+
+
+기본 복제본 수와 그 크기는 어떻게 되나요?
+
+각 ClickPipe는 기본적으로 2GiB의 RAM과 0.5 vCPU가 제공되는 1개의 복제본을 갖습니다. 이는 **0.25** ClickHouse 컴퓨팅 단위에 해당합니다(1 단위 = 8GiB RAM, 2 vCPU).
+
+
+
+
+
+ClickPipes 복제본을 확장할 수 있나요?
+
+네, 스트리밍을 위한 ClickPipes는 수평 및 수직으로 확장할 수 있습니다. 수평 확장은 처리량을 늘리기 위해 더 많은 복제본을 추가하고, 수직 확장은 더 집약적인 작업을 처리하기 위해 각 복제본에 할당된 리소스(CPU 및 RAM)를 증가시킵니다. 이는 ClickPipe 생성 중 또는 다른 시점에서 **Settings** -> **Advanced Settings** -> **Scaling**에서 구성할 수 있습니다.
+
+
+
+
+
+나는 몇 개의 ClickPipes 복제본이 필요한가요?
+
+이는 작업 부하의 처리량 및 지연 요구 사항에 따라 다릅니다. 기본값인 1개의 복제본으로 시작하고, 지연 시간을 측정한 후 필요에 따라 복제본을 추가하는 것을 권장합니다. Kafka ClickPipes의 경우, Kafka 브로커 파티션도 적절히 확장해야 한다는 점을 명심하세요. 각 스트리밍 ClickPipe의 "settings"에서 확장 제어를 사용할 수 있습니다.
+
+
+
+
+
+
+
+ClickPipes 가격 구조는 어떻게 되나요?
+
+가격은 두 가지 차원으로 구성됩니다:
+- **Compute**: 시간당 단위 가격
+ 컴퓨트는 ClickPipes 복제본 팟이 데이터를 적극적으로 수집하든 아니든 실행되는 비용을 나타냅니다. 모든 ClickPipes 유형에 적용됩니다.
+- **Ingested data**: GB당 가격
+ 수집된 데이터 요금은 모든 스트리밍 ClickPipes(Kafka, Confluent, Amazon MSK, Amazon Kinesis, Redpanda, WarpStream, Azure Event Hubs)의 복제본 팟을 통해 전송되는 데이터에 적용됩니다. 수집된 데이터 크기(GB)는 소스에서 수신된 바이트 수(압축되지 않거나 압축된)를 기준으로 청구됩니다.
+
+
+
+
+
+ClickPipes의 공개 가격은 어떻게 되나요?
+
+- Compute: 시간당 $0.20 per unit ($0.05 per replica per hour)
+- Ingested data: GB당 $0.04
+
+
+
+
+
+예시로 설명하면 어떻게 되나요?
+
+예를 들어, 단일 복제본(0.25 컴퓨트 단위)을 사용하여 Kafka 커넥터를 통해 24시간에 걸쳐 1TB의 데이터를 수집하는 데 드는 비용은 다음과 같습니다:
+
+$$
+(0.25 \times 0.20 \times 24) + (0.04 \times 1000) = \$41.2
+$$
+
+
+객체 저장소 커넥터(S3 및 GCS)의 경우, ClickPipes 팟은 데이터를 처리하지 않고 전송만 조정하므로 ClickPipes의 컴퓨트 비용만 발생합니다. 따라서:
+
+$$
+0.25 \times 0.20 \times 24 = \$1.2
+$$
+
+
+
+
+
+ClickPipes의 가격은 시장에서 어떻게 비교되나요?
+
+ClickPipes 가격 책정의 철학은 플랫폼 운영 비용을 충당하면서 ClickHouse Cloud에 데이터를 쉽게 이전할 수 있는 신뢰할 수 있는 방법을 제공하는 것입니다. 이러한 관점에서 우리의 시장 분석 결과, 우리는 경쟁력 있는 위치에 있는 것으로 나타났습니다.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_clickpipes_faq.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_clickpipes_faq.md.hash
new file mode 100644
index 00000000000..680d3b0de74
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_clickpipes_faq.md.hash
@@ -0,0 +1 @@
+19eddd9169b059eb
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_security_table_of_contents.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_security_table_of_contents.md
new file mode 100644
index 00000000000..d0964406255
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_security_table_of_contents.md
@@ -0,0 +1,11 @@
+| 페이지 | 설명 |
+|------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [ClickHouse 클라우드 보안 기능](/cloud/security) | ClickHouse 조직 및 서비스 보호를 위한 보안 옵션과 모범 사례를 상세히 설명합니다. |
+| [클라우드 접근 관리 가이드](/cloud/security/cloud_access_management) | 이 섹션에는 ClickHouse Cloud에서 접근을 관리하는 단계별 가이드가 포함되어 있습니다. |
+| [IP 필터 설정](/cloud/security/setting-ip-filters) | IP 접근 목록을 생성하거나 수정하는 방법에 대한 가이드입니다. |
+| [프라이빗 네트워킹](/cloud/security/connectivity/private-networking) | ClickHouse Cloud는 귀하의 서비스가 클라우드 가상 네트워크에 연결될 수 있는 기능을 제공합니다. 공급자의 설정 단계를 위한 가이드를 참조하세요. |
+| [데이터 마스킹](/cloud/guides/data-masking) | ClickHouse에서 데이터를 마스킹하는 방법을 배워보세요. |
+| [데이터 암호화](/cloud/security/cmek) | 투명한 데이터 암호화 및 고객 관리 암호화 키를 활성화하는 방법을 배워보세요. |
+| [감사 로그 기록](/cloud/security/audit_logging) | ClickHouse Cloud 콘솔에서 감사 이벤트에 접근하고 검토하는 방법에 대한 가이드와 고객이 BYOC 보안 프로그램 개발에 사용할 수 있는 샘플 로그 및 쿼리를 제공합니다. |
+| [HIPAA 온보딩](/cloud/security/compliance/hipaa-onboarding) | 이 페이지는 ClickHouse Cloud에서 HIPAA 준수 서비스를 배포할 수 있도록 하는 프로세스를 설명합니다. |
+| [PCI 온보딩](/cloud/security/compliance/pci-onboarding) | 이 페이지는 ClickHouse Cloud에서 PCI 준수 서비스를 배포할 수 있도록 하는 프로세스를 설명합니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_security_table_of_contents.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_security_table_of_contents.md.hash
new file mode 100644
index 00000000000..5ef412cda96
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_security_table_of_contents.md.hash
@@ -0,0 +1 @@
+784ad095dfc35022
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/01_cloud_tiers.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/01_cloud_tiers.md
new file mode 100644
index 00000000000..2c91e09c0e7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/01_cloud_tiers.md
@@ -0,0 +1,211 @@
+---
+'sidebar_label': 'ClickHouse Cloud 계층'
+'slug': '/cloud/manage/cloud-tiers'
+'title': 'ClickHouse Cloud 계층'
+'description': 'ClickHouse Cloud에서 사용 가능한 클라우드 계층'
+'keywords':
+- 'cloud tiers'
+- 'service plans'
+- 'cloud pricing tiers'
+- 'cloud service levels'
+'doc_type': 'reference'
+---
+
+
+# ClickHouse Cloud 계층
+
+ClickHouse Cloud에는 여러 계층이 있습니다.
+계층은 조직의 어떤 수준에서나 할당됩니다. 따라서 조직 내 서비스는 동일한 계층에 속합니다.
+이 페이지에서는 특정 사용 사례에 적합한 계층에 대해 논의합니다.
+
+**클라우드 계층 요약:**
+
+
+
+
+
[기본](#basic)
+
[확장(추천)](#scale)
+
[기업](#enterprise)
+
+
+
+
**서비스 기능**
+
+
+
+
서비스 수
+
✓ 무제한
+
✓ 무제한
+
✓ 무제한
+
+
+
스토리지
+
✓ 최대 1 TB / 서비스
+
✓ 무제한
+
✓ 무제한
+
+
+
메모리
+
✓ 총 8-12 GiB 메모리
+
✓ 구성 가능
+
✓ 구성 가능
+
+
+
가용성
+
✓ 1존
+
✓ 2개 이상의 존
+
✓ 2개 이상의 존
+
+
+
백업
+
✓ 24시간마다 1회 백업, 1일간 보관
+
✓ 구성 가능
+
✓ 구성 가능
+
+
+
수직 확장
+
+
✓ 자동 확장
+
✓ 표준 프로필의 경우 자동, 사용자 지정 프로필의 경우 수동
+
+
+
수평 확장
+
+
✓ 수동 확장
+
✓ 수동 확장
+
+
+
ClickPipes
+
✓
+
✓
+
✓
+
+
+
조기 업그레이드
+
+
✓
+
✓
+
+
+
컴퓨트-컴퓨트 분리
+
+
✓
+
✓
+
+
+
자신의 클라우드 계정으로 백업 내보내기
+
+
+
✓
+
+
+
예약된 업그레이드
+
+
+
✓
+
+
+
사용자 지정 하드웨어 프로필
+
+
+
✓
+
+
+
**보안**
+
+
+
+
SAML/SSO
+
+
+
✓
+
+
+
MFA
+
✓
+
✓
+
✓
+
+
+
SOC 2 Type II
+
✓
+
✓
+
✓
+
+
+
ISO 27001
+
✓
+
✓
+
✓
+
+
+
프라이빗 네트워킹
+
+
✓
+
✓
+
+
+
S3 기반 액세스 역할
+
+
✓
+
✓
+
+
+
투명한 데이터 암호화 (CMEK for TDE)
+
+
+
✓
+
+
+
HIPAA
+
+
+
✓
+
+
+
+## 기본 {#basic}
+
+- 단일 복제 배포를 지원하는 비용 효율적인 옵션입니다.
+- 신뢰성 보장이 엄격하지 않은 소규모 데이터 볼륨을 가진 부서 사용 사례에 적합합니다.
+
+:::note
+기본 계층의 서비스는 크기가 고정되어 있으며 자동 및 수동 확장을 허용하지 않습니다.
+서비스를 확장하려면 Scale 또는 Enterprise 계층으로 업그레이드해야 합니다.
+:::
+
+## 확장 {#scale}
+
+향상된 SLA(2개 이상의 복제 배포), 확장성 및 고급 보안이 필요한 작업에 맞게 설계되었습니다.
+
+- 다음과 같은 기능을 지원합니다:
+ - [프라이빗 네트워킹 지원](/cloud/security/connectivity/private-networking).
+ - [컴퓨트-컴퓨트 분리](../reference/warehouses#what-is-compute-compute-separation).
+ - [유연한 확장](/manage/scaling) 옵션(확장 및 축소, 인아웃).
+ - [구성 가능한 백업](/cloud/manage/backups/configurable-backups)
+
+## 기업 {#enterprise}
+
+엄격한 보안 및 규정 준수가 필요한 대규모, 미션 크리티컬 배포를 위한 것입니다.
+
+- Scale의 모든 기능, **추가로**
+- 유연한 확장: 표준 프로필(`1:4 vCPU:메모리 비율`) 및 `HighMemory (1:8 비율)` 및 `HighCPU (1:2 비율)` 사용자 지정 프로필.
+- 최고의 성능 및 신뢰성 보장을 제공합니다.
+- 기업 수준의 보안을 지원합니다:
+ - Single Sign On (SSO)
+ - 향상된 암호화: AWS 및 GCP 서비스의 경우. 서비스는 기본적으로 우리의 키로 암호화되며, 고객 관리 암호화 키(CMEK)를 활성화하기 위해 키를 전환할 수 있습니다.
+- 예약된 업그레이드를 허용합니다: 데이터베이스 및 클라우드 릴리스를 위한 업그레이드를 위한 요일/시간 창을 선택할 수 있습니다.
+- [HIPAA](/cloud/security/compliance-overview#hipaa-since-2024) 및 PCI 준수를 제공합니다.
+- 사용자 계정으로 백업을 내보냅니다.
+
+:::note
+세 가지 계층의 단일 복제 서비스는 크기가 고정되어 있습니다(`8 GiB`, `12 GiB`).
+:::
+
+## 다른 계층으로 업그레이드 {#upgrading-to-a-different-tier}
+
+기본에서 확장 또는 확장에서 기업으로 업그레이드할 수 있습니다. 계층을 다운그레이드하려면 프리미엄 기능을 비활성화해야 합니다.
+
+---
+
+서비스 유형에 대한 질문이 있는 경우, [가격 페이지](https://clickhouse.com/pricing)를 참조하거나 support@clickhouse.com에 문의하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/01_cloud_tiers.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/01_cloud_tiers.md.hash
new file mode 100644
index 00000000000..39ce36bf964
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/01_cloud_tiers.md.hash
@@ -0,0 +1 @@
+28fcd470e1fac40d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/02_integrations.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/02_integrations.md
new file mode 100644
index 00000000000..1a15a092fd1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/02_integrations.md
@@ -0,0 +1,71 @@
+---
+'sidebar_label': '통합'
+'slug': '/manage/integrations'
+'title': '통합'
+'description': 'ClickHouse에 대한 통합'
+'doc_type': 'landing-page'
+'keywords':
+- 'integrations'
+- 'cloud features'
+- 'third-party tools'
+- 'data sources'
+- 'connectors'
+---
+
+import Kafkasvg from '@site/static/images/integrations/logos/kafka.svg';
+import Confluentsvg from '@site/static/images/integrations/logos/confluent.svg';
+import Msksvg from '@site/static/images/integrations/logos/msk.svg';
+import Azureeventhubssvg from '@site/static/images/integrations/logos/azure_event_hubs.svg';
+import Warpstreamsvg from '@site/static/images/integrations/logos/warpstream.svg';
+import S3svg from '@site/static/images/integrations/logos/amazon_s3_logo.svg';
+import AmazonKinesis from '@site/static/images/integrations/logos/amazon_kinesis_logo.svg';
+import Gcssvg from '@site/static/images/integrations/logos/gcs.svg';
+import DOsvg from '@site/static/images/integrations/logos/digitalocean.svg';
+import ABSsvg from '@site/static/images/integrations/logos/azureblobstorage.svg';
+import Postgressvg from '@site/static/images/integrations/logos/postgresql.svg';
+import Mysqlsvg from '@site/static/images/integrations/logos/mysql.svg';
+import Mongodbsvg from '@site/static/images/integrations/logos/mongodb.svg';
+import redpanda_logo from '@site/static/images/integrations/logos/logo_redpanda.png';
+import clickpipes_stack from '@site/static/images/integrations/data-ingestion/clickpipes/clickpipes_stack.png';
+import cp_custom_role from '@site/static/images/integrations/data-ingestion/clickpipes/cp_custom_role.png';
+import Image from '@theme/IdealImage';
+
+ClickHouse Cloud는 사용자가 선호하는 도구와 서비스를 연결할 수 있게 해줍니다.
+
+## ClickHouse Cloud를 위한 관리형 통합 파이프라인 {#clickpipes}
+
+ClickPipes는 다양한 출처에서 데이터를 수집하는 과정을 버튼 클릭 몇 번으로 간단하게 만들어주는 관리형 통합 플랫폼입니다. 가장 수요가 많은 작업 부하를 위해 설계된 ClickPipes의 강력하고 확장 가능한 아키텍처는 일관된 성능과 신뢰성을 보장합니다. ClickPipes는 장기 스트리밍 요구 사항이나 일회성 데이터 로딩 작업에 사용할 수 있습니다.
+
+| 이름 | 로고 | 타입 | 상태 | 설명 |
+|----------------------------------------------------|---------------------------------------------------------------------------------------------------|----------|--------|------------------------------------------------------------------------------------------------------|
+| [Apache Kafka](/integrations/clickpipes/kafka) | | 스트리밍 | 안정적 | ClickPipes를 구성하고 Apache Kafka로부터 ClickHouse Cloud로 스트리밍 데이터를 수집하기 시작하세요. |
+| Confluent Cloud | | 스트리밍 | 안정적 | 직접 통합을 통해 Confluent와 ClickHouse Cloud의 결합된 힘을 활용하세요. |
+| Redpanda | | 스트리밍 | 안정적 | ClickPipes를 구성하고 Redpanda로부터 ClickHouse Cloud로 스트리밍 데이터를 수집하기 시작하세요. |
+| AWS MSK | | 스트리밍 | 안정적 | ClickPipes를 구성하고 AWS MSK로부터 ClickHouse Cloud로 스트리밍 데이터를 수집하기 시작하세요. |
+| Azure Event Hubs | | 스트리밍 | 안정적 | ClickPipes를 구성하고 Azure Event Hubs로부터 ClickHouse Cloud로 스트리밍 데이터를 수집하기 시작하세요. |
+| WarpStream | | 스트리밍 | 안정적 | ClickPipes를 구성하고 WarpStream으로부터 ClickHouse Cloud로 스트리밍 데이터를 수집하기 시작하세요. |
+| Amazon S3 | | 객체 저장소 | 안정적 | ClickPipes를 구성하여 객체 저장소로부터 대량의 데이터를 수집하세요. |
+| Google Cloud Storage | | 객체 저장소 | 안정적 | ClickPipes를 구성하여 객체 저장소로부터 대량의 데이터를 수집하세요. |
+| DigitalOcean Spaces | | 객체 저장소 | 안정적 | ClickPipes를 구성하여 객체 저장소로부터 대량의 데이터를 수집하세요. |
+| Azure Blob Storage | | 객체 저장소 | 비공식 베타 | ClickPipes를 구성하여 객체 저장소로부터 대량의 데이터를 수집하세요. |
+| [Amazon Kinesis](/integrations/clickpipes/kinesis) | | 스트리밍 | 안정적 | ClickPipes를 구성하고 Amazon Kinesis로부터 ClickHouse Cloud로 스트리밍 데이터를 수집하기 시작하세요. |
+| [Postgres](/integrations/clickpipes/postgres) | | DBMS | 안정적 | ClickPipes를 구성하고 Postgres로부터 ClickHouse Cloud로 데이터를 수집하기 시작하세요. |
+| [MySQL](/integrations/clickpipes/mysql) | | DBMS | 비공식 베타 | ClickPipes를 구성하고 MySQL로부터 ClickHouse Cloud로 데이터를 수집하기 시작하세요. |
+| [MongoDB](/integrations/clickpipes/mongodb) | | DBMS | 비공식 프리뷰 | ClickPipes를 구성하고 MongoDB로부터 ClickHouse Cloud로 데이터를 수집하기 시작하세요. |
+
+## 언어 클라이언트 통합 {#language-client-integrations}
+
+ClickHouse는 여러 언어 클라이언트 통합을 제공하며, 각 문서는 아래에 링크되어 있습니다.
+
+| 페이지 | 설명 |
+|-------------------------------------------------------------------------|--------------------------------------------------------------------|
+| [C++](/interfaces/cpp) | C++ 클라이언트 라이브러리 및 userver 비동기 프레임워크 |
+| [C#](/integrations/csharp) | C# 프로젝트를 ClickHouse에 연결하는 방법을 배우세요. |
+| [Go](/integrations/go) | Go 프로젝트를 ClickHouse에 연결하는 방법을 배우세요. |
+| [JavaScript](/integrations/javascript) | 공식 JS 클라이언트를 통해 JS 프로젝트를 ClickHouse에 연결하는 방법을 배우세요. |
+| [Java](/integrations/java) | Java와 ClickHouse의 여러 통합에 대해 더 알아보세요. |
+| [Python](/integrations/python) | Python 프로젝트를 ClickHouse에 연결하는 방법을 배우세요. |
+| [Rust](/integrations/rust) | Rust 프로젝트를 ClickHouse에 연결하는 방법을 배우세요. |
+| [타사 클라이언트](/interfaces/third-party/client-libraries) | 타사 개발자의 클라이언트 라이브러리에 대해 더 알아보세요. |
+
+ClickPipes, 언어 클라이언트 외에도, ClickHouse는 핵심 통합, 파트너 통합 및 커뮤니티 통합을 포함한 다양한 다른 통합을 지원합니다. 전체 목록은 문서의 ["Integrations"](/integrations) 섹션을 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/02_integrations.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/02_integrations.md.hash
new file mode 100644
index 00000000000..f2504def46d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/02_integrations.md.hash
@@ -0,0 +1 @@
+562eabbcd69613ca
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/01_sql-console.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/01_sql-console.md
new file mode 100644
index 00000000000..1df0c0d19de
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/01_sql-console.md
@@ -0,0 +1,313 @@
+---
+'sidebar_title': 'SQL console'
+'slug': '/cloud/get-started/sql-console'
+'description': '쿼리를 실행하고 SQL 콘솔을 사용하여 시각화를 생성합니다.'
+'keywords':
+- 'sql console'
+- 'sql client'
+- 'cloud console'
+- 'console'
+'title': 'SQL 콘솔'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import table_list_and_schema from '@site/static/images/cloud/sqlconsole/table-list-and-schema.png';
+import view_columns from '@site/static/images/cloud/sqlconsole/view-columns.png';
+import abc from '@site/static/images/cloud/sqlconsole/abc.png';
+import inspecting_cell_content from '@site/static/images/cloud/sqlconsole/inspecting-cell-content.png';
+import sort_descending_on_column from '@site/static/images/cloud/sqlconsole/sort-descending-on-column.png';
+import filter_on_radio_column_equal_gsm from '@site/static/images/cloud/sqlconsole/filter-on-radio-column-equal-gsm.png';
+import add_more_filters from '@site/static/images/cloud/sqlconsole/add-more-filters.png';
+import filtering_and_sorting_together from '@site/static/images/cloud/sqlconsole/filtering-and-sorting-together.png';
+import create_a_query_from_sorts_and_filters from '@site/static/images/cloud/sqlconsole/create-a-query-from-sorts-and-filters.png';
+import creating_a_query from '@site/static/images/cloud/sqlconsole/creating-a-query.png';
+import run_selected_query from '@site/static/images/cloud/sqlconsole/run-selected-query.png';
+import run_at_cursor_2 from '@site/static/images/cloud/sqlconsole/run-at-cursor-2.png';
+import run_at_cursor from '@site/static/images/cloud/sqlconsole/run-at-cursor.png';
+import cancel_a_query from '@site/static/images/cloud/sqlconsole/cancel-a-query.png';
+import sql_console_save_query from '@site/static/images/cloud/sqlconsole/sql-console-save-query.png';
+import sql_console_rename from '@site/static/images/cloud/sqlconsole/sql-console-rename.png';
+import sql_console_share from '@site/static/images/cloud/sqlconsole/sql-console-share.png';
+import sql_console_edit_access from '@site/static/images/cloud/sqlconsole/sql-console-edit-access.png';
+import sql_console_add_team from '@site/static/images/cloud/sqlconsole/sql-console-add-team.png';
+import sql_console_edit_member from '@site/static/images/cloud/sqlconsole/sql-console-edit-member.png';
+import sql_console_access_queries from '@site/static/images/cloud/sqlconsole/sql-console-access-queries.png';
+import search_hn from '@site/static/images/cloud/sqlconsole/search-hn.png';
+import match_in_body from '@site/static/images/cloud/sqlconsole/match-in-body.png';
+import pagination from '@site/static/images/cloud/sqlconsole/pagination.png';
+import pagination_nav from '@site/static/images/cloud/sqlconsole/pagination-nav.png';
+import download_as_csv from '@site/static/images/cloud/sqlconsole/download-as-csv.png';
+import tabular_query_results from '@site/static/images/cloud/sqlconsole/tabular-query-results.png';
+import switch_from_query_to_chart from '@site/static/images/cloud/sqlconsole/switch-from-query-to-chart.png';
+import trip_total_by_week from '@site/static/images/cloud/sqlconsole/trip-total-by-week.png';
+import bar_chart from '@site/static/images/cloud/sqlconsole/bar-chart.png';
+import change_from_bar_to_area from '@site/static/images/cloud/sqlconsole/change-from-bar-to-area.png';
+import update_query_name from '@site/static/images/cloud/sqlconsole/update-query-name.png';
+import update_subtitle_etc from '@site/static/images/cloud/sqlconsole/update-subtitle-etc.png';
+import adjust_axis_scale from '@site/static/images/cloud/sqlconsole/adjust-axis-scale.png';
+
+
+# SQL 콘솔
+
+SQL 콘솔은 ClickHouse Cloud에서 데이터베이스를 탐색하고 쿼리하는 가장 빠르고 쉬운 방법입니다. SQL 콘솔을 사용하여 다음과 같은 작업을 수행할 수 있습니다:
+
+- ClickHouse Cloud 서비스에 연결하기
+- 테이블 데이터를 보고, 필터링하고, 정렬하기
+- 몇 번의 클릭만으로 쿼리를 실행하고 결과 데이터를 시각화하기
+- 팀원과 쿼리를 공유하고 더 효과적으로 협업하기.
+
+### 테이블 탐색하기 {#exploring-tables}
+
+### 테이블 목록 및 스키마 정보 보기 {#viewing-table-list-and-schema-info}
+
+귀하의 ClickHouse 인스턴스에 포함된 테이블 개요는 왼쪽 사이드바 영역에서 확인할 수 있습니다. 왼쪽 바 상단의 데이터베이스 선택기를 사용하여 특정 데이터베이스의 테이블을 볼 수 있습니다.
+
+
+목록의 테이블은 컬럼 및 유형을 보기 위해 확장할 수 있습니다.
+
+
+
+### 테이블 데이터 탐색하기 {#exploring-table-data}
+
+목록에서 테이블을 클릭하여 새 탭에서 열 수 있습니다. 테이블 보기에서 데이터는 쉽게 보고, 선택하고, 복사할 수 있습니다. Microsoft Excel 및 Google Sheets와 같은 스프레드시트 응용 프로그램에 복사-붙여넣기를 할 때 구조와 형식이 유지됩니다. 풋터의 내비게이션을 사용하여 테이블 데이터 페이지(30행 단위로 페이지 매김됨) 간을 전환할 수 있습니다.
+
+
+
+### 셀 데이터 검사하기 {#inspecting-cell-data}
+
+Cell Inspector 도구를 사용하여 단일 셀에 포함된 대량의 데이터를 볼 수 있습니다. 이를 열려면 셀을 오른쪽 클릭하고 'Inspect Cell'을 선택합니다. 셀 검사기의 내용은 검사기 내용의 오른쪽 상단 모서리에 있는 복사 아이콘을 클릭하여 복사할 수 있습니다.
+
+
+
+## 테이블 필터링 및 정렬하기 {#filtering-and-sorting-tables}
+
+### 테이블 정렬하기 {#sorting-a-table}
+
+SQL 콘솔에서 테이블을 정렬하려면 테이블을 열고 도구 모음에서 'Sort' 버튼을 선택합니다. 이 버튼은 정렬 구성을 위한 메뉴를 엽니다. 정렬할 컬럼을 선택하고 정렬 순서(오름차순 또는 내림차순)를 구성할 수 있습니다. 'Apply'를 선택하거나 Enter 키를 눌러 테이블을 정렬합니다.
+
+
+
+SQL 콘솔에서는 테이블에 여러 개의 정렬을 추가할 수도 있습니다. 'Sort' 버튼을 다시 클릭하여 또 다른 정렬을 추가합니다.
+
+:::note
+정렬은 정렬 창에 나타나는 순서(위에서 아래로)에 따라 적용됩니다. 정렬을 제거하려면, 정렬 옆에 있는 'x' 버튼을 클릭하면 됩니다.
+:::
+
+### 테이블 필터링하기 {#filtering-a-table}
+
+SQL 콘솔에서 테이블을 필터링하려면 테이블을 열고 'Filter' 버튼을 선택합니다. 정렬과 마찬가지로 이 버튼은 필터 구성을 위한 메뉴를 엽니다. 필터링할 컬럼을 선택하고 필요한 기준을 선택할 수 있습니다. SQL 콘솔은 컬럼에 포함된 데이터 유형에 따라 필터 옵션을 스마트하게 표시합니다.
+
+
+
+필터에 만족하면 'Apply'를 선택하여 데이터를 필터링할 수 있습니다. 아래와 같이 추가 필터를 추가할 수도 있습니다.
+
+
+
+정렬 기능과 유사하게, 필터를 제거하려면 필터 옆에 있는 'x' 버튼을 클릭합니다.
+
+### 필터링 및 정렬 함께 사용하기 {#filtering-and-sorting-together}
+
+SQL 콘솔을 사용하면 테이블을 동시에 필터링하고 정렬할 수 있습니다. 이렇게 하려면, 위에 설명된 단계에 따라 원하는 모든 필터와 정렬을 추가하고 'Apply' 버튼을 클릭하면 됩니다.
+
+
+
+### 필터 및 정렬로 쿼리 생성하기 {#creating-a-query-from-filters-and-sorts}
+
+SQL 콘솔은 원하는 필터 및 정렬 매개변수를 사용하여 클릭 한 번으로 곧바로 쿼리로 변환할 수 있습니다. 도구 모음에서 'Create Query' 버튼을 선택하면 됩니다. 'Create query'를 클릭하면, 테이블 보기의 데이터에 해당하는 SQL 명령이 자동으로 채워진 새 쿼리 탭이 열립니다.
+
+
+
+:::note
+'Create Query' 기능을 사용할 때 필터 및 정렬은 필수가 아닙니다.
+:::
+
+SQL 콘솔에서 쿼리하는 방법에 대해 더 배우고 싶다면 (link) 쿼리 문서를 읽어보세요.
+
+## 쿼리 생성 및 실행 {#creating-and-running-a-query}
+
+### 쿼리 생성하기 {#creating-a-query}
+
+SQL 콘솔에서 새 쿼리를 생성하는 방법은 두 가지가 있습니다.
+
+- 탭 바에서 '+' 버튼을 클릭합니다.
+- 왼쪽 사이드바 쿼리 목록에서 'New Query' 버튼을 선택합니다.
+
+
+
+### 쿼리 실행하기 {#running-a-query}
+
+쿼리를 실행하려면 SQL 에디터에 SQL 명령을 입력하고 'Run' 버튼을 클릭하거나 단축키 `cmd / ctrl + enter`를 사용합니다. 여러 명령을 순차적으로 작성하고 실행하려면 각 명령 뒤에 세미콜론을 추가해야 합니다.
+
+쿼리 실행 옵션
+기본적으로 실행 버튼을 클릭하면 SQL 에디터에 포함된 모든 명령이 실행됩니다. SQL 콘솔은 두 가지 다른 쿼리 실행 옵션을 지원합니다:
+
+- 선택한 명령 실행
+- 커서 위치에서 명령 실행
+
+선택한 명령을 실행하려면 원하는 명령이나 명령의 시퀀스를 강조 표시하고 'Run' 버튼을 클릭합니다(또는 `cmd / ctrl + enter` 단축키를 사용). 선택이 있을 때 SQL 에디터의 컨텍스트 메뉴(에디터 내에서 오른쪽 클릭하여 열 수 있음)에서 'Run selected'를 선택할 수도 있습니다.
+
+
+
+현재 커서 위치에서 명령을 실행하는 방법은 두 가지가 있습니다:
+
+- 확장 실행 옵션 메뉴에서 'At Cursor'를 선택합니다(또는 해당 `cmd / ctrl + shift + enter` 키보드 단축키를 사용).
+
+
+
+- SQL 에디터의 컨텍스트 메뉴에서 'Run at cursor'를 선택합니다.
+
+
+
+:::note
+커서 위치에 있는 명령은 실행 시 노란색으로 깜박입니다.
+:::
+
+### 쿼리 취소하기 {#canceling-a-query}
+
+쿼리가 실행되는 동안, 쿼리 에디터 도구 모음에서 'Run' 버튼은 'Cancel' 버튼으로 바뀝니다. 이 버튼을 클릭하거나 `Esc`를 눌러 쿼리를 취소하면 됩니다. 참고: 이미 반환된 결과는 취소 후에도 유지됩니다.
+
+
+
+### 쿼리 저장하기 {#saving-a-query}
+
+쿼리를 저장하면 나중에 쉽게 찾고 팀원과 공유할 수 있습니다. SQL 콘솔은 쿼리를 폴더로 정리할 수도 있습니다.
+
+쿼리를 저장하려면 도구 모음에서 "Run" 버튼 바로 옆에 있는 "Save" 버튼을 클릭하면 됩니다. 원하는 이름을 입력하고 "Save Query"를 클릭합니다.
+
+:::note
+단축키 `cmd / ctrl` + s를 사용하면 현재 쿼리 탭의 작업도 저장됩니다.
+:::
+
+
+
+또한, 도구 모음에서 "Untitled Query"를 클릭하여 동시에 쿼리의 이름을 정하고 저장할 수 있습니다. 이름을 조정하고 Enter를 누릅니다:
+
+
+
+### 쿼리 공유하기 {#query-sharing}
+
+SQL 콘솔을 사용하면 팀원과 쿼리를 쉽게 공유할 수 있습니다. SQL 콘솔은 글로벌 및 사용자 별로 조정할 수 있는 네 가지 액세스 수준을 지원합니다:
+
+- 소유자(공유 옵션 조정 가능)
+- 쓰기 권한
+- 읽기 전용 권한
+- 액세스 없음
+
+쿼리를 저장한 후, 도구 모음에서 "Share" 버튼을 클릭합니다. 공유 옵션이 있는 모달이 나타납니다:
+
+
+
+서비스에 액세스할 수 있는 모든 조직 구성원을 위한 쿼리 액세스를 조정하려면, 상단 행의 액세스 수준 선택기를 간단하게 조정합니다:
+
+
+
+위의 조정을 적용한 후, 해당 쿼리는 SQL 콘솔에 접근할 수 있는 모든 팀원이 조회하고 실행할 수 있습니다.
+
+특정 구성원에 대한 쿼리 액세스를 조정하려면 "팀원 추가" 선택기에서 원하는 팀원을 선택합니다:
+
+
+
+팀원을 선택한 후, 액세스 수준 선택기가 있는 새 항목이 나타나야 합니다:
+
+
+
+### 공유 쿼리 접근하기 {#accessing-shared-queries}
+
+쿼리가 귀하와 공유된 경우, SQL 콘솔의 "Queries" 탭에 표시됩니다:
+
+
+
+### 쿼리 링크(퍼멀링크) {#linking-to-a-query-permalinks}
+
+저장된 쿼리는 퍼멀링크가 설정되어 있으므로, 공유된 쿼리에 대한 링크를 보내고 받을 수 있으며 직접 열 수 있습니다.
+
+쿼리 내에 존재할 수 있는 매개변수의 값은 자동으로 저장된 쿼리 URL에 쿼리 매개변수로 추가됩니다. 예를 들어, 쿼리에 `{start_date: Date}`와 `{end_date: Date}` 매개변수가 포함된 경우, 퍼멀링크는 다음과 같을 수 있습니다: `https://console.clickhouse.cloud/services/:serviceId/console/query/:queryId?param_start_date=2015-01-01¶m_end_date=2016-01-01`.
+
+## 고급 쿼리 기능 {#advanced-querying-features}
+
+### 쿼리 결과 검색하기 {#searching-query-results}
+
+쿼리가 실행된 후, 결과 창의 검색 입력을 사용하여 반환된 결과 집합을 빠르게 검색할 수 있습니다. 이 기능은 추가 `WHERE` 절의 결과를 미리 보기 위해 또는 특정 데이터가 결과 집합에 포함되었는지 확인하기 위해 유용합니다. 검색 입력란에 값을 입력하면 결과 창이 업데이트되어 입력된 값과 일치하는 레코드를 반환합니다. 이번 예시에서는 `hackernews` 테이블에서 `ClickHouse`를 포함하는 댓글의 모든 `breakfast` 인스턴스를 찾겠습니다(대소문자 구분하지 않음):
+
+
+
+참고: 입력된 값과 일치하는 모든 필드가 반환됩니다. 예를 들어, 위 스크린샷의 세 번째 레코드는 `by` 필드에서 'breakfast'와 일치하지 않지만, `text` 필드는 일치합니다:
+
+
+
+### 페이지 매김 설정 조정하기 {#adjusting-pagination-settings}
+
+기본적으로 쿼리 결과 창은 모든 결과 레코드를 한 페이지에 표시합니다. 더 큰 결과 집합의 경우, 더 쉽게 보기 위해 결과 페이지 매김을 하는 것이 좋습니다. 이는 결과 창의 하단 오른쪽 코너에 있는 페이지 매김 선택기를 사용하여 수행할 수 있습니다:
+
+
+
+페이지 크기를 선택하면 결과 집합에 즉시 페이지 매김이 적용되고 결과 창 풋터 중간에 내비게이션 옵션이 나타납니다.
+
+
+
+### 쿼리 결과 데이터 내보내기 {#exporting-query-result-data}
+
+쿼리 결과 집합은 SQL 콘솔에서 CSV 형식으로 쉽게 내보낼 수 있습니다. 이를 위해 결과 창 도구 모음의 오른쪽에 있는 `•••` 메뉴를 열고 'Download as CSV'를 선택합니다.
+
+
+
+## 쿼리 데이터 시각화하기 {#visualizing-query-data}
+
+일부 데이터는 차트 형태로 해석하기 더 쉽습니다. SQL 콘솔에서 쿼리 결과 데이터로부터 빠르게 시각화를 생성할 수 있습니다. 예를 들어 NYC 택시 여행의 주간 통계를 계산하는 쿼리를 사용하겠습니다:
+
+```sql
+SELECT
+ toStartOfWeek(pickup_datetime) AS week,
+ sum(total_amount) AS fare_total,
+ sum(trip_distance) AS distance_total,
+ count(*) AS trip_total
+FROM
+ nyc_taxi
+GROUP BY
+ 1
+ORDER BY
+ 1 ASC
+```
+
+
+
+시각화 없이 이러한 결과는 해석하기 어렵습니다. 이를 차트로 변환해 보겠습니다.
+
+### 차트 생성하기 {#creating-charts}
+
+시각화를 구축하기 위해, 쿼리 결과 창 도구 모음에서 'Chart' 옵션을 선택합니다. 차트 구성 창이 나타납니다:
+
+
+
+우리는 `주별`로 `trip_total`을 추적하는 간단한 막대 차트를 생성하는 것부터 시작하겠습니다. 이를 위해, `week` 필드를 x축으로, `trip_total` 필드를 y축으로 드래그합니다:
+
+
+
+대부분의 차트 유형은 수치 축에서 여러 필드를 지원합니다. 이를 시연하기 위해, fare_total 필드를 y축에 드래그합니다:
+
+
+
+### 차트 사용자 정의하기 {#customizing-charts}
+
+SQL 콘솔은 차트 구성 창의 차트 유형 선택기에서 선택할 수 있는 열 가지 차트 유형을 지원합니다. 예를 들어, 이전 차트 유형을 막대에서 영역으로 쉽게 변경할 수 있습니다:
+
+
+
+차트 제목은 데이터를 제공하는 쿼리의 이름과 일치합니다. 쿼리 이름을 업데이트하면 차트 제목도 업데이트됩니다:
+
+
+
+차트 구성 창의 '고급' 섹션에서 더 많은 고급 차트 특성을 조정할 수 있습니다. 우선, 다음 설정을 조정하겠습니다:
+
+- 부제목
+- 축 제목
+- x축의 레이블 방향
+
+우리의 차트는 그에 따라 업데이트됩니다:
+
+
+
+일부 시나리오에서는 각 필드에 대해 축 스케일을 독립적으로 조정해야 할 수도 있습니다. 이는 '고급' 섹션에서 축 범위에 대한 최소 및 최대 값을 지정하여도 수행할 수 있습니다. 예를 들어, 위의 차트는 보기 좋지만, `trip_total`과 `fare_total` 필드 간의 상관관계를 시연하기 위해선 축 범위를 조정해야 합니다:
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/01_sql-console.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/01_sql-console.md.hash
new file mode 100644
index 00000000000..cb06d4f06b4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/01_sql-console.md.hash
@@ -0,0 +1 @@
+9289182afcfb2fcb
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/02_query-insights.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/02_query-insights.md
new file mode 100644
index 00000000000..16f9095464a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/02_query-insights.md
@@ -0,0 +1,58 @@
+---
+'sidebar_title': 'Query insights'
+'slug': '/cloud/get-started/query-insights'
+'description': '시스템.query_log 데이터를 시각화하여 쿼리 디버깅 및 성능 최적화를 단순화합니다.'
+'keywords':
+- 'query insights'
+- 'query log'
+- 'query log ui'
+- 'system.query_log insights'
+'title': '쿼리 통찰력'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import insights_overview from '@site/static/images/cloud/sqlconsole/insights_overview.png';
+import insights_latency from '@site/static/images/cloud/sqlconsole/insights_latency.png';
+import insights_recent from '@site/static/images/cloud/sqlconsole/insights_recent.png';
+import insights_drilldown from '@site/static/images/cloud/sqlconsole/insights_drilldown.png';
+import insights_query_info from '@site/static/images/cloud/sqlconsole/insights_query_info.png';
+
+
+# 쿼리 인사이트
+
+**쿼리 인사이트** 기능은 ClickHouse의 내장 쿼리 로그를 다양한 시각화 및 테이블을 통해 사용하기 쉽게 만듭니다. ClickHouse의 `system.query_log` 테이블은 쿼리 최적화, 디버깅 및 전체 클러스터의 건강 상태와 성능 모니터링을 위한 주요 정보 출처입니다.
+
+## 쿼리 개요 {#query-overview}
+
+서비스를 선택한 후, 왼쪽 사이드바의 **모니터링** 내비게이션 항목이 확장되어 새로운 **쿼리 인사이트** 하위 항목이 표시됩니다. 이 옵션을 클릭하면 새로운 쿼리 인사이트 페이지가 열립니다:
+
+
+
+## 최상위 메트릭 {#top-level-metrics}
+
+상단의 통계 박스는 선택된 기간 동안의 기본 최상위 쿼리 메트릭을 나타냅니다. 그 아래에는 쿼리 종류(선택, 삽입, 기타)에 따라 시간 창에서 쿼리 볼륨, 대기 시간, 오류 비율을 나타내는 세 개의 시계열 차트를 노출했습니다. 대기 시간 차트는 p50, p90 및 p99 대기 시간을 표시하도록 추가로 조정할 수 있습니다:
+
+
+
+## 최근 쿼리 {#recent-queries}
+
+최상위 메트릭 아래에는 선택된 시간 창에 대한 쿼리 로그 항목(정규화된 쿼리 해시 및 사용자별로 그룹화됨)이 표시된 테이블이 나타납니다:
+
+
+
+최근 쿼리는 사용 가능한 모든 필드로 필터링 및 정렬할 수 있습니다. 테이블은 또한 테이블, p90 및 p99 대기 시간과 같은 추가 필드를 표시하거나 숨기도록 구성할 수 있습니다.
+
+## 쿼리 세부 정보 {#query-drill-down}
+
+최근 쿼리 테이블에서 쿼리를 선택하면 해당 쿼리에 대한 메트릭 및 정보를 담고 있는 플라이아웃이 열립니다:
+
+
+
+플라이아웃에서 볼 수 있듯이, 이 특정 쿼리는 지난 24시간 동안 3000회 이상 실행되었습니다. **쿼리 정보** 탭의 모든 메트릭은 집계된 메트릭이지만, **쿼리 이력** 탭을 선택하여 개별 실행에 대한 메트릭도 볼 수 있습니다:
+
+
+
+
+
+이 패널에서 각 쿼리 실행에 대한 `설정` 및 `프로파일 이벤트` 항목을 확장하여 추가 정보를 확인할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/02_query-insights.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/02_query-insights.md.hash
new file mode 100644
index 00000000000..c9757df330c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/02_query-insights.md.hash
@@ -0,0 +1 @@
+9d89878ce52b700f
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/03_query-endpoints.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/03_query-endpoints.md
new file mode 100644
index 00000000000..c8658829694
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/03_query-endpoints.md
@@ -0,0 +1,29 @@
+---
+'sidebar_title': 'Query API endpoints'
+'slug': '/cloud/features/query-api-endpoints'
+'description': '저장된 쿼리에서 REST API 엔드포인트를 쉽게 생성하세요'
+'keywords':
+- 'api'
+- 'query api endpoints'
+- 'query endpoints'
+- 'query rest api'
+'title': '쿼리 API 엔드포인트'
+'doc_type': 'guide'
+---
+
+import {CardSecondary} from '@clickhouse/click-ui/bundled';
+import Link from '@docusaurus/Link'
+
+
+# 쿼리 API 엔드포인트
+
+대화형 데이터 중심 애플리케이션을 구축하려면 빠른 데이터베이스, 잘 구조화된 데이터 및 최적화된 쿼리뿐만 아니라
+프론트엔드 및 마이크로서비스가 쿼리로 반환된 데이터를 소비할 수 있는 쉬운 방법이 필요합니다. 가능하다면 잘 구조화된 API를 통한 방법이 이상적입니다.
+
+**쿼리 API 엔드포인트** 기능을 사용하면 ClickHouse Cloud 콘솔에서 저장된 SQL 쿼리에서 직접 API 엔드포인트를 생성할 수 있습니다.
+네이티브 드라이버를 통해 ClickHouse Cloud 서비스에 연결할 필요 없이 HTTP를 통해 저장된 쿼리를 실행하기 위해 API 엔드포인트에 접근할 수 있습니다.
+
+:::tip 안내
+[쿼리 API 엔드포인트 안내](/cloud/get-started/query-endpoints)를 참조하여
+몇 가지 간단한 단계로 쿼리 API 엔드포인트를 설정하는 방법을 확인하세요.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/03_query-endpoints.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/03_query-endpoints.md.hash
new file mode 100644
index 00000000000..714ac5a296b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/03_query-endpoints.md.hash
@@ -0,0 +1 @@
+a0c120d16834821a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/04_dashboards.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/04_dashboards.md
new file mode 100644
index 00000000000..d7b11cdca19
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/04_dashboards.md
@@ -0,0 +1,111 @@
+---
+'sidebar_label': '대시보드'
+'slug': '/cloud/manage/dashboards'
+'title': '대시보드'
+'description': 'SQL Console의 대시보드 기능을 사용하면 저장된 쿼리에서 시각화를 수집하고 공유할 수 있습니다.'
+'doc_type': 'guide'
+'keywords':
+- 'ClickHouse Cloud'
+- 'dashboards'
+- 'data visualization'
+- 'SQL console dashboards'
+- 'cloud analytics'
+---
+
+import BetaBadge from '@theme/badges/BetaBadge';
+import Image from '@theme/IdealImage';
+import dashboards_2 from '@site/static/images/cloud/dashboards/2_dashboards.png';
+import dashboards_3 from '@site/static/images/cloud/dashboards/3_dashboards.png';
+import dashboards_4 from '@site/static/images/cloud/dashboards/4_dashboards.png';
+import dashboards_5 from '@site/static/images/cloud/dashboards/5_dashboards.png';
+import dashboards_6 from '@site/static/images/cloud/dashboards/6_dashboards.png';
+import dashboards_7 from '@site/static/images/cloud/dashboards/7_dashboards.png';
+import dashboards_8 from '@site/static/images/cloud/dashboards/8_dashboards.png';
+import dashboards_9 from '@site/static/images/cloud/dashboards/9_dashboards.png';
+import dashboards_10 from '@site/static/images/cloud/dashboards/10_dashboards.png';
+import dashboards_11 from '@site/static/images/cloud/dashboards/11_dashboards.png';
+
+
+# 대시보드
+
+SQL 콘솔의 대시보드 기능을 사용하면 저장된 쿼리에서 시각화를 수집하고 공유할 수 있습니다. 쿼리를 저장하고 시각화하는 것부터 시작하여, 대시보드에 쿼리 시각화를 추가하고, 쿼리 파라미터를 사용하여 대시보드를 상호작용형으로 만드는 방법을 배워보세요.
+
+## 핵심 개념 {#core-concepts}
+
+### 쿼리 공유 {#query-sharing}
+
+동료와 대시보드를 공유하려면 기본적인 저장 쿼리도 함께 공유해야 합니다. 시각화를 보기 위해서는 사용자에게 최소한 읽기 전용 액세스 권한이 있어야 합니다.
+
+### 상호작용성 {#interactivity}
+
+대시보드를 상호작용형으로 만들기 위해 [쿼리 파라미터](/sql-reference/syntax#defining-and-using-query-parameters)를 사용하세요. 예를 들어, `WHERE` 절에 쿼리 파라미터를 추가하여 필터 역할을 할 수 있습니다.
+
+대시보드의 시각화 설정에서 “필터” 유형을 선택하여 **Global** 필터 사이드 패널을 통해 쿼리 파라미터 입력을 전환할 수 있습니다. 또한 대시보드의 다른 객체(표와 같은)에 연결하여 쿼리 파라미터 입력을 전환할 수 있습니다. 아래의 빠른 시작 가이드 “[필터 구성하기](/cloud/manage/dashboards#configure-a-filter)” 섹션을 참조하시기 바랍니다.
+
+## 빠른 시작 {#quick-start}
+
+[query_log](/operations/system-tables/query_log) 시스템 테이블을 사용하여 ClickHouse 서비스를 모니터링하는 대시보드를 생성해 보겠습니다.
+
+## 빠른 시작 {#quick-start-1}
+
+### 저장된 쿼리 만들기 {#create-a-saved-query}
+
+시각화할 저장된 쿼리가 이미 있는 경우, 이 단계를 건너뛸 수 있습니다.
+
+새 쿼리 탭을 열고 ClickHouse 시스템 테이블을 사용하여 서비스의 쿼리 양을 날짜별로 세는 쿼리를 작성해 보겠습니다:
+
+
+
+쿼리의 결과를 테이블 형식으로 보거나 차트 뷰에서 시각화를 구축하기 시작할 수 있습니다. 다음 단계에서는 쿼리를 `queries over time`으로 저장해 보겠습니다:
+
+
+
+저장된 쿼리와 관련된 자세한 문서는 [쿼리 저장 섹션](/cloud/get-started/sql-console#saving-a-query)에서 확인할 수 있습니다.
+
+쿼리 종류별 쿼리 수를 세는 또 다른 쿼리인 `query count by query kind`를 생성하고 저장할 수 있습니다. SQL 콘솔에서 데이터의 막대 차트 시각화는 다음과 같습니다.
+
+
+
+이제 두 개의 쿼리가 생겼으므로, 이 쿼리들을 시각화하고 수집할 대시보드를 만들어 보겠습니다.
+
+### 대시보드 생성하기 {#create-a-dashboard}
+
+대시보드 패널로 이동하여 “새 대시보드”를 클릭합니다. 이름을 지정한 후, 첫 번째 대시보드를 성공적으로 생성한 것입니다!
+
+
+
+### 시각화 추가하기 {#add-a-visualization}
+
+두 개의 저장된 쿼리인 `queries over time`과 `query count by query kind`가 있습니다. 첫 번째 쿼리를 선형 차트로 시각화해 보겠습니다. 시각화에 제목과 부제목을 지정하고, 시각화할 쿼리를 선택합니다. 다음으로 “선형” 차트 유형을 선택하고 x 및 y축을 지정합니다.
+
+
+
+여기서는 숫자 형식, 범례 레이아웃 및 축 레이블과 같은 추가적인 스타일 변경도 가능합니다.
+
+다음으로 두 번째 쿼리를 테이블로 시각화하고 선형 차트 바로 아래에 배치해 보겠습니다.
+
+
+
+두 개의 저장된 쿼리를 시각화하여 첫 번째 대시보드를 생성했습니다!
+
+### 필터 구성하기 {#configure-a-filter}
+
+쿼리 종류에 대한 필터를 추가하여 대시보드를 상호작용형으로 만들어 보겠습니다. 이를 통해 Insert 쿼리와 관련된 트렌드만 표시할 수 있습니다. 이 작업은 [쿼리 파라미터](/sql-reference/syntax#defining-and-using-query-parameters)를 사용하여 수행합니다.
+
+선형 차트 옆의 세 개의 점을 클릭하고, 쿼리 옆의 연필 버튼을 클릭하여 인라인 쿼리 편집기를 엽니다. 여기에서 대시보드에서 기본 저장 쿼리를 직접 편집할 수 있습니다.
+
+
+
+이제 노란색 실행 쿼리 버튼을 누르면 이전에 보았던 쿼리가 Insert 쿼리로만 필터링되어 표시됩니다. 쿼리를 업데이트하려면 저장 버튼을 클릭하세요. 차트 설정으로 돌아가면 선형 차트를 필터링할 수 있습니다.
+
+이제 상단 리본의 Global Filters를 사용하여 입력을 변경하여 필터를 전환할 수 있습니다.
+
+
+
+선형 차트의 필터를 테이블에 연결하고자 할 경우, 시각화 설정으로 돌아가서 query_kind 쿼리 파라미터의 값 출처를 테이블로 변경하고, query_kind 컬럼을 연결할 필드로 선택할 수 있습니다.
+
+
+
+이제 쿼리 종류 테이블에서 선형 차트의 필터를 직접 제어할 수 있어 대시보드를 상호작용형으로 만들 수 있습니다.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/04_dashboards.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/04_dashboards.md.hash
new file mode 100644
index 00000000000..b9dc42ff16e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/04_dashboards.md.hash
@@ -0,0 +1 @@
+8344f04f68d08111
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/_category_.json
new file mode 100644
index 00000000000..07e636bd5ed
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "SQL console",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/hyperdx.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/hyperdx.md
new file mode 100644
index 00000000000..8c2719c1a7c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/hyperdx.md
@@ -0,0 +1,36 @@
+---
+'sidebar_label': 'HyperDX'
+'slug': '/cloud/manage/hyperdx'
+'title': 'HyperDX'
+'description': '제공하는 HyperDX는 ClickHouse와 OpenTelemetry (OTel) 기반의 생산 등급 관찰 가능성 플랫폼인
+ ClickStack의 UI로, 단일의 고성능 확장 가능한 솔루션에서 로그, 추적, 메트릭 및 세션을 통합합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'hyperdx'
+- 'observability'
+- 'integration'
+- 'cloud features'
+- 'monitoring'
+---
+
+import PrivatePreviewBadge from '@theme/badges/PrivatePreviewBadge';
+import Image from '@theme/IdealImage';
+import hyperdx_cloud from '@site/static/images/use-cases/observability/hyperdx_cloud.png';
+
+
+
+HyperDX는 [**ClickStack**](/use-cases/observability/clickstack)의 사용자 인터페이스로, ClickHouse와 OpenTelemetry (OTel) 기반의 프로덕션급 관찰 가능성 플랫폼이며, 로그, 추적, 메트릭 및 세션을 단일의 고성능 솔루션으로 통합합니다. 복잡한 시스템을 모니터링하고 디버깅하기 위해 설계된 ClickStack은 개발자와 SRE가 도구 간 전환을 하거나 타임스탬프나 상관 관계 ID를 사용하여 수동으로 데이터를 연결하지 않고도 문제를 끝에서 끝까지 추적할 수 있도록 합니다.
+
+HyperDX는 관찰 가능성 데이터를 탐색하고 시각화하기 위해 특별히 설계된 프론트 엔드로, Lucene 스타일 및 SQL 쿼리, 대화형 대시보드, 알림, 추적 탐색 등을 지원하며, 모두 ClickHouse를 백엔드로 최적화되어 있습니다.
+
+ClickHouse Cloud에서 HyperDX를 사용하면 사용자는 보다 간편한 ClickStack 경험을 누릴 수 있습니다 - 관리할 인프라가 없고 별도의 인증을 설정할 필요가 없습니다. HyperDX는 한 번의 클릭으로 실행할 수 있으며 데이터와 연결됩니다 - ClickHouse Cloud 인증 시스템에 완전히 통합되어 관찰 가능성 통찰에 대한 원활하고 안전한 액세스를 제공합니다.
+
+## 배포 {#main-concepts}
+
+ClickHouse Cloud에서 HyperDX는 현재 비공식 미리보기 상태이며 조직 수준에서 활성화해야 합니다. 활성화되면 사용자는 모든 서비스를 선택할 때 주요 왼쪽 탐색 메뉴에서 HyperDX를 찾을 수 있습니다.
+
+
+
+ClickHouse Cloud에서 HyperDX를 시작하려면 전용 [시작 가이드](/use-cases/observability/clickstack/deployment/hyperdx-clickhouse-cloud)를 권장합니다.
+
+ClickStack에 대한 추가 세부정보는 [전체 문서](/use-cases/observability/clickstack)를 참조하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/hyperdx.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/hyperdx.md.hash
new file mode 100644
index 00000000000..50af0773340
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/03_sql_console_features/hyperdx.md.hash
@@ -0,0 +1 @@
+f4fc04b7bcaf7e1a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/_category_.json
new file mode 100644
index 00000000000..41f211b5456
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Infrastructure",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/01_auto_scaling.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/01_auto_scaling.md
new file mode 100644
index 00000000000..89a08534e10
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/01_auto_scaling.md
@@ -0,0 +1,157 @@
+---
+'sidebar_position': 1
+'sidebar_label': '자동 스케일링'
+'slug': '/manage/scaling'
+'description': 'ClickHouse Cloud에서 자동 스케일링 구성하기'
+'keywords':
+- 'autoscaling'
+- 'auto scaling'
+- 'scaling'
+- 'horizontal'
+- 'vertical'
+- 'bursts'
+'title': '자동 스케일링'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import auto_scaling from '@site/static/images/cloud/manage/AutoScaling.png';
+import scaling_patch_request from '@site/static/images/cloud/manage/scaling-patch-request.png';
+import scaling_patch_response from '@site/static/images/cloud/manage/scaling-patch-response.png';
+import scaling_configure from '@site/static/images/cloud/manage/scaling-configure.png';
+import scaling_memory_allocation from '@site/static/images/cloud/manage/scaling-memory-allocation.png';
+import ScalePlanFeatureBadge from '@theme/badges/ScalePlanFeatureBadge'
+
+
+# 자동 스케일링
+
+스케일링은 클라이언트의 요청을 충족하기 위해 사용 가능한 리소스를 조정하는 능력을 의미합니다. Scale 및 Enterprise (표준 1:4 프로파일) 계층 서비스는 API를 프로그래밍 방식으로 호출하거나 UI에서 설정을 변경하여 수평적으로 스케일링할 수 있습니다. 이러한 서비스는 애플리케이션의 요구에 맞춰 **자동 스케일링**할 수 있습니다.
+
+
+
+:::note
+Scale 및 Enterprise 계층은 단일 및 다중 복제본 서비스를 모두 지원하지만, Basic 계층은 단일 복제본 서비스만 지원합니다. 단일 복제본 서비스는 크기가 고정되어 있으며 수직 또는 수평 스케일링을 허용하지 않습니다. 사용자는 Scale 또는 Enterprise 계층으로 업그레이드하여 서비스를 스케일링할 수 있습니다.
+:::
+
+## ClickHouse Cloud에서 스케일링 작동 방식 {#how-scaling-works-in-clickhouse-cloud}
+
+현재 ClickHouse Cloud는 Scale 계층 서비스에 대해 수직 자동 스케일링 및 수동 수평 스케일링을 지원합니다.
+
+Enterprise 계층 서비스의 경우 스케일링은 다음과 같이 작동합니다:
+
+- **수평 스케일링**: 수동 수평 스케일링은 엔터프라이즈 계층의 모든 표준 및 사용자 지정 프로파일에서 가능하다.
+- **수직 스케일링**:
+ - 표준 프로파일(1:4)은 수직 자동 스케일링을 지원합니다.
+ - 사용자 지정 프로파일(`highMemory` 및 `highCPU`)은 수직 자동 스케일링 또는 수동 수직 스케일링을 지원하지 않습니다. 그러나 이러한 서비스는 지원에 문의하여 수직으로 스케일링할 수 있습니다.
+
+:::note
+ClickHouse Cloud의 스케일링은 우리가 ["Make Before Break" (MBB)](/cloud/features/mbb) 접근 방식이라고 부르는 방식으로 이루어집니다. 이는 기존의 복제본을 제거하기 전에 새 크기의 복제본을 하나 이상 추가하여 스케일링 작업 중 용량 손실을 방지합니다. 기존 복제본을 제거하고 새 복제본을 추가하는 간격을 없애 MBB는 보다 원활하고 방해가 적은 스케일링 프로세스를 생성합니다. 이는 고용량 자원 사용이 추가 용량 필요성을 촉발하는 스케일 업 시나리오에서 특히 유익합니다. 모든 쿼리가 완료될 때까지 최대 1시간까지 기다린 후에 기존 복제본을 제거합니다. 이것은 기존 쿼리가 완료될 필요성과 동시에 기존 복제본이 너무 오래 남아있지 않도록 균형을 맞춥니다.
+
+이 변경 사항의 일환으로 다음 사항에 유의하시기 바랍니다:
+1. 역사적 시스템 테이블 데이터는 스케일링 이벤트의 일환으로 최대 30일 동안 유지됩니다. 또한, AWS 또는 GCP의 서비스에 대한 2024년 12월 19일 이전의 시스템 테이블 데이터와 Azure의 서비스에 대한 2025년 1월 14일 이전의 데이터는 새로운 조직 계층으로의 마이그레이션의 일환으로 유지되지 않습니다.
+2. TDE(투명 데이터 암호화)를 사용하는 서비스의 경우 MBB 작업 이후 시스템 테이블 데이터는 현재 유지되지 않습니다. 이 제한 사항을 없애기 위해 작업 중입니다.
+:::
+
+### 수직 자동 스케일링 {#vertical-auto-scaling}
+
+
+
+Scale 및 Enterprise 서비스는 CPU 및 메모리 사용량에 기반한 자동 스케일링을 지원합니다. 우리는 서비스의 과거 사용량을 30시간의 기간에 걸쳐 모니터링하여 스케일링 결정을 내립니다. 사용량이 특정 임계값을 초과하거나 미치지 않으면, 수요에 맞게 서비스를 적절히 스케일합니다.
+
+MBB가 아닌 서비스의 경우, CPU 기반 자동 스케일링은 CPU 사용량이 50-75% 범위의 상한선을 초과할 때 시작됩니다(실제 임계값은 클러스터 크기에 따라 다름). 이 시점에서 클러스터에 할당된 CPU가 두 배가 됩니다. CPU 사용량이 상한선의 절반(예: 50% 상한선의 경우 25%) 이하로 떨어지면, CPU 할당량이 절반으로 줄어듭니다.
+
+MBB 스케일링 방식을 이미 이용 중인 서비스의 경우, 스케일 업은 75% CPU 임계값에서 발생하고, 스케일 다운은 그 임계값의 절반인 37.5%에서 발생합니다.
+
+메모리 기반 자동 스케일링은 클러스터를 최대 메모리 사용량의 125%로 스케일링하며, OOM(out of memory) 오류가 발생할 경우 최대 150%까지 스케일링합니다.
+
+**더 큰** CPU 또는 메모리 권장 사항이 선택되며, 서비스에 할당된 CPU 및 메모리는 `1` CPU 및 `4 GiB` 메모리의 일정한 증가로 스케일됩니다.
+
+### 수직 자동 스케일링 구성하기 {#configuring-vertical-auto-scaling}
+
+ClickHouse Cloud Scale 또는 Enterprise 서비스의 스케일링은 **Admin** 역할을 가진 조직 구성원이 조정할 수 있습니다. 수직 자동 스케일링을 구성하려면 서비스의 **Settings** 탭으로 가서 아래와 같이 최소 및 최대 메모리와 CPU 설정을 조정하십시오.
+
+:::note
+단일 복제본 서비스는 모든 계층에서 스케일링할 수 없습니다.
+:::
+
+
+
+복제본의 **최대 메모리**를 **최소 메모리**보다 높은 값으로 설정합니다. 그러면 서비스가 그 범위 내에서 필요에 따라 스케일됩니다. 이러한 설정은 서비스 초기 생성 과정에서도 가능합니다. 서비스의 각 복제본은 동일한 메모리 및 CPU 리소스를 할당받게 됩니다.
+
+이러한 값을 동일하게 설정하면 본질적으로 서비스를 특정 구성에 "고정"하게 됩니다. 이렇게 하면 선택한 원하는 크기로 즉시 스케일링이 이루어집니다.
+
+이로 인해 클러스터에서 모든 자동 스케일링이 비활성화되며, 서비스는 이 설정을 초과하는 CPU 또는 메모리 사용량 증가로부터 보호받지 못합니다.
+
+:::note
+Enterprise 계층 서비스의 경우 표준 1:4 프로파일이 수직 자동 스케일링을 지원합니다. 사용자 지정 프로파일은 출시 시 수직 자동 스케일링 또는 수동 수직 스케일링을 지원하지 않습니다. 그러나 이러한 서비스는 지원에 문의하여 수직으로 스케일링할 수 있습니다.
+:::
+
+## 수동 수평 스케일링 {#manual-horizontal-scaling}
+
+
+
+ClickHouse Cloud의 [공식 API](https://clickhouse.com/docs/cloud/manage/api/swagger#/paths/~1v1~1organizations~1:organizationId~1services~1:serviceId~1scaling/patch)를 사용하여 서비스의 스케일링 설정을 업데이트하거나 클라우드 콘솔에서 복제 수를 조정하여 서비스를 스케일링할 수 있습니다.
+
+**Scale** 및 **Enterprise** 계층은 또한 단일 복제본 서비스를 지원합니다. 한 번 스케일 아웃된 서비스는 최소 하나의 복제로 다시 스케일링할 수 있습니다. 단일 복제본 서비스는 가용성이 감소하므로 생산 환경 사용은 권장하지 않습니다.
+
+:::note
+서비스는 최대 20개의 복제로 수평 스케일링할 수 있습니다. 추가 복제가 필요하면 지원팀에 문의해 주시기 바랍니다.
+:::
+
+### API를 통한 수평 스케일링 {#horizontal-scaling-via-api}
+
+클러스터를 수평적으로 스케일링하려면 API를 통해 `PATCH` 요청을 발행하여 복제본의 수를 조정합니다. 아래 스크린샷은 `3` 복제본 클러스터를 `6` 복제본으로 스케일 아웃하는 API 호출과 해당 응답을 보여줍니다.
+
+
+
+*`numReplicas` 업데이트를 위한 `PATCH` 요청*
+
+
+
+*`PATCH` 요청의 응답*
+
+진행 중인 하나의 요청이 있을 때 새 스케일링 요청이나 여러 요청을 연속해서 발행하면 스케일링 서비스는 중간 상태를 무시하고 최종 복제본 수치에 수렴합니다.
+
+### UI를 통한 수평 스케일링 {#horizontal-scaling-via-ui}
+
+UI에서 서비스를 수평으로 스케일링하려면 **Settings** 페이지에서 서비스의 복제본 수를 조정할 수 있습니다.
+
+
+
+*ClickHouse Cloud 콘솔의 서비스 스케일링 설정*
+
+서비스가 스케일링된 후에는 클라우드 콘솔의 메트릭 대시보드에서 서비스에 대한 올바른 할당이 표시되어야 합니다. 아래 스크린샷은 클러스터가 총 메모리 `96 GiB`로 스케일링되었으며, 각 복제본이 `16 GiB`의 메모리 할당을 받고 있는 모습을 보여줍니다.
+
+
+
+## 자동 대기 {#automatic-idling}
+**Settings** 페이지에서 서비스가 비활성 상태일 때 자동 대기를 허용할지 여부를 선택할 수 있습니다(즉, 서비스가 사용자가 제출한 쿼리를 실행하지 않을 때). 자동 대기 기능은 서비스의 비용을 줄여주며, 서비스가 일시 정지된 동안 컴퓨팅 자원에 대한 요금이 청구되지 않습니다.
+
+:::note
+특정 특수 사례에서는, 예를 들어 서비스에 많은 수의 파트가 있는 경우, 서비스가 자동으로 대기 상태로 전환되지 않을 수 있습니다.
+
+서비스는 [Refreshable Materialized Views](/materialized-view/refreshable-materialized-view)의 새로 고침, [S3Queue](/engines/table-engines/integrations/s3queue)에서의 소비 및 새로운 병합 작업의 일정을 일시 중단하여 대기 상태에 들어갈 수 있습니다. 서비스가 대기 상태로 전환되기 전에 기존의 병합 작업이 완료됩니다. Refreshable Materialized Views 및 S3Queue 소비의 연속적인 작동을 보장하기 위해 대기 상태 기능을 비활성화하십시오.
+:::
+
+:::danger 자동 대기를 사용하지 말아야 할 때
+자동 대기는 쿼리에 대한 응답 전에 지연을 처리할 수 있는 경우에만 사용하십시오. 서비스가 일시 정지될 때 서비스에 대한 연결이 타임아웃되기 때문입니다. 자동 대기는 빈번하게 사용되지 않으며 지연을 감내할 수 있는 서비스에 적합합니다. 자주 사용되는 고객 대면 기능을 지원하는 서비스에는 권장되지 않습니다.
+:::
+
+## 작업 부하 급증 처리하기 {#handling-bursty-workloads}
+
+앞으로 작업 부하 급증이 예상되는 경우, [ClickHouse Cloud API](/cloud/manage/api/api-overview)를 사용하여 서비스를 미리 스케일업하여 급증에 대비하고 수요가 감소하면 다시 스케일다운할 수 있습니다.
+
+각 복제본의 현재 CPU 코어 및 사용 중인 메모리를 이해하려면 아래 쿼리를 실행하십시오:
+
+```sql
+SELECT *
+FROM clusterAllReplicas('default', view(
+ SELECT
+ hostname() AS server,
+ anyIf(value, metric = 'CGroupMaxCPU') AS cpu_cores,
+ formatReadableSize(anyIf(value, metric = 'CGroupMemoryTotal')) AS memory
+ FROM system.asynchronous_metrics
+))
+ORDER BY server ASC
+SETTINGS skip_unavailable_shards = 1
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/01_auto_scaling.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/01_auto_scaling.md.hash
new file mode 100644
index 00000000000..19171894646
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/01_auto_scaling.md.hash
@@ -0,0 +1 @@
+f4d5e950efcfb2b6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/02_make_before_break.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/02_make_before_break.md
new file mode 100644
index 00000000000..028e55fb1ed
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/02_make_before_break.md
@@ -0,0 +1,45 @@
+---
+'sidebar_position': 1
+'sidebar_label': 'Make Before Break (MBB)'
+'slug': '/cloud/features/mbb'
+'description': 'ClickHouse Cloud에서의 Make Before Break (MBB) 작업을 설명하는 페이지'
+'keywords':
+- 'Make Before Break'
+- 'MBB'
+- 'Scaling'
+- 'ClickHouse Cloud'
+'title': 'ClickHouse Cloud에서의 Make Before Break (MBB) 작업'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import mbb_diagram from '@site/static/images/cloud/features/mbb/vertical_scaling.png';
+
+ClickHouse Cloud는 **Make Before Break** (MBB) 접근 방식을 사용하여 클러스터 업그레이드 및 클러스터 확장을 수행합니다.
+이 접근 방식에서는 기존 복제본을 제거하기 전에 클러스터에 새 복제본을 추가합니다.
+이는 이전 복제본을 먼저 제거한 후 새 복제본을 추가하는 break-first 접근 방식과 대비됩니다.
+
+MBB 접근 방식에는 여러 가지 이점이 있습니다:
+* 기존 복제본을 제거하기 전에 용량이 클러스터에 추가되므로, **전체 클러스터 용량이 감소하지 않습니다**. 물론 노드나 디스크 장애와 같은 예기치 않은 사건은 클라우드 환경에서 여전히 발생할 수 있습니다.
+* 이 접근 방식은 클러스터가 과중한 부하를 겪고 있는 상황에서 **기존 복제본이 과부하에 걸리는 것을 방지**하기 때문에 특히 유용합니다.
+* 복제본을 먼저 제거할 필요 없이 신속하게 추가할 수 있기 때문에, 이 접근 방식은 **더 빠르고, 더 반응적인** 확장 경험으로 이어집니다.
+
+아래 이미지는 서비스가 수직 확장되는 3개의 복제본을 가진 클러스터에서 이러한 일이 어떻게 발생할 수 있는지를 보여줍니다:
+
+
+
+전반적으로 MBB는 이전에 사용된 break-first 접근 방식에 비해 원활하고 덜 방해되는 확장 및 업그레이드 경험을 제공합니다.
+
+MBB와 관련하여 사용자들이 알아야 할 주요 행동이 몇 가지 있습니다:
+
+1. MBB 작업은 현재 복제본에서 기존 작업이 완료될 때까지 기다립니다.
+ 이 기간은 현재 1시간으로 설정되어 있으며, 즉 복제본이 제거되기 전에 장기 실행 쿼리에 대해 확장 또는 업그레이드가 최대 1시간까지 대기할 수 있음을 의미합니다.
+ 또한, 복제본에서 백업 프로세스가 실행 중인 경우 복제본이 종료되기 전에 해당 프로세스가 완료됩니다.
+2. 복제본이 종료되기 전에 대기 시간이 있기 때문에, 클러스터가 설정된 최대 복제본 수보다 더 많은 복제본을 가질 수 있는 상황이 발생할 수 있습니다.
+ 예를 들어, 서비스에 총 6개의 복제본이 있다고 가정할 때, MBB 작업이 진행 중일 때 3개의 추가 복제본이 클러스터에 추가되어 총 9개의 복제본이 생길 수 있으며, 이전 복제본이 여전히 쿼리를 처리하고 있습니다.
+ 이는 클러스터가 원하는 복제본 수보다 한동안 더 많은 복제본을 가진다는 것을 의미합니다.
+ 또한, 여러 MBB 작업이 동시에 겹칠 수 있어 복제본 축적이 발생할 수 있습니다. 이는 API를 통해 클러스터에 여러 개의 수직 확장 요청이 전송되는 시나리오에서 발생할 수 있습니다.
+ ClickHouse Cloud는 클러스터가 축적할 수 있는 복제본 수를 제한하기 위한 검사를 시행하고 있습니다.
+3. MBB 작업에서는 시스템 테이블 데이터가 30일 동안 유지됩니다. 이는 클러스터에서 MBB 작업이 발생할 때마다 30일 분량의 시스템 테이블 데이터가 이전 복제본에서 새 복제본으로 복제된다는 것을 의미합니다.
+
+MBB 작업의 메커니즘에 대해 더 알아보려면, ClickHouse 엔지니어링 팀의 [블로그 포스트](https://clickhouse.com/blog/make-before-break-faster-scaling-mechanics-for-clickhouse-cloud)를 참조하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/02_make_before_break.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/02_make_before_break.md.hash
new file mode 100644
index 00000000000..59c7a787f12
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/02_make_before_break.md.hash
@@ -0,0 +1 @@
+a534821bb727445b
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/_category_.json
new file mode 100644
index 00000000000..1c448ae10ae
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/automatic_scaling/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Automatic Scaling",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/deployment-options.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/deployment-options.md
new file mode 100644
index 00000000000..b368d86d57c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/deployment-options.md
@@ -0,0 +1,41 @@
+---
+'title': '배포 옵션'
+'slug': '/infrastructure/deployment-options'
+'description': 'ClickHouse 고객을 위한 배포 옵션'
+'keywords':
+- 'bring yor own cloud'
+- 'byoc'
+- 'private'
+- 'government'
+- 'self-deployed'
+'doc_type': 'reference'
+---
+
+
+# ClickHouse 배포 옵션
+
+ClickHouse는 다양한 고객 요구를 충족시키기 위해 여러 배포 옵션을 제공합니다. 이는 다양한 수준의 제어, 규정 준수 및 운영 오버헤드를 제공합니다. 이 문서는 사용자가 특정 아키텍처 선호도, 규제 의무 및 리소스 관리 전략에 맞는 최적의 솔루션을 선택할 수 있도록 다양한 배포 유형을 설명합니다.
+
+## ClickHouse 클라우드 {#clickhouse-cloud}
+
+ClickHouse 클라우드는 완전 관리형 클라우드 네이티브 서비스로, 자체 관리의 운영 복잡성 없이 ClickHouse의 성능과 속도를 제공합니다. 이 옵션은 빠른 배포, 확장성 및 최소한의 관리 오버헤드를 중요시하는 사용자에게 이상적입니다. ClickHouse 클라우드는 인프라 프로비저닝, 확장, 유지 관리 및 업데이트와 관련된 모든 측면을 처리하여 사용자가 데이터 분석 및 애플리케이션 개발에 전적으로 집중할 수 있도록 합니다. 소비 기반 요금제를 제공하며, 자동 확장을 통해 분석 워크로드에 대해 신뢰할 수 있고 비용 효율적인 성능을 보장합니다. AWS, GCP 및 Azure에서 사용할 수 있으며, 직접적인 마켓플레이스 청구 옵션을 제공합니다.
+
+[ClickHouse 클라우드](/getting-started/quick-start/cloud)에 대해 자세히 알아보세요.
+
+## Bring Your Own Cloud {#byoc}
+
+ClickHouse Bring Your Own Cloud (BYOC)는 조직이 관리형 서비스 레이어를 활용하면서 자체 클라우드 환경 내에서 ClickHouse를 배포하고 관리할 수 있도록 합니다. 이 옵션은 ClickHouse 클라우드의 완전 관리형 경험과 자체 관리 배포의 완전한 제어 간의 격차를 메웁니다. ClickHouse BYOC를 사용하면 사용자는 데이터, 인프라 및 보안 정책에 대한 제어를 유지하면서 패치, 모니터링 및 확장과 같은 운영 작업을 ClickHouse에 위임하여 특정 규정 준수 및 규제 요구 사항을 충족할 수 있습니다. 이 모델은 관리형 서비스의 이점을 가진 프라이빗 클라우드 배포의 유연성을 제공하여 엄격한 보안, 거버넌스 및 데이터 거주 요건을 가진 대규모 기업 배포에 적합합니다.
+
+[Bring Your Own Cloud](/cloud/reference/byoc/overview)에 대해 자세히 알아보세요.
+
+## ClickHouse 프라이빗 {#clickhouse-private}
+
+ClickHouse 프라이빗은 ClickHouse 클라우드에서 제공되는 것과 동일한 독점 기술을 활용하여 자체 배포 버전입니다. 이 옵션은 가장 높은 수준의 제어를 제공하여 엄격한 규정 준수, 네트워킹 및 보안 요구 사항이 있는 조직 및 자체 인프라를 관리할 수 있는 운영 전문 지식을 가진 팀에 이상적입니다. ClickHouse 클라우드 환경에서 철저히 테스트된 정기적인 업데이트 및 업그레이드와 기능이 풍부한 로드맵을 이점으로 하며, 전문 지원 팀의 지원을 받습니다.
+
+[ClickHouse 프라이빗](/cloud/infrastructure/clickhouse-private)에 대해 자세히 알아보세요.
+
+## ClickHouse 정부 {#clickhouse-government}
+
+ClickHouse 정부는 정부 기관과 공공 부문 조직의 고유하고 까다로운 요구 사항을 충족하도록 설계된 ClickHouse의 자체 배포 버전입니다. 이 배포 옵션은 고도로 안전하고 규정 준수하며 격리된 환경을 제공하며, OpenSSL을 활용한 FIPS 140-3 준수, 추가 시스템 강화 및 취약점 관리를 중점적으로 다룹니다. ClickHouse 클라우드의 강력한 기능을 활용하면서 정부 기관의 특정 운영 및 보안 요구 사항을 해결하기 위해 특수 기능 및 구성 요소를 통합합니다. ClickHouse 정부를 사용하면 기관이 제어되고 인증된 인프라 내에서 민감한 데이터에 대한 고성능 분석을 달성할 수 있으며, 공공 부문 요구 사항에 맞춘 전문 지원을 받습니다.
+
+[ClickHouse 정부](/cloud/infrastructure/clickhouse-government)에 대해 자세히 알아보세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/deployment-options.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/deployment-options.md.hash
new file mode 100644
index 00000000000..a92d372717d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/deployment-options.md.hash
@@ -0,0 +1 @@
+589779427e3e5ffc
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/replica-aware-routing.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/replica-aware-routing.md
new file mode 100644
index 00000000000..dc98198eae6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/replica-aware-routing.md
@@ -0,0 +1,49 @@
+---
+'title': '복제본 인식 라우팅'
+'slug': '/manage/replica-aware-routing'
+'description': '복제본 인식 라우팅을 사용하여 캐시 재사용을 증가시키는 방법'
+'keywords':
+- 'cloud'
+- 'sticky endpoints'
+- 'sticky'
+- 'endpoints'
+- 'sticky routing'
+- 'routing'
+- 'replica aware routing'
+'doc_type': 'guide'
+---
+
+import PrivatePreviewBadge from '@theme/badges/PrivatePreviewBadge';
+
+
+# 복제본 인식 라우팅
+
+
+
+복제본 인식 라우팅(스티키 세션, 스티키 라우팅 또는 세션 친화성으로도 알려짐)은 [Envoy 프록시의 링 해시 로드 밸런싱](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancers#ring-hash)을 활용합니다. 복제본 인식 라우팅의 주요 목적은 캐시 재사용 가능성을 높이는 것입니다. 격리는 보장하지 않습니다.
+
+서비스에 대해 복제본 인식 라우팅을 활성화하면 서비스 호스트 이름 위에 와일드카드 하위 도메인을 허용합니다. 호스트 이름이 `abcxyz123.us-west-2.aws.clickhouse.cloud`인 서비스의 경우, `*.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud`와 일치하는 모든 호스트 이름을 사용하여 서비스에 방문할 수 있습니다:
+
+|예시 호스트 이름|
+|---|
+|`aaa.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud`|
+|`000.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud`|
+|`clickhouse-is-the-best.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud`|
+
+Envoy가 이러한 패턴과 일치하는 호스트 이름을 받으면, 호스트 이름을 기반으로 라우팅 해시를 계산하고 계산된 해시를 기반으로 해시 링에서 해당 ClickHouse 서버를 찾습니다. 서비스에 대한 진행 중인 변경 사항이 없다고 가정할 때(예: 서버 재시작, 확장), Envoy는 항상 연결할 동일한 ClickHouse 서버를 선택합니다.
+
+원래 호스트 이름은 기본 라우팅 알고리즘인 `LEAST_CONNECTION` 로드 밸런싱을 여전히 사용한다는 점에 유의하십시오.
+
+## 복제본 인식 라우팅의 한계 {#limitations-of-replica-aware-routing}
+
+### 복제본 인식 라우팅은 격리를 보장하지 않습니다 {#replica-aware-routing-does-not-guarantee-isolation}
+
+서비스에 대한 중단이 발생할 경우(예: 서버 파드 재시작(버전 업그레이드, 충돌, 수직 확장 등으로 인한 이유)이나 서버 확장/축소 등) 라우팅 해시 링에 중단이 발생하게 됩니다. 이로 인해 동일한 호스트 이름으로 연결된 경우 다른 서버 파드에 연결될 수 있습니다.
+
+### 복제본 인식 라우팅은 프라이빗 링크와 기본적으로 작동하지 않습니다 {#replica-aware-routing-does-not-work-out-of-the-box-with-private-link}
+
+고객은 새 호스트 이름 패턴에 대한 이름 해결을 가능하게 하려면 DNS 항목을 수동으로 추가해야 합니다. 고객이 이를 잘못 사용할 경우 서버 부하 불균형을 초래할 수 있습니다.
+
+## 복제본 인식 라우팅 구성하기 {#configuring-replica-aware-routing}
+
+복제본 인식 라우팅을 활성화하려면 [지원 팀에 문의하십시오](https://clickhouse.com/support/program).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/replica-aware-routing.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/replica-aware-routing.md.hash
new file mode 100644
index 00000000000..f4b558a15db
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/replica-aware-routing.md.hash
@@ -0,0 +1 @@
+b88c93d83967c07e
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-catalog.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-catalog.md
new file mode 100644
index 00000000000..9a780706a46
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-catalog.md
@@ -0,0 +1,89 @@
+---
+'slug': '/cloud/reference/shared-catalog'
+'sidebar_label': '공유 카탈로그'
+'title': '공유 카탈로그 및 공유 데이터베이스 엔진'
+'keywords':
+- 'SharedCatalog'
+- 'SharedDatabaseEngine'
+'description': 'ClickHouse Cloud에서 Shared Catalog 구성 요소와 Shared database engine을 설명합니다.'
+'doc_type': 'reference'
+---
+
+
+# Shared catalog and shared database engine {#shared-catalog-and-shared-database-engine}
+
+**ClickHouse Cloud(및 제1자 파트너 클라우드 서비스) 전용 제공**
+
+Shared Catalog는 ClickHouse Cloud에서 상태 비저장 엔진을 사용하는 데이터베이스 및 테이블의 메타데이터 및 DDL 작업을 복제하는 클라우드 네이티브 구성 요소입니다. 이는 이러한 객체에 대한 일관되고 중앙 집중화된 상태 관리를 가능하게 하여, 동적이거나 부분적으로 오프라인인 환경에서도 메타데이터 일관성을 보장합니다.
+
+Shared Catalog는 **테이블 자체를 복제하지 않고**, DDL 쿼리 및 메타데이터를 복제하여 모든 복제본이 데이터베이스 및 테이블 정의에 대한 일관된 뷰를 갖도록 보장합니다.
+
+다음 데이터베이스 엔진의 복제를 지원합니다:
+
+- Shared
+- PostgreSQL
+- MySQL
+- DataLakeCatalog
+
+## Architecture and metadata storage {#architecture-and-metadata-storage}
+
+Shared Catalog의 모든 메타데이터 및 DDL 쿼리 기록은 ZooKeeper에 중앙 집중화되어 저장됩니다. 로컬 디스크에 어떤 것도 지속되지 않습니다. 이 아키텍처는 다음을 보장합니다:
+
+- 모든 복제본 간의 일관된 상태
+- 컴퓨트 노드의 비상태성
+- 빠르고 신뢰할 수 있는 복제본 부트스트랩
+
+## Shared database engine {#shared-database-engine}
+
+**Shared database engine**은 Shared Catalog와 함께 작동하여 **상태 비저장 테이블 엔진**인 `SharedMergeTree`와 같은 테이블을 사용하는 데이터베이스를 관리합니다. 이러한 테이블 엔진은 지속적인 상태를 디스크에 기록하지 않으며 동적 컴퓨트 환경과 호환됩니다.
+
+Shared database engine은 Replicated database engine의 동작을 개선하고 추가 보장 및 운영상의 이점을 제공합니다.
+
+### Key benefits {#key-benefits}
+
+- **원자적 CREATE TABLE ... AS SELECT**
+ 테이블 생성 및 데이터 삽입은 원자적으로 실행됩니다—전체 작업이 완료되거나 테이블이 전혀 생성되지 않습니다.
+
+- **데이터베이스 간 RENAME TABLE**
+ 데이터베이스 간 테이블의 원자적 이동을 가능하게 합니다:
+```sql
+RENAME TABLE db1.table TO db2.table;
+```
+
+- **자동 테이블 복구를 통한 UNDROP TABLE**
+ 삭제된 테이블은 기본적으로 8시간 동안 유지되며 복원할 수 있습니다:
+```sql
+UNDROP TABLE my_table;
+```
+ 보존 창은 서버 설정을 통해 구성 가능합니다.
+
+- **개선된 컴퓨트-컴퓨트 분리**
+ DROP 쿼리를 처리하기 위해 모든 복제본이 온라인 상태여야 하는 Replicated database engine과는 달리, Shared Catalog는 중앙 집중화된 메타데이터 삭제를 수행합니다. 이는 일부 복제본이 오프라인인 경우에도 작업이 성공할 수 있게 합니다.
+
+- **자동 메타데이터 복제**
+ Shared Catalog는 데이터베이스 정의가 시작 시 모든 서버에 자동으로 복제되도록 보장합니다. 운영자는 새 인스턴스에서 메타데이터를 수동으로 구성하거나 동기화할 필요가 없습니다.
+
+- **중앙 집중식, 버전 관리된 메타데이터 상태**
+ Shared Catalog는 ZooKeeper에 단일 진실의 출처를 저장합니다. 복제본이 시작되면 최신 상태를 가져와 일관성을 달성하기 위해 차이를 적용합니다. 쿼리 실행 중에는 시스템이 정확성을 보장하기 위해 다른 복제본이 적어도 요구되는 메타데이터 버전에 도달할 때까지 기다릴 수 있습니다.
+
+## Usage in ClickHouse Cloud {#usage-in-clickhouse-cloud}
+
+최종 사용자는 Shared Catalog 및 Shared database engine을 사용할 때 추가 구성이 필요하지 않습니다. 데이터베이스 생성은 항상 동일합니다:
+
+```sql
+CREATE DATABASE my_database;
+```
+
+ClickHouse Cloud는 자동으로 Shared database engine을 데이터베이스에 할당합니다. 상태 비저장 엔진을 사용하여 이러한 데이터베이스 내에서 생성된 모든 테이블은 자동으로 Shared Catalog의 복제 및 조정 기능을 활용하게 됩니다.
+
+## Summary {#summary}
+
+Shared Catalog와 Shared database engine은 다음을 제공합니다:
+
+- 상태 비저장 엔진에 대한 신뢰할 수 있고 자동화된 메타데이터 복제
+- 로컬 메타데이터 지속성 없는 비상태 컴퓨트
+- 복잡한 DDL에 대한 원자적 작업
+- 탄력적, 일시적, 또는 부분적으로 오프라인 컴퓨트 환경에 대한 견고한 지원
+- ClickHouse Cloud 사용자를 위한 원활한 사용
+
+이러한 기능들은 Shared Catalog가 ClickHouse Cloud에서 확장 가능한 클라우드 네이티브 메타데이터 관리의 기초가 되게 만듭니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-catalog.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-catalog.md.hash
new file mode 100644
index 00000000000..f1d5ecc30e4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-catalog.md.hash
@@ -0,0 +1 @@
+99029cd9cb84bea9
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-merge-tree.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-merge-tree.md
new file mode 100644
index 00000000000..09fd013f997
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-merge-tree.md
@@ -0,0 +1,120 @@
+---
+'slug': '/cloud/reference/shared-merge-tree'
+'sidebar_label': 'SharedMergeTree'
+'title': 'SharedMergeTree'
+'keywords':
+- 'SharedMergeTree'
+'description': 'SharedMergeTree 테이블 엔진에 대해 설명합니다.'
+'doc_type': 'reference'
+---
+
+import shared_merge_tree from '@site/static/images/cloud/reference/shared-merge-tree-1.png';
+import shared_merge_tree_2 from '@site/static/images/cloud/reference/shared-merge-tree-2.png';
+import Image from '@theme/IdealImage';
+
+
+# SharedMergeTree 테이블 엔진
+
+SharedMergeTree 테이블 엔진 계열은 ReplicatedMergeTree 엔진의 클라우드 네이티브 대체 요소로, 공유 스토리지 위에서 작동하도록 최적화 되어 있습니다 (예: Amazon S3, Google Cloud Storage, MinIO, Azure Blob Storage). 각특정 MergeTree 엔진 유형에 대해 SharedMergeTree의 아나로그가 존재합니다. 즉, ReplacingSharedMergeTree는 ReplacingReplicatedMergeTree를 대체합니다.
+
+SharedMergeTree 테이블 엔진 계열은 ClickHouse Cloud의 핵심 기능을 제공합니다. 최종 사용자에게는 ReplicatedMergeTree 기반 엔진 대신 SharedMergeTree 엔진 계열을 사용하기 위해 변경할 것 없이 시작할 수 있습니다. 다음과 같은 추가 이점을 제공합니다:
+
+- 높은 삽입 처리량
+- 백그라운드 병합의 처리량 개선
+- 변형 처리량 개선
+- 더 빠른 스케일 업 및 스케일 다운 작업
+- 선택 쿼리를 위한 더 경량의 강력한 일관성
+
+SharedMergeTree가 가져오는 중요한 개선 사항은 ReplicatedMergeTree와 비교하여 컴퓨트와 스토리지의 더 깊은 분리를 제공한다는 것입니다. 아래에서 ReplicatedMergeTree가 컴퓨트와 스토리지를 어떻게 분리하는지 확인할 수 있습니다:
+
+
+
+보시다시피, ReplicatedMergeTree에 저장된 데이터가 오브젝트 스토리지에 저장되더라도 메타데이터는 여전히 각 clickhouse-server에 존재합니다. 이는 모든 복제 작업에 대해 메타데이터도 모든 복제본에 복제되어야 함을 의미합니다.
+
+
+
+ReplicatedMergeTree와 달리 SharedMergeTree는 복제본 간의 통신을 필요로 하지 않습니다. 대신 모든 통신은 공유 스토리지와 clickhouse-keeper를 통해 이루어집니다. SharedMergeTree는 비동기 리더리스 복제를 구현하고 협조 및 메타데이터 저장을 위해 clickhouse-keeper를 사용합니다. 이는 서비스가 스케일 인 및 스케일 아웃 할 때 메타데이터가 복제될 필요가 없음을 의미합니다. 이는 더 빠른 복제, 변형, 병합 및 스케일 업 작업으로 이어집니다. SharedMergeTree는 각 테이블에 대해 수백 개의 복제본을 허용하여 샤드 없이 동적으로 스케일할 수 있게 합니다. ClickHouse Cloud에서는 분산 쿼리 실행 방식을 사용하여 쿼리의 컴퓨트 자원을 더 활용합니다.
+
+## Introspection {#introspection}
+
+ReplicatedMergeTree의 introspection에 사용되는 대부분의 시스템 테이블은 SharedMergeTree에서도 존재하지만, `system.replication_queue` 및 `system.replicated_fetches`는 데이터와 메타데이터가 복제되지 않기 때문에 존재하지 않습니다. 그러나 SharedMergeTree에는 이 두 테이블에 대한 해당 대안이 있습니다.
+
+**system.virtual_parts**
+
+이 테이블은 SharedMergeTree에 대한 `system.replication_queue`의 대안 역할을 합니다. 가장 최근의 현재 파트 세트 및 병합, 변형, 삭제된 파티션과 같은 진행 중인 미래 파트에 대한 정보를 저장합니다.
+
+**system.shared_merge_tree_fetches**
+
+이 테이블은 SharedMergeTree에 대한 `system.replicated_fetches`의 대안입니다. 현재 진행 중인 기본 키 및 체크섬을 메모리로 가져오는 정보가 포함되어 있습니다.
+
+## SharedMergeTree 활성화 {#enabling-sharedmergetree}
+
+`SharedMergeTree`는 기본적으로 활성화되어 있습니다.
+
+SharedMergeTree 테이블 엔진을 지원하는 서비스에서는 수동으로 활성화할 필요가 없습니다. 이전과 동일한 방법으로 테이블을 생성할 수 있으며, CREATE TABLE 쿼리에 지정된 엔진에 해당하는 SharedMergeTree 기반의 테이블 엔진이 자동으로 사용됩니다.
+
+```sql
+CREATE TABLE my_table(
+ key UInt64,
+ value String
+)
+ENGINE = MergeTree
+ORDER BY key
+```
+
+이렇게 하면 SharedMergeTree 테이블 엔진을 사용하여 `my_table` 테이블이 생성됩니다.
+
+ClickHouse Cloud에서 `default_table_engine=MergeTree`이므로 `ENGINE=MergeTree`를 지정할 필요가 없습니다. 다음 쿼리는 위 쿼리와 동일합니다.
+
+```sql
+CREATE TABLE my_table(
+ key UInt64,
+ value String
+)
+ORDER BY key
+```
+
+Replacing, Collapsing, Aggregating, Summing, VersionedCollapsing 또는 Graphite MergeTree 테이블을 사용하는 경우, 자동으로 해당 SharedMergeTree 기반 테이블 엔진으로 변환됩니다.
+
+```sql
+CREATE TABLE myFirstReplacingMT
+(
+ `key` Int64,
+ `someCol` String,
+ `eventTime` DateTime
+)
+ENGINE = ReplacingMergeTree
+ORDER BY key;
+```
+
+주어진 테이블에 대해 어떤 테이블 엔진이 사용되었는지 `SHOW CREATE TABLE`을 통해 확인할 수 있습니다:
+```sql
+SHOW CREATE TABLE myFirstReplacingMT;
+```
+
+```sql
+CREATE TABLE default.myFirstReplacingMT
+( `key` Int64, `someCol` String, `eventTime` DateTime )
+ENGINE = SharedReplacingMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}')
+ORDER BY key
+```
+
+## 설정 {#settings}
+
+일부 설정 동작이 크게 변경되었습니다:
+
+- `insert_quorum` -- SharedMergeTree에 대한 모든 삽입은 공통 삽입(공유 스토리지에 기록됨)이므로 SharedMergeTree 테이블 엔진을 사용할 때 이 설정이 필요하지 않습니다.
+- `insert_quorum_parallel` -- SharedMergeTree에 대한 모든 삽입은 공통 삽입(공유 스토리지에 기록됨)이므로 SharedMergeTree 테이블 엔진을 사용할 때 이 설정이 필요하지 않습니다.
+- `select_sequential_consistency` -- 공통 삽입을 필요로 하지 않으며 `SELECT` 쿼리에서 clickhouse-keeper에 추가 로드를 유발합니다.
+
+## 일관성 {#consistency}
+
+SharedMergeTree는 ReplicatedMergeTree보다 더 나은 경량 일관성을 제공합니다. SharedMergeTree에 데이터를 삽입할 때 `insert_quorum` 또는 `insert_quorum_parallel`과 같은 설정을 제공할 필요가 없습니다. 삽입은 공통 삽입으로, 메타데이터는 ClickHouse-Keeper에 저장되고, 이 메타데이터는 ClickHouse-keeper의 최소 공통 수로 복제됩니다. 클러스터의 각 복제본은 ClickHouse-Keeper에서 비동기적으로 새로운 정보를 가져옵니다.
+
+대부분의 경우 `select_sequential_consistency`나 `SYSTEM SYNC REPLICA LIGHTWEIGHT`를 사용할 필요는 없습니다. 비동기 복제가 대부분의 시나리오를 처리하며 지연 시간이 매우 낮습니다. 이전 읽기를 방지해야 하는 희귀한 경우에는 다음 권장 사항을 선호 순서에 따라 따르십시오:
+
+1. 읽기 및 쓰기를 동일한 세션이나 동일한 노드에서 실행하는 경우, 복제본이 이미 가장 최근 메타데이터를 갖고 있기 때문에 `select_sequential_consistency`를 사용할 필요가 없습니다.
+
+2. 한 복제본에 쓰고 다른 복제본에서 읽는 경우, `SYSTEM SYNC REPLICA LIGHTWEIGHT`를 사용하여 복제본이 ClickHouse-Keeper에서 메타데이터를 가져오도록 강제할 수 있습니다.
+
+3. 쿼리의 일부로 설정의 `select_sequential_consistency`를 사용합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-merge-tree.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-merge-tree.md.hash
new file mode 100644
index 00000000000..bc2ed8309d2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/shared-merge-tree.md.hash
@@ -0,0 +1 @@
+6dd53191a13fa8e2
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/warehouses.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/warehouses.md
new file mode 100644
index 00000000000..c8779172242
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/warehouses.md
@@ -0,0 +1,191 @@
+---
+'title': '창고'
+'slug': '/cloud/reference/warehouses'
+'keywords':
+- 'compute separation'
+- 'cloud'
+- 'architecture'
+- 'compute-compute'
+- 'warehouse'
+- 'warehouses'
+- 'hydra'
+'description': 'ClickHouse Cloud에서의 컴퓨트-컴퓨트 분리'
+'doc_type': 'reference'
+---
+
+import compute_1 from '@site/static/images/cloud/reference/compute-compute-1.png';
+import compute_2 from '@site/static/images/cloud/reference/compute-compute-2.png';
+import compute_3 from '@site/static/images/cloud/reference/compute-compute-3.png';
+import compute_4 from '@site/static/images/cloud/reference/compute-compute-4.png';
+import compute_5 from '@site/static/images/cloud/reference/compute-compute-5.png';
+import compute_7 from '@site/static/images/cloud/reference/compute-compute-7.png';
+import compute_8 from '@site/static/images/cloud/reference/compute-compute-8.png';
+import Image from '@theme/IdealImage';
+
+```md
+
+# 웨어하우스
+
+## compute-compute 분리란 무엇인가요? {#what-is-compute-compute-separation}
+
+compute-compute 분리는 Scale 및 Enterprise 티어에서 사용 가능합니다.
+
+각 ClickHouse Cloud 서비스에는 다음이 포함됩니다:
+- 두 개 이상의 ClickHouse 노드(또는 복제본)의 그룹이 필요하지만, 자식 서비스는 단일 복제본일 수 있습니다.
+- 서비스에 연결하기 위해 사용하는 서비스 URL인 엔드포인트(또는 ClickHouse Cloud UI 콘솔을 통해 생성된 여러 엔드포인트)입니다 (예: `https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443`).
+- 서비스가 모든 데이터 및 일부 메타데이터를 저장하는 객체 저장소 폴더:
+
+:::note
+자식 단일 서비스는 단일 부모 서비스와 달리 수직으로 확장할 수 있습니다.
+:::
+
+
+
+
+
+_Fig. 1 - ClickHouse Cloud의 현재 서비스_
+
+compute-compute 분리는 사용자가 동일한 객체 저장소 폴더를 사용하는 여러 컴퓨팅 노드 그룹을 생성할 수 있도록 하며, 따라서 동일한 테이블, 뷰 등과 함께 사용할 수 있습니다.
+
+각 컴퓨팅 노드 그룹은 자체 엔드포인트를 가지고 있어 작업 부하에 사용할 복제본 세트를 선택할 수 있습니다. 일부 작업 부하는 작은 규모의 복제본 하나로도 만족될 수 있으며, 다른 작업 부하는 완전한 고가용성(HA)과 수백 기가의 메모리를 요구할 수 있습니다. compute-compute 분리는 읽기 작업과 쓰기 작업을 분리할 수 있게 해 주어 서로 간섭하지 않도록 합니다:
+
+
+
+
+
+_Fig. 2 - ClickHouse Cloud의 compute 분리_
+
+기존 서비스와 동일한 데이터를 공유하는 추가 서비스를 생성하거나, 동일한 데이터를 공유하는 여러 서비스를 갖춘 완전히 새로운 설정을 생성할 수 있습니다.
+
+## 웨어하우스란 무엇인가요? {#what-is-a-warehouse}
+
+ClickHouse Cloud에서 _웨어하우스_는 동일한 데이터를 공유하는 서비스 집합입니다.
+각 웨어하우스에는 기본 서비스(가장 먼저 생성된 서비스)와 보조 서비스가 있습니다. 예를 들어, 아래 스크린샷에서는 두 개의 서비스가 있는 "DWH Prod" 웨어하우스를 볼 수 있습니다:
+
+- 기본 서비스 `DWH Prod`
+- 보조 서비스 `DWH Prod Subservice`
+
+
+
+
+
+_Fig. 3 - 웨어하우스 예시_
+
+웨어하우스의 모든 서비스는 다음을 공유합니다:
+
+- 리전 (예: us-east1)
+- 클라우드 서비스 제공업체 (AWS, GCP 또는 Azure)
+- ClickHouse 데이터베이스 버전
+
+서비스는 속한 웨어하우스에 따라 정렬할 수 있습니다.
+
+## 액세스 제어 {#access-controls}
+
+### 데이터베이스 자격 증명 {#database-credentials}
+
+웨어하우스의 모든 서비스는 동일한 테이블 집합을 공유하므로 다른 서비스에 대한 액세스 제어도 공유합니다. 이는 Service 1에서 생성된 모든 데이터베이스 사용자가 동일한 권한(테이블, 뷰 등에 대한 부여)으로 Service 2를 사용할 수 있음을 의미하며, 그 반대도 마찬가지입니다. 사용자는 각 서비스에 대해 다른 엔드포인트를 사용하지만 동일한 사용자 이름과 비밀번호를 사용할 것입니다. 다시 말해, _사용자는 동일한 저장소와 함께 작업하는 서비스 간에 공유됩니다:_
+
+
+
+
+
+_Fig. 4 - 사용자 Alice는 Service 1에서 생성되었지만 동일한 데이터를 공유하는 모든 서비스에 접근하기 위해 동일한 자격 증명을 사용할 수 있습니다._
+
+### 네트워크 액세스 제어 {#network-access-control}
+
+특정 서비스가 다른 애플리케이션이나 임시 사용자에 의해 사용되는 것을 제한하는 것은 종종 유용합니다. 이는 ClickHouse Cloud 콘솔의 특정 서비스에서 **설정**으로 이동하여 현재 정규 서비스에 대해 구성하는 방법과 유사한 방식으로 네트워크 제한을 사용하여 수행할 수 있습니다.
+
+각 서비스에 대해 IP 필터링 설정을 개별적으로 적용할 수 있어 어떤 애플리케이션이 어떤 서비스에 접근할 수 있는지를 제어할 수 있습니다. 이를 통해 특정 서비스 사용을 제한할 수 있습니다:
+
+
+
+
+
+_Fig. 5 - Alice는 네트워크 설정으로 인해 Service 2에 접근할 수 없습니다._
+
+### 읽기 대 읽기-쓰기 {#read-vs-read-write}
+
+때로는 특정 서비스에 대한 쓰기 액세스를 제한하고 웨어하우스 내의 서비스 집합만 쓰기를 허용하는 것이 유용합니다. 이는 두 번째 및 다수의 서비스를 생성할 때 수행할 수 있습니다(첫 번째 서비스는 항상 읽기-쓰기여야 합니다):
+
+
+
+
+
+_Fig. 6 - 웨어하우스의 읽기-쓰기 및 읽기 전용 서비스_
+
+:::note
+1. 읽기 전용 서비스는 현재 사용자 관리 작업(생성, 삭제 등)을 허용합니다. 이 동작은 향후 변경될 수 있습니다.
+2. 현재 새로 고칠 수 있는 물리화된 뷰는 읽기 전용 서비스를 포함한 웨어하우스의 모든 서비스에서 실행됩니다. 그러나 이 동작은 향후 변경될 것이며 RW 서비스에서만 실행될 것입니다.
+:::
+
+## 확장 {#scaling}
+
+웨어하우스의 각 서비스는 다음과 관련하여 작업 부하에 맞게 조정할 수 있습니다:
+- 노드(복제본) 수. 기본 서비스(웨어하우스에서 가장 먼저 생성된 서비스)는 2개 이상의 노드를 가져야 합니다. 각 보조 서비스는 1개 이상의 노드를 가질 수 있습니다.
+- 노드(복제본)의 크기
+- 서비스가 자동으로 확장되어야 하는지 여부
+- 서비스가 비활성 시 유휴 상태여야 하는지 여부(그룹의 첫 번째 서비스에는 적용할 수 없습니다 - **제한 사항** 섹션을 참조하십시오)
+
+## 동작의 변경 사항 {#changes-in-behavior}
+서비스에 대해 compute-compute가 활성화되면(최소 하나의 보조 서비스가 생성됨), `clusterAllReplicas()` 함수 호출이 `default` 클러스터 이름으로 수행되면 호출된 서비스의 복제본만 활용됩니다. 즉, 동일한 데이터 세트에 연결된 두 개의 서비스가 있을 때, 서비스 1에서 `clusterAllReplicas(default, system, processes)`가 호출되면 서비스 1에서 실행 중인 프로세스만 표시됩니다. 필요하다면, 예를 들어 `clusterAllReplicas('all_groups.default', system, processes)`를 호출하여 모든 복제본에 접근할 수 있습니다.
+
+## 제한 사항 {#limitations}
+
+1. **기본 서비스는 항상 운영 중이어야 하며 유휴 상태가 될 수 없습니다(제한 사항은 GA 이후 일정 시간이 지나면 제거될 것입니다).** 비공식 미리보기 및 GA 이후 일정 시간 동안 기본 서비스(일반적으로 다른 서비스를 추가하여 확장하려는 기존 서비스)는 항상 운영 중이며 유휴 상태 설정이 비활성화됩니다. 하나의 보조 서비스가 있는 경우 기본 서비스를 중지하거나 유휴 상태로 만들 수 없습니다. 모든 보조 서비스가 제거되면 원본 서비스를 다시 중지하거나 유Idle 수 있습니다.
+
+2. **때때로 작업 부하를 분리할 수 없습니다.** 데이터베이스 작업 부하를 서로 분리할 수 있는 옵션을 제공하는 것이 목표이지만, 한 서비스의 작업 부하가 동일한 데이터를 공유하는 다른 서비스에 영향을 미칠 수 있는 경우가 있을 수 있습니다. 이러한 경우는 주로 OLTP 유사 작업 부하와 관련된 드문 상황입니다.
+
+3. **모든 읽기-쓰기 서비스가 백그라운드 병합 작업을 수행합니다.** ClickHouse에 데이터를 삽입할 때, 데이터베이스는 먼저 데이터를 일부 스테이징 파티션에 삽입하고, 이후 백그라운드에서 병합을 수행합니다. 이러한 병합은 메모리와 CPU 자원을 소모할 수 있습니다. 두 개의 읽기-쓰기 서비스가 동일한 저장소를 공유할 경우, 두 서비스 모두 백그라운드 작업을 수행하고 있습니다. 즉, Service 1에서 `INSERT` 쿼리가 있을 경우, 병합 작업은 Service 2에 의해 완료될 수 있습니다. 주의할 점은 읽기 전용 서비스는 백그라운드 병합을 수행하지 않으므로 이 작업에 자원을 소모하지 않습니다.
+
+4. **모든 읽기-쓰기 서비스가 S3Queue 테이블 엔진 삽입 작업을 수행합니다.** RW 서비스에서 S3Queue 테이블을 생성할 때, 웨어하우스의 다른 모든 RW 서비스가 S3에서 데이터를 읽고 데이터베이스에 데이터를 쓸 수 있습니다.
+
+5. **하나의 읽기-쓰기 서비스에 대한 삽입이 유휴 상태가 가능하도록 한 다른 읽기-쓰기 서비스의 유휴 상태를 방지할 수 있습니다.** 결과적으로 두 번째 서비스가 첫 번째 서비스의 백그라운드 병합 작업을 수행하게 됩니다. 이러한 백그라운드 작업은 두 번째 서비스가 유Idle 상태로 진입하는 것을 방지할 수 있습니다. 백그라운드 작업이 완료되면 해당 서비스는 유Idle 상태가 됩니다. 읽기 전용 서비스는 영향을 받지 않으며 지체 없이 유Idle 상태로 전환됩니다.
+
+6. **CREATE/RENAME/DROP DATABASE 쿼리는 기본적으로 유Idle/중지된 서비스에 의해 차단될 수 있습니다.** 이러한 쿼리는 멈출 수 있습니다. 이를 우회하려면, 세션 또는 쿼리 수준에서 `settings distributed_ddl_task_timeout=0`로 데이터베이스 관리 쿼리를 실행할 수 있습니다. 예를 들어:
+
+```sql
+CREATE DATABASE db_test_ddl_single_query_setting
+SETTINGS distributed_ddl_task_timeout=0
+```
+
+7. **현재 웨어하우스 당 서비스 수에 대한 소프트 한계가 5개입니다.** 단일 웨어하우스에 5개 이상의 서비스가 필요한 경우 지원 팀에 문의하십시오.
+
+## 가격 책정 {#pricing}
+
+웨어하우스의 모든 서비스(기본 및 보조)의 컴퓨팅 가격은 동일합니다. 저장소는 처음(원본) 서비스에서만 청구됩니다.
+
+작업 부하 크기와 티어 선택에 따라 비용을 추정하는 데 도움이 되는 [가격 책정](https://clickhouse.com/pricing) 페이지의 가격 계산기를 참조하십시오.
+
+## 백업 {#backups}
+
+- 단일 웨어하우스의 모든 서비스가 동일한 저장소를 공유하므로 백업은 기본(초기) 서비스에서만 수행됩니다. 따라서 웨어하우스의 모든 서비스에 대한 데이터가 백업됩니다.
+- 웨어하우스의 기본 서비스에서 백업을 복원하면 기존 웨어하우스에 연결되지 않은 완전히 새로운 서비스로 복원됩니다. 이후 복원이 완료된 직후에 새로운 서비스에 추가 서비스를 추가할 수 있습니다.
+
+## 웨어하우스 사용하기 {#using-warehouses}
+
+### 웨어하우스 생성하기 {#creating-a-warehouse}
+
+웨어하우스를 생성하려면 기존 서비스와 데이터를 공유할 두 번째 서비스를 생성해야 합니다. 이는 기존 서비스 중 하나에서 더하기 기호를 클릭하여 수행할 수 있습니다:
+
+
+
+
+
+_Fig. 7 - 웨어하우스에 새로운 서비스를 만들기 위해 더하기 기호를 클릭합니다._
+
+서비스 생성 화면에서 원본 서비스가 새로운 서비스의 데이터 출처로 드롭다운에서 선택됩니다. 생성된 후, 이 두 서비스는 웨어하우스를 형성하게 됩니다.
+
+### 웨어하우스 이름 변경하기 {#renaming-a-warehouse}
+
+웨어하우스의 이름을 변경하는 방법은 두 가지가 있습니다:
+
+- 서비스 페이지의 오른쪽 상단에 있는 "웨어하우스별 정렬"을 선택한 다음, 웨어하우스 이름 근처의 연필 아이콘을 클릭합니다.
+- 어떤 서비스의 웨어하우스 이름을 클릭하여 그곳에서 웨어하우스의 이름을 변경할 수 있습니다.
+
+### 웨어하우스 삭제하기 {#deleting-a-warehouse}
+
+웨어하우스를 삭제하는 것은 모든 컴퓨팅 서비스와 데이터(테이블, 뷰, 사용자 등)를 삭제하는 것을 의미합니다. 이 작업은 되돌릴 수 없습니다.
+웨어하우스는 반드시 첫 번째로 생성된 서비스를 삭제하여야만 삭제할 수 있습니다. 이를 위해:
+
+1. 최초로 생성된 서비스 이외에 생성된 모든 서비스를 삭제합니다;
+2. 첫 번째 서비스를 삭제합니다 (경고: 이 단계에서 웨어하우스의 모든 데이터가 삭제됩니다).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/warehouses.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/warehouses.md.hash
new file mode 100644
index 00000000000..76ee0c54369
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/04_infrastructure/warehouses.md.hash
@@ -0,0 +1 @@
+b9b71bcb70bc79fe
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/_category_.json
new file mode 100644
index 00000000000..72016fcfba5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Admin",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/api-overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/api-overview.md
new file mode 100644
index 00000000000..d768157a01f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/api-overview.md
@@ -0,0 +1,62 @@
+---
+'sidebar_label': '개요'
+'sidebar_position': 1
+'title': 'ClickHouse Cloud API'
+'slug': '/cloud/manage/api/api-overview'
+'description': 'ClickHouse Cloud API에 대해 배우기'
+'doc_type': 'reference'
+'keywords':
+- 'ClickHouse Cloud'
+- 'API overview'
+- 'cloud API'
+- 'REST API'
+- 'programmatic access'
+---
+
+
+
+# ClickHouse Cloud API
+
+## 개요 {#overview}
+
+ClickHouse Cloud API는 개발자가 ClickHouse Cloud에서 조직과 서비스를 쉽게 관리할 수 있도록 설계된 REST API입니다. Cloud API를 사용하면 서비스를 생성 및 관리하고, API 키를 프로비저닝하며, 조직에서 구성원을 추가하거나 제거하는 등의 작업을 수행할 수 있습니다.
+
+[첫 번째 API 키를 생성하고 ClickHouse Cloud API를 사용하기 시작하는 방법을 배우십시오.](/cloud/manage/openapi)
+
+## Swagger (OpenAPI) 엔드포인트 및 UI {#swagger-openapi-endpoint-and-ui}
+
+ClickHouse Cloud API는 클라이언트 측 소비를 예측 가능하게 하기 위해 오픈 소스 [OpenAPI 사양](https://www.openapis.org/)에 기반하여 구축되었습니다. 프로그래밍 방식으로 ClickHouse Cloud API 문서를 소비해야 하는 경우, https://api.clickhouse.cloud/v1을 통해 JSON 기반 Swagger 엔드포인트를 제공합니다. 또한 [Swagger UI](https://clickhouse.com/docs/cloud/manage/api/swagger)를 통해 API 문서를 찾을 수 있습니다.
+
+:::note
+조직이 [새 요금제](https://clickhouse.com/pricing?plan=scale&provider=aws®ion=us-east-1&hours=8&storageCompressed=false)로 마이그레이션되었고 OpenAPI를 사용하는 경우, 서비스 생성 `POST` 요청에서 `tier` 필드를 제거해야 합니다.
+
+서비스 개체에서 `tier` 필드는 더 이상 서비스 계층이 없으므로 제거되었습니다.
+이는 `POST`, `GET`, 및 `PATCH` 서비스 요청으로 반환된 객체에 영향을 미칩니다. 따라서 이러한 API를 소비하는 코드도 이러한 변경을 처리하도록 조정해야 할 수 있습니다.
+:::
+
+## 속도 제한 {#rate-limits}
+
+개발자는 조직당 100개의 API 키로 제한됩니다. 각 API 키는 10초 동안 10개의 요청으로 제한됩니다. 조직의 API 키 수나 10초 동안의 요청 수를 늘리려면 support@clickhouse.com에 문의하십시오.
+
+## Terraform 제공자 {#terraform-provider}
+
+공식 ClickHouse Terraform Provider를 사용하면 [코드로서의 인프라](https://www.redhat.com/en/topics/automation/what-is-infrastructure-as-code-iac)를 사용하여 예측 가능하고 버전 관리가 가능한 구성 파일을 생성하여 배포에서 오류를 줄일 수 있습니다.
+
+Terraform 제공자 문서는 [Terraform 레지스트리](https://registry.terraform.io/providers/ClickHouse/clickhouse/latest/docs)에서 확인할 수 있습니다.
+
+ClickHouse Terraform Provider에 기여하고 싶다면, [GitHub 레포지토리](https://github.com/ClickHouse/terraform-provider-clickhouse)에서 소스를 확인할 수 있습니다.
+
+:::note
+조직이 [새 요금제](https://clickhouse.com/pricing?plan=scale&provider=aws®ion=us-east-1&hours=8&storageCompressed=false)로 마이그레이션되었으면, 서비스의 `tier` 속성 변경을 처리하기 위해 ClickHouse Terraform provider 버전 2.0.0 이상을 사용해야 합니다. 이 업그레이드는 마이그레이션 후 더 이상 `tier` 필드가 허용되지 않으므로 필요합니다.
+
+이제 서비스 리소스의 속성으로 `num_replicas` 필드를 지정할 수도 있습니다.
+:::
+
+## Terraform 및 OpenAPI 새 요금제: 복제본 설정 설명 {#terraform-and-openapi-new-pricing---replica-settings-explained}
+
+각 서비스에 대한 복제본 수는 Scale 및 Enterprise 요금제의 경우 기본값이 3이며, Basic 요금제의 경우 기본값이 1입니다. Scale 및 Enterprise 요금제의 경우 서비스 생성 요청에 `numReplicas` 필드를 전달하여 이를 조정할 수 있습니다.
+`numReplicas` 필드의 값은 창고의 첫 서비스에 대해 2와 20 사이여야 합니다. 기존 창고에서 생성된 서비스는 최소 1개의 복제본을 가질 수 있습니다.
+
+## 지원 {#support}
+
+빠른 지원을 받으려면 [우리의 Slack 채널](https://clickhouse.com/slack)을 먼저 방문하는 것을 권장합니다. API 및 기능에 대한 추가 도움이나 더 많은 정보를 얻고 싶다면, ClickHouse 지원팀에 https://console.clickhouse.cloud/support를 통해 문의하시기 바랍니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/api-overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/api-overview.md.hash
new file mode 100644
index 00000000000..0d944cd4792
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/api-overview.md.hash
@@ -0,0 +1 @@
+0b9831b30f69c22d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/index.md
new file mode 100644
index 00000000000..f3110f7574d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/index.md
@@ -0,0 +1,20 @@
+---
+'title': 'Cloud API'
+'slug': '/cloud/manage/cloud-api'
+'description': 'Cloud API 섹션의 랜딩 페이지'
+'doc_type': 'landing-page'
+'keywords':
+- 'ClickHouse Cloud'
+- 'cloud API'
+- 'API documentation'
+- 'REST API reference'
+- 'cloud management API'
+---
+
+이 섹션은 Cloud API에 대한 참조 문서이며, 다음 페이지를 포함하고 있습니다:
+
+| 페이지 | 설명 |
+|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
+| [개요](/cloud/manage/api/api-overview) | 요금 한도, Terraform Provider, Swagger (OpenAPI) 엔드포인트 및 UI와 제공되는 지원에 대한 개요를 제공합니다. |
+| [API 키 관리](/cloud/manage/openapi) | OpenAPI를 활용하여 Cloud의 API에 대해 더 알아보세요. 이를 통해 계정을 프로그래밍 방식으로 관리하고 서비스의 여러 측면을 조정할 수 있습니다. |
+| [API 참조](https://clickhouse.com/docs/cloud/manage/api/swagger) | OpenAPI (swagger) 참조 페이지. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/index.md.hash
new file mode 100644
index 00000000000..e3e882b2bf8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/index.md.hash
@@ -0,0 +1 @@
+2723225c7515c146
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/openapi.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/openapi.md
new file mode 100644
index 00000000000..cae6ef762b8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/openapi.md
@@ -0,0 +1,76 @@
+---
+'sidebar_label': 'API 키 관리'
+'slug': '/cloud/manage/openapi'
+'title': 'API 키 관리'
+'description': 'ClickHouse Cloud는 OpenAPI를 활용하여 계정 및 서비스의 다양한 측면을 프로그래밍 방식으로 관리할 수
+ 있는 API를 제공합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'api'
+- 'openapi'
+- 'rest api'
+- 'documentation'
+- 'cloud management'
+---
+
+import image_01 from '@site/static/images/cloud/manage/openapi1.png';
+import image_02 from '@site/static/images/cloud/manage/openapi2.png';
+import image_03 from '@site/static/images/cloud/manage/openapi3.png';
+import image_04 from '@site/static/images/cloud/manage/openapi4.png';
+import image_05 from '@site/static/images/cloud/manage/openapi5.png';
+import Image from '@theme/IdealImage';
+
+
+# API 키 관리
+
+ClickHouse Cloud는 OpenAPI를 활용하여 프로그램적으로 귀하의 계정 및 서비스의 여러 측면을 관리할 수 있는 API를 제공합니다.
+
+:::note
+이 문서는 ClickHouse Cloud API를 다룹니다. 데이터베이스 API 엔드포인트에 대한 내용은 [Cloud Endpoints API](/cloud/get-started/query-endpoints)를 참조하십시오.
+:::
+
+1. 왼쪽 메뉴의 **API Keys** 탭을 사용하여 API 키를 생성하고 관리할 수 있습니다.
+
+
+
+2. **API Keys** 페이지는 처음에는 아래와 같이 첫 번째 API 키를 생성하라는 메시지를 표시합니다. 첫 번째 키가 생성된 후에는 오른쪽 상단에 표시되는 `New API Key` 버튼을 사용하여 새로운 키를 생성할 수 있습니다.
+
+
+
+3. API 키를 생성하려면 키 이름, 키에 대한 권한 및 만료 시간을 지정한 후 `Generate API Key`를 클릭합니다.
+
+:::note
+권한은 ClickHouse Cloud [사전 정의된 역할](/cloud/security/console-roles)과 일치합니다. 개발자 역할은 할당된 서비스에 대해 읽기 전용 권한을 가지며, 관리자 역할은 전체 읽기 및 쓰기 권한을 가집니다.
+:::
+
+:::tip 쿼리 API 엔드포인트
+[Query API Endpoints](/cloud/get-started/query-endpoints)와 함께 API 키를 사용하려면 조직 역할을 `Member`(최소)로 설정하고 서비스 역할에 `Query Endpoints` 접근 권한을 부여하십시오.
+:::
+
+
+
+4. 다음 화면에는 Key ID 및 Key secret가 표시됩니다. 이 값을 복사하여 금고와 같은 안전한 곳에 보관하십시오. 화면을 떠나면 값이 더 이상 표시되지 않습니다.
+
+
+
+5. ClickHouse Cloud API는 [HTTP Basic Authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication)을 사용하여 API 키의 유효성을 확인합니다. 다음은 `curl`을 사용하여 ClickHouse Cloud API에 요청을 보내기 위한 API 키 사용 예제입니다:
+
+```bash
+$ KEY_ID=mykeyid
+$ KEY_SECRET=mykeysecret
+
+$ curl --user $KEY_ID:$KEY_SECRET https://api.clickhouse.cloud/v1/organizations
+```
+
+6. **API Keys** 페이지로 돌아가면 키 이름, Key ID의 마지막 네 글자, 권한, 상태, 만료 날짜 및 생성자를 확인할 수 있습니다. 이 화면에서 키 이름, 권한 및 만료를 편집할 수 있습니다. 이 화면에서 키를 비활성화하거나 삭제할 수도 있습니다.
+
+:::note
+API 키 삭제는 영구적인 작업입니다. 해당 키를 사용하는 서비스는 ClickHouse Cloud에 대한 접근 권한을 즉시 잃게 됩니다.
+:::
+
+
+
+## 엔드포인트 {#endpoints}
+
+엔드포인트에 대한 세부정보는 [API 참조](https://clickhouse.com/docs/cloud/manage/api/swagger)를 참조하십시오.
+귀하의 API Key 및 API Secret를 사용하여 기본 URL `https://api.clickhouse.cloud/v1`에 접근하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/openapi.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/openapi.md.hash
new file mode 100644
index 00000000000..ba79ad89b98
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/openapi.md.hash
@@ -0,0 +1 @@
+44850c80a7b9231a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/postman.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/postman.md
new file mode 100644
index 00000000000..dfcb85fb5bf
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/postman.md
@@ -0,0 +1,238 @@
+---
+'slug': '/cloud/manage/postman'
+'sidebar_label': 'Postman을 사용한 프로그래매틱 API 액세스'
+'title': 'Postman을 사용한 프로그래매틱 API 액세스'
+'description': '이 가이드는 Postman을 사용하여 ClickHouse Cloud API를 테스트하는 데 도움을 줄 것입니다.'
+'doc_type': 'guide'
+'keywords':
+- 'api'
+- 'postman'
+- 'rest api'
+- 'cloud management'
+- 'integration'
+---
+
+import Image from '@theme/IdealImage';
+import postman1 from '@site/static/images/cloud/manage/postman/postman1.png';
+import postman2 from '@site/static/images/cloud/manage/postman/postman2.png';
+import postman3 from '@site/static/images/cloud/manage/postman/postman3.png';
+import postman4 from '@site/static/images/cloud/manage/postman/postman4.png';
+import postman5 from '@site/static/images/cloud/manage/postman/postman5.png';
+import postman6 from '@site/static/images/cloud/manage/postman/postman6.png';
+import postman7 from '@site/static/images/cloud/manage/postman/postman7.png';
+import postman8 from '@site/static/images/cloud/manage/postman/postman8.png';
+import postman9 from '@site/static/images/cloud/manage/postman/postman9.png';
+import postman10 from '@site/static/images/cloud/manage/postman/postman10.png';
+import postman11 from '@site/static/images/cloud/manage/postman/postman11.png';
+import postman12 from '@site/static/images/cloud/manage/postman/postman12.png';
+import postman13 from '@site/static/images/cloud/manage/postman/postman13.png';
+import postman14 from '@site/static/images/cloud/manage/postman/postman14.png';
+import postman15 from '@site/static/images/cloud/manage/postman/postman15.png';
+import postman16 from '@site/static/images/cloud/manage/postman/postman16.png';
+import postman17 from '@site/static/images/cloud/manage/postman/postman17.png';
+
+This guide will help you test the ClickHouse Cloud API using [Postman](https://www.postman.com/product/what-is-postman/).
+The Postman Application is available for use within a web browser or can be downloaded to a desktop.
+
+### Create an account {#create-an-account}
+
+* Free accounts are available at [https://www.postman.com](https://www.postman.com).
+
+
+
+### Create a workspace {#create-a-workspace}
+
+* Name your workspace and set the visibility level.
+
+
+
+### Create a collection {#create-a-collection}
+
+* Below "Explore" on the top left Menu click "Import":
+
+
+
+* A modal will appear:
+
+
+
+* Enter the API address: "https://api.clickhouse.cloud/v1" and press 'Enter':
+
+
+
+* Select "Postman Collection" by clicking on the "Import" button:
+
+
+
+### Interface with the ClickHouse Cloud API spec {#interface-with-the-clickhouse-cloud-api-spec}
+* The "API spec for ClickHouse Cloud" will now appear within "Collections" (Left Navigation).
+
+
+
+* Click on "API spec for ClickHouse Cloud." From the middle pain select the 'Authorization' tab:
+
+
+
+### Set authorization {#set-authorization}
+* Toggle the dropdown menu to select "Basic Auth":
+
+
+
+* Enter the Username and Password received when you set up your ClickHouse Cloud API keys:
+
+
+
+### Enable variables {#enable-variables}
+
+* [Variables](https://learning.postman.com/docs/sending-requests/variables/) enable the storage and reuse of values in Postman allowing for easier API testing.
+
+#### Set the organization ID and Service ID {#set-the-organization-id-and-service-id}
+
+* Within the "Collection", click the "Variable" tab in the middle pane (The Base URL will have been set by the earlier API import):
+* Below `baseURL` click the open field "Add new value", and Substitute your organization ID and service ID:
+
+
+
+## Test the ClickHouse Cloud API functionalities {#test-the-clickhouse-cloud-api-functionalities}
+
+### Test "GET list of available organizations" {#test-get-list-of-available-organizations}
+
+* Under the "OpenAPI spec for ClickHouse Cloud", expand the folder > V1 > organizations
+* Click "GET list of available organizations" and press the blue "Send" button on the right:
+
+
+
+* The returned results should deliver your organization details with "status": 200. (If you receive a "status" 400 with no organization information your configuration is not correct).
+
+
+
+### Test "GET organizational details" {#test-get-organizational-details}
+
+* Under the `organizationid` folder, navigate to "GET organizational details":
+* In the middle frame menu under Params an `organizationid` is required.
+
+
+
+* Edit this value with `orgid` in curly braces `{{orgid}}` (From setting this value earlier a menu will appear with the value):
+
+
+
+* After pressing the "Save" button, press the blue "Send" button at the top right of the screen.
+
+
+
+* The returned results should deliver your organization details with "status": 200. (If you receive a "status" 400 with no organization information your configuration is not correct).
+
+### Test "GET service details" {#test-get-service-details}
+
+* Click "GET service details"
+* Edit the Values for `organizationid` and `serviceid` with `{{orgid}}` and `{{serviceid}}` respectively.
+* Press "Save" and then the blue "Send" button on the right.
+
+
+
+* The returned results should deliver a list of your services and their details with "status": 200. (If you receive a "status" 400 with no service(s) information your configuration is not correct).
+
+---
+
+This 가이드는 [Postman](https://www.postman.com/product/what-is-postman/)을 사용하여 ClickHouse Cloud API를 테스트하는 데 도움을 줄 것입니다.
+Postman 애플리케이션은 웹 브라우저 내에서 사용 가능하거나 데스크톱에 다운로드할 수 있습니다.
+
+### 계정 만들기 {#create-an-account}
+
+* 무료 계정은 [https://www.postman.com](https://www.postman.com)에서 사용할 수 있습니다.
+
+
+
+### 작업 공간 만들기 {#create-a-workspace}
+
+* 작업 공간의 이름을 정하고 가시성 수준을 설정하세요.
+
+
+
+### 컬렉션 만들기 {#create-a-collection}
+
+* 왼쪽 상단 메뉴의 "Explore" 아래에서 "Import"를 클릭하세요:
+
+
+
+* 모달이 나타납니다:
+
+
+
+* API 주소를 입력하세요: "https://api.clickhouse.cloud/v1"와 'Enter'를 누르세요:
+
+
+
+* "Import" 버튼을 클릭하여 "Postman Collection"을 선택하세요:
+
+
+
+### ClickHouse Cloud API 사양과 인터페이스 {#interface-with-the-clickhouse-cloud-api-spec}
+* "ClickHouse Cloud의 API 사양"이 이제 "컬렉션" 내에 나타납니다 (왼쪽 탐색).
+
+
+
+* "ClickHouse Cloud의 API 사양"을 클릭하세요. 중간 패널에서 'Authorization' 탭을 선택하세요:
+
+
+
+### 인증 설정 {#set-authorization}
+* 드롭다운 메뉴를 전환하여 "Basic Auth"를 선택하세요:
+
+
+
+* ClickHouse Cloud API 키를 설정할 때 받은 사용자 이름과 비밀번호를 입력하세요:
+
+
+
+### 변수를 활성화 {#enable-variables}
+
+* [변수](https://learning.postman.com/docs/sending-requests/variables/)는 Postman에서 값의 저장 및 재사용을 가능하게 하여 API 테스트를 더 쉽게 만들어 줍니다.
+
+#### 조직 ID와 서비스 ID 설정 {#set-the-organization-id-and-service-id}
+
+* "컬렉션" 내에서 중간 패널의 "변수" 탭을 클릭하세요 (Base URL은 이전 API 가져오기로 설정되어 있을 것입니다):
+* `baseURL` 아래의 열린 필드 "Add new value"를 클릭하고 조직 ID와 서비스 ID를 대체하십시오:
+
+
+
+## ClickHouse Cloud API 기능 테스트 {#test-the-clickhouse-cloud-api-functionalities}
+
+### "사용 가능한 조직 목록 가져오기" 테스트 {#test-get-list-of-available-organizations}
+
+* "ClickHouse Cloud의 OpenAPI 사양"에서 폴더를 확장하세요 > V1 > organizations
+* "사용 가능한 조직 목록 가져오기"를 클릭하고 오른쪽의 파란색 "보내기" 버튼을 누르세요:
+
+
+
+* 반환된 결과는 "status": 200과 함께 조직 세부 정보를 제공해야 합니다. (조직 정보가 없는 "status" 400을 받으면 구성 설정이 올바르지 않습니다).
+
+
+
+### "조직 세부 정보 가져오기" 테스트 {#test-get-organizational-details}
+
+* `organizationid` 폴더 아래에서 "조직 세부 정보 가져오기"로 이동하세요:
+* 중간 프레임 메뉴의 Params에서 `organizationid`가 필요합니다.
+
+
+
+* 이 값을 중괄호 `{{orgid}}`로 `orgid`로 수정하세요 (이 값을 설정하면 값이 있는 메뉴가 나타납니다):
+
+
+
+* "저장" 버튼을 누른 후 화면 오른쪽 상단에 있는 파란색 "보내기" 버튼을 누르세요.
+
+
+
+* 반환된 결과는 "status": 200과 함께 조직 세부 정보를 제공해야 합니다. (조직 정보가 없는 "status" 400을 받으면 구성 설정이 올바르지 않습니다).
+
+### "서비스 세부 정보 가져오기" 테스트 {#test-get-service-details}
+
+* "서비스 세부 정보 가져오기"를 클릭하세요.
+* `organizationid`와 `serviceid`의 값을 각각 `{{orgid}}`와 `{{serviceid}}`로 수정하세요.
+* "저장"을 누른 후 오른쪽의 파란색 "보내기" 버튼을 누르세요.
+
+
+
+* 반환된 결과는 "status": 200과 함께 서비스 목록과 그 세부 정보를 제공해야 합니다. (서비스 정보가 없는 "status" 400을 받으면 구성 설정이 올바르지 않습니다).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/postman.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/postman.md.hash
new file mode 100644
index 00000000000..8b9ef3a7fd3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/api/postman.md.hash
@@ -0,0 +1 @@
+273a2ef7337c4f64
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/upgrades.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/upgrades.md
new file mode 100644
index 00000000000..30f4eae9edc
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/upgrades.md
@@ -0,0 +1,136 @@
+---
+'sidebar_label': '업그레이드'
+'slug': '/manage/updates'
+'title': '업그레이드'
+'description': 'ClickHouse Cloud를 사용하면 패치 및 업그레이드에 대해 걱정할 필요가 없습니다. 우리는 정기적으로 수정 사항,
+ 새로운 기능 및 성능 개선을 포함한 업그레이드를 배포합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'upgrades'
+- 'version management'
+- 'cloud features'
+- 'maintenance'
+- 'updates'
+---
+
+import Image from '@theme/IdealImage';
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge'
+import ScalePlanFeatureBadge from '@theme/badges/ScalePlanFeatureBadge'
+import fast_release from '@site/static/images/cloud/manage/fast_release.png';
+import enroll_fast_release from '@site/static/images/cloud/manage/enroll_fast_release.png';
+import scheduled_upgrades from '@site/static/images/cloud/manage/scheduled_upgrades.png';
+import scheduled_upgrade_window from '@site/static/images/cloud/manage/scheduled_upgrade_window.png';
+
+
+# 업그레이드
+
+ClickHouse Cloud를 사용하면 패치 및 업그레이드에 대해 걱정할 필요가 없습니다. 우리는 정기적으로 수정 사항, 새로운 기능 및 성능 개선 사항을 포함하는 업그레이드를 롤아웃합니다. ClickHouse의 새로운 내용에 대한 전체 목록은 [Cloud changelog](/whats-new/cloud)를 참조하십시오.
+
+:::note
+우리는 "make before break"(또는 MBB)라고 부르는 새로운 업그레이드 메커니즘을 도입하고 있습니다. 이 새로운 접근 방식에서는 업그레이드 작업 중에 이전의 복제본을 제거하기 전에 업데이트된 복제본을 추가합니다. 이로 인해 실행 중인 작업 부하에 전 disruptive한 더 원활한 업그레이드가 가능합니다.
+
+이 변경의 일환으로, 역사적 시스템 테이블 데이터는 업그레이드 이벤트의 일환으로 최대 30일 동안 유지됩니다. 또한, AWS 또는 GCP의 서비스에 대해서는 2024년 12월 19일 이전의 시스템 테이블 데이터가, Azure의 서비스에 대해서는 2025년 1월 14일 이전의 시스템 테이블 데이터는 새로운 조직 계층으로의 마이그레이션의 일환으로 유지되지 않습니다.
+:::
+
+## 버전 호환성 {#version-compatibility}
+
+서비스를 생성할 때 [`compatibility`](/operations/settings/settings#compatibility) 설정은 서비스가 처음 프로비저닝될 때 ClickHouse Cloud에서 제공하는 최신 ClickHouse 버전으로 설정됩니다.
+
+`compatibility` 설정은 이전 버전의 설정에서 기본값을 사용할 수 있게 해줍니다. 서비스가 새로운 버전으로 업그레이드되면 `compatibility` 설정을 위한 버전은 변경되지 않습니다. 이는 서비스 최초 생성 시 존재했던 설정의 기본값이 변경되지 않음을 의미합니다(기본값을 이미 덮어쓴 경우에는 업그레이드 후에도 유지됩니다).
+
+서비스에 대한 서비스 수준 기본 `compatibility` 설정을 관리할 수 없습니다. 서비스의 기본 `compatibility` 설정에 설정된 버전을 변경하려면 [지원팀에 문의](https://clickhouse.com/support/program)해야 합니다. 그러나 사용자, 역할, 프로필, 쿼리 또는 세션 수준에서 `SET compatibility = '22.3'`와 같은 표준 ClickHouse 설정 메커니즘을 사용하여 `compatibility` 설정을 덮어쓸 수 있습니다.
+
+## 유지보수 모드 {#maintenance-mode}
+
+때때로 서비스 업데이트가 필요할 수 있으며, 이로 인해 확장 또는 유휴와 같은 특정 기능을 비활성화해야 할 수 있습니다. 드물게, 문제가 발생한 서비스에 대해 조치를 취하고 건강한 상태로 되돌려야 할 수도 있습니다. 그러한 유지보수 중에는 "유지보수 진행 중"이라는 배너가 서비스 페이지에 표시됩니다. 이 시간을 동안 쿼리에 대해 서비스를 여전히 사용할 수 있을 수 있습니다.
+
+유지보수 중인 시간에 대해서는 요금이 청구되지 않습니다. _유지보수 모드_는 드문 경우이며 일반 서비스 업그레이드와 혼동해서는 안됩니다.
+
+## 릴리스 채널 (업그레이드 일정) {#release-channels-upgrade-schedule}
+
+사용자는 특정 릴리스 채널을 구독하여 ClickHouse Cloud 서비스의 업그레이드 일정을 지정할 수 있습니다. 세 가지 릴리스 채널이 있으며, 사용자는 **예정된 업그레이드** 기능을 사용하여 업그레이드를 위한 요일과 시간을 구성할 수 있습니다.
+
+세 가지 릴리스 채널은 다음과 같습니다:
+- [**패스트 릴리스 채널**](#fast-release-channel-early-upgrades): 업그레이드에 대한 조기 액세스 제공.
+- [**정기 릴리스 채널**](#regular-release-channel): 기본값이며, 이 채널의 업그레이드는 패스트 릴리스 채널 업그레이드 후 2주 후에 시작됩니다. Scale 및 Enterprise 등급의 서비스에 릴리스 채널이 설정되지 않은 경우 기본적으로 정기 릴리스 채널에 속합니다.
+- [**슬로우 릴리스 채널**](#slow-release-channel-deferred-upgrades): 연기된 릴리스를 위한 것입니다. 이 채널의 업그레이드는 정기 릴리스 채널 업그레이드 후 2주 후에 발생합니다.
+
+:::note
+기본 등급 서비스는 자동으로 패스트 릴리스 채널에 등록됩니다.
+:::
+
+### 패스트 릴리스 채널 (조기 업그레이드) {#fast-release-channel-early-upgrades}
+
+
+
+정기적인 업그레이드 일정 외에도, 서비스가 정기 릴리스 일정보다 먼저 업데이트를 받기를 원하는 경우 **패스트 릴리스** 채널을 제공합니다.
+
+구체적으로, 서비스는:
+
+- 최신 ClickHouse 릴리스를 수신합니다.
+- 새로운 릴리스가 테스트됨에 따라 더 빈번한 업그레이드를 진행합니다.
+
+서비스의 릴리스 일정을 Cloud 콘솔에서 아래와 같이 수정할 수 있습니다:
+
+
+
+
+
+
+
+
+
+
+
+이 **패스트 릴리스** 채널은 비핵심 환경에서 새로운 기능을 테스트하는 데 적합합니다. **엄격한 가동 시간 및 신뢰성 요구사항이 있는 생산 작업 부하에는 권장되지 않습니다.**
+
+### 정기 릴리스 채널 {#regular-release-channel}
+
+릴리스 채널이나 업그레이드 일정이 구성되지 않은 모든 Scale 및 Enterprise 등급 서비스는 정기 채널 릴리스의 일부로 업그레이드가 수행됩니다. 이는 생산 환경에서 권장됩니다.
+
+정기 릴리스 채널로의 업그레이드는 일반적으로 **패스트 릴리스 채널** 이후 2주 후에 수행됩니다.
+
+:::note
+기본 등급 서비스는 패스트 릴리스 채널 직후 업그레이드됩니다.
+:::
+
+### 슬로우 릴리스 채널 (연기된 업그레이드) {#slow-release-channel-deferred-upgrades}
+
+
+
+서비스가 정기 릴리스 일정 후에 업그레이드를 받을 수 있도록 **슬로우 릴리스** 채널을 제공합니다.
+
+구체적으로, 서비스는:
+
+- 패스트 및 정기 릴리스 채널 롤아웃이 완료된 후 업그레이드됩니다.
+- 정기 릴리스 후 약 2주 후에 ClickHouse 릴리스를 수신합니다.
+- 고객이 생산 업그레이드 전에 비생산 환경에서 ClickHouse 릴리스를 테스트할 추가 시간을 원할 경우를 위한 것입니다. 비생산 환경은 테스트 및 검증을 위해 패스트 또는 정기 릴리스 채널에서 업그레이드를 받을 수 있습니다.
+
+:::note
+릴리스 채널은 언제든지 변경할 수 있습니다. 그러나 특정 경우에는 변경이 향후 릴리스에만 적용됩니다.
+- 더 빠른 채널로 이동하면 즉시 서비스 업그레이드가 이루어집니다. 즉, 슬로우에서 정기로, 정기에서 패스트로 이동하는 경우
+- 더 느린 채널로 이동하면 서비스가 다운그레이드되지 않으며, 해당 채널에서 더 새로운 버전이 제공될 때까지 현재 버전으로 유지됩니다. 즉, 정기에서 슬로우로, 패스트에서 정기 또는 슬로우로 이동하는 경우
+:::
+
+## 예정된 업그레이드 {#scheduled-upgrades}
+
+
+
+사용자는 Enterprise 등급 서비스의 업그레이드 창을 구성할 수 있습니다.
+
+업그레이드를 예정하려는 서비스를 선택한 후 왼쪽 메뉴에서 `설정`을 클릭합니다. `예정된 업그레이드`로 스크롤하십시오.
+
+
+
+
+
+
+이 옵션을 선택하면 사용자는 데이터베이스 및 클라우드 업그레이드를 위한 요일/시간대를 선택할 수 있습니다.
+
+
+
+
+
+:::note
+예정된 업그레이드는 정의된 일정에 따르지만, 중요한 보안 패치 및 취약성 수정에 대한 예외가 적용됩니다. 긴급 보안 문제가 식별된 경우, 예정된 시간 외에 업그레이드가 수행될 수 있습니다. 고객은 필요한 경우 이러한 예외를 통보받게 됩니다.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/upgrades.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/upgrades.md.hash
new file mode 100644
index 00000000000..e2baf616f34
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/05_admin_features/upgrades.md.hash
@@ -0,0 +1 @@
+02f768070be4b951
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/06_security.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/06_security.md
new file mode 100644
index 00000000000..fed7e19b778
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/06_security.md
@@ -0,0 +1,154 @@
+---
+'sidebar_label': '보안'
+'slug': '/cloud/security'
+'title': '보안'
+'description': 'ClickHouse Cloud 및 BYOC 보안에 대해 더 알아보세요.'
+'doc_type': 'reference'
+'keywords':
+- 'security'
+- 'cloud security'
+- 'access control'
+- 'compliance'
+- 'data protection'
+---
+
+
+# ClickHouse Cloud 보안
+
+이 문서는 ClickHouse 조직 및 서비스 보호를 위한 보안 옵션과 모범 사례에 대해 설명합니다.
+ClickHouse는 안전한 분석 데이터베이스 솔루션을 제공하는 데 전념하고 있으며, 따라서 데이터 및 서비스 무결성을 보호하는 것이 최우선입니다.
+여기에는 사용자가 ClickHouse 환경을 보호하는 데 도움이 되는 다양한 방법이 포함되어 있습니다.
+
+## 클라우드 콘솔 인증 {#cloud-console-auth}
+
+### 비밀번호 인증 {#password-auth}
+
+ClickHouse Cloud 콘솔 비밀번호는 NIST 800-63B 기준에 따라 최소 12자 이상이며, 4가지 복잡성 요구 사항 중 3가지를 충족해야 합니다: 대문자, 소문자, 숫자 및/또는 특수 문자.
+
+[비밀번호 인증](/cloud/security/manage-my-account#email-and-password)에 대해 자세히 알아보세요.
+
+### 소셜 SSO (단일 인증) {#social-sso}
+
+ClickHouse Cloud는 Google 또는 Microsoft 소셜 인증을 지원하여 단일 인증(SSO)을 제공합니다.
+
+[소셜 SSO](/cloud/security/manage-my-account#social-sso)에 대해 자세히 알아보세요.
+
+### 다단계 인증 {#mfa}
+
+이메일과 비밀번호 또는 소셜 SSO를 사용하는 사용자는 Authy 또는 Google Authenticator와 같은 인증 앱을 사용하여 다단계 인증을 구성할 수 있습니다.
+
+[다단계 인증](/cloud/security/manage-my-account/#mfa)에 대해 자세히 알아보세요.
+
+### SAML 인증 {#saml-auth}
+
+기업 고객은 SAML 인증을 구성할 수 있습니다.
+
+[SAML 인증](/cloud/security/saml-setup)에 대해 자세히 알아보세요.
+
+### API 인증 {#api-auth}
+
+고객은 OpenAPI, Terraform 및 쿼리 API 엔드포인트에 사용할 API 키를 구성할 수 있습니다.
+
+[API 인증](/cloud/manage/openapi)에 대해 자세히 알아보세요.
+
+## 데이터베이스 인증 {#database-auth}
+
+### 데이터베이스 비밀번호 인증 {#db-password-auth}
+
+ClickHouse 데이터베이스 사용자 비밀번호는 NIST 800-63B 기준에 따라 최소 12자 이상이며 복잡성 요구 사항: 대문자, 소문자, 숫자 및/또는 특수 문자를 충족해야 합니다.
+
+[데이터베이스 비밀번호 인증](/cloud/security/manage-database-users#database-user-id--password)에 대해 자세히 알아보세요.
+
+### 보안 셸 (SSH) 데이터베이스 인증 {#ssh-auth}
+
+ClickHouse 데이터베이스 사용자는 SSH 인증을 사용하도록 구성할 수 있습니다.
+
+[SSH 인증](/cloud/security/manage-database-users#database-ssh)에 대해 자세히 알아보세요.
+
+## 접근 제어 {#access-control}
+
+### 콘솔 역할 기반 접근 제어 (RBAC) {#console-rbac}
+
+ClickHouse Cloud는 조직, 서비스 및 데이터베이스 권한에 대한 역할 할당을 지원합니다. 이 방법을 사용하는 데이터베이스 권한은 SQL 콘솔에서만 지원됩니다.
+
+[콘솔 RBAC](/cloud/security/console-roles)에 대해 자세히 알아보세요.
+
+### 데이터베이스 사용자 권한 부여 {#database-user-grants}
+
+ClickHouse 데이터베이스는 사용자 권한 부여를 통해 세분화된 권한 관리 및 역할 기반 접근을 지원합니다.
+
+[데이터베이스 사용자 권한 부여](/cloud/security/manage-database-users#database-permissions)에 대해 자세히 알아보세요.
+
+## 네트워크 보안 {#network-security}
+
+### IP 필터 {#ip-filters}
+
+IP 필터를 구성하여 ClickHouse 서비스로의 수신 연결을 제한합니다.
+
+[IP 필터](/cloud/security/setting-ip-filters)에 대해 자세히 알아보세요.
+
+### 전용 연결 {#private-connectivity}
+
+AWS, GCP 또는 Azure에서 전용 연결을 사용하여 ClickHouse 클러스터에 연결합니다.
+
+[전용 연결](/cloud/security/connectivity/private-networking)에 대해 자세히 알아보세요.
+
+## 암호화 {#encryption}
+
+### 저장소 수준 암호화 {#storage-encryption}
+
+ClickHouse Cloud는 기본적으로 클라우드 공급자가 관리하는 AES 256 키를 사용하여 데이터의 휴대 상태에서 암호화합니다.
+
+[저장소 암호화](/cloud/security/cmek#storage-encryption)에 대해 자세히 알아보세요.
+
+### 투명한 데이터 암호화 {#tde}
+
+저장소 암호화 외에도 ClickHouse Cloud 기업 고객은 추가 보호를 위해 데이터베이스 수준의 투명한 데이터 암호화를 활성화할 수 있습니다.
+
+[투명한 데이터 암호화](/cloud/security/cmek#transparent-data-encryption-tde)에 대해 자세히 알아보세요.
+
+### 고객 관리 암호화 키 {#cmek}
+
+ClickHouse Cloud 기업 고객은 데이터베이스 수준의 암호화를 위해 자신의 키를 사용할 수 있습니다.
+
+[고객 관리 암호화 키](/cloud/security/cmek#customer-managed-encryption-keys-cmek)에 대해 자세히 알아보세요.
+
+## 감사 및 로깅 {#auditing-logging}
+
+### 콘솔 감사 로그 {#console-audit-log}
+
+콘솔 내에서 수행된 활동이 로그로 기록됩니다. 로그는 검토 및 내보내기를 위해 사용할 수 있습니다.
+
+[콘솔 감사 로그](/cloud/security/audit-logging/console-audit-log)에 대해 자세히 알아보세요.
+
+### 데이터베이스 감사 로그 {#database-audit-logs}
+
+데이터베이스 내에서 수행된 활동이 로그로 기록됩니다. 로그는 검토 및 내보내기를 위해 사용할 수 있습니다.
+
+[데이터베이스 감사 로그](/cloud/security/audit-logging/database-audit-log)에 대해 자세히 알아보세요.
+
+### BYOC 보안 플레이북 {#byoc-security-playbook}
+
+ClickHouse BYOC 인스턴스를 관리하는 보안 팀을 위한 샘플 탐지 쿼리.
+
+[BYOC 보안 플레이북](/cloud/security/audit-logging/byoc-security-playbook)에 대해 자세히 알아보세요.
+
+## 준수 {#compliance}
+
+### 보안 및 준수 보고서 {#compliance-reports}
+
+ClickHouse는 강력한 보안 및 준수 프로그램을 유지합니다. 새로운 제3자 감사 보고서를 정기적으로 확인하세요.
+
+[보안 및 준수 보고서](/cloud/security/compliance-overview)에 대해 자세히 알아보세요.
+
+### HIPAA 준수 서비스 {#hipaa-compliance}
+
+ClickHouse Cloud 기업 고객은 비즈니스 파트너 계약(Business Associate Agreement, BAA)에 서명한 후 HIPAA 준수 지역에 보호 건강 정보(PHI)를 저장하는 서비스를 배포할 수 있습니다.
+
+[HIPAA 준수](/cloud/security/compliance/hipaa-onboarding)에 대해 자세히 알아보세요.
+
+### PCI 준수 서비스 {#pci-compliance}
+
+ClickHouse Cloud 기업 고객은 PCI 준수 지역에 신용 카드 정보를 저장하는 서비스를 배포할 수 있습니다.
+
+[PCI 준수](/cloud/security/compliance/pci-onboarding)에 대해 자세히 알아보세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/06_security.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/06_security.md.hash
new file mode 100644
index 00000000000..18dd6d1db56
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/06_security.md.hash
@@ -0,0 +1 @@
+6eb15d2af05a4732
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/_category_.json
new file mode 100644
index 00000000000..ef0bd973e2c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Monitoring",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/advanced_dashboard.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/advanced_dashboard.md
new file mode 100644
index 00000000000..9be76f80a21
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/advanced_dashboard.md
@@ -0,0 +1,251 @@
+---
+'description': 'ClickHouse Cloud의 고급 대시보드'
+'keywords':
+- 'monitoring'
+- 'observability'
+- 'advanced dashboard'
+- 'dashboard'
+- 'observability dashboard'
+'sidebar_label': '고급 대시보드'
+'sidebar_position': 45
+'slug': '/cloud/manage/monitor/advanced-dashboard'
+'title': 'ClickHouse Cloud의 고급 대시보드'
+'doc_type': 'guide'
+---
+
+import AdvancedDashboard from '@site/static/images/cloud/manage/monitoring/advanced_dashboard.png';
+import NativeAdvancedDashboard from '@site/static/images/cloud/manage/monitoring/native_advanced_dashboard.png';
+import EditVisualization from '@site/static/images/cloud/manage/monitoring/edit_visualization.png';
+import InsertedRowsSec from '@site/static/images/cloud/manage/monitoring/inserted_rows_max_parts_for_partition.png';
+import ResourceIntensiveQuery from '@site/static/images/cloud/manage/monitoring/resource_intensive_query.png';
+import SelectedRowsPerSecond from '@site/static/images/cloud/manage/monitoring/selected_rows_sec.png';
+import Image from '@theme/IdealImage';
+
+모니터링 데이터베이스 시스템은 프로덕션 환경에서 배포 상태를 이해하는 데 매우 중요하여 중단을 방지하거나 해결할 수 있습니다.
+
+고급 대시보드는 ClickHouse 시스템과 그 환경에 대한 깊은 통찰력을 제공하도록 설계된 경량 도구로, 성능 병목 현상, 시스템 장애 및 비효율에 앞서 나갈 수 있도록 도와줍니다.
+
+고급 대시보드는 ClickHouse OSS (오픈 소스 소프트웨어)와 Cloud 모두에서 사용할 수 있습니다. 이 문서에서는 Cloud에서 고급 대시보드를 사용하는 방법을 설명합니다.
+
+## 고급 대시보드에 접근하기 {#accessing-the-advanced-dashboard}
+
+고급 대시보드는 다음 경로를 통해 접근할 수 있습니다:
+
+* 왼쪽 사이드 패널
+ * `Monitoring` → `Advanced dashboard`
+
+
+
+## 네이티브 고급 대시보드에 접근하기 {#accessing-the-native-advanced-dashboard}
+
+네이티브 고급 대시보드는 다음 경로를 통해 접근할 수 있습니다:
+
+* 왼쪽 사이드 패널
+ * `Monitoring` → `Advanced dashboard`
+ * `You can still access the native advanced dashboard.` 클릭
+
+이렇게 하면 네이티브 고급 대시보드가 새 탭에서 열립니다. 대시보드에 접근하려면 인증이 필요합니다.
+
+
+
+각 시각화에는 해당 시각화를 채우는 SQL 쿼리가 연결되어 있습니다. 펜 아이콘을 클릭하여 이 쿼리를 편집할 수 있습니다.
+
+
+
+## 기본 제공 시각화 {#out-of-box-visualizations}
+
+고급 대시보드의 기본 차트는 ClickHouse 시스템에 대한 실시간 가시성을 제공하도록 설계되었습니다. 아래는 각 차트에 대한 설명이 포함된 목록입니다. 탐색을 돕기 위해 세 가지 범주로 그룹화되었습니다.
+
+### ClickHouse 특화 {#clickhouse-specific}
+
+이 메트릭은 ClickHouse 인스턴스의 건강 및 성능을 모니터링하도록 맞춤화되어 있습니다.
+
+| 메트릭 | 설명 |
+|---------------------------|---------------------------------------------------------------------------------------|
+| 초당 쿼리 수 | 처리되고 있는 쿼리의 비율을 추적합니다. |
+| 초당 선택된 행 | 쿼리가 읽고 있는 행의 수를 나타냅니다. |
+| 초당 삽입된 행 | 데이터 수집 비율을 측정합니다. |
+| 총 MergeTree 파트 | MergeTree 테이블에서 활성 파트의 수를 보여줍니다. 이를 통해 비배치 삽입을 식별하는 데 도움이 됩니다. |
+| 파티션당 최대 파트 | 임의의 파티션에서 최대 파트의 수를 강조합니다. |
+| 실행 중인 쿼리 | 현재 실행 중인 쿼리의 수를 표시합니다. |
+| 초당 선택된 바이트 | 쿼리가 읽고 있는 데이터의 양을 나타냅니다. |
+
+### 시스템 건강 특화 {#system-health-specific}
+
+ClickHouse 자체뿐 아니라 기본 시스템을 모니터링하는 것도 중요합니다.
+
+| 메트릭 | 설명 |
+|---------------------------|--------------------------------------------------------------------|
+| IO 대기 | I/O 대기 시간을 추적합니다. |
+| CPU 대기 | CPU 자원 경합으로 인한 지연을 측정합니다. |
+| 디스크에서 읽기 | 디스크 또는 블록 장치에서 읽힌 바이트 수를 추적합니다. |
+| 파일 시스템에서 읽기 | 페이지 캐시를 포함하여 파일 시스템에서 읽힌 바이트 수를 추적합니다. |
+| 메모리(추적, 바이트) | ClickHouse에 의해 추적되는 프로세스의 메모리 사용량을 보여줍니다. |
+| 부하 평균 (15분) | 시스템의 현재 부하 평균 15를 보고합니다. |
+| OS CPU 사용량 (사용자 공간)| 사용자 공간 코드를 실행할 때의 CPU 사용량을 나타냅니다. |
+| OS CPU 사용량 (커널) | 커널 코드를 실행할 때의 CPU 사용량을 나타냅니다. |
+
+## ClickHouse Cloud 특화 {#clickhouse-cloud-specific}
+
+ClickHouse Cloud는 객체 저장소 (S3 유형)를 사용하여 데이터를 저장합니다. 이 인터페이스를 모니터링하면 문제를 감지하는 데 도움이 될 수 있습니다.
+
+| 메트릭 | 설명 |
+|--------------------------------|-----------------------------------------------------------|
+| S3 읽기 대기 | S3에 대한 읽기 요청의 지연 시간을 측정합니다. |
+| 초당 S3 읽기 오류 | 읽기 오류 비율을 추적합니다. |
+| 초당 S3에서 읽기 (바이트) | S3 저장소에서 데이터가 읽히는 비율을 추적합니다. |
+| 초당 디스크 S3 쓰기 요청 | S3 저장소에 대한 쓰기 작업의 빈도를 모니터링합니다. |
+| 초당 디스크 S3 읽기 요청 | S3 저장소에 대한 읽기 작업의 빈도를 모니터링합니다. |
+| 페이지 캐시 적중률 | 페이지 캐시의 적중률입니다. |
+| 파일 시스템 캐시 적중률 | 파일 시스템 캐시의 적중률입니다. |
+| 파일 시스템 캐시 크기 | 현재 파일 시스템 캐시의 크기입니다. |
+| 초당 네트워크 송신 바이트 | 수신되는 네트워크 트래픽의 현재 속도를 추적합니다. |
+| 초당 네트워크 수신 바이트 | 발신되는 네트워크 트래픽의 현재 속도를 추적합니다. |
+| 동시 네트워크 연결 수 | 현재 동시 네트워크 연결 수를 추적합니다. |
+
+## 고급 대시보드를 사용하여 문제 식별하기 {#identifying-issues-with-the-advanced-dashboard}
+
+ClickHouse 서비스의 건강 상태에 대한 이 실시간 뷰는 비즈니스에 영향을 미치기 전에 문제를 완화하는 데 큰 도움이 됩니다. 다음은 고급 대시보드를 사용하여 식별할 수 있는 몇 가지 문제입니다.
+
+### 비배치 삽입 {#unbatched-inserts}
+
+[모범 사례 문서](/best-practices/selecting-an-insert-strategy#batch-inserts-if-synchronous)에서 설명한 바와 같이, 가능한 경우 항상 ClickHouse에 대량으로 데이터를 삽입하는 것이 권장됩니다.
+
+합리적인 배치 크기로 대량 삽입을 수행하면 수집 중 생성되는 파트 수가 줄어들어 디스크에 대한 더 효율적인 쓰기와 더 적은 병합 작업이 발생합니다.
+
+비최적 삽입을 식별하는 주요 메트릭은 **초당 삽입된 행** 및 **파티션당 최대 파트**입니다.
+
+
+
+위의 예는 13시와 14시 사이에 **초당 삽입된 행** 및 **파티션당 최대 파트**에서 두 개의 스파이크를 보여줍니다. 이는 우리가 합리적인 속도로 데이터를 수집하고 있다는 것을 나타냅니다.
+
+이후 16시 이후 **파티션당 최대 파트**에서 또 다른 큰 스파이크를 확인하지만 **초당 삽입된 행** 속도는 매우 느립니다. 많은 파트가 생성되지만 생성된 데이터는 매우 적기 때문에 파트의 크기가 비최적임을 나타냅니다.
+
+### 자원 집약적인 쿼리 {#resource-intensive-query}
+
+CPU 또는 메모리와 같은 많은 자원을 소모하는 SQL 쿼리를 실행하는 것은 일반적입니다. 그러나 이러한 쿼리를 모니터링하고 배포의 전체 성능에 미치는 영향을 이해하는 것이 중요합니다.
+
+쿼리 처리량 변화 없이 자원 소비의 갑작스런 변화는 더 비싼 쿼리가 실행되고 있음을 나타낼 수 있습니다. 실행 중인 쿼리 유형에 따라 이는 예상될 수 있지만, 고급 대시보드를 통해 이를 점검할 수 있습니다.
+
+아래는 초당 실행된 쿼리 수가 크게 변하지 않고 CPU 사용량이 peak에 도달하는 예입니다.
+
+
+
+### 잘못된 기본 키 설계 {#bad-primary-key-design}
+
+고급 대시보드를 사용하여 확인할 수 있는 또 다른 문제는 잘못된 기본 키 설계입니다. ["ClickHouse에서 기본 인덱스에 대한 실질적인 소개"](/guides/best-practices/sparse-primary-indexes#a-table-with-a-primary-key)에서 설명한 바와 같이, 기본 키를 사용 사례에 가장 적합하게 선택하면 ClickHouse가 쿼리를 실행하기 위해 읽어야 하는 행 수를 줄여 성능이 크게 향상됩니다.
+
+기본 키의 잠재적 개선을 식별하기 위해 따라야 할 메트릭 중 하나는 **초당 선택된 행**입니다. 선택된 행 수의 갑작스러운 피크는 전체 쿼리 처리량의 일반적인 증가와, 쿼리를 실행하기 위해 많은 수의 행을 선택하는 쿼리를 나타낼 수 있습니다.
+
+
+
+타임스탬프를 필터로 사용하여 `system.query_log` 테이블에서 피크가 발생한 시점에 실행된 쿼리를 찾을 수 있습니다.
+
+예를 들어, 특정 날 11시와 11시 사이에 실행된 모든 쿼리를 보여주는 쿼리를 실행하여 어떤 쿼리가 너무 많은 행을 읽는지 이해할 수 있습니다:
+
+```sql title="Query"
+SELECT
+ type,
+ event_time,
+ query_duration_ms,
+ query,
+ read_rows,
+ tables
+FROM system.query_log
+WHERE has(databases, 'default') AND (event_time >= '2024-12-23 11:20:00') AND (event_time <= '2024-12-23 11:30:00') AND (type = 'QueryFinish')
+ORDER BY query_duration_ms DESC
+LIMIT 5
+FORMAT VERTICAL
+```
+
+```response title="Response"
+Row 1:
+──────
+type: QueryFinish
+event_time: 2024-12-23 11:22:55
+query_duration_ms: 37407
+query: SELECT
+ toStartOfMonth(review_date) AS month,
+ any(product_title),
+ avg(star_rating) AS avg_stars
+FROM amazon_reviews_no_pk
+WHERE
+ product_category = 'Home'
+GROUP BY
+ month,
+ product_id
+ORDER BY
+ month DESC,
+ product_id ASC
+LIMIT 20
+read_rows: 150957260
+tables: ['default.amazon_reviews_no_pk']
+
+Row 2:
+──────
+type: QueryFinish
+event_time: 2024-12-23 11:26:50
+query_duration_ms: 7325
+query: SELECT
+ toStartOfMonth(review_date) AS month,
+ any(product_title),
+ avg(star_rating) AS avg_stars
+FROM amazon_reviews_no_pk
+WHERE
+ product_category = 'Home'
+GROUP BY
+ month,
+ product_id
+ORDER BY
+ month DESC,
+ product_id ASC
+LIMIT 20
+read_rows: 150957260
+tables: ['default.amazon_reviews_no_pk']
+
+Row 3:
+──────
+type: QueryFinish
+event_time: 2024-12-23 11:24:10
+query_duration_ms: 3270
+query: SELECT
+ toStartOfMonth(review_date) AS month,
+ any(product_title),
+ avg(star_rating) AS avg_stars
+FROM amazon_reviews_pk
+WHERE
+ product_category = 'Home'
+GROUP BY
+ month,
+ product_id
+ORDER BY
+ month DESC,
+ product_id ASC
+LIMIT 20
+read_rows: 6242304
+tables: ['default.amazon_reviews_pk']
+
+Row 4:
+──────
+type: QueryFinish
+event_time: 2024-12-23 11:28:10
+query_duration_ms: 2786
+query: SELECT
+ toStartOfMonth(review_date) AS month,
+ any(product_title),
+ avg(star_rating) AS avg_stars
+FROM amazon_reviews_pk
+WHERE
+ product_category = 'Home'
+GROUP BY
+ month,
+ product_id
+ORDER BY
+ month DESC,
+ product_id ASC
+LIMIT 20
+read_rows: 6242304
+tables: ['default.amazon_reviews_pk']
+```
+
+이 예에서, 우리는 두 개의 테이블 `amazon_reviews_no_pk`와 `amazon_reviews_pk`에 대해 동일한 쿼리가 실행된 것을 볼 수 있습니다. 이는 누군가가 `amazon_reviews` 테이블에 대한 기본 키 옵션을 테스트하고 있었다고 결론을 내릴 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/advanced_dashboard.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/advanced_dashboard.md.hash
new file mode 100644
index 00000000000..0f5b6b64119
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/advanced_dashboard.md.hash
@@ -0,0 +1 @@
+dfb96b596618b898
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/notifications.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/notifications.md
new file mode 100644
index 00000000000..2fbea015c2f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/notifications.md
@@ -0,0 +1,49 @@
+---
+'title': '알림'
+'slug': '/cloud/notifications'
+'description': '당신의 ClickHouse Cloud 서비스에 대한 알림'
+'keywords':
+- 'cloud'
+- 'notifications'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import notifications_1 from '@site/static/images/cloud/manage/notifications-1.png';
+import notifications_2 from '@site/static/images/cloud/manage/notifications-2.png';
+import notifications_3 from '@site/static/images/cloud/manage/notifications-3.png';
+import notifications_4 from '@site/static/images/cloud/manage/notifications-4.png';
+
+ClickHouse Cloud는 서비스 또는 조직과 관련된 중요한 이벤트에 대한 알림을 전송합니다. 알림이 어떻게 전송되고 구성되는지 이해하기 위해 염두에 두어야 할 몇 가지 개념이 있습니다:
+
+1. **알림 카테고리**: 청구 알림, 서비스 관련 알림 등과 같은 알림 그룹을 나타냅니다. 각 카테고리 내에서 배달 모드를 구성할 수 있는 여러 알림이 있습니다.
+2. **알림 심각도**: 알림 심각도는 알림의 중요성에 따라 `info`, `warning`, 또는 `critical`로 구분됩니다. 이는 구성할 수 없습니다.
+3. **알림 채널**: 채널은 UI, 이메일, Slack 등과 같이 알림이 수신되는 모드를 나타냅니다. 대부분의 알림에 대해 이는 구성 가능합니다.
+
+## 알림 수신 {#receiving-notifications}
+
+알림은 다양한 채널을 통해 수신할 수 있습니다. 현재 ClickHouse Cloud는 이메일, ClickHouse Cloud UI 및 Slack을 통해 알림 수신을 지원합니다. 왼쪽 상단 메뉴의 종 모양 아이콘을 클릭하면 현재 알림을 볼 수 있는 팝업이 열립니다. 팝업 하단의 **모두 보기** 버튼을 클릭하면 모든 알림의 활동 로그를 보여주는 페이지로 이동합니다.
+
+
+
+
+
+## 알림 사용자 정의 {#customizing-notifications}
+
+각 알림에 대해 알림 수신 방식을 사용자 정의할 수 있습니다. 알림 팝업이나 알림 활동 로그의 두 번째 탭에서 설정 화면에 접근할 수 있습니다.
+
+Cloud 사용자는 Cloud UI를 통해 제공되는 알림을 사용자 정의할 수 있으며, 이러한 사용자 정의는 각 개별 사용자에게 반영됩니다. Cloud 사용자는 자신의 이메일로 전송되는 알림도 사용자 정의할 수 있지만, 사용자 정의 이메일과 Slack 채널로 전송되는 알림은 관리자 권한이 있는 사용자만 설정할 수 있습니다.
+
+특정 알림의 배달을 구성하려면 연필 아이콘을 클릭하여 알림 배달 채널을 수정합니다.
+
+
+
+
+
+:::note
+특정 **필수** 알림, 예를 들어 **결제 실패**와 같은 알림은 구성할 수 없습니다.
+:::
+
+## 지원되는 알림 {#supported-notifications}
+
+현재 우리는 청구(결제 실패, 사용량 초과 등)와 관련된 알림 및 확장 이벤트(확장 완료, 확장 차단 등)와 관련된 알림을 전송합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/notifications.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/notifications.md.hash
new file mode 100644
index 00000000000..d4783d49767
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/notifications.md.hash
@@ -0,0 +1 @@
+3feda35b0ebb1b39
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/prometheus.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/prometheus.md
new file mode 100644
index 00000000000..114ef2cf9bf
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/prometheus.md
@@ -0,0 +1,346 @@
+---
+'slug': '/integrations/prometheus'
+'sidebar_label': '프라메테우스'
+'title': '프라메테우스'
+'description': 'ClickHouse 메트릭을 Prometheus로 내보내기'
+'keywords':
+- 'prometheus'
+- 'grafana'
+- 'monitoring'
+- 'metrics'
+- 'exporter'
+'doc_type': 'reference'
+---
+
+import prometheus_grafana_metrics_endpoint from '@site/static/images/integrations/prometheus-grafana-metrics-endpoint.png';
+import prometheus_grafana_dropdown from '@site/static/images/integrations/prometheus-grafana-dropdown.png';
+import prometheus_grafana_chart from '@site/static/images/integrations/prometheus-grafana-chart.png';
+import prometheus_grafana_alloy from '@site/static/images/integrations/prometheus-grafana-alloy.png';
+import prometheus_grafana_metrics_explorer from '@site/static/images/integrations/prometheus-grafana-metrics-explorer.png';
+import prometheus_datadog from '@site/static/images/integrations/prometheus-datadog.png';
+import Image from '@theme/IdealImage';
+
+
+# Prometheus 통합
+
+이 기능은 ClickHouse Cloud 서비스 모니터링을 위해 [Prometheus](https://prometheus.io/)와 통합하는 것을 지원합니다. Prometheus 메트릭에 대한 액세스는 사용자가 안전하게 연결하고 메트릭을 Prometheus 메트릭 수집기로 내보낼 수 있는 [ClickHouse Cloud API](/cloud/manage/api/api-overview) 엔드포인트를 통해 제공됩니다. 이러한 메트릭은 Grafana, Datadog과 같은 대시보드와 통합되어 시각화할 수 있습니다.
+
+시작하려면, [API 키 생성](/cloud/manage/openapi)를 하십시오.
+
+## ClickHouse Cloud 메트릭을 검색하기 위한 Prometheus 엔드포인트 API {#prometheus-endpoint-api-to-retrieve-clickhouse-cloud-metrics}
+
+### API 참조 {#api-reference}
+
+| 메소드 | 경로 | 설명 |
+| ------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
+| GET | `https://api.clickhouse.cloud/v1/organizations/:organizationId/services/:serviceId/prometheus?filtered_metrics=[true \| false]` | 특정 서비스의 메트릭을 반환합니다. |
+| GET | `https://api.clickhouse.cloud/v1/organizations/:organizationId/prometheus?filtered_metrics=[true \| false]` | 조직의 모든 서비스에 대한 메트릭을 반환합니다. |
+
+**요청 매개변수**
+
+| 이름 | 위치 | 유형 |
+| ---------------- | ------------------ | --------------------- |
+| 조직 ID | 엔드포인트 주소 | uuid |
+| 서비스 ID | 엔드포인트 주소 | uuid (선택 사항) |
+| filtered_metrics | 쿼리 매개변수 | boolean (선택 사항) |
+
+### 인증 {#authentication}
+
+기본 인증을 위해 ClickHouse Cloud API 키를 사용하십시오:
+
+```bash
+Username:
+Password:
+Example request
+export KEY_SECRET=
+export KEY_ID=
+export ORG_ID=
+
+
+# For all services in $ORG_ID
+curl --silent --user $KEY_ID:$KEY_SECRET https://api.clickhouse.cloud/v1/organizations/$ORG_ID/prometheus?filtered_metrics=true
+
+
+# For a single service only
+export SERVICE_ID=
+curl --silent --user $KEY_ID:$KEY_SECRET https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/prometheus?filtered_metrics=true
+```
+
+### 샘플 응답 {#sample-response}
+
+```response
+
+# HELP ClickHouse_ServiceInfo Information about service, including cluster status and ClickHouse version
+
+# TYPE ClickHouse_ServiceInfo untyped
+ClickHouse_ServiceInfo{clickhouse_org="c2ba4799-a76e-456f-a71a-b021b1fafe60",clickhouse_service="12f4a114-9746-4a75-9ce5-161ec3a73c4c",clickhouse_service_name="test service",clickhouse_cluster_status="running",clickhouse_version="24.5",scrape="full"} 1
+
+
+# HELP ClickHouseProfileEvents_Query Number of queries to be interpreted and potentially executed. Does not include queries that failed to parse or were rejected due to AST size limits, quota limits or limits on the number of simultaneously running queries. May include internal queries initiated by ClickHouse itself. Does not count subqueries.
+
+# TYPE ClickHouseProfileEvents_Query counter
+ClickHouseProfileEvents_Query{clickhouse_org="c2ba4799-a76e-456f-a71a-b021b1fafe60",clickhouse_service="12f4a114-9746-4a75-9ce5-161ec3a73c4c",clickhouse_service_name="test service",hostname="c-cream-ma-20-server-3vd2ehh-0",instance="c-cream-ma-20-server-3vd2ehh-0",table="system.events"} 6
+
+
+# HELP ClickHouseProfileEvents_QueriesWithSubqueries Count queries with all subqueries
+
+# TYPE ClickHouseProfileEvents_QueriesWithSubqueries counter
+ClickHouseProfileEvents_QueriesWithSubqueries{clickhouse_org="c2ba4799-a76e-456f-a71a-b021b1fafe60",clickhouse_service="12f4a114-9746-4a75-9ce5-161ec3a73c4c",clickhouse_service_name="test service",hostname="c-cream-ma-20-server-3vd2ehh-0",instance="c-cream-ma-20-server-3vd2ehh-0",table="system.events"} 230
+
+
+# HELP ClickHouseProfileEvents_SelectQueriesWithSubqueries Count SELECT queries with all subqueries
+
+# TYPE ClickHouseProfileEvents_SelectQueriesWithSubqueries counter
+ClickHouseProfileEvents_SelectQueriesWithSubqueries{clickhouse_org="c2ba4799-a76e-456f-a71a-b021b1fafe60",clickhouse_service="12f4a114-9746-4a75-9ce5-161ec3a73c4c",clickhouse_service_name="test service",hostname="c-cream-ma-20-server-3vd2ehh-0",instance="c-cream-ma-20-server-3vd2ehh-0",table="system.events"} 224
+
+
+# HELP ClickHouseProfileEvents_FileOpen Number of files opened.
+
+# TYPE ClickHouseProfileEvents_FileOpen counter
+ClickHouseProfileEvents_FileOpen{clickhouse_org="c2ba4799-a76e-456f-a71a-b021b1fafe60",clickhouse_service="12f4a114-9746-4a75-9ce5-161ec3a73c4c",clickhouse_service_name="test service",hostname="c-cream-ma-20-server-3vd2ehh-0",instance="c-cream-ma-20-server-3vd2ehh-0",table="system.events"} 4157
+
+
+# HELP ClickHouseProfileEvents_Seek Number of times the 'lseek' function was called.
+
+# TYPE ClickHouseProfileEvents_Seek counter
+ClickHouseProfileEvents_Seek{clickhouse_org="c2ba4799-a76e-456f-a71a-b021b1fafe60",clickhouse_service="12f4a114-9746-4a75-9ce5-161ec3a73c4c",clickhouse_service_name="test service",hostname="c-cream-ma-20-server-3vd2ehh-0",instance="c-cream-ma-20-server-3vd2ehh-0",table="system.events"} 1840
+
+
+# HELP ClickPipes_Info Always equal to 1. Label "clickpipe_state" contains the current state of the pipe: Stopped/Provisioning/Running/Paused/Failed
+
+# TYPE ClickPipes_Info gauge
+ClickPipes_Info{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name="ClickPipes demo instace",clickpipe_id="642bb967-940b-459e-9f63-a2833f62ec44",clickpipe_name="Confluent demo pipe",clickpipe_source="confluent",clickpipe_status="Running"} 1
+
+
+# HELP ClickPipes_SentEvents_Total Total number of records sent to ClickHouse
+
+# TYPE ClickPipes_SentEvents_Total counter
+ClickPipes_SentEvents_Total{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name="ClickPipes demo instace",clickpipe_id="642bb967-940b-459e-9f63-a2833f62ec44",clickpipe_name="Confluent demo pipe",clickpipe_source="confluent"} 5534250
+
+
+# HELP ClickPipes_SentBytesCompressed_Total Total compressed bytes sent to ClickHouse.
+
+# TYPE ClickPipes_SentBytesCompressed_Total counter
+ClickPipes_SentBytesCompressed_Total{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name
+="ClickPipes demo instace",clickpipe_id="642bb967-940b-459e-9f63-a2833f62ec44",clickpipe_name="Confluent demo pipe",clickpipe_source="confluent"} 380837520
+ClickPipes_SentBytesCompressed_Total{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name
+
+
+# HELP ClickPipes_FetchedBytes_Total Total uncompressed bytes fetched from the source.
+
+# TYPE ClickPipes_FetchedBytes_Total counter
+ClickPipes_FetchedBytes_Total{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name="ClickPipes demo instace",clickpipe_id="642bb967-940b-459e-9f63-a2833f62ec44",clickpipe_name="Confluent demo pipe",clickpipe_source="confluent"} 873286202
+
+
+# HELP ClickPipes_Errors_Total Total errors ingesting data.
+
+# TYPE ClickPipes_Errors_Total counter
+ClickPipes_Errors_Total{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name="ClickPipes demo instace",clickpipe_id="642bb967-940b-459e-9f63-a2833f62ec44",clickpipe_name="Confluent demo pipe",clickpipe_source="confluent"} 0
+
+
+# HELP ClickPipes_SentBytes_Total Total uncompressed bytes sent to ClickHouse.
+
+# TYPE ClickPipes_SentBytes_Total counter
+ClickPipes_SentBytes_Total{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name="ClickPipes demo instace",clickpipe_id="642bb967-940b-459e-9f63-a2833f62ec44",clickpipe_name="Confluent demo pipe",clickpipe_source="confluent"} 477187967
+
+
+# HELP ClickPipes_FetchedBytesCompressed_Total Total compressed bytes fetched from the source. If data is uncompressed at the source, this will equal ClickPipes_FetchedBytes_Total
+
+# TYPE ClickPipes_FetchedBytesCompressed_Total counter
+ClickPipes_FetchedBytesCompressed_Total{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name="ClickPipes demo instace",clickpipe_id="642bb967-940b-459e-9f63-a2833f62ec44",clickpipe_name="Confluent demo pipe",clickpipe_source="confluent"} 873286202
+
+
+# HELP ClickPipes_FetchedEvents_Total Total number of records fetched from the source.
+
+# TYPE ClickPipes_FetchedEvents_Total counter
+ClickPipes_FetchedEvents_Total{clickhouse_org="11dfa1ec-767d-43cb-bfad-618ce2aaf959",clickhouse_service="82b83b6a-5568-4a82-aa78-fed9239db83f",clickhouse_service_name="ClickPipes demo instace",clickpipe_id="642bb967-940b-459e-9f63-a2833f62ec44",clickpipe_name="Confluent demo pipe",clickpipe_source="confluent"} 5535376
+```
+
+### 메트릭 레이블 {#metric-labels}
+
+모든 메트릭은 다음 레이블을 가집니다:
+
+| 레이블 | 설명 |
+|---------------------|--------------------------|
+| clickhouse_org | 조직 ID |
+| clickhouse_service | 서비스 ID |
+| clickhouse_service_name | 서비스 이름 |
+
+ClickPipes의 경우, 메트릭은 다음 레이블도 포함합니다:
+
+| 레이블 | 설명 |
+|------------------|-------------------------|
+| clickpipe_id | ClickPipe ID |
+| clickpipe_name | ClickPipe 이름 |
+| clickpipe_source | ClickPipe 소스 유형 |
+
+### 정보 메트릭 {#information-metrics}
+
+ClickHouse Cloud는 값이 항상 `1`인 `gauge` 타입의 특별한 메트릭 `ClickHouse_ServiceInfo`를 제공합니다. 이 메트릭은 모든 **메트릭 레이블**과 다음 레이블을 포함합니다:
+
+| 레이블 | 설명 |
+|-------------------------|-----------------------------------------|
+| clickhouse_cluster_status | 서비스의 상태입니다. 다음 중 하나일 수 있습니다: [`awaking` \| `running` \| `degraded` \| `idle` \| `stopped`] |
+| clickhouse_version | 서비스가 실행 중인 ClickHouse 서버의 버전 |
+| scrape | 마지막 스크랩의 상태를 나타냅니다. `full` 또는 `partial`이 될 수 있습니다. |
+| full | 마지막 메트릭 스크랩에서 오류가 없었음을 나타냅니다. |
+| partial | 마지막 메트릭 스크랩에서 일부 오류가 있었고 `ClickHouse_ServiceInfo` 메트릭만 반환되었음을 나타냅니다. |
+
+메트릭을 검색하는 요청은 유휴 상태의 서비스를 재개하지 않습니다. 서비스가 `idle` 상태에 있을 경우, `ClickHouse_ServiceInfo` 메트릭만 반환됩니다.
+
+ClickPipes의 경우, **메트릭 레이블**에 추가되어 `clickpipe_state`라는 레이블이 있는 유사한 `ClickPipes_Info` 메트릭 `gauge`가 있습니다:
+
+| 레이블 | 설명 |
+|------------------|-------------------------|
+| clickpipe_state | 파이프의 현재 상태 |
+
+### Prometheus 구성 {#configuring-prometheus}
+
+Prometheus 서버는 지정된 간격으로 구성된 대상을 대상으로 메트릭을 수집합니다. 아래는 ClickHouse Cloud Prometheus 엔드포인트를 사용하기 위한 Prometheus 서버의 예제 구성입니다:
+
+```yaml
+global:
+ scrape_interval: 15s
+
+scrape_configs:
+ - job_name: "prometheus"
+ static_configs:
+ - targets: ["localhost:9090"]
+ - job_name: "clickhouse"
+ static_configs:
+ - targets: ["api.clickhouse.cloud"]
+ scheme: https
+ params:
+ filtered_metrics: ["true"]
+ metrics_path: "/v1/organizations//prometheus"
+ basic_auth:
+ username:
+ password:
+ honor_labels: true
+```
+
+`honor_labels` 구성 매개변수는 인스턴스 레이블이 올바르게 채워지도록 `true`로 설정해야 합니다. 또한, 위 예제에서는 `filtered_metrics`가 `true`로 설정되어 있지만, 사용자의 선호에 따라 구성되어야 합니다.
+
+## Grafana와 통합 {#integrating-with-grafana}
+
+사용자는 Grafana와 통합하는 두 가지 주요 방법이 있습니다:
+
+- **메트릭 엔드포인트** – 이 접근법은 추가 구성 요소나 인프라가 필요하지 않는 장점이 있습니다. 이 옵션은 Grafana Cloud에 한정되며, ClickHouse Cloud Prometheus 엔드포인트 URL과 자격 증명만 필요합니다.
+- **Grafana Alloy** - Grafana Alloy는 Grafana 에이전트를 대체하는 공급업체 중립의 OpenTelemetry (OTel) Collector 배포입니다. 이는 스크래퍼로 사용될 수 있으며, 귀하의 인프라에 배포 가능하고 모든 Prometheus 엔드포인트와 호환됩니다.
+
+아래에서 이러한 옵션을 사용하는 방법에 대한 지침을 제공하며, ClickHouse Cloud Prometheus 엔드포인트에 특화된 세부 사항에 중점을 둡니다.
+
+### 메트릭 엔드포인트가 있는 Grafana Cloud {#grafana-cloud-with-metrics-endpoint}
+
+- Grafana Cloud 계정에 로그인합니다.
+- **메트릭 엔드포인트**를 선택하여 새 연결을 추가합니다.
+- 스크랩 URL을 Prometheus 엔드포인트를 가리키도록 구성하고 기본 인증을 사용하여 API 키/비밀로 연결을 구성합니다.
+- 연결 테스트를 통해 연결할 수 있는지 확인합니다.
+
+
+
+
+
+구성이 완료되면 대시보드 구성을 위해 선택할 수 있는 메트릭이 드롭다운에 표시되어야 합니다:
+
+
+
+
+
+
+
+### Alloy가 있는 Grafana Cloud {#grafana-cloud-with-alloy}
+
+Grafana Cloud를 사용하는 경우, Grafana의 Alloy 메뉴로 이동하여 화면의 지침에 따라 Alloy를 설치할 수 있습니다:
+
+
+
+
+
+이렇게 하면 인증 토큰과 함께 Grafana Cloud 엔드포인트로 데이터를 전송하기 위해 `prometheus.remote_write` 구성요소가 있는 Alloy가 구성됩니다. 사용자는 ClickHouse Cloud Prometheus 엔드포인트에 대한 스크래퍼를 포함하도록 Alloy 구성(리눅스의 경우 `/etc/alloy/config.alloy`에 위치)을 수정하기만 하면 됩니다.
+
+다음은 ClickHouse Cloud 엔드포인트에서 메트릭을 스크랩하기 위한 `prometheus.scrape` 구성요소가 있는 Alloy의 구성 예시와 자동으로 구성된 `prometheus.remote_write` 구성요소를 나타냅니다. `basic_auth` 구성요소에는 각각 사용자 이름과 비밀번호로 클라우드 API 키 ID와 비밀번호가 포함되어 있습니다.
+
+```yaml
+prometheus.scrape "clickhouse_cloud" {
+ // Collect metrics from the default listen address.
+ targets = [{
+ __address__ = "https://api.clickhouse.cloud/v1/organizations/:organizationId/prometheus?filtered_metrics=true",
+// e.g. https://api.clickhouse.cloud/v1/organizations/97a33bdb-4db3-4067-b14f-ce40f621aae1/prometheus?filtered_metrics=true
+ }]
+
+ honor_labels = true
+
+ basic_auth {
+ username = "KEY_ID"
+ password = "KEY_SECRET"
+ }
+
+ forward_to = [prometheus.remote_write.metrics_service.receiver]
+ // forward to metrics_service below
+}
+
+prometheus.remote_write "metrics_service" {
+ endpoint {
+ url = "https://prometheus-prod-10-prod-us-central-0.grafana.net/api/prom/push"
+ basic_auth {
+ username = ""
+ password = ""
+ }
+ }
+}
+```
+
+`honor_labels` 구성 매개변수는 인스턴스 레이블이 올바르게 채워지도록 `true`로 설정해야 합니다.
+
+### Alloy가 있는 Grafana 자기 관리 {#grafana-self-managed-with-alloy}
+
+Grafana의 자체 관리 사용자는 Alloy 에이전트 설치에 대한 지침을 [여기](https://grafana.com/docs/alloy/latest/get-started/install/)에서 찾을 수 있습니다. 사용자가 Alloy를 구성하여 Prometheus 메트릭을 원하는 대상으로 전송한 것으로 가정합니다. 아래의 `prometheus.scrape` 구성요소는 Alloy가 ClickHouse Cloud 엔드포인트를 스크랩하게 합니다. 스크랩된 메트릭을 받는 `prometheus.remote_write`가 있다고 가정하고, 존재하지 않는 경우 `forward_to 키`를 대상 위치로 조정합니다.
+
+```yaml
+prometheus.scrape "clickhouse_cloud" {
+ // Collect metrics from the default listen address.
+ targets = [{
+ __address__ = "https://api.clickhouse.cloud/v1/organizations/:organizationId/prometheus?filtered_metrics=true",
+// e.g. https://api.clickhouse.cloud/v1/organizations/97a33bdb-4db3-4067-b14f-ce40f621aae1/prometheus?filtered_metrics=true
+ }]
+
+ honor_labels = true
+
+ basic_auth {
+ username = "KEY_ID"
+ password = "KEY_SECRET"
+ }
+
+ forward_to = [prometheus.remote_write.metrics_service.receiver]
+ // forward to metrics_service. Modify to your preferred receiver
+}
+```
+
+구성이 완료되면 메트릭 탐색기에서 ClickHouse 관련 메트릭을 볼 수 있어야 합니다:
+
+
+
+
+
+`honor_labels` 구성 매개변수는 인스턴스 레이블이 올바르게 채워지도록 `true`로 설정해야 합니다.
+
+## Datadog와 통합 {#integrating-with-datadog}
+
+Datadog [에이전트](https://docs.datadoghq.com/agent/?tab=Linux)와 [OpenMetrics 통합](https://docs.datadoghq.com/integrations/openmetrics/)을 사용하여 ClickHouse Cloud 엔드포인트에서 메트릭을 수집할 수 있습니다. 아래는 이 에이전트 및 통합을 위한 간단한 구성 예입니다. 단, 가장 관심 있는 메트릭만 선택하는 것이 좋습니다. 아래의 포괄적인 예시는 Datadog이 사용자 지정 메트릭으로 처리할 수 있는 수천 개의 메트릭-인스턴스 조합을 내보낼 것입니다.
+
+```yaml
+init_config:
+
+instances:
+ - openmetrics_endpoint: 'https://api.clickhouse.cloud/v1/organizations/97a33bdb-4db3-4067-b14f-ce40f621aae1/prometheus?filtered_metrics=true'
+ namespace: 'clickhouse'
+ metrics:
+ - '^ClickHouse.*'
+ username: username
+ password: password
+```
+
+
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/prometheus.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/prometheus.md.hash
new file mode 100644
index 00000000000..c9a70d06a2b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/07_monitoring/prometheus.md.hash
@@ -0,0 +1 @@
+d180f2abdbbc6853
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/08_backups.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/08_backups.md
new file mode 100644
index 00000000000..64770fcdb3d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/08_backups.md
@@ -0,0 +1,167 @@
+---
+'sidebar_label': '백업'
+'slug': '/cloud/features/backups'
+'title': '백업'
+'keywords':
+- 'backups'
+- 'cloud backups'
+- 'restore'
+'description': 'ClickHouse Cloud의 백업 기능에 대한 개요를 제공합니다.'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import ScalePlanFeatureBadge from '@theme/badges/ScalePlanFeatureBadge';
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge'
+import backup_chain from '@site/static/images/cloud/manage/backup-chain.png';
+
+Database backups provide a safety net by ensuring that if data is lost for any unforeseen reason, the service can be restored to a previous state from the last successful backup. This minimizes downtime and prevents business critical data from being permanently lost.
+
+## Backups {#backups}
+
+### How backups work in ClickHouse Cloud {#how-backups-work-in-clickhouse-cloud}
+
+ClickHouse Cloud backups are a combination of "full" and "incremental" backups that constitute a backup chain. The chain starts with a full backup, and incremental backups are then taken over the next several scheduled time periods to create a sequence of backups. Once a backup chain reaches a certain length, a new chain is started. This entire chain of backups can then be utilized to restore data to a new service if needed. Once all backups included in a specific chain are past the retention time frame set for the service (more on retention below), the chain is discarded.
+
+In the screenshot below, the solid line squares show full backups and the dotted line squares show incremental backups. The solid line rectangle around the squares denotes the retention period and the backups that are visible to the end user, which can be used for a backup restore. In the scenario below, backups are being taken every 24 hours and are retained for 2 days.
+
+On Day 1, a full backup is taken to start the backup chain. On Day 2, an incremental backup is taken, and we now have a full and incremental backup available to restore from. By Day 7, we have one full backup and six incremental backups in the chain, with the most recent two incremental backups visible to the user. On Day 8, we take a new full backup, and on Day 9, once we have two backups in the new chain, the previous chain is discarded.
+
+
+
+### Default backup policy {#default-backup-policy}
+
+In the Basic, Scale, and Enterprise tiers, backups are metered and billed separately from storage. All services will default to one daily backup with the ability to configure more, starting with the Scale tier, via the Settings tab of the Cloud console. Each backup will be retained for at least 24 hours.
+
+See ["Review and restore backups"](/cloud/manage/backups/overview) for further details.
+
+## Configurable backups {#configurable-backups}
+
+
+
+ClickHouse Cloud allows you to configure the schedule for your backups for **Scale** and **Enterprise** tier services. Backups can be configured along the following dimensions based on your business needs.
+
+- **Retention**: The duration of days, for which each backup will be retained. Retention can be specified as low as 1 day, and as high as 30 days with several values to pick in between.
+- **Frequency**: The frequency allows you to specify the time duration between subsequent backups. For instance, a frequency of "every 12 hours" means that backups will be spaced 12 hours apart. Frequency can range from "every 6 hours" to "every 48 hours" in the following hourly increments: `6`, `8`, `12`, `16`, `20`, `24`, `36`, `48`.
+- **Start Time**: The start time for when you want to schedule backups each day. Specifying a start time implies that the backup "Frequency" will default to once every 24 hours. Clickhouse Cloud will start the backup within an hour of the specified start time.
+
+:::note
+The custom schedule will override the default backup policy in ClickHouse Cloud for your given service.
+
+In some rare scenarios, the backup scheduler will not respect the **Start Time** specified for backups. Specifically, this happens if there was a successful backup triggered < 24 hours from the time of the currently scheduled backup. This could happen due to a retry mechanism we have in place for backups. In such instances, the scheduler will skip over the backup for the current day, and will retry the backup the next day at the scheduled time.
+:::
+
+See ["Configure backup schedules"](/cloud/manage/backups/configurable-backups) for steps to configure your backups.
+
+## Bring Your Own Bucket (BYOB) Backups {#byob}
+
+
+
+ClickHouse Cloud allows exporting backups to your own cloud service provider (CSP) account storage (AWS S3, Google Cloud Storage, or Azure Blob Storage). If you configure backups to your own bucket, ClickHouse Cloud will still take daily backups to its own bucket. This is to ensure that we have at least one copy of the data to restore from in case the backups in your bucket get corrupted. For details of how ClickHouse Cloud backups work, see the [backups](/cloud/manage/backups/overview) docs.
+
+In this guide, we walk through how you can export backups to your AWS, GCP, Azure object storage, as well as how to restore these backups in your account to a new ClickHouse Cloud service. We also share backup / restore commands that allow you to export backups to your bucket and restore them.
+
+:::note Cross-region backups
+Users should be aware that any usage where backups are being exported to a different region in the same cloud provider will incur [data transfer](/cloud/manage/network-data-transfer) charges.
+
+Currently, we do not support cross-cloud backups, nor backup / restore for services utilizing [Transparent Data Encryption (TDE)](/cloud/security/cmek#transparent-data-encryption-tde) or for regulated services.
+:::
+
+See ["Export backups to your own Cloud account"](/cloud/manage/backups/export-backups-to-own-cloud-account) for examples of how to take full and incremental backups to AWS, GCP, Azure object storage as well as how to restore from the backups.
+
+### Backup options {#backup-options}
+
+To export backups to your own cloud account, you have two options:
+
+
+
+##### Via Cloud Console UI {#via-ui}
+
+External backups can be [configured in the UI](/cloud/manage/backups/backup-restore-via-ui). By default, backups will then be taken daily (as specified in the [default backup policy](/cloud/features/backups#default-backup-policy)). However, we also support [configurable](/cloud/manage/backups/configurable-backups) backups to your own cloud account, which allows for setting a custom schedule. It is important to note that all backups to your bucket are full backups with no relationship to other previous or future backups.
+
+##### Using SQL commands {#using-commands}
+
+You can use [SQL commands](/cloud/manage/backups/backup-restore-via-commands) to export backups to your bucket.
+
+
+
+:::warning
+ClickHouse Cloud will not manage the lifecycle of backups in customer buckets. Customers are responsible for ensuring that backups in their bucket are managed appropriately for adhering to compliance standards as well as managing cost. If the backups are corrupted, they will not be able to be restored.
+:::
+
+---
+
+데이터베이스 백업은 데이터가 예기치 않은 이유로 손실될 경우, 마지막으로 성공적으로 백업된 상태로 서비스를 복원할 수 있도록 보장하여 안전망을 제공합니다. 이는 다운타임을 최소화하고 비즈니스에 중요한 데이터가 영구적으로 손실되는 것을 방지합니다.
+
+## 백업 {#backups}
+
+### ClickHouse Cloud에서 백업 작동 방식 {#how-backups-work-in-clickhouse-cloud}
+
+ClickHouse Cloud 백업은 백업 체인을 구성하는 "전체" 및 "증분" 백업의 조합입니다. 체인은 전체 백업으로 시작되며, 그 다음 여러 예약된 시간 동안 증분 백업이 수행되어 백업의 시퀀스가 생성됩니다. 백업 체인이 특정 길이에 도달하면 새로운 체인이 시작됩니다. 이 전체 백업 체인은 필요에 따라 새로운 서비스로 데이터를 복원하는 데 활용될 수 있습니다. 특정 체인에 포함된 모든 백업이 서비스에 설정된 보존 기간을 초과하면 (아래 보존에 대한 내용) 체인은 폐기됩니다.
+
+아래 스크린샷에서 실선 정사각형은 전체 백업을 보여주고 점선 정사각형은 증분 백업을 보여줍니다. 정사각형 주위의 실선 사각형은 보존 기간과 최종 사용자에게 표시되는 백업을 나타내며, 이는 백업 복원에 사용할 수 있습니다. 아래 시나리오에서는 백업이 매일 24시간마다 수행되며 2일 동안 유지됩니다.
+
+첫째 날에 전체 백업이 수행되어 백업 체인이 시작됩니다. 둘째 날에 증분 백업이 수행되고, 이제 복원할 수 있는 전체 및 증분 백업이 있습니다. 일곱째 날까지, 체인에 하나의 전체 백업과 여섯 개의 증분 백업이 있으며, 사용자는 가장 최근의 두 개의 증분 백업을 볼 수 있습니다. 여덟째 날에 새로운 전체 백업을 수행하고 아홉째 날에는 새 체인에서 두 개의 백업이 있으면 이전 체인은 폐기됩니다.
+
+
+
+### 기본 백업 정책 {#default-backup-policy}
+
+Basic, Scale 및 Enterprise 계층에서 백업은 측정되며 스토리지와 별도로 청구됩니다. 모든 서비스는 기본적으로 하루에 하나의 백업을 수행하며, Scale 계층의 경우 Cloud 콘솔의 설정 탭을 통해 더 많은 백업을 구성할 수 있는 기능이 있습니다. 각 백업은 최소 24시간 동안 유지됩니다.
+
+자세한 내용은 ["백업 검토 및 복원"](/cloud/manage/backups/overview)를 참조하십시오.
+
+## 구성 가능한 백업 {#configurable-backups}
+
+
+
+ClickHouse Cloud는 **Scale** 및 **Enterprise** 계층 서비스에 대해 백업 일정을 구성할 수 있도록 해줍니다. 백업은 비즈니스 필요에 따라 다음과 같은 측면에서 구성될 수 있습니다.
+
+- **보존**: 각 백업이 유지될 일수입니다. 보존은 최소 1일에서 최대 30일까지 설정할 수 있으며, 그 사이의 여러 값에서 선택할 수 있습니다.
+- **빈도**: 빈도를 사용하여 후속 백업 간의 시간 간격을 지정할 수 있습니다. 예를 들어 "12시간마다"라는 빈도는 백업이 12시간 간격으로 이루어짐을 의미합니다. 빈도는 "6시간마다"부터 "48시간마다"까지 다음 시간 간격에서 선택할 수 있습니다: `6`, `8`, `12`, `16`, `20`, `24`, `36`, `48`.
+- **시작 시간**: 매일 백업을 예약할 시간을 지정하는 시작 시간입니다. 시작 시간을 지정하면 백업 "빈도"는 기본적으로 24시간마다 한 번으로 설정됩니다. Clickhouse Cloud는 지정된 시작 시간 내 한 시간 이내에 백업을 시작합니다.
+
+:::note
+사용자 지정 일정은 지정된 서비스의 ClickHouse Cloud 기본 백업 정책을 무시합니다.
+
+일부 희귀한 시나리오에서는 백업 스케줄러가 백업에 대해 지정된 **시작 시간**을 존중하지 않을 수 있습니다. 구체적으로, 현재 예약된 백업 시간 < 24시간 전에 성공적인 백업이 실행되었던 경우 이 문제가 발생합니다. 이는 백업을 위한 리트라이 메커니즘으로 인해 발생할 수 있습니다. 이러한 경우, 스케줄러는 현재 날짜의 백업을 건너뛰고 예약된 시간에 다음 날에 백업을 재시도합니다.
+:::
+
+백업을 구성하는 단계에 대한 정보는 ["백업 일정 구성"](/cloud/manage/backups/configurable-backups)를 참조하십시오.
+
+## 내 버킷 사용 (BYOB) 백업 {#byob}
+
+
+
+ClickHouse Cloud는 자신의 클라우드 서비스 제공업체(CSP) 계정 스토리지(AWS S3, Google Cloud Storage 또는 Azure Blob Storage)로 백업을 내보낼 수 있습니다. 자신의 버킷에 백업을 구성할 경우, ClickHouse Cloud는 여전히 자신의 버킷에 매일 백업을 수행합니다. 이는 백업이 손상될 경우 데이터를 복원할 수 있는 최소한의 백업 사본을 확보하기 위한 것입니다. ClickHouse Cloud 백업 작동 방식에 대한 자세한 내용은 [백업](/cloud/manage/backups/overview) 문서를 참조하십시오.
+
+이 가이드에서는 AWS, GCP, Azure 객체 저장소로 백업을 내보내는 방법과 이러한 백업을 계정의 새 ClickHouse Cloud 서비스로 복원하는 방법을 안내합니다. 또한 버킷에 백업을 내보내고 복원할 수 있도록 하는 백업 / 복원 명령도 공유합니다.
+
+:::note 교차 지역 백업
+사용자는 백업이 동일한 클라우드 제공업체의 다른 지역으로 내보내질 때 [데이터 전송](/cloud/manage/network-data-transfer) 비용이 발생한다는 점을 유의해야 합니다.
+
+현재 우리는 교차 클라우드 백업을 지원하지 않으며, [투명 데이터 암호화 (TDE)](/cloud/security/cmek#transparent-data-encryption-tde)를 사용하는 서비스나 규제가 있는 서비스에 대한 백업 / 복원도 지원하지 않습니다.
+:::
+
+어떻게 AWS, GCP, Azure 객체 저장소에 전체 및 증분 백업을 수행하고 백업에서 복원할 수 있는지에 대한 예제는 ["내 클라우드 계정으로 백업 내보내기"](/cloud/manage/backups/export-backups-to-own-cloud-account)를 참조하십시오.
+
+### 백업 옵션 {#backup-options}
+
+자신의 클라우드 계정으로 백업을 내보내려면 두 가지 옵션이 있습니다:
+
+
+
+##### Cloud 콘솔 UI를 통해 {#via-ui}
+
+외부 백업은 [UI에서 구성할 수 있습니다](/cloud/manage/backups/backup-restore-via-ui). 기본적으로 백업은 매일 수행됩니다 ( [기본 백업 정책](/cloud/features/backups#default-backup-policy)에서 지정된 대로). 그러나 사용자의 클라우드 계정에 대한 [구성 가능한](/cloud/manage/backups/configurable-backups) 백업도 지원되며, 이를 통해 사용자 지정 일정을 설정할 수 있습니다. 모든 버킷의 백업은 다른 이전 또는 미래의 백업과는 관계없는 전체 백업임을 유의해야 합니다.
+
+##### SQL 명령 사용 {#using-commands}
+
+[SQL 명령](/cloud/manage/backups/backup-restore-via-commands)을 사용하여 백업을 버킷으로 내보낼 수 있습니다.
+
+
+
+:::warning
+ClickHouse Cloud는 고객의 버킷에서 백업의 생애주기를 관리하지 않습니다. 고객은 버킷에 있는 백업이 준수 기준을 준수하도록 적절하게 관리되는지 및 비용 관리가 이루어지는지를 책임져야 합니다. 백업이 손상된 경우 복원이 불가능합니다.
+:::
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/08_backups.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/08_backups.md.hash
new file mode 100644
index 00000000000..29793f1f671
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/08_backups.md.hash
@@ -0,0 +1 @@
+704f1e59892daea9
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/09_support.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/09_support.md
new file mode 100644
index 00000000000..077ac686ffa
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/09_support.md
@@ -0,0 +1,18 @@
+---
+'sidebar_label': '클라우드 지원'
+'title': '지원'
+'slug': '/cloud/support'
+'description': '클라우드 지원에 대해 알아보세요'
+'keywords':
+- 'ClickHouse Cloud'
+- 'cloud support'
+- 'customer support'
+- 'technical assistance'
+- 'managed service support'
+'hide_title': true
+'doc_type': 'guide'
+---
+
+import Content from '@site/i18n/ko/docusaurus-plugin-content-docs/current/about-us/support.md';
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/09_support.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/09_support.md.hash
new file mode 100644
index 00000000000..112c0c174d2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/09_support.md.hash
@@ -0,0 +1 @@
+ee3667d68a43a517
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/_category_.json
new file mode 100644
index 00000000000..383c8150644
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/features/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Features",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/_category_.json
new file mode 100644
index 00000000000..67a1dae85d3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "SQL console",
+ "collapsible": true,
+ "collapsed": true,
+}
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/connection_details.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/connection_details.md
new file mode 100644
index 00000000000..e74f1c48060
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/connection_details.md
@@ -0,0 +1,17 @@
+---
+'slug': '/cloud/guides/sql-console/gather-connection-details'
+'sidebar_label': '연결 세부 정보 수집'
+'title': '연결 세부 정보 수집'
+'description': '연결 세부 정보 수집'
+'doc_type': 'guide'
+'keywords':
+- 'connection details'
+- 'credentials'
+- 'connection string'
+- 'setup'
+- 'configuration'
+---
+
+import ConnectionDetails from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_gather_your_details_http.mdx';
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/connection_details.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/connection_details.md.hash
new file mode 100644
index 00000000000..902cf0da426
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/connection_details.md.hash
@@ -0,0 +1 @@
+cee420e51ce61fbd
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/query-endpoints.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/query-endpoints.md
new file mode 100644
index 00000000000..12105161d3b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/query-endpoints.md
@@ -0,0 +1,579 @@
+---
+'sidebar_title': 'Query API Endpoints'
+'slug': '/cloud/get-started/query-endpoints'
+'description': '저장된 쿼리에서 REST API 엔드포인트를 쉽게 생성하세요'
+'keywords':
+- 'api'
+- 'query api endpoints'
+- 'query endpoints'
+- 'query rest api'
+'title': '쿼리 API 엔드포인트'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import endpoints_testquery from '@site/static/images/cloud/sqlconsole/endpoints-testquery.png';
+import endpoints_savequery from '@site/static/images/cloud/sqlconsole/endpoints-savequery.png';
+import endpoints_configure from '@site/static/images/cloud/sqlconsole/endpoints-configure.png';
+import endpoints_completed from '@site/static/images/cloud/sqlconsole/endpoints-completed.png';
+import endpoints_curltest from '@site/static/images/cloud/sqlconsole/endpoints-curltest.png';
+import endpoints_monitoring from '@site/static/images/cloud/sqlconsole/endpoints-monitoring.png';
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+
+# 쿼리 API 엔드포인트 설정
+
+**쿼리 API 엔드포인트** 기능을 사용하면 ClickHouse Cloud 콘솔의 모든 저장된 SQL 쿼리에서 API 엔드포인트를 직접 생성할 수 있습니다. 이를 통해 네이티브 드라이버를 통해 ClickHouse Cloud 서비스에 연결하지 않고도 HTTP를 통해 API 엔드포인트에 액세스하여 저장된 쿼리를 실행할 수 있습니다.
+
+## 전제 조건 {#quick-start-guide}
+
+진행하기 전에 다음을 준비하세요:
+- 적절한 권한이 있는 API 키
+- 관리자 콘솔 역할
+
+아직 API 키가 없다면 이 가이드를 따라 [API 키를 생성하세요](/cloud/manage/openapi).
+
+:::note 최소 권한
+API 엔드포인트를 쿼리하기 위해 API 키는 `쿼리 엔드포인트` 서비스 액세스 권한이 있는 `회원` 조직 역할을 가지고 있어야 합니다. 데이터베이스 역할은 엔드포인트를 생성할 때 구성됩니다.
+:::
+
+
+
+### 저장된 쿼리 만들기 {#creating-a-saved-query}
+
+저장된 쿼리가 이미 있다면 이 단계를 건너갈 수 있습니다.
+
+새 쿼리 탭을 엽니다. 설명을 위해 [youtube 데이터셋](/getting-started/example-datasets/youtube-dislikes)을 사용할 것입니다. 이 데이터셋은 약 45억 개의 기록을 포함하고 있습니다.
+["테이블 만들기"](/getting-started/example-datasets/youtube-dislikes#create-the-table) 섹션의 단계를 따라 Cloud 서비스에서 테이블을 생성하고 데이터를 삽입하세요.
+
+:::tip `LIMIT` 행 수 제한
+예시 데이터셋 자습서는 많은 데이터를 삽입합니다 - 46.5억 행이므로 삽입하는 데 시간이 걸릴 수 있습니다.
+이 가이드를 위해 더 적은 양의 데이터를 삽입하기 위해 `LIMIT` 절을 사용하는 것이 좋습니다. 예를 들면, 1,000만 행을 사용할 수 있습니다.
+:::
+
+예시 쿼리로는 사용자 입력 `year` 매개변수에 따라 비디오당 평균 조회수가 가장 많은 상위 10명의 업로더를 반환합니다.
+
+```sql
+WITH sum(view_count) AS view_sum,
+ round(view_sum / num_uploads, 2) AS per_upload
+SELECT
+ uploader,
+ count() AS num_uploads,
+ formatReadableQuantity(view_sum) AS total_views,
+ formatReadableQuantity(per_upload) AS views_per_video
+FROM
+ youtube
+WHERE
+-- highlight-next-line
+ toYear(upload_date) = {year: UInt16}
+GROUP BY uploader
+ORDER BY per_upload desc
+ LIMIT 10
+```
+
+위 코드 스니펫에서 강조된 바와 같이 이 쿼리에는 매개변수(`year`)가 포함되어 있습니다.
+중괄호 `{ }`와 함께 매개변수의 유형을 사용하여 쿼리 매개변수를 지정할 수 있습니다.
+SQL 콘솔 쿼리 편집기는 ClickHouse 쿼리 매개변수 표현식을 자동으로 감지하고 각 매개변수에 대한 입력을 제공합니다.
+
+이 쿼리가 작동하는지 확인하기 위해 SQL 편집기의 오른쪽에 있는 쿼리 변수 입력 상자에 `2010`년을 지정하여 이 쿼리를 빨리 실행해보겠습니다:
+
+
+
+다음으로 쿼리를 저장합니다:
+
+
+
+저장된 쿼리와 관련된 문서는 ["쿼리 저장하기"](/cloud/get-started/sql-console#saving-a-query) 섹션에서 확인할 수 있습니다.
+
+### 쿼리 API 엔드포인트 구성하기 {#configuring-the-query-api-endpoint}
+
+쿼리 API 엔드포인트는 쿼리 보기에서 **공유** 버튼을 클릭하고 `API Endpoint`를 선택하여 구성할 수 있습니다.
+어떤 API 키가 엔드포인트에 액세스할 수 있는지 지정하라는 메시지가 표시됩니다:
+
+
+
+API 키를 선택한 후에는 다음을 요청받습니다:
+- 쿼리를 실행하는 데 사용할 데이터베이스 역할 선택(`전체 접근`, `읽기 전용` 또는 `사용자 정의 역할 생성`)
+- 교차 출처 리소스 공유(CORS)가 허용된 도메인 지정
+
+이 옵션을 선택하면 쿼리 API 엔드포인트가 자동으로 프로비저닝됩니다.
+
+테스트 요청을 보낼 수 있도록 예시 `curl` 명령이 표시됩니다:
+
+
+
+인터페이스에 표시된 curl 명령은 편의성을 위해 아래에 나열되어 있습니다:
+
+```bash
+curl -H "Content-Type: application/json" -s --user ':' '?format=JSONEachRow¶m_year='
+```
+
+### 쿼리 API 매개변수 {#query-api-parameters}
+
+쿼리의 쿼리 매개변수는 `{parameter_name: type}` 구문으로 지정할 수 있습니다. 이러한 매개변수는 자동으로 감지되며 예시 요청 페이로드에는 이러한 매개변수를 전송할 수 있는 `queryVariables` 객체가 포함됩니다.
+
+### 테스트 및 모니터링 {#testing-and-monitoring}
+
+쿼리 API 엔드포인트가 생성된 후 `curl` 또는 다른 HTTP 클라이언트를 사용하여 올바르게 작동하는지 테스트할 수 있습니다:
+
+
+
+첫 번째 요청을 보낸 후, **공유** 버튼 오른쪽에 새로운 버튼이 즉시 나타납니다. 이를 클릭하면 쿼리에 대한 모니터링 데이터가 포함된 플라이아웃이 열립니다:
+
+
+
+
+
+## 구현 세부정보 {#implementation-details}
+
+이 엔드포인트는 저장된 쿼리 API 엔드포인트에서 쿼리를 실행합니다.
+여러 버전을 지원하며, 유연한 응답 형식, 매개변수화된 쿼리 및 선택적 스트리밍 응답(버전 2 전용)을 지원합니다.
+
+**엔드포인트:**
+
+```text
+GET /query-endpoints/{queryEndpointId}/run
+POST /query-endpoints/{queryEndpointId}/run
+```
+
+### HTTP 메서드 {#http-methods}
+
+| 메서드 | 사용 사례 | 매개변수 |
+|---------|----------|------------|
+| **GET** | 매개변수가 있는 간단한 쿼리 | URL 매개변수로 쿼리 변수 전달 (`?param_name=value`) |
+| **POST** | 복잡한 쿼리 또는 요청 본문 사용 시 | 요청 본문에 쿼리 변수 전달 (`queryVariables` 객체) |
+
+**GET을 사용할 때:**
+- 복잡한 중첩 데이터가 없는 간단한 쿼리
+- 매개변수가 쉽게 URL 인코딩될 수 있음
+- HTTP GET 의미론의 캐싱 이점
+
+**POST를 사용할 때:**
+- 복잡한 쿼리 변수(배열, 객체, 대용량 문자열)
+- 보안/프라이버시를 위해 요청 본문 선호 시
+- 스트리밍 파일 업로드 또는 대용량 데이터
+
+### 인증 {#authentication}
+
+**필수:** 예
+**방법:** OpenAPI 키/비밀을 사용한 기본 인증
+**권한:** 쿼리 엔드포인트에 대한 적절한 권한
+
+### 요청 구성 {#request-configuration}
+
+#### URL 매개변수 {#url-params}
+
+| 매개변수 | 필수 | 설명 |
+|-----------|----------|-------------|
+| `queryEndpointId` | **예** | 실행할 쿼리 엔드포인트의 고유 식별자 |
+
+#### 쿼리 매개변수 {#query-params}
+
+| 매개변수 | 필수 | 설명 | 예시 |
+|-----------|----------|-------------|---------|
+| `format` | 아니오 | 응답 형식 (모든 ClickHouse 형식 지원) | `?format=JSONEachRow` |
+| `param_:name` | 아니오 | 요청 본문이 스트림일 때 쿼리 변수. `:name`을 변수 이름으로 교체 | `?param_year=2024` |
+| `:clickhouse_setting` | 아니오 | 지원되는 [ClickHouse 설정](https://clickhouse.com/docs/operations/settings/settings) | `?max_threads=8` |
+
+#### 헤더 {#headers}
+
+| 헤더 | 필수 | 설명 | 값 |
+|--------|----------|-------------|--------|
+| `x-clickhouse-endpoint-version` | 아니오 | 엔드포인트 버전 지정 | `1` 또는 `2` (마지막으로 저장된 버전 기본값) |
+| `x-clickhouse-endpoint-upgrade` | 아니오 | 엔드포인트 버전 업그레이드 트리거 (버전 헤더와 함께 사용) | `1`로 업그레이드 |
+
+---
+
+### 요청 본문 {#request-body}
+
+#### 매개변수 {#params}
+
+| 매개변수 | 유형 | 필수 | 설명 |
+|-----------|------|----------|-------------|
+| `queryVariables` | 객체 | 아니오 | 쿼리에서 사용할 변수 |
+| `format` | 문자열 | 아니오 | 응답 형식 |
+
+#### 지원되는 형식 {#supported-formats}
+
+| 버전 | 지원되는 형식 |
+|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **버전 2** | 모든 ClickHouse 지원 형식 |
+| **버전 1 (제한적)** | TabSeparated TabSeparatedWithNames TabSeparatedWithNamesAndTypes JSON JSONEachRow CSV CSVWithNames CSVWithNamesAndTypes |
+
+---
+
+### 응답 {#responses}
+
+#### 성공 {#success}
+
+**상태:** `200 OK`
+쿼리가 성공적으로 실행되었습니다.
+
+#### 오류 코드 {#error-codes}
+
+| 상태 코드 | 설명 |
+|-------------|-------------|
+| `400 Bad Request` | 요청이 잘못됨 |
+| `401 Unauthorized` | 인증 누락 또는 권한 부족 |
+| `404 Not Found` | 지정된 쿼리 엔드포인트를 찾을 수 없음 |
+
+#### 오류 처리 모범 사례 {#error-handling-best-practices}
+
+- 요청에 유효한 인증 정보를 포함시키세요.
+- 전송 전 `queryEndpointId` 및 `queryVariables`를 검증하세요.
+- 적절한 오류 메시지를 활용하여 원활한 오류 처리 구현하세요.
+
+---
+
+### 엔드포인트 버전 업그레이드 {#upgrading-endpoint-versions}
+
+버전 1에서 버전 2로 업그레이드하려면:
+
+1. `x-clickhouse-endpoint-upgrade` 헤더를 `1`로 설정합니다.
+2. `x-clickhouse-endpoint-version` 헤더를 `2`로 설정합니다.
+
+이렇게 하면 다음 기능을 포함하여 버전 2에 대한 액세스가 가능해집니다:
+- 모든 ClickHouse 형식 지원
+- 응답 스트리밍 기능
+- 향상된 성능 및 기능
+
+## 예시 {#examples}
+
+### 기본 요청 {#basic-request}
+
+**쿼리 API 엔드포인트 SQL:**
+
+```sql
+SELECT database, name AS num_tables FROM system.tables LIMIT 3;
+```
+
+#### 버전 1 {#version-1}
+
+
+
+
+```bash
+curl -X POST 'https://console-api.clickhouse.cloud/.api/query-endpoints//run' \
+--user '' \
+-H 'Content-Type: application/json' \
+-d '{ "format": "JSONEachRow" }'
+```
+
+
+
+```javascript
+fetch(
+ "https://console-api.clickhouse.cloud/.api/query-endpoints//run",
+ {
+ method: "POST",
+ headers: {
+ Authorization: "Basic ",
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ format: "JSONEachRow",
+ }),
+ }
+)
+ .then((response) => response.json())
+ .then((data) => console.log(data))
+ .catch((error) => console.error("Error:", error));
+```
+
+```json title="Response"
+{
+ "data": {
+ "columns": [
+ {
+ "name": "database",
+ "type": "String"
+ },
+ {
+ "name": "num_tables",
+ "type": "String"
+ }
+ ],
+ "rows": [
+ ["INFORMATION_SCHEMA", "COLUMNS"],
+ ["INFORMATION_SCHEMA", "KEY_COLUMN_USAGE"],
+ ["INFORMATION_SCHEMA", "REFERENTIAL_CONSTRAINTS"]
+ ]
+ }
+}
+```
+
+
+
+#### 버전 2 {#version-2}
+
+
+
+
+```bash
+curl 'https://console-api.clickhouse.cloud/.api/query-endpoints//run?format=JSONEachRow' \
+--user '' \
+-H 'x-clickhouse-endpoint-version: 2'
+```
+
+```application/x-ndjson title="Response"
+{"database":"INFORMATION_SCHEMA","num_tables":"COLUMNS"}
+{"database":"INFORMATION_SCHEMA","num_tables":"KEY_COLUMN_USAGE"}
+{"database":"INFORMATION_SCHEMA","num_tables":"REFERENTIAL_CONSTRAINTS"}
+```
+
+
+
+
+```bash
+curl -X POST 'https://console-api.clickhouse.cloud/.api/query-endpoints//run?format=JSONEachRow' \
+--user '' \
+-H 'Content-Type: application/json' \
+-H 'x-clickhouse-endpoint-version: 2'
+```
+
+
+
+```javascript
+fetch(
+ "https://console-api.clickhouse.cloud/.api/query-endpoints//run?format=JSONEachRow",
+ {
+ method: "POST",
+ headers: {
+ Authorization: "Basic ",
+ "Content-Type": "application/json",
+ "x-clickhouse-endpoint-version": "2",
+ },
+ }
+)
+ .then((response) => response.json())
+ .then((data) => console.log(data))
+ .catch((error) => console.error("Error:", error));
+```
+
+```application/x-ndjson title="Response"
+{"database":"INFORMATION_SCHEMA","num_tables":"COLUMNS"}
+{"database":"INFORMATION_SCHEMA","num_tables":"KEY_COLUMN_USAGE"}
+{"database":"INFORMATION_SCHEMA","num_tables":"REFERENTIAL_CONSTRAINTS"}
+```
+
+
+
+### 쿼리 변수와 JSONCompactEachRow 형식의 버전 2 요청 {#request-with-query-variables-and-version-2-on-jsoncompacteachrow-format}
+
+**쿼리 API 엔드포인트 SQL:**
+
+```sql
+SELECT name, database FROM system.tables WHERE match(name, {tableNameRegex: String}) AND database = {database: String};
+```
+
+
+
+
+```bash
+curl 'https://console-api.clickhouse.cloud/.api/query-endpoints//run?format=JSONCompactEachRow¶m_tableNameRegex=query.*¶m_database=system' \
+--user '' \
+-H 'x-clickhouse-endpoint-version: 2'
+```
+
+```application/x-ndjson title="Response"
+["query_cache", "system"]
+["query_log", "system"]
+["query_views_log", "system"]
+```
+
+
+
+
+```bash
+curl -X POST 'https://console-api.clickhouse.cloud/.api/query-endpoints//run?format=JSONCompactEachRow' \
+--user '' \
+-H 'Content-Type: application/json' \
+-H 'x-clickhouse-endpoint-version: 2' \
+-d '{ "queryVariables": { "tableNameRegex": "query.*", "database": "system" } }'
+```
+
+
+
+
+```javascript
+fetch(
+ "https://console-api.clickhouse.cloud/.api/query-endpoints//run?format=JSONCompactEachRow",
+ {
+ method: "POST",
+ headers: {
+ Authorization: "Basic ",
+ "Content-Type": "application/json",
+ "x-clickhouse-endpoint-version": "2",
+ },
+ body: JSON.stringify({
+ queryVariables: {
+ tableNameRegex: "query.*",
+ database: "system",
+ },
+ }),
+ }
+)
+ .then((response) => response.json())
+ .then((data) => console.log(data))
+ .catch((error) => console.error("Error:", error));
+```
+
+```application/x-ndjson title="Response"
+["query_cache", "system"]
+["query_log", "system"]
+["query_views_log", "system"]
+```
+
+
+
+### 테이블에 데이터를 삽입하는 쿼리 변수 배열과 요청 {#request-with-array-in-the-query-variables-that-inserts-data-into-a-table}
+
+**테이블 SQL:**
+
+```SQL
+CREATE TABLE default.t_arr
+(
+ `arr` Array(Array(Array(UInt32)))
+)
+ENGINE = MergeTree
+ORDER BY tuple()
+```
+
+**쿼리 API 엔드포인트 SQL:**
+
+```sql
+INSERT INTO default.t_arr VALUES ({arr: Array(Array(Array(UInt32)))});
+```
+
+
+
+
+```bash
+curl -X POST 'https://console-api.clickhouse.cloud/.api/query-endpoints//run' \
+--user '' \
+-H 'Content-Type: application/json' \
+-H 'x-clickhouse-endpoint-version: 2' \
+-d '{
+ "queryVariables": {
+ "arr": [[[12, 13, 0, 1], [12]]]
+ }
+}'
+```
+
+
+
+
+```javascript
+fetch(
+ "https://console-api.clickhouse.cloud/.api/query-endpoints//run",
+ {
+ method: "POST",
+ headers: {
+ Authorization: "Basic ",
+ "Content-Type": "application/json",
+ "x-clickhouse-endpoint-version": "2",
+ },
+ body: JSON.stringify({
+ queryVariables: {
+ arr: [[[12, 13, 0, 1], [12]]],
+ },
+ }),
+ }
+)
+ .then((response) => response.json())
+ .then((data) => console.log(data))
+ .catch((error) => console.error("Error:", error));
+```
+
+```text title="Response"
+OK
+```
+
+
+
+### `max_threads` 설정이 8로 설정된 요청 {#request-with-clickhouse-settings-max_threads-set-to-8}
+
+**쿼리 API 엔드포인트 SQL:**
+
+```sql
+SELECT * FROM system.tables;
+```
+
+
+
+
+```bash
+curl 'https://console-api.clickhouse.cloud/.api/query-endpoints//run?max_threads=8' \
+--user '' \
+-H 'x-clickhouse-endpoint-version: 2'
+```
+
+
+
+
+```bash
+curl -X POST 'https://console-api.clickhouse.cloud/.api/query-endpoints//run?max_threads=8,' \
+--user '' \
+-H 'Content-Type: application/json' \
+-H 'x-clickhouse-endpoint-version: 2' \
+```
+
+
+
+```javascript
+fetch(
+ "https://console-api.clickhouse.cloud/.api/query-endpoints//run?max_threads=8",
+ {
+ method: "POST",
+ headers: {
+ Authorization: "Basic ",
+ "Content-Type": "application/json",
+ "x-clickhouse-endpoint-version": "2",
+ },
+ }
+)
+ .then((response) => response.json())
+ .then((data) => console.log(data))
+ .catch((error) => console.error("Error:", error));
+```
+
+
+
+
+### 파일에서 테이블로 스트림 삽입 {#insert-a-stream-from-a-file-into-a-table}
+
+파일 `./samples/my_first_table_2024-07-11.csv`를 다음 내용으로 만듭니다:
+
+```csv
+"user_id","json","name"
+"1","{""name"":""John"",""age"":30}","John"
+"2","{""name"":""Jane"",""age"":25}","Jane"
+```
+
+**테이블 생성 SQL:**
+
+```sql
+create table default.my_first_table
+(
+ user_id String,
+ json String,
+ name String,
+) ENGINE = MergeTree()
+ORDER BY user_id;
+```
+
+**쿼리 API 엔드포인트 SQL:**
+
+```sql
+INSERT INTO default.my_first_table
+```
+
+```bash
+cat ./samples/my_first_table_2024-07-11.csv | curl --user '' \
+ -X POST \
+ -H 'Content-Type: application/octet-stream' \
+ -H 'x-clickhouse-endpoint-version: 2' \
+ "https://console-api.clickhouse.cloud/.api/query-endpoints//run?format=CSV" \
+ --data-binary @-
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/query-endpoints.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/query-endpoints.md.hash
new file mode 100644
index 00000000000..dddc40e988a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/SQL_console/query-endpoints.md.hash
@@ -0,0 +1 @@
+835b6597c81ac321
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/_category_.yml b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/_category_.yml
new file mode 100644
index 00000000000..747e5fb1796
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/_category_.yml
@@ -0,0 +1,7 @@
+label: 'Guides'
+collapsible: true
+collapsed: true
+link:
+ type: generated-index
+ title: Best Practices
+ slug: /cloud/bestpractices/
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/01_review-and-restore-backups.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/01_review-and-restore-backups.md
new file mode 100644
index 00000000000..86858ced8d4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/01_review-and-restore-backups.md
@@ -0,0 +1,168 @@
+---
+'sidebar_label': '백업 검토 및 복원'
+'sidebar_position': 0
+'slug': '/cloud/manage/backups/overview'
+'title': '개요'
+'keywords':
+- 'backups'
+- 'cloud backups'
+- 'restore'
+'description': 'ClickHouse Cloud에서 백업에 대한 개요를 제공합니다.'
+'doc_type': 'guide'
+---
+
+import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge';
+import ScalePlanFeatureBadge from '@theme/badges/ScalePlanFeatureBadge';
+import Image from '@theme/IdealImage';
+import backup_chain from '@site/static/images/cloud/manage/backup-chain.png';
+import backup_status_list from '@site/static/images/cloud/manage/backup-status-list.png';
+import backup_usage from '@site/static/images/cloud/manage/backup-usage.png';
+import backup_restore from '@site/static/images/cloud/manage/backup-restore.png';
+import backup_service_provisioning from '@site/static/images/cloud/manage/backup-service-provisioning.png';
+
+
+# 백업 검토 및 복원
+
+이 가이드는 ClickHouse Cloud에서 백업이 어떻게 작동하는지, 서비스에 대한 백업을 구성하는 데 사용할 수 있는 옵션, 그리고 백업에서 복원하는 방법을 다룹니다.
+
+## 백업 상태 목록 {#backup-status-list}
+
+귀하의 서비스는 기본적인 일일 일정이든, 귀하가 선택한 [사용자 정의 일정](/cloud/manage/backups/configurable-backups)이든 설정된 일정에 따라 백업됩니다. 사용 가능한 모든 백업은 서비스의 **Backups** 탭에서 볼 수 있습니다. 여기서 백업의 상태, 지속 시간, 백업 크기를 확인할 수 있습니다. 또한 **Actions** 열을 사용하여 특정 백업을 복원할 수 있습니다.
+
+
+
+## 백업 비용 이해하기 {#understanding-backup-cost}
+
+기본 정책에 따라 ClickHouse Cloud는 매일 백업을 의무화하며, 24시간 보존됩니다. 더 많은 데이터를 보존해야 하거나 더 빈번한 백업을 요구하는 일정을 선택하면 백업에 대한 추가 저장 비용이 발생할 수 있습니다.
+
+백업 비용을 이해하기 위해 사용 화면에서 서비스별 백업 비용을 확인할 수 있습니다(아래와 같이 표시됨). 몇 일 동안 맞춤형 일정에 따라 백업을 실행한 후, 비용을 파악하고 월별 백업 비용을 추정할 수 있습니다.
+
+
+
+백업에 대한 총 비용을 추정하려면 일정을 설정해야 합니다. 우리는 또한 [가격 계산기](https://clickhouse.com/pricing)를 업데이트하는 작업을 진행 중이며, 일정을 설정하기 전에 월별 비용 추정치를 얻을 수 있습니다. 비용을 추정하려면 다음 입력이 필요합니다:
+- 전체 및 증분 백업의 크기
+- 원하는 빈도
+- 원하는 보존 기간
+- 클라우드 제공업체 및 지역
+
+:::note
+서비스의 데이터 크기가 시간이 지남에 따라 증가함에 따라 백업 비용 추정치는 변경될 수 있습니다.
+:::
+
+## 백업 복원 {#restore-a-backup}
+
+백업은 기존 백업을 가져온 서비스가 아닌 새로운 ClickHouse Cloud 서비스로 복원됩니다.
+
+**Restore** 백업 아이콘을 클릭한 후 생성될 새로운 서비스의 서비스 이름을 지정하고 이 백업을 복원할 수 있습니다:
+
+
+
+새 서비스는 준비될 때까지 서비스 목록에서 `Provisioning`으로 표시됩니다:
+
+
+
+## 복원된 서비스 작업 {#working-with-your-restored-service}
+
+백업이 복원된 후 이제 두 개의 유사한 서비스가 있습니다: 복원이 필요한 **원래 서비스**와 원본의 백업에서 복원된 새로운 **복원 서비스**.
+
+백업 복원이 완료되면 다음 중 하나를 수행해야 합니다:
+- 새로운 복원된 서비스를 사용하고 원래 서비스를 제거합니다.
+- 새로운 복원된 서비스에서 원래 서비스로 데이터를 마이그레이션하고 새로운 복원된 서비스를 제거합니다.
+
+### **새 복원된 서비스** 사용 {#use-the-new-restored-service}
+
+새 서비스를 사용하려면 다음 단계를 수행하십시오:
+
+1. 새로운 서비스에 사용 사례에 필요한 IP 액세스 목록 항목이 있는지 확인합니다.
+1. 새로운 서비스에 필요한 데이터가 포함되어 있는지 확인합니다.
+1. 원래 서비스를 제거합니다.
+
+### **새로 복원된 서비스**에서 **원래 서비스**로 데이터 마이그레이션 {#migrate-data-from-the-newly-restored-service-back-to-the-original-service}
+
+어떤 이유로 인해 새로 복원된 서비스에서 작업할 수 없는 경우, 예를 들면 기존 서비스에 여전히 연결되는 사용자나 애플리케이션이 있을 수 있습니다. 새로 복원된 데이터를 원래 서비스로 마이그레이션할 수 있습니다. 마이그레이션은 다음 단계를 수행하여 수행할 수 있습니다:
+
+**새로 복원된 서비스에 원격 액세스 허용**
+
+새 서비스는 원래 서비스와 동일한 IP 허용 목록을 가지고 있는 백업에서 복원해야 합니다. 이는 **Anywhere**에서의 액세스를 허용하지 않는 한 다른 ClickHouse Cloud 서비스로의 연결이 허용되지 않기 때문입니다. 허용 목록을 수정하고 일시적으로 **Anywhere**에서의 액세스를 허용합니다. 자세한 내용은 [IP 액세스 목록](/cloud/security/setting-ip-filters) 문서를 참조하십시오.
+
+**새로 복원된 ClickHouse 서비스에서 (복원된 데이터가 호스팅되는 시스템)**
+
+:::note
+새 서비스에 액세스하려면 비밀번호를 재설정해야 합니다. 서비스 목록 **Settings** 탭에서 수행할 수 있습니다.
+:::
+
+원본 테이블을 읽을 수 있는 읽기 전용 사용자를 추가합니다 (`db.table` 예시):
+
+```sql
+CREATE USER exporter
+IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
+SETTINGS readonly = 1;
+```
+
+```sql
+GRANT SELECT ON db.table TO exporter;
+```
+
+테이블 정의를 복사합니다:
+
+```sql
+SELECT create_table_query
+FROM system.tables
+WHERE database = 'db' AND table = 'table'
+```
+
+**목적지 ClickHouse Cloud 시스템에서 (손상된 테이블이 있었던 시스템):**
+
+목적지 데이터베이스를 생성합니다:
+```sql
+CREATE DATABASE db
+```
+
+소스의 `CREATE TABLE` 문을 사용하여 목적지를 생성합니다:
+
+:::tip
+`CREATE` 문을 실행할 때 매개변수 없이 `ReplicatedMergeTree`로 `ENGINE`을 변경합니다. ClickHouse Cloud는 항상 테이블을 복제하고 올바른 매개변수를 제공합니다.
+:::
+
+```sql
+CREATE TABLE db.table ...
+ENGINE = ReplicatedMergeTree
+ORDER BY ...
+```
+
+`remoteSecure` 함수를 사용하여 새로 복원된 ClickHouse Cloud 서비스에서 원래 서비스로 데이터를 가져옵니다:
+
+```sql
+INSERT INTO db.table
+SELECT *
+FROM remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
+```
+
+원래 서비스에 데이터를 성공적으로 삽입한 후, 서비스에서 데이터를 검증해야 합니다. 데이터가 검증되면 새로운 서비스를 삭제해야 합니다.
+
+## 테이블 복원 또는 복원 취소 {#undeleting-or-undropping-tables}
+
+`UNDROP` 명령은 [공유 카탈로그](https://clickhouse.com/docs/cloud/reference/shared-catalog)를 통해 ClickHouse Cloud에서 지원됩니다.
+
+사용자가 실수로 테이블을 드롭하지 않도록 [전용 사용자 또는 역할에 대해 `DROP TABLE` 명령에 대한 권한을 취소하는 `GRANT` 문](/sql-reference/statements/grant)을 사용할 수 있습니다.
+
+:::note
+데이터의 우발적 삭제를 방지하기 위해 기본적으로 ClickHouse Cloud에서는 크기가 >`1TB`인 테이블을 삭제할 수 없습니다. 이 임계값보다 큰 테이블을 삭제하고자 하는 경우 설정 `max_table_size_to_drop`을 사용해야 합니다:
+
+```sql
+DROP TABLE IF EXISTS table_to_drop
+SYNC SETTINGS max_table_size_to_drop=2000000000000 -- increases the limit to 2TB
+```
+:::
+
+:::note
+레거시 계획: 레거시 계획에 있는 고객의 경우 기본 일일 백업이 24시간 동안 보존되며 저장 비용에 포함됩니다.
+:::
+
+## 구성 가능한 백업 {#configurable-backups}
+
+기본 백업 일정과 다르게 백업 일정을 설정하려면 [구성 가능한 백업](/cloud/manage/backups/configurable-backups)을 확인하십시오.
+
+## 백업을 자신의 클라우드 계정으로 내보내기 {#export-backups-to-your-own-cloud-account}
+
+자신의 클라우드 계정으로 백업을 내보내고자 하는 사용자는 [여기](/cloud/manage/backups/export-backups-to-own-cloud-account)를 참조하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/01_review-and-restore-backups.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/01_review-and-restore-backups.md.hash
new file mode 100644
index 00000000000..51fc34a9f92
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/01_review-and-restore-backups.md.hash
@@ -0,0 +1 @@
+66fe21b0b83aaa15
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/02_configurable-backups.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/02_configurable-backups.md
new file mode 100644
index 00000000000..7768fcb067b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/02_configurable-backups.md
@@ -0,0 +1,36 @@
+---
+'sidebar_label': '백업 일정 구성'
+'slug': '/cloud/manage/backups/configurable-backups'
+'description': '백업을 구성하는 방법을 보여주는 가이드'
+'title': '백업 일정 구성'
+'keywords':
+- 'backups'
+- 'cloud backups'
+- 'restore'
+'doc_type': 'guide'
+---
+
+import backup_settings from '@site/static/images/cloud/manage/backup-settings.png';
+import backup_configuration_form from '@site/static/images/cloud/manage/backup-configuration-form.png';
+import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge';
+import ScalePlanFeatureBadge from '@theme/badges/ScalePlanFeatureBadge';
+import Image from '@theme/IdealImage';
+
+
+
+
+서비스의 백업 일정을 설정하려면 콘솔에서 **Settings** 탭으로 이동하여 **Change backup configuration**을 클릭하십시오.
+
+
+
+이것은 오른쪽에 탭을 열어 보존 기간, 빈도 및 시작 시간을 선택할 수 있게 합니다. 선택한 설정을 저장해야 효과가 발생합니다.
+
+
+
+:::note
+시작 시간과 빈도는 상호 배타적입니다. 시작 시간이 우선합니다.
+:::
+
+:::note
+백업 일정을 변경하면 기본 백업에 포함되지 않을 수 있는 백업으로 인해 저장소에 대한 월별 요금이 증가할 수 있습니다. 아래의 ["Understanding backup cost"](/cloud/manage/backups/overview#understanding-backup-cost) 섹션을 참조하십시오.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/02_configurable-backups.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/02_configurable-backups.md.hash
new file mode 100644
index 00000000000..e2fea836459
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/02_configurable-backups.md.hash
@@ -0,0 +1 @@
+0eeb42aec8e57b73
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/01_export-backups-to-own-cloud-account.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/01_export-backups-to-own-cloud-account.md
new file mode 100644
index 00000000000..de16ebeee4b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/01_export-backups-to-own-cloud-account.md
@@ -0,0 +1,159 @@
+---
+'sidebar_label': '백업 내보내기'
+'slug': '/cloud/manage/backups/export-backups-to-own-cloud-account'
+'title': '자신의 클라우드 계정으로 백업 내보내기'
+'description': '자신의 클라우드 계정으로 백업을 내보내는 방법을 설명합니다.'
+'doc_type': 'guide'
+---
+
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge'
+
+
+
+ClickHouse Cloud는 AWS S3, Google Cloud Storage 또는 Azure Blob Storage와 같은 클라우드 서비스 제공업체(CSP) 계정으로 백업을 지원합니다. "전체" 백업과 "증분" 백업을 포함하여 ClickHouse Cloud 백업이 작동하는 방식에 대한 자세한 내용은 [백업](/cloud/manage/backups/overview) 문서를 참조하세요.
+
+이 가이드에서는 AWS, GCP, Azure 객체 저장소에 전체 및 증분 백업을 수행하는 방법뿐만 아니라 백업에서 복원하는 방법에 대한 예제를 보여줍니다.
+
+:::note
+사용자는 백업이 동일한 클라우드 제공업체의 다른 지역으로 내보내지는 모든 사용에 대해 [데이터 전송](/cloud/manage/network-data-transfer) 요금이 부과된다는 점을 인식해야 합니다. 현재 우리는 크로스 클라우드 백업을 지원하지 않습니다.
+:::
+
+## 요구 사항 {#requirements}
+
+자체 CSP 저장소 버킷으로 백업을 내보내거나 복원하려면 다음 세부정보가 필요합니다.
+
+### AWS {#aws}
+
+1. AWS S3 엔드포인트, 형식:
+
+```text
+s3://.s3.amazonaws.com/
+```
+
+ 예를 들어:
+```text
+s3://testchbackups.s3.amazonaws.com/backups/
+```
+ 여기서:
+ - `testchbackups`는 백업을 내보낼 S3 버킷의 이름입니다.
+ - `backups`는 선택적 하위 디렉토리입니다.
+
+2. AWS 액세스 키와 비밀. AWS 역할 기반 인증도 지원되며 AWS 액세스 키 및 비밀 대신 사용할 수 있습니다.
+
+:::note
+역할 기반 인증을 사용하려면 Secure s3 [설정](https://clickhouse.com/docs/cloud/security/secure-s3)을 따르십시오. 또한 IAM 정책에 `s3:PutObject` 및 `s3:DeleteObject` 권한을 추가해야 합니다 [여기서.](https://clickhouse.com/docs/cloud/security/secure-s3#option-2-manually-create-iam-role)
+:::
+
+### Azure {#azure}
+
+1. Azure 스토리지 연결 문자열.
+2. 스토리지 계정의 Azure 컨테이너 이름.
+3. 컨테이너 내의 Azure Blob.
+
+### Google Cloud Storage (GCS) {#google-cloud-storage-gcs}
+
+1. GCS 엔드포인트, 형식:
+
+```text
+https://storage.googleapis.com//
+```
+2. HMAC 키 및 HMAC 비밀.
+
+
+
+# 백업 / 복원
+
+## AWS S3 버킷으로 백업 / 복원 {#backup--restore-to-aws-s3-bucket}
+
+### DB 백업 수행 {#take-a-db-backup}
+
+**전체 백업**
+
+```sql
+BACKUP DATABASE test_backups
+TO S3('https://testchbackups.s3.amazonaws.com/backups/', '', '')
+```
+
+여기서 `uuid`는 백업 세트를 구별하는 데 사용되는 고유 식별자입니다.
+
+:::note
+이 하위 디렉토리의 각 새 백업에 대해 다른 UUID를 사용해야 합니다. 그렇지 않으면 `BACKUP_ALREADY_EXISTS` 오류가 발생합니다.
+예를 들어, 매일 백업을 수행하는 경우 매일 새 UUID를 사용해야 합니다.
+:::
+
+**증분 백업**
+
+```sql
+BACKUP DATABASE test_backups
+TO S3('https://testchbackups.s3.amazonaws.com/backups/', '', '')
+SETTINGS base_backup = S3('https://testchbackups.s3.amazonaws.com/backups/', '', '')
+```
+
+### 백업에서 복원 {#restore-from-a-backup}
+
+```sql
+RESTORE DATABASE test_backups
+AS test_backups_restored
+FROM S3('https://testchbackups.s3.amazonaws.com/backups/', '', '')
+```
+
+자세한 내용은 [S3 엔드포인트 사용을 위한 BACKUP/RESTORE 구성](/operations/backup#configuring-backuprestore-to-use-an-s3-endpoint)을 참조하세요.
+
+## Azure Blob Storage로 백업 / 복원 {#backup--restore-to-azure-blob-storage}
+
+### DB 백업 수행 {#take-a-db-backup-1}
+
+**전체 백업**
+
+```sql
+BACKUP DATABASE test_backups
+TO AzureBlobStorage('', '', '/');
+```
+
+여기서 `uuid`는 백업 세트를 구별하는 데 사용되는 고유 식별자입니다.
+
+**증분 백업**
+
+```sql
+BACKUP DATABASE test_backups
+TO AzureBlobStorage('', '', '//my_incremental')
+SETTINGS base_backup = AzureBlobStorage('', '', '/')
+```
+
+### 백업에서 복원 {#restore-from-a-backup-1}
+
+```sql
+RESTORE DATABASE test_backups
+AS test_backups_restored_azure
+FROM AzureBlobStorage('', '', '/')
+```
+
+자세한 내용은 [Azure Blob Storage 엔드포인트 사용을 위한 BACKUP/RESTORE 구성](/operations/backup#configuring-backuprestore-to-use-an-azureblobstorage-endpoint)을 참조하세요.
+
+## Google Cloud Storage (GCS)로 백업 / 복원 {#backup--restore-to-google-cloud-storage-gcs}
+
+### DB 백업 수행 {#take-a-db-backup-2}
+
+**전체 백업**
+
+```sql
+BACKUP DATABASE test_backups
+TO S3('https://storage.googleapis.com//', ', )
+```
+여기서 `uuid`는 백업 세트를 구별하는 데 사용되는 고유 식별자입니다.
+
+**증분 백업**
+
+```sql
+BACKUP DATABASE test_backups
+TO S3('https://storage.googleapis.com/test_gcs_backups//my_incremental', 'key', 'secret')
+SETTINGS base_backup = S3('https://storage.googleapis.com/test_gcs_backups/', 'key', 'secret')
+```
+
+### 백업에서 복원 {#restore-from-a-backup-2}
+
+```sql
+RESTORE DATABASE test_backups
+AS test_backups_restored_gcs
+FROM S3('https://storage.googleapis.com/test_gcs_backups/', 'key', 'secret')
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/01_export-backups-to-own-cloud-account.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/01_export-backups-to-own-cloud-account.md.hash
new file mode 100644
index 00000000000..f275eeca248
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/01_export-backups-to-own-cloud-account.md.hash
@@ -0,0 +1 @@
+a8cb7fd268bbe841
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/02_backup_restore_from_ui.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/02_backup_restore_from_ui.md
new file mode 100644
index 00000000000..b2b5a298250
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/02_backup_restore_from_ui.md
@@ -0,0 +1,388 @@
+---
+'sidebar_label': 'UI를 사용하여 백업 또는 복원'
+'slug': '/cloud/manage/backups/backup-restore-via-ui'
+'title': 'UI에서 백업을 만들거나 백업을 복원하는 방법'
+'description': 'UI에서 자신의 버킷을 사용하여 백업을 만들거나 백업을 복원하는 방법에 대한 페이지'
+'sidebar_position': 2
+'doc_type': 'guide'
+'keywords':
+- 'backups'
+- 'disaster recovery'
+- 'data protection'
+- 'restore'
+- 'cloud features'
+---
+
+import Image from '@theme/IdealImage'
+import arn from '@site/static/images/cloud/manage/backups/arn.png'
+import change_external_backup from '@site/static/images/cloud/manage/backups/change_external_backup.png'
+import configure_arn_s3_details from '@site/static/images/cloud/manage/backups/configure_arn_s3_details.png'
+import view_backups from '@site/static/images/cloud/manage/backups/view_backups.png'
+import backup_command from '@site/static/images/cloud/manage/backups/backup_command.png'
+import gcp_configure from '@site/static/images/cloud/manage/backups/gcp_configure.png'
+import gcp_stored_backups from '@site/static/images/cloud/manage/backups/gcp_stored_backups.png'
+import gcp_restore_command from '@site/static/images/cloud/manage/backups/gcp_restore_command.png'
+import azure_connection_details from '@site/static/images/cloud/manage/backups/azure_connection_details.png'
+import view_backups_azure from '@site/static/images/cloud/manage/backups/view_backups_azure.png'
+import restore_backups_azure from '@site/static/images/cloud/manage/backups/restore_backups_azure.png'
+
+
+# Backup / restore via user-interface {#ui-experience}
+
+## AWS {#AWS}
+
+### Taking backups to AWS {#taking-backups-to-aws}
+
+#### 1. Steps to follow in AWS {#aws-steps}
+
+:::note
+이 단계는 ["S3 데이터에 안전하게 접근하기"](/cloud/data-sources/secure-s3)에 설명된 안전한 s3 설정과 유사하지만, 역할 권한에서 추가적인 작업이 필요합니다.
+:::
+
+AWS 계정에서 아래 단계를 따르세요:
+
+
+
+##### Create an AWS S3 bucket {#create-s3-bucket}
+
+백업을 내보낼 AWS S3 버킷을 귀하의 계정에 만듭니다.
+
+##### Create an IAM role {#create-iam-role}
+
+AWS는 역할 기반 인증을 사용하므로, ClickHouse Cloud 서비스가 이 버킷에 쓸 수 있도록 가정할 수 있는 IAM 역할을 생성합니다.
+
+* a. ClickHouse Cloud 서비스 설정 페이지의 네트워크 보안 정보에서 ARNs를 얻습니다. 이는 다음과 유사하게 보입니다:
+
+
+
+* b. 이 역할을 위해 다음과 같은 신뢰 정책을 생성합니다:
+
+```json
+{
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Sid": "backup service",
+ "Effect": "Allow",
+ "Principal": {
+ "AWS": "arn:aws:iam::463754717262:role/CH-S3-bordeaux-ar-90-ue2-29-Role"
+ },
+ "Action": "sts:AssumeRole"
+ }
+ ]
+}
+```
+
+##### Update permissions for role {#update-permissions-for-role}
+
+이 ClickHouse Cloud 서비스가 S3 버킷에 쓸 수 있도록 이 역할에 대해 권한을 설정해야 합니다.
+이는 역할을 위한 권한 정책을 생성하여 아래와 같은 JSON을 사용하여 수행됩니다. 여기서 두 군데에 귀하의 버킷 ARN을 대체해야 합니다.
+
+```json
+{
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Action": [
+ "s3:GetBucketLocation",
+ "s3:ListBucket"
+ ],
+ "Resource": [
+ "arn:aws:s3:::byob-ui"
+ ],
+ "Effect": "Allow"
+ },
+ {
+ "Action": [
+ "s3:Get*",
+ "s3:List*",
+ "s3:PutObject"
+ ],
+ "Resource": [
+ "arn:aws:s3:::byob-ui/*"
+ ],
+ "Effect": "Allow"
+ },
+ {
+ "Action": [
+ "s3:DeleteObject"
+ ],
+ "Resource": [
+ "arn:aws:s3:::byob-ui/*/.lock"
+ ],
+ "Effect": "Allow"
+ }
+ ]
+}
+```
+
+
+#### 2. Steps to follow in ClickHouse Cloud {#cloud-steps}
+
+ClickHouse Cloud 콘솔에서 외부 버킷을 구성하기 위해 아래 단계를 따르세요:
+
+
+
+##### Change external backup {#configure-external-bucket}
+
+설정 페이지에서 외부 백업 설정을 클릭합니다:
+
+
+
+##### Configure AWS IAM Role ARN and S3 bucket details {#configure-aws-iam-role-arn-and-s3-bucket-details}
+
+다음 화면에서 방금 생성한 AWS IAM Role ARN 및 S3 버킷 URL을 다음 형식으로 제공합니다:
+
+
+
+##### Save changes {#save-changes}
+
+“외부 버킷 저장”을 클릭하여 설정을 저장합니다.
+
+##### Changing the backup schedule from the default schedule {#changing-the-backup-schedule}
+
+이제 외부 백업은 기본 일정에 따라 귀하의 버킷에서 수행됩니다.
+또는 “설정” 페이지에서 백업 일정을 구성할 수 있습니다.
+다르게 구성할 경우, 사용자 정의 일정이 귀하의 버킷에 백업을 작성하는 데 사용되며, 기본 일정(24시간마다 백업)은 ClickHouse 클라우드 소유의 버킷에서 백업에 사용됩니다.
+
+##### View backups stored in your bucket {#view-backups-stored-in-your-bucket}
+
+백업 페이지는 아래와 같이 귀하의 버킷에 있는 백업을 별도의 테이블로 표시합니다:
+
+
+
+
+
+### Restoring backups from AWS {#restoring-backups-from-aws}
+
+AWS에서 백업을 복원하려면 아래 단계를 따르세요:
+
+
+
+##### Create a new service to restore to {#create-new-service-to-restore-to}
+
+복원할 새로운 서비스를 만듭니다.
+
+##### Add service ARN {#add-service-arn}
+
+새로 생성된 서비스의 ARN(ClickHouse Cloud 콘솔의 서비스 설정 페이지에서)을 IAM 역할의 신뢰 정책에 추가합니다. 이는 위 AWS 단계 섹션의 [두 번째 단계](#create-iam-role)와 동일합니다. 이는 새로운 서비스가 S3 버킷에 접근할 수 있도록 하기 위해 필요합니다.
+
+##### Get SQL command used to restore backup {#obtain-sql-command-to-restore-backup}
+
+UI에서 백업 목록 위의 “백업 접근 또는 복원” 링크를 클릭하여 백업을 복원하는 데 사용되는 SQL 명령을 가져옵니다. 명령은 다음과 같아야 합니다:
+
+
+
+:::warning Moving backups to another location
+백업을 다른 위치로 이동하면 새 위치를 참조하도록 복원 명령을 사용자 지정해야 합니다.
+:::
+
+:::tip ASYNC command
+복원 명령의 경우, 대량 복원을 위해 마지막에 `ASYNC` 명령을 추가할 수도 있습니다.
+이렇게 하면 복원이 비동기적으로 발생하여 연결이 끊어지더라도 복원이 계속 진행됩니다.
+`ASYNC` 명령은 즉시 성공 상태를 반환합니다.
+이것은 복원이 성공적이었다는 것을 의미하지 않습니다.
+복원 완료 및 성공 여부를 확인하기 위해 `system.backups` 테이블을 모니터링해야 합니다.
+:::
+
+##### Run the restore command {#run-the-restore-command}
+
+새로 생성된 서비스의 SQL 콘솔에서 복원 명령을 실행하여 백업을 복원합니다.
+
+
+
+## GCP {#gcp}
+
+### Taking backups to GCP {#taking-backups-to-gcp}
+
+GCP에 백업을 수행하려면 아래 단계를 따르세요:
+
+#### Steps to follow in GCP {#gcp-steps-to-follow}
+
+
+
+##### Create a GCP storage bucket {#create-a-gcp-storage-bucket}
+
+백업을 내보낼 GCP 계정에 스토리지 버킷을 생성합니다.
+
+##### Generate an HMAC Key and Secret {#generate-an-hmac-key-and-secret}
+
+비밀번호 기반 인증에 필요한 HMAC Key 및 Secret을 생성합니다. 아래 단계를 따라 키를 생성합니다:
+
+* a. 서비스 계정을 생성합니다.
+ * I. Google Cloud Console에서 IAM 및 관리 섹션으로 이동하여 `서비스 계정`을 선택합니다.
+ * II. `서비스 계정 생성`을 클릭하고 이름 및 ID를 제공합니다. `생성 후 계속`을 클릭합니다.
+ * III. 스토리지 객체 사용자 역할을 이 서비스 계정에 부여합니다.
+ * IV. 서비스 계정 생성을 완료하려면 `완료`를 클릭합니다.
+
+* b. HMAC 키를 생성합니다.
+ * I. Google Cloud Console에서 클라우드 스토리지로 가서 `설정`을 선택합니다.
+ * II. 상호 운용성 탭으로 이동합니다.
+ * III. `서비스 계정 HMAC` 섹션에서 `서비스 계정용 키 생성`을 클릭합니다.
+ * IV. 이전 단계에서 생성한 서비스 계정을 드롭다운 메뉴에서 선택합니다.
+ * V. `키 생성`을 클릭합니다.
+
+* c. 자격 증명을 안전하게 저장합니다:
+ * I. 시스템이 Access ID(당신의 HMAC 키)와 Secret(당신의 HMAC 비밀)을 표시합니다. 이 값을 저장하세요. 비밀은 이 창을 닫은 후 다시는 표시되지 않습니다.
+
+
+
+#### Steps to follow in ClickHouse Cloud {#gcp-cloud-steps}
+
+ClickHouse Cloud 콘솔에서 외부 버킷을 구성하기 위해 아래 단계를 따르세요:
+
+
+
+##### Change external backup {#gcp-configure-external-bucket}
+
+`설정` 페이지에서 `외부 백업 변경`을 클릭합니다.
+
+
+
+##### Configure GCP HMAC Key and Secret {#gcp-configure-gcp-hmac-key-and-secret}
+
+팝업 대화 상자에서 GCP 버킷 경로, 이전 섹션에서 생성한 HMAC 키 및 비밀을 제공합니다.
+
+
+
+##### Save external bucket {#gcp-save-external-bucket}
+
+`외부 버킷 저장`을 클릭하여 설정을 저장합니다.
+
+##### Changing the backup schedule from the default schedule {#gcp-changing-the-backup-schedule}
+
+이제 외부 백업은 기본 일정에 따라 귀하의 버킷에서 수행됩니다.
+또는 `설정` 페이지에서 백업 일정을 구성할 수 있습니다.
+다르게 구성할 경우, 사용자 정의 일정이 귀하의 버킷에 백업을 작성하는 데 사용되며, 기본 일정(24시간마다 백업)은 ClickHouse 클라우드 소유의 버킷에서 백업에 사용됩니다.
+
+##### View backups stored in your bucket {#gcp-view-backups-stored-in-your-bucket}
+
+백업 페이지는 아래와 같이 귀하의 버킷에 있는 백업을 별도의 테이블로 표시합니다:
+
+
+
+
+
+### Restoring backups from GCP {#gcp-restoring-backups-from-gcp}
+
+GCP에서 백업을 복원하려면 아래 단계를 따르세요:
+
+
+
+##### Create a new service to restore to {#gcp-create-new-service-to-restore-to}
+
+복원할 새로운 서비스를 만듭니다.
+
+##### Get SQL command used to restore backup {#gcp-obtain-sql-command-to-restore-backup}
+
+UI에서 백업 목록 위의 `백업 접근 또는 복원` 링크를 클릭하여 백업을 복원하는 데 사용되는 SQL 명령을 가져옵니다. 명령은 다음과 같아야 하며, 드롭다운에서 적절한 백업을 선택하여 해당 특정 백업의 복원 명령을 가져옵니다. 명령에 비밀 액세스 키를 추가해야 합니다:
+
+
+
+:::warning Moving backups to another location
+백업을 다른 위치로 이동하면 새 위치를 참조하도록 복원 명령을 사용자 지정해야 합니다.
+:::
+
+:::tip ASYNC command
+복원 명령의 경우, 대량 복원을 위해 마지막에 `ASYNC` 명령을 추가할 수도 있습니다.
+이렇게 하면 복원이 비동기적으로 발생하여 연결이 끊어지더라도 복원이 계속 진행됩니다.
+`ASYNC` 명령은 즉시 성공 상태를 반환합니다.
+이것은 복원이 성공적이었다는 것을 의미하지 않습니다.
+복원 완료 및 성공 여부를 확인하기 위해 `system.backups` 테이블을 모니터링해야 합니다.
+:::
+
+##### Run SQL command to restore backup {#gcp-run-sql-command-to-restore-backup}
+
+새로 생성된 서비스의 SQL 콘솔에서 복원 명령을 실행하여 백업을 복원합니다.
+
+
+
+## Azure {#azure}
+
+### Taking backups to Azure {#taking-backups-to-azure}
+
+Azure에 백업을 수행하려면 아래 단계를 따르세요:
+
+#### Steps to follow in Azure {#steps-to-follow-in-azure}
+
+
+
+##### Create a storage account {#azure-create-a-storage-account}
+
+백업을 저장할 Azure 포털의 스토리지 계정을 생성하거나 기존 스토리지 계정을 선택합니다.
+
+##### Get connection string {#azure-get-connection-string}
+
+* a. 스토리지 계정 개요에서 `보안 + 네트워킹`이라는 섹션을 찾아 `액세스 키`를 클릭합니다.
+* b. 여기에서 `key1` 및 `key2`를 확인할 수 있습니다. 각 키 아래에는 `연결 문자열` 필드가 있습니다.
+* c. `표시`를 클릭하여 연결 문자열을 확인합니다. ClickHouse Cloud에 설정하는 데 사용할 연결 문자열을 복사합니다.
+
+
+
+#### Steps to follow in ClickHouse Cloud {#azure-cloud-steps}
+
+ClickHouse Cloud 콘솔에서 외부 버킷을 구성하기 위해 아래 단계를 따르세요:
+
+
+
+##### Change external backup {#azure-configure-external-bucket}
+
+`설정` 페이지에서 `외부 백업 변경`을 클릭합니다.
+
+
+
+##### Provide connection string and container name for your Azure storage account {#azure-provide-connection-string-and-container-name-azure}
+
+다음 화면에서 이전 섹션에 생성된 Azure 스토리지 계정의 연결 문자열 및 컨테이너 이름을 제공합니다:
+
+
+
+##### Save external bucket {#azure-save-external-bucket}
+
+`외부 버킷 저장`을 클릭하여 설정을 저장합니다.
+
+##### Changing the backup schedule from the default schedule {#azure-changing-the-backup-schedule}
+
+이제 외부 백업은 기본 일정에 따라 귀하의 버킷에서 수행됩니다. 또는 “설정” 페이지에서 백업 일정을 구성할 수 있습니다. 다르게 구성할 경우, 사용자 정의 일정이 귀하의 버킷에 백업을 작성하는 데 사용되며, 기본 일정(24시간마다 백업)은 ClickHouse 클라우드 소유의 버킷에서 백업에 사용됩니다.
+
+##### View backups stored in your bucket {#azure-view-backups-stored-in-your-bucket}
+
+백업 페이지는 아래와 같이 귀하의 버킷에 있는 백업을 별도의 테이블로 표시합니다:
+
+
+
+
+
+### Restoring backups from Azure {#azure-restore-steps}
+
+Azure에서 백업을 복원하려면 아래 단계를 따르세요:
+
+
+
+##### Create a new service to restore to {#azure-create-new-service-to-restore-to}
+
+복원할 새로운 서비스를 만듭니다. 현재는 새로운 서비스에만 백업 복원을 지원합니다.
+
+##### Get SQL command used to restore backup {#azure-obtain-sql-command-to-restore-backup}
+
+UI에서 백업 목록 위의 `백업 접근 또는 복원` 링크를 클릭하여 백업을 복원하는 데 사용되는 SQL 명령을 가져옵니다. 명령은 다음과 같아야 하며, 드롭다운에서 적절한 백업을 선택하여 해당 특정 백업의 복원 명령을 가져옵니다. 명령에 Azure 스토리지 계정 연결 문자열을 추가해야 합니다.
+
+
+
+:::warning Moving backups to another location
+백업을 다른 위치로 이동하면 새 위치를 참조하도록 복원 명령을 사용자 지정해야 합니다.
+:::
+
+:::tip ASYNC command
+복원 명령의 경우, 대량 복원을 위해 마지막에 `ASYNC` 명령을 추가할 수도 있습니다.
+이렇게 하면 복원이 비동기적으로 발생하여 연결이 끊어지더라도 복원이 계속 진행됩니다.
+`ASYNC` 명령은 즉시 성공 상태를 반환합니다.
+이것은 복원이 성공적이었다는 것을 의미하지 않습니다.
+복원 완료 및 성공 여부를 확인하기 위해 `system.backups` 테이블을 모니터링해야 합니다.
+:::
+
+##### Run SQL command to restore backup {#azure-run-sql-command-to-restore-backup}
+
+새로 생성된 서비스의 SQL 콘솔에서 복원 명령을 실행하여 백업을 복원합니다.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/02_backup_restore_from_ui.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/02_backup_restore_from_ui.md.hash
new file mode 100644
index 00000000000..eb4b9d90aef
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/02_backup_restore_from_ui.md.hash
@@ -0,0 +1 @@
+3e9d40889e5d61fa
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/03_backup_restore_using_commands.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/03_backup_restore_using_commands.md
new file mode 100644
index 00000000000..396fa86ad21
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/03_backup_restore_using_commands.md
@@ -0,0 +1,225 @@
+---
+'sidebar_label': '명령을 사용하여 백업 또는 복원'
+'slug': '/cloud/manage/backups/backup-restore-via-commands'
+'title': '백업을 수행하거나 명령을 사용하여 백업을 복원하는 방법'
+'description': '명령을 사용하여 자신의 버킷을 사용하여 백업을 수행하거나 백업을 복원하는 방법을 설명하는 페이지'
+'sidebar_position': 3
+'doc_type': 'guide'
+'keywords':
+- 'backups'
+- 'disaster recovery'
+- 'data protection'
+- 'restore'
+- 'cloud features'
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+
+# 백업 또는 복원 명령 사용하기 {#commands-experience}
+
+사용자는 `BACKUP` 및 `RESTORE` 명령을 사용하여 백업을 스토리지 버킷에 내보낼 수 있으며, [사용자 인터페이스를 통한 백업 또는 복원](/cloud/manage/backups/backup-restore-via-ui)도 가능합니다. 세 가지 CSP에 대한 명령은 본 가이드에 제공됩니다.
+
+## 요구 사항 {#requirements}
+
+자신의 CSP 스토리지 버킷에 백업을 내보내거나 복원하려면 다음 세부 정보가 필요합니다:
+
+
+
+ 1. AWS S3 엔드포인트, 형식: `s3://.s3.amazonaws.com/`
+ 예: `s3://testchbackups.s3.amazonaws.com/`
+ 여기서:
+ * `testchbackups`는 백업을 내보낼 S3 버킷의 이름입니다.
+ * `backups`는 선택적 하위 디렉터리입니다.
+ 2. AWS 액세스 키 및 비밀. AWS 역할 기반 인증도 지원되며, 위 섹션에서 설명한 대로 AWS 액세스 키 및 비밀 대신 사용할 수 있습니다.
+
+
+
+ 1. GCS 엔드포인트, 형식: `https://storage.googleapis.com//`
+ 2. HMAC 키 및 HMAC 비밀.
+
+
+
+ 1. Azure 스토리지 연결 문자열.
+ 2. 스토리지 계정 내 Azure 컨테이너 이름.
+ 3. 컨테이너 내의 Azure Blob.
+
+
+
+
+## 특정 DB 백업 / 복원 {#backup_restore_db}
+
+여기에서는 *단일* 데이터베이스의 백업 및 복원을 보여줍니다. 전체 백업 및 복원 명령에 대한 [백업 명령 요약](/operations/backup#command-summary)을 참조하세요.
+
+### AWS S3 {#aws-s3-bucket}
+
+
+
+
+```sql
+BACKUP DATABASE test_backups
+TO S3(
+ 'https://testchbackups.s3.amazonaws.com/',
+ '',
+ ''
+)
+```
+
+여기서 `uuid`는 백업 세트를 구별하는 데 사용되는 고유 식별자입니다.
+
+:::note
+이 하위 디렉터리에서 각 새로운 백업에 대해 다른 uuid를 사용해야 합니다. 그렇지 않으면 `BACKUP_ALREADY_EXISTS` 오류가 발생합니다. 예를 들어, 매일 백업을 수행하는 경우 매일 새로운 uuid를 사용해야 합니다.
+:::
+
+
+
+```sql
+RESTORE DATABASE test_backups
+FROM S3(
+ 'https://testchbackups.s3.amazonaws.com/',
+ '',
+ ''
+)
+```
+
+
+
+### Google Cloud Storage (GCS) {#google-cloud-storage}
+
+
+
+```sql
+BACKUP DATABASE test_backups
+TO S3(
+ 'https://storage.googleapis.com//',
+ '',
+ ''
+)
+```
+
+여기서 `uuid`는 백업을 식별하는 데 사용되는 고유 식별자입니다.
+
+:::note
+이 하위 디렉터리에서 각 새로운 백업에 대해 다른 uuid를 사용해야 합니다. 그렇지 않으면 `BACKUP_ALREADY_EXISTS` 오류가 발생합니다. 예를 들어, 매일 백업을 수행하는 경우 매일 새로운 uuid를 사용해야 합니다.
+:::
+
+
+
+```sql
+RESTORE DATABASE test_backups
+FROM S3(
+ 'https://storage.googleapis.com//',
+ '',
+ ''
+)
+```
+
+
+
+### Azure Blob Storage {#azure-blob-storage}
+
+
+
+```sql
+BACKUP DATABASE test_backups
+TO AzureBlobStorage(
+ '',
+ '',
+ '/<>'
+)
+```
+
+여기서 `uuid`는 백업을 식별하는 데 사용되는 고유 식별자입니다.
+
+:::note
+이 하위 디렉터리에서 각 새로운 백업에 대해 다른 uuid를 사용해야 합니다. 그렇지 않으면 `BACKUP_ALREADY_EXISTS` 오류가 발생합니다. 예를 들어, 매일 백업을 수행하는 경우 매일 새로운 uuid를 사용해야 합니다.
+:::
+
+
+```sql
+RESTORE DATABASE test_backups
+FROM AzureBlobStorage(
+ '',
+ '',
+ '/'
+)
+```
+
+
+
+## 전체 서비스 백업 / 복원 {#backup_restore_entire_service}
+
+전체 서비스를 백업하려면 아래 명령을 사용하십시오. 이 백업에는 생성된 개체에 대한 모든 사용자 데이터 및 시스템 데이터, 설정 프로파일, 역할 정책, 쿼터 및 함수가 포함됩니다. 우리는 AWS S3에 대해 이 목록을 나열합니다. 위에서 설명한 구문을 사용하여 GCS 및 Azure Blob 스토리지에 대한 백업을 수행할 수 있습니다.
+
+
+
+
+```sql
+BACKUP
+ TABLE system.users,
+ TABLE system.roles,
+ TABLE system.settings_profiles,
+ TABLE system.row_policies,
+ TABLE system.quotas,
+ TABLE system.functions,
+ ALL EXCEPT DATABASES INFORMATION_SCHEMA, information_schema, system
+TO S3(
+ 'https://testchbackups.s3.amazonaws.com/',
+ '',
+ ''
+)
+```
+
+여기서 `uuid`는 백업을 식별하는 데 사용되는 고유 식별자입니다.
+
+
+
+
+```sql
+RESTORE ALL
+FROM S3(
+ 'https://testchbackups.s3.amazonaws.com/',
+ '',
+ ''
+)
+```
+
+
+
+## FAQ {#backups-faq}
+
+
+클라우드 객체 스토리지의 백업은 어떻게 됩니까? ClickHouse에서 특정 시점에 정리합니까?
+
+백업을 버킷에 내보낼 수 있는 기능을 제공하지만, 한 번 작성된 백업을 ClickHouse에서 정리하거나 삭제하지 않습니다. 버킷 내 백업의 수명 주기를 관리하는 것은 귀하의 책임이며, 필요에 따라 삭제하거나 아카이브하거나 전체 비용을 최적화하기 위해 저렴한 스토리지를 이동해야 합니다.
+
+
+
+
+기존 백업을 다른 위치로 이동하면 복원 프로세스는 어떻게 됩니까?
+
+백업이 다른 위치로 이동되면, 복원 명령은 백업이 저장된 새 위치를 참조하도록 업데이트해야 합니다.
+
+
+
+
+객체 스토리지에 접근하는 데 필요한 자격 증명을 변경하면 어떻게 됩니까?
+
+백업이 성공적으로 다시 시작되도록 UI에서 변경된 자격 증명을 업데이트해야 합니다.
+
+
+
+
+외부 백업을 내보낼 위치를 변경하면 어떻게 됩니까?
+
+UI에서 새 위치를 업데이트해야 하며, 백업은 새 위치로 시작됩니다. 기존의 백업은 원래 위치에 남아 있습니다.
+
+
+
+
+제가 외부 백업을 활성화한 서비스에서 외부 백업을 비활성화하려면 어떻게 합니까?
+
+서비스에 대한 외부 백업을 비활성화하려면 서비스 설정 화면으로 이동하여 외부 백업 변경을 클릭합니다. 다음 화면에서 설정 제거를 클릭하여 서비스의 외부 백업을 비활성화합니다.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/03_backup_restore_using_commands.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/03_backup_restore_using_commands.md.hash
new file mode 100644
index 00000000000..4543bf0bae3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/03_backup_restore_using_commands.md.hash
@@ -0,0 +1 @@
+b9bde2aa2c3a9fe7
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/_category_.yml b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/_category_.yml
new file mode 100644
index 00000000000..ea653aed473
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/03_bring_your_own_backup/_category_.yml
@@ -0,0 +1,3 @@
+label: 'Bring Your Own Backup'
+collapsible: true
+collapsed: false
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/index.md
new file mode 100644
index 00000000000..fb3b38148b5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/index.md
@@ -0,0 +1,16 @@
+---
+'slug': '/cloud/manage/backups'
+'title': '백업'
+'description': '백업에 대한 목차 페이지.'
+'keywords':
+- 'backups'
+- 'configurable backups'
+- 'export backups to own cloud'
+'doc_type': 'landing-page'
+---
+
+| Page | Description |
+|-----------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|
+| [개요](/cloud/manage/backups/overview) | 백업에 대한 개요 페이지입니다. |
+| [구성 가능한 백업](/cloud/manage/backups/configurable-backups) | Scale 및 Enterprise 티어 사용자가 특정 비즈니스 요구 사항에 따라 백업 일정을 사용자 정의하는 방법에 대해 알아보세요. |
+| [자신의 클라우드 계정으로 백업 내보내기](/cloud/manage/backups/export-backups-to-own-cloud-account) | 자신의 클라우드 계정으로 백업을 내보낼 수 있는 Enterprise 티어 기능에 대해 알아보세요. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/index.md.hash
new file mode 100644
index 00000000000..5eeeb94117d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/backups/index.md.hash
@@ -0,0 +1 @@
+e4f70764bc29c146
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/_category_.json
new file mode 100644
index 00000000000..635441db7e9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Best practices",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/index.md
new file mode 100644
index 00000000000..c879fff44a2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/index.md
@@ -0,0 +1,34 @@
+---
+'slug': '/cloud/bestpractices'
+'keywords':
+- 'Cloud'
+- 'Best Practices'
+- 'Bulk Inserts'
+- 'Asynchronous Inserts'
+- 'Avoid Mutations'
+- 'Avoid Nullable Columns'
+- 'Avoid Optimize Final'
+- 'Low Cardinality Partitioning Key'
+- 'Multi Tenancy'
+- 'Usage Limits'
+'title': '개요'
+'hide_title': true
+'description': 'ClickHouse Cloud의 모범 사례 섹션의 랜딩 페이지'
+'doc_type': 'landing-page'
+---
+
+import TableOfContents from '@site/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md';
+
+
+# ClickHouse Cloud의 모범 사례 {#best-practices-in-clickhouse-cloud}
+
+이 섹션에서는 ClickHouse Cloud에서 최대의 효과를 얻기 위해 따라야 할 모범 사례를 제공합니다.
+
+| 페이지 | 설명 |
+|----------------------------------------------------------|----------------------------------------------------------------------------|
+| [사용 한계](/cloud/bestpractices/usage-limits)| ClickHouse의 한계를 탐색합니다. |
+| [다중 관리](/cloud/bestpractices/multi-tenancy)| 다중 관리 구현을 위한 다양한 전략에 대해 알아보세요. |
+
+이들은 ClickHouse의 모든 배포에 적용되는 표준 모범 사례에 추가되는 것입니다.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/index.md.hash
new file mode 100644
index 00000000000..4ec8ab64bff
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/index.md.hash
@@ -0,0 +1 @@
+fe26d9e5b9800239
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/multitenancy.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/multitenancy.md
new file mode 100644
index 00000000000..36748552ac9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/multitenancy.md
@@ -0,0 +1,384 @@
+---
+'slug': '/cloud/bestpractices/multi-tenancy'
+'sidebar_label': '다중 테넌시'
+'title': '다중 테넌시'
+'description': '다중 테넌시 구현을 위한 모범 사례'
+'doc_type': 'guide'
+'keywords':
+- 'multitenancy'
+- 'isolation'
+- 'best practices'
+- 'architecture'
+- 'multi-tenant'
+---
+
+On a SaaS 데이터 분석 플랫폼에서는 조직, 고객 또는 비즈니스 유닛과 같은 여러 테넌트가 동일한 데이터베이스 인프라를 공유하면서 각자의 데이터를 논리적으로 분리하는 것이 일반적입니다. 이를 통해 다양한 사용자가 동일한 플랫폼 내에서 자신의 데이터에 안전하게 접근할 수 있습니다.
+
+요구 사항에 따라 다중 테넌시를 구현하는 다양한 방법이 있습니다. 아래는 ClickHouse Cloud를 사용하여 이를 구현하는 방법에 대한 가이드입니다.
+
+## 공유 테이블 {#shared-table}
+
+이 접근 방식에서는 모든 테넌트의 데이터가 하나의 공유 테이블에 저장되며, 각 테넌트의 데이터를 식별하기 위해 사용되는 필드(또는 필드 집합)가 있습니다. 성능을 극대화하기 위해 이 필드는 [기본 키](/sql-reference/statements/create/table#primary-key)에 포함되어야 합니다. 사용자가 자신의 테넌트에 해당하는 데이터만 접근할 수 있도록 하기 위해 [역할 기반 접근 제어](/operations/access-rights)를 사용하며, 이는 [행 정책](/operations/access-rights#row-policy-management)을 통해 구현됩니다.
+
+> **이 접근 방식은 모든 테넌트가 동일한 데이터 스키마를 공유하고 데이터 볼륨이 적당할 경우(< TBs) 관리하기 가장 간단하므로 추천합니다.**
+
+모든 테넌트 데이터를 하나의 테이블로 통합함으로써 데이터 압축 최적화를 통해 저장 효율성이 향상되고 메타데이터 오버헤드가 줄어듭니다. 추가로, 모든 데이터가 중앙에서 관리되므로 스키마 업데이트가 간소화됩니다.
+
+이 방법은 특히 많은 수의 테넌트를 처리하는 데 효과적입니다(수백만 개 가능).
+
+그러나 테넌트가 서로 다른 데이터 스키마를 가지고 있거나 시간이 지남에 따라 차별화될 것으로 예상되는 경우 대안 접근 방식이 더 적합할 수 있습니다.
+
+테넌트 간의 데이터 볼륨 차이가 심한 경우, 작은 테넌트는 불필요한 쿼리 성능 저하를 경험할 수 있습니다. 이 문제는 기본 키에 테넌트 필드를 포함시킴으로써 대체로 완화됩니다.
+
+### 예제 {#shared-table-example}
+
+다음은 공유 테이블 다중 테넌시 모델 구현의 예입니다.
+
+먼저, 기본 키에 `tenant_id` 필드를 포함한 공유 테이블을 생성해 봅시다.
+
+```sql
+--- Create table events. Using tenant_id as part of the primary key
+CREATE TABLE events
+(
+ tenant_id UInt32, -- Tenant identifier
+ id UUID, -- Unique event ID
+ type LowCardinality(String), -- Type of event
+ timestamp DateTime, -- Timestamp of the event
+ user_id UInt32, -- ID of the user who triggered the event
+ data String, -- Event data
+)
+ORDER BY (tenant_id, timestamp)
+```
+
+가짜 데이터를 삽입해 보겠습니다.
+
+```sql
+-- Insert some dummy rows
+INSERT INTO events (tenant_id, id, type, timestamp, user_id, data)
+VALUES
+(1, '7b7e0439-99d0-4590-a4f7-1cfea1e192d1', 'user_login', '2025-03-19 08:00:00', 1001, '{"device": "desktop", "location": "LA"}'),
+(1, '846aa71f-f631-47b4-8429-ee8af87b4182', 'purchase', '2025-03-19 08:05:00', 1002, '{"item": "phone", "amount": 799}'),
+(1, '6b4d12e4-447d-4398-b3fa-1c1e94d71a2f', 'user_logout', '2025-03-19 08:10:00', 1001, '{"device": "desktop", "location": "LA"}'),
+(2, '7162f8ea-8bfd-486a-a45e-edfc3398ca93', 'user_login', '2025-03-19 08:12:00', 2001, '{"device": "mobile", "location": "SF"}'),
+(2, '6b5f3e55-5add-479e-b89d-762aa017f067', 'purchase', '2025-03-19 08:15:00', 2002, '{"item": "headphones", "amount": 199}'),
+(2, '43ad35a1-926c-4543-a133-8672ddd504bf', 'user_logout', '2025-03-19 08:20:00', 2001, '{"device": "mobile", "location": "SF"}'),
+(1, '83b5eb72-aba3-4038-bc52-6c08b6423615', 'purchase', '2025-03-19 08:45:00', 1003, '{"item": "monitor", "amount": 450}'),
+(1, '975fb0c8-55bd-4df4-843b-34f5cfeed0a9', 'user_login', '2025-03-19 08:50:00', 1004, '{"device": "desktop", "location": "LA"}'),
+(2, 'f50aa430-4898-43d0-9d82-41e7397ba9b8', 'purchase', '2025-03-19 08:55:00', 2003, '{"item": "laptop", "amount": 1200}'),
+(2, '5c150ceb-b869-4ebb-843d-ab42d3cb5410', 'user_login', '2025-03-19 09:00:00', 2004, '{"device": "mobile", "location": "SF"}'),
+```
+
+그 후, `user_1`과 `user_2`라는 두 사용자를 생성합시다.
+
+```sql
+-- Create users
+CREATE USER user_1 IDENTIFIED BY ''
+CREATE USER user_2 IDENTIFIED BY ''
+```
+
+우리는 `user_1`과 `user_2`가 자신의 테넌트 데이터에만 접근할 수 있도록 제한하는 [행 정책](/sql-reference/statements/create/row-policy)을 [생성](/sql-reference/statements/create/row-policy)합니다.
+
+```sql
+-- Create row policies
+CREATE ROW POLICY user_filter_1 ON default.events USING tenant_id=1 TO user_1
+CREATE ROW POLICY user_filter_2 ON default.events USING tenant_id=2 TO user_2
+```
+
+그 후, 공통 역할을 사용하여 공유 테이블에 대해 [`GRANT SELECT`](/sql-reference/statements/grant#usage) 권한을 부여합니다.
+
+```sql
+-- Create role
+CREATE ROLE user_role
+
+-- Grant read only to events table.
+GRANT SELECT ON default.events TO user_role
+GRANT user_role TO user_1
+GRANT user_role TO user_2
+```
+
+이제 `user_1`로 연결하고 간단한 선택 쿼리를 실행할 수 있습니다. 첫 번째 테넌트의 행만 반환됩니다.
+
+```sql
+-- Logged as user_1
+SELECT *
+FROM events
+
+ ┌─tenant_id─┬─id───────────────────────────────────┬─type────────┬───────────timestamp─┬─user_id─┬─data────────────────────────────────────┐
+1. │ 1 │ 7b7e0439-99d0-4590-a4f7-1cfea1e192d1 │ user_login │ 2025-03-19 08:00:00 │ 1001 │ {"device": "desktop", "location": "LA"} │
+2. │ 1 │ 846aa71f-f631-47b4-8429-ee8af87b4182 │ purchase │ 2025-03-19 08:05:00 │ 1002 │ {"item": "phone", "amount": 799} │
+3. │ 1 │ 6b4d12e4-447d-4398-b3fa-1c1e94d71a2f │ user_logout │ 2025-03-19 08:10:00 │ 1001 │ {"device": "desktop", "location": "LA"} │
+4. │ 1 │ 83b5eb72-aba3-4038-bc52-6c08b6423615 │ purchase │ 2025-03-19 08:45:00 │ 1003 │ {"item": "monitor", "amount": 450} │
+5. │ 1 │ 975fb0c8-55bd-4df4-843b-34f5cfeed0a9 │ user_login │ 2025-03-19 08:50:00 │ 1004 │ {"device": "desktop", "location": "LA"} │
+ └───────────┴──────────────────────────────────────┴─────────────┴─────────────────────┴─────────┴─────────────────────────────────────────┘
+```
+
+## 별도 테이블 {#separate-tables}
+
+이 접근 방식에서는 각 테넌트의 데이터가 동일한 데이터베이스 내의 별도 테이블에 저장되며, 테넌트를 식별하기 위한 특정 필드가 필요하지 않습니다. 사용자 접근은 [GRANT 문](/sql-reference/statements/grant)을 사용하여 강제되며, 각 사용자가 자신의 테넌트 데이터가 포함된 테이블만 접근할 수 있도록 보장합니다.
+
+> **별도 테이블을 사용하는 것은 테넌트가 서로 다른 데이터 스키마를 가지고 있을 때 좋은 선택입니다.**
+
+쿼리 성능이 중요한 경우, 매우 큰 데이터 세트를 가진 몇몇 테넌트와 관련된 시나리오에서는 이 접근 방식이 공유 테이블 모델보다 더 뛰어날 수 있습니다. 다른 테넌트의 데이터를 필터링할 필요가 없기 때문에 쿼리가 더 효율적일 수 있습니다. 추가적으로, 기본 키는 추가 필드(예: 테넌트 ID)를 기본 키에 포함할 필요가 없기 때문에 더욱 최적화할 수 있습니다.
+
+이 접근 방식은 수천 개의 테넌트에 대해서는 확장이 불가능하다는 점에 유의하세요. [사용량 한계](/cloud/bestpractices/usage-limits)를 참조하세요.
+
+### 예제 {#separate-tables-example}
+
+다음은 별도 테이블 다중 테넌시 모델 구현의 예입니다.
+
+먼저, `tenant_1`의 이벤트를 위한 하나의 테이블과 `tenant_2`의 이벤트를 위한 또 다른 테이블을 생성해 봅시다.
+
+```sql
+-- Create table for tenant 1
+CREATE TABLE events_tenant_1
+(
+ id UUID, -- Unique event ID
+ type LowCardinality(String), -- Type of event
+ timestamp DateTime, -- Timestamp of the event
+ user_id UInt32, -- ID of the user who triggered the event
+ data String, -- Event data
+)
+ORDER BY (timestamp, user_id) -- Primary key can focus on other attributes
+
+-- Create table for tenant 2
+CREATE TABLE events_tenant_2
+(
+ id UUID, -- Unique event ID
+ type LowCardinality(String), -- Type of event
+ timestamp DateTime, -- Timestamp of the event
+ user_id UInt32, -- ID of the user who triggered the event
+ data String, -- Event data
+)
+ORDER BY (timestamp, user_id) -- Primary key can focus on other attributes
+```
+
+가짜 데이터를 삽입해 보겠습니다.
+
+```sql
+INSERT INTO events_tenant_1 (id, type, timestamp, user_id, data)
+VALUES
+('7b7e0439-99d0-4590-a4f7-1cfea1e192d1', 'user_login', '2025-03-19 08:00:00', 1001, '{"device": "desktop", "location": "LA"}'),
+('846aa71f-f631-47b4-8429-ee8af87b4182', 'purchase', '2025-03-19 08:05:00', 1002, '{"item": "phone", "amount": 799}'),
+('6b4d12e4-447d-4398-b3fa-1c1e94d71a2f', 'user_logout', '2025-03-19 08:10:00', 1001, '{"device": "desktop", "location": "LA"}'),
+('83b5eb72-aba3-4038-bc52-6c08b6423615', 'purchase', '2025-03-19 08:45:00', 1003, '{"item": "monitor", "amount": 450}'),
+('975fb0c8-55bd-4df4-843b-34f5cfeed0a9', 'user_login', '2025-03-19 08:50:00', 1004, '{"device": "desktop", "location": "LA"}')
+
+INSERT INTO events_tenant_2 (id, type, timestamp, user_id, data)
+VALUES
+('7162f8ea-8bfd-486a-a45e-edfc3398ca93', 'user_login', '2025-03-19 08:12:00', 2001, '{"device": "mobile", "location": "SF"}'),
+('6b5f3e55-5add-479e-b89d-762aa017f067', 'purchase', '2025-03-19 08:15:00', 2002, '{"item": "headphones", "amount": 199}'),
+('43ad35a1-926c-4543-a133-8672ddd504bf', 'user_logout', '2025-03-19 08:20:00', 2001, '{"device": "mobile", "location": "SF"}'),
+('f50aa430-4898-43d0-9d82-41e7397ba9b8', 'purchase', '2025-03-19 08:55:00', 2003, '{"item": "laptop", "amount": 1200}'),
+('5c150ceb-b869-4ebb-843d-ab42d3cb5410', 'user_login', '2025-03-19 09:00:00', 2004, '{"device": "mobile", "location": "SF"}')
+```
+
+그 후, `user_1`과 `user_2`라는 두 사용자를 생성합시다.
+
+```sql
+-- Create users
+CREATE USER user_1 IDENTIFIED BY ''
+CREATE USER user_2 IDENTIFIED BY ''
+```
+
+그럼 해당 테이블에 대해 `GRANT SELECT` 권한을 부여합니다.
+
+```sql
+-- Grant read only to events table.
+GRANT SELECT ON default.events_tenant_1 TO user_1
+GRANT SELECT ON default.events_tenant_2 TO user_2
+```
+
+이제 `user_1`로 연결하고 이 사용자의 해당 테이블에서 간단한 선택 쿼리를 실행할 수 있습니다. 첫 번째 테넌트의 행만 반환됩니다.
+
+```sql
+-- Logged as user_1
+SELECT *
+FROM default.events_tenant_1
+
+ ┌─id───────────────────────────────────┬─type────────┬───────────timestamp─┬─user_id─┬─data────────────────────────────────────┐
+1. │ 7b7e0439-99d0-4590-a4f7-1cfea1e192d1 │ user_login │ 2025-03-19 08:00:00 │ 1001 │ {"device": "desktop", "location": "LA"} │
+2. │ 846aa71f-f631-47b4-8429-ee8af87b4182 │ purchase │ 2025-03-19 08:05:00 │ 1002 │ {"item": "phone", "amount": 799} │
+3. │ 6b4d12e4-447d-4398-b3fa-1c1e94d71a2f │ user_logout │ 2025-03-19 08:10:00 │ 1001 │ {"device": "desktop", "location": "LA"} │
+4. │ 83b5eb72-aba3-4038-bc52-6c08b6423615 │ purchase │ 2025-03-19 08:45:00 │ 1003 │ {"item": "monitor", "amount": 450} │
+5. │ 975fb0c8-55bd-4df4-843b-34f5cfeed0a9 │ user_login │ 2025-03-19 08:50:00 │ 1004 │ {"device": "desktop", "location": "LA"} │
+ └──────────────────────────────────────┴─────────────┴─────────────────────┴─────────┴─────────────────────────────────────────┘
+```
+
+## 별도 데이터베이스 {#separate-databases}
+
+각 테넌트의 데이터는 동일한 ClickHouse 서비스 내의 별도 데이터베이스에 저장됩니다.
+
+> **이 접근 방식은 각 테넌트가 많은 수의 테이블과 물리화된 뷰를 필요로 하고 서로 다른 데이터 스키마가 있을 경우 유용합니다. 그러나 테넌트 수가 많아지면 관리하기 어려워질 수 있습니다.**
+
+구현은 별도 테이블 접근 방식과 유사하지만, 테이블 수준에서 권한을 부여하는 대신 데이터베이스 수준에서 권한을 부여합니다.
+
+이 접근 방식은 수천 개의 테넌트에 대해서는 확장이 불가능하다는 점에 유의하세요. [사용량 한계](/cloud/bestpractices/usage-limits)를 참조하세요.
+
+### 예제 {#separate-databases-example}
+
+다음은 별도 데이터베이스 다중 테넌시 모델 구현의 예입니다.
+
+먼저, `tenant_1`과 `tenant_2`를 위한 두 개의 데이터베이스를 생성해 봅시다.
+
+```sql
+-- Create database for tenant_1
+CREATE DATABASE tenant_1;
+
+-- Create database for tenant_2
+CREATE DATABASE tenant_2;
+```
+
+```sql
+-- Create table for tenant_1
+CREATE TABLE tenant_1.events
+(
+ id UUID, -- Unique event ID
+ type LowCardinality(String), -- Type of event
+ timestamp DateTime, -- Timestamp of the event
+ user_id UInt32, -- ID of the user who triggered the event
+ data String, -- Event data
+)
+ORDER BY (timestamp, user_id);
+
+-- Create table for tenant_2
+CREATE TABLE tenant_2.events
+(
+ id UUID, -- Unique event ID
+ type LowCardinality(String), -- Type of event
+ timestamp DateTime, -- Timestamp of the event
+ user_id UInt32, -- ID of the user who triggered the event
+ data String, -- Event data
+)
+ORDER BY (timestamp, user_id);
+```
+
+가짜 데이터를 삽입해 보겠습니다.
+
+```sql
+INSERT INTO tenant_1.events (id, type, timestamp, user_id, data)
+VALUES
+('7b7e0439-99d0-4590-a4f7-1cfea1e192d1', 'user_login', '2025-03-19 08:00:00', 1001, '{"device": "desktop", "location": "LA"}'),
+('846aa71f-f631-47b4-8429-ee8af87b4182', 'purchase', '2025-03-19 08:05:00', 1002, '{"item": "phone", "amount": 799}'),
+('6b4d12e4-447d-4398-b3fa-1c1e94d71a2f', 'user_logout', '2025-03-19 08:10:00', 1001, '{"device": "desktop", "location": "LA"}'),
+('83b5eb72-aba3-4038-bc52-6c08b6423615', 'purchase', '2025-03-19 08:45:00', 1003, '{"item": "monitor", "amount": 450}'),
+('975fb0c8-55bd-4df4-843b-34f5cfeed0a9', 'user_login', '2025-03-19 08:50:00', 1004, '{"device": "desktop", "location": "LA"}')
+
+INSERT INTO tenant_2.events (id, type, timestamp, user_id, data)
+VALUES
+('7162f8ea-8bfd-486a-a45e-edfc3398ca93', 'user_login', '2025-03-19 08:12:00', 2001, '{"device": "mobile", "location": "SF"}'),
+('6b5f3e55-5add-479e-b89d-762aa017f067', 'purchase', '2025-03-19 08:15:00', 2002, '{"item": "headphones", "amount": 199}'),
+('43ad35a1-926c-4543-a133-8672ddd504bf', 'user_logout', '2025-03-19 08:20:00', 2001, '{"device": "mobile", "location": "SF"}'),
+('f50aa430-4898-43d0-9d82-41e7397ba9b8', 'purchase', '2025-03-19 08:55:00', 2003, '{"item": "laptop", "amount": 1200}'),
+('5c150ceb-b869-4ebb-843d-ab42d3cb5410', 'user_login', '2025-03-19 09:00:00', 2004, '{"device": "mobile", "location": "SF"}')
+```
+
+그 후, `user_1`과 `user_2`라는 두 사용자를 생성합시다.
+
+```sql
+-- Create users
+CREATE USER user_1 IDENTIFIED BY ''
+CREATE USER user_2 IDENTIFIED BY ''
+```
+
+그럼 해당 테이블에 대해 `GRANT SELECT` 권한을 부여합니다.
+
+```sql
+-- Grant read only to events table.
+GRANT SELECT ON tenant_1.events TO user_1
+GRANT SELECT ON tenant_2.events TO user_2
+```
+
+이제 `user_1`로 연결하고 적절한 데이터베이스의 이벤트 테이블에서 간단한 선택 쿼리를 실행할 수 있습니다. 첫 번째 테넌트의 행만 반환됩니다.
+
+```sql
+-- Logged as user_1
+SELECT *
+FROM tenant_1.events
+
+ ┌─id───────────────────────────────────┬─type────────┬───────────timestamp─┬─user_id─┬─data────────────────────────────────────┐
+1. │ 7b7e0439-99d0-4590-a4f7-1cfea1e192d1 │ user_login │ 2025-03-19 08:00:00 │ 1001 │ {"device": "desktop", "location": "LA"} │
+2. │ 846aa71f-f631-47b4-8429-ee8af87b4182 │ purchase │ 2025-03-19 08:05:00 │ 1002 │ {"item": "phone", "amount": 799} │
+3. │ 6b4d12e4-447d-4398-b3fa-1c1e94d71a2f │ user_logout │ 2025-03-19 08:10:00 │ 1001 │ {"device": "desktop", "location": "LA"} │
+4. │ 83b5eb72-aba3-4038-bc52-6c08b6423615 │ purchase │ 2025-03-19 08:45:00 │ 1003 │ {"item": "monitor", "amount": 450} │
+5. │ 975fb0c8-55bd-4df4-843b-34f5cfeed0a9 │ user_login │ 2025-03-19 08:50:00 │ 1004 │ {"device": "desktop", "location": "LA"} │
+ └──────────────────────────────────────┴─────────────┴─────────────────────┴─────────┴─────────────────────────────────────────┘
+```
+
+## 컴퓨트-컴퓨트 분리 {#compute-compute-separation}
+
+위에서 설명한 세 가지 접근 방식은 [창고](/cloud/reference/warehouses#what-is-a-warehouse)를 사용하여 추가로 분리될 수 있습니다. 데이터는 공통 객체 저장소를 통해 공유되지만, 각 테넌트는 [컴퓨트-컴퓨트 분리](/cloud/reference/warehouses#what-is-compute-compute-separation)를 통해 서로 다른 CPU/메모리 비율을 가진 자체 컴퓨트 서비스를 가질 수 있습니다.
+
+사용자 관리는 모두 같은 창고 내 서비스에서 [접근 권한을 공유](/cloud/reference/warehouses#database-credentials)하기 때문에 전에 설명한 접근 방식과 유사합니다.
+
+창고에서는 자식 서비스의 수가 제한되어 있다는 점에 유의하세요. [창고 한계](/cloud/reference/warehouses#limitations)를 참조하세요.
+
+## 별도 클라우드 서비스 {#separate-service}
+
+가장 급진적인 접근 방식은 각 테넌트마다 다른 ClickHouse 서비스를 사용하는 것입니다.
+
+> **이 방법은 테넌트 데이터가 법적, 보안 또는 근접성 이유로 서로 다른 지역에 저장되어야 하는 경우 해결책이 될 수 있습니다.**
+
+사용자가 자신에게 해당하는 테넌트 데이터에 접근할 수 있는 각 서비스에 사용자 계정을 생성해야 합니다.
+
+이 접근 방식은 관리하기가 더 어렵고 각 서비스에 추가 오버헤드가 발생합니다. 각 서비스는 자체 인프라가 필요합니다. 서비스는 [ClickHouse Cloud API](/cloud/manage/api/api-overview)를 통해 관리될 수 있으며, [공식 Terraform 프로바이더](https://registry.terraform.io/providers/ClickHouse/clickhouse/latest/docs)를 통해 오케스트레이션도 가능합니다.
+
+### 예제 {#separate-service-example}
+
+다음은 별도 서비스 다중 테넌시 모델 구현의 예입니다. 이 예는 하나의 ClickHouse 서비스에서 테이블과 사용자를 생성하는 방법을 보여줍니다. 동일한 작업을 모든 서비스에서 복제해야 합니다.
+
+먼저, `events` 테이블을 생성해 봅시다.
+
+```sql
+-- Create table for tenant_1
+CREATE TABLE events
+(
+ id UUID, -- Unique event ID
+ type LowCardinality(String), -- Type of event
+ timestamp DateTime, -- Timestamp of the event
+ user_id UInt32, -- ID of the user who triggered the event
+ data String, -- Event data
+)
+ORDER BY (timestamp, user_id);
+```
+
+가짜 데이터를 삽입해 보겠습니다.
+
+```sql
+INSERT INTO events (id, type, timestamp, user_id, data)
+VALUES
+('7b7e0439-99d0-4590-a4f7-1cfea1e192d1', 'user_login', '2025-03-19 08:00:00', 1001, '{"device": "desktop", "location": "LA"}'),
+('846aa71f-f631-47b4-8429-ee8af87b4182', 'purchase', '2025-03-19 08:05:00', 1002, '{"item": "phone", "amount": 799}'),
+('6b4d12e4-447d-4398-b3fa-1c1e94d71a2f', 'user_logout', '2025-03-19 08:10:00', 1001, '{"device": "desktop", "location": "LA"}'),
+('83b5eb72-aba3-4038-bc52-6c08b6423615', 'purchase', '2025-03-19 08:45:00', 1003, '{"item": "monitor", "amount": 450}'),
+('975fb0c8-55bd-4df4-843b-34f5cfeed0a9', 'user_login', '2025-03-19 08:50:00', 1004, '{"device": "desktop", "location": "LA"}')
+```
+
+그 후, `user_1`을 생성합니다.
+
+```sql
+-- Create users
+CREATE USER user_1 IDENTIFIED BY ''
+```
+
+그 후, 해당 테이블에 대해 `GRANT SELECT` 권한을 부여합니다.
+
+```sql
+-- Grant read only to events table.
+GRANT SELECT ON events TO user_1
+```
+
+이제 테넌트 1을 위한 서비스에 `user_1`로 연결하고 간단한 선택 쿼리를 실행할 수 있습니다. 첫 번째 테넌트의 행만 반환됩니다.
+
+```sql
+-- Logged as user_1
+SELECT *
+FROM events
+
+ ┌─id───────────────────────────────────┬─type────────┬───────────timestamp─┬─user_id─┬─data────────────────────────────────────┐
+1. │ 7b7e0439-99d0-4590-a4f7-1cfea1e192d1 │ user_login │ 2025-03-19 08:00:00 │ 1001 │ {"device": "desktop", "location": "LA"} │
+2. │ 846aa71f-f631-47b4-8429-ee8af87b4182 │ purchase │ 2025-03-19 08:05:00 │ 1002 │ {"item": "phone", "amount": 799} │
+3. │ 6b4d12e4-447d-4398-b3fa-1c1e94d71a2f │ user_logout │ 2025-03-19 08:10:00 │ 1001 │ {"device": "desktop", "location": "LA"} │
+4. │ 83b5eb72-aba3-4038-bc52-6c08b6423615 │ purchase │ 2025-03-19 08:45:00 │ 1003 │ {"item": "monitor", "amount": 450} │
+5. │ 975fb0c8-55bd-4df4-843b-34f5cfeed0a9 │ user_login │ 2025-03-19 08:50:00 │ 1004 │ {"device": "desktop", "location": "LA"} │
+ └──────────────────────────────────────┴─────────────┴─────────────────────┴─────────┴─────────────────────────────────────────┘
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/multitenancy.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/multitenancy.md.hash
new file mode 100644
index 00000000000..406cc88af71
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/multitenancy.md.hash
@@ -0,0 +1 @@
+98e864c4d1b42b82
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/usagelimits.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/usagelimits.md
new file mode 100644
index 00000000000..02e70607070
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/usagelimits.md
@@ -0,0 +1,39 @@
+---
+'slug': '/cloud/bestpractices/usage-limits'
+'sidebar_label': '서비스 한계'
+'title': '사용 한계'
+'description': 'ClickHouse Cloud에서 권장하는 사용 한계를 설명합니다.'
+'doc_type': 'reference'
+'keywords':
+- 'usage limits'
+- 'quotas'
+- 'best practices'
+- 'resource management'
+- 'cloud features'
+---
+
+ClickHouse는 속도와 안정성으로 잘 알려져 있지만, 최적의 성능은 특정 운영 매개변수 내에서 달성됩니다. 예를 들어, 너무 많은 테이블, 데이터베이스 또는 파트가 성능에 부정적인 영향을 미칠 수 있습니다. 이를 방지하기 위해 ClickHouse Cloud는 여러 운영 차원에서 제한을 적용합니다. 이러한 가드레일의 세부 사항은 아래에 나와 있습니다.
+
+:::tip
+이러한 가드레일 중 하나에 부딪혔다면, 당신이 최적화되지 않은 방식으로 사용 사례를 구현하고 있을 가능성이 있습니다. 우리의 지원 팀에 연락해 주시면, 가드레일을 초과하지 않도록 사용 사례를 개선하는 데 기꺼이 도움을 드리겠습니다. 또는 가드레일을 제어된 방식으로 증가시킬 수 있는 방법을 함께 찾아보겠습니다.
+:::
+
+| 차원 | 제한 |
+|-------------------------------|------------------------------------------------------------|
+| **데이터베이스** | 1000 |
+| **테이블** | 5000 |
+| **컬럼** | ∼1000 (콤팩트보다는 와이드 형식이 선호됨) |
+| **파티션** | 50k |
+| **파트** | 전체 인스턴스에서 100k |
+| **파트 크기** | 150gb |
+| **조직당 서비스 수** | 20 (소프트) |
+| **창고당 서비스 수** | 5 (소프트) |
+| **서비스당 복제본 수** | 20 (소프트) |
+| **저유양카디널리티** | 10k 이하 |
+| **테이블의 기본 키** | 데이터를 충분히 필터링할 수 있는 4-5개 |
+| **쿼리 동시성** | 1000 (복제본당) |
+| **배치 수집** | 1M보다 큰 모든 것은 시스템에서 1M 행 블록으로 분할됨 |
+
+:::note
+단일 복제본 서비스의 경우, 최대 데이터베이스 수는 100개로 제한되며, 최대 테이블 수는 500개로 제한됩니다. 또한, 기본 등급 서비스의 저장소는 1TB로 제한됩니다.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/usagelimits.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/usagelimits.md.hash
new file mode 100644
index 00000000000..c7bca52c9a4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/best_practices/usagelimits.md.hash
@@ -0,0 +1 @@
+1cb218ae712ff506
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/cloud-compatibility.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/cloud-compatibility.md
new file mode 100644
index 00000000000..31fcefd0d03
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/cloud-compatibility.md
@@ -0,0 +1,131 @@
+---
+'slug': '/whats-new/cloud-compatibility'
+'sidebar_label': '클라우드 호환성'
+'title': '클라우드 호환성'
+'description': '이 가이드는 ClickHouse Cloud에서 기대할 수 있는 기능적 및 운영적 개요를 제공합니다.'
+'keywords':
+- 'ClickHouse Cloud'
+- 'compatibility'
+'doc_type': 'guide'
+---
+
+
+# ClickHouse Cloud 호환성 가이드
+
+이 가이드는 ClickHouse Cloud의 기능적 및 운영적으로 기대할 수 있는 내용을 개괄합니다. ClickHouse Cloud는 오픈 소스 ClickHouse 배포를 기반으로 하지만, 아키텍처 및 구현에서 몇 가지 차이가 있을 수 있습니다. ClickHouse Cloud를 만드는 과정에 대한 [이 블로그](https://clickhouse.com/blog/building-clickhouse-cloud-from-scratch-in-a-year)를 읽어보는 것도 유익할 수 있습니다.
+
+## ClickHouse Cloud 아키텍처 {#clickhouse-cloud-architecture}
+ClickHouse Cloud는 운영 오버헤드를 크게 줄이고 대규모로 ClickHouse를 실행하는 비용을 절감합니다. 배포를 사전 크기 조정하고, 고가용성을 위한 복제를 설정하고, 데이터를 수동으로 샤딩하고, 작업량이 증가할 때 서버를 확장하고, 사용하지 않을 때 축소할 필요가 없습니다 — 이를 저희가 처리합니다.
+
+이러한 이점은 ClickHouse Cloud의 기본 아키텍처 선택의 결과입니다:
+- 컴퓨트와 스토리지가 분리되어 있어 서로 다른 차원에서 자동으로 확장할 수 있으므로, 정적인 인스턴스 구성에서 스토리지 또는 컴퓨트를 과도하게 할당할 필요가 없습니다.
+- 오브젝트 스토어 위의 계층형 스토리지와 다단계 캐싱은 사실상 무제한의 확장성과 좋은 가격/성능 비율을 제공하므로, 스토리지 파티션을 미리 크기 조정하거나 높은 스토리지 비용에 대해 걱정할 필요가 없습니다.
+- 고가용성은 기본적으로 활성화되어 있으며 복제는 투명하게 관리되므로, 애플리케이션을 개발하거나 데이터를 분석하는 데 집중할 수 있습니다.
+- 가변 연속 작업량에 대한 자동 확장은 기본적으로 활성화되어 있으므로, 서비스 크기를 미리 지정할 필요가 없고, 작업량이 증가할 때 서버를 확장하거나 활동이 적을 때 수동으로 서버를 축소할 필요가 없습니다.
+- 간헐적 작업량에 대한 원활한 절전 모드가 기본적으로 활성화되어 있습니다. 비활동이 일정 기간 지속되면 컴퓨트 리소스를 자동으로 일시 중지하고 새로운 쿼리가 도착할 때 다시 투명하게 시작하므로 유휴 리소스에 대한 비용을 지불할 필요가 없습니다.
+- 고급 확장 제어 기능을 통해 추가 비용 제어를 위한 자동 확장 최대값이나 특수 성능 요구 사항이 있는 애플리케이션을 위해 컴퓨트 리소스를 예약하는 자동 확장 최소값을 설정할 수 있습니다.
+
+## 기능 {#capabilities}
+ClickHouse Cloud는 오픈 소스 ClickHouse 배포에서 선별된 기능 세트에 대한 접근을 제공합니다. 아래 표는 현재 ClickHouse Cloud에서 비활성화된 일부 기능을 설명합니다.
+
+### DDL 구문 {#ddl-syntax}
+전반적으로 ClickHouse Cloud의 DDL 구문은 자체 관리 설치에서 사용 가능한 것과 일치해야 합니다. 몇 가지 주목할 만한 예외가 있습니다:
+- 현재 사용 가능한 `CREATE AS SELECT`에 대한 지원이 없습니다. 해결 방법으로, `CREATE ... EMPTY ... AS SELECT`를 사용한 후 해당 테이블에 삽입하는 것을 제안합니다(예제는 [이 블로그](https://clickhouse.com/blog/getting-data-into-clickhouse-part-1)를 참조하세요).
+- 일부 실험적 구문은 비활성화될 수 있으며, 예를 들어 `ALTER TABLE ... MODIFY QUERY` 문장이 이에 해당합니다.
+- 보안상의 이유로 어떤 내부 조회 기능이 비활성화될 수 있습니다. 예를 들어, `addressToLine` SQL 함수가 이에 해당합니다.
+- ClickHouse Cloud에서는 `ON CLUSTER` 매개변수를 사용하지 마세요 - 이는 필요하지 않습니다. 대부분 노-옵 함수이지만, [매크로](/operations/server-configuration-parameters/settings#macros)를 사용하려 할 때 오류를 일으킬 수 있습니다. 매크로는 ClickHouse Cloud에서 대부분 작동하지 않으며 필요하지 않습니다.
+
+### 데이터베이스 및 테이블 엔진 {#database-and-table-engines}
+
+ClickHouse Cloud는 기본적으로 고가용성 및 복제 서비스를 제공합니다. 따라서 모든 데이터베이스 및 테이블 엔진은 "Replicated"입니다. "Replicated"를 명시할 필요는 없습니다 — 예를 들어 ClickHouse Cloud에서 사용될 때 `ReplicatedMergeTree`와 `MergeTree`는 동일합니다.
+
+**지원되는 테이블 엔진**
+
+- ReplicatedMergeTree (기본값, 명시되지 않은 경우)
+- ReplicatedSummingMergeTree
+- ReplicatedAggregatingMergeTree
+- ReplicatedReplacingMergeTree
+- ReplicatedCollapsingMergeTree
+- ReplicatedVersionedCollapsingMergeTree
+- MergeTree (ReplicatedMergeTree로 변환됨)
+- SummingMergeTree (ReplicatedSummingMergeTree로 변환됨)
+- AggregatingMergeTree (ReplicatedAggregatingMergeTree로 변환됨)
+- ReplacingMergeTree (ReplicatedReplacingMergeTree로 변환됨)
+- CollapsingMergeTree (ReplicatedCollapsingMergeTree로 변환됨)
+- VersionedCollapsingMergeTree (ReplicatedVersionedCollapsingMergeTree로 변환됨)
+- URL
+- View
+- MaterializedView
+- GenerateRandom
+- Null
+- Buffer
+- Memory
+- Deltalake
+- Hudi
+- MySQL
+- MongoDB
+- NATS
+- RabbitMQ
+- PostgreSQL
+- S3
+
+### 인터페이스 {#interfaces}
+ClickHouse Cloud는 HTTPS, 네이티브 인터페이스 및 [MySQL 와이어 프로토콜](/interfaces/mysql)을 지원합니다. Postgres와 같은 다른 인터페이스에 대한 지원이 곧 추가될 예정입니다.
+
+### 딕셔너리 {#dictionaries}
+딕셔너리는 ClickHouse에서 조회 속도를 높이는 인기 있는 방법입니다. 현재 ClickHouse Cloud는 PostgreSQL, MySQL, 원격 및 로컬 ClickHouse 서버, Redis, MongoDB 및 HTTP 소스의 딕셔너리를 지원합니다.
+
+### 분산 쿼리 {#federated-queries}
+우리는 클라우드 내의 크로스 클러스터 통신을 위한 분산 ClickHouse 쿼리 및 외부 자체 관리 ClickHouse 클러스터와의 통신을 지원합니다. ClickHouse Cloud는 현재 다음 통합 엔진을 사용한 분산 쿼리를 지원합니다:
+- Deltalake
+- Hudi
+- MySQL
+- MongoDB
+- NATS
+- RabbitMQ
+- PostgreSQL
+- S3
+
+SQLite, ODBC, JDBC, Redis, HDFS 및 Hive와 같은 일부 외부 데이터베이스 및 테이블 엔진에 대한 분산 쿼리는 아직 지원되지 않습니다.
+
+### 사용자 정의 함수 {#user-defined-functions}
+
+사용자 정의 함수는 ClickHouse의 최신 기능입니다. ClickHouse Cloud는 현재 SQL UDF만 지원합니다.
+
+### 실험적 기능 {#experimental-features}
+
+ClickHouse Cloud 서비스에서의 실험적 기능은 서비스 배포의 안정성을 보장하기 위해 비활성화되어 있습니다.
+
+### Kafka {#kafka}
+
+[Kafka 테이블 엔진](/integrations/data-ingestion/kafka/index.md)은 ClickHouse Cloud에서 일반적으로 사용할 수 없습니다. 대신, Kafka 연결 구성 요소를 ClickHouse 서비스와 분리하여 관심사를 분리하는 아키텍처에 의존하는 것을 권장합니다. Kafka 스트림에서 데이터를 가져오기 위해 [ClickPipes](https://clickhouse.com/cloud/clickpipes)를 추천합니다. 또는 [Kafka 사용자 가이드](/integrations/data-ingestion/kafka/index.md)에서 나열된 푸시 기반 대안을 고려하세요.
+
+### 명명된 컬렉션 {#named-collections}
+
+[명명된 컬렉션](/operations/named-collections)은 현재 ClickHouse Cloud에서 지원되지 않습니다.
+
+## 운영 기본값 및 고려 사항 {#operational-defaults-and-considerations}
+다음은 ClickHouse Cloud 서비스의 기본 설정입니다. 특정 경우에 이 설정은 서비스의 올바른 작동을 보장하기 위해 고정되어 있으며, 다른 경우에는 조정할 수 있습니다.
+
+### 운영 한계 {#operational-limits}
+
+#### `max_parts_in_total: 10,000` {#max_parts_in_total-10000}
+MergeTree 테이블에 대한 `max_parts_in_total` 설정의 기본값이 100,000에서 10,000으로 줄어들었습니다. 이 변경의 이유는 클라우드에서 데이터 파트 수가 많으면 서비스의 시작 시간이 느려질 가능성이 높다는 것을 관찰했기 때문입니다. 많은 수의 파트는 일반적으로 너무 세분화된 파티션 키의 선택을 나타내며, 이는 일반적으로 실수로 이루어져야 하며 피해야 합니다. 기본값 변경은 이러한 사례를 일찍 발견할 수 있게 해 줍니다.
+
+#### `max_concurrent_queries: 1,000` {#max_concurrent_queries-1000}
+이 설정은 기본값 `100`에서 `1000`으로 증가하여 더 많은 동시성을 허용합니다.
+이는 제공되는 계층 서비스에 대해 `복제본 수 * 1,000`의 동시 쿼리를 초래합니다.
+기본 계층 서비스의 경우 단일 복제본으로 제한된 `1000` 동시 쿼리 및 `Scale` 및 `Enterprise`의 경우 구성된 복제본 수에 따라 `1000+` 동시 쿼리를 허용합니다.
+
+#### `max_table_size_to_drop: 1,000,000,000,000` {#max_table_size_to_drop-1000000000000}
+이 설정을 50GB에서 증가시켜 최대 1TB의 테이블/파티션 삭제를 허용합니다.
+
+### 시스템 설정 {#system-settings}
+ClickHouse Cloud는 다양한 작업량에 맞게 조정되며, 그 이유로 대부분의 시스템 설정은 현재 조정할 수 없습니다. 대부분의 사용자에게 시스템 설정 조정의 필요성을 예상하지 않지만, 고급 시스템 조정에 대해 질문이 있는 경우 ClickHouse Cloud 지원팀에 문의하시기 바랍니다.
+
+### 고급 보안 관리 {#advanced-security-administration}
+ClickHouse 서비스를 생성하는 과정에서 기본 데이터베이스와 이 데이터베이스에 대한 광범위한 권한을 갖는 기본 사용자를 만듭니다. 이 초기 사용자는 추가 사용자를 생성하고 이 데이터베이스에 대한 권한을 할당할 수 있습니다. 이 외에도 Kerberos, LDAP 또는 SSL X.509 인증서를 사용하여 데이터베이스 내에서 다음 보안 기능을 활성화하는 기능은 현재 지원되지 않습니다.
+
+## 로드맵 {#roadmap}
+
+클라우드에서 실행 가능한 UDF에 대한 지원을 도입하고 있으며, 다른 많은 기능에 대한 수요를 평가하고 있습니다. 피드백이 있거나 특정 기능을 요청하고 싶으신 경우 [여기에서 제출해 주세요](https://console.clickhouse.cloud/support).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/cloud-compatibility.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/cloud-compatibility.md.hash
new file mode 100644
index 00000000000..f00f11fea8b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/cloud-compatibility.md.hash
@@ -0,0 +1 @@
+f7ca88f4ece2a6dc
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/01_cloud-endpoints-api.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/01_cloud-endpoints-api.md
new file mode 100644
index 00000000000..d7c632d552b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/01_cloud-endpoints-api.md
@@ -0,0 +1,58 @@
+---
+'slug': '/manage/data-sources/cloud-endpoints-api'
+'sidebar_label': '클라우드 IP 주소'
+'title': '클라우드 IP 주소'
+'description': '이 페이지는 ClickHouse 내의 Cloud Endpoints API 보안 기능을 문서화합니다. 인증 및 권한 부여
+ 메커니즘을 통해 ClickHouse 배포를 보호하는 방법에 대해 자세히 설명합니다.'
+'doc_type': 'reference'
+'keywords':
+- 'ClickHouse Cloud'
+- 'static IP addresses'
+- 'cloud endpoints'
+- 'API'
+- 'security'
+- 'egress IPs'
+- 'ingress IPs'
+- 'firewall'
+---
+
+import Image from '@theme/IdealImage';
+import aws_rds_mysql from '@site/static/images/_snippets/aws-rds-mysql.png';
+import gcp_authorized_network from '@site/static/images/_snippets/gcp-authorized-network.png';
+
+## Static IPs API {#static-ips-api}
+
+정적 IP 목록을 가져와야 하는 경우, 다음 ClickHouse Cloud API 엔드포인트를 사용하면 됩니다: [`https://api.clickhouse.cloud/static-ips.json`](https://api.clickhouse.cloud/static-ips.json). 이 API는 인그레스/이그레스 IP 및 지역별 클라우드에 대한 S3 엔드포인트와 같은 ClickHouse Cloud 서비스의 엔드포인트를 제공합니다.
+
+MySQL 또는 PostgreSQL 엔진과 같은 통합을 사용하는 경우, ClickHouse Cloud가 인스턴스에 접근할 수 있도록 인가해야 할 수도 있습니다. 이 API를 사용하여 공용 IP를 검색하고 GCP의 `firewalls` 또는 `Authorized networks`에서, 또는 Azure, AWS의 `Security Groups`와 같은 다른 인프라 이그레스 관리 시스템에서 구성할 수 있습니다.
+
+예를 들어, `ap-south-1` 지역의 AWS에 호스팅된 ClickHouse Cloud 서비스에 접근을 허용하려면, 해당 지역의 `egress_ips` 주소를 추가할 수 있습니다:
+
+```bash
+❯ curl -s https://api.clickhouse.cloud/static-ips.json | jq '.'
+{
+ "aws": [
+ {
+ "egress_ips": [
+ "3.110.39.68",
+ "15.206.7.77",
+ "3.6.83.17"
+ ],
+ "ingress_ips": [
+ "15.206.78.111",
+ "3.6.185.108",
+ "43.204.6.248"
+ ],
+ "region": "ap-south-1",
+ "s3_endpoints": "vpce-0a975c9130d07276d"
+ },
+...
+```
+
+예를 들어, `us-east-2`에서 실행 중인 AWS RDS 인스턴스가 ClickHouse Cloud 서비스에 연결되어야 하는 경우, 다음과 같은 인바운드 보안 그룹 규칙이 필요합니다:
+
+
+
+`us-east-2`에서 실행 중인 동일한 ClickHouse Cloud 서비스가 GCP의 MySQL에 연결되어 있는 경우, `Authorized networks`는 다음과 같아야 합니다:
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/01_cloud-endpoints-api.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/01_cloud-endpoints-api.md.hash
new file mode 100644
index 00000000000..07964a3056e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/01_cloud-endpoints-api.md.hash
@@ -0,0 +1 @@
+7acb958d008a7ef0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/02_accessing-s3-data-securely.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/02_accessing-s3-data-securely.md
new file mode 100644
index 00000000000..16d233b0d94
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/02_accessing-s3-data-securely.md
@@ -0,0 +1,152 @@
+---
+'slug': '/cloud/data-sources/secure-s3'
+'sidebar_label': 'S3 데이터에 안전하게 접근하기'
+'title': 'S3 데이터에 안전하게 접근하기'
+'description': '이 문서에서는 ClickHouse Cloud 고객이 Amazon Simple Storage Service(S3)와 인증하기
+ 위해 역할 기반 접근을 활용하고 데이터를 안전하게 접근하는 방법을 보여줍니다.'
+'keywords':
+- 'RBAC'
+- 'Amazon S3'
+- 'authentication'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import secure_s3 from '@site/static/images/cloud/security/secures3.jpg';
+import s3_info from '@site/static/images/cloud/security/secures3_arn.png';
+import s3_output from '@site/static/images/cloud/security/secures3_output.jpg';
+
+이 문서에서는 ClickHouse Cloud 고객이 Amazon Simple Storage Service (S3)를 통해 안전하게 데이터에 접근할 수 있도록 역할 기반 접근 방식을 활용하는 방법을 시연합니다.
+
+## Introduction {#introduction}
+
+안전한 S3 접근을 위한 설정에 들어가기 전에, 이 방식이 어떻게 작동하는지 이해하는 것이 중요합니다. 아래는 ClickHouse 서비스가 고객의 AWS 계정 내에서 역할을 가정하여 개인 S3 버킷에 접근하는 방법에 대한 개요입니다.
+
+
+
+이 접근 방식은 고객이 모든 접근을 단일 위치(가정된 역할의 IAM 정책)에서 관리할 수 있게 하여, 모든 버킷 정책을 살펴보며 접근을 추가하거나 제거하는 번거로움 없이 S3 버킷에 대한 접근을 관리할 수 있게 합니다.
+
+## Setup {#setup}
+
+### Obtaining the ClickHouse service IAM role ARN {#obtaining-the-clickhouse-service-iam-role-arn}
+
+1 - ClickHouse 클라우드 계정에 로그인합니다.
+
+2 - 통합을 생성할 ClickHouse 서비스를 선택합니다.
+
+3 - **Settings** 탭을 선택합니다.
+
+4 - 페이지 하단의 **Network security information** 섹션으로 스크롤합니다.
+
+5 - 아래와 같이 서비스에 해당하는 **Service role ID (IAM)** 값을 복사합니다.
+
+
+
+### Setting up IAM assume role {#setting-up-iam-assume-role}
+
+#### Option 1: Deploying with CloudFormation stack {#option-1-deploying-with-cloudformation-stack}
+
+1 - IAM 역할을 생성하고 관리할 권한이 있는 IAM 사용자로 웹 브라우저에서 AWS 계정에 로그인합니다.
+
+2 - [이 URL](https://us-west-2.console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/quickcreate?templateURL=https://s3.us-east-2.amazonaws.com/clickhouse-public-resources.clickhouse.cloud/cf-templates/secure-s3.yaml&stackName=ClickHouseSecureS3)로 이동하여 CloudFormation 스택을 생성합니다.
+
+3 - ClickHouse 서비스에 해당하는 **IAM Role**을 입력(또는 붙여넣기)합니다.
+
+4 - CloudFormation 스택을 구성합니다. 아래는 이러한 매개변수에 대한 추가 정보입니다.
+
+| Parameter | Default Value | Description |
+| :--- | :----: | :---- |
+| RoleName | ClickHouseAccess-001 | ClickHouse Cloud가 S3 버킷에 접근하는 데 사용할 새로운 역할의 이름입니다. |
+| Role Session Name | * | 역할 세션 이름은 버킷을 추가로 보호하기 위한 공유 비밀로 사용될 수 있습니다. |
+| ClickHouse Instance Roles | | 이 Secure S3 통합을 사용할 수 있는 ClickHouse 서비스 IAM 역할의 쉼표로 구분된 목록입니다. |
+| Bucket Access | Read | 제공된 버킷의 접근 수준을 설정합니다. |
+| Bucket Names | | 이 역할이 접근할 수 있는 **버킷 이름**의 쉼표로 구분된 목록입니다. |
+
+*Note*: 전체 버킷 Arn을 입력하지 말고 버킷 이름만 입력하세요.
+
+5 - **I acknowledge that AWS CloudFormation might create IAM resources with custom names.** 체크박스를 선택합니다.
+
+6 - 오른쪽 하단의 **Create stack** 버튼을 클릭합니다.
+
+7 - CloudFormation 스택이 오류 없이 완료되는지 확인합니다.
+
+8 - CloudFormation 스택의 **Outputs**를 선택합니다.
+
+9 - 이 통합을 위한 **RoleArn** 값을 복사합니다. 이 값이 S3 버킷에 접근하는 데 필요합니다.
+
+
+
+#### Option 2: Manually create IAM role {#option-2-manually-create-iam-role}
+
+1 - IAM 역할을 생성하고 관리할 권한이 있는 IAM 사용자로 웹 브라우저에서 AWS 계정에 로그인합니다.
+
+2 - IAM 서비스 콘솔로 이동합니다.
+
+3 - 다음 IAM 및 신뢰 정책을 사용하여 새로운 IAM 역할을 생성합니다.
+
+신뢰 정책 (여기서 `{ClickHouse_IAM_ARN}`을 ClickHouse 인스턴스에 해당하는 IAM 역할 Arn으로 교체하십시오):
+
+```json
+{
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Effect": "Allow",
+ "Principal": {
+ "AWS": "{ClickHouse_IAM_ARN}"
+ },
+ "Action": "sts:AssumeRole"
+ }
+ ]
+}
+```
+
+IAM 정책 (여기서 `{BUCKET_NAME}`을 버킷 이름으로 교체하십시오):
+
+```json
+{
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Action": [
+ "s3:GetBucketLocation",
+ "s3:ListBucket"
+ ],
+ "Resource": [
+ "arn:aws:s3:::{BUCKET_NAME}"
+ ],
+ "Effect": "Allow"
+ },
+ {
+ "Action": [
+ "s3:Get*",
+ "s3:List*"
+ ],
+ "Resource": [
+ "arn:aws:s3:::{BUCKET_NAME}/*"
+ ],
+ "Effect": "Allow"
+ }
+ ]
+}
+```
+
+4 - 생성 후 새로운 **IAM Role Arn**을 복사합니다. 이 값이 S3 버킷에 접근하는 데 필요합니다.
+
+## Access your S3 bucket with the ClickHouseAccess role {#access-your-s3-bucket-with-the-clickhouseaccess-role}
+
+ClickHouse Cloud는 S3 테이블 함수의 일부로 `extra_credentials`를 지정할 수 있는 새로운 기능을 제공합니다. 아래는 위에서 복사한 새로 생성된 역할을 사용하여 쿼리를 실행하는 방법의 예입니다.
+
+```sql
+DESCRIBE TABLE s3('https://s3.amazonaws.com/BUCKETNAME/BUCKETOBJECT.csv','CSVWithNames',extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/ClickHouseAccessRole-001'))
+```
+
+아래는 `role_session_name`을 공유 비밀로 사용하여 버킷에서 데이터를 쿼리하는 예제 쿼리입니다. `role_session_name`이 정확하지 않으면 이 작업은 실패합니다.
+
+```sql
+DESCRIBE TABLE s3('https://s3.amazonaws.com/BUCKETNAME/BUCKETOBJECT.csv','CSVWithNames',extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/ClickHouseAccessRole-001', role_session_name = 'secret-role-name'))
+```
+
+:::note
+데이터 전송 비용을 줄이기 위해 소스 S3가 ClickHouse Cloud 서비스와 동일한 리전에 있는 것이 좋습니다. 추가 정보는 [S3 가격]( https://aws.amazon.com/s3/pricing/)을 참조하십시오.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/02_accessing-s3-data-securely.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/02_accessing-s3-data-securely.md.hash
new file mode 100644
index 00000000000..379341635ff
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/02_accessing-s3-data-securely.md.hash
@@ -0,0 +1 @@
+052f097bd3b3bad4
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/_category_.json
new file mode 100644
index 00000000000..3810dd5bc80
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Data sources",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/index.md
new file mode 100644
index 00000000000..258c5e5f6cd
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/index.md
@@ -0,0 +1,32 @@
+---
+'slug': '/cloud/guides/data-sources'
+'title': '데이터 소스'
+'hide_title': true
+'description': 'ClickHouse Cloud 가이드 섹션의 목차 페이지'
+'doc_type': 'landing-page'
+'keywords':
+- 'cloud guides'
+- 'documentation'
+- 'how-to'
+- 'cloud features'
+- 'tutorials'
+---
+
+## Cloud 통합 {#cloud-integrations}
+
+이 섹션은 추가 구성이 필요한 외부 데이터 소스와 ClickHouse Cloud를 통합하기 위한 가이드 및 참고 자료를 포함합니다.
+
+| 페이지 | 설명 |
+|------------------------------------------------------------------|-----------------------------------------------------------------------|
+| [Cloud IP 주소](/manage/data-sources/cloud-endpoints-api) | 일부 테이블 함수 및 연결에 필요한 네트워킹 정보 |
+| [S3 데이터 안전하게 액세스하기](/cloud/data-sources/secure-s3) | 역할 기반 액세스를 사용하여 AWS S3의 외부 데이터 소스에 액세스하기 |
+
+## 외부 데이터 소스를 위한 추가 연결 {#additional-connections-for-external-data-sources}
+
+### 데이터 수집을 위한 ClickPipes {#clickpipes-for-data-ingestion}
+
+ClickPipes는 고객이 여러 소스에서 스트리밍 데이터를 쉽게 통합할 수 있게 해줍니다. 추가 정보는 통합 문서의 [ClickPipes](/integrations/clickpipes)를 참조하십시오.
+
+### 외부 데이터 소스로서의 테이블 함수 {#table-functions-as-external-data-sources}
+
+ClickHouse는 외부 데이터 소스에 액세스하기 위해 여러 가지 테이블 함수를 지원합니다. 자세한 내용은 SQL 참조 섹션의 [테이블 함수](/sql-reference/table-functions)를 참조하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/index.md.hash
new file mode 100644
index 00000000000..a5dd922952b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/data_sources/index.md.hash
@@ -0,0 +1 @@
+17adb1bfb7f75d4a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/index.md
new file mode 100644
index 00000000000..dc757b46a4f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/index.md
@@ -0,0 +1,55 @@
+---
+'slug': '/cloud/guides'
+'title': '가이드'
+'hide_title': true
+'description': 'ClickHouse Cloud 가이드 섹션의 목차 페이지'
+'doc_type': 'landing-page'
+'keywords':
+- 'cloud guides'
+- 'documentation'
+- 'how-to'
+- 'cloud features'
+- 'tutorials'
+---
+
+
+| 페이지 | 설명 |
+|-----|-----|
+| [개요](/cloud/manage/backups/overview) | ClickHouse Cloud에서의 백업 개요를 제공합니다. |
+| [UI에서 백업 생성 또는 복원](/cloud/manage/backups/backup-restore-via-ui) | UI를 사용하여 자신의 버킷으로 백업을 생성하거나 복원하는 방법을 설명하는 페이지입니다. |
+| [명령을 사용하여 백업 생성 또는 복원](/cloud/manage/backups/backup-restore-via-commands) | 명령을 사용하여 자신의 버킷으로 백업을 생성하거나 복원하는 방법을 설명하는 페이지입니다. |
+| [S3 데이터 안전하게 접근하기](/cloud/data-sources/secure-s3) | 이 문서에서는 ClickHouse Cloud 고객이 Amazon Simple Storage Service(S3)에 인증하고 데이터를 안전하게 접근하기 위해 역할 기반 접근 방식을 활용하는 방법을 보여줍니다. |
+| [아키텍처](/cloud/reference/byoc/architecture) | 자신의 클라우드 인프라스트럭처에 ClickHouse를 배포합니다. |
+| [AWS PrivateLink](/manage/security/aws-privatelink) | 이 문서는 AWS PrivateLink를 사용하여 ClickHouse Cloud에 연결하는 방법을 설명합니다. |
+| [Azure Private Link](/cloud/security/azure-privatelink) | Azure Private Link 설정 방법 |
+| [AWS의 BYOC FAQ](/cloud/reference/byoc/faq/aws) | 자신의 클라우드 인프라스트럭처에 ClickHouse를 배포합니다. |
+| [AWS의 BYOC 관측 가능성](/cloud/reference/byoc/observability) | 자신의 클라우드 인프라스트럭처에 ClickHouse를 배포합니다. |
+| [AWS의 BYOC 온보딩](/cloud/reference/byoc/onboarding/aws) | 자신의 클라우드 인프라스트럭처에 ClickHouse를 배포합니다. |
+| [BYOC 보안 플레이북](/cloud/security/audit-logging/byoc-security-playbook) | 이 페이지는 고객이 잠재적인 보안 사건을 식별하는 데 사용할 수 있는 방법을 설명합니다. |
+| [ClickHouse Cloud 프로덕션 준비 가이드](/cloud/guides/production-readiness) | 신속 시작에서 기업 준비 완료 ClickHouse Cloud 배포로 전환하는 조직을 위한 가이드입니다. |
+| [ClickHouse Government](/cloud/infrastructure/clickhouse-government) | ClickHouse Government 제공 개요 |
+| [ClickHouse Private](/cloud/infrastructure/clickhouse-private) | ClickHouse Private 제공 개요 |
+| [클라우드 호환성](/whats-new/cloud-compatibility) | 이 가이드는 ClickHouse Cloud에서 기대할 수 있는 기능적 및 운영적 개요를 제공합니다. |
+| [클라우드 IP 주소](/manage/data-sources/cloud-endpoints-api) | 이 페이지는 ClickHouse 내의 Cloud Endpoints API 보안 기능을 문서화합니다. 인증 및 권한 부여 메커니즘을 통해 ClickHouse 배포의 접근을 관리하여 보안을 강화하는 방법을 상세히 설명합니다. |
+| [공통 접근 관리 쿼리](/cloud/security/common-access-management-queries) | 이 문서에서는 SQL 사용자 및 역할 정의의 기본 및 이들 권한을 데이터베이스, 테이블, 행 및 컬럼에 적용하는 방법을 보여줍니다. |
+| [백업 스케줄 구성](/cloud/manage/backups/configurable-backups) | 백업 구성을 보여주는 가이드 |
+| [콘솔 감사 로그](/cloud/security/audit-logging/console-audit-log) | 이 페이지에서는 사용자가 클라우드 감사 로그를 검토하는 방법을 설명합니다. |
+| [데이터 암호화](/cloud/security/cmek) | ClickHouse Cloud에서의 데이터 암호화에 대해 더 알아보세요. |
+| [ClickHouse에서의 데이터 마스킹](/cloud/guides/data-masking) | ClickHouse에서의 데이터 마스킹에 대한 가이드 |
+| [데이터베이스 감사 로그](/cloud/security/audit-logging/database-audit-log) | 이 페이지에서는 사용자가 데이터베이스 감사 로그를 검토하는 방법을 설명합니다. |
+| [백업을 자신의 클라우드 계정으로 내보내기](/cloud/manage/backups/export-backups-to-own-cloud-account) | 자신의 클라우드 계정으로 백업을 내보내는 방법을 설명합니다. |
+| [연결 세부정보 수집](/cloud/guides/sql-console/gather-connection-details) | 연결 세부정보를 수집합니다. |
+| [GCP 프라이빗 서비스 연결](/manage/security/gcp-private-service-connect) | 이 문서는 Google Cloud Platform (GCP) Private Service Connect (PSC)를 사용하여 ClickHouse Cloud에 연결하는 방법과 ClickHouse Cloud 서비스에 대한 GCP PSC 주소 외의 주소로부터의 접근을 비활성화하는 방법을 설명합니다. |
+| [HIPAA 온보딩](/cloud/security/compliance/hipaa-onboarding) | HIPAA 준수 서비스로 온보딩하는 방법에 대해 더 알아보세요. |
+| [클라우드 사용자 관리](/cloud/security/manage-cloud-users) | 이 페이지에서는 관리자가 사용자를 추가하고, 할당을 관리하고, 사용자를 제거하는 방법을 설명합니다. |
+| [데이터베이스 사용자 관리](/cloud/security/manage-database-users) | 이 페이지에서는 관리자가 데이터베이스 사용자를 추가하고, 할당을 관리하고, 데이터베이스 사용자를 제거하는 방법을 설명합니다. |
+| [내 계정 관리](/cloud/security/manage-my-account) | 이 페이지에서는 사용자가 초대를 수락하고, MFA 설정을 관리하며, 비밀번호를 재설정하는 방법을 설명합니다. |
+| [SQL 콘솔 역할 할당 관리](/cloud/guides/sql-console/manage-sql-console-role-assignments) | SQL 콘솔 역할 할당을 관리하는 방법을 보여주는 가이드 |
+| [다중 테넌시](/cloud/bestpractices/multi-tenancy) | 다중 테넌시 구현을 위한 모범 사례 |
+| [개요](/cloud/reference/byoc/overview) | 자신의 클라우드 인프라스트럭처에 ClickHouse를 배포합니다. |
+| [PCI 온보딩](/cloud/security/compliance/pci-onboarding) | PCI 준수 서비스에 온보딩하는 방법에 대해 더 알아보세요. |
+| [쿼리 API 엔드포인트](/cloud/get-started/query-endpoints) | 저장된 쿼리로부터 REST API 엔드포인트를 쉽게 생성합니다. |
+| [SAML SSO 설정](/cloud/security/saml-setup) | ClickHouse Cloud에서 SAML SSO를 설정하는 방법 |
+| [IP 필터 설정](/cloud/security/setting-ip-filters) | 이 페이지에서는 ClickHouse Cloud에서 ClickHouse 서비스에 대한 접근을 제어하기 위해 IP 필터를 설정하는 방법을 설명합니다. |
+| [사용 한계](/cloud/bestpractices/usage-limits) | ClickHouse Cloud에서 권장되는 사용 한계를 설명합니다. |
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/index.md.hash
new file mode 100644
index 00000000000..05623013642
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/index.md.hash
@@ -0,0 +1 @@
+1cf1fb51d1d5c1e5
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/02_clickhouse-private.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/02_clickhouse-private.md
new file mode 100644
index 00000000000..7eeddd81fde
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/02_clickhouse-private.md
@@ -0,0 +1,84 @@
+---
+'title': 'ClickHouse Private'
+'slug': '/cloud/infrastructure/clickhouse-private'
+'keywords':
+- 'private'
+- 'on-prem'
+'description': 'ClickHouse Private 제공 개요'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import private_gov_architecture from '@site/static/images/cloud/reference/private-gov-architecture.png';
+
+## 개요 {#overview}
+
+ClickHouse Private는 ClickHouse Cloud에서 실행되는 동일한 독점 버전의 ClickHouse로 구성된 자체 배포 패키지이며, 컴퓨팅과 저장소의 분리를 위해 구성됩니다. 이는 S3 호환 스토리지를 갖춘 Kubernetes 환경에 배포됩니다.
+
+현재 이 패키지는 AWS 및 IBM Cloud에서 사용할 수 있으며, 곧 베어 메탈 배포가 예정되어 있습니다.
+
+:::note 주의
+ClickHouse Private는 가장 엄격한 규정 준수 요구 사항이 있는 대규모 기업을 위해 설계되었으며, 전용 인프라에 대한 완전한 제어 및 관리를 제공합니다. 이 옵션은 [저희에게 문의](https://clickhouse.com/company/contact?loc=nav)하여만 이용 가능합니다.
+:::
+
+## 오픈 소스에 대한 장점 {#benefits-over-os}
+
+다음 기능은 ClickHouse Private가 자체 관리 오픈 소스 배포와 차별화됩니다:
+
+
+
+### 향상된 성능 {#enhanced-performance}
+- 컴퓨팅과 저장소의 네이티브 분리
+- [공유 머지 트리](/cloud/reference/shared-merge-tree) 및 [창고](/cloud/reference/warehouses) 기능과 같은 독점 클라우드 기능
+
+### 다양한 사용 사례 및 조건에서 테스트 및 검증됨 {#tested-proven-through-variety-of-use-cases}
+- ClickHouse Cloud에서 완전히 테스트 및 검증됨
+
+### 새로운 기능이 정기적으로 추가되는 완전한 기능 로드맵 {#full-featured-roadmap}
+곧 추가될 기능은 다음과 같습니다:
+- 프로그램적으로 리소스를 관리하기 위한 API
+ - 자동 백업
+ - 자동 수직 스케일링 작업
+- ID 공급자 통합
+
+
+
+## 아키텍처 {#architecture}
+
+ClickHouse Private는 배포 환경 내에서 완전히 자급자족하며, Kubernetes 내에서 관리되는 컴퓨팅과 S3 호환 스토리지 솔루션 내의 저장소로 구성됩니다.
+
+
+
+
+
+
+
+## 온보딩 프로세스 {#onboarding-process}
+
+고객은 [저희에게 연락](https://clickhouse.com/company/contact?loc=nav)하여 온보딩을 시작할 수 있습니다. 적격 고객에게는 상세한 환경 구축 가이드와 배포를 위한 이미지 및 Helm 차트에 대한 액세스를 제공합니다.
+
+## 일반 요구 사항 {#general-requirements}
+
+이 섹션은 ClickHouse Private 배포에 필요한 리소스에 대한 개요를 제공합니다. 특정 배포 가이드는 온보딩의 일환으로 제공됩니다. 인스턴스/서버 유형 및 크기는 사용 사례에 따라 다릅니다.
+
+### AWS에서의 ClickHouse Private {#clickhouse-private-aws}
+
+필요한 리소스:
+- 이미지를 수신하기 위한 [ECR](https://docs.aws.amazon.com/ecr/)
+- [CNI](https://github.com/aws/amazon-vpc-cni-k8s), [EBS CSI 드라이버](https://github.com/kubernetes-sigs/aws-ebs-csi-driver), [DNS](https://docs.aws.amazon.com/eks/latest/userguide/managing-coredns.html), [클러스터 오토스케일러](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md), [IMDS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html) 인증을 위한 [OIDC](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) 공급자를 갖춘 [EKS](https://docs.aws.amazon.com/eks/) 클러스터
+- 서버 노드는 Amazon Linux에서 실행
+- 운영자는 x86 노드 그룹 필요
+- EKS 클러스터와 동일한 리전 내의 S3 버킷
+- 인그레스가 필요한 경우 NLB도 구성
+- clickhouse-server/keeper 작업을 위한 ClickHouse 클러스터당 하나의 AWS 역할
+
+### IBM Cloud에서의 ClickHouse Private {#clickhouse-private-ibm-cloud}
+
+필요한 리소스:
+- 이미지를 수신하기 위한 [컨테이너 레지스트리](https://cloud.ibm.com/docs/Registry?topic=Registry-getting-started)
+- [CNI](https://www.ibm.com/docs/en/cloud-private/3.2.x?topic=networking-kubernetes-network-model), [VPC용 클라우드 블록 스토리지](https://cloud.ibm.com/docs/containers?topic=containers-vpc-block), [클라우드 DNS](https://www.ibm.com/products/dns), [클러스터 오토스케일러](https://cloud.ibm.com/docs/containers?topic=containers-cluster-scaling-install-addon-enable)를 갖춘 [클라우드 쿠버네티스 서비스](https://cloud.ibm.com/docs/containers?topic=containers-getting-started)
+- 서버 노드는 Ubuntu에서 실행
+- 운영자는 x86 노드 그룹 필요
+- [클라우드 오브젝트 스토리지](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-getting-started-cloud-object-storage)가 클라우드 쿠버네티스 서비스 클러스터와 동일한 리전 내에 있음
+- 인그레스가 필요한 경우 NLB도 구성
+- clickhouse-server/keeper 작업을 위한 ClickHouse 클러스터당 하나의 서비스 계정
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/02_clickhouse-private.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/02_clickhouse-private.md.hash
new file mode 100644
index 00000000000..411a50ba3f2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/02_clickhouse-private.md.hash
@@ -0,0 +1 @@
+5b89242333b71f9f
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/03_clickhouse-government.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/03_clickhouse-government.md
new file mode 100644
index 00000000000..8823cfd59d7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/03_clickhouse-government.md
@@ -0,0 +1,79 @@
+---
+'title': 'ClickHouse 정부'
+'slug': '/cloud/infrastructure/clickhouse-government'
+'keywords':
+- 'government'
+- 'fips'
+- 'fedramp'
+- 'gov cloud'
+'description': 'ClickHouse 정부 제공 개요'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import private_gov_architecture from '@site/static/images/cloud/reference/private-gov-architecture.png';
+
+## 개요 {#overview}
+
+ClickHouse Government는 ClickHouse Cloud에서 실행되고 ClickHouse Operator로 구성된 동일한 독점 버전의 ClickHouse로 이루어진 자가 배포 가능한 패키지로, 계산 및 스토리지를 분리하고 정부 기관 및 공공 부문 조직의 엄격한 요구 사항을 충족하도록 강화되었습니다. 이 패키지는 S3 호환 스토리지가 있는 Kubernetes 환경에 배포됩니다.
+
+이 패키지는 현재 AWS에서 사용 가능하며, 곧 bare metal 배포가 제공될 예정입니다.
+
+:::note 노트
+ClickHouse Government는 정부 기관, 공공 부문 조직 또는 이러한 기관 및 조직에 판매하는 클라우드 소프트웨어 회사를 위해 설계되었으며, 전용 인프라에 대한 완전한 제어 및 관리 기능을 제공합니다. 이 옵션은 [문의하기](https://clickhouse.com/government)를 통해서만 사용할 수 있습니다.
+:::
+
+## 오픈소스 대비 장점 {#benefits-over-os}
+
+다음 기능들은 ClickHouse Government를 자가 관리하는 오픈소스 배포와 차별화합니다:
+
+
+
+### 향상된 성능 {#enhanced-performance}
+- 계산과 저장소의 본질적인 분리
+- [공유 머지 트리](/cloud/reference/shared-merge-tree) 및 [웨어하우스](/cloud/reference/warehouses) 기능과 같은 독점 클라우드 기능
+
+### 다양한 사용 사례 및 조건에서 테스트 및 검증됨 {#tested-proven}
+- ClickHouse Cloud에서 완전히 테스트되고 검증됨
+
+### 준수 패키지 {#compliance-package}
+- 운영 승인(ATO)을 가속화하기 위한 [NIST 위험 관리 프레임워크 (RMF)](https://csrc.nist.gov/projects/risk-management/about-rmf) 문서
+
+### 새로운 기능이 정기적으로 추가되는 전체 기능 로드맵 {#full-featured-roadmap}
+곧 추가될 기능은 다음과 같습니다:
+- 자원을 프로그래밍적으로 관리할 수 있는 API
+ - 자동 백업
+ - 자동 수직 스케일링 작업
+- 아이덴티티 공급자 통합
+
+
+
+## 아키텍처 {#architecture}
+
+ClickHouse Government는 배포 환경 내에서 완전히 자급자족하며 Kubernetes 내에서 관리되는 계산과 S3 호환 스토리지 솔루션 내의 스토리지로 구성됩니다.
+
+
+
+
+
+
+
+## 온보딩 프로세스 {#onboarding-process}
+
+고객은 [문의하기](https://clickhouse.com/government)를 통해 온보딩을 시작할 수 있습니다. 자격이 있는 고객에게는 상세한 환경 구축 가이드와 배포를 위한 이미지 및 Helm 차트에 대한 액세스를 제공합니다.
+
+## 일반 요구 사항 {#general-requirements}
+
+이 섹션은 ClickHouse Government를 배포하는 데 필요한 자원에 대한 개요를 제공하기 위한 것입니다. 특정 배포 가이드는 온보딩의 일환으로 제공됩니다. 인스턴스/서버 유형 및 크기는 사용 경우에 따라 다릅니다.
+
+### AWS의 ClickHouse Government {#clickhouse-government-aws}
+
+필요한 자원:
+- 이미지를 수신할 [ECR](https://docs.aws.amazon.com/ecr/) 및 Helm 차트
+- FIPS 준수 인증서를 생성할 수 있는 인증 기관
+- [CNI](https://github.com/aws/amazon-vpc-cni-k8s), [EBS CSI 드라이버](https://github.com/kubernetes-sigs/aws-ebs-csi-driver), [DNS](https://docs.aws.amazon.com/eks/latest/userguide/managing-coredns.html), [클러스터 오토스케일러](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md), 인증을 위한 [IMDS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html) 및 [OIDC](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) 공급자가 있는 [EKS](https://docs.aws.amazon.com/eks/) 클러스터
+- 서버 노드는 Amazon Linux에서 실행됨
+- 운영자는 x86 노드 그룹을 요구함
+- EKS 클러스터와 같은 지역에 있는 S3 버킷
+- 수신이 필요하면 NLB도 구성
+- clickhouse-server/keeper 작업을 위한 ClickHouse 클러스터당 하나의 AWS 역할
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/03_clickhouse-government.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/03_clickhouse-government.md.hash
new file mode 100644
index 00000000000..088e6f82d01
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/03_clickhouse-government.md.hash
@@ -0,0 +1 @@
+7f56b29793eb84d0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/_category_.json
new file mode 100644
index 00000000000..cdb3db52211
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Deployment options",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/01_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/01_overview.md
new file mode 100644
index 00000000000..92ab411fa90
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/01_overview.md
@@ -0,0 +1,57 @@
+---
+'title': '개요'
+'slug': '/cloud/reference/byoc/overview'
+'sidebar_label': '개요'
+'keywords':
+- 'BYOC'
+- 'cloud'
+- 'bring your own cloud'
+'description': '자신의 클라우드 인프라에 ClickHouse 배포하기'
+'doc_type': 'reference'
+---
+
+## 개요 {#overview}
+
+BYOC (Bring Your Own Cloud)는 ClickHouse Cloud를 귀하의 클라우드 인프라스트럭처에 배포할 수 있도록 허용합니다. 이는 ClickHouse Cloud 관리 서비스 사용을 방해하는 특정 요구 사항이나 제약이 있는 경우 유용합니다.
+
+> **접속을 원하시면, [문의해 주십시오](https://clickhouse.com/cloud/bring-your-own-cloud).** 추가 정보는 [서비스 약관](https://clickhouse.com/legal/agreements/terms-of-service)을 참조하시기 바랍니다.
+
+BYOC는 현재 AWS에서만 지원됩니다. GCP 및 Azure의 대기자 명단에 [가입하실 수 있습니다](https://clickhouse.com/cloud/bring-your-own-cloud).
+
+:::note
+BYOC는 대규모 배포를 위해 특별히 설계되었으며, 고객이 약정 계약에 서명해야 합니다.
+:::
+
+## 용어집 {#glossary}
+
+- **ClickHouse VPC:** ClickHouse Cloud가 소유한 VPC입니다.
+- **고객 BYOC VPC:** 고객의 클라우드 계정이 소유하고 ClickHouse Cloud가 프로비저닝 및 관리하는 VPC로, ClickHouse Cloud BYOC 배포에 전념하고 있습니다.
+- **고객 VPC**: 고객의 클라우드 계정이 소유한 다른 VPC로, 고객 BYOC VPC에 연결해야 하는 애플리케이션에 사용됩니다.
+
+## 기능 {#features}
+
+### 지원되는 기능 {#supported-features}
+
+- **SharedMergeTree**: ClickHouse Cloud와 BYOC는 동일한 바이너리 및 구성을 사용합니다. 따라서 SharedMergeTree와 같은 ClickHouse 핵심의 모든 기능이 BYOC에서 지원됩니다.
+- **서비스 상태 관리를 위한 콘솔 액세스**:
+ - 시작, 중지 및 종료와 같은 작업을 지원합니다.
+ - 서비스와 상태를 볼 수 있습니다.
+- **백업 및 복원.**
+- **수동으로 수직 및 수평 확장.**
+- **유휴 상태.**
+- **창고**: 컴퓨트-컴퓨트 분리
+- **Tailscale을 통한 제로 트러스트 네트워크.**
+- **모니터링**:
+ - 클라우드 콘솔에는 서비스 건강 모니터링을 위한 기본 제공 건강 대시보드가 포함되어 있습니다.
+ - Prometheus, Grafana 및 Datadog와 함께 중앙 집중식 모니터링을 위한 Prometheus 스크래핑. 설정 지침은 [Prometheus 문서](/integrations/prometheus)를 참조하십시오.
+- **VPC 피어링.**
+- **통합**: 전체 목록은 [이 페이지](/integrations)를 참조하십시오.
+- **보안 S3.**
+- **[AWS PrivateLink](https://aws.amazon.com/privatelink/).**
+
+### 계획된 기능 (현재 비지원) {#planned-features-currently-unsupported}
+
+- [AWS KMS](https://aws.amazon.com/kms/) 또는 CMEK (고객 관리 암호화 키)
+- 인제스트를 위한 ClickPipes
+- 자동 확장
+- MySQL 인터페이스
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/01_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/01_overview.md.hash
new file mode 100644
index 00000000000..198c070436f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/01_overview.md.hash
@@ -0,0 +1 @@
+b06a7a2fa663ac12
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/02_architecture.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/02_architecture.md
new file mode 100644
index 00000000000..912c5d86e2c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/02_architecture.md
@@ -0,0 +1,24 @@
+---
+'title': '아키텍처'
+'slug': '/cloud/reference/byoc/architecture'
+'sidebar_label': '아키텍처'
+'keywords':
+- 'BYOC'
+- 'cloud'
+- 'bring your own cloud'
+'description': '자신의 클라우드 인프라에 ClickHouse 배포하기'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import byoc1 from '@site/static/images/cloud/reference/byoc-1.png';
+
+## Architecture {#architecture}
+
+메트릭 및 로그는 고객의 BYOC VPC 내에 저장됩니다. 로그는 현재 로컬에서 EBS에 저장됩니다. 향후 업데이트에서는 로그가 고객의 BYOC VPC 내의 ClickHouse 서비스인 LogHouse에 저장될 예정입니다. 메트릭은 고객의 BYOC VPC 내에 로컬로 저장된 Prometheus 및 Thanos 스택을 통해 구현됩니다.
+
+
+
+
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/02_architecture.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/02_architecture.md.hash
new file mode 100644
index 00000000000..dbec4dadf8a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/02_architecture.md.hash
@@ -0,0 +1 @@
+ff3a5deecf58fbae
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/01_aws.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/01_aws.md
new file mode 100644
index 00000000000..cff706e4723
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/01_aws.md
@@ -0,0 +1,259 @@
+---
+'title': 'AWS용 BYOC 온보딩'
+'slug': '/cloud/reference/byoc/onboarding/aws'
+'sidebar_label': 'AWS'
+'keywords':
+- 'BYOC'
+- 'cloud'
+- 'bring your own cloud'
+- 'AWS'
+'description': '자신의 클라우드 인프라에서 ClickHouse 배포하기'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import byoc_vpcpeering from '@site/static/images/cloud/reference/byoc-vpcpeering-1.png';
+import byoc_vpcpeering2 from '@site/static/images/cloud/reference/byoc-vpcpeering-2.png';
+import byoc_vpcpeering3 from '@site/static/images/cloud/reference/byoc-vpcpeering-3.png';
+import byoc_vpcpeering4 from '@site/static/images/cloud/reference/byoc-vpcpeering-4.png';
+import byoc_subnet_1 from '@site/static/images/cloud/reference/byoc-subnet-1.png';
+import byoc_subnet_2 from '@site/static/images/cloud/reference/byoc-subnet-2.png';
+import byoc_s3_endpoint from '@site/static/images/cloud/reference/byoc-s3-endpoint.png'
+
+## 온보딩 프로세스 {#onboarding-process}
+
+고객은 [우리에](https://clickhouse.com/cloud/bring-your-own-cloud) 문의하여 온보딩 프로세스를 시작할 수 있습니다. 고객은 전용 AWS 계정을 보유하고 사용할 지역을 알아야 합니다. 현재 ClickHouse Cloud에 대해 지원하는 지역에서만 BYOC 서비스를 시작할 수 있습니다.
+
+### AWS 계정 준비하기 {#prepare-an-aws-account}
+
+고객은 ClickHouse BYOC 배포를 호스팅하기 위해 전용 AWS 계정을 준비할 것을 권장합니다. 이는 더 나은 격리를 보장하기 위함입니다. 그러나 공유 계정 및 기존 VPC를 사용하는 것도 가능합니다. 아래의 *BYOC 인프라 설정*에서 자세한 내용을 확인하십시오.
+
+이 계정과 초기 조직 관리자 이메일로 ClickHouse 지원에 문의할 수 있습니다.
+
+### BYOC 설정 초기화 {#initialize-byoc-setup}
+
+초기 BYOC 설정은 CloudFormation 템플릿이나 Terraform 모듈을 사용하여 수행할 수 있습니다. 두 접근 방식 모두 동일한 IAM 역할을 생성하여 ClickHouse Cloud의 BYOC 컨트롤러가 인프라를 관리할 수 있도록 합니다. ClickHouse를 실행하는 데 필요한 S3, VPC 및 컴퓨팅 리소스는 이 초기 설정에 포함되지 않는 점에 유의하십시오.
+
+#### CloudFormation 템플릿 {#cloudformation-template}
+
+[BYOC CloudFormation 템플릿](https://s3.us-east-2.amazonaws.com/clickhouse-public-resources.clickhouse.cloud/cf-templates/byoc.yaml)
+
+#### Terraform 모듈 {#terraform-module}
+
+[BYOC Terraform 모듈](https://s3.us-east-2.amazonaws.com/clickhouse-public-resources.clickhouse.cloud/tf/byoc.tar.gz)
+
+```hcl
+module "clickhouse_onboarding" {
+ source = "https://s3.us-east-2.amazonaws.com/clickhouse-public-resources.clickhouse.cloud/tf/byoc.tar.gz"
+ byoc_env = "production"
+}
+```
+
+
+
+### BYOC 인프라 설정 {#setup-byoc-infrastructure}
+
+CloudFormation 스택을 생성한 후, 클라우드 콘솔에서 S3, VPC 및 EKS 클러스터를 포함한 인프라를 설정하라는 메시지가 표시됩니다. 이 단계에서 특정 구성 사항을 결정해야 하며, 나중에 변경할 수 없습니다. 구체적으로:
+
+- **사용할 지역**: ClickHouse Cloud에 대해 우리가 지원하는 모든 [공용 지역](/cloud/reference/supported-regions) 중 하나를 선택할 수 있습니다.
+- **BYOC에 대한 VPC CIDR 범위**: 기본적으로 BYOC VPC CIDR 범위에 `10.0.0.0/16`을 사용합니다. 다른 계정과 VPC 피어링을 계획하는 경우 CIDR 범위가 겹치지 않도록 해야 합니다. BYOC를 위한 적절한 CIDR 범위를 할당하며, 최소 크기는 `/22` 이상이어야 합니다.
+- **BYOC VPC의 가용성 영역**: VPC 피어링을 사용할 계획이 있는 경우 소스 계정과 BYOC 계정 간의 가용성 영역을 맞추는 것이 교차 AZ 트래픽 비용을 줄이는데 도움이 될 수 있습니다. AWS에서 가용성 영역 접미사(`a, b, c`)는 계정별로 다른 물리적 영역 ID를 나타낼 수 있습니다. 자세한 내용은 [AWS 가이드](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.html)를 참조하십시오.
+
+#### 고객 관리 VPC {#customer-managed-vpc}
+기본적으로 ClickHouse Cloud는 BYOC 배포를 위한 더 나은 격리를 제공하기 위해 전용 VPC를 프로비저닝합니다. 그러나 기존 계정의 VPC를 사용할 수도 있습니다. 이는 특정 구성 세팅을 요구하며 ClickHouse 지원 팀과 조정해야 합니다.
+
+**기존 VPC 구성**
+1. ClickHouse Cloud에서 사용할 수 있도록 3개의 서로 다른 가용성 영역에 걸쳐 최소 3개의 프라이빗 서브넷을 할당합니다.
+2. 각 서브넷은 ClickHouse 배포에 대한 충분한 IP 주소를 제공하기 위해 최소 CIDR 범위 `/23` (예: 10.0.0.0/23)을 가져야 합니다.
+3. 각 서브넷에 태그 `kubernetes.io/role/internal-elb=1`을 추가하여 적절한 로드 밸런서 구성을 활성화합니다.
+
+
+
+
+
+
+
+
+
+
+
+
+
+4. S3 게이트웨이 엔드포인트 구성
+VPC에 이미 S3 게이트웨이 엔드포인트가 구성되어 있지 않은 경우, VPC와 Amazon S3 간의 안전하고 비공식적인 통신을 활성화하기 위해 하나를 생성해야 합니다. 이 엔드포인트는 ClickHouse 서비스가 공용 인터넷을 거치지 않고 S3에 접근할 수 있도록 합니다. 아래 스크린샷을 참조하여 구성 예시를 확인하십시오.
+
+
+
+
+
+
+
+**ClickHouse 지원에 문의**
+아래의 정보를 포함하여 지원 티켓을 생성합니다:
+
+* 귀하의 AWS 계정 ID
+* 서비스를 배포하려는 AWS 지역
+* 귀하의 VPC ID
+* ClickHouse에 할당한 프라이빗 서브넷 ID
+* 이러한 서브넷이 위치한 가용성 영역
+
+### 선택 사항: VPC 피어링 설정 {#optional-setup-vpc-peering}
+
+ClickHouse BYOC에 대한 VPC 피어링을 생성하거나 삭제하려면 다음 단계를 따릅니다:
+
+#### 단계 1: ClickHouse BYOC에 대한 프라이빗 로드 밸런서 활성화 {#step-1-enable-private-load-balancer-for-clickhouse-byoc}
+Private Load Balancer를 활성화하기 위해 ClickHouse 지원에 문의합니다.
+
+#### 단계 2: 피어링 연결 생성 {#step-2-create-a-peering-connection}
+1. ClickHouse BYOC 계정의 VPC 대시보드로 이동합니다.
+2. 피어링 연결을 선택합니다.
+3. 피어링 연결 생성을 클릭합니다.
+4. VPC 요청자를 ClickHouse VPC ID로 설정합니다.
+5. VPC 수락자를 대상 VPC ID로 설정합니다. (적용 가능한 경우 다른 계정을 선택)
+6. 피어링 연결 생성을 클릭합니다.
+
+
+
+
+
+
+
+#### 단계 3: 피어링 연결 요청 수락 {#step-3-accept-the-peering-connection-request}
+피어링 계정으로 이동하여 (VPC -> Peering connections -> Actions -> Accept request) 페이지에서 고객이 이 VPC 피어링 요청을 승인할 수 있습니다.
+
+
+
+
+
+
+
+#### 단계 4: ClickHouse VPC 라우트 테이블에 대상 추가 {#step-4-add-destination-to-clickhouse-vpc-route-tables}
+ClickHouse BYOC 계정에서,
+1. VPC 대시보드에서 라우트 테이블을 선택합니다.
+2. ClickHouse VPC ID를 검색합니다. 프라이빗 서브넷에 연결된 각 라우트 테이블을 편집합니다.
+3. 라우트 탭 아래의 편집 버튼을 클릭합니다.
+4. 다른 라우트를 추가를 클릭합니다.
+5. 대상을 위해 대상 VPC의 CIDR 범위를 입력합니다.
+6. "Peering Connection" 및 피어링 연결의 ID를 대상으로 선택합니다.
+
+
+
+
+
+
+
+#### 단계 5: 대상 VPC 라우트 테이블에 대상 추가 {#step-5-add-destination-to-the-target-vpc-route-tables}
+피어링 AWS 계정에서,
+1. VPC 대시보드에서 라우트 테이블을 선택합니다.
+2. 대상 VPC ID를 검색합니다.
+3. 라우트 탭 아래의 편집 버튼을 클릭합니다.
+4. 다른 라우트를 추가를 클릭합니다.
+5. 대상을 위해 ClickHouse VPC의 CIDR 범위를 입력합니다.
+6. "Peering Connection" 및 피어링 연결의 ID를 대상으로 선택합니다.
+
+
+
+
+
+
+
+#### 단계 6: 피어링된 VPC 접근을 허용하도록 보안 그룹 편집 {#step-6-edit-security-group-to-allow-peered-vpc-access}
+ClickHouse BYOC 계정에서, 피어링된 VPC에서 트래픽을 허용하도록 보안 그룹 설정을 업데이트해야 합니다. 귀하의 피어링된 VPC의 CIDR 범위를 포함하는 인바운드 규칙 추가를 요청하려면 ClickHouse 지원에 문의하십시오.
+
+---
+이제 ClickHouse 서비스에 피어링된 VPC에서 접근할 수 있어야 합니다.
+
+ClickHouse에 사적으로 접근하기 위해, 사용자의 피어링된 VPC에서 안전한 연결을 위해 프라이빗 로드 밸런서와 엔드포인트가 프로비저닝됩니다. 프라이빗 엔드포인트는 공개 엔드포인트 형식을 따르며 `-private` 접미사가 붙습니다. 예를 들어:
+- **공개 엔드포인트**: `h5ju65kv87.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud`
+- **프라이빗 엔드포인트**: `h5ju65kv87-private.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud`
+
+선택적으로, 피어링이 작동하는지 확인한 후 ClickHouse BYOC에 대한 공개 로드 밸런서 제거를 요청할 수 있습니다.
+
+## 업그레이드 프로세스 {#upgrade-process}
+
+우리는 ClickHouse 데이터베이스 버전 업그레이드, ClickHouse Operator, EKS 및 기타 구성 요소를 포함하여 소프트웨어를 정기적으로 업그레이드합니다.
+
+매끄러운 업그레이드(예: 롤링 업그레이드 및 재시작)를 목표로 하고 있지만, ClickHouse 버전 변경 및 EKS 노드 업그레이드와 같은 몇몇 업그레이드는 서비스에 영향을 미칠 수 있습니다. 고객은 유지 관리 창(예: 매주 화요일 오전 1:00 PDT)을 지정할 수 있으며, 이러한 업그레이드는 예정된 시간 동안만 발생하도록 할 수 있습니다.
+
+:::note
+유지 관리 창은 보안 및 취약성 수정에 적용되지 않습니다. 이러한 수정 사항은 오프 사이클 업그레이드로 처리되며, 적시에 커뮤니케이션하여 적절한 시간에 조정하고 운영 영향을 최소화합니다.
+:::
+
+## CloudFormation IAM 역할 {#cloudformation-iam-roles}
+
+### 부트스트랩 IAM 역할 {#bootstrap-iam-role}
+
+부트스트랩 IAM 역할에는 다음 권한이 포함됩니다:
+
+- **EC2 및 VPC 작업**: VPC 및 EKS 클러스터 설정에 필요합니다.
+- **S3 작업 (예: `s3:CreateBucket`)**: ClickHouse BYOC 저장소를 위한 버킷 생성을 위해 필요합니다.
+- **`route53:*` 권한**: Route 53에서 레코드 구성을 위한 외부 DNS에 필요합니다.
+- **IAM 작업 (예: `iam:CreatePolicy`)**: 컨트롤러가 추가 역할을 생성하는 데 필요합니다 (자세한 내용은 다음 섹션 참조).
+- **EKS 작업**: `clickhouse-cloud` 접두사로 시작하는 이름을 가진 리소스에만 제한됩니다.
+
+### 컨트롤러가 생성하는 추가 IAM 역할 {#additional-iam-roles-created-by-the-controller}
+
+CloudFormation을 통해 생성된 `ClickHouseManagementRole` 외에도, 컨트롤러는 여러 개의 추가 역할을 생성합니다.
+
+이 역할들은 고객의 EKS 클러스터 내에서 실행되는 애플리케이션에 의해 가정됩니다:
+- **상태 내보내기 역할**
+ - ClickHouse 클라우드에 서비스 건강 정보를 보고하는 ClickHouse 구성 요소입니다.
+ - ClickHouse Cloud가 소유하는 SQS 큐에 기록할 권한이 필요합니다.
+- **로드 밸런서 컨트롤러**
+ - 표준 AWS 로드 밸런서 컨트롤러입니다.
+ - ClickHouse 서비스용 볼륨을 관리하기 위한 EBS CSI 컨트롤러입니다.
+- **External-DNS**
+ - Route 53에 DNS 구성을 전파합니다.
+- **Cert-Manager**
+ - BYOC 서비스 도메인을 위한 TLS 인증서를 프로비저닝합니다.
+- **클러스터 오토스케일러**
+ - 필요에 따라 노드 그룹 크기를 조정합니다.
+
+**K8s-control-plane** 및 **k8s-worker** 역할은 AWS EKS 서비스에 의해 가정되도록 설계되었습니다.
+
+마지막으로, **`data-plane-mgmt`**는 ClickHouse Cloud 제어 평면 구성 요소가 `ClickHouseCluster` 및 Istio Virtual Service/Gateway와 같은 필요한 사용자 정의 리소스를 조정할 수 있도록 허용합니다.
+
+## 네트워크 경계 {#network-boundaries}
+
+이 섹션에서는 고객 BYOC VPC로의 다양한 네트워크 트래픽을 다룹니다:
+
+- **인바운드**: 고객 BYOC VPC로 들어오는 트래픽.
+- **아웃바운드**: 고객 BYOC VPC에서 시작되어 외부 대상으로 전송되는 트래픽.
+- **공용**: 공용 인터넷에서 접근 가능한 네트워크 엔드포인트.
+- **사적**: VPC 피어링, VPC Private Link 또는 Tailscale와 같은 사적 연결을 통해서만 접근 가능한 네트워크 엔드포인트.
+
+**Istio 인그레스는 ClickHouse 클라이언트 트래픽을 수용하기 위해 AWS NLB 뒤에 배포됩니다.**
+
+*인바운드, 공용 (사적일 수 있음)*
+
+Istio 인그레스 게이트웨이는 TLS를 종료합니다. 인증서는 CertManager가 Let's Encrypt로 제공하며, EKS 클러스터 내에서 비밀로 저장됩니다. Istio와 ClickHouse 간의 트래픽은 [AWS에 의해](https://docs.aws.amazon.com/whitepapers/latest/logical-separation/encrypting-data-at-rest-and--in-transit.html#:~:text=All%20network%20traffic%20between%20AWS,supported%20Amazon%20EC2%20instance%20types) 암호화됩니다. 동일한 VPC 내에 있기 때문입니다.
+
+기본적으로 인그레스는 IP 허용 목록 필터링과 함께 공개적으로 접근할 수 있습니다. 고객은 VPC 피어링을 구성하여 사적으로 만들고 공용 연결을 비활성화할 수 있습니다. 액세스를 제한하기 위해 [IP 필터](/cloud/security/setting-ip-filters)를 설정할 것을 강력히 권장합니다.
+
+### 접근 문제 해결 {#troubleshooting-access}
+
+*인바운드, 공용 (사적일 수 있음)*
+
+ClickHouse Cloud 엔지니어는 Tailscale을 통해 문제 해결 접근이 필요합니다. 그들은 BYOC 배포를 위해 적시에 인증서 기반 인증이 제공됩니다.
+
+### 청구 스크랩퍼 {#billing-scraper}
+
+*아웃바운드, 사적*
+
+청구 스크랩퍼는 ClickHouse에서 청구 데이터를 수집하여 ClickHouse Cloud가 소유하는 S3 버킷으로 전송합니다.
+
+이는 ClickHouse 서버 컨테이너와 함께 사이드카 형태로 실행되며, 주기적으로 CPU 및 메모리 메트릭을 스크랩합니다. 동일한 지역 내의 요청은 VPC 게이트웨이 서비스 엔드포인트를 통해 라우팅됩니다.
+
+### 경고 {#alerts}
+
+*아웃바운드, 공용*
+
+AlertManager는 고객의 ClickHouse 클러스터가 비정상일 때 ClickHouse Cloud에 경고를 전송하도록 구성됩니다.
+
+메트릭과 로그는 고객의 BYOC VPC 내에 저장됩니다. 로그는 현재 EBS에 로컬 저장됩니다. 향후 업데이트에서는 로그가 BYOC VPC 내의 ClickHouse 서비스인 LogHouse에 저장될 예정입니다. 메트릭은 Prometheus 및 Thanos 스택을 사용하며, BYOC VPC 내에 로컬로 저장됩니다.
+
+### 서비스 상태 {#service-state}
+
+*아웃바운드*
+
+상태 내보내기 도구는 ClickHouse 서비스 상태 정보를 ClickHouse Cloud가 소유하는 SQS에 전송합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/01_aws.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/01_aws.md.hash
new file mode 100644
index 00000000000..6fd1a1f3593
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/01_aws.md.hash
@@ -0,0 +1 @@
+7ee82e4f24e49b1d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/_category_.json
new file mode 100644
index 00000000000..d41dff8417f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/03_onboarding/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Onboarding",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/01_aws.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/01_aws.md
new file mode 100644
index 00000000000..dec715f0a58
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/01_aws.md
@@ -0,0 +1,78 @@
+---
+'title': 'AWS에서 BYOC FAQ'
+'slug': '/cloud/reference/byoc/faq/aws'
+'sidebar_label': 'AWS'
+'keywords':
+- 'BYOC'
+- 'cloud'
+- 'bring your own cloud'
+- 'AWS'
+'description': '자신의 클라우드 인프라스트럭처에 ClickHouse 배포하기'
+'doc_type': 'reference'
+---
+
+## FAQ {#faq}
+
+### Compute {#compute}
+
+
+이 단일 EKS 클러스터에서 여러 서비스를 만들 수 있나요?
+
+네. 인프라는 AWS 계정 및 리전 조합마다 한 번만 프로비저닝되면 됩니다.
+
+
+
+
+BYOC를 지원하는 리전은 어디인가요?
+
+BYOC는 ClickHouse Cloud와 동일한 [리전](/cloud/reference/supported-regions#aws-regions ) 집합을 지원합니다.
+
+
+
+
+리소스 오버헤드가 있을까요? ClickHouse 인스턴스 이외의 서비스를 실행하는 데 필요한 리소스는 무엇인가요?
+
+Clickhouse 인스턴스(ClickHouse 서버 및 ClickHouse Keeper) 외에도 `clickhouse-operator`, `aws-cluster-autoscaler`, Istio 등과 우리의 모니터링 스택을 실행합니다.
+
+현재, 이러한 워크로드를 실행하기 위해 전용 노드 그룹에 세 가지 m5.xlarge 노드(각 AZ마다 하나)를 보유하고 있습니다.
+
+
+
+### Network and security {#network-and-security}
+
+
+설치가 완료된 후 설치 중에 설정한 권한을 철회할 수 있나요?
+
+현재로서는 불가능합니다.
+
+
+
+
+ClickHouse 엔지니어가 문제 해결을 위해 고객 인프라에 접근할 수 있도록 미래의 보안 제어를 고려하셨나요?
+
+네. 고객이 클러스터에 대한 엔지니어의 접근을 승인할 수 있는 고객 제어 메커니즘 구현이 우리의 로드맵에 포함되어 있습니다. 현재로서는 엔지니어가 클러스터에 대한 적시 접근을 얻기 위해 우리의 내부 에스컬레이션 프로세스를 거쳐야 합니다. 이는 우리의 보안 팀에 의해 기록되고 감사됩니다.
+
+
+
+
+생성된 VPC IP 범위의 크기는 얼마인가요?
+
+기본적으로 BYOC VPC에 대해 `10.0.0.0/16`을 사용합니다. 우리는 잠재적인 미래 확장을 위해 최소 /22를 예약하는 것을 권장하지만, 크기를 제한하는 것을 원하신다면 /23을 사용할 수 있습니다. 이 경우 30개의 서버 팟으로 제한될 가능성이 높습니다.
+
+
+
+
+유지 관리 주기를 결정할 수 있나요?
+
+유지 관리 창을 예약하려면 지원팀에 문의하세요. 최소한 주간 업데이트 일정을 예상해 주세요.
+
+
+
+### Uptime SLAs {#uptime-sla}
+
+
+ClickHouse는 BYOC에 대한 가동 시간 SLA를 제공하나요?
+
+아니요. 데이터 평면이 고객의 클라우드 환경에 호스팅되기 때문에 서비스 가용성은 ClickHouse의 통제를 벗어난 리소스에 따라 달라집니다. 따라서 ClickHouse는 BYOC 배포에 대한 공식적인 가동 시간 SLA를 제공하지 않습니다. 추가 질문이 있는 경우 support@clickhouse.com으로 문의해 주세요.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/01_aws.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/01_aws.md.hash
new file mode 100644
index 00000000000..4e70184ce33
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/01_aws.md.hash
@@ -0,0 +1 @@
+7e131e5d4e000830
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/_category_.json
new file mode 100644
index 00000000000..a5b6dbd23f3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/04_faq/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "FAQ",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/01_aws.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/01_aws.md
new file mode 100644
index 00000000000..892e15ccd61
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/01_aws.md
@@ -0,0 +1,154 @@
+---
+'title': 'AWS에서 BYOC 가시성'
+'slug': '/cloud/reference/byoc/observability'
+'sidebar_label': 'AWS'
+'keywords':
+- 'BYOC'
+- 'cloud'
+- 'bring your own cloud'
+- 'AWS'
+'description': '자체 클라우드 인프라에 ClickHouse 배포'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import byoc4 from '@site/static/images/cloud/reference/byoc-4.png';
+import byoc3 from '@site/static/images/cloud/reference/byoc-3.png';
+import DeprecatedBadge from '@theme/badges/DeprecatedBadge';
+
+## 관측성 {#observability}
+
+### 내장 모니터링 도구 {#built-in-monitoring-tools}
+ClickHouse BYOC는 다양한 사용 사례를 위한 여러 접근 방식을 제공합니다.
+
+#### 관측성 대시보드 {#observability-dashboard}
+
+ClickHouse Cloud에는 메모리 사용량, 쿼리 비율 및 I/O와 같은 메트릭을 표시하는 고급 관측성 대시보드가 포함되어 있습니다. 이는 ClickHouse Cloud 웹 콘솔 인터페이스의 **모니터링** 섹션에서 접근할 수 있습니다.
+
+
+
+
+
+
+
+#### 고급 대시보드 {#advanced-dashboard}
+
+서버 성능과 자원 활용도를 자세히 모니터링하기 위해 `system.metrics`, `system.events` 및 `system.asynchronous_metrics`와 같은 시스템 테이블의 메트릭을 사용하여 대시보드를 사용자 정의할 수 있습니다.
+
+
+
+
+
+
+
+#### BYOC Prometheus 스택 접근 {#prometheus-access}
+ClickHouse BYOC는 Kubernetes 클러스터에 Prometheus 스택을 배포합니다. 여기에서 메트릭에 접근하고 스크랩하여 자신의 모니터링 스택과 통합할 수 있습니다.
+
+ClickHouse 지원팀에 문의하여 개인 로드 밸런서를 활성화하고 URL을 요청하세요. 이 URL은 개인 네트워크를 통해서만 접근 가능하며 인증을 지원하지 않습니다.
+
+**샘플 URL**
+```bash
+https://prometheus-internal...aws.clickhouse-byoc.com/query
+```
+
+#### Prometheus 통합 {#prometheus-integration}
+
+
+
+위 섹션의 Prometheus 스택 통합을 사용해 주세요. ClickHouse 서버 메트릭 외에도 K8S 메트릭 및 기타 서비스의 메트릭도 포함됩니다.
+
+ClickHouse Cloud는 모니터링을 위해 메트릭을 스크랩할 수 있는 Prometheus 엔드포인트를 제공합니다. 이를 통해 Grafana 및 Datadog과 같은 도구와의 시각화를 위한 통합이 가능합니다.
+
+**https 엔드포인트를 통한 샘플 요청 /metrics_all**
+
+```bash
+curl --user : https://i6ro4qarho.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud:8443/metrics_all
+```
+
+**샘플 응답**
+
+```bash
+
+# HELP ClickHouse_CustomMetric_StorageSystemTablesS3DiskBytes The amount of bytes stored on disk `s3disk` in system database
+
+# TYPE ClickHouse_CustomMetric_StorageSystemTablesS3DiskBytes gauge
+ClickHouse_CustomMetric_StorageSystemTablesS3DiskBytes{hostname="c-jet-ax-16-server-43d5baj-0"} 62660929
+
+# HELP ClickHouse_CustomMetric_NumberOfBrokenDetachedParts The number of broken detached parts
+
+# TYPE ClickHouse_CustomMetric_NumberOfBrokenDetachedParts gauge
+ClickHouse_CustomMetric_NumberOfBrokenDetachedParts{hostname="c-jet-ax-16-server-43d5baj-0"} 0
+
+# HELP ClickHouse_CustomMetric_LostPartCount The age of the oldest mutation (in seconds)
+
+# TYPE ClickHouse_CustomMetric_LostPartCount gauge
+ClickHouse_CustomMetric_LostPartCount{hostname="c-jet-ax-16-server-43d5baj-0"} 0
+
+# HELP ClickHouse_CustomMetric_NumberOfWarnings The number of warnings issued by the server. It usually indicates about possible misconfiguration
+
+# TYPE ClickHouse_CustomMetric_NumberOfWarnings gauge
+ClickHouse_CustomMetric_NumberOfWarnings{hostname="c-jet-ax-16-server-43d5baj-0"} 2
+
+# HELP ClickHouseErrorMetric_FILE_DOESNT_EXIST FILE_DOESNT_EXIST
+
+# TYPE ClickHouseErrorMetric_FILE_DOESNT_EXIST counter
+ClickHouseErrorMetric_FILE_DOESNT_EXIST{hostname="c-jet-ax-16-server-43d5baj-0",table="system.errors"} 1
+
+# HELP ClickHouseErrorMetric_UNKNOWN_ACCESS_TYPE UNKNOWN_ACCESS_TYPE
+
+# TYPE ClickHouseErrorMetric_UNKNOWN_ACCESS_TYPE counter
+ClickHouseErrorMetric_UNKNOWN_ACCESS_TYPE{hostname="c-jet-ax-16-server-43d5baj-0",table="system.errors"} 8
+
+# HELP ClickHouse_CustomMetric_TotalNumberOfErrors The total number of errors on server since the last restart
+
+# TYPE ClickHouse_CustomMetric_TotalNumberOfErrors gauge
+ClickHouse_CustomMetric_TotalNumberOfErrors{hostname="c-jet-ax-16-server-43d5baj-0"} 9
+```
+
+**인증**
+
+ClickHouse 사용자 이름과 비밀번호 쌍을 인증에 사용할 수 있습니다. 메트릭 스크랩을 위해 최소 권한을 가진 전용 사용자를 생성하는 것을 권장합니다. 최소한 `system.custom_metrics` 테이블의 복제본에서 `READ` 권한이 필요합니다. 예를 들어:
+
+```sql
+GRANT REMOTE ON *.* TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_dictionary_custom_metrics_tables TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_dictionary_database_replicated_recovery_time TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_dictionary_failed_mutations TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_dictionary_group TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_dictionary_shared_catalog_recovery_time TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_dictionary_table_read_only_duration_seconds TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_view_error_metrics TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_view_histograms TO scrapping_user;
+GRANT SELECT ON system._custom_metrics_view_metrics_and_events TO scrapping_user;
+GRANT SELECT(description, metric, value) ON system.asynchronous_metrics TO scrapping_user;
+GRANT SELECT ON system.custom_metrics TO scrapping_user;
+GRANT SELECT(name, value) ON system.errors TO scrapping_user;
+GRANT SELECT(description, event, value) ON system.events TO scrapping_user;
+GRANT SELECT(description, labels, metric, value) ON system.histogram_metrics TO scrapping_user;
+GRANT SELECT(description, metric, value) ON system.metrics TO scrapping_user;
+```
+
+**Prometheus 구성**
+
+아래에 예시 구성파일이 나와 있습니다. `targets` 엔드포인트는 ClickHouse 서비스에 접근하기 위해 사용되는 동일한 엔드포인트입니다.
+
+```bash
+global:
+ scrape_interval: 15s
+
+scrape_configs:
+ - job_name: "prometheus"
+ static_configs:
+ - targets: ["localhost:9090"]
+ - job_name: "clickhouse"
+ static_configs:
+ - targets: ["..aws.byoc.clickhouse.cloud:8443"]
+ scheme: https
+ metrics_path: "/metrics_all"
+ basic_auth:
+ username:
+ password:
+ honor_labels: true
+```
+
+자세한 내용은 [이 블로그 포스트](https://clickhouse.com/blog/clickhouse-cloud-now-supports-prometheus-monitoring) 및 [ClickHouse를 위한 Prometheus 설정 문서](/integrations/prometheus)를 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/01_aws.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/01_aws.md.hash
new file mode 100644
index 00000000000..56699366b03
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/01_aws.md.hash
@@ -0,0 +1 @@
+32c6cc81b001a555
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/_category_.json
new file mode 100644
index 00000000000..23bf07b60b2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/05_observability/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Observability",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/_category_.json
new file mode 100644
index 00000000000..09ee3377efb
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/01_deployment_options/byoc/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "BYOC (Bring Your Own Cloud)",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/_category_.json
new file mode 100644
index 00000000000..fc224829596
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/infrastructure/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Infrastructure",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/production-readiness.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/production-readiness.md
new file mode 100644
index 00000000000..9d21795eaac
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/production-readiness.md
@@ -0,0 +1,207 @@
+---
+'slug': '/cloud/guides/production-readiness'
+'sidebar_label': '프로덕션 준비 상태'
+'title': 'ClickHouse Cloud 프로덕션 준비 가이드'
+'description': '빠른 시작에서 기업 준비 상태의 ClickHouse Cloud 배포로 전환하는 조직을 위한 가이드'
+'keywords':
+- 'production readiness'
+- 'enterprise'
+- 'saml'
+- 'sso'
+- 'terraform'
+- 'monitoring'
+- 'backup'
+- 'disaster recovery'
+'doc_type': 'guide'
+---
+
+
+# ClickHouse Cloud 생산 준비 가이드 {#production-readiness}
+
+빠른 시작 가이드를 완료하고 데이터가 흐르고 있는 활성 서비스가 있는 조직을 위한 가이드입니다.
+
+:::note[TL;DR]
+이 가이드는 빠른 시작에서 기업 준비 완료 ClickHouse Cloud 배포로 전환하는 데 도움을 줍니다. 다음을 배우게 됩니다:
+
+- 안전한 테스트를 위한 별도의 개발/스테이징/생산 환경 구축
+- 아이덴티티 공급자와 SAML/SSO 인증 통합
+- Terraform 또는 Cloud API를 사용하여 배포 자동화
+- 모니터링을 경고 인프라(예: Prometheus, PagerDuty)에 연결
+- 백업 절차 검증 및 재해 복구 프로세스 문서화
+:::
+
+## 소개 {#introduction}
+
+비즈니스 업무에 ClickHouse Cloud를 성공적으로 운영하고 있습니다. 이제 규정 준수 감사, 테스트되지 않은 쿼리로 인한 생산 사고 또는 기업 시스템과의 통합 요구 사항 등으로 인해 기업 생산 표준을 충족하기 위해 배포를 성숙시켜야 합니다.
+
+ClickHouse Cloud의 관리 플랫폼은 인프라 운영, 자동 확장 및 시스템 유지 관리를 처리합니다. 기업 생산 준비는 ClickHouse Cloud를 인증 시스템, 모니터링 인프라, 자동화 도구 및 비즈니스 연속성 프로세스를 통해 더 넓은 IT 환경과 연결하는 것을 요구합니다.
+
+기업 생산 준비에 대한 귀하의 책임:
+- 생산 배포 이전에 안전한 테스트를 위한 별도의 환경 구축
+- 기존 아이덴티티 공급자 및 접근 관리 시스템과 통합
+- 운영 인프라에 모니터링 및 경고 연결
+- 일관된 관리를 위한 코드 기반 인프라 관행 구현
+- 백업 검증 및 재해 복구 절차 확립
+- 비용 관리 및 청구 통합 구성
+
+이 가이드는 귀하가 작동 중인 ClickHouse Cloud 배포에서 기업 준비 완료 시스템으로 전환하는 데 도움을 줍니다.
+
+## 환경 전략 {#environment-strategy}
+
+생산 작업에 영향을 미치기 전에 안전하게 변경 사항을 테스트할 수 있는 별도의 환경을 구축합니다. 대부분의 생산 사고는 테스트되지 않은 쿼리 또는 구성 변경이 생산 시스템에 직접 배포된 결과로 나타납니다.
+
+:::note
+**ClickHouse Cloud에서는 각 환경이 별도의 서비스입니다.** 귀하는 조직 내에 특정 컴퓨팅 리소스, 저장소 및 엔드포인트를 가진 서로 다른 생산, 스테이징 및 개발 서비스를 프로비저닝합니다.
+:::
+
+**환경 구조**: 생산(실시간 작업), 스테이징(생산 기준 검증), 개발(개인/팀 실험) 환경을 유지합니다.
+
+**테스트**: 생산 배포 이전에 스테이징에서 쿼리를 테스트합니다. 작은 데이터셋에서 작동하는 쿼리는 생산 규모에서 메모리 부족, 과도한 CPU 사용 또는 느린 실행을 초래할 수 있습니다. 사용자 권한, 할당량 및 서비스 설정을 포함한 구성 변경을 스테이징에서 검증합니다—생산에서 발견된 구성 오류는 즉각적인 운영 사고를 초래합니다.
+
+**크기 조정**: 스테이징 서비스의 크기를 생산 부하 특성에 맞게 조정합니다. 상당히 작은 인프라에서의 테스트는 자원 경합이나 스케일링 문제를 드러내지 않을 수 있습니다. 정기적인 데이터 새로 고침 또는 합성 데이터 생성을 통해 생산에 대표적인 데이터셋을 사용합니다. 스테이징 환경의 크기를 조정하고 서비스를 적절하게 확장하는 방법에 대한 지침은 [크기 조정 및 하드웨어 권장 사항](/guides/sizing-and-hardware-recommendations)과 [ClickHouse Cloud에서의 스케일링](/manage/scaling) 문서를 참조하십시오. 이 리소스들은 메모리, CPU 및 저장소 크기 조정에 대한 실용적인 조언과 함께 생산 작업부하에 맞게 스테이징 환경을 조정하는 데 도움을 줄 수 있는 수직 및 수평 스케일링 옵션에 대한 세부정보를 제공합니다.
+
+## 프라이빗 네트워킹 {#private-networking}
+
+[프라이빗 네트워킹](/cloud/security/connectivity/private-networking) ClickHouse Cloud에서 ClickHouse 서비스와 클라우드 가상 네트워크를 직접 연결하여 데이터가 공용 인터넷을 통과하지 않도록 합니다. 이는 엄격한 보안 또는 규정 준수 요구 사항이 있는 조직이나 개인 서브넷에서 애플리케이션을 실행하는 조직에 필수적입니다.
+
+ClickHouse Cloud는 다음 메커니즘을 통해 프라이빗 네트워킹을 지원합니다:
+
+- [AWS PrivateLink](/manage/security/aws-privatelink): 공용 인터넷에 트래픽을 노출하지 않으면서 VPC와 ClickHouse Cloud 간의 안전한 연결을 활성화합니다. 교차 지역 연결을 지원하며 Scale 및 Enterprise 플랜에서 사용할 수 있습니다. 설정에는 PrivateLink 엔드포인트를 생성하고 ClickHouse Cloud 조직 및 서비스 허용 목록에 추가하는 과정이 포함됩니다. 세부정보 및 단계별 지침은 여기 문서에서 확인할 수 있습니다.
+- [GCP Private Service Connect](/manage/security/gcp-private-service-connect) (PSC): Google Cloud VPC에서 ClickHouse Cloud에 대한 프라이빗 액세스를 허용합니다. AWS와 마찬가지로 Scale 및 Enterprise 플랜에서 사용할 수 있으며 서비스 엔드포인트 및 허용 목록의 명시적 구성이 필요합니다.
+- [Azure Private Link](/cloud/security/azure-privatelink): Azure VNet과 ClickHouse Cloud 간의 프라이빗 연결을 제공하며, 교차 지역 연결을 지원합니다. 설정 과정에는 연결 별칭 획득, 프라이빗 엔드포인트 생성 및 허용 목록 업데이트가 포함됩니다.
+
+더 많은 기술 세부정보나 단계별 설정 지침이 필요하다면 각 공급자에 대한 링크된 문서에서 포괄적인 가이드를 포함하고 있습니다.
+
+## 기업 인증 및 사용자 관리 {#enterprise-authentication}
+
+콘솔 기반 사용자 관리에서 기업 인증 통합으로의 전환은 생산 준비를 위해 필수적입니다.
+
+### SSO 및 소셜 인증 {#sso-authentication}
+
+[SAML SSO](/cloud/security/saml-setup): 기업 등급 ClickHouse Cloud는 Okta, Azure Active Directory 및 Google Workspace와 같은 아이덴티티 공급자와의 SAML 통합을 지원합니다. SAML 구성은 ClickHouse 지원 팀과 협력하여 진행되며 IdP 메타데이터를 제공하고 속성 매핑을 구성해야 합니다.
+
+[소셜 SSO](/cloud/security/manage-my-account): ClickHouse Cloud는 SAML SSO에 대한 동등한 보안 대안으로 소셜 인증 공급자(구글, 마이크로소프트, GitHub)를 지원합니다. 소셜 SSO는 기존 SAML 인프라가 없는 조직에 대해 더 빠른 설정을 제공하면서 기업의 보안 표준을 유지합니다.
+
+:::note 중요 제한 사항
+SAML 또는 소셜 SSO를 통해 인증된 사용자는 기본적으로 "회원" 역할이 부여되며, 첫 로그인 이후 관리자가 수동으로 추가 역할을 부여해야 합니다. 그룹-역할 매핑 및 자동 역할 지정은 현재 지원되지 않습니다.
+:::
+
+### 접근 제어 설계 {#access-control-design}
+
+ClickHouse Cloud는 조직 수준의 역할(관리자, 개발자, 청구, 회원)과 서비스/데이터베이스 수준의 역할(서비스 관리자, 읽기 전용, SQL 콘솔 역할)을 사용합니다. 최소 권한 원칙을 적용하여 직무 기능에 맞게 역할을 설계합니다:
+
+- **애플리케이션 사용자**: 특정 데이터베이스 및 테이블 접근을 가진 서비스 계정
+- **분석 사용자**: 선별된 데이터세트 및 보고 뷰에 대한 읽기 전용 액세스
+- **관리 사용자**: 전체 관리 능력
+
+다른 사용자 및 역할의 자원 사용량을 관리하기 위해 쿼타, 제한 및 설정 프로파일을 구성합니다. 개별 쿼리가 시스템 성능에 영향을 미치지 않도록 메모리 및 실행 시간 제한을 설정합니다. 감사, 세션 및 쿼리 로그를 통해 자원 사용량을 모니터링하여 제한에 자주 도달하는 사용자 또는 애플리케이션을 식별합니다. ClickHouse Cloud의 감사 기능을 사용하여 정기적인 접근 검토를 수행합니다.
+
+### 사용자 라이프사이클 관리 제한 사항 {#user-lifecycle-management}
+
+ClickHouse Cloud는 현재 SCIM 또는 아이덴티티 공급자를 통한 자동 프로비저닝/디프로비저닝을 지원하지 않습니다. IdP에서 제거된 후 사용자는 ClickHouse Cloud 콘솔에서 수동으로 제거해야 합니다. 이러한 기능이 제공될 때까지 수동 사용자 관리 프로세스를 계획하십시오.
+
+[클라우드 접근 관리](/cloud/security/cloud_access_management) 및 [SAML SSO 설정](/cloud/security/saml-setup)에 대해 더 알아보세요.
+
+## 코드로서의 인프라 및 자동화 {#infrastructure-as-code}
+
+코드 기반 인프라 관행 및 API 자동화를 통해 ClickHouse Cloud를 관리하면 배포 구성의 일관성, 버전 관리 및 반복 가능성을 제공합니다.
+
+### Terraform 제공자 {#terraform-provider}
+
+ClickHouse Cloud 콘솔에서 생성된 API 키로 ClickHouse Terraform 제공자를 구성합니다:
+
+```terraform
+terraform {
+ required_providers {
+ clickhouse = {
+ source = "ClickHouse/clickhouse"
+ version = "~> 2.0"
+ }
+ }
+}
+
+provider "clickhouse" {
+ environment = "production"
+ organization_id = var.organization_id
+ token_key = var.token_key
+ token_secret = var.token_secret
+}
+```
+
+Terraform 제공자는 서비스 프로비저닝, IP 접근 목록 및 사용자 관리를 지원합니다. 현재 제공자는 기존 서비스를 가져오거나 명시적인 백업 구성을 지원하지 않습니다. 제공자가 다루지 않는 기능은 콘솔을 통해 관리하거나 ClickHouse 지원 팀에 문의하십시오.
+
+서비스 구성 및 네트워크 접근 제어를 포함한 포괄적인 사례는 [클라우드 API 사용 방법에 대한 Terraform 예제](/knowledgebase/terraform_example)를 참조하십시오.
+
+### Cloud API 통합 {#cloud-api-integration}
+
+기존 자동화 프레임워크가 있는 조직은 Cloud API를 통해 ClickHouse Cloud 관리를 직접 통합할 수 있습니다. API는 서비스 생애 주기 관리, 사용자 관리, 백업 작업, 모니터링 데이터 검색에 대한 프로그래밍적 접근을 제공합니다.
+
+일반적인 API 통합 패턴:
+- 내부 티켓팅 시스템과 통합된 사용자 정의 프로비저닝 워크플로우
+- 애플리케이션 배포 일정에 따라 자동 크기 조정 조정
+- 준수를 위한 프로그래밍 쿼리 백업 검증 및 보고
+- 기존 인프라 관리 플랫폼과의 통합
+
+API 인증은 Terraform과 동일한 토큰 기반 방식을 사용합니다. 완전한 API 참조 및 통합 사례는 [ClickHouse Cloud API](/cloud/manage/api/api-overview) 문서를 참조하십시오.
+
+## 모니터링 및 운영 통합 {#monitoring-integration}
+
+ClickHouse Cloud를 기존 모니터링 인프라에 연결하여 가시성과 사전 문제 감지를 보장합니다.
+
+### 내장 모니터링 {#built-in-monitoring}
+
+ClickHouse Cloud는 초당 쿼리 수, 메모리 사용량, CPU 사용량, 저장소 비율을 포함한 실시간 메트릭으로 고급 대시보드를 제공합니다. 모니터링 → 고급 대시보드에서 클라우드 콘솔을 통해 접근합니다. 특정 작업 패턴 또는 팀 자원 소비에 맞춤화된 대시보드를 생성합니다.
+
+:::note 일반 생산 격차
+기업 사고 관리 시스템 및 자동화된 비용 모니터링과의 사전 경고 통합 부족. 내장 대시보드는 가시성을 제공하지만 자동화된 경고에는 외부 통합이 필요합니다.
+:::
+
+### 생산 경고 설정 {#production-alerting}
+
+**내장 기능**: ClickHouse Cloud는 청구 이벤트, 크기 조정 이벤트 및 서비스 상태에 대한 알림을 이메일, UI 및 Slack을 통해 제공합니다. 콘솔 알림 설정을 통해 전달 채널 및 알림 심각성을 구성합니다.
+
+**기업 통합**: 고급 경고(PagerDuty, 사용자 정의 웹훅)를 위해 Prometheus 엔드포인트를 사용하여 기존 모니터링 인프라에 메트릭을 내보냅니다:
+
+```yaml
+scrape_configs:
+ - job_name: "clickhouse"
+ static_configs:
+ - targets: ["https://api.clickhouse.cloud/v1/organizations//prometheus"]
+ basic_auth:
+ username:
+ password:
+```
+
+자세한 Prometheus/Grafana 구성 및 고급 경고 설정을 포함한 포괄적인 설정은 [ClickHouse Cloud 관측 가능성 가이드](/use-cases/observability/cloud-monitoring#prometheus)를 참조하십시오.
+
+## 비즈니스 연속성 및 지원 통합 {#business-continuity}
+
+백업 검증 절차와 지원 통합을 설정하면 ClickHouse Cloud 배포가 사고에서 복구하고 필요할 때 도움을 받을 수 있습니다.
+
+### 백업 전략 평가 {#backup-strategy}
+
+ClickHouse Cloud는 구성 가능한 보존 기간을 가진 자동 백업을 제공합니다. 현재 백업 구성을 규정 준수 및 복구 요구 사항에 맞춰 평가합니다. 백업 위치나 암호화와 관련된 특정 규정 준수 요구 사항이 있는 기업 고객은 ClickHouse Cloud가 자신의 클라우드 스토리지 버킷(BYOB)에 백업을 저장하도록 구성할 수 있습니다. BYOB 구성을 위해 ClickHouse 지원에 연락하십시오.
+
+### 복구 절차 검증 및 테스트 {#validate-test-recovery}
+
+대부분의 조직은 실제 복구 시나리오 동안 백업 격차를 발견합니다. 사고가 발생하기 전에 백업 무결성을 확인하고 복구 절차를 테스트하기 위한 정기적인 검증 주기를 설정합니다. 비생산 환경에 대한 정기적인 복원 테스트 일정을 잡고, 단계별 복구 절차(시간 추정 포함)를 문서화하고, 복원된 데이터의 완전성과 애플리케이션 기능을 검증하고, 다양한 장애 시나리오(서비스 삭제, 데이터 손상, 지역 중단)를 통한 복구 절차를 테스트합니다. 온콜 팀이 접근할 수 있도록 업데이트된 복구 실행 문서를 유지합니다.
+
+중요한 생산 서비스에 대해 백업 복원 테스트를 분기별로 최소한 한 번 수행합니다. 엄격한 규정 준수 요구 사항이 있는 조직은 매월 또는 매주 검증 주기가 필요할 수 있습니다.
+
+### 재해 복구 계획 {#disaster-recovery-planning}
+
+비즈니스 요구 사항을 충족하는지 확인하기 위해 복구 시간 목표(RTO) 및 복구 지점 목표(RPO)를 문서화합니다. 백업 복원에 대한 정기적인 테스트 일정을 수립하고 업데이트된 복구 문서를 유지합니다.
+
+**교차 지역 백업 저장소**: 지리적 재해 복구 요구 사항이 있는 조직은 ClickHouse Cloud가 대체 지역의 고객 소유 저장소 버킷에 백업을 내보내도록 구성할 수 있습니다. 이는 지역 중단으로부터 보호를 제공하지만 수동 복원 절차가 필요합니다. 교차 지역 백업 내보내기를 구현하기 위해 ClickHouse 지원에 연락하십시오. 향후 플랫폼 릴리스는 자동화된 다지역 복제 기능을 제공할 것입니다.
+
+### 생산 지원 통합 {#production-support}
+
+현재 지원 계층의 SLA 기대치 및 에스컬레이션 절차를 이해합니다. ClickHouse 지원에 연락할 시점을 정의하는 내부 실행 문서를 작성하고 이러한 절차를 기존 사고 관리 프로세스에 통합합니다.
+
+[ClickHouse Cloud 백업 및 복구](/cloud/manage/backups/overview) 및 [지원 서비스](/about-us/support)에 대해 더 알아보세요.
+
+## 다음 단계 {#next-steps}
+
+이 가이드의 통합 및 절차를 구현한 후 [클라우드 리소스 투어](/cloud/get-started/cloud/resource-tour)를 방문하여 [모니터링](/cloud/get-started/cloud/resource-tour#monitoring), [보안](/cloud/get-started/cloud/resource-tour#security) 및 [비용 최적화](/cloud/get-started/cloud/resource-tour#cost-optimization)에 대한 가이드를 확인하세요.
+
+현재 [서비스 계층 제한 사항](/cloud/manage/cloud-tiers)이 생산 운영에 영향을 미친다면 [프라이빗 네트워킹](/cloud/security/connectivity/private-networking), [TDE/CMEK](/cloud/security/cmek) (고객 관리 암호화 키를 사용하는 투명한 데이터 암호화) 또는 [고급 백업 옵션](/cloud/manage/backups/configurable-backups)과 같은 향상된 기능을 위한 업그레이드 경로를 고려하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/production-readiness.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/production-readiness.md.hash
new file mode 100644
index 00000000000..58c9f2e475e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/production-readiness.md.hash
@@ -0,0 +1 @@
+f1a965ca076ddf85
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/01_manage-my-account.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/01_manage-my-account.md
new file mode 100644
index 00000000000..52a01428535
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/01_manage-my-account.md
@@ -0,0 +1,117 @@
+---
+'sidebar_label': '내 계정 관리'
+'slug': '/cloud/security/manage-my-account'
+'title': '내 계정 관리'
+'description': '이 페이지는 사용자가 초대를 수락하고, MFA 설정을 관리하며, 비밀번호를 재설정하는 방법에 대해 설명합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'account management'
+- 'user profile'
+- 'security'
+- 'cloud console'
+- 'settings'
+---
+
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge'
+
+## 초대 수락하기 {#accept-invitation}
+
+사용자는 조직에 가입하기 위한 초대를 수락하는 여러 방법을 사용할 수 있습니다. 이 초대가 처음이라면 아래에서 조직에 적합한 인증 방법을 선택하세요.
+
+이전 조직이 있다면, 기존 조직으로 로그인한 후 페이지의 왼쪽 하단에서 초대 수락을 하거나 이메일에서 초대를 수락하고 기존 계정으로 로그인하세요.
+
+:::note SAML 사용자
+SAML을 사용하는 조직은 ClickHouse 조직마다 고유한 로그인 정보를 가지고 있습니다. 관리자에게 제공받은 직접 링크를 사용하여 로그인하세요.
+:::
+
+### 이메일 및 비밀번호 {#email-and-password}
+
+ClickHouse Cloud에서는 이메일 주소와 비밀번호로 인증할 수 있습니다. 이 방법을 사용할 때 ClickHouse 계정을 보호하는 가장 좋은 방법은 강력한 비밀번호를 사용하는 것입니다. 기억할 수 있는 비밀번호를 고안하는 데 도움이 되는 많은 온라인 리소스가 있습니다. 또는 랜덤 비밀번호 생성기를 사용하고 비밀번호 관리 프로그램에 비밀번호를 저장하여 보안을 강화할 수 있습니다.
+
+비밀번호는 최소 12자 이상이어야 하며 4가지 복잡성 요구 사항 중 3가지를 충족해야 합니다: 대문자, 소문자, 숫자 및/또는 특수 문자.
+
+### 소셜 단일 로그인 (SSO) {#social-sso}
+
+`Google로 계속하기` 또는 `Microsoft 계정으로 계속하기`를 사용하여 서비스에 가입하거나 초대를 수락하세요.
+
+회사가 Google Workspace 또는 Microsoft 365를 사용하는 경우, ClickHouse Cloud 내에서 현재 단일 로그인 설정을 활용할 수 있습니다. 이를 위해 회사 이메일 주소를 사용하여 가입하고 다른 사용자를 회사 이메일로 초대하면 됩니다. 결과적으로 사용자는 ClickHouse Cloud에 인증하기 전에 귀사의 로그인 흐름을 사용하여 로그인해야 합니다. 즉, 귀사의 ID 공급자를 통해 또는 Google 또는 Microsoft 인증을 통해 직접 로그인해야 합니다.
+
+### SAML 단일 로그인 (SSO) {#saml-sso}
+
+
+
+SAML SSO를 사용하는 사용자는 로그인 시 ID 공급자에 의해 자동으로 추가됩니다. Organization Admin 역할을 가진 ClickHouse Cloud 사용자는 [SAML 사용자에게 할당된 역할 관리하기](/cloud/security/manage-cloud-users)와 SAML을 유일한 인증 방법으로 시행할 수 있습니다.
+
+## 다중 인증 관리 (MFA) {#mfa}
+
+이메일 + 비밀번호 또는 소셜 인증을 사용하는 사용자는 다중 인증 (MFA)으로 계정을 추가로 보호할 수 있습니다. MFA를 설정하려면:
+
+1. [console.clickhouse.cloud](https://console.clickhouse.cloud/)에 로그인하세요.
+2. ClickHouse 로고 옆의 왼쪽 상단 모서리에 있는 이니셜을 클릭하세요.
+3. 프로필을 선택하세요.
+4. 왼쪽에서 보안을 선택하세요.
+5. Authenticator 앱 타일에서 설정을 클릭하세요.
+6. Authy, 1Password 또는 Google Authenticator와 같은 인증기 앱을 사용하여 QR 코드를 스캔하세요.
+7. 코드를 입력하여 확인하세요.
+8. 다음 화면에서 복구 코드를 복사하고 안전한 장소에 저장하세요.
+9. `나는 이 코드를 안전하게 기록했습니다` 옆의 상자를 체크하세요.
+10. 계속하기를 클릭하세요.
+
+### 새로운 복구 코드 받기 {#obtain-recovery-code}
+
+이전에 MFA에 등록했지만 복구 코드를 생성하지 않았거나 분실한 경우, 다음 단계에 따라 새로운 복구 코드를 받으세요:
+1. https://console.clickhouse.cloud로 이동하세요.
+2. 자격 증명과 MFA로 로그인하세요.
+3. 왼쪽 상단에서 프로필로 이동하세요.
+4. 왼쪽에서 보안을 클릭하세요.
+5. Authenticator 앱 옆의 휴지통 아이콘을 클릭하세요.
+6. 인증기 앱 제거를 클릭하세요.
+7. 코드를 입력하고 계속하기를 클릭하세요.
+8. Authenticator 앱 섹션에서 설정을 클릭하세요.
+9. QR 코드를 스캔하고 새로운 코드를 입력하세요.
+10. 복구 코드를 복사하고 안전한 장소에 저장하세요.
+11. `나는 이 코드를 안전하게 기록했습니다` 옆의 상자를 체크하세요.
+12. 계속하기를 클릭하세요.
+
+## 계정 복구 {#account-recovery}
+
+### 비밀번호 분실 {#forgot-password}
+
+비밀번호를 잊은 경우, 셀프 서비스 복구를 위해 다음 단계를 따르세요:
+1. https://console.clickhouse.cloud로 이동하세요.
+2. 이메일 주소를 입력하고 계속하기를 클릭하세요.
+3. 비밀번호를 잊으셨나요?를 클릭하세요.
+4. 비밀번호 재설정 링크 보내기를 클릭하세요.
+5. 이메일을 확인하고 이메일에서 비밀번호 재설정을 클릭하세요.
+6. 새 비밀번호를 입력하고 비밀번호를 확인한 후 비밀번호 업데이트를 클릭하세요.
+7. 로그인으로 돌아가기를 클릭하세요.
+8. 새 비밀번호로 정상적으로 로그인하세요.
+
+### MFA 셀프 서비스 복구 {#mfa-self-serivce-recovery}
+
+MFA 장치를 분실했거나 토큰을 삭제한 경우, 다음 단계를 따라 복구하고 새 토큰을 생성하세요:
+1. https://console.clickhouse.cloud로 이동하세요.
+2. 자격 증명을 입력하고 계속하기를 클릭하세요.
+3. 다중 인증 화면에서 취소를 클릭하세요.
+4. 복구 코드를 클릭하세요.
+5. 코드를 입력하고 계속하기를 누르세요.
+6. 새로운 복구 코드를 복사하고 안전한 곳에 저장하세요.
+7. `나는 이 코드를 안전하게 기록했습니다` 옆의 상자를 체크하고 계속하기를 클릭하세요.
+8. 로그인한 후 상단 왼쪽에서 프로필로 이동하세요.
+9. 상단 왼쪽에서 보안을 클릭하세요.
+10. Authenticator 앱 옆의 휴지통 아이콘을 클릭하여 기존 인증기를 제거하세요.
+11. 인증기 앱 제거를 클릭하세요.
+12. 다중 인증을 요청받을 때 취소를 클릭하세요.
+13. 복구 코드를 클릭하세요.
+14. 복구 코드를 입력하세요 (이는 7단계에서 생성된 새로운 코드입니다) 그리고 계속하기를 클릭하세요.
+15. 새로운 복구 코드를 복사하고 안전한 곳에 저장하세요 - 이는 제거 과정 중 화면을 떠날 경우를 대비한 fail safe입니다.
+16. `나는 이 코드를 안전하게 기록했습니다` 옆의 상자를 체크하고 계속하기를 클릭하세요.
+17. 위의 절차를 따라 새로운 MFA 요소를 설정하세요.
+
+### MFA 및 복구 코드 분실 {#lost-mfa-and-recovery-code}
+
+MFA 장치와 복구 코드를 모두 분실했거나 MFA 장치를 분실하고 복구 코드를 얻지 못한 경우, 리셋 요청을 위해 다음 단계를 따르세요:
+
+**티켓 제출**: 다른 관리 사용자가 있는 조직에 속해 있다면, 단일 사용자 조직에 접근하려고 하더라도 Admin 역할이 부여된 조직의 멤버에게 로그인하여 귀하를 대신해 MFA 리셋을 위한 지원 티켓을 제출해 달라고 요청하세요. 요청이 인증되면 MFA를 리셋하고 Admin에게 알릴 것입니다. MFA 없이 평소처럼 로그인하고 새로운 요소를 등록하려면 프로필 설정으로 이동하세요.
+
+**이메일을 통한 리셋**: 조직 내 유일한 사용자라면, 귀하의 계정과 관련된 이메일 주소를 사용하여 이메일을 통해 지원 케이스를 제출하세요 (support@clickhouse.com). 요청이 올바른 이메일에서 왔음을 확인하면 MFA와 비밀번호를 리셋할 것입니다. 비밀번호 재설정 링크를 받으려면 이메일을 확인하세요. 새 비밀번호를 설정한 후 프로필 설정으로 이동하여 새로운 요소를 등록하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/01_manage-my-account.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/01_manage-my-account.md.hash
new file mode 100644
index 00000000000..84a58e67035
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/01_manage-my-account.md.hash
@@ -0,0 +1 @@
+6884e74234eb00ad
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/02_manage-cloud-users.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/02_manage-cloud-users.md
new file mode 100644
index 00000000000..e9da40c09ab
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/02_manage-cloud-users.md
@@ -0,0 +1,115 @@
+---
+'sidebar_label': '클라우드 사용자 관리'
+'slug': '/cloud/security/manage-cloud-users'
+'title': '클라우드 사용자 관리'
+'description': '이 페이지에서는 관리자가 사용자를 추가하고, 할당을 관리하며, 사용자를 제거하는 방법을 설명합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'cloud users'
+- 'access management'
+- 'security'
+- 'permissions'
+- 'team management'
+---
+
+import Image from '@theme/IdealImage';
+import step_1 from '@site/static/images/cloud/guides/sql_console/org_level_access/1_org_settings.png'
+import step_2 from '@site/static/images/cloud/guides/sql_console/org_level_access/2_org_settings.png'
+import step_3 from '@site/static/images/cloud/guides/sql_console/org_level_access/3_org_settings.png'
+import step_4 from '@site/static/images/cloud/guides/sql_console/org_level_access/4_org_settings.png'
+import step_5 from '@site/static/images/cloud/guides/sql_console/org_level_access/5_org_settings.png'
+import step_6 from '@site/static/images/cloud/guides/sql_console/org_level_access/6_org_settings.png'
+import step_7 from '@site/static/images/cloud/guides/sql_console/org_level_access/7_org_settings.png'
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge'
+
+이 가이드는 ClickHouse Cloud에서 Organization Admin 역할을 가진 사용자를 위한 것입니다.
+
+## 사용자를 조직에 추가하기 {#add-users}
+
+### 사용자 초대하기 {#invite-users}
+
+관리자는 한 번에 최대 세 명(3명의) 사용자를 초대하고 초대 시 조직 및 서비스 레벨 역할을 지정할 수 있습니다.
+
+사용자를 초대하려면:
+1. 왼쪽 하단 모서리에서 조직 이름을 선택합니다.
+2. `사용자 및 역할`을 클릭합니다.
+3. 왼쪽 상단 모서리에서 `구성원 초대`를 선택합니다.
+4. 최대 3명의 새로운 사용자의 이메일 주소를 입력합니다.
+5. 사용자에게 할당할 조직 및 서비스 역할을 선택합니다.
+6. `초대 보내기`를 클릭합니다.
+
+사용자는 조직에 가입할 수 있는 이메일을 받게 됩니다. 초대 수락에 대한 자세한 내용은 [내 계정 관리](/cloud/security/manage-my-account)를 참조하세요.
+
+### SAML ID 공급자를 통한 사용자 추가 {#add-users-via-saml}
+
+
+
+조직이 [SAML SSO](/cloud/security/saml-setup)로 구성되어 있는 경우, 다음 단계를 따라 사용자를 조직에 추가하십시오.
+
+1. ID 공급자의 SAML 애플리케이션에 사용자를 추가합니다. 사용자가 한 번 로그인하기 전까지 ClickHouse에 나타나지 않습니다.
+2. 사용자가 ClickHouse Cloud에 로그인하면 `회원` 역할이 자동으로 할당되며 로그인만 가능하고 다른 접근 권한은 없습니다.
+3. 아래의 `사용자 역할 할당 관리` 지침을 따라 권한을 부여합니다.
+
+### SAML 전용 인증 시행 {#enforce-saml}
+
+조직에 SAML 사용자 중 하나가 Organization Admin 역할로 할당된 후, 조직에서 다른 인증 방법을 가진 사용자를 제거하여 SAML 전용 인증을 시행하십시오.
+
+## 사용자 역할 할당 관리 {#manage-role-assignments}
+
+Organization Admin 역할이 할당된 사용자는 언제든지 다른 사용자의 권한을 업데이트할 수 있습니다.
+
+
+
+### 조직 설정 접근하기 {#access-organization-settings}
+
+서비스 페이지에서 조직 이름을 선택합니다:
+
+
+
+### 사용자 및 역할 접근하기 {#access-users-and-roles}
+
+팝업 메뉴에서 `사용자 및 역할` 항목을 선택하십시오.
+
+
+
+### 업데이트할 사용자 선택하기 {#select-user-to-update}
+
+접근을 수정하려는 사용자의 행 끝에 있는 메뉴 항목을 선택합니다:
+
+
+
+### `편집` 선택하기 {#select-edit}
+
+
+
+페이지 오른쪽에 탭이 표시됩니다:
+
+
+
+### 권한 업데이트하기 {#update-permissions}
+
+드롭다운 메뉴 항목을 선택하여 콘솔 전반의 접근 권한 및 ClickHouse 콘솔 내에서 사용자가 접근할 수 있는 기능을 조정합니다. 역할 및 관련 권한 목록은 [콘솔 역할 및 권한](/cloud/security/console-roles)을 참조하십시오.
+
+드롭다운 메뉴 항목을 선택하여 선택한 사용자의 서비스 역할의 접근 범위를 조정합니다. `특정 서비스`를 선택하면 서비스별로 사용자의 역할을 제어할 수 있습니다.
+
+
+
+### 변경 사항 저장하기 {#save-changes}
+
+탭 하단의 `변경 사항 저장` 버튼으로 변경 사항을 저장합니다:
+
+
+
+
+
+## 사용자 제거하기 {#remove-user}
+:::note SAML 사용자 제거
+ID 공급자의 ClickHouse 애플리케이션에서 할당 해제된 SAML 사용자는 ClickHouse Cloud에 로그인할 수 없습니다. 계정은 콘솔에서 제거되지 않으며 수동으로 제거해야 합니다.
+:::
+
+사용자를 제거하려면 아래 단계를 따릅니다.
+
+1. 왼쪽 하단 모서리에서 조직 이름을 선택합니다.
+2. `사용자 및 역할`을 클릭합니다.
+3. 사용자 이름 옆의 세 개의 점을 클릭하고 `제거`를 선택합니다.
+4. `사용자 제거` 버튼을 클릭하여 작업을 확인합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/02_manage-cloud-users.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/02_manage-cloud-users.md.hash
new file mode 100644
index 00000000000..59ff9d5995f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/02_manage-cloud-users.md.hash
@@ -0,0 +1 @@
+472c7353474946f0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/03_manage-sql-console-role-assignments.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/03_manage-sql-console-role-assignments.md
new file mode 100644
index 00000000000..cbc1c419fc0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/03_manage-sql-console-role-assignments.md
@@ -0,0 +1,85 @@
+---
+'slug': '/cloud/guides/sql-console/manage-sql-console-role-assignments'
+'sidebar_label': 'SQL 콘솔 역할 할당 관리'
+'title': 'SQL 콘솔 역할 할당 관리'
+'description': 'SQL 콘솔 역할 할당 관리 방법을 보여주는 가이드'
+'doc_type': 'guide'
+'keywords':
+- 'sql console'
+- 'role assignments'
+- 'access management'
+- 'permissions'
+- 'security'
+---
+
+import Image from '@theme/IdealImage';
+import step_1 from '@site/static/images/cloud/guides/sql_console/service_level_access/1_service_settings.png'
+import step_2 from '@site/static/images/cloud/guides/sql_console/service_level_access/2_service_settings.png'
+import step_3 from '@site/static/images/cloud/guides/sql_console/service_level_access/3_service_settings.png'
+import step_4 from '@site/static/images/cloud/guides/sql_console/service_level_access/4_service_settings.png'
+import step_5 from '@site/static/images/cloud/guides/sql_console/service_level_access/5_service_settings.png'
+import step_6 from '@site/static/images/cloud/guides/sql_console/service_level_access/6_service_settings.png'
+import step_7 from '@site/static/images/cloud/guides/sql_console/service_level_access/7_service_settings.png'
+
+
+# SQL 콘솔 역할 할당 구성
+
+> 이 가이드는 SQL 콘솔 역할 할당을 구성하는 방법을 보여줍니다. 이는 콘솔 전반에 걸친 접근 권한과 사용자가 Cloud 콘솔 내에서 접근할 수 있는 기능을 결정합니다.
+
+
+
+### 서비스 접근 설정 {#access-service-settings}
+
+서비스 페이지에서 SQL 콘솔 접근 설정을 조정하려는 서비스의 오른쪽 상단 모서리에 있는 메뉴를 클릭합니다.
+
+
+
+팝업 메뉴에서 `설정`을 선택합니다.
+
+
+
+### SQL 콘솔 접근 조정 {#adjust-sql-console-access}
+
+"보안" 섹션에서 "SQL 콘솔 접근" 영역을 찾습니다:
+
+
+
+### 서비스 관리자 설정 업데이트 {#update-settings-for-service-admin}
+
+서비스 관리자에 대한 접근 제어 설정을 변경하려면 서비스 관리자 드롭다운 메뉴를 선택합니다:
+
+
+
+다음 역할 중에서 선택할 수 있습니다:
+
+| 역할 |
+|----------------|
+| `접근 없음` |
+| `읽기 전용` |
+| `전체 접근` |
+
+### 서비스 읽기 전용 설정 업데이트 {#update-settings-for-service-read-only}
+
+서비스 읽기 전용에 대한 접근 제어 설정을 변경하려면 서비스 읽기 전용 드롭다운 메뉴를 선택합니다:
+
+
+
+다음 역할 중에서 선택할 수 있습니다:
+
+| 역할 |
+|----------------|
+| `접근 없음` |
+| `읽기 전용` |
+| `전체 접근` |
+
+### 접근 권한이 있는 사용자 검토 {#review-users-with-access}
+
+서비스에 대한 사용자 개요는 사용자 수를 선택하여 볼 수 있습니다:
+
+
+
+페이지 오른쪽에 사용자 수와 그들의 역할이 표시되는 탭이 열립니다:
+
+
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/03_manage-sql-console-role-assignments.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/03_manage-sql-console-role-assignments.md.hash
new file mode 100644
index 00000000000..649376dd5b2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/03_manage-sql-console-role-assignments.md.hash
@@ -0,0 +1 @@
+aa1b509121b0f5d5
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_manage-database-users.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_manage-database-users.md
new file mode 100644
index 00000000000..9db84f88808
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_manage-database-users.md
@@ -0,0 +1,165 @@
+---
+'sidebar_label': '데이터베이스 사용자 관리'
+'slug': '/cloud/security/manage-database-users'
+'title': '데이터베이스 사용자 관리'
+'description': '이 페이지에서는 관리자가 데이터베이스 사용자를 추가하고, 할당을 관리하며, 데이터베이스 사용자를 제거하는 방법에 대해
+ 설명합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'database users'
+- 'access management'
+- 'security'
+- 'permissions'
+- 'user management'
+---
+
+import Image from '@theme/IdealImage';
+import user_grant_permissions_options from '@site/static/images/cloud/security/cloud-access-management/user_grant_permissions_options.png';
+
+This guide demonstrates two ways to manage database users, within SQL console and directly within the database.
+
+### SQL 콘솔 비밀번호 없는 인증 {#sql-console-passwordless-authentication}
+SQL 콘솔 사용자는 각 세션마다 생성되고 자동으로 순환되는 X.509 인증서를 사용하여 인증됩니다. 사용자는 세션이 종료되면 제거됩니다. 감사용 접근 목록을 생성할 때는 콘솔의 서비스 설정 탭으로 이동하여 데이터베이스 사용자 외에 SQL 콘솔 접근을 참고하시기 바랍니다. 사용자 정의 역할이 구성된 경우, 사용자의 접근 권한은 사용자의 사용자 이름으로 끝나는 역할에 나열됩니다.
+
+## SQL 콘솔 사용자 및 역할 {#sql-console-users-and-roles}
+
+기본 SQL 콘솔 역할은 서비스 읽기 전용 및 서비스 관리자 권한이 있는 사용자에게 할당할 수 있습니다. 자세한 내용은 [SQL 콘솔 역할 할당 관리](/cloud/guides/sql-console/manage-sql-console-role-assignments)를 참조하시기 바랍니다. 이 가이드는 SQL 콘솔 사용자에 대한 사용자 정의 역할을 만드는 방법을 설명합니다.
+
+SQL 콘솔 사용자에 대한 사용자 정의 역할을 만들고 일반 역할을 부여하려면 다음 명령을 실행하십시오. 이메일 주소는 콘솔의 사용자 이메일 주소와 일치해야 합니다.
+
+
+
+#### `database_developer` 만들고 권한 부여 {#create-role-grant-permissions}
+
+`database_developer` 역할을 만들고 `SHOW`, `CREATE`, `ALTER`, `DELETE` 권한을 부여합니다.
+
+```sql
+CREATE ROLE OR REPLACE database_developer;
+GRANT SHOW ON * TO database_developer;
+GRANT CREATE ON * TO database_developer;
+GRANT ALTER ON * TO database_developer;
+GRANT DELETE ON * TO database_developer;
+```
+
+#### SQL 콘솔 사용자 역할 만들기 {#create-sql-console-user-role}
+
+SQL 콘솔 사용자 my.user@domain.com에 대한 역할을 만들고 `database_developer` 역할을 할당합니다.
+
+```sql
+CREATE ROLE OR REPLACE `sql-console-role:my.user@domain.com`;
+GRANT database_developer TO `sql-console-role:my.user@domain.com`;
+```
+
+#### 사용자가 SQL 콘솔을 사용할 때 새 역할이 할당됨 {#use-assigned-new-role}
+
+사용자가 SQL 콘솔을 사용할 때마다 이메일 주소에 연결된 역할이 할당됩니다.
+
+
+
+## 데이터베이스 인증 {#database-authentication}
+
+### 데이터베이스 사용자 ID 및 비밀번호 {#database-user-id--password}
+
+비밀번호를 안전하게 하려면 [사용자 계정 만들기](/sql-reference/statements/create/user.md) 시 SHA256_hash 방법을 사용하십시오. ClickHouse 데이터베이스 비밀번호는 최소 12자 이상이어야 하며 다음의 복잡성 요구 사항을 충족해야 합니다: 대문자, 소문자, 숫자 및/또는 특수 문자.
+
+:::tip 안전한 비밀번호 생성
+관리 권한이 없는 사용자는 비밀번호를 직접 설정할 수 없으므로, 사용자가 계정을 설정할 수 있도록 비밀번호를 해시하여 관리자에게 제공하기 전에 [이 생성기](https://tools.keycdn.com/sha256-online-generator)를 사용해 해시하도록 요청하십시오.
+:::
+
+```sql
+CREATE USER userName IDENTIFIED WITH sha256_hash BY 'hash';
+```
+
+### 안전한 셸(SSH) 인증을 사용하는 데이터베이스 사용자 {#database-ssh}
+
+ClickHouse Cloud 데이터베이스 사용자에 대한 SSH 인증을 설정하려면 다음 단계를 따르십시오.
+
+1. ssh-keygen을 사용하여 키 쌍을 생성합니다.
+2. 공개 키를 사용하여 사용자를 생성합니다.
+3. 역할 및/또는 권한을 사용자에게 할당합니다.
+4. 개인 키를 사용하여 서비스에 대해 인증합니다.
+
+자세한 예제와 함께하는 설명서는 [SSH 키를 사용하여 ClickHouse Cloud에 연결하는 방법](/knowledgebase/how-to-connect-to-ch-cloud-using-ssh-keys)에서 확인할 수 있습니다.
+
+## 데이터베이스 권한 {#database-permissions}
+서비스 및 데이터베이스 내에서 SQL [GRANT](/sql-reference/statements/grant) 문을 사용하여 다음을 구성하십시오.
+
+| 역할 | 설명 |
+|:----------------------|:---------------------------------------------------------------------------|
+| 기본 | 서비스에 대한 전체 관리 액세스 |
+| 사용자 정의 | SQL [`GRANT`](/sql-reference/statements/grant) 문을 사용하여 구성 |
+
+- 데이터베이스 역할은 누적적입니다. 즉, 사용자가 두 개의 역할에 속하는 경우, 사용자는 두 역할에서 부여된 최대 액세스를 갖습니다. 역할을 추가한다고 해서 액세스가 줄어들지 않습니다.
+- 데이터베이스 역할은 다른 역할에 부여될 수 있어 계층 구조를 형성합니다. 역할은 속한 역할의 모든 권한을 상속받습니다.
+- 데이터베이스 역할은 서비스마다 고유하며, 동일한 서비스 내의 여러 데이터베이스에 걸쳐 적용할 수 있습니다.
+
+아래 그림은 사용자가 권한을 부여받을 수 있는 다양한 방법을 보여줍니다.
+
+
+
+### 초기 설정 {#initial-settings}
+데이터베이스에는 서비스 생성 시 기본 역할이 부여되는 `default`라는 계정이 자동으로 추가됩니다. 서비스를 생성한 사용자는 서비스가 생성될 때 `default` 계정에 할당된 자동 생성된 임의 비밀번호를 받습니다. 초기 설정 후에는 비밀번호가 표시되지 않지만, 이후에 콘솔에서 서비스 관리자 권한이 있는 사용자가 변경할 수 있습니다. 이 계정이나 콘솔에서 서비스 관리자 권한이 있는 계정은 언제든지 추가 데이터베이스 사용자 및 역할을 설정할 수 있습니다.
+
+:::note
+콘솔에서 `default` 계정에 할당된 비밀번호를 변경하려면, 왼쪽의 서비스 메뉴로 이동하여 서비스를 선택하고, 설정 탭으로 가서 비밀번호 재설정 버튼을 클릭하십시오.
+:::
+
+우리는 사용자가 특정 개인과 관련된 새 사용자 계정을 만들고 기본 역할을 부여할 것을 권장합니다. 이는 사용자가 수행한 활동이 사용자 ID로 식별되도록 하고 `default` 계정은 비상 상황에서만 사용되도록 하기 위함입니다.
+
+```sql
+CREATE USER userID IDENTIFIED WITH sha256_hash by 'hashed_password';
+GRANT default_role to userID;
+```
+
+사용자는 SHA256 해시 생성기 또는 Python의 `hashlib`와 같은 코드 기능을 사용하여 적절한 복잡성 있는 12자 이상의 비밀번호를 SHA256 문자열로 변환하여 시스템 관리자에게 비밀번호로 제공할 수 있습니다. 이는 관리자가 일반 텍스트 비밀번호를 보거나 처리하지 않도록 보장합니다.
+
+### SQL 콘솔 사용자를 통한 데이터베이스 접근 목록 {#database-access-listings-with-sql-console-users}
+다음 프로세스를 사용하여 귀하의 조직 내 SQL 콘솔 및 데이터베이스에서 전체 접근 목록을 생성할 수 있습니다.
+
+
+
+#### 모든 데이터베이스 권한 목록 가져오기 {#get-a-list-of-all-database-grants}
+
+다음 쿼리를 실행하여 데이터베이스의 모든 권한 목록을 가져옵니다.
+
+```sql
+SELECT grants.user_name,
+grants.role_name,
+users.name AS role_member,
+grants.access_type,
+grants.database,
+grants.table
+FROM system.grants LEFT OUTER JOIN system.role_grants ON grants.role_name = role_grants.granted_role_name
+LEFT OUTER JOIN system.users ON role_grants.user_name = users.name
+
+UNION ALL
+
+SELECT grants.user_name,
+grants.role_name,
+role_grants.role_name AS role_member,
+grants.access_type,
+grants.database,
+grants.table
+FROM system.role_grants LEFT OUTER JOIN system.grants ON role_grants.granted_role_name = grants.role_name
+WHERE role_grants.user_name is null;
+```
+
+#### SQL 콘솔에 접근할 수 있는 콘솔 사용자와 권한 목록 연결 {#associate-grant-list-to-console-users-with-access-to-sql-console}
+
+이 목록을 SQL 콘솔에 접근할 수 있는 콘솔 사용자와 연결합니다.
+
+a. 콘솔로 이동합니다.
+
+b. 관련 서비스를 선택합니다.
+
+c. 왼쪽에서 설정을 선택합니다.
+
+d. SQL 콘솔 접근 섹션으로 스크롤합니다.
+
+e. 데이터베이스에 접근할 수 있는 사용자 수를 나타내는 `There are # users with access to this service.` 링크를 클릭하여 사용자 목록을 확인합니다.
+
+
+
+## 웨어하우스 사용자 {#warehouse-users}
+
+웨어하우스 사용자는 동일한 웨어하우스 내의 서비스 간에 공유됩니다. 자세한 내용은 [웨어하우스 접근 제어](/cloud/reference/warehouses#access-controls)를 검토하시기 바랍니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_manage-database-users.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_manage-database-users.md.hash
new file mode 100644
index 00000000000..8f486d21f3c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_manage-database-users.md.hash
@@ -0,0 +1 @@
+e089f5bc42f6e9ef
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_saml-sso-setup.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_saml-sso-setup.md
new file mode 100644
index 00000000000..c1707c3f88c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_saml-sso-setup.md
@@ -0,0 +1,375 @@
+---
+'sidebar_label': 'SAML SSO 설정'
+'slug': '/cloud/security/saml-setup'
+'title': 'SAML SSO 설정'
+'description': 'ClickHouse Cloud와 함께 SAML SSO를 설정하는 방법'
+'doc_type': 'guide'
+'keywords':
+- 'ClickHouse Cloud'
+- 'SAML'
+- 'SSO'
+- 'single sign-on'
+- 'IdP'
+- 'Okta'
+- 'Google'
+---
+
+import Image from '@theme/IdealImage';
+import samlOrgId from '@site/static/images/cloud/security/saml-org-id.png';
+import samlOktaSetup from '@site/static/images/cloud/security/saml-okta-setup.png';
+import samlGoogleApp from '@site/static/images/cloud/security/saml-google-app.png';
+import samlAzureApp from '@site/static/images/cloud/security/saml-azure-app.png';
+import samlAzureClaims from '@site/static/images/cloud/security/saml-azure-claims.png';
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge'
+
+
+# SAML SSO 설정
+
+
+
+ClickHouse Cloud는 보안 주장 마크업 언어(SAML)를 통한 단일 로그인(SSO)을 지원합니다. 이를 통해 신원 공급자(IdP)로 인증하여 ClickHouse Cloud 조직에 안전하게 로그인할 수 있습니다.
+
+현재 서비스 공급자 주도 SSO, 별도의 연결을 사용하는 여러 조직 및 즉시 프로비저닝을 지원합니다. 크로스 도메인 신원 관리 시스템(SCIM)이나 속성 매핑은 아직 지원하지 않습니다.
+
+## 시작하기 전에 {#before-you-begin}
+
+IdP에서 관리자 권한 및 ClickHouse Cloud 조직에서 **Admin** 역할이 필요합니다. IdP 내에서 연결을 설정한 후 아래 절차에서 요청한 정보를 가지고 저희에게 연락하여 프로세스를 완료하십시오.
+
+로그인 프로세스를 간소화하기 위해 SAML 연결 외에 조직에 대한 **직접 링크**를 설정하는 것을 권장합니다. 각 IdP는 이를 다르게 처리합니다. 귀하의 IdP에 대해 이를 설정하는 방법은 계속 읽어보십시오.
+
+## IdP 구성 방법 {#how-to-configure-your-idp}
+
+### 단계 {#steps}
+
+
+ 조직 ID 얻기
+
+ 모든 설정은 조직 ID가 필요합니다. 조직 ID를 얻으려면:
+
+ 1. [ClickHouse Cloud](https://console.clickhouse.cloud) 조직에 로그인합니다.
+
+
+
+ 3. 왼쪽 하단에서 **조직** 아래의 조직 이름을 클릭합니다.
+
+ 4. 팝업 메뉴에서 **조직 세부정보**를 선택합니다.
+
+ 5. 아래에서 사용할 **조직 ID**를 기록해 둡니다.
+
+
+
+
+ SAML 통합 구성
+
+ ClickHouse는 서비스 공급자 주도 SAML 연결을 사용합니다. 즉, https://console.clickhouse.cloud 또는 직접 링크를 통해 로그인할 수 있습니다. 현재 신원 공급자 주도 연결은 지원하지 않습니다. 기본 SAML 구성에는 다음이 포함됩니다:
+
+- SSO URL 또는 ACS URL: `https://auth.clickhouse.cloud/login/callback?connection={organizationid}`
+
+- Audience URI 또는 Entity ID: `urn:auth0:ch-production:{organizationid}`
+
+- 애플리케이션 사용자 이름: `email`
+
+- 속성 매핑: `email = user.email`
+
+- 조직에 접근하기 위한 직접 링크: `https://console.clickhouse.cloud/?connection={organizationid}`
+
+ 특정 구성 단계는 아래의 특정 신원 공급자를 참조하십시오.
+
+
+
+
+ 연결 정보 얻기
+
+ 신원 공급자 SSO URL 및 x.509 인증서를 얻습니다. 이 정보를 검색하는 방법에 대한 지침은 아래의 특정 신원 공급자를 참조하십시오.
+
+
+
+
+ 지원 사례 제출
+
+ 1. ClickHouse Cloud 콘솔로 돌아갑니다.
+
+ 2. 왼쪽에서 **도움말**을 선택한 다음, 지원 하위 메뉴를 선택합니다.
+
+ 3. **새 사례**를 클릭합니다.
+
+ 4. 주제로 "SAML SSO 설정"을 입력합니다.
+
+ 5. 설명란에 위에서 수집한 링크를 붙여넣고 티켓에 인증서를 첨부합니다.
+
+ 6. 이 연결에 대해 어떤 도메인이 허용되어야 하는지 알려주세요 (예: domain.com, domain.ai 등).
+
+ 7. 새 사례를 만듭니다.
+
+ 8. ClickHouse Cloud 내에서 설정을 완료하고 테스트 준비가 되었을 때 알려드리겠습니다.
+
+
+
+
+ 설정 완료
+
+ 1. 신원 공급자에서 사용자 액세스를 할당합니다.
+
+ 2. https://console.clickhouse.cloud 또는 위의 'SAML 통합 구성'에서 구성한 직접 링크를 통해 ClickHouse에 로그인합니다. 사용자는 처음에 'Member' 역할이 할당되어 조직에 로그인하고 개인 설정을 업데이트할 수 있습니다.
+
+ 3. ClickHouse 조직에서 로그아웃합니다.
+
+ 4. 원래 인증 방법으로 로그인하여 새로운 SSO 계정에 Admin 역할을 할당합니다.
+- 이메일 + 비밀번호 계정의 경우 `https://console.clickhouse.cloud/?with=email`을 사용해 주세요.
+- 소셜 로그인의 경우, 적절한 버튼(**Continue with Google** 또는 **Continue with Microsoft**)을 클릭해 주세요.
+
+:::note
+`?with=email`의 `email`은 리터럴 매개변수 값이며, 플레이스홀더가 아닙니다.
+:::
+
+ 5. 원래 인증 방법으로 로그아웃하고 https://console.clickhouse.cloud 또는 위의 'SAML 통합 구성'에서 구성한 직접 링크를 통해 다시 로그인합니다.
+
+ 6. 비SAML 사용자 제거하기 - organizaiton에 대해 SAML을 활성화합니다. 앞으로 사용자는 귀하의 신원 공급자를 통해 할당됩니다.
+
+
+
+### Okta SAML 구성 {#configure-okta-saml}
+
+각 ClickHouse 조직에 대해 Okta에서 두 개의 앱 통합을 구성합니다: 하나의 SAML 앱과 하나의 직접 링크를 위한 북마크입니다.
+
+
+ 1. 액세스를 관리할 그룹 생성
+
+ 1. **관리자**로 Okta 인스턴스에 로그인합니다.
+
+ 2. 왼쪽의 **그룹**을 선택합니다.
+
+ 3. **그룹 추가**를 클릭합니다.
+
+ 4. 그룹의 이름과 설명을 입력합니다. 이 그룹은 SAML 앱과 관련된 북마크 앱 간의 사용자 일관성을 유지하는 데 사용됩니다.
+
+ 5. **저장**을 클릭합니다.
+
+ 6. 생성한 그룹의 이름을 클릭합니다.
+
+ 7. **사용자 할당**을 클릭하여 ClickHouse 조직에 액세스할 수 있는 사용자를 할당합니다.
+
+
+
+
+ 2. 사용자들이 원활하게 로그인할 수 있도록 북마크 앱 생성
+
+ 1. 왼쪽에서 **애플리케이션**을 선택한 다음 **애플리케이션** 하위 제목을 선택합니다.
+
+ 2. **앱 카탈로그 탐색**을 클릭합니다.
+
+ 3. **Bookmark App**을 검색하고 선택합니다.
+
+ 4. **통합 추가**를 클릭합니다.
+
+ 5. 앱의 레이블을 선택합니다.
+
+ 6. URL을 `https://console.clickhouse.cloud/?connection={organizationid}`로 입력합니다.
+
+ 7. **할당** 탭으로 이동하여 위에서 생성한 그룹을 추가합니다.
+
+
+
+
+ 3. 연결을 활성화하기 위한 SAML 앱 생성
+
+ 1. 왼쪽에서 **애플리케이션**을 선택한 다음 **애플리케이션** 하위 제목을 선택합니다.
+
+ 2. **앱 통합 만들기**를 클릭합니다.
+
+ 3. SAML 2.0을 선택하고 다음을 클릭합니다.
+
+ 4. 애플리케이션 이름을 입력하고 **사용자에게 애플리케이션 아이콘을 표시하지 않음** 옆의 체크박스를 체크한 후 **다음**을 클릭합니다.
+
+ 5. 다음 값을 사용하여 SAML 설정 화면을 채웁니다.
+
+ | 필드 | 값 |
+ |--------------------------------|-------|
+ | 단일 사인온 URL | `https://auth.clickhouse.cloud/login/callback?connection={organizationid}` |
+ | Audience URI (SP Entity ID) | `urn:auth0:ch-production:{organizationid}` |
+ | 기본 RelayState | 비워 두기 |
+ | Name ID 형식 | 지정되지 않음 |
+ | 애플리케이션 사용자 이름 | 이메일 |
+ | 애플리케이션 사용자 이름 업데이트 | 생성 및 업데이트 |
+
+ 7. 다음 Attribute Statement을 입력합니다.
+
+ | 이름 | 이름 형식 | 값 |
+ |---------|---------------|------------|
+ | email | Basic | user.email |
+
+ 9. **다음**을 클릭합니다.
+
+ 10. 피드백 화면에서 요청한 정보를 입력하고 **완료**를 클릭합니다.
+
+ 11. **할당** 탭으로 이동하여 위에서 생성한 그룹을 추가합니다.
+
+ 12. 새 앱의 **Sign On** 탭에서 **SAML 설정 지침 보기** 버튼을 클릭합니다.
+
+
+
+ 13. 이 세 가지 항목을 수집하고 프로세스를 완료하기 위해 위의 지원 사례 제출로 이동합니다.
+ - 신원 공급자 단일 사인온 URL
+ - 신원 공급자 발급자
+ - X.509 인증서
+
+
+
+### Google SAML 구성 {#configure-google-saml}
+
+각 조직에 대해 Google에서 하나의 SAML 앱을 구성하고 사용자가 북마크할 수 있도록 직접 링크(`https://console.clickhouse.cloud/?connection={organizationId}`)를 제공해야 합니다. 특히 여러 조직의 SSO를 사용하는 경우 필수입니다.
+
+
+ Google 웹 앱 생성
+
+ 1. Google 관리자 콘솔(admin.google.com)로 이동합니다.
+
+
+
+ 2. 왼쪽에서 **앱**, 그런 다음 **웹 및 모바일 앱**을 클릭합니다.
+
+ 3. 상단 메뉴에서 **앱 추가**를 클릭한 후 **사용자 정의 SAML 앱 추가**를 선택합니다.
+
+ 4. 앱의 이름을 입력하고 **계속**을 클릭합니다.
+
+ 5. 이 두 항목을 수집하고 위의 지원 사례를 제출하여 저희에게 정보를 제출하십시오. 주의: 이 데이터를 복사하기 전에 설정을 완료한 경우, 앱의 홈 화면에서 **메타데이터 다운로드**를 클릭하여 X.509 인증서를 얻으세요.
+ - SSO URL
+ - X.509 인증서
+
+ 7. 아래에 ACS URL 및 Entity ID를 입력합니다.
+
+ | 필드 | 값 |
+ |-----------|-------|
+ | ACS URL | `https://auth.clickhouse.cloud/login/callback?connection={organizationid}` |
+ | Entity ID | `urn:auth0:ch-production:{organizationid}` |
+
+ 8. **서명된 응답** 옵션을 체크합니다.
+
+ 9. Name ID 형식으로 **이메일**을 선택하고 Name ID를 **기본 정보 > 주요 이메일**로 남겨둡니다.
+
+ 10. **계속**을 클릭합니다.
+
+ 11. 다음 Attribute 매핑을 입력합니다:
+
+ | 필드 | 값 |
+ |-------------------|---------------|
+ | 기본 정보 | 주요 이메일 |
+ | 앱 속성 | 이메일 |
+
+ 13. **완료**를 클릭합니다.
+
+ 14. 앱을 활성화하려면 모든 사용자에게 대해 **OFF**를 클릭한 후 설정을 **ON**으로 변경합니다. 액세스는 화면 왼쪽에서 그룹이나 조직 단위를 선택하여 제한할 수도 있습니다.
+
+
+
+### Azure (Microsoft) SAML 구성 {#configure-azure-microsoft-saml}
+
+Azure (Microsoft) SAML은 Azure Active Directory (AD) 또는 Microsoft Entra로도 알려질 수 있습니다.
+
+
+ Azure 기업 애플리케이션 생성
+
+ 각 조직에 대해 별도의 로그인 URL이 있는 하나의 애플리케이션 통합을 설정합니다.
+
+ 1. Microsoft Entra 관리 센터에 로그인합니다.
+
+ 2. 왼쪽에서 **애플리케이션 > 기업 애플리케이션**으로 이동합니다.
+
+ 3. 상단 메뉴에서 **신규 애플리케이션**을 클릭합니다.
+
+ 4. 상단 메뉴에서 **자신의 애플리케이션 만들기**를 클릭합니다.
+
+ 5. 이름을 입력하고 **갤러리에서 찾을 수 없는 다른 애플리케이션 통합(비 갤러리)**을 선택한 후 **생성**을 클릭합니다.
+
+
+
+ 6. 왼쪽에서 **사용자 및 그룹**을 클릭하고 사용자를 할당합니다.
+
+ 7. 왼쪽에서 **단일 사인온**을 클릭합니다.
+
+ 8. **SAML**을 클릭합니다.
+
+ 9. 다음 설정을 사용하여 기본 SAML 구성 화면을 채웁니다.
+
+ | 필드 | 값 |
+ |---------------------------|-------|
+ | 식별자 (Entity ID) | `urn:auth0:ch-production:{organizationid}` |
+ | 응답 URL (Assertion Consumer Service URL) | `https://auth.clickhouse.cloud/login/callback?connection={organizationid}` |
+ | 로그인 URL | `https://console.clickhouse.cloud/?connection={organizationid}` |
+ | Relay State | 비워 두기 |
+ | 로그아웃 URL | 비워 두기 |
+
+ 11. Attributes & Claims에서 다음을 추가(A) 또는 업데이트(U)합니다:
+
+ | 주장 이름 | 형식 | 소스 속성 |
+ |--------------------------------------|---------------|------------------|
+ | (U) 고유 사용자 식별자 (Name ID) | 이메일 주소 | user.mail |
+ | (A) 이메일 | Basic | user.mail |
+ | (U) /identity/claims/name | 생략 | user.mail |
+
+
+
+ 12. 다음 두 항목을 수집하고 위의 지원 사례 제출로 이동하여 프로세스를 완료합니다:
+ - 로그인 URL
+ - 인증서 (Base64)
+
+
+
+### Duo SAML 구성 {#configure-duo-saml}
+
+
+ Duo를 위한 일반 SAML 서비스 공급자 생성
+
+ 1. [일반 SAML 서비스 공급자를 위한 Duo 단일 사인온](https://duo.com/docs/sso-generic) 지침을 따릅니다.
+
+ 2. 다음 Bridge Attribute 매핑을 사용합니다:
+
+ | Bridge Attribute | ClickHouse Attribute |
+ |:-------------------|:-----------------------|
+ | 이메일 주소 | 이메일 |
+
+ 3. 다음 값을 사용하여 Duo에서 Cloud 애플리케이션을 업데이트합니다:
+
+ | 필드 | 값 |
+ |:----------|:-------------------------------------------|
+ | Entity ID | `urn:auth0:ch-production:{organizationid}` |
+ | Assertion Consumer Service (ACS) URL | `https://auth.clickhouse.cloud/login/callback?connection={organizationid}` |
+ | 서비스 공급자 로그인 URL | `https://console.clickhouse.cloud/?connection={organizationid}` |
+
+ 4. 이 두 항목을 수집하고 위의 지원 사례 제출로 이동하여 프로세스를 완료합니다:
+ - 단일 사인온 URL
+ - 인증서
+
+
+
+## 작동 방식 {#how-it-works}
+
+### SAML SSO를 통한 사용자 관리 {#user-management-with-saml-sso}
+
+사용자 권한 관리 및 SAML 연결에 대한 접근 제한에 대한 자세한 내용은 [클라우드 사용자 관리](/cloud/security/manage-cloud-users)를 참조하십시오.
+
+### 서비스 공급자 주도 SSO {#service-provider-initiated-sso}
+
+우리는 서비스 공급자 주도 SSO만 사용합니다. 즉, 사용자는 `https://console.clickhouse.cloud`로 이동하여 이메일 주소를 입력하여 인증을 위해 IdP로 리디렉션됩니다. 이미 IdP를 통해 인증된 사용자는 로그인 페이지에서 이메일 주소를 입력하지 않고도 직접 링크를 이용하여 자동으로 조직에 로그인할 수 있습니다.
+
+### 다중 조직 SSO {#multi-org-sso}
+
+ClickHouse Cloud는 각 조직에 대해 별도의 연결을 제공하여 다중 조직 SSO를 지원합니다. 각 조직에 로그인할 때 직접 링크(`https://console.clickhouse.cloud/?connection={organizationid}`)를 사용하십시오. 다른 조직에 로그인하기 전에 반드시 한 조직에서 로그아웃하십시오.
+
+## 추가 정보 {#additional-information}
+
+보안은 인증에 있어 우리의 최우선 사항입니다. 이러한 이유로, SSO 구현 시 몇 가지 결정을 내렸습니다. 사용자에게 알려야 할 사항은 다음과 같습니다.
+
+- **서비스 공급자 주도 인증 흐름만 처리합니다.** 사용자들은 `https://console.clickhouse.cloud`로 이동하여 이메일 주소를 입력하여 신원 공급자로 리디렉션됩니다. 사용자들은 URL을 기억할 필요가 없도록 북마크 애플리케이션 또는 바로 가기를 추가하는 방법에 대한 지침을 제공합니다.
+
+- **SSO 및 비SSO 계정을 자동으로 연결하지 않습니다.** 동일한 이메일 주소를 사용하는 경우에도 ClickHouse 사용자 목록에서 여러 계정을 볼 수 있습니다.
+
+## 일반 문제 해결 {#troubleshooting-common-issues}
+
+| 오류 | 원인 | 해결책 |
+|:------|:------|:---------|
+| 시스템에 잘못된 구성이 있거나 서비스 중단이 있을 수 있습니다 | 신원 공급자 주도 로그인 | 이 오류를 해결하려면 직접 링크 `https://console.clickhouse.cloud/?connection={organizationid}`를 사용해 보십시오. 위의 신원 공급자에 대한 지침을 따라 사용자의 기본 로그인 방법으로 설정하시기 바랍니다. |
+| 신원 공급자로 리디렉션된 후 로그인 페이지로 돌아갑니다 | 신원 공급자에 이메일 속성 매핑이 없습니다 | 위의 신원 공급자에 대한 지침을 따라 사용자 이메일 속성을 구성하고 다시 로그인합니다. |
+| 사용자가 이 애플리케이션에 할당되지 않았습니다 | 사용자가 신원 공급자의 ClickHouse 애플리케이션에 할당되지 않았습니다 | 신원 공급자에서 애플리케이션에 사용자를 할당하고 다시 로그인합니다. |
+| 여러 ClickHouse 조직과 SAML SSO를 통합했으나, 사용한 링크나 타일과 관계없이 항상 같은 조직에 로그인되어 있습니다 | 첫 번째 조직에 여전히 로그인되어 있습니다 | 로그아웃한 후 다른 조직에 로그인합니다. |
+| URL이 잠깐 `access denied`를 표시합니다 | 귀하의 이메일 도메인이 설정한 도메인과 일치하지 않습니다 | 이 오류를 해결하기 위해 지원팀에 문의하십시오. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_saml-sso-setup.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_saml-sso-setup.md.hash
new file mode 100644
index 00000000000..8b94c357537
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/04_saml-sso-setup.md.hash
@@ -0,0 +1 @@
+8e9ea2612ce9f164
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/05_common-access-management-queries.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/05_common-access-management-queries.md
new file mode 100644
index 00000000000..ee9780a00fc
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/05_common-access-management-queries.md
@@ -0,0 +1,75 @@
+---
+'sidebar_label': '공통 접근 관리 쿼리'
+'title': '공통 접근 관리 쿼리'
+'slug': '/cloud/security/common-access-management-queries'
+'description': '이 문서에서는 SQL 사용자 및 역할 정의의 기본 사항과 이러한 권한 및 허가를 데이터베이스, 테이블, 행 및 컬럼에
+ 적용하는 방법을 보여줍니다.'
+'keywords':
+- 'ClickHouse Cloud'
+- 'access management'
+'doc_type': 'guide'
+---
+
+import CommonUserRolesContent from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_users-and-roles-common.md';
+
+
+# 공통 접근 관리 쿼리
+
+:::tip 자체 관리
+자체 관리 ClickHouse를 사용 중인 경우 [SQL 사용자 및 역할](/guides/sre/user-management/index.md)을 참조하세요.
+:::
+
+이 문서에서는 SQL 사용자 및 역할을 정의하고 이러한 권한 및 허가를 데이터베이스, 테이블, 행 및 컬럼에 적용하는 기본 사항을 보여줍니다.
+
+## 관리자 사용자 {#admin-user}
+
+ClickHouse Cloud 서비스에는 서비스가 생성될 때 생성되는 관리자 사용자 `default`가 있습니다. 비밀번호는 서비스 생성 시 제공되며, **Admin** 역할을 가진 ClickHouse Cloud 사용자가 재설정할 수 있습니다.
+
+ClickHouse Cloud 서비스에 추가 SQL 사용자를 추가하려면 SQL 사용자 이름과 비밀번호가 필요합니다. 그들에게 관리자 수준의 권한을 부여하려면 새로운 사용자에게 `default_role` 역할을 부여하세요. 예를 들어, 사용자 `clickhouse_admin` 추가:
+
+```sql
+CREATE USER IF NOT EXISTS clickhouse_admin
+IDENTIFIED WITH sha256_password BY 'P!@ssword42!';
+```
+
+```sql
+GRANT default_role TO clickhouse_admin;
+```
+
+:::note
+SQL 콘솔을 사용할 때 귀하의 SQL 문은 `default` 사용자로 실행되지 않습니다. 대신, 문은 `sql-console:${cloud_login_email}`이라는 이름의 사용자로 실행되며, 여기서 `cloud_login_email`은 현재 쿼리를 실행 중인 사용자의 이메일입니다.
+
+자동으로 생성된 SQL 콘솔 사용자는 `default` 역할을 가집니다.
+:::
+
+## 비밀번호 없는 인증 {#passwordless-authentication}
+
+SQL 콘솔에서 사용할 수 있는 두 가지 역할이 있습니다: `default_role`과 동일한 권한을 가진 `sql_console_admin`과 읽기 전용 권한을 가진 `sql_console_read_only`입니다.
+
+관리자 사용자는 기본적으로 `sql_console_admin` 역할이 할당되므로 이들에게는 변경 사항이 없습니다. 그러나 `sql_console_read_only` 역할은 비관리자 사용자가 모든 인스턴스에 대한 읽기 전용 또는 전체 접근 권한을 부여받을 수 있도록 합니다. 관리자가 이 접근을 구성해야 합니다. 역할은 인스턴스 특정 요구 사항에 맞게 `GRANT` 또는 `REVOKE` 명령을 사용하여 조정할 수 있으며, 이 역할에 대한 변경 사항은 지속적으로 유지됩니다.
+
+### 세분화된 접근 제어 {#granular-access-control}
+
+이 접근 제어 기능은 사용자 수준의 세분화된 제어를 위해 수동으로 구성할 수 있습니다. 새로운 `sql_console_*` 역할을 사용자에게 부여하기 전에, 네임스페이스 `sql-console-role:`에 일치하는 SQL 콘솔 사용자 전용 데이터베이스 역할을 생성해야 합니다. 예를 들면:
+
+```sql
+CREATE ROLE OR REPLACE sql-console-role:;
+GRANT TO sql-console-role:;
+```
+
+일치하는 역할이 감지되면 사용자가 보일러플레이트 역할 대신 할당됩니다. 이는 `sql_console_sa_role` 및 `sql_console_pm_role`와 같은 역할을 생성하고 특정 사용자에게 부여하는 등의 더 복잡한 접근 제어 구성을 도입합니다. 예를 들면:
+
+```sql
+CREATE ROLE OR REPLACE sql_console_sa_role;
+GRANT TO sql_console_sa_role;
+CREATE ROLE OR REPLACE sql_console_pm_role;
+GRANT TO sql_console_pm_role;
+CREATE ROLE OR REPLACE `sql-console-role:christoph@clickhouse.com`;
+CREATE ROLE OR REPLACE `sql-console-role:jake@clickhouse.com`;
+CREATE ROLE OR REPLACE `sql-console-role:zach@clickhouse.com`;
+GRANT sql_console_sa_role to `sql-console-role:christoph@clickhouse.com`;
+GRANT sql_console_sa_role to `sql-console-role:jake@clickhouse.com`;
+GRANT sql_console_pm_role to `sql-console-role:zach@clickhouse.com`;
+```
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/05_common-access-management-queries.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/05_common-access-management-queries.md.hash
new file mode 100644
index 00000000000..8dbd16c5e58
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/05_common-access-management-queries.md.hash
@@ -0,0 +1 @@
+db4798c50cd167da
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/_category_.json
new file mode 100644
index 00000000000..bdfe0505050
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Cloud access management",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/index.md
new file mode 100644
index 00000000000..b0e93770eca
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/index.md
@@ -0,0 +1,27 @@
+---
+'sidebar_label': '클라우드 접근 관리'
+'slug': '/cloud/security/cloud_access_management'
+'title': '클라우드 접근 관리'
+'description': '클라우드 접근 관리에 대해 더 알아보세요'
+'doc_type': 'landing-page'
+'keywords':
+- 'access management'
+- 'security'
+- 'user management'
+- 'permissions'
+- 'authentication'
+---
+
+
+# Cloud access management
+
+이 섹션은 ClickHouse Cloud에서 접근 관리를 위한 자세한 안내서를 포함합니다.
+
+| 페이지 | 설명 |
+|--------------------------------------------------------|-------------------------------------------------------|
+| [내 계정 관리](/cloud/security/manage-my-account) | 비밀번호, MFA 및 계정 복구를 포함하여 자신의 사용자 계정을 관리하는 방법을 설명합니다. |
+| [클라우드 사용자 관리](/cloud/security/manage-cloud-users) | ClickHouse Cloud 콘솔에서 사용자 접근을 관리하기 위한 관리자의 안내서 |
+| [SQL 콘솔 역할 할당 관리](/cloud/guides/sql-console/manage-sql-console-role-assignments) | SQL 콘솔 사용자를 관리하기 위한 관리자의 안내서 |
+| [데이터베이스 사용자 관리](/cloud/security/manage-database-users) | 데이터베이스 사용자를 관리하기 위한 관리자의 안내서 |
+| [SAML SSO 설정](/cloud/security/saml-setup) | SAML 통합을 구성하고 문제를 해결하기 위한 관리자의 안내서 |
+| [일반 접근 관리 쿼리](/cloud/security/common-access-management-queries) | 데이터베이스 권한을 설정하고 검증하는 방법에 대한 자세한 예제 |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/index.md.hash
new file mode 100644
index 00000000000..68a8e26ff2a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/01_cloud_access_management/index.md.hash
@@ -0,0 +1 @@
+882b9e3f118198e8
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/01_setting-ip-filters.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/01_setting-ip-filters.md
new file mode 100644
index 00000000000..425146b42c1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/01_setting-ip-filters.md
@@ -0,0 +1,114 @@
+---
+'sidebar_label': 'IP 필터 설정'
+'slug': '/cloud/security/setting-ip-filters'
+'title': 'IP 필터 설정'
+'description': '이 페이지는 ClickHouse Cloud에서 ClickHouse 서비스에 대한 접근을 제어하기 위해 IP 필터를 설정하는
+ 방법을 설명합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'IP filters'
+- 'IP access list'
+---
+
+import Image from '@theme/IdealImage';
+import ip_filtering_after_provisioning from '@site/static/images/cloud/security/ip-filtering-after-provisioning.png';
+import ip_filter_add_single_ip from '@site/static/images/cloud/security/ip-filter-add-single-ip.png';
+
+## Setting IP filters {#setting-ip-filters}
+
+IP 접근 목록은 어떤 출발지 주소가 연결을 허용하는지 지정함으로써 ClickHouse 서비스 또는 API 키에 대한 트래픽을 필터링합니다. 이러한 목록은 각 서비스 및 각 API 키에 대해 구성할 수 있습니다. 목록은 서비스 또는 API 키 생성 중 또는 이후에 구성할 수 있습니다.
+
+:::important
+ClickHouse Cloud 서비스에 대한 IP 접근 목록 생성을 건너뛰면 해당 서비스에 대한 트래픽이 허용되지 않습니다. ClickHouse 서비스의 IP 접근 목록이 `Allow from anywhere`로 설정된 경우, 공개 IP를 찾는 인터넷 크롤러와 스캐너에 의해 서비스가 주기적으로 유휴 상태에서 활성 상태로 이동될 수 있으며, 이로 인해 예상치 못한 비용이 발생할 수 있습니다.
+:::
+
+## Prepare {#prepare}
+
+시작하기 전에 접근 목록에 추가해야 할 IP 주소 또는 범위를 수집하십시오. 원격 작업자, 대기 위치, VPN 등을 고려하십시오. IP 접근 목록 사용자 인터페이스는 개별 주소와 CIDR 표기법을 수용합니다.
+
+클래스리스 인터도메인 라우팅(CIDR) 표기법을 사용하면 전통적인 클래스 A, B 또는 C (8, 6, 또는 24) 서브넷 마스크 크기보다 작은 IP 주소 범위를 지정할 수 있습니다. [ARIN](https://account.arin.net/public/cidrCalculator) 및 여러 다른 조직에서 CIDR 계산기가 필요하면 제공하며, CIDR 표기법에 대한 추가 정보는 [클래스리스 인터도메인 라우팅(CIDR)](https://www.rfc-editor.org/rfc/rfc4632.html) RFC를 참조하십시오.
+
+## Create or modify an IP access list {#create-or-modify-an-ip-access-list}
+
+:::note Applicable only to connections outside of PrivateLink
+IP 접근 목록은 [PrivateLink](/cloud/security/connectivity/private-networking) 밖의 공용 인터넷에서의 연결에만 적용됩니다.
+만약 PrivateLink에서의 트래픽만 원할 경우, IP 허용 목록에 `DenyAll`을 설정하십시오.
+:::
+
+
+ ClickHouse 서비스에 대한 IP 접근 목록
+
+ ClickHouse 서비스를 생성할 때 IP 허용 목록의 기본 설정은 'Allow from nowhere.'입니다.
+
+ ClickHouse Cloud 서비스 목록에서 서비스를 선택한 후 **Settings**를 선택하십시오. **Security** 섹션 아래에서 IP 접근 목록을 찾을 수 있습니다. Add IPs 버튼을 클릭하십시오.
+
+ 사이드바가 나타나며 다음과 같은 구성 옵션이 제공됩니다:
+
+- 서비스에 대한 모든 곳에서의 수신 트래픽 허용
+- 특정 위치에서 서비스에 대한 접근 허용
+- 서비스에 대한 모든 접근 거부
+
+
+
+ API 키에 대한 IP 접근 목록
+
+ API 키를 생성할 때 IP 허용 목록의 기본 설정은 'Allow from anywhere.'입니다.
+
+ API 키 목록에서 **Actions** 열의 API 키 옆에 있는 세 개의 점을 클릭하고 **Edit**를 선택하십시오. 화면 하단에서 IP 접근 목록과 구성 옵션을 찾을 수 있습니다:
+
+- 서비스에 대한 모든 곳에서의 수신 트래픽 허용
+- 특정 위치에서 서비스에 대한 접근 허용
+- 서비스에 대한 모든 접근 거부
+
+
+
+이 스크린샷은 "NY Office range"로 설명된 IP 주소 범위에서 트래픽을 허용하는 접근 목록을 보여줍니다:
+
+
+
+### Possible actions {#possible-actions}
+
+1. 추가 항목을 추가하려면 **+ Add new IP**를 사용할 수 있습니다.
+
+ 이 예는 `London server`라는 설명이 있는 단일 IP 주소를 추가합니다:
+
+
+
+2. 기존 항목 삭제
+
+ 크로스(x)를 클릭하면 항목이 삭제됩니다.
+
+3. 기존 항목 수정
+
+ 항목을 직접 수정합니다.
+
+4. **Anywhere**에서의 접근 허용으로 전환
+
+ 이는 권장되지 않지만 허용됩니다. ClickHouse 위에 구축된 애플리케이션을 공개하고 백엔드 ClickHouse Cloud 서비스에 대한 접근을 제한하는 것이 좋습니다.
+
+변경 사항을 적용하려면 **Save**를 클릭해야 합니다.
+
+## Verification {#verification}
+
+필터를 생성한 후, 허용된 범위 내에서 서비스에 대한 연결을 확인하고, 허용된 범위를 벗어난 외부에서의 연결이 거부되는지 확인하십시오. 간단한 `curl` 명령을 사용하여 확인할 수 있습니다:
+```bash title="Attempt rejected from outside the allow list"
+curl https://.clickhouse.cloud:8443
+```
+```response
+curl: (35) error:02FFF036:system library:func(4095):Connection reset by peer
+```
+또는
+```response
+curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to HOSTNAME.clickhouse.cloud:8443
+```
+
+```bash title="Attempt permitted from inside the allow list"
+curl https://.clickhouse.cloud:8443
+```
+```response
+Ok.
+```
+
+## Limitations {#limitations}
+
+- 현재 IP 접근 목록은 IPv4만 지원합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/01_setting-ip-filters.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/01_setting-ip-filters.md.hash
new file mode 100644
index 00000000000..00e9c4ef36e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/01_setting-ip-filters.md.hash
@@ -0,0 +1 @@
+f88cd03b1d261e54
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/_category_.json
new file mode 100644
index 00000000000..2d0bb58f6f7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Connectivity",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/02_aws-privatelink.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/02_aws-privatelink.md
new file mode 100644
index 00000000000..5573ec3e60c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/02_aws-privatelink.md
@@ -0,0 +1,385 @@
+---
+'title': 'AWS PrivateLink'
+'description': '이 문서는 AWS PrivateLink를 사용하여 ClickHouse Cloud에 연결하는 방법을 설명합니다.'
+'slug': '/manage/security/aws-privatelink'
+'keywords':
+- 'PrivateLink'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import ScalePlanFeatureBadge from '@theme/badges/ScalePlanFeatureBadge';
+import aws_private_link_pecreate from '@site/static/images/cloud/security/aws-privatelink-pe-create.png';
+import aws_private_link_endpoint_settings from '@site/static/images/cloud/security/aws-privatelink-endpoint-settings.png';
+import aws_private_link_select_vpc from '@site/static/images/cloud/security/aws-privatelink-select-vpc-and-subnets.png';
+import aws_private_link_vpc_endpoint_id from '@site/static/images/cloud/security/aws-privatelink-vpc-endpoint-id.png';
+import aws_private_link_endpoints_menu from '@site/static/images/cloud/security/aws-privatelink-endpoints-menu.png';
+import aws_private_link_modify_dnsname from '@site/static/images/cloud/security/aws-privatelink-modify-dns-name.png';
+import pe_remove_private_endpoint from '@site/static/images/cloud/security/pe-remove-private-endpoint.png';
+import aws_private_link_pe_filters from '@site/static/images/cloud/security/aws-privatelink-pe-filters.png';
+import aws_private_link_ped_nsname from '@site/static/images/cloud/security/aws-privatelink-pe-dns-name.png';
+
+
+# AWS PrivateLink
+
+
+
+[AWS PrivateLink](https://aws.amazon.com/privatelink/) 를 사용하여 VPC, AWS 서비스, 온프레미스 시스템 및 ClickHouse Cloud 간의 보안 연결을 설정할 수 있으며, 이를 통해 트래픽을 공용 인터넷에 노출하지 않습니다. 이 문서에서는 AWS PrivateLink를 사용하여 ClickHouse Cloud에 연결하는 단계를 설명합니다.
+
+ClickHouse Cloud 서비스에 대한 액세스를 AWS PrivateLink 주소를 통해 전용으로 제한하려면 ClickHouse Cloud의 [IP 액세스 목록](/cloud/security/setting-ip-filters)에서 제공하는 지침을 따르십시오.
+
+:::note
+ClickHouse Cloud는 다음 지역에서 [교차 지역 PrivateLink](https://aws.amazon.com/about-aws/whats-new/2024/11/aws-privatelink-across-region-connectivity/)를 지원합니다:
+- sa-east-1
+- il-central-1
+- me-central-1
+- me-south-1
+- eu-central-2
+- eu-north-1
+- eu-south-2
+- eu-west-3
+- eu-south-1
+- eu-west-2
+- eu-west-1
+- eu-central-1
+- ca-west-1
+- ca-central-1
+- ap-northeast-1
+- ap-southeast-2
+- ap-southeast-1
+- ap-northeast-2
+- ap-northeast-3
+- ap-south-1
+- ap-southeast-4
+- ap-southeast-3
+- ap-south-2
+- ap-east-1
+- af-south-1
+- us-west-2
+- us-west-1
+- us-east-2
+- us-east-1
+가격 고려 사항: AWS는 지역 간 데이터 전송에 대해 요금을 청구합니다. 가격은 [여기](https://aws.amazon.com/privatelink/pricing/)를 참조하십시오.
+:::
+
+**AWS PrivateLink를 사용하도록 설정하려면 다음을 완료하십시오:**
+1. 엔드포인트 "서비스 이름"을 얻으십시오.
+1. AWS 엔드포인트를 생성하십시오.
+1. ClickHouse Cloud 조직에 "Endpoint ID"를 추가하십시오.
+1. ClickHouse 서비스 허용 목록에 "Endpoint ID"를 추가하십시오.
+
+Terraform 예제는 [여기](https://github.com/ClickHouse/terraform-provider-clickhouse/tree/main/examples/)에서 찾을 수 있습니다.
+
+## 중요 고려 사항 {#considerations}
+ClickHouse는 AWS 지역 내에서 동일한 게시된 [서비스 엔드포인트](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html#endpoint-service-overview)를 재사용하기 위해 서비스를 그룹화하려고 시도합니다. 그러나 이러한 그룹화는 보장되지 않으며, 특히 서비스를 여러 ClickHouse 조직에 걸쳐 배포하는 경우에는 더욱 그렇습니다. 이미 ClickHouse 조직의 다른 서비스에 대해 PrivateLink가 구성된 경우, 대부분의 단계를 건너뛰고 최종 단계인 ClickHouse "Endpoint ID"를 ClickHouse 서비스 허용 목록에 추가하는 단계로 바로 진행할 수 있습니다.
+
+## 이 프로세스의 전제 조건 {#prerequisites}
+
+시작하기 전에 다음이 필요합니다:
+
+1. 귀하의 AWS 계정.
+1. ClickHouse에서 개인 엔드포인트를 생성하고 관리하는 데 필요한 권한을 가진 [ClickHouse API 키](/cloud/manage/openapi).
+
+## 단계 {#steps}
+
+AWS PrivateLink를 통해 ClickHouse Cloud 서비스에 연결하려면 다음 단계를 따르십시오.
+
+### 엔드포인트 "서비스 이름" 획득 {#obtain-endpoint-service-info}
+
+#### 옵션 1: ClickHouse Cloud 콘솔 {#option-1-clickhouse-cloud-console}
+
+ClickHouse Cloud 콘솔에서 PrivateLink를 통해 연결할 서비스를 열고 **설정** 메뉴로 이동합니다.
+
+
+
+`서비스 이름` 및 `DNS 이름`을 메모한 후, [다음 단계로 이동하십시오](#create-aws-endpoint).
+
+#### 옵션 2: API {#option-2-api}
+
+먼저, 명령어를 실행하기 전에 다음 환경 변수를 설정합니다:
+
+```shell
+REGION=
+PROVIDER=aws
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+SERVICE_NAME=
+```
+
+지역, 제공자 및 서비스 이름으로 필터링하여 ClickHouse `INSTANCE_ID`를 가져옵니다:
+
+```shell
+INSTANCE_ID=$(curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
+"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services" | \
+jq ".result[] | select (.region==\"${REGION:?}\" and .provider==\"${PROVIDER:?}\" and .name==\"${SERVICE_NAME:?}\") | .id " -r)
+```
+
+PrivateLink 구성을 위해 `endpointServiceId` 및 `privateDnsHostname`를 받습니다:
+
+```bash
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
+"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | \
+jq .result
+```
+
+이 명령어는 다음과 같은 결과를 반환해야 합니다:
+
+```result
+{
+ "endpointServiceId": "com.amazonaws.vpce.us-west-2.vpce-svc-xxxxxxxxxxxxxxxxx",
+ "privateDnsHostname": "xxxxxxxxxx.us-west-2.vpce.aws.clickhouse.cloud"
+}
+```
+
+`endpointServiceId` 및 `privateDnsHostname`를 메모하십시오. [다음 단계로 이동하십시오](#create-aws-endpoint).
+
+### AWS 엔드포인트 생성 {#create-aws-endpoint}
+
+:::important
+이 섹션에서는 AWS PrivateLink를 통해 ClickHouse를 구성하기 위한 ClickHouse 전용 세부정보를 다룹니다. AWS 관련 단계는 안내를 위해 제공되며 시간이 지남에 따라 예고 없이 변경될 수 있습니다. 특정 사용 사례에 따라 AWS 구성을 고려하십시오.
+
+ClickHouse는 필요한 AWS VPC 엔드포인트, 보안 그룹 규칙 또는 DNS 레코드를 구성하는 것에 대해 책임지지 않습니다.
+
+이전에 PrivateLink 설정 시 "개인 DNS 이름"을 활성화한 경우 새로운 서비스를 PrivateLink를 통해 구성하는 데 어려움을 겪고 있다면, ClickHouse 지원팀에 문의하십시오. AWS 구성 작업과 관련된 다른 문제는 AWS 지원팀에 직접 문의하십시오.
+:::
+
+#### 옵션 1: AWS 콘솔 {#option-1-aws-console}
+
+AWS 콘솔을 열고 **VPC** → **Endpoints** → **Create endpoints**로 이동합니다.
+
+**NLB 및 GWLB를 사용하는 엔드포인트 서비스**를 선택하고 [엔드포인트 "서비스 이름"씩 획득한 로그인 정보](#obtain-endpoint-service-info)에서 받은 `Service name`콘솔 또는 `endpointServiceId`API를 **서비스 이름** 필드에 입력합니다. **서비스 확인**을 클릭합니다:
+
+
+
+PrivateLink를 통해 교차 지역 연결을 설정하려면 "교차 지역 엔드포인트" 체크박스를 활성화하고 서비스 지역을 지정하십시오. 서비스 지역은 ClickHouse 인스턴스가 실행되는 지역입니다.
+
+"서비스 이름을 확인할 수 없습니다."라는 오류가 발생하면 고객 지원팀에 연락하여 새 지역을 지원 지역 목록에 추가하도록 요청하십시오.
+
+다음으로 VPC 및 서브넷을 선택합니다:
+
+
+
+선택적 단계로 보안 그룹/태그를 할당합니다:
+
+:::note
+포트 `443`, `8443`, `9440`, `3306`이 보안 그룹에서 허용되어 있는지 확인하십시오.
+:::
+
+VPC 엔드포인트를 만든 후, `Endpoint ID` 값을 메모하십시오. 이후 단계에서 필요합니다.
+
+
+
+#### 옵션 2: AWS CloudFormation {#option-2-aws-cloudformation}
+
+다음으로, [엔드포인트 "서비스 이름"씩 획득한 로그인 정보](#obtain-endpoint-service-info)에서 받은 `Service name`콘솔 또는 `endpointServiceId`API를 사용하여 VPC 엔드포인트를 생성해야 합니다. 올바른 서브넷 ID, 보안 그룹 및 VPC ID를 사용하는지 확인하십시오.
+
+```response
+Resources:
+ ClickHouseInterfaceEndpoint:
+ Type: 'AWS::EC2::VPCEndpoint'
+ Properties:
+ VpcEndpointType: Interface
+ PrivateDnsEnabled: false
+ ServiceName:
+ VpcId: vpc-vpc_id
+ SubnetIds:
+ - subnet-subnet_id1
+ - subnet-subnet_id2
+ - subnet-subnet_id3
+ SecurityGroupIds:
+ - sg-security_group_id1
+ - sg-security_group_id2
+ - sg-security_group_id3
+```
+
+VPC 엔드포인트를 생성한 후, `Endpoint ID` 값을 메모하십시오. 이후 단계에서 필요합니다.
+
+#### 옵션 3: Terraform {#option-3-terraform}
+
+아래의 `service_name`은 [엔드포인트 "서비스 이름"씩 획득한 로그인 정보](#obtain-endpoint-service-info)에서 받은 `Service name`콘솔 또는 `endpointServiceId`API입니다.
+
+```json
+resource "aws_vpc_endpoint" "this" {
+ vpc_id = var.vpc_id
+ service_name = ""
+ vpc_endpoint_type = "Interface"
+ security_group_ids = [
+ Var.security_group_id1,var.security_group_id2, var.security_group_id3,
+ ]
+ subnet_ids = [var.subnet_id1,var.subnet_id2,var.subnet_id3]
+ private_dns_enabled = false
+ service_region = "(Optional) If specified, the VPC endpoint will connect to the service in the provided region. Define it for multi-regional PrivateLink connections."
+}
+```
+
+VPC 엔드포인트를 생성한 후, `Endpoint ID` 값을 메모하십시오. 이후 단계에서 필요합니다.
+
+#### 엔드포인트에 대해 개인 DNS 이름 설정 {#set-private-dns-name-for-endpoint}
+
+:::note
+DNS를 구성하는 방법은 여러 가지가 있습니다. 특정 사용 사례에 따라 DNS를 설정하십시오.
+:::
+
+[엔드포인트 "서비스 이름"씩 획득한 로그인 정보](#obtain-endpoint-service-info)에서 가져온 "DNS 이름"을 AWS 엔드포인트 네트워크 인터페이스로 지정해야 합니다. 이는 VPC/네트워크 내의 서비스/구성 요소들이 이를 올바르게 해석할 수 있도록 보장합니다.
+
+### ClickHouse 서비스 허용 목록에 "Endpoint ID" 추가 {#add-endpoint-id-to-services-allow-list}
+
+#### 옵션 1: ClickHouse Cloud 콘솔 {#option-1-clickhouse-cloud-console-2}
+
+추가하려면 ClickHouse Cloud 콘솔로 이동하여 PrivateLink를 통해 연결할 서비스로 이동한 다음 **설정**으로 가십시오. **개인 엔드포인트 설정**을 클릭하여 개인 엔드포인트 설정을 엽니다. [Create AWS Endpoint](#create-aws-endpoint) 단계에서 얻은 `Endpoint ID`를 입력합니다. "엔드포인트 생성"을 클릭합니다.
+
+:::note
+기존 PrivateLink 연결에서 액세스를 허용하려면 기존 엔드포인트 드롭다운 메뉴를 사용하십시오.
+:::
+
+
+
+제거하려면 ClickHouse Cloud 콘솔로 이동하여 서비스를 찾고, 해당 서비스의 **설정**으로 이동한 후 제거하려는 엔드포인트를 찾습니다. 목록에서 제거합니다.
+
+#### 옵션 2: API {#option-2-api-2}
+
+PrivateLink를 사용하여 접근할 수 있어야 하는 각 인스턴스에 대해 허용 목록에 Endpoint ID를 추가해야 합니다.
+
+[Create AWS Endpoint](#create-aws-endpoint) 단계의 데이터를 사용하여 `ENDPOINT_ID` 환경 변수를 설정하십시오.
+
+명령어를 실행하기 전에 다음 환경 변수를 설정합니다:
+
+```bash
+REGION=
+PROVIDER=aws
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+SERVICE_NAME=
+```
+
+허용 목록에 엔드포인트 ID를 추가하려면:
+
+```bash
+cat <API 또는 `DNS Name`console을 사용해야 합니다.
+
+#### 개인 DNS 호스트 이름 가져오기 {#getting-private-dns-hostname}
+
+##### 옵션 1: ClickHouse Cloud 콘솔 {#option-1-clickhouse-cloud-console-3}
+
+ClickHouse Cloud 콘솔에서 **설정**으로 이동합니다. **개인 엔드포인트 설정** 버튼을 클릭합니다. 열리는 사이드 메뉴에서 **DNS 이름**을 복사합니다.
+
+
+
+##### 옵션 2: API {#option-2-api-3}
+
+명령어를 실행하기 전에 다음 환경 변수를 설정합니다:
+
+```bash
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+INSTANCE_ID=
+```
+
+[step](#option-2-api)에서 `INSTANCE_ID`를 가져올 수 있습니다.
+
+```bash
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
+"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | \
+jq .result
+```
+
+이 명령은 다음과 같은 결과를 출력해야 합니다:
+
+```result
+{
+ "endpointServiceId": "com.amazonaws.vpce.us-west-2.vpce-svc-xxxxxxxxxxxxxxxxx",
+ "privateDnsHostname": "xxxxxxxxxx.us-west-2.vpce.aws.clickhouse.cloud"
+}
+```
+
+이 예제에서는 `privateDnsHostname` 호스트 이름의 값을 통해 PrivateLink로 연결되지만, `endpointServiceId` 호스트 이름을 통해서는 인터넷을 통해 연결됩니다.
+
+## 문제 해결 {#troubleshooting}
+
+### 한 지역의 여러 PrivateLink {#multiple-privatelinks-in-one-region}
+
+대부분의 경우, 각 VPC에 대해 단일 엔드포인트 서비스만 생성하면 됩니다. 이 엔드포인트는 VPC에서 여러 ClickHouse Cloud 서비스로 요청을 라우팅할 수 있습니다. [여기](#considerations)를 참조하십시오.
+
+### 개인 엔드포인트에 대한 연결 시간 초과 {#connection-to-private-endpoint-timed-out}
+
+- VPC 엔드포인트에 보안 그룹을 연결하십시오.
+- 엔드포인트에 연결된 보안 그룹에서 `inbound` 규칙을 확인하고 ClickHouse 포트를 허용하십시오.
+- 연결 테스트에 사용된 VM에 연결된 보안 그룹에서 `outbound` 규칙을 확인하고 ClickHouse 포트에 대한 연결을 허용하십시오.
+
+### 개인 호스트 이름: 호스트의 주소를 찾을 수 없음 {#private-hostname-not-found-address-of-host}
+
+- DNS 구성을 확인하십시오.
+
+### 동료에 의한 연결 재설정 {#connection-reset-by-peer}
+
+- 엔드포인트 ID가 서비스 허용 목록에 추가되지 않았을 가능성이 높습니다. [단계](#add-endpoint-id-to-services-allow-list)를 방문하십시오.
+
+### 엔드포인트 필터 확인 {#checking-endpoint-filters}
+
+명령어를 실행하기 전에 다음 환경 변수를 설정합니다:
+
+```bash
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+INSTANCE_ID=
+```
+
+[step](#option-2-api)에서 `INSTANCE_ID`를 가져올 수 있습니다.
+
+```shell
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
+-X GET -H "Content-Type: application/json" \
+"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" | \
+jq .result.privateEndpointIds
+```
+
+### 원격 데이터베이스에 연결 {#connecting-to-a-remote-database}
+
+[MySQL](/sql-reference/table-functions/mysql) 또는 [PostgreSQL](/sql-reference/table-functions/postgresql) 테이블 함수를 사용하여 ClickHouse Cloud에서 AWS VPC에 호스팅된 데이터베이스에 연결하려고 한다고 가정해 보겠습니다. AWS PrivateLink는 이 연결을 안전하게 활성화하는 데 사용될 수 없습니다. PrivateLink는 단방향 연결입니다. 내부 네트워크 또는 Amazon VPC가 ClickHouse Cloud에 안전하게 연결할 수 있도록 하지만, ClickHouse Cloud가 내부 네트워크에 연결할 수는 없습니다.
+
+[AWS PrivateLink 문서](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/aws-privatelink.html)에 따르면:
+
+> 클라이언트/서버 설정을 사용할 때 AWS PrivateLink를 사용하십시오. 여기서 하나 이상의 소비자 VPC에 서비스 제공자 VPC의 특정 서비스 또는 인스턴스 집합에 대해 단방향 액세스를 허용하려고 합니다. 소비자 VPC의 클라이언트만 서비스 제공자 VPC의 서비스에 연결을 시작할 수 있습니다.
+
+이를 위해 ClickHouse Cloud에서 내부/개인 데이터베이스 서비스로의 연결을 허용하도록 AWS 보안 그룹을 구성하십시오. [ClickHouse Cloud 지역별 기본 이탈 IP 주소]( /manage/data-sources/cloud-endpoints-api)와 함께 [사용 가능한 정적 IP 주소](https://api.clickhouse.cloud/static-ips.json)를 확인하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/02_aws-privatelink.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/02_aws-privatelink.md.hash
new file mode 100644
index 00000000000..ff5845096dd
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/02_aws-privatelink.md.hash
@@ -0,0 +1 @@
+b2c6ce1ebf70f412
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/03_gcp-private-service-connect.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/03_gcp-private-service-connect.md
new file mode 100644
index 00000000000..3752d23776b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/03_gcp-private-service-connect.md
@@ -0,0 +1,441 @@
+---
+'title': 'GCP 개인 서비스 연결'
+'description': '이 문서는 Google Cloud Platform (GCP) Private Service Connect (PSC)를 사용하여
+ ClickHouse Cloud에 연결하는 방법과 ClickHouse Cloud IP 접근 목록을 사용하여 GCP PSC 주소 이외의 주소에서 ClickHouse
+ Cloud 서비스에 대한 접근을 비활성화하는 방법에 대해 설명합니다.'
+'sidebar_label': 'GCP 개인 서비스 연결'
+'slug': '/manage/security/gcp-private-service-connect'
+'doc_type': 'guide'
+'keywords':
+- 'Private Service Connect'
+---
+
+import Image from '@theme/IdealImage';
+import ScalePlanFeatureBadge from '@theme/badges/ScalePlanFeatureBadge';
+import gcp_psc_overview from '@site/static/images/cloud/security/gcp-psc-overview.png';
+import gcp_privatelink_pe_create from '@site/static/images/cloud/security/gcp-privatelink-pe-create.png';
+import gcp_psc_open from '@site/static/images/cloud/security/gcp-psc-open.png';
+import gcp_psc_enable_global_access from '@site/static/images/cloud/security/gcp-psc-enable-global-access.png';
+import gcp_psc_copy_connection_id from '@site/static/images/cloud/security/gcp-psc-copy-connection-id.png';
+import gcp_psc_create_zone from '@site/static/images/cloud/security/gcp-psc-create-zone.png';
+import gcp_psc_zone_type from '@site/static/images/cloud/security/gcp-psc-zone-type.png';
+import gcp_psc_dns_record from '@site/static/images/cloud/security/gcp-psc-dns-record.png';
+import gcp_pe_remove_private_endpoint from '@site/static/images/cloud/security/gcp-pe-remove-private-endpoint.png';
+import gcp_privatelink_pe_filters from '@site/static/images/cloud/security/gcp-privatelink-pe-filters.png';
+import gcp_privatelink_pe_dns from '@site/static/images/cloud/security/gcp-privatelink-pe-dns.png';
+
+
+# Private Service Connect {#private-service-connect}
+
+
+
+Private Service Connect (PSC)는 Google Cloud 네트워킹 기능으로, 소비자가 가상 개인 클라우드(VPC) 네트워크 내에서 관리되는 서비스에 비공식적으로 접근할 수 있도록 합니다. 유사하게, 관리되는 서비스 제공자는 이러한 서비스를 자신의 독립적인 VPC 네트워크에서 호스팅하고 소비자에게 비공식 연결을 제공할 수 있습니다.
+
+서비스 제공자는 Private Service Connect 서비스를 생성하여 소비자에게 응용 프로그램을 게시합니다. 서비스 소비자는 이러한 Private Service Connect 서비스에 다음과 같은 Private Service Connect 유형 중 하나를 통해 직접 접근합니다.
+
+
+
+:::important
+기본적으로 ClickHouse 서비스는 PSC 연결이 승인되고 설정되더라도 Private Service 연결을 통해 제공되지 않습니다. 아래 [단계](#add-endpoint-id-to-services-allow-list)를 완료하여 인스턴스 수준에서 PSC ID를 허용 목록에 명시적으로 추가해야 합니다.
+:::
+
+**Private Service Connect Global Access 사용 시 주의사항**:
+1. Global Access를 사용하는 지역은 동일한 VPC에 속해야 합니다.
+1. Global Access는 PSC 수준에서 명시적으로 활성화해야 합니다(아래 스크린샷 참조).
+1. 방화벽 설정이 다른 지역에서 PSC에 대한 접근을 차단하지 않도록 해야 합니다.
+1. GCP의 지역 간 데이터 전송 요금이 발생할 수 있습니다.
+
+교차 지역 연결은 지원되지 않습니다. 프로듀서와 소비자는 동일한 지역이어야 합니다. 그러나 VPC 내의 다른 지역에서 [Global Access](https://cloud.google.com/vpc/docs/about-accessing-vpc-hosted-services-endpoints#global-access)를 활성화하여 연결할 수 있습니다.
+
+**GCP PSC를 활성화하려면 다음을 완료하십시오**:
+1. Private Service Connect에 대한 GCP 서비스 첨부를 획득합니다.
+1. 서비스 엔드포인트를 생성합니다.
+1. ClickHouse Cloud 서비스에 "Endpoint ID"를 추가합니다.
+1. ClickHouse 서비스 허용 목록에 "Endpoint ID"를 추가합니다.
+
+## Attention {#attention}
+ClickHouse는 서비스를 그룹화하여 GCP 지역 내에서 동일한 게시된 [PSC endpoint](https://cloud.google.com/vpc/docs/private-service-connect)를 재사용하도록 시도합니다. 그러나 이러한 그룹화는 보장되지 않으며, 특히 여러 ClickHouse 조직에 서비스를 분산시킬 경우 더욱 그렇습니다.
+ClickHouse 조직에서 다른 서비스에 대해 PSC를 이미 구성한 경우, 대부분의 단계를 건너뛰고 최종 단계인 [ClickHouse 서비스 허용 목록에 "Endpoint ID" 추가](#add-endpoint-id-to-services-allow-list)로 직접 진행할 수 있습니다.
+
+Terraform 예제는 [여기](https://github.com/ClickHouse/terraform-provider-clickhouse/tree/main/examples/)에서 확인할 수 있습니다.
+
+## Before you get started {#before-you-get-started}
+
+:::note
+코드 예제는 ClickHouse Cloud 서비스 내에서 Private Service Connect를 설정하는 방법을 보여줍니다. 아래의 예제에서는 다음을 사용할 것입니다:
+- GCP 지역: `us-central1`
+- GCP 프로젝트 (고객 GCP 프로젝트): `my-gcp-project`
+- 고객 GCP 프로젝트의 GCP 프라이빗 IP 주소: `10.128.0.2`
+- 고객 GCP 프로젝트의 GCP VPC: `default`
+:::
+
+ClickHouse Cloud 서비스에 대한 정보를 검색해야 합니다. ClickHouse Cloud 콘솔이나 ClickHouse API를 통해 이를 수행할 수 있습니다. ClickHouse API를 사용할 경우, 다음 환경 변수를 설정한 후 진행하십시오:
+
+```shell
+REGION=
+PROVIDER=gcp
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+SERVICE_NAME=
+```
+
+[새 ClickHouse Cloud API 키를 생성](/cloud/manage/openapi) 하거나 기존 키를 사용할 수 있습니다.
+
+지역, 제공자 및 서비스 이름으로 필터링하여 ClickHouse `INSTANCE_ID`를 가져옵니다:
+
+```shell
+INSTANCE_ID=$(curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
+"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services" | \
+jq ".result[] | select (.region==\"${REGION:?}\" and .provider==\"${PROVIDER:?}\" and .name==\"${SERVICE_NAME:?}\") | .id " -r)
+```
+
+:::note
+- ClickHouse 콘솔에서 조직 ID를 가져올 수 있습니다(조직 -> 조직 세부정보).
+- [새 키를 생성](/cloud/manage/openapi) 하거나 기존의 키를 사용할 수 있습니다.
+:::
+
+## Obtain GCP service attachment and DNS name for Private Service Connect {#obtain-gcp-service-attachment-and-dns-name-for-private-service-connect}
+
+### Option 1: ClickHouse Cloud console {#option-1-clickhouse-cloud-console}
+
+ClickHouse Cloud 콘솔에서 Private Service Connect를 통해 연결하려는 서비스를 열고 **Settings** 메뉴를 엽니다. **Set up private endpoint** 버튼을 클릭합니다. **Service name** (`endpointServiceId`) 및 **DNS name** (`privateDnsHostname`)를 기록하십시오. 다음 단계에서 사용할 것입니다.
+
+
+
+### Option 2: API {#option-2-api}
+
+:::note
+이 단계를 수행하기 위해서는 해당 지역에 최소한 하나의 인스턴스가 배포되어 있어야 합니다.
+:::
+
+Private Service Connect에 대한 GCP 서비스 첨부 및 DNS 이름을 가져옵니다:
+
+```bash
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .result
+{
+ "endpointServiceId": "projects/.../regions/us-central1/serviceAttachments/production-us-central1-clickhouse-cloud",
+ "privateDnsHostname": "xxxxxxxxxx.us-central1.p.gcp.clickhouse.cloud"
+}
+```
+
+`endpointServiceId` 및 `privateDnsHostname`를 기록하십시오. 다음 단계에서 사용할 것입니다.
+
+## Create service endpoint {#create-service-endpoint}
+
+:::important
+이 섹션은 GCP PSC(Private Service Connect)를 통해 ClickHouse를 구성하기 위한 ClickHouse 특정 세부 정보를 다룹니다. GCP 특정 단계는 참조용으로 제공되어 어디를 보아야 하는지 안내하지만, GCP 클라우드 제공자의 공지 없이 변경될 수 있습니다. 특정 사용 사례에 따라 GCP 구성을 고려하십시오.
+
+ClickHouse는 필요한 GCP PSC 엔드포인트 및 DNS 레코드를 구성할 책임이 없습니다.
+
+GCP 구성 작업과 관련된 문제는 GCP 지원에 직접 문의하십시오.
+:::
+
+이번 섹션에서는 서비스 엔드포인트를 생성합니다.
+
+### Adding a private service connection {#adding-a-private-service-connection}
+
+먼저 Private Service Connection을 생성합니다.
+
+#### Option 1: Using Google Cloud console {#option-1-using-google-cloud-console}
+
+Google Cloud 콘솔에서 **Network services -> Private Service Connect**로 이동합니다.
+
+
+
+**Connect Endpoint** 버튼을 클릭하여 Private Service Connect 생성 대화 상자를 엽니다.
+
+- **Target**: **Published service**를 사용합니다.
+- **Target service**: [Obtain GCP service attachment for Private Service Connect](#obtain-gcp-service-attachment-and-dns-name-for-private-service-connect) 단계에서 `endpointServiceId`API 또는 `Service name`console을 사용합니다.
+- **Endpoint name**: PSC **Endpoint name**에 대한 이름을 설정합니다.
+- **Network/Subnetwork/IP address**: 연결에 사용할 네트워크를 선택합니다. Private Service Connect 엔드포인트에 대한 IP 주소를 생성하거나 기존의 IP 주소를 사용해야 합니다. 본 예제에서는 이름이 **your-ip-address**인 주소를 미리 생성하고 IP 주소 `10.128.0.2`를 할당했습니다.
+- 엔드포인트를 모든 지역에서 사용할 수 있도록 하려면 **Enable global access** 체크박스를 활성화합니다.
+
+
+
+PSC Endpoint를 생성하려면 **ADD ENDPOINT** 버튼을 사용합니다.
+
+연결이 승인되면 **상태** 열이 **Pending**에서 **Accepted**로 변경됩니다.
+
+
+
+***PSC Connection ID***를 복사하여 다음 단계에서 ***Endpoint ID***로 사용할 것입니다.
+
+#### Option 2: Using Terraform {#option-2-using-terraform}
+
+```json
+provider "google" {
+ project = "my-gcp-project"
+ region = "us-central1"
+}
+
+variable "region" {
+ type = string
+ default = "us-central1"
+}
+
+variable "subnetwork" {
+ type = string
+ default = "https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/us-central1/subnetworks/default"
+}
+
+variable "network" {
+ type = string
+ default = "https://www.googleapis.com/compute/v1/projects/my-gcp-project/global/networks/default"
+}
+
+resource "google_compute_address" "psc_endpoint_ip" {
+ address = "10.128.0.2"
+ address_type = "INTERNAL"
+ name = "your-ip-address"
+ purpose = "GCE_ENDPOINT"
+ region = var.region
+ subnetwork = var.subnetwork
+}
+
+resource "google_compute_forwarding_rule" "clickhouse_cloud_psc" {
+ ip_address = google_compute_address.psc_endpoint_ip.self_link
+ name = "ch-cloud-${var.region}"
+ network = var.network
+ region = var.region
+ load_balancing_scheme = ""
+ # service attachment
+ target = "https://www.googleapis.com/compute/v1/$TARGET" # See below in notes
+}
+
+output "psc_connection_id" {
+ value = google_compute_forwarding_rule.clickhouse_cloud_psc.psc_connection_id
+ description = "Add GCP PSC Connection ID to allow list on instance level."
+}
+```
+
+:::note
+[Obtain GCP service attachment for Private Service Connect](#obtain-gcp-service-attachment-and-dns-name-for-private-service-connect) 단계에서 `endpointServiceId`API 또는 `Service name`console을 사용하십시오.
+:::
+
+## Set private DNS name for endpoint {#set-private-dns-name-for-endpoint}
+
+:::note
+DNS를 구성하는 방법은 여러 가지가 있습니다. 특정 사용 사례에 따라 DNS를 설정하십시오.
+:::
+
+[Obtain GCP service attachment for Private Service Connect](#obtain-gcp-service-attachment-and-dns-name-for-private-service-connect) 단계에서 가져온 "DNS name"을 GCP Private Service Connect 엔드포인트 IP 주소로 지정해야 합니다. 이는 VPC/네트워크 내의 서비스/구성이 이를 올바르게 해결할 수 있도록 합니다.
+
+## Add Endpoint ID to ClickHouse Cloud organization {#add-endpoint-id-to-clickhouse-cloud-organization}
+
+### Option 1: ClickHouse Cloud console {#option-1-clickhouse-cloud-console-1}
+
+조직에 엔드포인트를 추가하려면 [ClickHouse 서비스 허용 목록에 "Endpoint ID" 추가](#add-endpoint-id-to-services-allow-list) 단계를 진행합니다. ClickHouse Cloud 콘솔을 사용하여 `PSC Connection ID`를 서비스 허용 목록에 추가하면 자동으로 조직에 추가됩니다.
+
+엔드포인트를 제거하려면 **Organization details -> Private Endpoints**로 이동하여 삭제 버튼을 클릭하여 엔드포인트를 제거합니다.
+
+
+
+### Option 2: API {#option-2-api-1}
+
+명령을 실행하기 전에 이러한 환경 변수를 설정하십시오:
+
+[Adding a Private Service Connection](#adding-a-private-service-connection) 단계에서 **Endpoint ID**의 값으로 아래의 `ENDPOINT_ID`를 대체합니다.
+
+엔드포인트를 추가하려면 다음을 실행하십시오:
+
+```bash
+cat <
+
+### Option 2: API {#option-2-api-2}
+
+명령을 실행하기 전에 이러한 환경 변수를 설정하십시오:
+
+[Adding a Private Service Connection](#adding-a-private-service-connection) 단계에서 **Endpoint ID**의 값으로 **ENDPOINT_ID**를 대체합니다.
+
+Private Service Connect를 통해 접근 가능해야 하는 각 서비스에 대해 다음을 실행하십시오.
+
+추가하려면:
+
+```bash
+cat <
+
+#### Option 2: API {#option-2-api-3}
+
+```bash
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .result
+```
+
+```response
+{
+ ...
+ "privateDnsHostname": "xxxxxxx..p.gcp.clickhouse.cloud"
+}
+```
+
+이 예에서는 `xxxxxxx.yy-xxxxN.p.gcp.clickhouse.cloud` 호스트에 대한 연결이 Private Service Connect로 라우팅됩니다. 반면에, `xxxxxxx.yy-xxxxN.gcp.clickhouse.cloud`는 인터넷을 통해 라우팅됩니다.
+
+## Troubleshooting {#troubleshooting}
+
+### Test DNS setup {#test-dns-setup}
+
+DNS_NAME - [Obtain GCP service attachment for Private Service Connect](#obtain-gcp-service-attachment-and-dns-name-for-private-service-connect) 단계에서 `privateDnsHostname`를 사용하십시오.
+
+```bash
+nslookup $DNS_NAME
+```
+
+```response
+Non-authoritative answer:
+...
+Address: 10.128.0.2
+```
+
+### Connection reset by peer {#connection-reset-by-peer}
+
+- 가장 가능성 높은 원인은 Endpoint ID가 서비스 허용 목록에 추가되지 않았기 때문입니다. [_Add endpoint ID to services allow-list_ 단계](#add-endpoint-id-to-services-allow-list)를 다시 방문하십시오.
+
+### Test connectivity {#test-connectivity}
+
+PSC 링크를 사용하여 연결하는 데 문제가 있는 경우, `openssl`을 사용하여 연결성을 확인하십시오. Private Service Connect 엔드포인트 상태가 `Accepted`인지 확인합니다:
+
+OpenSSL은 연결할 수 있어야 하며(출력에서 CONNECTED를 확인) `errno=104`는 예상됩니다.
+
+DNS_NAME - [Obtain GCP service attachment for Private Service Connect](#obtain-gcp-service-attachment-and-dns-name-for-private-service-connect) 단계에서 `privateDnsHostname`를 사용하십시오.
+
+```bash
+openssl s_client -connect ${DNS_NAME}:9440
+```
+
+```response
+
+# highlight-next-line
+CONNECTED(00000003)
+write:errno=104
+---
+no peer certificate available
+---
+No client certificate CA names sent
+---
+SSL handshake has read 0 bytes and written 335 bytes
+Verification: OK
+---
+New, (NONE), Cipher is (NONE)
+Secure Renegotiation IS NOT supported
+Compression: NONE
+Expansion: NONE
+No ALPN negotiated
+Early data was not sent
+Verify return code: 0 (ok)
+```
+
+### Checking endpoint filters {#checking-endpoint-filters}
+
+#### REST API {#rest-api}
+
+```bash
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" -X GET -H "Content-Type: application/json" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" | jq .result.privateEndpointIds
+[
+ "102600141743718403"
+]
+```
+
+### Connecting to a remote database {#connecting-to-a-remote-database}
+
+ClickHouse Cloud에서 [MySQL](/sql-reference/table-functions/mysql) 또는 [PostgreSQL](/sql-reference/table-functions/postgresql) 테이블 함수를 사용하여 GCP에 호스팅된 데이터베이스에 연결하려고 한다고 가정해보겠습니다. GCP PSC는 이 연결을 안전하게 활성화하는 데 사용할 수 없습니다. PSC는 단방향 연결만 가능합니다. 내부 네트워크 또는 GCP VPC가 ClickHouse Cloud에 안전하게 연결되도록 허용하지만, ClickHouse Cloud가 내부 네트워크에 연결되는 것은 허용하지 않습니다.
+
+[GCP Private Service Connect 문서](https://cloud.google.com/vpc/docs/private-service-connect)에 따르면:
+
+> 서비스 지향 설계: 프로듀서 서비스는 소비자 VPC 네트워크에 단일 IP 주소를 노출하는 로드 밸런서를 통해 게시됩니다. 프로듀서 서비스에 접근하는 소비자 트래픽은 단방향이며, 전체 피어링된 VPC 네트워크에 접근하는 대신 서비스 IP 주소에만 접근할 수 있습니다.
+
+이렇게 하려면 ClickHouse Cloud에서 내부/개인 데이터베이스 서비스로 연결을 허용하도록 GCP VPC 방화벽 규칙을 구성하십시오. [ClickHouse Cloud 지역에 대한 기본 출구 IP 주소](/manage/data-sources/cloud-endpoints-api)와 [사용 가능한 정적 IP 주소](https://api.clickhouse.cloud/static-ips.json)를 확인하십시오.
+
+## More information {#more-information}
+
+자세한 정보는 [cloud.google.com/vpc/docs/configure-private-service-connect-services](https://cloud.google.com/vpc/docs/configure-private-service-connect-services) 를 방문하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/03_gcp-private-service-connect.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/03_gcp-private-service-connect.md.hash
new file mode 100644
index 00000000000..34f8deafd60
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/03_gcp-private-service-connect.md.hash
@@ -0,0 +1 @@
+85e2784211846c97
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/04_azure-privatelink.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/04_azure-privatelink.md
new file mode 100644
index 00000000000..b998d93e9b9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/04_azure-privatelink.md
@@ -0,0 +1,559 @@
+---
+'title': 'Azure Private Link'
+'sidebar_label': 'Azure Private Link'
+'slug': '/cloud/security/azure-privatelink'
+'description': 'Azure Private Link 설정 방법'
+'keywords':
+- 'azure'
+- 'private link'
+- 'privatelink'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import ScalePlanFeatureBadge from '@theme/badges/ScalePlanFeatureBadge';
+import azure_pe from '@site/static/images/cloud/security/azure-pe.png';
+import azure_privatelink_pe_create from '@site/static/images/cloud/security/azure-privatelink-pe-create.png';
+import azure_private_link_center from '@site/static/images/cloud/security/azure-private-link-center.png';
+import azure_pe_create_basic from '@site/static/images/cloud/security/azure-pe-create-basic.png';
+import azure_pe_resource from '@site/static/images/cloud/security/azure-pe-resource.png';
+import azure_pe_create_vnet from '@site/static/images/cloud/security/azure-pe-create-vnet.png';
+import azure_pe_create_dns from '@site/static/images/cloud/security/azure-pe-create-dns.png';
+import azure_pe_create_tags from '@site/static/images/cloud/security/azure-pe-create-tags.png';
+import azure_pe_create_review from '@site/static/images/cloud/security/azure-pe-create-review.png';
+import azure_pe_ip from '@site/static/images/cloud/security/azure-pe-ip.png';
+import azure_pe_view from '@site/static/images/cloud/security/azure-pe-view.png';
+import azure_pe_resource_id from '@site/static/images/cloud/security/azure-pe-resource-id.png';
+import azure_pe_resource_guid from '@site/static/images/cloud/security/azure-pe-resource-guid.png';
+import azure_pl_dns_wildcard from '@site/static/images/cloud/security/azure-pl-dns-wildcard.png';
+import azure_pe_remove_private_endpoint from '@site/static/images/cloud/security/azure-pe-remove-private-endpoint.png';
+import azure_privatelink_pe_filter from '@site/static/images/cloud/security/azure-privatelink-pe-filter.png';
+import azure_privatelink_pe_dns from '@site/static/images/cloud/security/azure-privatelink-pe-dns.png';
+
+
+# Azure Private Link
+
+
+
+이 가이드에서는 Azure Private Link를 사용하여 고객 소유 및 Microsoft 파트너 서비스가 포함된 Azure와 ClickHouse Cloud 간에 가상 네트워크를 통한 비공식 연결을 제공하는 방법을 보여줍니다. Azure Private Link는 네트워크 아키텍처를 단순화하고 퍼블릭 인터넷에 대한 데이터 노출을 제거하여 Azure의 엔드포인트 간의 연결을 보호합니다.
+
+
+
+Azure는 Private Link를 통해 교차 지역 연결을 지원합니다. 이를 통해 ClickHouse 서비스가 배포된 서로 다른 지역에 위치한 VNet 간에 연결을 설정할 수 있습니다.
+
+:::note
+지역 간 트래픽에 추가 요금이 부과될 수 있습니다. 최신 Azure 문서를 확인하시기 바랍니다.
+:::
+
+**Azure Private Link를 활성화하려면 다음 단계를 완료하십시오:**
+
+1. Private Link에 대한 Azure 연결 별칭 받기
+1. Azure에서 Private Endpoint 생성
+1. ClickHouse Cloud 조직에 Private Endpoint 리소스 ID 추가
+1. 서비스의 허용 목록에 Private Endpoint 리소스 ID 추가
+1. Private Link를 사용하여 ClickHouse Cloud 서비스에 접근
+
+:::note
+ClickHouse Cloud Azure PrivateLink는 resourceGUID에서 Resource ID 필터로 전환되었습니다. 이전 호환성을 위해 resourceGUID를 여전히 사용할 수 있지만 Resource ID 필터로 전환하는 것을 권장합니다. 마이그레이션하려면 Resource ID를 사용하여 새 엔드포인트를 생성하고 서비스에 연결한 다음 이전 resourceGUID 기반 항목을 제거하십시오.
+:::
+
+## 주의 {#attention}
+ClickHouse는 Azure 지역 내에서 동일하게 게시된 [Private Link 서비스](https://learn.microsoft.com/en-us/azure/private-link/private-link-service-overview)를 재사용하기 위해 귀하의 서비스를 그룹화하려고 시도합니다. 그러나 이러한 그룹화는 보장되지 않으며, 특히 여러 ClickHouse 조직에 서비스를 분산하는 경우 그렇습니다.
+ClickHouse 조직의 다른 서비스에 대해 Private Link가 이미 구성되어 있는 경우, 그룹화 때문에 대부분의 단계를 건너뛰고 최종 단계인 [서비스의 허용 목록에 Private Endpoint 리소스 ID 추가](#add-private-endpoint-id-to-services-allow-list)로 직접 진행할 수 있습니다.
+
+Terraform 예제는 ClickHouse [Terraform Provider 리포지토리](https://github.com/ClickHouse/terraform-provider-clickhouse/tree/main/examples/)에서 확인할 수 있습니다.
+
+## Private Link에 대한 Azure 연결 별칭 받기 {#obtain-azure-connection-alias-for-private-link}
+
+### 옵션 1: ClickHouse Cloud 콘솔 {#option-1-clickhouse-cloud-console}
+
+ClickHouse Cloud 콘솔에서 PrivateLink를 통해 연결하려는 서비스를 열고 **설정** 메뉴를 열어주세요. **Private Endpoint 설정** 버튼을 클릭하십시오. Private Link 설정에 사용할 `서비스 이름`과 `DNS 이름`을 기록해 두십시오.
+
+
+
+`서비스 이름`과 `DNS 이름`을 기록해 두세요. 다음 단계에서 필요합니다.
+
+### 옵션 2: API {#option-2-api}
+
+시작하기 전에 ClickHouse Cloud API 키가 필요합니다. [새 키 생성](/cloud/manage/openapi)하거나 기존 키를 사용하십시오.
+
+API 키가 준비되면 다음 환경 변수를 설정한 후 명령을 실행하세요:
+
+```bash
+REGION=
+PROVIDER=azure
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+SERVICE_NAME=
+```
+
+지역, 공급자 및 서비스 이름으로 필터링하여 ClickHouse `INSTANCE_ID`를 가져옵니다:
+
+```shell
+INSTANCE_ID=$(curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
+"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services" | \
+jq ".result[] | select (.region==\"${REGION:?}\" and .provider==\"${PROVIDER:?}\" and .name==\"${SERVICE_NAME:?}\") | .id " -r)
+```
+
+Azure 연결 별칭 및 Private Link에 대한 Private DNS 호스트 이름을 얻습니다:
+
+```bash
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .result
+{
+ "endpointServiceId": "production-westus3-0-0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.westus3.azure.privatelinkservice",
+ "privateDnsHostname": "xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud"
+}
+```
+
+`endpointServiceId`를 기록해 두십시오. 다음 단계에서 사용할 것입니다.
+
+## Azure에서 Private Endpoint 생성 {#create-private-endpoint-in-azure}
+
+:::important
+이 섹션에서는 Azure Private Link를 통해 ClickHouse를 구성하기 위한 ClickHouse-specific 세부정보를 다룹니다. Azure-specific 단계는 참고용으로 제공되며, 시간이 지남에 따라 Azure 클라우드 공급자의 통보 없이 변경될 수 있습니다. 사용 사례에 따라 Azure 구성을 고려해 주시기 바랍니다.
+
+ClickHouse는 필요한 Azure Private Endpoint 및 DNS 레코드를 구성할 책임이 없습니다.
+
+Azure 구성 작업과 관련된 문제는 Azure Support에 직접 문의하세요.
+:::
+
+이 섹션에서는 Azure에서 Private Endpoint를 생성합니다. Azure Portal 또는 Terraform을 사용할 수 있습니다.
+
+### 옵션 1: Azure Portal을 사용하여 Azure에서 Private Endpoint 생성 {#option-1-using-azure-portal-to-create-a-private-endpoint-in-azure}
+
+Azure Portal에서 **Private Link Center → Private Endpoints**를 엽니다.
+
+
+
+**생성** 버튼을 클릭하여 Private Endpoint 생성 대화 상자를 엽니다.
+
+
+
+---
+
+다음 화면에서 다음 옵션을 지정하십시오:
+
+- **구독** / **리소스 그룹**: Private Endpoint의 Azure 구독 및 리소스 그룹을 선택하십시오.
+- **이름**: **Private Endpoint**의 이름을 설정합니다.
+- **지역**: Private Link를 통해 ClickHouse Cloud에 연결될 배포된 VNet이 있는 지역을 선택합니다.
+
+위 단계를 완료한 후 **다음: 리소스** 버튼을 클릭하십시오.
+
+
+
+---
+
+**Resource ID 또는 별칭을 사용하여 Azure 리소스에 연결** 옵션을 선택합니다.
+
+**리소스 ID 또는 별칭**에 대해서는 [Private Link에 대한 Azure 연결 별칭 받기](#obtain-azure-connection-alias-for-private-link) 단계에서 얻은 `endpointServiceId`를 사용합니다.
+
+**다음: 가상 네트워크** 버튼을 클릭하십시오.
+
+
+
+---
+
+- **가상 네트워크**: Private Link를 사용하여 ClickHouse Cloud에 연결할 VNet을 선택합니다.
+- **서브넷**: Private Endpoint가 생성될 서브넷을 선택합니다.
+
+선택적:
+
+- **애플리케이션 보안 그룹**: Private Endpoint에 ASG를 첨부하고 네트워크 보안 그룹에서 트래픽 필터링에 사용할 수 있습니다.
+
+**다음: DNS** 버튼을 클릭합니다.
+
+
+
+**다음: 태그** 버튼을 클릭합니다.
+
+---
+
+
+
+선택적으로 Private Endpoint에 태그를 첨부할 수 있습니다.
+
+**다음: 검토 + 생성** 버튼을 클릭합니다.
+
+---
+
+
+
+마지막으로 **생성** 버튼을 클릭합니다.
+
+
+
+생성된 Private Endpoint의 **연결 상태**는 **대기 중** 상태입니다. 이 Private Endpoint를 서비스 허용 목록에 추가하면 **승인됨** 상태로 변경됩니다.
+
+Private Endpoint와 연관된 네트워크 인터페이스를 열고 **Private IPv4 주소**(이 예제에서는 10.0.0.4)를 복사하세요. 다음 단계에서 이 정보가 필요합니다.
+
+
+
+### 옵션 2: Terraform을 사용하여 Azure에서 Private Endpoint 생성 {#option-2-using-terraform-to-create-a-private-endpoint-in-azure}
+
+Terraform을 사용하여 Private Endpoint를 생성하려면 아래 템플릿을 사용하십시오:
+
+```json
+resource "azurerm_private_endpoint" "example_clickhouse_cloud" {
+ name = var.pe_name
+ location = var.pe_location
+ resource_group_name = var.pe_resource_group_name
+ subnet_id = var.pe_subnet_id
+
+ private_service_connection {
+ name = "test-pl"
+ private_connection_resource_alias = ""
+ is_manual_connection = true
+ }
+}
+```
+
+### Private Endpoint 리소스 ID 얻기 {#obtaining-private-endpoint-resourceid}
+
+Private Link를 사용하려면 Private Endpoint 연결 리소스 ID를 서비스 허용 목록에 추가해야 합니다.
+
+Private Endpoint 리소스 ID는 Azure Portal에서 노출됩니다. 이전 단계에서 생성한 Private Endpoint를 열고 **JSON 보기**를 클릭합니다:
+
+
+
+속성 아래에서 `id` 필드를 찾아 이 값을 복사합니다:
+
+**권장 방법: Resource ID 사용**
+
+
+**구식 방법: resourceGUID 사용**
+이전 호환성을 위해 resourceGUID를 여전히 사용할 수 있습니다. `resourceGuid` 필드를 찾아 이 값을 복사하십시오:
+
+
+
+## Private Link를 위한 DNS 설정 {#setting-up-dns-for-private-link}
+
+Private Link를 통해 리소스에 접근하기 위해 `${location_code}.privatelink.azure.clickhouse.cloud`라는 Private DNS 존을 생성하고 이를 VNet에 연결해야 합니다.
+
+### Private DNS 존 생성 {#create-private-dns-zone}
+
+**옵션 1: Azure 포털 사용**
+
+Azure Portal을 사용하여 [Azure 개인 DNS 존 만들기](https://learn.microsoft.com/en-us/azure/dns/private-dns-getstarted-portal) 가이드를 따라 주십시오.
+
+**옵션 2: Terraform 사용**
+
+다음 Terraform 템플릿을 사용하여 Private DNS 존을 생성하십시오:
+
+```json
+resource "azurerm_private_dns_zone" "clickhouse_cloud_private_link_zone" {
+ name = "${var.location}.privatelink.azure.clickhouse.cloud"
+ resource_group_name = var.resource_group_name
+}
+```
+
+### 와일드카드 DNS 레코드 만들기 {#create-a-wildcard-dns-record}
+
+와일드카드 레코드를 생성하고 Private Endpoint를 가리키게 하십시오:
+
+**옵션 1: Azure Portal 사용**
+
+1. `MyAzureResourceGroup` 리소스 그룹을 열고 `${region_code}.privatelink.azure.clickhouse.cloud` 개인 존을 선택합니다.
+2. + 레코드 집합을 선택합니다.
+3. 이름에 `*`을 입력합니다.
+4. IP 주소에 Private Endpoint에 대한 IP 주소를 입력합니다.
+5. **확인**을 선택합니다.
+
+
+
+**옵션 2: Terraform 사용**
+
+다음 Terraform 템플릿을 사용하여 와일드카드 DNS 레코드를 생성하십시오:
+
+```json
+resource "azurerm_private_dns_a_record" "example" {
+ name = "*"
+ zone_name = var.zone_name
+ resource_group_name = var.resource_group_name
+ ttl = 300
+ records = ["10.0.0.4"]
+}
+```
+
+### 가상 네트워크 링크 생성 {#create-a-virtual-network-link}
+
+Private DNS 존을 가상 네트워크에 연결하기 위해 가상 네트워크 링크를 만들어야 합니다.
+
+**옵션 1: Azure 포털 사용**
+
+[개인 DNS 존에 가상 네트워크 링크](https://learn.microsoft.com/en-us/azure/dns/private-dns-getstarted-portal#link-the-virtual-network) 가이드를 따라 주십시오.
+
+**옵션 2: Terraform 사용**
+
+:::note
+DNS를 구성하는 방법에는 여러 가지가 있습니다. 특정 사용 사례에 따라 DNS를 설정하시기 바랍니다.
+:::
+
+"Private Link에 대한 Azure 연결 별칭 받기" 단계에서 가져온 "DNS 이름"을 Private Endpoint IP 주소로 지정합니다. 이렇게 하면 VPC/네트워크 내의 서비스/구성 요소가 이를 올바르게 확인할 수 있습니다.
+
+### DNS 설정 확인 {#verify-dns-setup}
+
+`xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud` 도메인은 Private Endpoint IP를 가리켜야 합니다. (이 예제에서는 10.0.0.4).
+
+```bash
+nslookup xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud.
+Server: 127.0.0.53
+Address: 127.0.0.53#53
+
+Non-authoritative answer:
+Name: xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud
+Address: 10.0.0.4
+```
+
+## ClickHouse Cloud 조직에 Private Endpoint 리소스 ID 추가 {#add-the-private-endpoint-id-to-your-clickhouse-cloud-organization}
+
+### 옵션 1: ClickHouse Cloud 콘솔 {#option-1-clickhouse-cloud-console-1}
+
+조직에 엔드포인트를 추가하려면 [서비스의 허용 목록에 Private Endpoint 리소스 ID 추가](#add-private-endpoint-id-to-services-allow-list) 단계로 진행하십시오. ClickHouse Cloud 콘솔을 사용하여 서비스 허용 목록에 Private Endpoint 리소스 ID를 추가하면 자동으로 조직에 추가됩니다.
+
+엔드포인트를 제거하려면 **조직 세부정보 -> Private Endpoints**를 열고 삭제 버튼을 클릭하여 엔드포인트를 제거하십시오.
+
+
+
+### 옵션 2: API {#option-2-api-1}
+
+명령을 실행하기 전에 다음 환경 변수를 설정하십시오:
+
+```bash
+PROVIDER=azure
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+ENDPOINT_ID=
+REGION=
+```
+
+[Private Endpoint 리소스 ID 얻기](#obtaining-private-endpoint-resourceid) 단계에서 가져온 데이터를 사용하여 `ENDPOINT_ID` 환경 변수를 설정합니다.
+
+Private Endpoint를 추가하려면 다음 명령을 실행합니다:
+
+```bash
+cat <
+
+### 옵션 2: API {#option-2-api-2}
+
+명령을 실행하기 전에 다음 환경 변수를 설정하십시오:
+
+```bash
+PROVIDER=azure
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+ENDPOINT_ID=
+INSTANCE_ID=
+```
+
+Private Link를 사용할 수 있는 각 서비스에 대해 실행하십시오.
+
+서비스 허용 목록에 Private Endpoint를 추가하려면 다음 명령을 실행하십시오:
+
+```bash
+cat <API 또는 `DNS 이름`콘솔이 됩니다.
+
+### 개인 DNS 호스트 이름 얻기 {#obtaining-the-private-dns-hostname}
+
+#### 옵션 1: ClickHouse Cloud 콘솔 {#option-1-clickhouse-cloud-console-3}
+
+ClickHouse Cloud 콘솔에서 **설정**으로 이동하십시오. **Private Endpoint 설정** 버튼을 클릭합니다. 열린 플라이아웃에서 **DNS 이름**을 복사합니다.
+
+
+
+#### 옵션 2: API {#option-2-api-3}
+
+명령을 실행하기 전에 다음 환경 변수를 설정하십시오:
+
+```bash
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+INSTANCE_ID=
+```
+
+다음 명령을 실행합니다:
+
+```bash
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .result
+```
+
+다음과 유사한 응답을 받아야 합니다:
+
+```response
+{
+ ...
+ "privateDnsHostname": "xxxxxxx..privatelink.azure.clickhouse.cloud"
+}
+```
+
+이 예에서 `xxxxxxx.region_code.privatelink.azure.clickhouse.cloud` 호스트 이름으로의 연결이 Private Link로 라우팅됩니다. 한편, `xxxxxxx.region_code.azure.clickhouse.cloud`는 인터넷을 통해 라우팅됩니다.
+
+`privateDnsHostname`을 사용하여 Private Link를 사용하여 ClickHouse Cloud 서비스에 연결하십시오.
+
+## 문제 해결 {#troubleshooting}
+
+### DNS 설정 테스트 {#test-dns-setup}
+
+다음 명령을 실행하십시오:
+
+```bash
+nslookup
+```
+여기서 "dns name"은 [Private Link에 대한 Azure 연결 별칭 받기](#obtain-azure-connection-alias-for-private-link) 단계의 `privateDnsHostname`API 또는 `DNS 이름`콘솔입니다.
+
+다음과 같은 응답을 받아야 합니다:
+
+```response
+Non-authoritative answer:
+Name:
+Address: 10.0.0.4
+```
+
+### 피어에 의한 연결 재설정 {#connection-reset-by-peer}
+
+대부분의 경우, Private Endpoint 리소스 ID가 서비스 허용 목록에 추가되지 않았습니다. [_서비스 허용 목록에 Private Endpoint 리소스 ID 추가_ 단계](#add-private-endpoint-id-to-services-allow-list)를 다시 확인하십시오.
+
+### Private Endpoint가 대기 중 상태입니다 {#private-endpoint-is-in-pending-state}
+
+대부분의 경우, Private Endpoint 리소스 ID가 서비스 허용 목록에 추가되지 않았습니다. [_서비스 허용 목록에 Private Endpoint 리소스 ID 추가_ 단계](#add-private-endpoint-id-to-services-allow-list)를 다시 확인하십시오.
+
+### 연결성 테스트 {#test-connectivity}
+
+Private Link를 통해 연결하는 데 문제가 발생하는 경우 `openssl`를 사용하여 연결성을 확인하십시오. Private Link 엔드포인트 상태가 `Accepted`인지 확인하십시오.
+
+OpenSSL은 연결할 수 있어야 합니다(출력에서 CONNECTED를 참조하십시오). `errno=104`는 예상됩니다.
+
+```bash
+openssl s_client -connect abcd.westus3.privatelink.azure.clickhouse.cloud:9440
+```
+
+```response
+
+# highlight-next-line
+CONNECTED(00000003)
+write:errno=104
+---
+no peer certificate available
+---
+No client certificate CA names sent
+---
+SSL handshake has read 0 bytes and written 335 bytes
+Verification: OK
+---
+New, (NONE), Cipher is (NONE)
+Secure Renegotiation IS NOT supported
+Compression: NONE
+Expansion: NONE
+No ALPN negotiated
+Early data was not sent
+Verify return code: 0 (ok)
+```
+
+### Private Endpoint 필터 확인 {#checking-private-endpoint-filters}
+
+명령을 실행하기 전에 다음 환경 변수를 설정하십시오:
+
+```bash
+KEY_ID=
+KEY_SECRET=
+ORG_ID=
+INSTANCE_ID=
+```
+
+다음 명령을 실행하여 Private Endpoint 필터를 확인하십시오:
+
+```bash
+curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" -X GET -H "Content-Type: application/json" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" | jq .result.privateEndpointIds
+```
+
+## 추가 정보 {#more-information}
+
+Azure Private Link에 대한 추가 정보는 [azure.microsoft.com/en-us/products/private-link](https://azure.microsoft.com/en-us/products/private-link)를 방문하시기 바랍니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/04_azure-privatelink.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/04_azure-privatelink.md.hash
new file mode 100644
index 00000000000..5e77a21a1ee
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/04_azure-privatelink.md.hash
@@ -0,0 +1 @@
+f1dd5d7e5a2fc7b7
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/_category_.json
new file mode 100644
index 00000000000..e0d5898a96e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Private networking",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/index.md
new file mode 100644
index 00000000000..02ab8e50a54
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/index.md
@@ -0,0 +1,22 @@
+---
+'slug': '/cloud/security/connectivity/private-networking'
+'title': '사설 네트워킹'
+'hide_title': true
+'description': 'ClickHouse Cloud의 사설 네트워킹 섹션에 대한 목차 페이지'
+'doc_type': 'landing-page'
+'keywords':
+- 'private networking'
+- 'network security'
+- 'vpc'
+- 'connectivity'
+- 'cloud features'
+---
+
+
+# 개인 네트워킹
+
+ClickHouse Cloud는 귀하의 서비스를 클라우드 가상 네트워크에 연결할 수 있는 기능을 제공합니다. 아래 가이드를 참조하여 귀하의 공급자를 위한 설정 단계를 확인하십시오:
+
+- [AWS private Link](/manage/security/aws-privatelink)
+- [GCP private service connect](/manage/security/gcp-private-service-connect)
+- [Azure private link](/cloud/security/azure-privatelink)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/index.md.hash
new file mode 100644
index 00000000000..167c2fd88a0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/02_connectivity/private_networking/index.md.hash
@@ -0,0 +1 @@
+e4a461ecf072f9db
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/03_data-masking.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/03_data-masking.md
new file mode 100644
index 00000000000..bbf96da69d8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/03_data-masking.md
@@ -0,0 +1,337 @@
+---
+'slug': '/cloud/guides/data-masking'
+'sidebar_label': '데이터 마스킹'
+'title': 'ClickHouse에서 데이터 마스킹'
+'description': 'ClickHouse에서 데이터 마스킹에 대한 안내서'
+'keywords':
+- 'data masking'
+'doc_type': 'guide'
+---
+
+
+# ClickHouse에서 데이터 마스킹
+
+데이터 마스킹은 데이터 보호를 위해 사용되는 기법으로, 원래 데이터를 형식과 구조를 유지하면서 개인 식별 정보(PII) 또는 민감한 정보를 제거한 데이터 버전으로 대체하는 것입니다.
+
+이 가이드는 ClickHouse에서 데이터를 마스킹하는 방법을 보여줍니다.
+
+## 문자열 치환 함수 사용 {#using-string-functions}
+
+기본 데이터 마스킹 사용 사례의 경우, `replace` 계열 함수는 데이터를 마스킹하는 편리한 방법을 제공합니다:
+
+| 함수 | 설명 |
+|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [`replaceOne`](/sql-reference/functions/string-replace-functions#replaceOne) | 제공된 치환 문자열로 haystack 문자열에서 패턴의 첫 번째 발생을 대체합니다. |
+| [`replaceAll`](/sql-reference/functions/string-replace-functions#replaceAll) | 제공된 치환 문자열로 haystack 문자열에서 패턴의 모든 발생을 대체합니다. |
+| [`replaceRegexpOne`](/sql-reference/functions/string-replace-functions#replaceRegexpOne) | haystack에서 정규 표현식 패턴( re2 구문)에 맞는 부분 문자열의 첫 번째 발생을 제공된 치환 문자열로 대체합니다. |
+| [`replaceRegexpAll`](/sql-reference/functions/string-replace-functions#replaceRegexpAll) | haystack에서 정규 표현식 패턴( re2 구문)에 맞는 부분 문자열의 모든 발생을 제공된 치환 문자열로 대체합니다. |
+
+예를 들어, `replaceOne` 함수를 사용하여 이름 "John Smith"를 자리 표시자 `[CUSTOMER_NAME]`로 바꿀 수 있습니다:
+
+```sql title="Query"
+SELECT replaceOne(
+ 'Customer John Smith called about his account',
+ 'John Smith',
+ '[CUSTOMER_NAME]'
+) AS anonymized_text;
+```
+
+```response title="Response"
+┌─anonymized_text───────────────────────────────────┐
+│ Customer [CUSTOMER_NAME] called about his account │
+└───────────────────────────────────────────────────┘
+```
+
+보다 일반적으로, 고객 이름을 대체하기 위해 `replaceRegexpOne`을 사용할 수 있습니다:
+
+```sql title="Query"
+SELECT
+ replaceRegexpAll(
+ 'Customer John Smith called. Later, Mary Johnson and Bob Wilson also called.',
+ '\\b[A-Z][a-z]+ [A-Z][a-z]+\\b',
+ '[CUSTOMER_NAME]'
+ ) AS anonymized_text;
+```
+
+```response title="Response"
+┌─anonymized_text───────────────────────────────────────────────────────────────────────┐
+│ [CUSTOMER_NAME] Smith called. Later, [CUSTOMER_NAME] and [CUSTOMER_NAME] also called. │
+└───────────────────────────────────────────────────────────────────────────────────────┘
+```
+
+또는 `replaceRegexpAll` 함수를 사용하여 사회 보장 번호를 마스킹하고 마지막 4자리만 남길 수 있습니다.
+
+```sql title="Query"
+SELECT replaceRegexpAll(
+ 'SSN: 123-45-6789',
+ '(\d{3})-(\d{2})-(\d{4})',
+ 'XXX-XX-\3'
+) AS masked_ssn;
+```
+
+위 쿼리에서 `\3`는 결과 문자열에 세 번째 캡처 그룹을 대체하는 데 사용됩니다. 이는 다음과 같은 결과를 만들어냅니다:
+
+```response title="Response"
+┌─masked_ssn───────┐
+│ SSN: XXX-XX-6789 │
+└──────────────────┘
+```
+
+## 마스킹된 `VIEW` 생성 {#masked-views}
+
+[`VIEW`](/sql-reference/statements/create/view)는 사용자에게 제공되기 전에 민감한 데이터를 포함하는 컬럼에 변환을 적용하기 위해 앞서 언급한 문자열 함수를 사용할 수 있습니다.
+이런 방식으로 원래 데이터는 변경되지 않고, 뷰를 쿼리하는 사용자는 마스킹된 데이터만 보게 됩니다.
+
+예를 들어, 고객 주문 기록을 저장하는 테이블을 가정해 보겠습니다.
+직원 그룹이 정보를 볼 수 있도록 하되, 고객의 전체 정보를 볼 수는 없게 하려고 합니다.
+
+아래 쿼리를 실행하여 예제 테이블 `orders`를 생성하고 가상의 고객 주문 기록을 삽입합니다:
+
+```sql
+CREATE TABLE orders (
+ user_id UInt32,
+ name String,
+ email String,
+ phone String,
+ total_amount Decimal(10,2),
+ order_date Date,
+ shipping_address String
+)
+ENGINE = MergeTree()
+ORDER BY user_id;
+
+INSERT INTO orders VALUES
+ (1001, 'John Smith', 'john.smith@gmail.com', '555-123-4567', 299.99, '2024-01-15', '123 Main St, New York, NY 10001'),
+ (1002, 'Sarah Johnson', 'sarah.johnson@outlook.com', '555-987-6543', 149.50, '2024-01-16', '456 Oak Ave, Los Angeles, CA 90210'),
+ (1003, 'Michael Brown', 'mbrown@company.com', '555-456-7890', 599.00, '2024-01-17', '789 Pine Rd, Chicago, IL 60601'),
+ (1004, 'Emily Rogers', 'emily.rogers@yahoo.com', '555-321-0987', 89.99, '2024-01-18', '321 Elm St, Houston, TX 77001'),
+ (1005, 'David Wilson', 'dwilson@email.net', '555-654-3210', 449.75, '2024-01-19', '654 Cedar Blvd, Phoenix, AZ 85001');
+```
+
+`masked_orders`라는 뷰를 생성합니다:
+
+```sql
+CREATE VIEW masked_orders AS
+SELECT
+ user_id,
+ replaceRegexpOne(name, '^([A-Za-z]+)\\s+(.*)$', '\\1 ****') AS name,
+ replaceRegexpOne(email, '^(.{0})[^@]*(@.*)$', '\\1****\\2') AS email,
+ replaceRegexpOne(phone, '^(\\d{3})-(\\d{3})-(\\d{4})$', '\\1-***-\\3') AS phone,
+ total_amount,
+ order_date,
+ replaceRegexpOne(shipping_address, '^[^,]+,\\s*(.*)$', '*** \\1') AS shipping_address
+FROM orders;
+```
+
+위 뷰 생성 쿼리의 `SELECT` 절에서는 민감한 정보를 부분적으로 마스킹하려는 `name`, `email`, `phone`, `shipping_address` 필드에 대해 `replaceRegexpOne`을 사용하여 변환을 정의합니다.
+
+뷰에서 데이터를 선택합니다:
+
+```sql title="Query"
+SELECT * FROM masked_orders
+```
+
+```response title="Response"
+┌─user_id─┬─name─────────┬─email──────────────┬─phone────────┬─total_amount─┬─order_date─┬─shipping_address──────────┐
+│ 1001 │ John **** │ jo****@gmail.com │ 555-***-4567 │ 299.99 │ 2024-01-15 │ *** New York, NY 10001 │
+│ 1002 │ Sarah **** │ sa****@outlook.com │ 555-***-6543 │ 149.5 │ 2024-01-16 │ *** Los Angeles, CA 90210 │
+│ 1003 │ Michael **** │ mb****@company.com │ 555-***-7890 │ 599 │ 2024-01-17 │ *** Chicago, IL 60601 │
+│ 1004 │ Emily **** │ em****@yahoo.com │ 555-***-0987 │ 89.99 │ 2024-01-18 │ *** Houston, TX 77001 │
+│ 1005 │ David **** │ dw****@email.net │ 555-***-3210 │ 449.75 │ 2024-01-19 │ *** Phoenix, AZ 85001 │
+└─────────┴──────────────┴────────────────────┴──────────────┴──────────────┴────────────┴───────────────────────────┘
+```
+
+뷰에서 반환된 데이터가 부분적으로 마스킹되어 민감한 정보가 은폐된 것을 확인할 수 있습니다.
+또한, 사용자에게 제공되는 정보에 따라 다른 수준의 은폐를 가진 여러 뷰를 생성할 수도 있습니다.
+
+사용자가 마스킹된 데이터만 반환하는 뷰에만 접근할 수 있도록 하고, 원본 데이터가 있는 테이블에는 접근하지 못하게 하려면 [역할 기반 접근 제어](/cloud/security/console-roles)를 사용하여 특정 역할이 뷰에 대한 선택 권한만 갖도록 보장해야 합니다.
+
+먼저 역할을 생성합니다:
+
+```sql
+CREATE ROLE masked_orders_viewer;
+```
+
+다음으로 해당 역할에 뷰에 대한 `SELECT` 권한을 부여합니다:
+
+```sql
+GRANT SELECT ON masked_orders TO masked_orders_viewer;
+```
+
+ClickHouse의 역할은 가산적이므로, 마스킹된 뷰만 봐야 하는 사용자는 어떤 역할을 통해서도 기본 테이블에 대한 `SELECT` 권한을 가지지 않도록 해야 합니다.
+
+따라서 이를 안전하게 하기 위해 기본 테이블 접근을 명시적으로 취소해야 합니다:
+
+```sql
+REVOKE SELECT ON orders FROM masked_orders_viewer;
+```
+
+마지막으로 적절한 사용자에게 역할을 할당합니다:
+
+```sql
+GRANT masked_orders_viewer TO your_user;
+```
+
+이렇게 하면 `masked_orders_viewer` 역할을 가진 사용자가 테이블의 원본 마스킹되지 않은 데이터가 아니라 뷰의 마스킹된 데이터만 볼 수 있습니다.
+
+## `MATERIALIZED` 컬럼과 컬럼 수준 접근 제한 사용 {#materialized-ephemeral-column-restrictions}
+
+별도의 뷰를 생성하고 싶지 않은 경우, 원본 데이터와 함께 마스킹된 버전을 저장할 수 있습니다.
+이를 위해 [물리화된 컬럼](/sql-reference/statements/create/table#materialized)을 사용할 수 있습니다.
+이러한 컬럼의 값은 행이 삽입될 때 지정된 물리화된 표현에 따라 자동으로 계산되며, 우리는 이를 사용하여 데이터의 마스킹된 버전으로 새로운 컬럼을 생성할 수 있습니다.
+
+앞의 예를 들면, 마스킹된 데이터를 위한 별도의 `VIEW`를 생성하는 대신 이제 `MATERIALIZED`를 사용하여 마스킹된 컬럼을 생성하겠습니다:
+
+```sql
+DROP TABLE IF EXISTS orders;
+CREATE TABLE orders (
+ user_id UInt32,
+ name String,
+ name_masked String MATERIALIZED replaceRegexpOne(name, '^([A-Za-z]+)\\s+(.*)$', '\\1 ****'),
+ email String,
+ email_masked String MATERIALIZED replaceRegexpOne(email, '^(.{0})[^@]*(@.*)$', '\\1****\\2'),
+ phone String,
+ phone_masked String MATERIALIZED replaceRegexpOne(phone, '^(\\d{3})-(\\d{3})-(\\d{4})$', '\\1-***-\\3'),
+ total_amount Decimal(10,2),
+ order_date Date,
+ shipping_address String,
+ shipping_address_masked String MATERIALIZED replaceRegexpOne(shipping_address, '^[^,]+,\\s*(.*)$', '*** \\1')
+)
+ENGINE = MergeTree()
+ORDER BY user_id;
+
+INSERT INTO orders VALUES
+ (1001, 'John Smith', 'john.smith@gmail.com', '555-123-4567', 299.99, '2024-01-15', '123 Main St, New York, NY 10001'),
+ (1002, 'Sarah Johnson', 'sarah.johnson@outlook.com', '555-987-6543', 149.50, '2024-01-16', '456 Oak Ave, Los Angeles, CA 90210'),
+ (1003, 'Michael Brown', 'mbrown@company.com', '555-456-7890', 599.00, '2024-01-17', '789 Pine Rd, Chicago, IL 60601'),
+ (1004, 'Emily Rogers', 'emily.rogers@yahoo.com', '555-321-0987', 89.99, '2024-01-18', '321 Elm St, Houston, TX 77001'),
+ (1005, 'David Wilson', 'dwilson@email.net', '555-654-3210', 449.75, '2024-01-19', '654 Cedar Blvd, Phoenix, AZ 85001');
+```
+
+이제 다음 선택 쿼리를 실행하면 마스킹된 데이터가 삽입 시 '물리화'되어 원본 마스킹되지 않은 데이터와 함께 저장된 것을 확인할 수 있습니다.
+ClickHouse는 기본적으로 `SELECT *` 쿼리에서 물리화된 컬럼을 자동으로 포함하지 않기 때문에 마스킹된 컬럼을 명시적으로 선택해야 합니다.
+
+```sql title="Query"
+SELECT
+ *,
+ name_masked,
+ email_masked,
+ phone_masked,
+ shipping_address_masked
+FROM orders
+ORDER BY user_id ASC
+```
+
+```response title="Response"
+ ┌─user_id─┬─name──────────┬─email─────────────────────┬─phone────────┬─total_amount─┬─order_date─┬─shipping_address───────────────────┬─name_masked──┬─email_masked───────┬─phone_masked─┬─shipping_address_masked────┐
+1. │ 1001 │ John Smith │ john.smith@gmail.com │ 555-123-4567 │ 299.99 │ 2024-01-15 │ 123 Main St, New York, NY 10001 │ John **** │ jo****@gmail.com │ 555-***-4567 │ **** New York, NY 10001 │
+2. │ 1002 │ Sarah Johnson │ sarah.johnson@outlook.com │ 555-987-6543 │ 149.5 │ 2024-01-16 │ 456 Oak Ave, Los Angeles, CA 90210 │ Sarah **** │ sa****@outlook.com │ 555-***-6543 │ **** Los Angeles, CA 90210 │
+3. │ 1003 │ Michael Brown │ mbrown@company.com │ 555-456-7890 │ 599 │ 2024-01-17 │ 789 Pine Rd, Chicago, IL 60601 │ Michael **** │ mb****@company.com │ 555-***-7890 │ **** Chicago, IL 60601 │
+4. │ 1004 │ Emily Rogers │ emily.rogers@yahoo.com │ 555-321-0987 │ 89.99 │ 2024-01-18 │ 321 Elm St, Houston, TX 77001 │ Emily **** │ em****@yahoo.com │ 555-***-0987 │ **** Houston, TX 77001 │
+5. │ 1005 │ David Wilson │ dwilson@email.net │ 555-654-3210 │ 449.75 │ 2024-01-19 │ 654 Cedar Blvd, Phoenix, AZ 85001 │ David **** │ dw****@email.net │ 555-***-3210 │ **** Phoenix, AZ 85001 │
+ └─────────┴───────────────┴───────────────────────────┴──────────────┴──────────────┴────────────┴────────────────────────────────────┴──────────────┴────────────────────┴──────────────┴────────────────────────────┘
+```
+
+사용자가 마스킹된 데이터가 포함된 컬럼에만 접근할 수 있도록 하려면, 다시 한 번 [역할 기반 접근 제어](/cloud/security/console-roles)를 사용하여 특정 역할이 `orders`에서 마스킹된 컬럼을 선택하는 권한만 갖도록 보장할 수 있습니다.
+
+이전에 만든 역할을 다시 생성합니다:
+
+```sql
+DROP ROLE IF EXISTS masked_order_viewer;
+CREATE ROLE masked_order_viewer;
+```
+
+다음으로 `orders` 테이블에 대한 `SELECT` 권한을 부여합니다:
+
+```sql
+GRANT SELECT ON orders TO masked_data_reader;
+```
+
+민감한 컬럼에 대한 접근을 취소합니다:
+
+```sql
+REVOKE SELECT(name) ON orders FROM masked_data_reader;
+REVOKE SELECT(email) ON orders FROM masked_data_reader;
+REVOKE SELECT(phone) ON orders FROM masked_data_reader;
+REVOKE SELECT(shipping_address) ON orders FROM masked_data_reader;
+```
+
+마지막으로 적절한 사용자에게 역할을 할당합니다:
+
+```sql
+GRANT masked_orders_viewer TO your_user;
+```
+
+`orders` 테이블에 마스킹된 데이터만 저장하고 싶을 경우,
+민감한 마스킹되지 않은 컬럼을 [`EPHEMERAL`](/sql-reference/statements/create/table#ephemeral)로 표시하여 이 유형의 컬럼이 테이블에 저장되지 않도록 할 수 있습니다.
+
+```sql
+DROP TABLE IF EXISTS orders;
+CREATE TABLE orders (
+ user_id UInt32,
+ name String EPHEMERAL,
+ name_masked String MATERIALIZED replaceRegexpOne(name, '^([A-Za-z]+)\\s+(.*)$', '\\1 ****'),
+ email String EPHEMERAL,
+ email_masked String MATERIALIZED replaceRegexpOne(email, '^(.{2})[^@]*(@.*)$', '\\1****\\2'),
+ phone String EPHEMERAL,
+ phone_masked String MATERIALIZED replaceRegexpOne(phone, '^(\\d{3})-(\\d{3})-(\\d{4})$', '\\1-***-\\3'),
+ total_amount Decimal(10,2),
+ order_date Date,
+ shipping_address String EPHEMERAL,
+ shipping_address_masked String MATERIALIZED replaceRegexpOne(shipping_address, '^([^,]+),\\s*(.*)$', '*** \\2')
+)
+ENGINE = MergeTree()
+ORDER BY user_id;
+
+INSERT INTO orders (user_id, name, email, phone, total_amount, order_date, shipping_address) VALUES
+ (1001, 'John Smith', 'john.smith@gmail.com', '555-123-4567', 299.99, '2024-01-15', '123 Main St, New York, NY 10001'),
+ (1002, 'Sarah Johnson', 'sarah.johnson@outlook.com', '555-987-6543', 149.50, '2024-01-16', '456 Oak Ave, Los Angeles, CA 90210'),
+ (1003, 'Michael Brown', 'mbrown@company.com', '555-456-7890', 599.00, '2024-01-17', '789 Pine Rd, Chicago, IL 60601'),
+ (1004, 'Emily Rogers', 'emily.rogers@yahoo.com', '555-321-0987', 89.99, '2024-01-18', '321 Elm St, Houston, TX 77001'),
+ (1005, 'David Wilson', 'dwilson@email.net', '555-654-3210', 449.75, '2024-01-19', '654 Cedar Blvd, Phoenix, AZ 85001');
+```
+
+이전과 동일한 쿼리를 실행하면 이제 테이블에 물리화된 마스킹된 데이터만 삽입된 것을 볼 수 있습니다:
+
+```sql title="Query"
+SELECT
+ *,
+ name_masked,
+ email_masked,
+ phone_masked,
+ shipping_address_masked
+FROM orders
+ORDER BY user_id ASC
+```
+
+```response title="Response"
+ ┌─user_id─┬─total_amount─┬─order_date─┬─name_masked──┬─email_masked───────┬─phone_masked─┬─shipping_address_masked───┐
+1. │ 1001 │ 299.99 │ 2024-01-15 │ John **** │ jo****@gmail.com │ 555-***-4567 │ *** New York, NY 10001 │
+2. │ 1002 │ 149.5 │ 2024-01-16 │ Sarah **** │ sa****@outlook.com │ 555-***-6543 │ *** Los Angeles, CA 90210 │
+3. │ 1003 │ 599 │ 2024-01-17 │ Michael **** │ mb****@company.com │ 555-***-7890 │ *** Chicago, IL 60601 │
+4. │ 1004 │ 89.99 │ 2024-01-18 │ Emily **** │ em****@yahoo.com │ 555-***-0987 │ *** Houston, TX 77001 │
+5. │ 1005 │ 449.75 │ 2024-01-19 │ David **** │ dw****@email.net │ 555-***-3210 │ *** Phoenix, AZ 85001 │
+ └─────────┴──────────────┴────────────┴──────────────┴────────────────────┴──────────────┴───────────────────────────┘
+```
+
+## 로그 데이터에 대한 쿼리 마스킹 규칙 사용 {#use-query-masking-rules}
+
+로그 데이터를 특별히 마스킹하려는 ClickHouse OSS 사용자들은 데이터 마스킹을 위해 [쿼리 마스킹 규칙](/operations/server-configuration-parameters/settings#query_masking_rules)을 사용할 수 있습니다.
+
+이를 위해 서버 구성에서 정규 표현식 기반의 마스킹 규칙을 정의할 수 있습니다.
+이러한 규칙은 쿼리와 모든 로그 메시지에 저장되기 전에 서버 로그나 시스템 테이블(예: `system.query_log`, `system.text_log`, `system.processes`)에 적용됩니다.
+
+이렇게 하면 민감한 데이터가 **로그**에만 유출되는 것을 방지할 수 있습니다.
+쿼리 결과에서 데이터는 마스킹하지 않는다는 점에 유의하십시오.
+
+예를 들어, 사회 보장 번호를 마스킹하려면 다음 규칙을 [서버 구성](/operations/configuration-files)에 추가할 수 있습니다:
+
+```yaml
+
+
+ hide SSN
+ (^|\D)\d{3}-\d{2}-\d{4}($|\D)
+ 000-00-0000
+
+
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/03_data-masking.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/03_data-masking.md.hash
new file mode 100644
index 00000000000..46a11a7282a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/03_data-masking.md.hash
@@ -0,0 +1 @@
+0abe4ce004f97a72
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/04_cmek.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/04_cmek.md
new file mode 100644
index 00000000000..6ec1ac337b6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/04_cmek.md
@@ -0,0 +1,124 @@
+---
+'sidebar_label': '데이터 암호화'
+'slug': '/cloud/security/cmek'
+'title': '데이터 암호화'
+'description': 'ClickHouse Cloud에서 데이터 암호화에 대해 더 알아보세요.'
+'doc_type': 'guide'
+'keywords':
+- 'ClickHouse Cloud'
+- 'encryption'
+- 'CMEK'
+- 'KMS key poller'
+---
+
+import Image from '@theme/IdealImage';
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge'
+import cmek_performance from '@site/static/images/_snippets/cmek-performance.png';
+
+
+# 데이터 암호화
+
+## 스토리지 수준 암호화 {#storage-encryption}
+
+ClickHouse Cloud는 기본적으로 클라우드 제공자가 관리하는 AES 256 키를 이용한 데이터 암호화를 제공하며, 기본적으로 암호화 저장이 구성되어 있습니다. 자세한 내용은 다음을 참조하세요:
+- [AWS S3의 서버 측 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)
+- [GCP의 기본 암호화](https://cloud.google.com/docs/security/encryption/default-encryption)
+- [Azure의 데이터 저장소 암호화](https://learn.microsoft.com/en-us/azure/storage/common/storage-service-encryption)
+
+## 데이터베이스 수준 암호화 {#database-encryption}
+
+
+
+데이터가 저장될 때 기본적으로 클라우드 제공자가 관리하는 AES 256 키를 사용하여 암호화됩니다. 고객은 서비스 데이터에 대한 추가 보호 계층을 제공하기 위해 투명 데이터 암호화(Transparent Data Encryption, TDE)를 활성화하거나 고객 관리 암호화 키(Customer Managed Encryption Keys, CMEK)를 구현하기 위해 자체 키를 제공할 수 있습니다.
+
+강화된 암호화는 현재 AWS 및 GCP 서비스에서 사용할 수 있으며, Azure는 곧 지원될 예정입니다.
+
+### 투명 데이터 암호화 (TDE) {#transparent-data-encryption-tde}
+
+TDE는 서비스 생성 시 활성화해야 합니다. 기존 서비스는 생성 후 암호화할 수 없습니다. TDE가 활성화되면 비활성화할 수 없습니다. 서비스 내의 모든 데이터는 암호화된 상태로 유지됩니다. TDE를 활성화한 후 비활성화하려면 새 서비스를 생성하고 데이터 이동을 해야 합니다.
+
+1. `새 서비스 생성`을 선택합니다.
+2. 서비스를 이름을 지정합니다.
+3. 드롭다운에서 클라우드 제공자를 AWS 또는 GCP로 선택하고 원하는 지역을 선택합니다.
+4. 기업 기능 드롭다운을 클릭하고 투명 데이터 암호화(TDE) 사용을 전환합니다.
+5. 서비스 생성 클릭합니다.
+
+### 고객 관리 암호화 키 (CMEK) {#customer-managed-encryption-keys-cmek}
+
+:::warning
+ClickHouse Cloud 서비스의 암호화에 사용된 KMS 키를 삭제하면 ClickHouse 서비스가 중지되고 해당 데이터와 기존 백업이 복구할 수 없게 됩니다. 키를 회전할 때 우발적인 데이터 손실을 방지하기 위해 삭제 전 일정 기간 동안 이전 KMS 키를 유지할 수 있습니다.
+:::
+
+서비스가 TDE로 암호화된 후 고객은 CMEK를 활성화하기 위해 키를 업데이트할 수 있습니다. TDE 설정을 업데이트한 후 서비스는 자동으로 재시작됩니다. 이 과정에서 이전 KMS 키가 데이터 암호화 키(DKE)를 복호화하고 새 KMS 키가 DKE를 다시 암호화합니다. 이로 인해 재시작 시 서비스가 앞으로의 암호화 작업에 대해 새 KMS 키를 사용하게 됩니다. 이 과정은 몇 분이 걸릴 수 있습니다.
+
+
+ AWS KMS로 CMEK 활성화
+
+1. ClickHouse Cloud에서 암호화된 서비스를 선택합니다.
+2. 왼쪽에서 설정을 클릭합니다.
+3. 화면 하단에서 네트워크 보안 정보를 확장합니다.
+4. 암호화 역할 ID (AWS) 또는 암호화 서비스 계정 (GCP)을 복사합니다. 이후 단계에서 이 정보가 필요합니다.
+5. [AWS KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)을 클릭합니다.
+6. 키를 클릭합니다.
+7. 다음과 같이 AWS 키 정책을 업데이트합니다:
+
+```json
+{
+ "Sid": "Allow ClickHouse Access",
+ "Effect": "Allow",
+ "Principal": {
+ "AWS": [ "Encryption role ID " ]
+ },
+ "Action": [
+ "kms:Encrypt",
+ "kms:Decrypt",
+ "kms:ReEncrypt*",
+ "kms:DescribeKey"
+ ],
+ "Resource": "*"
+}
+```
+
+10. 키 정책을 저장합니다.
+11. 키 ARN을 복사합니다.
+12. ClickHouse Cloud로 돌아가서 서비스 설정의 투명 데이터 암호화 섹션에 키 ARN을 붙여넣습니다.
+13. 변경 사항을 저장합니다.
+
+
+
+
+ GCP KMS로 CMEK 활성화
+
+1. ClickHouse Cloud에서 암호화된 서비스를 선택합니다.
+2. 왼쪽에서 설정을 클릭합니다.
+3. 화면 하단에서 네트워크 보안 정보를 확장합니다.
+4. 위 단계 4에서 복사한 암호화 서비스 계정을 복사합니다. 이후 단계에서 이 정보가 필요합니다.
+5. [GCP KMS 키 생성](https://cloud.google.com/kms/docs/create-key)을 클릭합니다.
+6. 키를 클릭합니다.
+7. 위 단계 4에서 복사한 GCP 암호화 서비스 계정에 다음 권한을 부여합니다.
+ - Cloud KMS CryptoKey Encrypter/Decrypter
+ - Cloud KMS Viewer
+10. 키 권한을 저장합니다.
+11. 키 리소스 경로를 복사합니다.
+12. ClickHouse Cloud로 돌아가서 서비스 설정의 투명 데이터 암호화 섹션에 키 리소스 경로를 붙여넣습니다.
+13. 변경 사항을 저장합니다.
+
+
+
+#### 키 회전 {#key-rotation}
+
+CMEK를 설정한 후에는 위 절차에 따라 새 KMS 키를 생성하고 권한을 부여하여 키를 회전합니다. 서비스 설정으로 돌아가서 새 ARN (AWS) 또는 키 리소스 경로 (GCP)를 붙여넣고 설정을 저장합니다. 서비스는 새 키를 적용하기 위해 재시작됩니다.
+
+#### KMS 키 폴러 {#kms-key-poller}
+
+CMEK를 사용할 때 제공된 KMS 키의 유효성이 10분마다 확인됩니다. KMS 키에 대한 접근이 유효하지 않으면 ClickHouse 서비스가 중지됩니다. 서비스를 재개하려면 이 가이드의 절차를 따라 KMS 키에 대한 접근을 복원하고, 이후 서비스를 재시작합니다.
+
+### 백업 및 복원 {#backup-and-restore}
+
+백업은 관련 서비스와 동일한 키를 사용하여 암호화됩니다. 암호화된 백업을 복원하면 원본 인스턴스와 동일한 KMS 키를 사용하는 암호화된 인스턴스가 생성됩니다. 필요시 복원 후 KMS 키를 회전할 수 있습니다; 자세한 내용은 [키 회전](#key-rotation)을 참조하세요.
+
+## 성능 {#performance}
+
+데이터베이스 암호화는 ClickHouse의 내장된 [데이터 암호화용 가상 파일 시스템 기능](/operations/storing-data#encrypted-virtual-file-system)을 활용하여 데이터를 암호화하고 보호합니다. 이 기능에 사용되는 알고리즘은 `AES_256_CTR`이며, 부하에 따라 5-15%의 성능 저하가 예상됩니다:
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/04_cmek.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/04_cmek.md.hash
new file mode 100644
index 00000000000..89cc38304aa
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/04_cmek.md.hash
@@ -0,0 +1 @@
+4bc4d18deb048362
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/01_console-audit-log.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/01_console-audit-log.md
new file mode 100644
index 00000000000..26261750b47
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/01_console-audit-log.md
@@ -0,0 +1,65 @@
+---
+'sidebar_label': '콘솔 감사 로그'
+'slug': '/cloud/security/audit-logging/console-audit-log'
+'title': '콘솔 감사 로그'
+'description': '이 페이지는 사용자가 클라우드 감사 로그를 검토하는 방법을 설명합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'audit log'
+---
+
+import Image from '@theme/IdealImage';
+import activity_log_1 from '@site/static/images/cloud/security/activity_log1.png';
+import activity_log_2 from '@site/static/images/cloud/security/activity_log2.png';
+import activity_log_3 from '@site/static/images/cloud/security/activity_log3.png';
+
+
+# Console audit log {#console-audit-log}
+
+사용자 콘솔 활동은 감사 로그에 기록되며, 이는 Admin 또는 Developer 조직 역할을 가진 사용자가 검토하고 로깅 시스템과 통합할 수 있습니다. 콘솔 감사 로그에 포함된 특정 이벤트는 다음에 표시됩니다.
+
+## 사용자 인터페이스를 통한 콘솔 로그 접근 {#console-audit-log-ui}
+
+
+
+## 조직 선택 {#select-org}
+
+ClickHouse Cloud에서 조직 세부정보로 이동합니다.
+
+
+
+
+
+## 감사 선택 {#select-audit}
+
+왼쪽 메뉴에서 **Audit** 탭을 선택하여 귀하의 ClickHouse Cloud 조직에서 어떤 변경 사항이 있었는지 확인합니다 - 누가 변경했는지와 언제 발생했는지 포함하여.
+
+**Activity** 페이지는 조직에 대해 기록된 이벤트 목록이 포함된 테이블을 표시합니다. 기본적으로 이 목록은 역순으로 정렬되어 있습니다 (가장 최근 이벤트가 맨 위에). 열 헤더를 클릭하여 테이블의 순서를 변경할 수 있습니다. 테이블의 각 항목은 다음 필드를 포함합니다:
+
+- **Activity:** 이벤트를 설명하는 텍스트 조각
+- **User:** 이벤트를 시작한 사용자
+- **IP Address:** 해당되는 경우, 이 필드는 이벤트를 시작한 사용자의 IP 주소를 나열합니다
+- **Time:** 이벤트의 타임스탬프
+
+
+
+
+
+## 검색 바 사용 {#use-search-bar}
+
+검색 바를 사용하여 서비스 이름 또는 IP 주소와 같은 특정 기준에 따라 이벤트를 필터링할 수 있습니다. 또한 이 정보를 CSV 형식으로 내보내어 배포하거나 외부 도구에서 분석할 수 있습니다.
+
+
+
+
+
+
+
+## API를 통한 콘솔 감사 로그 접근 {#console-audit-log-api}
+
+사용자는 ClickHouse Cloud API `activity` 엔드포인트를 사용하여 감사 이벤트의 내보내기를 가져올 수 있습니다. 자세한 내용은 [API reference](https://clickhouse.com/docs/cloud/manage/api/swagger)에서 확인할 수 있습니다.
+
+## 로그 통합 {#log-integrations}
+
+사용자는 API를 사용하여 원하는 로깅 플랫폼과 통합할 수 있습니다. 다음은 기본 제공되는 커넥터입니다:
+- [ClickHouse Cloud Audit add-on for Splunk](/integrations/audit-splunk)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/01_console-audit-log.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/01_console-audit-log.md.hash
new file mode 100644
index 00000000000..b17afc2e196
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/01_console-audit-log.md.hash
@@ -0,0 +1 @@
+60fc3f226698bde9
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/02_database-audit-log.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/02_database-audit-log.md
new file mode 100644
index 00000000000..4c673d68704
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/02_database-audit-log.md
@@ -0,0 +1,65 @@
+---
+'sidebar_label': '데이터베이스 감사 로그'
+'slug': '/cloud/security/audit-logging/database-audit-log'
+'title': '데이터베이스 감사 로그'
+'description': '이 페이지에서는 사용자가 데이터베이스 감사 로그를 검토하는 방법을 설명합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'audit logging'
+- 'database logs'
+- 'compliance'
+- 'security'
+- 'monitoring'
+---
+
+
+# 데이터베이스 감사 로그 {#database-audit-log}
+
+ClickHouse는 기본적으로 데이터베이스 감사 로그를 제공합니다. 이 페이지에서는 보안 관련 로그에 중점을 둡니다. 시스템에서 기록하는 데이터에 대한 자세한 내용은 [시스템 테이블](/operations/system-tables/overview) 문서를 참조하세요.
+
+:::tip 로그 보존
+정보는 시스템 테이블에 직접 기록되며 기본적으로 최대 30일 동안 보존됩니다. 이 기간은 시스템의 병합 빈도에 따라 길어지거나 짧아질 수 있습니다. 고객은 로그를 더 오래 보관하거나 보안 정보 및 이벤트 관리(SIEM) 시스템으로 로그를 내보내기 위한 추가 조치를 취할 수 있습니다. 아래에서 자세한 내용을 확인하세요.
+:::
+
+## 보안 관련 로그 {#security-relevant-logs}
+
+ClickHouse는 주로 세션 및 쿼리 로그에 보안 관련 데이터베이스 이벤트를 기록합니다.
+
+[system.session_log](/operations/system-tables/session_log) 는 성공 및 실패한 로그인 시도를 기록하며, 인증 시도의 위치도 포함됩니다. 이 정보는 ClickHouse 인스턴스에 대한 자격 증명 착취 또는 무차별 대입 공격을 식별하는 데 사용할 수 있습니다.
+
+로그인 실패를 보여주는 샘플 쿼리
+```sql
+select event_time
+ ,type
+ ,user
+ ,auth_type
+ ,client_address
+FROM clusterAllReplicas('default',system.session_log)
+WHERE type='LoginFailure'
+LIMIT 100
+```
+
+[system.query_log](/operations/system-tables/query_log) 는 ClickHouse 인스턴스에서 실행된 쿼리 활동을 캡처합니다. 이 정보는 위협 행위자가 실행한 쿼리를 결정하는 데 유용합니다.
+
+"compromised_account" 사용자 활동을 검색하는 샘플 쿼리
+```sql
+SELECT event_time
+ ,address
+ ,initial_user
+ ,initial_address
+ ,forwarded_for
+ ,query
+FROM clusterAllReplicas('default', system.query_log)
+WHERE user=’compromised_account’
+```
+
+## 서비스 내 로그 데이터 보존 {#reatining-log-data-within-services}
+
+더 긴 보존 기간이나 로그 내구성이 필요한 고객은 물리화된 뷰를 사용하여 이러한 목표를 달성할 수 있습니다. 물리화된 뷰에 대한 더 많은 정보, 그 정의, 이점 및 구현 방법은 [물리화된 뷰](/materialized-views) 비디오 및 문서를 참조하세요.
+
+## 로그 내보내기 {#exporting-logs}
+
+시스템 로그는 SIEM 시스템과 호환되는 다양한 형식을 사용하여 저장 위치에 기록하거나 내보낼 수 있습니다. 더 많은 정보는 [테이블 함수](/sql-reference/table-functions) 문서를 참조하세요. 가장 일반적인 방법은 다음과 같습니다:
+- [S3에 기록](/sql-reference/table-functions/s3)
+- [GCS에 기록](/sql-reference/table-functions/gcs)
+- [Azure Blob Storage에 기록](/sql-reference/table-functions/azureBlobStorage)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/02_database-audit-log.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/02_database-audit-log.md.hash
new file mode 100644
index 00000000000..3d566ca6950
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/02_database-audit-log.md.hash
@@ -0,0 +1 @@
+f24b848d12a33661
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/03_byoc-security-playbook.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/03_byoc-security-playbook.md
new file mode 100644
index 00000000000..4f537d7f77e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/03_byoc-security-playbook.md
@@ -0,0 +1,68 @@
+---
+'sidebar_label': 'BYOC 보안 플레이북'
+'slug': '/cloud/security/audit-logging/byoc-security-playbook'
+'title': 'BYOC 보안 플레이북'
+'description': '이 페이지는 고객이 잠재적인 보안 이벤트를 식별하는 데 사용할 수 있는 방법을 설명합니다.'
+'doc_type': 'guide'
+'keywords':
+- 'byoc'
+- 'security'
+- 'playbook'
+- 'best practices'
+- 'compliance'
+---
+
+
+# BYOC 보안 핸드북 {#byoc-security-playbook}
+
+ClickHouse는 보안 공유 책임 모델 하에 Bring Your Own Cloud (BYOC)를 운영하며, 이는 https://trust.clickhouse.com 에서 다운로드할 수 있습니다. 다음 정보는 BYOC 고객이 잠재적인 보안 사건을 식별하는 방법에 대한 예로 제공됩니다. 고객은 이 정보를 자신의 보안 프로그램의 맥락에서 고려하여 추가적인 탐지 및 알림이 도움이 될 수 있는지를 판단해야 합니다.
+
+## 잠재적으로 손상된 ClickHouse 자격 증명 {#compromised-clickhouse-credentials}
+
+자격 증명 기반 공격을 탐지하고 악의적인 활동을 조사하기 위한 쿼리와 관련된 [데이터베이스 감사 로그](/cloud/security/audit-logging/database-audit-log) 문서를 참조하십시오.
+
+## 응용 프로그램 계층 서비스 거부 공격 {#application-layer-dos-attack}
+
+서비스 거부(DoS) 공격을 실행하는 다양한 방법이 있습니다. 공격이 특정 페이로드를 통해 ClickHouse 인스턴스를 충돌시키는 데 집중되는 경우, 시스템을 실행 상태로 복구하거나 시스템을 재부팅하고 액세스를 제한하여 제어를 회복하십시오. 다음 쿼리를 사용하여 [system.crash_log](/operations/system-tables/crash_log)를 검토하여 공격에 대한 추가 정보를 얻으십시오.
+
+```sql
+SELECT *
+FROM clusterAllReplicas('default',system.crash_log)
+```
+
+## 손상된 ClickHouse 생성 AWS 역할 {#compromised-clickhouse-created-aws-roles}
+
+ClickHouse는 시스템 기능을 활성화하기 위해 미리 생성된 역할을 사용합니다. 이 섹션은 고객이 AWS에서 CloudTrail을 사용하고 CloudTrail 로그에 접근할 수 있다고 가정합니다.
+
+사고가 손상된 역할의 결과일 수 있는 경우, ClickHouse IAM 역할 및 행동과 관련된 CloudTrail 및 CloudWatch에서 활동을 검토하십시오. 설정의 일환으로 제공되는 [CloudFormation](/cloud/reference/byoc/onboarding/aws#cloudformation-iam-roles) 스택 또는 Terraform 모듈을 참조하여 IAM 역할 목록을 확인하십시오.
+
+## EKS 클러스터에 대한 무단 액세스 {#unauthorized-access-eks-cluster}
+
+ClickHouse BYOC는 EKS 내에서 실행됩니다. 이 섹션은 고객이 AWS에서 CloudTrail 및 CloudWatch를 사용하고 로그에 접근할 수 있다고 가정합니다.
+
+사고가 손상된 EKS 클러스터의 결과일 수 있는 경우, 아래 쿼리를 EKS CloudWatch 로그 내에서 사용하여 특정 위협을 식별하십시오.
+
+사용자 이름별 Kubernetes API 호출 수를 나열하십시오
+```sql
+fields user.username
+| stats count(*) as count by user.username
+```
+
+사용자가 ClickHouse 엔지니어인지 식별하십시오
+```sql
+fields @timestamp,user.extra.sessionName.0, requestURI, verb,userAgent, @message, @logStream, @log
+| sort @timestamp desc
+| filter user.username like /clickhouse.com/
+| limit 10000
+```
+
+Kubernetes 비밀에 접근하는 사용자를 검토하고 서비스 역할을 필터링하십시오
+```sql
+fields @timestamp,user.extra.sessionName.0, requestURI, verb,userAgent, @message, @logStream, @log
+| sort @timestamp desc
+| filter requestURI like /secret/
+| filter verb="get"
+| filter ispresent(user.extra.sessionName.0)
+| filter user.username not like /ClickHouseManagementRole/
+| filter user.username not like /data-plane-mgmt/
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/03_byoc-security-playbook.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/03_byoc-security-playbook.md.hash
new file mode 100644
index 00000000000..d3ced07ff55
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/03_byoc-security-playbook.md.hash
@@ -0,0 +1 @@
+f7212f0798b0f715
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/_category_.json
new file mode 100644
index 00000000000..db6d935c02e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Audit logging",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/index.md
new file mode 100644
index 00000000000..b432f1895db
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/index.md
@@ -0,0 +1,23 @@
+---
+'sidebar_label': '감사 로그 기록'
+'slug': '/cloud/security/audit_logging'
+'title': '감사 로그 기록'
+'hide_title': true
+'description': 'ClickHouse Cloud 감사 로그 기록 섹션의 목차 페이지'
+'doc_type': 'landing-page'
+'keywords':
+- 'audit logging'
+- 'compliance'
+- 'security'
+- 'logging'
+- 'monitoring'
+---
+
+
+# 감사 로그
+
+| 페이지 | 설명 |
+|---------------------------------------------------------------------|--------------------------------------------------------------------------------------|
+| [콘솔 감사 로그](/cloud/security/audit-logging/console-audit-log) | ClickHouse Cloud 콘솔에서 감사된 이벤트에 접근하고 검토하기 |
+| [데이터베이스 감사 로그](/cloud/security/audit-logging/database-audit-log) | 데이터베이스 활동과 관련된 로그 |
+| [BYOC 보안 플레이북](/cloud/security/audit-logging/byoc-security-playbook) | 고객이 BYOC 보안 프로그램을 개발하는 데 사용할 수 있는 샘플 로그 및 쿼리 |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/index.md.hash
new file mode 100644
index 00000000000..ffe2e27edba
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/05_audit_logging/index.md.hash
@@ -0,0 +1 @@
+596e93804ca36b38
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/_category_.json
new file mode 100644
index 00000000000..e07fd81e071
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Compliance",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/hipaa-onboarding.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/hipaa-onboarding.md
new file mode 100644
index 00000000000..28bcc8869da
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/hipaa-onboarding.md
@@ -0,0 +1,103 @@
+---
+'sidebar_label': 'HIPAA 온보딩'
+'slug': '/cloud/security/compliance/hipaa-onboarding'
+'title': 'HIPAA 온보딩'
+'description': 'HIPAA 준수 서비스에 온보딩하는 방법에 대해 자세히 알아보세요.'
+'doc_type': 'guide'
+'keywords':
+- 'hipaa'
+- 'compliance'
+- 'healthcare'
+- 'security'
+- 'data protection'
+---
+
+import BetaBadge from '@theme/badges/BetaBadge';
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge';
+import Image from '@theme/IdealImage';
+import hipaa1 from '@site/static/images/cloud/security/compliance/hipaa_1.png';
+import hipaa2 from '@site/static/images/cloud/security/compliance/hipaa_2.png';
+import hipaa3 from '@site/static/images/cloud/security/compliance/hipaa_3.png';
+import hipaa4 from '@site/static/images/cloud/security/compliance/hipaa_4.png';
+
+
+
+ClickHouse는 1996년의 건강 정보 이동성 및 책임 법안(HIPAA)의 보안 규칙을 준수하는 서비스를 제공합니다. 고객은 비즈니스 파트너 계약(BAA)에 서명하고 서비스를 준수하는 지역에 배포한 후 이러한 서비스 내에서 보호된 건강 정보(PHI)를 처리할 수 있습니다.
+
+ClickHouse의 준수 프로그램 및 제3자 감사 보고서 가용성에 대한 자세한 내용은 [준수 개요](/cloud/security/compliance-overview) 및 [신뢰 센터](https://trust.clickhouse.com)를 참조하십시오. 또한 고객은 [보안 기능](/cloud/security) 페이지를 검토하여 작업 부하에 대해 적절한 보안 제어를 선택하고 구현해야 합니다.
+
+이 페이지는 ClickHouse Cloud에서 HIPAA 준수 서비스 배포를 활성화하는 프로세스를 설명합니다.
+
+## HIPAA 준수 서비스 활성화 및 배포 {#enable-hipaa-compliant-services}
+
+
+
+### 엔터프라이즈 서비스 등록 {#sign-up-for-enterprise}
+
+1. 콘솔의 왼쪽 하단 모서리에서 조직 이름을 선택합니다.
+2. **청구**를 클릭합니다.
+3. 왼쪽 상단 모서리에서 **요금제**를 검토합니다.
+4. **요금제**가 **엔터프라이즈**인 경우, 다음 섹션으로 이동합니다. 그렇지 않은 경우 **요금제 변경**을 클릭합니다.
+5. **엔터프라이즈로 전환**을 선택합니다.
+
+### 조직에 대한 HIPAA 활성화 {#enable-hipaa}
+
+1. 콘솔의 왼쪽 하단 모서리에서 조직 이름을 선택합니다.
+2. **조직 세부 정보**를 클릭합니다.
+3. **HIPAA 활성화**를 켭니다.
+
+
+
+
+
+
+
+4. 화면의 지시에 따라 BAA 완료 요청을 제출합니다.
+
+
+
+
+
+
+
+5. BAA가 완료되면 조직에 대해 HIPAA가 활성화됩니다.
+
+
+
+
+
+
+
+### HIPAA 준수 지역에 서비스 배포 {#deploy-hippa-services}
+
+1. 콘솔의 홈 화면 왼쪽 상단에서 **새 서비스**를 선택합니다.
+2. **지역 유형**을 **HIPAA 준수**로 변경합니다.
+
+
+
+
+
+
+
+3. 서비스 이름을 입력하고 나머지 정보를 입력합니다.
+
+HIPAA 준수 클라우드 공급자 및 서비스의 전체 목록은 [지원되는 클라우드 지역](/cloud/reference/supported-regions) 페이지를 참조하십시오.
+
+
+
+## 기존 서비스 마이그레이션 {#migrate-to-hipaa}
+
+고객은 필요한 경우 준수 환경에 서비스를 배포할 것을 강력히 권장합니다. 표준 지역에서 HIPAA 준수 지역으로 서비스 마이그레이션하는 과정은 백업에서 복원하는 것을 포함하며 약간의 다운타임이 필요할 수 있습니다.
+
+표준 지역에서 HIPAA 준수 지역으로의 마이그레이션이 필요한 경우, 다음 단계를 따라 자가 서비스 마이그레이션을 수행하십시오:
+
+1. 마이그레이션할 서비스를 선택합니다.
+2. 왼쪽에서 **백업**을 클릭합니다.
+3. 복원할 백업 왼쪽에 있는 세 개의 점을 선택합니다.
+4. 백업을 HIPAA 준수 지역으로 복원할 **지역 유형**을 선택합니다.
+5. 복원이 완료되면 스키마 및 레코드 수가 예상과 일치하는지 확인하기 위해 몇 가지 쿼리를 실행합니다.
+6. 이전 서비스를 삭제합니다.
+
+:::info 제한 사항
+서비스는 동일한 클라우드 공급자 및 지리적 지역에 남아 있어야 합니다. 이 프로세스는 동일한 클라우드 공급자 및 지역 내에서 서비스를 준수 환경으로 마이그레이션합니다.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/hipaa-onboarding.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/hipaa-onboarding.md.hash
new file mode 100644
index 00000000000..9df3b4cee9f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/hipaa-onboarding.md.hash
@@ -0,0 +1 @@
+2fc9f5866d934a4e
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/pci-onboarding.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/pci-onboarding.md
new file mode 100644
index 00000000000..45394fe74f0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/pci-onboarding.md
@@ -0,0 +1,92 @@
+---
+'sidebar_label': 'PCI 온보딩'
+'slug': '/cloud/security/compliance/pci-onboarding'
+'title': 'PCI 온보딩'
+'description': 'PCI 규정을 준수하는 서비스에 온보딩하는 방법에 대해 자세히 알아보세요.'
+'doc_type': 'guide'
+'keywords':
+- 'pci'
+- 'compliance'
+- 'payment security'
+- 'data protection'
+- 'security'
+---
+
+import BetaBadge from '@theme/badges/BetaBadge';
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge';
+import Image from '@theme/IdealImage';
+import pci1 from '@site/static/images/cloud/security/compliance/pci_1.png';
+import pci2 from '@site/static/images/cloud/security/compliance/pci_2.png';
+import pci3 from '@site/static/images/cloud/security/compliance/pci_3.png';
+
+
+
+ClickHouse는 결제 카드 산업 데이터 보안 표준(PCI-DSS)을 준수하는 서비스를 제공하며, Level 1 서비스 제공업체 요구 사항에 따라 감사되었습니다. 고객은 이 기능을 활성화하고 준수하는 지역에 서비스 배포를 통해 이러한 서비스 내에서 기본 계좌 번호(PAN)를 처리할 수 있습니다.
+
+ClickHouse의 준수 프로그램 및 타사 감사 보고서 이용 가능성에 대한 자세한 내용은 [준수 개요](/cloud/security/compliance-overview)를 검토하십시오. 우리의 PCI 공유 책임 문서 사본은 [신뢰 센터](https://trust.clickhouse.com)에서 확인할 수 있습니다. 또한 고객은 적절한 보안 통제를 선택하고 구현하기 위해 [보안 기능](/cloud/security) 페이지를 검토해야 합니다.
+
+이 페이지에서는 ClickHouse Cloud에서 PCI 준수 서비스 배포를 활성화하는 절차를 설명합니다.
+
+
+
+### 기업 서비스 가입하기 {#sign-up-for-enterprise}
+
+1. 콘솔의 왼쪽 하단에서 조직 이름을 선택합니다.
+2. **청구**를 클릭합니다.
+3. 왼쪽 상단의 **플랜**을 검토합니다.
+4. **플랜**이 **Enterprise**인 경우 다음 섹션으로 이동합니다. 그렇지 않으면 **플랜 변경**을 클릭합니다.
+5. **Enterprise로 전환**을 선택합니다.
+
+### 조직에 PCI 활성화하기 {#enable-hipaa}
+
+1. 콘솔의 왼쪽 하단에서 조직 이름을 선택합니다.
+2. **조직 세부정보**를 클릭합니다.
+3. **PCI 활성화**를 켭니다.
+
+
+
+
+
+
+
+4. 활성화되면 PCI 서비스를 조직 내에서 배포할 수 있습니다.
+
+
+
+
+
+
+
+### PCI 준수 지역에 서비스 배포하기 {#deploy-pci-regions}
+
+1. 콘솔의 홈 화면 왼쪽 상단에서 **새 서비스**를 선택합니다.
+2. **지역 유형**을 **HIPAA 준수**로 변경합니다.
+
+
+
+
+
+
+
+3. 서비스 이름을 입력하고 나머지 정보를 입력합니다.
+
+PCI 준수 클라우드 제공업체 및 서비스의 전체 목록은 [지원되는 클라우드 지역](/cloud/reference/supported-regions) 페이지를 검토하십시오.
+
+
+
+## 기존 서비스 마이그레이션 {#migrate-to-hipaa}
+
+고객은 필요에 따라 준수 환경에 서비스를 배포하는 것이 강력히 권장됩니다. 표준 지역에서 PCI 준수 지역으로 서비스를 마이그레이션하는 과정은 백업에서 복원하는 것이며, 일부 다운타임이 필요할 수 있습니다.
+
+표준 지역에서 PCI 준수 지역으로의 마이그레이션이 필요한 경우, 다음 단계를 따라 자체 서비스 마이그레이션을 수행하십시오:
+
+1. 마이그레이션할 서비스를 선택합니다.
+2. 왼쪽에서 **백업**을 클릭합니다.
+3. 복원할 백업 왼쪽에 있는 세 개의 점을 선택합니다.
+4. 백업을 PCI 준수 지역으로 복원할 **지역 유형**을 선택합니다.
+5. 복원이 완료되면 몇 개의 쿼리를 실행하여 스키마와 레코드 수가 예상대로인지 확인합니다.
+6. 이전 서비스를 삭제합니다.
+
+:::info 제한 사항
+서비스는 동일한 클라우드 제공업체 및 지리적 지역에 남아 있어야 합니다. 이 프로세스는 동일한 클라우드 제공업체 및 지역 내에서 준수 환경으로 서비스를 마이그레이션합니다.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/pci-onboarding.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/pci-onboarding.md.hash
new file mode 100644
index 00000000000..b8aebe7c7eb
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/06_compliance/pci-onboarding.md.hash
@@ -0,0 +1 @@
+756044de71c1c397
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/_category_.json
new file mode 100644
index 00000000000..c682d43a9b1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/guides/security/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Security",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/01_what_is.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/01_what_is.md
new file mode 100644
index 00000000000..0b2097f628e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/01_what_is.md
@@ -0,0 +1,49 @@
+---
+'slug': '/cloud/overview'
+'title': '소개'
+'description': 'ClickHouse Cloud가 무엇인지, 오픈 소스보다의 장점, 그리고 완전 관리형 분석 플랫폼의 주요 기능에 대해
+ 알아보세요.'
+'keywords':
+- 'clickhouse cloud'
+- 'what is clickhouse cloud'
+- 'clickhouse cloud overview'
+- 'clickhouse cloud features'
+'hide_title': true
+'doc_type': 'guide'
+---
+
+## ClickHouse Cloud란 무엇인가요? {#what-is-clickhouse-cloud}
+
+ClickHouse Cloud는 ClickHouse의 원래 제작자들이 만든 완전 관리형 클라우드 서비스로, 가장 빠르고 인기 있는 오픈 소스 컬럼형 온라인 분석 처리 데이터베이스입니다.
+
+Cloud를 통해 인프라, 유지 관리, 확장 및 운영이 자동으로 처리되므로, 조직과 고객을 위해 가치를 더 빠르게 구축하는 데 집중할 수 있습니다.
+
+## ClickHouse Cloud의 이점 {#benefits-of-clickhouse-cloud}
+
+ClickHouse Cloud는 오픈 소스 버전 대비 몇 가지 주요 이점을 제공합니다:
+
+- **빠른 가치 실현**: 클러스터의 크기를 조정하거나 확장하지 않고 즉시 구축을 시작할 수 있습니다.
+- **원활한 확장**: 자동 확장이 가변 작업 부하에 적응하여 최대 사용량에 맞춰 과도한 프로비저닝을 하지 않아도 됩니다.
+- **서버리스 운영**: 크기 조정, 확장, 보안, 신뢰성 및 업그레이드를 처리하는 동안 편안히 지내세요.
+- **투명한 가격 책정**: 사용한 만큼만 요금이 청구되며, 리소스 예약 및 확장 제어가 가능합니다.
+- **총 소유 비용**: 최상의 가격/성능 비율과 낮은 관리 비용을 제공합니다.
+- **광범위한 생태계**: 좋아하는 데이터 커넥터, 시각화 도구, SQL 및 언어 클라이언트를 함께 사용할 수 있습니다.
+
+## OSS와 ClickHouse Cloud 비교 {#oss-vs-clickhouse-cloud}
+
+| 기능 | 이점 | OSS ClickHouse | ClickHouse Cloud |
+|---------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|-------------------|
+| **배포 모드** | ClickHouse는 오픈 소스로 자체 관리할 수 있는 유연성을 제공하거나 클라우드에 배포할 수 있습니다. 서버 없이 로컬 파일을 위한 ClickHouse local 사용 혹은 ClickHouse를 애플리케이션에 직접 통합하는 chDB를 사용할 수 있습니다. | ✅ | ✅ |
+| **스토리지** | 오픈 소스 및 클라우드 호스팅 제품으로서 ClickHouse는 공유 디스크 아키텍처와 공유 없음 아키텍처 모두에 배포할 수 있습니다. | ✅ | ✅ |
+| **모니터링 및 경고** | 서비스 상태에 대한 모니터링 및 경고는 최적의 성능을 보장하고 잠재적인 문제를 감지하고 분류하는 능동적인 접근 방식에 필수적입니다. | ✅ | ✅ |
+| **ClickPipes** | ClickPipes는 데이터베이스, API 및 스트리밍 서비스와 같은 외부 데이터 소스를 ClickHouse Cloud에 원활하게 연결할 수 있는 ClickHouse의 관리형 수집 파이프라인입니다. 이를 통해 파이프라인, 사용자 정의 작업 또는 ETL 프로세스를 관리할 필요가 없습니다. 모든 크기의 작업 부하를 지원합니다. | ❌ | ✅ |
+| **사전 구축된 통합** | ClickHouse는 데이터 레이크, SQL 및 언어 클라이언트, 시각화 라이브러리 등 인기 있는 도구 및 서비스에 ClickHouse를 연결하는 사전 구축된 통합을 제공합니다. | ❌ | ✅ |
+| **SQL 콘솔** | SQL 콘솔은 클릭하우스 데이터베이스에 연결, 탐색 및 쿼리하는 빠르고 직관적인 방법을 제공합니다. 세련된 캡션, 쿼리 인터페이스, 데이터 가져오기 도구, 시각화, 협업 기능 및 GenAI 기반 SQL 지원 기능이 포함되어 있습니다. | ❌ | ✅ |
+| **합법성 준수** | ClickHouse Cloud의 합법성 준수에는 CCPA, EU-US DPF, GDPR, HIPAA, ISO 27001, ISO 27001 SoA, PCI DSS, SOC2가 포함됩니다. ClickHouse Cloud의 보안, 가용성, 처리 무결성 및 기밀성 프로세스는 모두 독립적으로 감사되었습니다. 세부 사항: trust.clickhouse.com. | ❌ | ✅ |
+| **엔터프라이즈급 보안** | SSO, 다단계 인증, 역할 기반 액세스 제어(RBAC), Private Link 및 Private Service Connect 지원을 통한 개인 및 안전한 연결, IP 필터링, 고객 관리 암호화 키(CMEK) 등을 포함한 고급 보안 기능을 지원합니다. | ❌ | ✅ |
+| **확장 및 최적화** | 작업 부하에 따라 원활하게 확장하여 수평 및 수직 확장을 모두 지원합니다. 자동 백업, 복제 및 고가용성을 통해 ClickHouse는 사용자에게 최적의 리소스 할당을 제공합니다. | ❌ | ✅ |
+| **지원 서비스** | 당사의 최고의 지원 서비스와 오픈 소스 커뮤니티 리소스는 선택한 배포 모델에 따라 커버리지를 제공합니다. | ❌ | ✅ |
+| **데이터베이스 업그레이드** | 정기적인 데이터베이스 업그레이드는 강력한 보안 태세를 구축하고 최신 기능 및 성능 개선에 접근하는 데 필수적입니다. | ❌ | ✅ |
+| **백업** | 백업 및 복원 기능은 데이터 내구성을 보장하고 정전 또는 기타 중단 시 우아한 복구를 지원합니다. | ❌ | ✅ |
+| **계산-계산 분리** | 사용자는 스토리지와 독립적으로 계산 리소스를 확장할 수 있으므로 팀과 작업 부하가 동일한 스토리지를 공유하면서 전용 계산 리소스를 유지할 수 있습니다. 이는 하나의 작업 부하의 성능이 다른 작업 부하에 영향을 미치지 않도록 보장하며 유연성, 성능 및 비용 효율성을 향상시킵니다. | ❌ | ✅ |
+| **관리형 서비스** | 클라우드 관리 서비스로서 팀은 비즈니스 결과에 집중하고 시장 출시 시간을 가속화할 수 있으며, ClickHouse의 크기 조정, 설정 및 유지 관리의 운영 부담을 걱정할 필요가 없습니다. | ❌ | ✅ |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/01_what_is.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/01_what_is.md.hash
new file mode 100644
index 00000000000..eeb5e2a146f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/01_what_is.md.hash
@@ -0,0 +1 @@
+a795b6c26b82a94a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/00_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/00_overview.md
new file mode 100644
index 00000000000..70870cfd8f6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/00_overview.md
@@ -0,0 +1,22 @@
+---
+'slug': '/cloud/get-started/cloud/use-cases/overview'
+'title': 'ClickHouse Cloud 구축'
+'description': 'ClickHouse Cloud 사용 사례를 탐색합니다: 실시간 분석, 관찰 가능성, 데이터 레이크 및 웨어하우스, 머신
+ 러닝 애플리케이션.'
+'keywords':
+- 'use cases'
+- 'Cloud'
+'sidebar_label': '개요'
+'doc_type': 'landing-page'
+---
+
+ClickHouse Cloud는 **기본 데이터 저장소** 및 **분석 레이어**로 사용하기에 적합합니다.
+
+ClickHouse의 컬럼형 아키텍처, 벡터화된 처리 및 클라우드 네이티브 디자인은 속도와 규모 모두를 요구하는 분석 워크로드에 독특하게 적합합니다. 광범위하게, ClickHouse Cloud의 가장 일반적인 사용 사례는 다음과 같습니다:
+
+| 사용 사례 | 설명 |
+|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [실시간 분석](/cloud/get-started/cloud/use-cases/real-time-analytics) | ClickHouse Cloud는 서브 초 단위의 쿼리 응답을 수십억 행에서 제공하여 실시간 분석에 탁월하며, 이를 통해 컬럼형 스토리지 아키텍처와 벡터화 실행 엔진의 이점을 활용합니다. 이 플랫폼은 매초 수백만 개의 이벤트를 처리하는 고처리량 데이터 수집을 처리하며, 사전 집계 없이 원시 데이터에 대한 직접 쿼리를 가능하게 합니다. 물리화된 뷰는 실시간 집계 및 사전 계산된 결과를 제공하며, 분위수 및 수를 위한 근사 함수는 대화형 대시보드 및 실시간 의사 결정을 위한 즉각적인 통찰력을 제공합니다. |
+| [관측 가능성](/cloud/get-started/cloud/use-cases/observability) | ClickHouse Cloud는 관측 가능성 워크로드에 적합하며, 시계열 데이터에 최적화된 전문 엔진 및 기능을 갖추고 있어 테라바이트의 로그, 메트릭 및 추적을 쉽게 수집하고 쿼리할 수 있습니다. ClickStack을 통해 ClickHouse의 종합 관측 가능성 솔루션은 모든 관측 가능성 데이터를 단일 플랫폼에서 통합하여 전통적인 로그, 메트릭 및 추적의 세 가지 방으로 나누어 상관 분석을 가능하게 하고 별도의 시스템 관리의 복잡성을 제거합니다. 이 통합된 접근 방식은 기업 규모의 애플리케이션 성능 모니터링, 인프라 모니터링 및 보안 이벤트 분석을 이상적으로 만들며, ClickStack은 데이터 사일로 없이 완전한 관측 가능성 워크플로에 필요한 도구 및 통합을 제공합니다. |
+| [데이터 웨어하우징](/cloud/get-started/cloud/use-cases/data_lake_and_warehouse) | ClickHouse의 데이터 웨어하우징 생태계 연결성을 통해 사용자는 몇 번의 클릭으로 설정을 완료하고 데이터를 ClickHouse에 쉽게 가져올 수 있습니다. 역사적 데이터 분석, 데이터 레이크, 쿼리 연합 및 JSON을 기본 데이터 타입으로 지원하여, 사용자는 대규모로 비용 효율적으로 데이터를 저장할 수 있도록 도와줍니다. |
+| [기계 학습 및 인공지능](/cloud/get-started/cloud/use-cases/AI_ML) | ClickHouse Cloud는 탐색 및 준비부터 훈련, 테스트 및 추론까지 ML 가치 사슬 전반에 걸쳐 사용될 수 있습니다. Clickhouse-local, Clickhouse-server 및 chdb와 같은 도구는 데이터 탐색, 발견 및 변환에 사용될 수 있으며, ClickHouse는 기능 저장소, 벡터 저장소 또는 MLOps 관측 가능성 저장소로 사용할 수 있습니다. 게다가, 완전 관리되는 원격 MCP 서버, 쿼리의 인라인 텍스트 완성, AI 기반 차트 구성 및 제품 내 Ask AI와 같은 내장 도구를 통해 능동적인 분석을 가능하게 합니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/00_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/00_overview.md.hash
new file mode 100644
index 00000000000..5c2ef3fe4b5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/00_overview.md.hash
@@ -0,0 +1 @@
+9787e3f67000a150
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/01_real-time-analytics.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/01_real-time-analytics.md
new file mode 100644
index 00000000000..15a43ec8ce3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/01_real-time-analytics.md
@@ -0,0 +1,107 @@
+---
+'slug': '/cloud/get-started/cloud/use-cases/real-time-analytics'
+'title': '실시간 분석'
+'description': 'ClickHouse Cloud를 사용하여 즉각적인 인사이트와 데이터 기반 의사 결정을 위한 실시간 분석 애플리케이션을
+ 구축하는 방법을 알아보세요.'
+'keywords':
+- 'use cases'
+- 'real-time analytics'
+'sidebar_label': '실시간 분석'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import rta_0 from '@site/static/images/cloud/onboard/discover/use_cases/0_rta.png';
+import rta_1 from '@site/static/images/cloud/onboard/discover/use_cases/1_rta.png';
+import rta_2 from '@site/static/images/cloud/onboard/discover/use_cases/2_rta.png';
+import rta_3 from '@site/static/images/cloud/onboard/discover/use_cases/3_rta.png';
+
+
+
+## 실시간 분석이란 무엇인가? {#what-is-real-time-analytics}
+
+실시간 분석은 데이터가 생성되자마자 최종 사용자와 고객에게 인사이트를 제공하는 데이터 처리 방식을 의미합니다. 이는 데이터가 배치로 수집되고 종종 생성된 후 오랜 시간이 지난 후에 처리되는 전통적 또는 배치 분석과 다릅니다.
+
+실시간 분석 시스템은 사건의 흐름 위에 구축되며, 사건은 시간에 따라 정렬된 사건의 일련으로 구성됩니다. 사건은 이미 발생한 것입니다. 예를 들어, 전자상거래 웹사이트에서 장바구니에 항목을 추가하거나, 사물인터넷(IoT) 센서에서 측정값을 방출하거나, 축구 경기에서 골슛을 하는 것 등이 될 수 있습니다.
+
+아래는 상상의 IoT 센서에서 발생한 사건의 예입니다:
+
+```json
+{
+ "deviceId": "sensor-001",
+ "timestamp": "2023-10-05T14:30:00Z",
+ "eventType": "temperatureAlert",
+ "data": {
+ "temperature": 28.5,
+ "unit": "Celsius",
+ "thresholdExceeded": true
+ }
+}
+```
+
+조직들은 이러한 사건을 집계하고 분석하여 고객에 대한 인사이트를 발견할 수 있습니다. 이는 전통적으로 배치 분석을 사용하여 수행되었으며, 다음 섹션에서는 배치 분석과 실시간 분석을 비교할 것입니다.
+
+## 실시간 분석 vs 배치 분석 {#real-time-analytics-vs-batch-analytics}
+
+아래 다이어그램은 개별 사건의 관점에서 전형적인 배치 분석 시스템이 어떻게 보일 것인지 보여줍니다:
+
+
+
+사건이 발생한 이후부터 우리가 이를 처리하고 인사이트를 얻기까지 상당한 간격이 있다는 것을 볼 수 있습니다. 전통적으로, 이는 데이터 분석의 유일한 수단이었으며, 우리는 배치로 데이터를 처리하기 위해 인위적인 시간 경계를 만들어야 했습니다. 예를 들어, 하루의 끝에서 수집된 모든 데이터를 처리할 수 있습니다. 이는 많은 경우에 적합했지만, 다른 경우에는 오래된 데이터로 작업하게 되어 최적의 결과를 가져오지 못하며, 데이터에 신속하게 반응할 수 없게 됩니다.
+
+반대로, 실시간 분석 시스템에서는 다음 다이어그램에서 볼 수 있듯이 사건이 발생하는 즉시 반응합니다:
+
+
+
+이제 우리는 사건이 생성되는 즉시 인사이트를 유도할 수 있습니다. 그런데 이것이 왜 유용할까요?
+
+## 실시간 분석의 이점 {#benefits-of-real-time-analytics}
+
+오늘날 빠르게 변화하는 세상에서 조직들은 실시간 분석에 의존하여 변화하는 조건에 민첩하고 반응할 수 있습니다. 실시간 분석 시스템은 기업에 여러 가지 방식으로 이점을 제공합니다.
+
+### 더 나은 의사결정 {#better-decision-making}
+
+실시간 분석을 통해 실행 가능한 인사이트에 접근함으로써 의사결정이 향상될 수 있습니다. 비즈니스 운영자가 사건이 발생하는 즉시 볼 수 있다면, 시기적절한 개입을 하는 것이 훨씬 쉬워집니다.
+
+예를 들어, 애플리케이션에 변경을 가하고 사용자 경험에 악영향을 미치는지 알고 싶다면, 필요하다면 신속하게 변경 사항을 되돌릴 수 있도록 가능한 한 빨리 알고 싶습니다. 덜 실시간적인 접근 방식으로는 이 분석을 하기 위해 다음 날까지 기다려야 할 수도 있으며, 그때까지 많은 불만족한 사용자가 생길 수 있습니다.
+
+### 새로운 제품 및 수익원 {#new-products-and-revenue-streams}
+
+실시간 분석은 기업이 새로운 수익원을 창출하는 데 도움을 줄 수 있습니다. 조직은 사용자에게 분석 쿼리 기능에 접근할 수 있는 새로운 데이터 기반 제품 및 서비스를 개발할 수 있습니다. 이러한 제품은 종종 사용자들이 접근하기 위해 비용을 지불할 정도로 매력적입니다.
+
+추가로, 기존 애플리케이션은 사용자 참여 및 유지율을 높여 더욱 매력적으로 만들 수 있습니다. 이는 더 많은 애플리케이션 사용을 결과로 만들어 기업의 수익을 증가시킵니다.
+
+### 향상된 고객 경험 {#improved-customer-experience}
+
+실시간 분석을 통해 기업은 고객 행동, 선호 및 요구에 대한 즉각적인 인사이트를 얻을 수 있습니다. 이는 기업이 시기적절한 지원을 제공하고, 상호작용을 개인화하며, 고객을 지속적으로 유치하게 만드는 보다 매력적인 경험을 창출하는 데에 도움이 됩니다.
+
+## 실시간 분석 사용 사례 {#real-time-analytics-use-cases}
+
+실시간 분석의 실제 가치는 그 실용적인 응용을 고려할 때 명백해집니다. 몇 가지를 살펴보겠습니다.
+
+### 사기 탐지 {#fraud-detection}
+
+사기 탐지는 가짜 계정에서 결제 사기에 이르는 사기 패턴을 탐지하는 것입니다. 우리는 이 사기를 가능한 한 빨리 발견하여 의심스러운 활동에 플래그를 부착하고, 거래를 차단하며, 필요할 때 계정을 비활성화하고자 합니다.
+
+이 사용 사례는 산업을 넘나듭니다: 의료, 디지털 뱅킹, 금융 서비스, 소매업, 등등.
+
+[Instacart](https://www.instacart.com/)는 북미의 주요 온라인 식료품 회사로, 수백만 명의 활성 고객과 쇼핑객을 보유하고 있습니다. 이 회사는 ClickHouse를 Yoda라는 사기 탐지 플랫폼의 일환으로 사용합니다. 위에서 설명한 일반적인 사기 유형 외에도, 고객과 쇼핑객 간의 공모를 탐지하려고 합니다.
+
+
+
+그들은 실시간 사기 탐지를 가능하게 하는 ClickHouse의 다음과 같은 특징을 확인했습니다:
+
+> ClickHouse는 LSM 트리 기반의 MergeTree 계열 엔진을 지원합니다.
+> 이는 대량의 데이터를 실시간으로 수집하는 데 적합하도록 최적화되어 있습니다.
+
+> ClickHouse는 분석 쿼리를 위해 명시적으로 설계되고 최적화되었습니다. 이는 데이터가 지속적으로 분석되어 사기를 나타낼 수 있는 패턴을 찾는 애플리케이션의 필요와 완벽하게 일치합니다.
+
+### 시간에 민감한 의사결정 {#ftime-sensitive-decision-making}
+
+시간에 민감한 의사결정은 사용자나 조직이 가장 최신의 정보를 바탕으로 신속하게 정보에 입각한 선택을 해야 하는 상황을 나타냅니다. 실시간 분석은 사용자가 동적인 환경에서 정보에 입각한 선택을 하도록 지원합니다. 이는 시장 변동에 반응하는 트레이더들이나, 구매 결정을 내리는 소비자들, 또는 실시간 운영 변화에 적응하는 전문가들에게 해당됩니다.
+
+Coinhall은 사용자에게 각 거래 기간의 시가, 고가, 저가, 종가를 보여주는 촛대 차트를 통해 가격 변동에 대한 실시간 인사이트를 제공합니다. 그들은 이러한 유형의 쿼리를 신속하게 실행할 수 있어야 했습니다. 그리고 동시에 많은 사용자들이 접속할 수 있어야 했습니다.
+
+
+
+> 성능 측면에서 ClickHouse는 20밀리초에 촛대 쿼리를 실행하여 분명한 승자가 되었으며, 다른 데이터베이스는 400밀리초 이상이 소요되었습니다. 최신 가격 쿼리는 8밀리초에 실행되어, 다음 가장 좋은 성능인 SingleStore의 45밀리초를 초과하였습니다. 마지막으로, ClickHouse는 50밀리초에 ASOF JOIN 쿼리를 처리했으며, Snowflake는 20분, Rockset은 시간 초과되었습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/01_real-time-analytics.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/01_real-time-analytics.md.hash
new file mode 100644
index 00000000000..1e01afd3e47
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/01_real-time-analytics.md.hash
@@ -0,0 +1 @@
+d86d2ee05c33e1b2
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/02_observability.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/02_observability.md
new file mode 100644
index 00000000000..2f3ed277e0d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/02_observability.md
@@ -0,0 +1,232 @@
+---
+'slug': '/cloud/get-started/cloud/use-cases/observability'
+'title': '관측성'
+'description': '분산 애플리케이션에서 관측성, 모니터링, 로깅 및 시스템 성능 분석을 위해 ClickHouse Cloud를 사용하세요.'
+'keywords':
+- 'use cases'
+- 'observability'
+'sidebar_label': '관측성'
+'doc_type': 'guide'
+---
+
+
+
+
+현대 소프트웨어 시스템은 복잡합니다. 마이크로서비스, 클라우드 인프라 및
+분산 시스템은 애플리케이션 내부에서 무슨 일이 일어나고 있는지를 이해하는 데
+점점 더 어려움을 겪게 만들고 있습니다. 문제가 발생했을 때, 팀은 어디에서
+문제가 발생했는지 그리고 왜 발생했는지를 신속하게 알 필요가 있습니다.
+
+여기서 가시성이 중요한 역할을 합니다. 가시성은 단순한 시스템 모니터링에서
+시스템 동작을 이해하기 위한 포괄적인 접근 방식으로 발전해 왔습니다. 그러나
+효과적인 가시성을 구현하는 것은 간단하지 않습니다. 기술적 개념과 조직적
+문제를 이해해야 합니다.
+
+## 가시성이란 무엇인가요? {#what-is-observability}
+
+가시성은 시스템의 출력을 검토하여 시스템의 내부 상태를 이해하는 것입니다.
+소프트웨어 시스템에서 이는 애플리케이션과 인프라가 생성하는 데이터를 통해
+무슨 일이 일어나고 있는지를 이해하는 것을 의미합니다.
+
+이 분야는 많이 발전했으며, 두 가지 상이한 세대의 가시성 접근 방식을 통해
+이해할 수 있습니다.
+
+첫 번째 세대는 일반적으로 가시성 1.0이라고 불리며, 전통적인 "세 가지 기둥"
+접근 방식인 메트릭, 로그, 추적을 중심으로 구성되었습니다. 이 접근 방식은
+다양한 유형의 원거리 측정에 대해 여러 도구와 데이터 저장소가 필요했습니다.
+종종 엔지니어들이 무엇을 측정할지 미리 정의해야 했기 때문에 여러 시스템을
+유지하는 데 비용이 많이 들고 복잡했습니다.
+
+현대의 가시성, 즉 가시성 2.0은 근본적으로 다른 접근 방식을 취합니다. 이는
+우리 시스템의 각 작업 단위(예: HTTP 요청 및 응답)에 대한 광범위하고 구조화된
+이벤트를 수집하는 데 기반하고 있습니다. 이 접근 방식은 사용자 ID, 요청 ID,
+Git 커밋 해시, 인스턴스 ID, Kubernetes 포드 이름, 특정 경로 매개변수 및
+벤더 거래 ID와 같은 고차원 데이터를 캡처합니다. 규칙은 시스템의 동작을
+이해하는 데 도움이 될 수 있는 경우 메타데이터를 추가하는 것입니다.
+
+이런 풍부한 데이터 수집은 미리 정의된 메트릭 없이 데이터의 동적 슬라이싱 및
+다이싱을 가능하게 합니다. 팀은 이 기본 데이터를 통해 메트릭, 추적 및 기타
+시각화를 파생할 수 있으므로, 당시 고려되지 않았던 시스템 동작에 대한
+복잡한 질문에 답할 수 있습니다.
+
+그러나 현대의 가시성을 구현하는 것은 도전 과제를 제시합니다. 조직은 다양한
+시스템과 기술을 통해 이 풍부한 원거리 데이터 수집, 처리 및 내보내기를 위한
+신뢰할 수 있는 방법이 필요합니다. 현대의 접근 방식이 전통적인 경계를 넘어
+발전했지만, 가시성의 기본 구성 요소를 이해하는 것은 여전히 중요합니다.
+
+## 가시성의 세 가지 기둥 {#three-pillars-of-observability}
+
+가시성이 어떻게 발전해왔고 실제로 어떻게 작동하는지를 더 잘 이해하기 위해,
+가시성의 세 가지 기둥 - 로그, 메트릭 및 추적을 살펴보겠습니다.
+
+현대의 가시성이 이러한 요소를 별개의 관심사로 다루는 것을 넘어섰지만,
+여전히 시스템 동작의 다양한 측면을 이해하기 위한 기본 개념으로 남아 있습니다.
+
+1. **로그** - 시스템 내에서 발생하는 개별 이벤트의 텍스트 기반 기록입니다.
+이들은 특정 사건, 오류 및 상태 변화에 대한 자세한 문맥을 제공합니다.
+2. **메트릭** - 시간에 따라 수집된 수치적 측정값입니다. 여기에는 시스템
+성능, 자원 사용량 및 비즈니스 KPI를 추적하는 데 도움이 되는 카운터,
+게이지 및 히스토그램이 포함됩니다.
+3. **추적** - 요청이 분산 시스템을 통해 흐르는 과정을 추적하는 기록입니다.
+이들은 서비스 간의 관계를 이해하고 성능 병목을 식별하는 데 도움이 됩니다.
+
+이 기둥들은 팀이 시스템을 모니터링하고 문제를 해결하며 최적화하는 데
+도움을 줍니다. 그러나 진정한 힘은 세 가지 기둥 전반에 걸쳐 데이터를
+효과적으로 수집, 분석 및 상관 관계를 이해하여 시스템 동작에 대한 의미 있는
+통찰력을 얻는 데 있습니다.
+
+## 가시성의 이점 {#the-benefits-of-observability}
+
+가시성의 기술적인 측면 - 로그, 메트릭 및 추적 - 은 잘 이해되고 있지만,
+비즈니스 이점도 동일하게 중요하게 고려해야 합니다.
+
+["가시성 엔지니어링"](https://clickhouse.com/engineering-resources/observability#:~:text=Observability%20Engineering)
+(O'Reilly, 2022)라는 책에서 Charity Majors, Liz Fong-Jones 및 George Miranda는
+산업 연구와 일화적 피드백을 바탕으로 조직이 적절한 가시성 관행을 구현하여
+기대할 수 있는 네 가지 주요 비즈니스 이점을 식별했습니다. 이 이점들을
+살펴보겠습니다.
+
+### 더 높은 증가 수익 {#higher-incremental-revenue}
+
+저자들은 팀이 가동 시간과 성능을 개선하는 데 도움이 되는 가시성 도구가
+코드 품질 향상을 통한 증가 수익으로 이어질 수 있다고 언급합니다. 이는
+여러 가지 방식으로 나타납니다.
+
+1. 개선된 고객 경험: 빠른 문제 해결 및 서비스 저하 방지는
+고객 만족도와 유지율을 높입니다.
+2. 증가된 시스템 신뢰성: 더 나은 가동 시간은 성공적인 거래를 더 많이
+만들고 잃는 비즈니스 기회를 줄입니다.
+3. 향상된 성능: 성능 병목을 식별하고 최적화할 수 있는 능력은
+고객을 유지하기 위해 반응형 서비스를 지속 가능하게 합니다.
+4. 경쟁 우위: 포괄적인 모니터링과 신속한 문제 해결을 통해
+높은 서비스 품질을 유지할 수 있는 조직은 종종 경쟁업체에 비해
+우위를 차지합니다.
+
+### 더 빠른 인시던트 감지로 인한 비용 절감 {#cost-savings-from-faster-incident-response}
+
+가시성의 가장 즉각적인 이점 중 하나는 문제의 더 빠른 감지 및 해결을
+통해 노동 비용 절감을 실현하는 것입니다. 이는 다음과 같은 이유에서
+발생합니다:
+
+* 평균 탐지 시간(MTTD) 및 평균 해결 시간(MTTR) 감소
+* 쿼리 응답 시간 개선으로 더 빠른 조사 가능
+* 성능 병목의 빠른 식별
+* 대기 중 소모 시간 감소
+* 불필요한 롤백에 소모되는 리소스 감소
+
+우리는 실제 사례를 통해 이를 확인합니다 - [trip.com은 ClickHouse로
+가시성 시스템을 구성했습니다](trip.com built their observability system with ClickHouse)
+및 쿼리 속도는 이전 솔루션보다 4-30배 더 빠르며, 90%의 쿼리가 300ms 이내에
+완료되어 신속한 문제 조사가 가능하였습니다.
+
+### 회피된 인시던트로 인한 비용 절감 {#cost-savings-from-incidents-avoided}
+
+가시성은 문제를 더 빠르게 해결하는 데 그치지 않고, 문제를 전혀 예방하는 데
+도움이 됩니다. 저자들은 팀이 다음과 같은 방법으로 주요 문제를 예방할 수
+있다고 강조합니다:
+
+* 문제가 심각해지기 전에 잠재적인 문제를 식별하기
+* 패턴 분석으로 반복적인 문제 예방하기
+* 다양한 조건에서 시스템 동작 이해하기
+* 성능 병목을 능동적으로 해결하기
+* 시스템 개선에 대한 데이터 기반 결정 내리기
+
+ClickHouse의 [자체 가시성 플랫폼인 LogHouse](https://clickhouse.com/blog/building-a-logging-platform-with-clickhouse-and-saving-millions-over-datadog)
+가 이를 잘 보여줍니다. 이는 우리의 핵심 엔지니어들이 모든 클러스터에서
+이력 패턴을 검색할 수 있도록 도와주어, 반복적으로 발생하는 문제를 예방합니다.
+
+### 직원 이탈 감소에 따른 비용 절감 {#cost-savings-from-decreased-employee-churn}
+
+가장 간과되는 이점 중 하나는 팀의 만족도와 유지에 미치는 영향입니다.
+저자들은 가시성이 다음을 통해 이루어진다고 강조합니다:
+
+* 더 나은 도구를 통한 직무 만족도 향상
+* 해결되지 않는 문제를 줄여 개발자 소진 감소
+* 신호 대 잡음 비율 향상으로 알림 피로 감소
+* 더 나은 인시던트 관리를 통한 대기 중 스트레스 감소
+* 시스템 신뢰성에 대한 팀의 신뢰 증대
+
+우리는 실제로 [Fastly가 ClickHouse로 이전했을 때](https://clickhouse.com/videos/scaling-graphite-with-clickhouse)
+그들의 엔지니어들이 쿼리 성능의 개선에 놀라워하며 다음과 같이 언급했습니다:
+
+> "믿을 수가 없었습니다. 제대로 쿼리하고 있는지 몇 번이나
+> 다시 확인해야 했습니다... 너무 빠르게 돌아오고 있습니다.
+> 이건 말이 안 됩니다."
+
+저자들이 강조하듯이 이러한 이점의 각기 구체적인 측정은 도구와 구현에 따라
+달라질 수 있지만, 강력한 가시성 관행을 채택하는 조직에서는 이러한
+근본적인 개선이 기대됩니다. 핵심은 이러한 이점을 극대화하기 위해
+적절한 도구를 효과적으로 선택하고 구현하는 것입니다.
+
+이러한 이점을 얻으려면 몇 가지 주요 장애물을 극복해야 합니다.
+가시성의 가치를 이해하는 조직들도 구현과 관련하여 예상치 못한
+복잡성과 도전 과제를 마주하게 되는 경우가 많습니다.
+
+## 가시성 구현의 도전 과제 {#challenges-in-implementing-observability}
+
+조직 내에서 가시성을 구현하는 것은 시스템 성능 및 신뢰성에 대한
+깊은 통찰력을 얻기 위한 변혁적 단계입니다. 그러나 이 여정은
+도전 없이는 이루어지지 않습니다. 조직들이 가시성의 잠재력을
+활용하려고 노력하는 동안, 이들은 진행을 방해할 수 있는 다양한
+장애물에 직면하게 됩니다. 몇 가지를 살펴보겠습니다.
+
+### 데이터 양 및 확장성 {#data-volume-and-scalability}
+
+가시성 구현의 주요 장애물 중 하나는 현대 시스템이 생성하는 원거리
+데이터의 막대한 양과 확장성을 관리하는 것입니다. 조직이 성장함에 따라
+모니터링해야 할 데이터도 증가하며, 대규모 데이터 수집 및
+실시간 분석을 효율적으로 처리할 수 있는 솔루션이 필요합니다.
+
+### 기존 시스템과의 통합 {#integration-with-existing-systems}
+
+기존 시스템과의 통합은 또 다른 중요한 도전 과제입니다. 많은 조직들이
+다양한 기술을 사용하는 이질적인 환경에서 운영되고 있으므로,
+가시성 도구들은 현재 인프라와 원활하게 통합되어야 합니다.
+개방형 표준은 이러한 통합을 촉진하는 데 중요하며, 상호
+운용성을 보장하고 다양한 기술 스택에서 가시성 솔루션을
+배포할 때의 복잡성을 줄이는 데 도움이 됩니다.
+
+### 기술 격차 {#skill-gaps}
+
+기술 격차는 가시성을 성공적으로 구현하는 데 방해가 될 수 있습니다.
+고급 가시성 솔루션으로의 전환은 종종 데이터 분석 및 특정 도구에 대한
+전문 지식을 요구합니다. 팀은 이러한 격차를 메우고 가시성 플랫폼의
+기능을 완전히 활용하기 위해 교육이나 채용에 투자해야 할 수도 있습니다.
+
+### 비용 관리 {#cost-management}
+
+비용 관리는 중요합니다. 가시성 솔루션은 특히 규모가 커질수록
+비용이 많이 들 수 있습니다. 조직은 이러한 도구의 비용과 이들이 제공하는
+가치의 균형을 맞추고, 기존 접근 방식에 비해 상당한 비용 절감을
+제공하는 비용 효율적인 솔루션을 찾아야 합니다.
+
+### 데이터 보존 및 저장 {#data-retention-and-storage}
+
+데이터 보존 및 저장 관리 또한 추가적인 도전 과제를 제공합니다.
+가시성 데이터를 얼마나 오랫동안 보존할 것인지 결정하는 것은
+성능이나 통찰력에 손해를 주지 않기 위해 신중한 계획과
+효율적인 저장 솔루션이 필요합니다.
+
+### 표준화 및 공급업체 종속 {#standardization-and-vendor-lock-in}
+
+표준화를 보장하고 공급업체 종속을 피하는 것은 가시성 솔루션에서
+유연성과 적응력을 유지하는 데 필수적입니다. 개방형 표준을 준수함으로써
+조직은 특정 벤더에 묶이는 것을 방지하고, 가시성 스택이 지속적으로
+변화하는 요구에 맞게 발전할 수 있도록 합니다.
+
+### 보안 및 준수 {#security-and-compliance}
+
+안전 및 준수 고려 사항은 특히 가시성 시스템 내에서 민감한 데이터를
+처리할 때 중요합니다. 조직은 그들의 가시성 솔루션이 관련 규정을
+준수하며 민감한 정보를 효과적으로 보호하도록 해야 합니다.
+
+이러한 도전 과제는 조직의 요구를 효과적으로 충족시키는 가시성
+솔루션 구현에서 전략적 계획과 정보에 기반한 의사결정의 중요성을
+강조합니다.
+
+이러한 도전 과제를 해결하기 위해 조직은 가시성을 구현하는
+구조화된 접근 방식을 필요로 합니다. 표준 가시성 파이프라인은
+원거리 데이터를 효과적으로 수집, 처리 및 분석하기 위한
+프레임워크를 제공하도록 발전해왔습니다. 이 진화의 가장 초기이자
+가장 영향력 있는 예 중 하나는 2013년 Twitter의 경험에서
+유래했습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/02_observability.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/02_observability.md.hash
new file mode 100644
index 00000000000..0a2e90d8731
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/02_observability.md.hash
@@ -0,0 +1 @@
+0545e7c42e499bab
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/03_data_warehousing.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/03_data_warehousing.md
new file mode 100644
index 00000000000..f19c58a3415
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/03_data_warehousing.md
@@ -0,0 +1,79 @@
+---
+'slug': '/cloud/get-started/cloud/use-cases/data_lake_and_warehouse'
+'title': '데이터 레이크하우스'
+'description': 'ClickHouse Cloud를 사용하여 데이터 레이크의 유연성과 DATABASE 성능을 결합한 현대적인 데이터 웨어하우징
+ 아키텍처를 구축하세요.'
+'keywords':
+- 'use cases'
+- 'data lake and warehouse'
+'sidebar_label': '데이터 웨어하우징'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import datalakehouse_01 from '@site/static/images/cloud/onboard/discover/use_cases/datalakehouse_01.png';
+
+
+
+데이터 레이크하우스는 데이터 레이크 인프라에 데이터베이스 원칙을 적용하면서 클라우드 스토리지 시스템의 유연성과 확장성을 유지하는 수렴 아키텍처입니다.
+
+레이크하우스는 단순히 데이터베이스를 분해하는 것이 아니라 전통적인 분석 및 현대 AI/ML 워크로드를 지원하는 데 중점을 둔 근본적으로 다른 기반(클라우드 오브젝트 스토리지) 위에 데이터베이스와 유사한 기능을 구축하는 것입니다.
+
+## 데이터 레이크하우스의 구성 요소는 무엇인가요? {#components-of-the-data-lakehouse}
+
+현대 데이터 레이크하우스 아키텍처는 데이터 웨어하우스와 데이터 레이크 기술의 융합을 나타내며, 두 접근 방식의 가장 좋은 측면을 결합합니다. 이 아키텍처는 유연하고 강력한 데이터 저장, 관리 및 분석 플랫폼을 제공하는 여러 개별적이지만 상호 연결된 레이어로 구성됩니다.
+
+이러한 구성 요소를 이해하는 것은 데이터 레이크하우스 전략을 구현하거나 최적화하려는 조직에 필수적입니다. 계층적 접근 방식은 구성 요소의 교체 및 각 레이어의 독립적인 진화를 가능하게 하여 아키텍처의 유연성과 미래 대비를 제공합니다.
+
+전형적인 데이터 레이크하우스 아키텍처의 핵심 빌딩 블록을 살펴보고 이들이 상호 작용하여 통합된 데이터 관리 플랫폼을 어떻게 만드는지 알아보겠습니다.
+
+
+
+| 구성 요소 | 설명 |
+|-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **데이터 소스** | 레이크하우스 데이터 소스는 운영 데이터베이스, 스트리밍 플랫폼, IoT 장치, 애플리케이션 로그 및 외부 제공자를 포함합니다. |
+| **쿼리 엔진** | 오브젝트 스토리지에 저장된 데이터에 대해 분석 쿼리를 처리하며, 테이블 형식 레이어에서 제공하는 메타데이터 및 최적화를 활용합니다. 대량의 데이터를 효율적으로 분석하기 위해 SQL 및 잠재적으로 다른 쿼리 언어를 지원합니다. |
+| **메타데이터 카탈로그** | [데이터 카탈로그](https://clickhouse.com/engineering-resources/data-catalog)는 메타데이터의 중앙 저장소 역할을 하며, 테이블 정의 및 스키마, 파티션 정보 및 접근 제어 정책을 저장하고 관리합니다. 레이크하우스 전반에 걸쳐 데이터 발견, 계보 추적 및 거버넌스를 가능하게 합니다. |
+| **테이블 형식 레이어** | [테이블 형식 레이어](https://clickhouse.com/engineering-resources/open-table-formats)는 데이터 파일을 테이블로 논리적으로 조직하여 ACID 트랜잭션, 스키마 강제 및 진화, 타임 트래블 기능과 데이터 스킵 및 클러스터링과 같은 성능 최적화 방법과 같은 데이터베이스와 유사한 기능을 제공합니다. |
+| **오브젝트 스토리지** | 이 레이어는 모든 데이터 파일과 메타데이터에 대해 확장 가능하고, 내구성이 뛰어나며 비용 효율적인 스토리지를 제공합니다. 그것은 열린 형식으로 데이터의 물리적 지속성을 처리하며, 여러 도구 및 시스템에서 직접 액세스를 가능하게 합니다. |
+| **클라이언트 응용 프로그램** | 데이터 쿼리, 인사이트 시각화 또는 데이터 제품 생성을 위해 레이크하우스에 연결하는 다양한 도구와 응용 프로그램입니다. 여기에는 BI 도구, 데이터 과학 노트북, 사용자 정의 응용 프로그램 및 ETL/ELT 도구가 포함될 수 있습니다. |
+
+## 데이터 레이크하우스의 이점은 무엇인가요? {#benefits-of-the-data-lakehouse}
+
+데이터 레이크하우스 아키텍처는 전통적인 데이터 웨어하우스 및 데이터 레이크와 직접 비교할 때 몇 가지 중요한 장점을 제공합니다:
+
+### 전통적인 데이터 웨어하우스와 비교했을 때 {#compared-to-traditional-data-warehouses}
+
+| # | 이점 | 설명 |
+|---|--------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 1 | **비용 효율성** | 레이크하우스는 비싼 독점 저장 형식이 아닌 저렴한 오브젝트 스토리지를 활용하여 데이터 웨어하우스보다 스토리지 비용을 크게 낮춰줍니다. |
+| 2 | **구성 요소의 유연성과 교환 가능성** | 레이크하우스 아키텍처는 조직이 다양한 구성 요소를 교체할 수 있도록 합니다. 전통적인 시스템은 요구 사항이 변경되거나 기술이 발전할 때 전면 교체가 필요하지만, 레이크하우스는 쿼리 엔진이나 테이블 형식과 같은 개별 구성 요소를 교체하여 점진적인 진화를 가능하게 합니다. 이러한 유연성은 공급업체 종속성을 줄이고 조직이 변화하는 요구에 적응할 수 있도록 합니다. |
+| 3 | **개방형 형식 지원** | 레이크하우스는 Parquet와 같은 개방형 파일 형식으로 데이터를 저장하여 공급업체 종속 없이 다양한 도구에서 직접 액세스를 가능하게 합니다. 이는 독점 데이터 웨어하우스 형식이 자사 생태계에 대한 접근을 제한하는 것과는 대비됩니다. |
+| 4 | **AI/ML 통합** | 레이크하우스는 머신러닝 프레임워크 및 Python/R 라이브러리에 대한 데이터 직접 액세스를 제공하지만, 데이터 웨어하우스는 일반적으로 고급 분석을 위해 데이터를 추출해야 합니다. |
+| 5 | **독립적인 확장** | 레이크하우스는 스토리지를 컴퓨팅과 분리하여 각 부분이 실제 필요에 따라 독립적으로 확장할 수 있도록 해줍니다. 반면 많은 데이터 웨어하우스는 함께 확장해야 합니다. |
+
+### 데이터 레이크와 비교했을 때 {#compared-to-data-lakes}
+
+| # | 이점 | 설명 |
+|---|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 1 | **쿼리 성능** | 레이크하우스는 인덱싱, 통계 및 데이터 레이아웃 최적화를 구현하여 SQL 쿼리가 데이터 웨어하우스와 유사한 속도로 실행될 수 있도록 하여 원시 데이터 레이크의 성능 문제를 극복합니다. |
+| 2 | **데이터 일관성** | ACID 트랜잭션 지원을 통해 레이크하우스는 동시 작업 중 일관성을 보장하여 파일 충돌로 데이터가 손상될 수 있는 전통적인 데이터 레이크의 주요 한계를 해결합니다. |
+| 3 | **스키마 관리** | 레이크하우스는 스키마 유효성을 강제하고 스키마 진화를 추적하여 스키마 불일치로 인해 데이터가 사용 불가능하게 되는 "데이터 늪" 문제를 방지합니다. |
+| 4 | **거버넌스 기능** | 레이크하우스는 기본 데이터 레이크의 제한된 보안 통제를 해결하며, 행/열 수준에서 세밀한 접근 제어 및 감사 기능을 제공합니다. |
+| 5 | **BI 도구 지원** | 레이크하우스는 SQL 인터페이스와 최적화를 제공하여 표준 BI 도구와의 호환성을 높이며, 원시 데이터 레이크는 시각화를 위한 추가 처리 레이어가 필요합니다. |
+
+## ClickHouse는 데이터 레이크하우스 아키텍처에서 어디에 위치하나요? {#where-does-clickhouse-fit-in-the-data-lakehouse-architecture}
+
+ClickHouse는 현대 데이터 레이크하우스 생태계 내에서 강력한 분석 쿼리 엔진입니다. 데이터 분석을 대규모로 수행하기 위한 고성능 옵션을 조직에 제공합니다. ClickHouse는 뛰어난 쿼리 속도와 효율성 덕분에 매력적인 선택입니다.
+
+레이크하우스 아키텍처 내에서 ClickHouse는 기초 데이터와 유연하게 상호 작용할 수 있는 전문화된 처리 레이어로 기능합니다. S3, Azure Blob Storage 또는 Google Cloud Storage와 같은 클라우드 오브젝트 스토리지 시스템에 저장된 Parquet 파일을 직접 쿼리할 수 있으며, 최적화된 컬럼형 처리 기능을 활용하여 대규모 데이터셋에서도 빠른 결과를 제공합니다. 이러한 직접 쿼리 기능은 조직이 복잡한 데이터 이동이나 변환 프로세스 없이 레이크 데이터를 분석할 수 있도록 합니다.
+
+ClickHouse는 Apache Iceberg, Delta Lake 또는 Apache Hudi와 같은 개방형 테이블 형식과 통합되어 보다 정교한 데이터 관리 요구를 지원합니다. 이러한 통합을 통해 ClickHouse는 이러한 형식의 고급 기능을 활용하면서도 뛰어난 쿼리 성능을 제공합니다. 조직은 이러한 테이블 형식을 직접 통합하거나 AWS Glue, Unity 또는 다른 카탈로그 서비스와 같은 메타데이터 카탈로그를 통해 연결할 수 있습니다.
+
+조직이 레이크하우스 아키텍처에서 쿼리 엔진으로 ClickHouse를 통합하면 데이터 레이크에 대해 번개처럼 빠른 분석 쿼리를 실행하고 레이크하우스 접근 방식을 정의하는 유연성과 개방성을 유지할 수 있습니다. 이러한 조합은 전문 분석 데이터베이스의 성능 특성을 제공하면서도 구성 요소 교환 가능성, 개방형 형식 및 통합 데이터 관리와 같은 레이크하우스 모델의 핵심 이점을 잃지 않도록 합니다.
+
+## 하이브리드 아키텍처: 두 세계의 장점 {#hybrid-architecture-the-best-of-both-worlds}
+
+ClickHouse는 레이크하우스 구성 요소 쿼리에 뛰어난 성능을 발휘하는 반면, 그 고도로 최적화된 스토리지 엔진은 추가 이점을 제공합니다. 실시간 대시보드, 운영 분석 또는 대화형 사용자 경험과 같이 초저지연 쿼리를 요구하는 사용 사례의 경우, 조직은 ClickHouse의 기본 형식으로 성능 중요 데이터를 선택적으로 직접 저장할 수 있습니다. 이 하이브리드 접근 방식은 두 세계의 장점을 제공합니다: 시간 민감한 분석의 ClickHouse 특화된 스토리지의 비할 데 없는 쿼리 속도와 필요 시 더 넓은 데이터 레이크하우스를 쿼리할 수 있는 유연성입니다.
+
+이 이중 기능은 조직이 ClickHouse의 최적화된 스토리지에 핫하고 자주 액세스되는 데이터가 존재하여 서브 초 단위 쿼리 응답을 제공하며, 레이크하우스의 전체 데이터 기록에 대해 원활하게 액세스할 수 있는 계층형 데이터 전략을 구현할 수 있도록 합니다. 팀은 성능 요구 사항에 따라 아키텍처 결정을 내릴 수 있으며, ClickHouse를 중요 작업에 대한 번개처럼 빠른 분석 데이터베이스로 사용하고 더 넓은 데이터 생태계에 대한 유연한 쿼리 엔진으로 사용할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/03_data_warehousing.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/03_data_warehousing.md.hash
new file mode 100644
index 00000000000..60a268b4c7f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/03_data_warehousing.md.hash
@@ -0,0 +1 @@
+326929633bfc2fa0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/01_machine_learning.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/01_machine_learning.md
new file mode 100644
index 00000000000..4ebbd58c740
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/01_machine_learning.md
@@ -0,0 +1,176 @@
+---
+'slug': '/cloud/get-started/cloud/use-cases/AI_ML'
+'title': '기계 학습'
+'description': 'Learn how ClickHouse powers 기계 학습 applications across the ML pipeline.'
+'keywords':
+- 'use cases'
+- 'Machine Learning'
+- 'Generative AI'
+'sidebar_label': '기계 학습'
+'doc_type': 'guide'
+---
+
+import machine_learning_data_layer from '@site/static/images/cloud/onboard/discover/use_cases/ml_data_layer.png'
+import online_feature_store from '@site/static/images/cloud/onboard/discover/use_cases/ml_data_layer.png'
+import Image from '@theme/IdealImage';
+
+
+## 머신 러닝 데이터 레이어 {#machine-learning-data-layer}
+
+아마도 머신 러닝 실무자의 시간이 80%는 데이터를 정리하는 데 소비된다는 이야기를 들어보셨을 것입니다.
+이 신화가 사실이든 아니든 상관없이, 데이터는 머신 러닝 문제의 핵심에 해당하며, 시작부터 끝까지 그럴 것입니다.
+RAG 파이프라인을 구축하든, 모델의 미세 조정, 자체 모델 훈련, 모델 성능 평가를 하든, 데이터는 모든 문제의 뿌리입니다.
+
+데이터 관리가 까다로울 수 있으며, 이에 따라 특정 머신 러닝 데이터 문제를 해결하기 위해 생산성을 높이도록 설계된 도구들의 홍수가 발생했습니다.
+이러한 도구들은 일반적으로 특정 하위 문제에 쉽게 적용할 수 있도록 단순해 보이는 의견이 있는 인터페이스를 갖춘 보다 일반적인 솔루션을 둘러싼 추상화 레이어의 형태를 취하는 경우가 많습니다.
+실제로 이는 특정 작업의 용이성과 단순성을 선호하는 대가로 일반적인 솔루션의 유연성을 줄입니다.
+
+
+
+이 접근 방식에는 몇 가지 단점이 있습니다.
+상세한 도구, 제품 및 서비스의 계단식 구성은, 일반적인 솔루션과 지원 응용 프로그램 코드와 결합할 때보다 더 많은 아키텍처의 복잡성과 데이터 비용의 위험을 초래합니다.
+도구와 서비스의 끝없는 목록에 실수로 빠지는 것은 쉽고, 각 도구와 서비스는 단지 한 단계의 작업에만 사용됩니다.
+
+이러한 위험에 대한 두 가지 일반적인 측면이 있습니다:
+
+1. **학습, 유지 보수 및 전환 비용**
+
+머신 러닝 아키텍처는 다양한 도구와 구성 요소로 인해 너무 복잡해지면 학습하고 관리하기 어려운 단편화된 환경을 형성할 수 있습니다. 이는 실패의 지점과 비용 증가를 초래합니다.
+
+2. **데이터 중복 및 전송 비용**
+
+머신 러닝 파이프라인에서 여러 개의 불연속적이지만 겹치는 데이터 시스템을 사용하는 것은 데이터 전송에 불필요하고 종종 비용이 많이 드는 오버헤드를 도입할 수 있습니다.
+
+이 트레이드오프의 훌륭한 예가 벡터 데이터베이스입니다.
+벡터 데이터베이스는 벡터를 저장하고 검색하는 데 필요한 초특화된 머신 러닝 작업을 위해 설계되었습니다.
+이것이 일부 아키텍처에서 올바른 선택일 수 있지만, 다른 아키텍처에서는 벡터 데이터베이스가 통합, 관리 및 데이터 전송을 위해 또 다른 시스템이 될 수 있는 불필요한 새로운 추가일 수 있습니다.
+대부분의 최신 일반적인 데이터베이스는 기본적으로(또는 플러그인을 통해) 벡터 지원을 제공하며, 더 넓고 교차적인 기능을 가지고 있습니다.
+다시 말해, 이러한 아키텍처에서 벡터를 특별히 처리하기 위해 새로운 데이터베이스가 필요하지 않을 수 있습니다.
+중요성은 벡터 전용 편의 기능(예: 내장된 임베딩 모델)이 임무의 중요한 요소인지 그리고 비용을 정당화할 수 있는지로 축소됩니다.
+
+### 데이터 탐색 {#data-exploration}
+
+머신 러닝 문제, 목표 및 성공 기준을 정의한 후, 모델 훈련 및 평가에 사용될 관련 데이터를 탐색하는 것이 일반적인 첫 번째 단계입니다.
+
+이 단계에서는 데이터의 특성, 분포 및 관계를 이해하기 위해 분석됩니다.
+이 평가 및 이해의 과정은 반복적이며, 종종 데이터셋 전반에 걸쳐 일련의 즉흥 쿼리를 실행하게 됩니다. 이 때 쿼리 응답성이 중요합니다(비용 효율성과 정확성 같은 다른 요소와 함께).
+기업들이 머신 러닝 목적으로 활용할 데이터의 양을 늘려감에 따라, 기존 데이터를 조사하는 문제는 더 어려워집니다.
+
+전통적인 데이터 시스템에서는 분석 및 평가 쿼리가 대규모에서 지치게 하거나 금지될 정도로 느려지기 때문입니다.
+몇몇 업체들은 쿼리 시간을 단축하기 위해 상당히 증가된 비용을 부과하며, 쿼리당 요금이나 스캔한 바이트 수에 따라 즉흥 평가를 억제합니다.
+엔지니어들은 이러한 한계를 타협하기 위해 데이터의 하위 집합을 자신의 로컬 머신으로 가져오는 경우도 있습니다.
+
+반면 ClickHouse는 실시간 데이터 웨어하우스이므로 사용자는 분석 계산에 대한 업계 최고의 쿼리 속도의 이점을 누릴 수 있습니다.
+추가적으로 ClickHouse는 처음부터 높은 성능을 제공하며, 가격이 비싼 상위 티어 뒤에 중요한 쿼리 가속 기능을 가두지 않습니다.
+ClickHouse는 Iceberg, Delta Lake 및 Hudi와 같은 일반 형식에 대한 지원을 통해 객체 저장소 또는 데이터 레이크에서 데이터를 직접 쿼리할 수 있습니다.
+이는 데이터가 존재하는 위치에 관계없이 ClickHouse가 머신 러닝 워크로드를 위한 통합된 접근 및 계산 레이어로 기능할 수 있다는 것을 의미합니다.
+
+ClickHouse에는 페타바이트 규모의 데이터에 대해 확장 가능한 다양한 미리 구축된 통계 및 집계 기능이 있어 복잡한 계산을 실행하는 간단한 SQL을 쉽게 작성하고 유지할 수 있습니다.
+가장 세분화된 정밀 데이터 유형 및 코덱을 지원하므로 데이터의 세분성을 줄이는 것에 대해 걱정할 필요가 없습니다.
+
+사용자는 SQL 쿼리를 사용하여 ClickHouse 내에서 직접 데이터를 변환할 수 있거나 삽입 전에 변환할 수 있지만, ClickHouse는 또한 [chDB](/chdb)를 통해 Python과 같은 프로그래밍 환경에서도 사용할 수 있습니다.
+이것은 내장된 ClickHouse를 Python 모듈로 노출하고 노트북 내에서 큰 데이터 프레임을 변환하고 조작하는 데 사용될 수 있습니다.
+따라서 데이터 엔지니어는 클라이언트 측에서 변환 작업을 수행할 수 있으며, 결과는 중앙 집중식 ClickHouse 인스턴스의 피처 테이블로 실재화될 수 있습니다.
+
+### 데이터 준비 및 피처 추출 {#data-preparation-and-feature-extraction}
+
+그런 다음 데이터가 준비됩니다: 정리되고 변환되며 모델이 훈련되고 평가될 피처가 추출됩니다.
+이 구성 요소는 때때로 피처 생성 또는 추출 파이프라인이라고 불리며, 새로운 도구가 자주 도입되는 머신 러닝 데이터 레이어의 또 다른 조각입니다.
+Neptune 및 Hopsworks와 같은 MLOps 플레이어는 이러한 파이프라인을 조정하는 데 사용되는 다양한 데이터 변환 제품의 예를 제공합니다.
+그러나 데이터베이스에서 작동하는 별도의 도구이기 때문에 이들은 부서질 위험이 있으며, 수동으로 수정해야 하는 중단을 초래할 수 있습니다.
+
+대조적으로 데이터 변환은 [물리화된 뷰](/materialized-views)를 통해 ClickHouse 내에서 직접 쉽게 수행할 수 있습니다.
+이들은 새로운 데이터가 ClickHouse 소스 테이블에 삽입될 때 자동으로 트리거되며, 데이터가 도착할 때 쉽게 추출, 변환 및 수정하는 데 사용됩니다 - 이는 맞춤형 파이프라인을 직접 구축하고 모니터링할 필요성을 없애줍니다.
+이러한 변환이 메모리에 맞지 않을 수 있는 전체 데이터셋에 대한 집계를 요구할 경우, ClickHouse를 활용하면 지역 머신에서 데이터 프레임과 함께 작업하기 위해 이 단계를 조정할 필요가 없습니다.
+더 편리하게 로컬에서 평가할 수 있는 데이터셋의 경우, [ClickHouse local](/operations/utilities/clickhouse-local)과 [chDB](/chdb)가 훌륭한 대안이 되어, 사용자가 Pandas와 같은 표준 Python 데이터 라이브러리와 함께 ClickHouse를 활용할 수 있도록 합니다.
+
+### 훈련 및 평가 {#training-and-evaluation}
+
+이 시점에서 피처는 훈련, 검증 및 테스트 세트로 나뉘게 됩니다.
+이 데이터 세트는 버전 관리되고, 각각의 단계에서 활용됩니다.
+
+파이프라인의 이 단계에서 머신 러닝 데이터 레이어에 또 다른 전문 도구, 즉 피처 저장소를 도입하는 것이 일반적입니다.
+피처 저장소는 모델 훈련, 추론 및 평가를 위한 데이터 관리를 위한 편의 기능을 제공하는 데이터베이스 주위의 추상화 레이어입니다.
+이러한 편의 기능의 예로는 버전 관리, 접근 관리 및 피처 정의를 SQL 문으로 자동 변환하는 기능이 포함됩니다.
+
+피처 저장소의 경우 ClickHouse는 다음과 같은 역할을 수행할 수 있습니다:
+
+**데이터 소스** - Iceberg 및 Delta Lake와 같은 데이터 레이크 형식을 포함하여 70개 이상의 파일 형식으로 데이터를 쿼리하거나 수집할 수 있는 기능을 갖춘 ClickHouse는 데이터를 보관하거나 쿼리하는 데 이상적인 장기 저장소입니다.
+객체 저장소를 이용하여 저장소와 계산을 분리함으로써, ClickHouse Cloud는 데이터를 무기한 보관할 수 있도록 하며 - 계산을 축소하거나 완전히 비활성화하여 비용을 최소화합니다.
+유연한 코덱과 결합된 컬럼 지향 저장소 및 디스크의 데이터 정렬은 압축 비율을 극대화하므로 필요한 저장소를 최소화합니다.
+사용자는 ClickHouse와 데이터 레이크를 쉽게 결합할 수 있으며, 객체 저장소의 데이터를 제자리에서 쿼리할 수 있는 내장 함수를 갖추고 있습니다.
+
+**변환 엔진** - SQL은 데이터 변환을 선언하는 자연스러운 수단을 제공합니다.
+ClickHouse의 분석 및 통계 기능으로 확장될 때 이러한 변환은 간결하고 최적화됩니다.
+ClickHouse 테이블에 적용되는 것 외에도 ClickHouse가 데이터 저장소로 사용되는 경우, 테이블 함수는 Parquet와 같은 형식으로 저장된 데이터에 대해 SQL 쿼리를 작성할 수 있게 합니다.
+전체 병렬 쿼리 실행 엔진과 컬럼 지향 저장 형식의 조합으로 ClickHouse는 PB 단위의 데이터에서 평균 초 단위로 집계를 수행할 수 있습니다 - 메모리 내 데이터 프레임에서의 변환과는 달리 사용자는 메모리 한계가 없습니다.
+또한 물리화된 뷰는 데이터 삽입 시 변환될 수 있어 쿼리 시점에서 데이터 로드 시간으로 컴퓨트를 과부하 시킵니다.
+이러한 뷰는 데이터 분석 및 요약에 적합한 동일한 범위의 분석 및 통계 기능을 활용할 수 있습니다.
+ClickHouse의 기존 분석 기능이 부족하거나 사용자 정의 라이브러리 통합이 필요할 경우, 사용자는 사용자 정의 함수(UDF)를 활용할 수도 있습니다.
+
+#### 오프라인 피처 저장소 {#offline-feature-store}
+
+오프라인 피처 저장소는 모델 훈련에 사용됩니다.
+이는 일반적으로 피처 자체가 배치 프로세스 데이터 변환 파이프라인을 통해 생성되며(위 섹션에서 설명한 대로) 이러한 피처의 가용성에 반드시 엄격한 지연 요구 사항이 있는 것은 아닙니다.
+
+여러 출처에서 데이터를 읽고 SQL 쿼리를 통해 변환을 적용하는 기능으로, 이러한 쿼리의 결과는 `INSERT INTO SELECT` 문을 통해 ClickHouse에 지속될 수 있습니다.
+변환이 엔터티 ID로 그룹화되고 여러 컬럼을 결과로 반환하는 경우, ClickHouse의 스키마 추론은 이러한 결과로부터 필요한 유형을 자동으로 감지하고 이를 저장하기 위한 적절한 테이블 스키마를 생성할 수 있습니다.
+임의 숫자 생성 및 통계 샘플링을 위한 함수는 모델 훈련 파이프라인으로 제공하기 위해 데이터가 초당 수백만 행으로 효율적으로 반복되고 확장될 수 있도록 합니다.
+
+종종 피처는 특정 시점의 엔티티 및 피처 값이 표시된 타임스탬프가 있는 테이블로 표현됩니다.
+앞서 설명했듯이, 훈련 파이프라인은 종종 특정 시점 및 그룹에서 피처의 상태가 필요합니다. ClickHouse의 스파스 인덱스는 시점 쿼리 및 피처 선택 필터를 충족하기 위해 데이터를 신속하게 필터링할 수 있습니다.
+Spark, Redshift 및 BigQuery와 같은 다른 기술은 특정 시점에서 피처의 상태를 식별하기 위해 느린 상태 유지 윈도우 방식에 의존하는 반면, ClickHouse는 ASOF (as-of-this-time) LEFT JOIN 쿼리 및 argMax 기능을 지원합니다.
+이 접근 방식은 구문을 단순화할 뿐만 아니라 정렬 및 병합 알고리즘을 통해 대형 데이터셋에서 높은 성능을 발휘합니다.
+이를 통해 피처 그룹을 신속하게 구축할 수 있어 훈련 이전의 데이터 준비 시간을 단축할 수 있습니다.
+
+#### 온라인 피처 저장소 {#online-feature-store}
+
+온라인 피처 저장소는 추론에 사용되는 최신 버전의 피처를 저장하는 데 사용되며, 실시간으로 적용됩니다.
+이는 이러한 피처가 실시간 머신 러닝 서비스의 일환으로 사용되기 때문에 최소한의 지연 시간으로 계산되어야 함을 의미합니다.
+
+
+
+실시간 분석 데이터베이스인 ClickHouse는 낮은 지연 시간으로 높은 동시 쿼리 워크로드를 처리할 수 있습니다.
+일반적으로 데이터가 비정규화되어야 하지만, 이것은 훈련 시점과 추론 시점에 사용되는 피처 그룹의 저장과 일치합니다.
+중요하게도 ClickHouse는 로그 구조 병합 트리 덕분에 높은 쓰기 작업 부하를 받으면서도 이러한 쿼리 성능을 제공합니다.
+이러한 속성은 온라인 저장소에서 피처를 최신 상태로 유지하기 위해 필요합니다.
+피처가 이미 오프라인 저장소 내에 사용 가능하기 때문에, 동일한 ClickHouse 클러스터 내에서 또는 `remoteSecure`와 같은 기존 기능을 통해 다른 인스턴스 내에서 새로운 테이블로 쉽게 실체화할 수 있습니다.
+ClickHouse Cloud 내의 [ClickPipes](/integrations/clickpipes/kafka)를 통한 정확히 한 번 수행하는 Kafka Connect 제공 또는 Kafka와의 통합은 스트리밍 소스에서의 데이터를 손쉽고 신뢰할 수 있도록 소비할 수 있게 만듭니다.
+
+많은 현대 시스템이 오프라인 및 온라인 저장소 모두를 필요로 하며, 여기서 두 개의 전문 피처 저장소가 필요하다고 결론을 쉽게 내릴 수 있습니다.
+하지만 이는 두 저장소를 동기화 상태로 유지하는 것의 복잡성을 추가하며, 물론 여기에는 이들 간의 데이터 복제 비용도 포함됩니다.
+
+ClickHouse와 같은 실시간 데이터 웨어하우스는 오프라인 및 온라인 피처 관리를 모두 지원하는 단일 시스템입니다.
+ClickHouse는 스트리밍 및 기록 데이터를 효율적으로 처리하며, 실시간 추론 및 오프라인 학습을 제공하는 피처를 지원하는 데 필요한 무제한 확장성, 성능 및 동시성을 갖추고 있습니다.
+
+이 단계에서 피처 저장소 제품을 사용하는 것과 실시간 데이터 웨어하우스를 직접 활용하는 것 간의 트레이드오프를 고려할 때, 버전 관리와 같은 편의 기능은 테이블 또는 스키마 설계와 같은 오래된 데이터베이스 패러다임을 통해 달성할 수 있다는 점을 강조할 가치가 있습니다.
+피처 정의를 SQL 문으로 변환하는 다른 기능은 존재하는 추상화 레이어의 의견보다는 응용 프로그램 또는 비즈니스 논리의 일환으로 더 큰 유연성을 제공할 수 있습니다.
+
+### 추론 {#inference}
+
+모델 추론은 훈련된 모델을 실행하여 출력을 받는 과정입니다.
+데이터베이스 작업(예: 새 레코드 삽입 또는 레코드 쿼리)으로 인해 추론이 트리거될 때, 이 추론 단계는 맞춤형 작업 또는 응용 프로그램 코드로 관리될 수 있습니다.
+
+반면, 데이터 레이어 자체에서 관리될 수도 있습니다. ClickHouse [사용자 정의 함수 (UDF)](/sql-reference/functions/udf)를 사용하면 사용자가 삽입 또는 쿼리 시 ClickHouse에서 모델을 직접 호출할 수 있는 기능을 제공합니다.
+이는 들어오는 데이터를 모델에 전달하고 출력을 받고 이 결과를 수집된 데이터와 함께 자동으로 저장할 수 있게 합니다 - 다른 프로세스나 작업을 시작할 필요 없이 말입니다.
+이 과정은 이 단계를 관리하기 위한 단일 인터페이스인 SQL을 제공합니다.
+
+### 벡터 저장소 {#vector-store}
+
+벡터 저장소는 벡터를 저장하고 검색하는 데 최적화된 특정 유형의 데이터베이스로, 일반적으로 데이터의 임베딩(예: 텍스트 또는 이미지)으로, 이들은 그 기본 의미를 숫자로 포착합니다.
+벡터는 오늘날의 생성적 AI 물결의 핵심이며, 무수한 애플리케이션에서 사용됩니다.
+
+벡터 데이터베이스에서 주요 작업은 수학적 측정 기준에 따라 서로 "가장 가까운" 벡터를 찾는 "유사성 검색"입니다.
+벡터 데이터베이스는 검토를 가능한 한 빠르게 만드는 특정 전술을 사용하기 때문에 인기를 얻었습니다 - 벡터 비교를 대신해서 입력 벡터를 저장된 모든 벡터와 비교하는 대신 벡터 비교를 근사화합니다.
+
+이 새로운 도구 클래스의 문제는 일반적인 데이터베이스, ClickHouse를 포함하여, 기본적으로 벡터 지원을 제공하며 이러한 근사화 접근 방식을 내장하고 있는 경우가 많다는 것입니다.
+특히 ClickHouse는 높은 성능의 대규모 분석을 위해 설계되었으며 - 비근사적인 벡터 비교를 매우 효과적으로 수행할 수 있습니다.
+이는 속도를 희생하지 않고도 정확한 결과를 얻을 수 있음을 의미합니다.
+
+### 가시성 {#observability}
+
+귀하의 머신 러닝 애플리케이션이 라이브 상태가 되면, 모델의 행동, 성능 및 개선 가능 영역에 대한 귀중한 통찰을 제공하는 데이터(로그 및 추적 데이터 포함)를 생성하게 됩니다.
+
+SQL 기반의 가시성은 ClickHouse의 또 다른 주요 사용 사례로, ClickHouse는 대안보다 10-100배 더 비용 효율적인 것으로 나타났습니다.
+사실, 많은 가시성 제품은 내부적으로 ClickHouse로 구축되어 있습니다.
+ClickHouse는 업계 최고의 수집 비율과 압축 비율을 제공하여, 모든 규모의 머신 러닝 가시성을 지원하는 비용 효율성과 빠른 속도를 제공합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/01_machine_learning.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/01_machine_learning.md.hash
new file mode 100644
index 00000000000..3001d9e7702
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/01_machine_learning.md.hash
@@ -0,0 +1 @@
+63f8a5c1d6f48d6e
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/02_agent_facing_analytics.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/02_agent_facing_analytics.md
new file mode 100644
index 00000000000..b3c3ff87883
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/02_agent_facing_analytics.md
@@ -0,0 +1,85 @@
+---
+'slug': '/cloud/get-started/cloud/use-cases/AI_ML/agent_facing_analytics'
+'title': '에이전트 관련 분석'
+'description': 'AI 에이전트 및 실시간 데이터 액세스가 필요한 자율 시스템을 위해 ClickHouse Cloud로 에이전트 관련 분석
+ 시스템을 구축합니다.'
+'keywords':
+- 'use cases'
+- 'Machine Learning'
+- 'Generative AI'
+- 'agent facing analytics'
+- 'agents'
+'sidebar_label': '에이전트 관련 분석'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import ml_ai_05 from '@site/static/images/cloud/onboard/discover/use_cases/ml_ai_05.png';
+import ml_ai_06 from '@site/static/images/cloud/onboard/discover/use_cases/ml_ai_06.png';
+import ml_ai_07 from '@site/static/images/cloud/onboard/discover/use_cases/ml_ai_07.png';
+import ml_ai_08 from '@site/static/images/cloud/onboard/discover/use_cases/ml_ai_08.png';
+import ml_ai_09 from '@site/static/images/cloud/onboard/discover/use_cases/ml_ai_09.png';
+
+## 에이전트 대면 분석 개념 {#agent-facing-analytics}
+
+### "에이전트"란 무엇인가? {#agents}
+
+AI 에이전트는 단순한 작업 실행(혹은 함수 호출)을 넘어 진화한 디지털 비서로 생각할 수 있습니다: 이들은 맥락을 이해하고, 결정을 내리며, 특정 목표를 향해 의미 있는 행동을 취할 수 있습니다. 이들은 "감지-사고-행동" 루프에서 작동하며(ReAct 에이전트 참조), 다양한 입력(텍스트, 미디어, 데이터)을 처리하고, 상황을 분석한 후 그 정보를 가지고 유용한 일을 합니다. 가장 중요한 것은, 애플리케이션 도메인에 따라 이들은 이론적으로 다양한 자율성 수준에서 운영될 수 있으며, 인간의 감독이 필요할 수도 있고 필요하지 않을 수도 있습니다.
+
+여기서 게임 체인저는 대규모 언어 모델(LLM)의 출현입니다. 우리는 꽤 오랫동안 AI 에이전트의 개념을 가지고 있었지만 GPT 시리즈와 같은 LLM은 이들이 "이해"하고 소통하는 능력을 대폭 향상시켰습니다. 마치 이들이 "인간"에 더 능숙해진 것과 같아서, 요청을 파악하고 모델의 훈련 데이터에서 관련된 맥락 정보를 응답으로 제공할 수 있는 것입니다.
+
+### AI 에이전트의 슈퍼파워: “도구” {#tools}
+
+이 에이전트는 “도구”에 접근함으로써 정말로 빛을 발합니다. 도구는 AI 에이전트의 작업 수행 능력을 향상시킵니다. 단순히 대화형 인터페이스에 그치는 것이 아니라, 이제 숫자를 처리하거나, 정보를 검색하거나, 고객 소통을 관리하는 등 일을 처리할 수 있습니다. 문제를 해결하는 방법을 설명할 수 있는 사람과 실제로 문제를 해결할 수 있는 사람의 차이라고 생각할 수 있습니다.
+
+예를 들어, ChatGPT는 이제 기본적으로 검색 도구와 함께 제공됩니다. 이 검색 제공자와의 통합은 모델이 대화 중에 웹에서 현재 정보를 끌어올 수 있도록 합니다. 이는 응답을 사실 확인하고, 최근 사건 및 데이터를 접근하며, 훈련 데이터에만 의존하지 않고 최신 정보를 제공할 수 있게 합니다.
+
+
+
+도구는 또한 검색 증강 생성(RAG) 파이프라인의 구현을 간소화하는 데 사용될 수 있습니다. AI 모델이 훈련 중에 배운 것에만 의존하기보다는, RAG는 모델이 응답을 구성하기 전에 관련 정보를 끌어올릴 수 있도록 합니다. 예를 들어, 고객 지원을 돕기 위해 AI 어시스턴트를 사용하는 경우(예: Salesforce AgentForce, ServiceNow AI Agents). RAG 없이라면 AI는 질문에 답하기 위해 일반적인 훈련만 사용할 것입니다. 그러나 RAG와 함께라면 고객이 최신 제품 기능에 대해 문의했을 때, 시스템은 응답을 준비하기 전에 최신 문서, 릴리스 노트 및 과거 지원 티켓을 검색합니다. 이는 이제 AI 모델이 사용할 수 있는 최신 정보를 기반으로 한 답변을 의미합니다.
+
+### 추론 모델 {#reasoning-models}
+
+AI 분야에서 또 다른 발전이자 아마도 가장 흥미로운 것은 추론 모델의 출현입니다. OpenAI o1, Anthropic Claude 또는 DeepSeek-R1과 같은 시스템은 응답하기 전에 "사고" 단계를 도입함으로써 보다 방법론적인 접근 방식을 취하고 있습니다. 즉시 답변을 생성하는 대신, 추론 모델은 Chain-of-Thought (CoT)와 같은 프롬프트 기법을 사용하여 문제를 여러 각도에서 분석하고, 이를 단계별로 나누고, 필요할 때 컨텍스트 정보를 수집하기 위해 사용 가능한 도구를 활용합니다.
+
+이는 더 복잡한 작업을 처리할 수 있는 더 유능한 시스템으로의 전환을 나타내며, 이는 추론과 실제 도구의 조합을 통해 이루어집니다. 이 분야의 최신 사례 중 하나는 OpenAI의 딥 리서치 도입으로, 이 에이전트는 온라인에서 복잡한 다단계 연구 작업을 자율적으로 수행할 수 있습니다. 이는 텍스트, 이미지 및 PDF를 포함한 다양한 출처로부터 정보를 처리 및 종합하여, 일반적으로 인간이 몇 시간 동안 수행해야 할 작업을 5분에서 30분 내로 포괄적인 보고서를 생성합니다.
+
+
+
+## AI 에이전트를 위한 실시간 분석 {#real-time-analytics-for-ai-agents}
+
+회사의 CRM 데이터가 포함된 실시간 분석 데이터베이스에 접근할 수 있는 에이전트형 AI 어시스턴트를 예로 들어 보겠습니다. 사용자가 최신(실시간) 판매 동향에 대해 질문하면, AI 어시스턴트는 연결된 데이터 소스를 쿼리합니다. 이는 사용자들이 의미 있는 패턴과 동향을 식별하기 위해 데이터를 반복적으로 분석하여 월별 성장률, 계절적 변동 또는 신제품 카테고리 등과 같은 정보를 도출합니다. 마지막으로 이는 주요 발견을 설명하는 자연어 응답을 생성하며, 종종 지원 시각화를 함께 제공합니다. 이 경우 주요 인터페이스가 채팅 기반이므로 성능이 중요합니다. 이러한 반복적인 탐색은 대량의 데이터를 스캔하여 관련 통찰을 추출할 수 있는 일련의 쿼리를 촉발합니다.
+
+특정 속성으로 인해 실시간 데이터베이스는 이러한 작업 부하에 특히 적합합니다. 예를 들어, 실시간 분석 데이터베이스는근접 실시간 데이터와 작업하도록 설계되어 새 데이터가 도착할 때 거의 즉시 통찰을 처리하고 제공할 수 있습니다. 이는 AI 에이전트에게 필수적인 최신 정보를 요구하므로 시기적절하고 관련된 결정을 내리도록(또는 의사 결정을 돕도록) 합니다.
+
+핵심 분석 기능 역시 중요합니다. 실시간 분석 데이터베이스는 대규모 데이터셋에서 복잡한 집계 및 패턴 감지 작업을 수행하는 데 뛰어납니다. 원시 데이터 저장 또는 검색에 주로 초점을 맞춘 운영 데이터베이스와는 달리, 이러한 시스템은 대량의 정보를 분석하는 데 최적화되어 있습니다. 이는 트렌드를 파악하고, 이상치를 감지하며, 실행 가능한 통찰을 도출해야 하는 AI 에이전트에 특히 적합합니다.
+
+실시간 분석 데이터베이스는 상호작용 쿼리의 빠른 성능을 제공할 것으로 기대되며, 이는 채팅 기반 상호작용 및 높은 빈도의 탐색 작업에 필수적입니다. 이는 대량의 데이터 볼륨과 높은 쿼리 동시성에도 불구하고 일관된 성능을 보장하여, 반응이 빠른 대화와 매끄러운 사용자 경험을 가능하게 합니다.
+
+마지막으로, 실시간 분석 데이터베이스는 궁극적인 "데이터 싱크"로서 가치 있는 도메인 특정 데이터를 하나의 위치에 효과적으로 통합하는 기능을 갖추고 있습니다. 서로 다른 소스와 형식의 필수 데이터를 같은 환경에 위치시킴으로써, 이러한 데이터베이스는 AI 에이전트가 운영 시스템과 분리된 도메인 정보의 통합된 뷰에 접근할 수 있도록 합니다.
+
+
+
+
+
+이러한 속성들은 이미 실시간 데이터베이스가 대규모 AI 데이터 검색 사용 사례에 중요한 역할을 하도록 하고 있습니다(예: OpenAI의 Rockset 인수). 이들은 또한 AI 에이전트가 빠른 데이터 기반 응답을 제공할 수 있도록 하며, 무거운 계산 작업을 오프로드합니다.
+
+이는 실시간 분석 데이터베이스가 AI 에이전트에게 통찰력을 제공할 때 선호되는 "컨텍스트 제공자"로 자리 잡도록 하고 있습니다.
+
+## AI 에이전트: 새로운 사용자 페르소나 {#ai-agents-as-an-emerging-user-persona}
+
+실시간 분석 데이터베이스를 활용하는 AI 에이전트에 대해 생각하는 유용한 방법은 이들을 새로운 사용자 카테고리로 인식하는 것입니다. 제품 관리자 용어로는: 사용자 페르소나입니다.
+
+
+
+데이터베이스 관점에서, 우리는 AI 에이전트가 사용자 대신 또는 자율적으로 많은 쿼리를 동시에 실행하는 무한 수의 가능성을 기대할 수 있습니다. 이를 통해 조사 수행, 반복적인 연구와 통찰 정제, 작업 실행 등을 할 수 있습니다.
+
+수년 동안 실시간 데이터베이스는 시스템에 직접 연결된 인간 인터랙티브 사용자에 적응할 시간을 가졌습니다. 고전적인 페르소나의 예로는 데이터베이스 관리자, 비즈니스 분석가, 데이터 과학자 또는 데이터베이스 위에 애플리케이션을 구축하는 소프트웨어 개발자가 있습니다. 업계는 점진적으로 이들의 사용 패턴과 요구 사항을 학습하고 이를 통해 인터페이스, 운영 규칙, UI, 형식, 클라이언트 및 다양한 사용 사례를 충족하기 위한 성능을 자연스럽게 제공해 왔습니다.
+
+이제 질문은 AI 에이전트의 업무 부하를 수용할 준비가 되었는가입니다. 이러한 사용 패턴을 위해 어떤 특정 기능을 재고할 필요가 있거나 처음부터 새로 만들어야 할까요?
+
+ClickHouse는 기능 완전한 AI 경험을 제공하기 위한 다양한 기능을 통해 이러한 질문에 대한 답을 빠르게 제공하고 있습니다.
+
+## ClickHouse.ai {#clickhouse-ai}
+
+ClickHouse Cloud에 곧 출시될 기능에 대한 자세한 내용은 [ClickHouse.ai](https://clickhouse.com/clickhouse-ai/)를 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/02_agent_facing_analytics.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/02_agent_facing_analytics.md.hash
new file mode 100644
index 00000000000..48cabb5da93
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/02_agent_facing_analytics.md.hash
@@ -0,0 +1 @@
+53cfcf13072fa00a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/_category_.json
new file mode 100644
index 00000000000..01f4f00d897
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/04_machine_learning_and_genAI/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "ML/AI",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/_category_.json
new file mode 100644
index 00000000000..70c6591bd01
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/01_discover/02_use_cases/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Use cases",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/01_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/01_overview.md
new file mode 100644
index 00000000000..e350ad8a090
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/01_overview.md
@@ -0,0 +1,40 @@
+---
+'sidebar_label': '개요'
+'sidebar_position': 1
+'slug': '/integrations/migration/overview'
+'keywords':
+- 'clickhouse'
+- 'migrate'
+- 'migration'
+- 'migrating'
+- 'data'
+'title': 'ClickHouse로 데이터 이전하기'
+'description': 'ClickHouse로 데이터를 이전하기 위해 사용할 수 있는 옵션에 대해 설명하는 페이지'
+'doc_type': 'guide'
+---
+
+
+# ClickHouse로 데이터 마이그레이션
+
+
+
+
+
+
+
+현재 데이터가 위치한 곳에 따라 ClickHouse Cloud로 데이터를 마이그레이션할 수 있는 여러 옵션이 있습니다:
+
+- [자체 관리에서 클라우드로](/cloud/migration/clickhouse-to-cloud): `remoteSecure` 함수를 사용하여 데이터를 전송합니다.
+- [다른 DBMS에서](/cloud/migration/clickhouse-local): 현재 DBMS에 적합한 ClickHouse 테이블 함수와 함께 [clickhouse-local] ETL 도구를 사용합니다.
+- [어디서든지!](/cloud/migration/etl-tool-to-clickhouse): 다양한 데이터 소스에 연결되는 여러 인기 있는 ETL/ELT 도구 중 하나를 사용합니다.
+- [객체 저장소에서](/integrations/migration/object-storage-to-clickhouse): S3에서 ClickHouse로 쉽게 데이터를 삽입합니다.
+
+예제 [Redshift에서 마이그레이션](/migrations/redshift/migration-guide)에서는 ClickHouse로 데이터를 마이그레이션하는 세 가지 방법을 제시합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/01_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/01_overview.md.hash
new file mode 100644
index 00000000000..4fa2f290455
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/01_overview.md.hash
@@ -0,0 +1 @@
+3ad809f002420893
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/01_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/01_overview.md
new file mode 100644
index 00000000000..52b6bf59eeb
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/01_overview.md
@@ -0,0 +1,53 @@
+---
+'slug': '/migrations/postgresql/overview'
+'title': 'PostgreSQL와 ClickHouse 비교'
+'description': 'PostgreSQL에서 ClickHouse로의 마이그레이션 가이드'
+'keywords':
+- 'postgres'
+- 'postgresql'
+- 'migrate'
+- 'migration'
+'sidebar_label': '개요'
+'doc_type': 'guide'
+---
+
+
+# ClickHouse와 PostgreSQL 비교
+
+## ClickHouse를 Postgres보다 사용하는 이유는 무엇인가요? {#why-use-clickhouse-over-postgres}
+
+TLDR: ClickHouse는 OLAP 데이터베이스로서 빠른 분석을 위해 설계되었으며, 특히 `GROUP BY` 쿼리에 최적화되어 있는 반면, Postgres는 트랜잭션 작업을 위해 설계된 OLTP 데이터베이스입니다.
+
+OLTP, 즉 온라인 트랜잭션 처리 데이터베이스는 트랜잭션 정보를 관리하기 위해 설계되었습니다. 이러한 데이터베이스의 주요 목표는 엔지니어가 데이터베이스에 업데이트 블록을 제출할 수 있도록 하여, 전체가 성공하거나 실패하는 것을 확실히 하는 것입니다. ACID 속성을 가진 이러한 유형의 트랜잭션 보장은 OLTP 데이터베이스의 주요 초점이며 Postgres의 큰 강점입니다. 이러한 요구 사항을 감안할 때, OLTP 데이터베이스는 대규모 데이터셋에 대한 분석 쿼리를 사용할 때 성능 제한에 직면하는 경우가 많습니다.
+
+OLAP, 즉 온라인 분석 처리 데이터베이스는 이러한 필요를 충족시키기 위해 설계되었습니다 — 분석 작업을 관리합니다. 이러한 데이터베이스의 주요 목표는 엔지니어가 방대한 데이터셋에 대해 효율적으로 쿼리하고 집계할 수 있도록 하는 것입니다. ClickHouse와 같은 실시간 OLAP 시스템은 데이터가 실시간으로 수집되는 동안 이러한 분석이 이루어지도록 허용합니다.
+
+ClickHouse와 PostgreSQL 간의 보다 심층적인 비교는 [여기](https://migrations/postgresql/appendix#postgres-vs-clickhouse-equivalent-and-different-concepts)를 참조하십시오.
+
+ClickHouse와 Postgres 간의 분석 쿼리에 대한 잠재적인 성능 차이를 보려면 [ClickHouse에서 PostgreSQL 쿼리 재작성 보기](/migrations/postgresql/rewriting-queries)를 참조하십시오.
+
+## 마이그레이션 전략 {#migration-strategies}
+
+PostgreSQL에서 ClickHouse로 마이그레이션할 때 올바른 전략은 사용 사례, 인프라 및 데이터 요구 사항에 따라 달라집니다. 일반적으로 실시간 Change Data Capture (CDC)는 대부분의 현대 사용 사례에 가장 적합한 접근 방식이며, 수동 대량 로딩 후 정기적인 업데이트는 더 간단한 시나리오나 일회성 마이그레이션에 적합합니다.
+
+아래 섹션에서는 **실시간 CDC**와 **수동 대량 로드 + 정기 업데이트**라는 두 가지 주요 마이그레이션 전략을 설명합니다.
+
+### 실시간 복제 (CDC) {#real-time-replication-cdc}
+
+Change Data Capture (CDC)는 두 데이터베이스 간의 테이블을 동기화하는 과정입니다. 이는 PostgreSQL에서 ClickHouse로 거의 실시간으로 삽입, 업데이트 및 삭제를 처리하므로 대부분의 PostgreSQL에서 마이그레이션을 위한 가장 효율적인 접근 방식입니다. 실시간 분석이 중요한 사용 사례에 적합합니다.
+
+실시간 Change Data Capture (CDC)는 [ClickPipes](/integrations/clickpipes/postgres/deduplication)를 사용하여 ClickHouse에서 구현할 수 있으며, ClickHouse Cloud를 사용 중인 경우 또는 온프레미스에서 ClickHouse를 실행 중인 경우 [PeerDB](https://github.com/PeerDB-io/peerdb)를 사용할 수 있습니다. 이러한 솔루션은 PostgreSQL의 삽입, 업데이트 및 삭제를 캡처하여 ClickHouse에서 복제하는 실시간 데이터 동기화의 복잡성을 처리합니다. 이 접근 방식은 수동 개입 없이 ClickHouse의 데이터가 항상 신선하고 정확하도록 보장합니다.
+
+### 수동 대량 로드 + 정기 업데이트 {#manual-bulk-load-periodic-updates}
+
+일부 경우에는 수동 대량 로드 후 정기 업데이트와 같은 보다 간단한 접근 방식이 충분할 수 있습니다. 이 전략은 일회성 마이그레이션 또는 실시간 복제가 필요 없는 상황에 이상적입니다. 이는 PostgreSQL에서 ClickHouse로 대량으로 데이터를 로드하는 데 관련되며, 직접 SQL `INSERT` 명령을 사용하거나 CSV 파일을 내보내고 가져오는 방식으로 진행됩니다. 초기 마이그레이션 이후, 정기적인 간격으로 PostgreSQL의 변경 사항을 동기화하여 ClickHouse의 데이터를 정기적으로 업데이트할 수 있습니다.
+
+대량 로드 프로세스는 간단하고 유연하지만 실시간 업데이트가 없다는 단점이 있습니다. 초기 데이터가 ClickHouse에 로드되면 업데이트는 즉시 반영되지 않으므로 PostgreSQL에서 변경 사항을 동기화하려면 주기적인 업데이트를 예약해야 합니다. 이 접근 방식은 시간에 민감하지 않은 사용 사례에 잘 작동하지만, PostgreSQL에서 데이터가 변경되고 그 변경 사항이 ClickHouse에 나타나기까지 지연이 발생합니다.
+
+### 어떤 전략을 선택해야 하나요? {#which-strategy-to-choose}
+
+ClickHouse에서 신선하고 최신 데이터를 요구하는 대부분의 애플리케이션에 대해 ClickPipes를 통한 실시간 CDC가 권장되는 접근 방식입니다. 이는 최소한의 설정과 유지 관리로 지속적인 데이터 동기화를 제공합니다. 반면, 수동 대량 로딩과 정기 업데이트는 더 간단한 일회성 마이그레이션이나 실시간 업데이트가 중요하지 않은 작업 부하에 대한 실행 가능한 옵션입니다.
+
+---
+
+**[여기에서 PostgreSQL 마이그레이션 가이드를 시작하세요](/migrations/postgresql/dataset).**
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/01_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/01_overview.md.hash
new file mode 100644
index 00000000000..26c7709144f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/01_overview.md.hash
@@ -0,0 +1 @@
+17ba928115dd3651
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/appendix.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/appendix.md
new file mode 100644
index 00000000000..d67ab058bbd
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/appendix.md
@@ -0,0 +1,193 @@
+---
+'slug': '/migrations/postgresql/appendix'
+'title': '부록'
+'keywords':
+- 'postgres'
+- 'postgresql'
+- 'data types'
+- 'types'
+'description': 'PostgreSQL에서 마이그레이션하는 것과 관련된 추가 정보'
+'doc_type': 'reference'
+---
+
+import postgresReplicas from '@site/static/images/integrations/data-ingestion/dbms/postgres-replicas.png';
+import Image from '@theme/IdealImage';
+
+## Postgres vs ClickHouse: Equivalent and different concepts {#postgres-vs-clickhouse-equivalent-and-different-concepts}
+
+OLTP 시스템에서 ACID 트랜잭션에 익숙한 사용자들은 ClickHouse가 성능을 위해 이러한 기능을 완전하게 제공하지 않음으로써 의도적으로 타협을 한다는 점을 인식해야 합니다. ClickHouse의 의미론은 잘 이해하고 있다면 높은 내구성 보장과 높은 쓰기 처리량을 제공할 수 있습니다. 우리는 사용자들이 Postgres에서 ClickHouse로 작업하기 전에 익숙해져야 할 몇 가지 주요 개념을 아래에 강조합니다.
+
+### Shards vs replicas {#shards-vs-replicas}
+
+샤딩과 복제는 저장소 및/또는 계산이 성능의 병목현상으로 작용할 때 하나의 Postgres 인스턴스를 넘어 확장하기 위해 사용되는 두 가지 전략입니다. Postgres에서 샤딩은 대규모 데이터베이스를 여러 노드에 걸쳐 더 작고 관리하기 쉬운 조각으로 분할하는 것을 포함합니다. 그러나 Postgres는 기본적으로 샤딩을 지원하지 않습니다. 대신, Postgres가 수평으로 확장할 수 있는 분산 데이터베이스가 되도록 [Citus](https://www.citusdata.com/)와 같은 확장을 사용하여 샤딩을 달성할 수 있습니다. 이 접근 방식은 Postgres가 여러 기계에 로드를 분산시켜 더 높은 트랜잭션 속도와 더 큰 데이터 세트를 처리할 수 있게 합니다. 샤드는 트랜잭셔널 또는 분석과 같은 작업 유형에 유연성을 제공하기 위해 행 또는 스키마 기반으로 구성될 수 있습니다. 그러나 샤딩은 여러 기계 간의 조정과 일관성 보장을 요구하므로 데이터 관리 및 쿼리 실행 측면에서 상당한 복잡성을 도입할 수 있습니다.
+
+샤드와 달리, 복제본은 기본 노드의 모든 데이터 또는 일부 데이터를 포함하는 추가 Postgres 인스턴스입니다. 복제본은 향상된 읽기 성능 및 HA (고가용성) 시나리오 등 다양한 이유로 사용됩니다. 물리적 복제는 데이터베이스의 전체 또는 상당 부분을 다른 서버로 복사하는 Postgres의 기본 기능으로, 모든 데이터베이스, 테이블 및 인덱스를 포함합니다. 이는 TCP/IP를 통해 기본 노드에서 복제본으로 WAL 세그먼트를 스트리밍하는 것을 포함합니다. 그에 반해, 논리적 복제는 `INSERT`, `UPDATE`, `DELETE` 작업을 기반으로 변화를 스트리밍하는 높은 수준의 추상화입니다. 물리적 복제에 대해 동일한 결과가 적용될 수 있지만, 특정 테이블 및 작업, 데이터 변환 및 다양한 Postgres 버전을 지원하기 위해 더 큰 유연성이 제공됩니다.
+
+**대조적으로 ClickHouse의 샤드와 복제본은 데이터 분배 및 중복과 관련된 두 가지 주요 개념입니다.** ClickHouse의 복제본은 Postgres의 복제본과 유사하다고 볼 수 있지만, 복제는 궁극적으로 일관성이 있으며 기본 개념이 없습니다. 샤드는 Postgres와 달리 기본적으로 지원됩니다.
+
+샤드는 테이블 데이터의 일부입니다. 항상 최소 하나의 샤드가 있습니다. 여러 서버에 걸쳐 데이터를 샤딩하면 모든 샤드를 통해 쿼리를 병렬로 실행할 수 있는 단일 서버의 용량을 초과할 경우 부하를 나누는 데 사용할 수 있습니다. 사용자는 다른 서버에서 테이블을 위한 샤드를 수동으로 생성하고 데이터 삽입을 직접 수행할 수 있습니다. 또는 데이터가 라우팅되는 샤드를 정의하는 샤딩 키가 있는 분산 테이블을 사용할 수 있습니다. 샤딩 키는 무작위일 수도 있고 해시 함수의 출력일 수도 있습니다. 중요한 점은 샤드가 여러 복제본으로 구성될 수 있다는 점입니다.
+
+복제본은 데이터의 복사본입니다. ClickHouse는 항상 최소 하나의 데이터 복사본을 보유하므로 최소 복제본 수는 하나입니다. 데이터의 두 번째 복제본을 추가하면 오류 내성이 제공되며, 더 많은 쿼리를 처리하기 위한 추가 계산이 가능해집니다 ([Parallel Replicas](https://clickhouse.com/blog/clickhouse-release-23-03#parallel-replicas-for-utilizing-the-full-power-of-your-replicas-nikita-mikhailov) 또한 단일 쿼리 처리용 컴퓨트를 분산시키는 데 사용될 수 있으므로 대기 시간 감소 효과가 있습니다). 복제본은 [ReplicatedMergeTree 테이블 엔진](/engines/table-engines/mergetree-family/replication)으로 구현되며, ClickHouse가 서로 다른 서버 간의 데이터 복사본을 동기화 상태로 유지할 수 있도록 합니다. 복제는 물리적입니다: 쿼리가 아니라 압축된 파트만 노드 간에 전송됩니다.
+
+요약하자면, 복제본은 중복성과 신뢰성을 제공하는 데이터 복사본이며(및 잠재적으로 분산 처리를 제공), 샤드는 분산 처리 및 부하 분산을 허용하는 데이터의 하위 집합입니다.
+
+> ClickHouse Cloud는 S3에 백업된 데이터의 단일 복사본과 여러 계산 복제본을 사용합니다. 데이터는 각 복제본 노드에서 사용할 수 있으며, 각 노드는 로컬 SSD 캐시를 가지고 있습니다. 이는 ClickHouse Keeper를 통해서만 메타데이터 복제를 의존합니다.
+
+## Eventual consistency {#eventual-consistency}
+
+ClickHouse는 내부 복제 메커니즘을 관리하기 위해 ClickHouse Keeper (C++ ZooKeeper 구현, ZooKeeper도 사용 가능)를 사용하며, 주로 메타데이터 저장과 궁극적인 일관성 보장에 집중합니다. Keeper는 분산 환경 내에서 각 삽입에 대한 고유한 순차 번호를 할당하는 데 사용됩니다. 이는 작업 간의 순서와 일관성을 유지하는 데 매우 중요합니다. 이 프레임워크는 병합 및 변형과 같은 백그라운드 작업을 처리하여 이 작업들이 분산되면서도 모든 복제본에서 동일한 순서로 실행되도록 보장합니다. 메타데이터 외에도 Keeper는 복제를 위한 종합적인 제어 센터 역할을 하며, 저장된 데이터 파트의 체크섬 추적을 포함하고 복제본 간의 분산 알림 시스템 역할을 합니다.
+
+ClickHouse의 복제 과정은 (1) 데이터가 어떤 복제본에 삽입될 때 시작됩니다. 이 데이터는 (2) 체크섬과 함께 디스크에 기록됩니다. 기록된 후, 복제본은 (3) Keeper에 이 새로운 데이터 파트를 등록하려고 시도하여 고유한 블록 번호를 할당하고 새로운 파트의 세부 정보를 로그에 기록합니다. 다른 복제본은 복제 로그에서 새로운 항목을 (4) 감지하면 (5) 내부 HTTP 프로토콜을 통해 해당 데이터 파트를 다운로드하며, ZooKeeper에 나열된 체크섬과 비교하여 이를 검증합니다. 이 방법은 모든 복제본이 처리 속도나 잠재적인 지연이 다르더라도 결국 일관되고 최신 데이터를 보유하도록 보장합니다. 더 나아가, 시스템은 여러 작업을 동시에 처리할 수 있는 능력이 있어 데이터 관리 프로세스를 최적화하고 시스템 확장성 및 하드웨어 불일치에 대한 강인성을 허용합니다.
+
+
+
+ClickHouse Cloud는 S3에 저장소와 계산 아키텍처의 분리를 기반으로 한 [클라우드 최적화 복제 메커니즘](https://clickhouse.com/blog/clickhouse-cloud-boosts-performance-with-sharedmergetree-and-lightweight-updates)을 사용합니다. 데이터가 공유 객체 저장소에 저장되기 때문에, 데이터는 노드 간에 물리적으로 복제할 필요 없이 모든 계산 노드에서 자동으로 사용할 수 있습니다. 대신, Keeper는 메타데이터(저장소의 데이터가 어디에 존재하는지)만 계산 노드 간에 공유하는 데 사용됩니다.
+
+PostgreSQL은 ClickHouse와는 다른 복제 전략을 사용하며, 주로 기본 복제본 모델을 사용하는 스트리밍 복제를 통해 기본에서 하나 이상의 복제 노드로 데이터를 지속적으로 스트리밍합니다. 이 유형의 복제는 거의 실시간 일관성을 보장하며 동기식 또는 비동기식으로 제공되어, 관리자에게 가용성과 일관성 간의 균형을 조정할 수 있는 권한을 부여합니다. ClickHouse와는 달리 PostgreSQL은 WAL (Write-Ahead Logging) 및 논리적 복제와 디코딩을 통해 노드 간에 데이터 객체와 변경 사항을 스트리밍합니다. PostgreSQL의 이 접근 방식은 더 간단하지만 ClickHouse가 Keeper의 복잡한 사용을 통해 이룰 수 있는 높은 분산 환경에서의 확장성과 결함 허용성을 제공하지 못할 수도 있습니다.
+
+## User implications {#user-implications}
+
+ClickHouse에서는 더러운 읽기 가능성 - 사용자가 한 복제본에 데이터를 작성한 후 다른 복제본에서 잠재적으로 비복제된 데이터를 읽을 수 있는 상황이 - Keeper로 관리되는 결국 일관성 복제 모델에서 발생할 수 있습니다. 이 모델은 성능과 분산 시스템 전반의 확장성을 강조하여, 복제본이 독립적으로 작동하고 비동기적으로 동기화할 수 있게 합니다. 결과적으로 새로운 데이터가 삽입될 경우, 복제 지연 및 변화가 시스템을 통해 전파되는 데 걸리는 시간에 따라 새로 삽입된 데이터가 모든 복제본에서 즉시 보이지 않을 수 있습니다.
+
+반대로 PostgreSQL의 스트리밍 복제 모델은 일반적으로 기본이 트랜잭션을 커밋하기 전에 데이터를 수신했음을 확인하기 위해 적어도 하나의 복제본을 기다리는 동기식 복제 옵션을 활용하여 더러운 읽기를 방지할 수 있습니다. 이렇게 하면 트랜잭션이 커밋될 때 다른 복제본에서 데이터가 사용 가능하다는 보장이 존재합니다. 기본 실패가 발생할 경우, 복제본은 쿼리가 커밋된 데이터를 확인하여 더 엄격한 일관성을 유지합니다.
+
+## Recommendations {#recommendations}
+
+ClickHouse에 새로 온 사용자는 이러한 차이점을 인식해야 하며, 이는 복제 환경에서 나타날 것입니다. 일반적으로 궁극적인 일관성은 수십억, 아니면 수 조 점의 데이터에 대한 분석에서 충분합니다 - 이 경우 메트릭은 더 안정적이거나 새로운 데이터가 지속적으로 높은 속도로 삽입되기 때문에 추정이 충분할 수 있습니다.
+
+읽기의 일관성을 증가시키기 위한 여러 옵션이 존재합니다. 이 두 가지 예시 모두 증가된 복잡성 또는 오버헤드를 요구하여 쿼리 성능을 저하시킬 수 있으며 ClickHouse의 확장을 더 어렵게 만들 수 있습니다. **우리는 이러한 접근 방식을 절대적으로 필요한 경우에만 권장합니다.**
+
+## Consistent routing {#consistent-routing}
+
+궁극적인 일관성의 일부 제한을 극복하기 위해, 사용자는 클라이언트가 동일한 복제본으로 라우팅되도록 보장할 수 있습니다. 이는 여러 사용자가 ClickHouse를 쿼리하고 결과가 요청 간에 결정론적이어야 하는 경우에 유용합니다. 결과는 다를 수 있지만, 새로운 데이터가 삽입되면서도 동일한 복제본을 쿼리해야 일관된 뷰를 보장할 수 있습니다.
+
+이는 아키텍처와 ClickHouse OSS 또는 ClickHouse Cloud를 사용하는 여부에 따라 몇 가지 접근 방식을 통해 달성할 수 있습니다.
+
+## ClickHouse Cloud {#clickhouse-cloud}
+
+ClickHouse Cloud는 S3에 백업된 데이터의 단일 복사본과 여러 계산 복제본을 사용합니다. 데이터는 각 복제본 노드에서 사용할 수 있으며, 각 노드는 로컬 SSD 캐시를 가지고 있습니다. 따라서 일관된 결과를 보장하려면 사용자가 동일한 노드로 일관되게 라우팅되도록 해야 합니다.
+
+ClickHouse Cloud 서비스의 노드와의 통신은 프록시를 통해 이루어집니다. HTTP 및 네이티브 프로토콜 연결은 열려 있는 기간 동안 동일한 노드로 라우팅됩니다. 대부분의 클라이언트에서 HTTP 1.1 연결의 경우, 이는 Keep-Alive 윈도우에 따라 달라집니다. 이는 대부분의 클라이언트 (예: Node Js)에서 구성할 수 있습니다. 또한 서버 측 구성도 필요하며, 이는 클라이언트보다 높아야 하며 ClickHouse Cloud에서는 10초로 설정되어 있습니다.
+
+연결 간 일관된 라우팅을 보장하기 위해, 사용자는 동일한 연결을 사용하거나(connection pool 사용 시) 스티키 엔드포인트 노출을 요청하는 두 가지 방법 중 하나를 선택할 수 있습니다. 이는 클러스터의 각 노드에 대한 엔드포인트 집합을 제공하므로, 클라이언트는 쿼리를 결정론적으로 라우팅할 수 있도록 합니다.
+
+> 스티키 엔드포인트에 대한 액세스를 원할 경우 지원에 문의하십시오.
+
+## ClickHouse OSS {#clickhouse-oss}
+
+OSS에서 이러한 동작을 달성하는 것은 사용 중인 샤드 및 복제본 토폴로지 및 [Distributed table](/engines/table-engines/special/distributed)를 활용하여 쿼리를 할 수 있는지 여부에 따라 다릅니다.
+
+샤드와 복제본이 하나만 있는 경우(ClickHouse가 수직으로 확장되므로 일반적임), 사용자는 클라이언트 레이어에서 노드를 선택하고 복제본에 직접 쿼리하여 이를 결정론적으로 선택하도록 합니다.
+
+샤드와 복제본이 여러 개 있는 토폴로지는 분산 테이블 없이도 가능하지만, 이러한 고급 배포는 일반적으로 자체 라우팅 인프라를 갖추고 있습니다. 따라서 우리가 하나 이상의 샤드가 있는 배포는 Distributed table을 사용하고 있다고 가정합니다 (Distributed tables는 단일 샤드 배포에 사용할 수 있지만 일반적으로 불필요합니다).
+
+이 경우 사용자는 `session_id` 또는 `user_id`와 같은 프로퍼티에 따라 일관된 노드 라우팅을 보장해야 합니다. 설정 [`prefer_localhost_replica=0`](/operations/settings/settings#prefer_localhost_replica), [`load_balancing=in_order`](/operations/settings/settings#load_balancing) 은 [쿼리에서 설정해야 합니다](/operations/settings/query-level). 이는 샤드의 로컬 복제본이 선호되도록 보장하며, 그렇지 않은 경우 설정된 구성에 나열된 복제본이 우선됩니다 - 오류 수가 동일할 경우에는 높은 오류가 발생할 경우 무작위 선택이 이루어집니다. [`load_balancing=nearest_hostname`](/operations/settings/settings#load_balancing) 도 이 결정론적 샤드 선택을 위한 대안으로 사용될 수 있습니다.
+
+> Distributed table을 만들 때 사용자는 클러스터를 지정합니다. config.xml에 지정된 이 클러스터 정의는 샤드(및 그 복제본)를 나열하며 - 따라서 사용자가 각 노드에서 사용되는 순서를 제어할 수 있게 합니다. 이를 통해 사용자는 선택이 결정론적이도록 할 수 있습니다.
+
+## Sequential consistency {#sequential-consistency}
+
+예외적인 경우 사용자는 순차적 일관성이 필요할 수 있습니다.
+
+데이터베이스의 순차적 일관성이란 데이터베이스의 작업이 어떤 순차적 순서로 실행되는 것처럼 보이며, 이 순서가 데이터베이스와 상호작용하는 모든 프로세스에서 일관되도록 보장하는 것입니다. 이는 각 작업이 호출과 완료 간에 즉시 효과를 나타내며, 모든 작업이 어떠한 프로세스에서 관찰되느냐에 대해 동의된 단일 순서가 존재한다는 것을 의미합니다.
+
+사용자의 관점에서 볼 때 이는 일반적으로 ClickHouse에 데이터를 작성할 때 발생하고, 데이터를 읽을 때 가장 최근에 삽입된 행이 반환되도록 할 때 필요합니다.
+이는 몇 가지 방법으로 달성할 수 있습니다(선호도 순서):
+
+1. **동일한 노드에서 읽기/쓰기** - 네이티브 프로토콜을 사용 중이거나 [HTTP를 통해 쓰기/읽기 세션을 사용하는 경우](/interfaces/http#default-database), 동일한 복제본에 연결되어 있어야 합니다: 이 시나리오에서는 쓰기를 하는 노드에서 직접 읽고 있으므로 읽기 결과가 항상 일관적입니다.
+1. **복제본 수동 동기화** - 한 복제본에 데이터를 작성하고 다른 복제본에서 읽는 경우, 읽기 전에 `SYSTEM SYNC REPLICA LIGHTWEIGHT` 명령어를 사용할 수 있습니다.
+1. **순차적 일관성 활성화** - 쿼리 설정 [`select_sequential_consistency = 1`](/operations/settings/settings#select_sequential_consistency)을 통해서 가능합니다. OSS에서는 설정 `insert_quorum = 'auto'`도 지정되어야 합니다.
+
+
+
+이 설정을 활성화하는 자세한 내용은 [여기](/cloud/reference/shared-merge-tree#consistency)를 참조하십시오.
+
+> 순차적 일관성의 사용은 ClickHouse Keeper에 더 많은 부하를 발생시킵니다. 그 결과로 인해 느린 삽입과 읽기가 발생할 수 있습니다. ClickHouse Cloud에서 주 테이블 엔진으로 사용되는 SharedMergeTree는 순차적 일관성이 [부하가 적고 확장성이 더 뛰어납니다](/cloud/reference/shared-merge-tree#consistency). OSS 사용자는 이 접근 방식을 신중하게 사용하고 Keeper 부하를 측정해야 합니다.
+
+## Transactional (ACID) support {#transactional-acid-support}
+
+PostgreSQL에서 마이그레이션하는 사용자는 ACID (원자성, 일관성, 격리성, 내구성) 속성에 대한 강력한 지원에 익숙할 수 있으며, 이는 트랜잭션 데이터베이스에 신뢰할 수 있는 선택이 됩니다. PostgreSQL의 원자성은 각 트랜잭션이 완전히 성공하거나 완전히 롤백되는 단일 단위로 처리되도록 보장하여 부분 업데이트를 방지합니다. 일관성은 모든 데이터베이스 트랜잭션이 유효한 상태로 이어지도록 보장하는 제약 조건, 트리거 및 규칙을 시행하여 유지됩니다. Read Committed에서 Serializable까지의 격리 수준이 PostgreSQL에서 지원되어 동시 실행되는 트랜잭션에 의해 가해진 변경이 보이는 것을 세밀하게 제어할 수 있습니다. 마지막으로, 내구성은 Write-Ahead Logging(WAL)을 통해 달성되어, 트랜잭션이 커밋된 후 시스템 실패 시에도 그 상태가 유지되도록 합니다.
+
+이러한 속성은 진실의 원천으로 작용하는 OLTP 데이터베이스에서 일반적입니다.
+
+강력하지만, 이는 고유한 제한 사항과 PB 스케일이 어려워지는 경우를 동반합니다. ClickHouse는 빠른 분석 쿼리를 대규모로 제공하면서 높은 쓰기 처리량을 유지하기 위해 이러한 속성을 타협합니다.
+
+ClickHouse는 [제한된 구성](/guides/developer/transactional)에서 ACID 속성을 제공합니다 - 가장 간단하게는 하나의 파티션을 가진 MergeTree 테이블 엔진의 비복제 인스턴스를 사용할 때입니다. 사용자는 이러한 경우 이외의 속성을 기대하지 말고, 이러한 요구가 없는지 확인해야 합니다.
+
+## Compression {#compression}
+
+ClickHouse의 컬럼 중심 저장소는 Postgres에 비해 압축률이 상당히 더 좋을 수 있음을 의미합니다. 다음은 두 데이터베이스에서 모든 Stack Overflow 테이블의 저장 요구 사항을 비교한 것입니다:
+
+```sql title="Query (Postgres)"
+SELECT
+ schemaname,
+ tablename,
+ pg_total_relation_size(schemaname || '.' || tablename) AS total_size_bytes,
+ pg_total_relation_size(schemaname || '.' || tablename) / (1024 * 1024 * 1024) AS total_size_gb
+FROM
+ pg_tables s
+WHERE
+ schemaname = 'public';
+```
+
+```sql title="Query (ClickHouse)"
+SELECT
+ `table`,
+ formatReadableSize(sum(data_compressed_bytes)) AS compressed_size
+FROM system.parts
+WHERE (database = 'stackoverflow') AND active
+GROUP BY `table`
+```
+
+```response title="Response"
+┌─table───────┬─compressed_size─┐
+│ posts │ 25.17 GiB │
+│ users │ 846.57 MiB │
+│ badges │ 513.13 MiB │
+│ comments │ 7.11 GiB │
+│ votes │ 1.28 GiB │
+│ posthistory │ 40.44 GiB │
+│ postlinks │ 79.22 MiB │
+└─────────────┴─────────────────┘
+```
+
+압축 최적화 및 측정에 대한 더 자세한 내용은 [여기](/data-compression/compression-in-clickhouse)에서 확인할 수 있습니다.
+
+## Data type mappings {#data-type-mappings}
+
+다음 표는 Postgres에 대한 ClickHouse 데이터 유형의 동등한 유형을 보여줍니다.
+
+| Postgres 데이터 유형 | ClickHouse 유형 |
+| --- | --- |
+| `DATE` | [Date](/sql-reference/data-types/date) |
+| `TIMESTAMP` | [DateTime](/sql-reference/data-types/datetime) |
+| `REAL` | [Float32](/sql-reference/data-types/float) |
+| `DOUBLE` | [Float64](/sql-reference/data-types/float) |
+| `DECIMAL, NUMERIC` | [Decimal](/sql-reference/data-types/decimal) |
+| `SMALLINT` | [Int16](/sql-reference/data-types/int-uint) |
+| `INTEGER` | [Int32](/sql-reference/data-types/int-uint) |
+| `BIGINT` | [Int64](/sql-reference/data-types/int-uint) |
+| `SERIAL` | [UInt32](/sql-reference/data-types/int-uint) |
+| `BIGSERIAL` | [UInt64](/sql-reference/data-types/int-uint) |
+| `TEXT, CHAR, BPCHAR` | [String](/sql-reference/data-types/string) |
+| `INTEGER` | Nullable([Int32](/sql-reference/data-types/int-uint)) |
+| `ARRAY` | [Array](/sql-reference/data-types/array) |
+| `FLOAT4` | [Float32](/sql-reference/data-types/float) |
+| `BOOLEAN` | [Bool](/sql-reference/data-types/boolean) |
+| `VARCHAR` | [String](/sql-reference/data-types/string) |
+| `BIT` | [String](/sql-reference/data-types/string) |
+| `BIT VARYING` | [String](/sql-reference/data-types/string) |
+| `BYTEA` | [String](/sql-reference/data-types/string) |
+| `NUMERIC` | [Decimal](/sql-reference/data-types/decimal) |
+| `GEOGRAPHY` | [Point](/sql-reference/data-types/geo#point), [Ring](/sql-reference/data-types/geo#ring), [Polygon](/sql-reference/data-types/geo#polygon), [MultiPolygon](/sql-reference/data-types/geo#multipolygon) |
+| `GEOMETRY` | [Point](/sql-reference/data-types/geo#point), [Ring](/sql-reference/data-types/geo#ring), [Polygon](/sql-reference/data-types/geo#polygon), [MultiPolygon](/sql-reference/data-types/geo#multipolygon) |
+| `INET` | [IPv4](/sql-reference/data-types/ipv4), [IPv6](/sql-reference/data-types/ipv6) |
+| `MACADDR` | [String](/sql-reference/data-types/string) |
+| `CIDR` | [String](/sql-reference/data-types/string) |
+| `HSTORE` | [Map(K, V)](/sql-reference/data-types/map), [Map](/sql-reference/data-types/map)(K,[Variant](/sql-reference/data-types/variant)) |
+| `UUID` | [UUID](/sql-reference/data-types/uuid) |
+| `ARRAY` | [ARRAY(T)](/sql-reference/data-types/array) |
+| `JSON*` | [String](/sql-reference/data-types/string), [Variant](/sql-reference/data-types/variant), [Nested](/sql-reference/data-types/nested-data-structures/nested#nestedname1-type1-name2-type2-), [Tuple](/sql-reference/data-types/tuple) |
+| `JSONB` | [String](/sql-reference/data-types/string) |
+
+*\* ClickHouse에서 JSON에 대한 운영 지원은 개발 중입니다. 현재 사용자는 JSON을 String으로 매핑하고 [JSON 함수](/sql-reference/functions/json-functions)를 사용하거나 구조가 예상 가능한 경우 JSON을 [튜플](/sql-reference/data-types/tuple) 및 [중첩](/sql-reference/data-types/nested-data-structures/nested)으로 직접 매핑할 수 있습니다. JSON에 대한 자세한 내용은 [여기](/integrations/data-formats/json/overview)에서 확인하십시오.*
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/appendix.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/appendix.md.hash
new file mode 100644
index 00000000000..c0af48a01e8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/appendix.md.hash
@@ -0,0 +1 @@
+ee779bba05f7a33a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/index.md
new file mode 100644
index 00000000000..afe488a2c73
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/index.md
@@ -0,0 +1,23 @@
+---
+'slug': '/migrations/postgresql'
+'pagination_prev': null
+'pagination_next': null
+'title': 'PostgreSQL'
+'description': 'PostgreSQL 마이그레이션 섹션의 랜딩 페이지'
+'doc_type': 'landing-page'
+'keywords':
+- 'PostgreSQL migration'
+- 'database migration'
+- 'ClickHouse migration'
+- 'CDC replication'
+- 'data migration'
+---
+
+| Page | Description |
+|----------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [개요](/migrations/postgresql/overview) | 이 섹션의 소개 페이지 |
+| [PostgreSQL에 연결하기](/integrations/postgresql/connecting-to-postgresql) | 이 페이지는 ClickHouse와 PostgreSQL을 통합하기 위한 다음 옵션을 다룹니다: ClickPipes, PeerDB, PostgreSQL 테이블 엔진, 물리화된 PostgreSQL 데이터베이스 엔진. |
+| [데이터 마이그레이션](/migrations/postgresql/dataset) | PostgreSQL에서 ClickHouse로 마이그레이션하는 가이드의 1부. 실용적인 예제를 사용하여 실시간 복제(CDC) 접근 방식을 통해 효율적으로 마이그레이션을 수행하는 방법을 시연합니다. 다루는 많은 개념은 PostgreSQL에서 ClickHouse로의 수동 대량 데이터 전송에도 적용될 수 있습니다. |
+|[PostgreSQL 쿼리 재작성](/migrations/postgresql/rewriting-queries)|PostgreSQL에서 ClickHouse로 마이그레이션하는 가이드의 2부. 실용적인 예제를 사용하여 실시간 복제(CDC) 접근 방식을 통해 효율적으로 마이그레이션을 수행하는 방법을 시연합니다. 다루는 많은 개념은 PostgreSQL에서 ClickHouse로의 수동 대량 데이터 전송에도 적용될 수 있습니다.|
+|[데이터 모델링 기법](/migrations/postgresql/data-modeling-techniques)|PostgreSQL에서 ClickHouse로 마이그레이션하는 가이드의 3부. 실용적인 예제를 사용하여 PostgreSQL에서 마이그레이션할 때 ClickHouse에서 데이터를 모델링하는 방법을 시연합니다.|
+|[부록](/migrations/postgresql/appendix)|PostgreSQL에서 마이그레이션하는 데 관련된 추가 정보|
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/index.md.hash
new file mode 100644
index 00000000000..a3291df93fc
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/index.md.hash
@@ -0,0 +1 @@
+df260174753e7854
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/01_migration_guide_part1.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/01_migration_guide_part1.md
new file mode 100644
index 00000000000..f5e64da8d7b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/01_migration_guide_part1.md
@@ -0,0 +1,190 @@
+---
+'slug': '/migrations/postgresql/dataset'
+'title': '데이터 마이 그레이션'
+'description': 'PostgreSQL에서 ClickHouse로 마이그레이션할 데이터셋 예제'
+'keywords':
+- 'Postgres'
+'show_related_blogs': true
+'sidebar_label': '1부'
+'doc_type': 'guide'
+---
+
+import postgres_stackoverflow_schema from '@site/static/images/migrations/postgres-stackoverflow-schema.png';
+import Image from '@theme/IdealImage';
+
+> 이것은 **1부**로 PostgreSQL에서 ClickHouse로 마이그레이션하는 가이드입니다. 실용적인 예시를 사용하여 실시간 복제(CDC) 접근 방식을 통해 효율적으로 마이그레이션을 수행하는 방법을 보여줍니다. 다루는 많은 개념들은 PostgreSQL에서 ClickHouse로의 수동 대량 데이터 전송에도 적용될 수 있습니다.
+
+## 데이터셋 {#dataset}
+
+Postgres에서 ClickHouse로의 전형적인 마이그레이션을 보여주는 예제 데이터셋으로 Stack Overflow 데이터셋을 사용합니다. 이 데이터셋은 2008년부터 2024년 4월까지 Stack Overflow에서 발생한 모든 `post`, `vote`, `user`, `comment`, 및 `badge`를 포함합니다. 이 데이터의 PostgreSQL 스키마는 아래에 나와 있습니다:
+
+
+
+*PostgreSQL에서 테이블을 생성하기 위한 DDL 명령은 [여기](https://pastila.nl/?001c0102/eef2d1e4c82aab78c4670346acb74d83#TeGvJWX9WTA1V/5dVVZQjg==)에서 확인할 수 있습니다.*
+
+이 스키마는 가장 최적화된 것은 아니지만, 기본 키, 외부 키, 파티셔닝 및 인덱스를 포함한 여러 개념들을 활용합니다.
+
+우리는 이러한 개념 각각을 ClickHouse의 동등한 개념으로 마이그레이션할 것입니다.
+
+마이그레이션 단계를 테스트하기 위해 이 데이터셋을 PostgreSQL 인스턴스에 채워 넣고자 하는 사용자들을 위해, DDL 및 이후 데이터 로드 명령이 포함된 `pg_dump` 형식의 데이터를 다운로드할 수 있도록 제공했습니다:
+
+```bash
+
+# users
+wget https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/pdump/2024/users.sql.gz
+gzip -d users.sql.gz
+psql < users.sql
+
+
+# posts
+wget https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/pdump/2024/posts.sql.gz
+gzip -d posts.sql.gz
+psql < posts.sql
+
+
+# posthistory
+wget https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/pdump/2024/posthistory.sql.gz
+gzip -d posthistory.sql.gz
+psql < posthistory.sql
+
+
+# comments
+wget https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/pdump/2024/comments.sql.gz
+gzip -d comments.sql.gz
+psql < comments.sql
+
+
+# votes
+wget https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/pdump/2024/votes.sql.gz
+gzip -d votes.sql.gz
+psql < votes.sql
+
+
+# badges
+wget https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/pdump/2024/badges.sql.gz
+gzip -d badges.sql.gz
+psql < badges.sql
+
+
+# postlinks
+wget https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/pdump/2024/postlinks.sql.gz
+gzip -d postlinks.sql.gz
+psql < postlinks.sql
+```
+
+ClickHouse에 비해 이 데이터셋은 Postgres에게는 상당히 많은 양입니다. 위의 예시는 2024년 첫 세 달을 커버하는 하위 집합을 나타냅니다.
+
+> 우리의 예시 결과는 Postgres와 Clickhouse 간의 성능 차이를 보여주기 위해 전체 데이터셋을 사용하지만, 아래에 문서화된 모든 단계는 더 작은 하위 집합과 기능적으로 동일합니다. 전체 데이터셋을 Postgres에 로드하려는 사용자는 [여기](https://pastila.nl/?00d47a08/1c5224c0b61beb480539f15ac375619d#XNj5vX3a7ZjkdiX7In8wqA==)에서 확인할 수 있습니다. 위의 스키마에 의해 부과된 외부 제약 때문에 PostgreSQL의 전체 데이터셋에는 참조 무결성을 충족하는 행만 포함되어 있습니다. 제약 조건이 없는 [Parquet 버전](/getting-started/example-datasets/stackoverflow)은 필요할 경우 ClickHouse로 직접 쉽게 로드할 수 있습니다.
+
+## 데이터 마이그레이션 {#migrating-data}
+
+### 실시간 복제 (CDC) {#real-time-replication-or-cdc}
+
+ClickPipes를 PostgreSQL에 설정하는 방법은 이 [가이드](/integrations/clickpipes/postgres)를 참조하십시오. 이 가이드는 다양한 유형의 원본 Postgres 인스턴스를 다룹니다.
+
+ClickPipes 또는 PeerDB를 사용하는 CDC 접근 방식을 통해 PostgreSQL 데이터베이스의 각 테이블이 ClickHouse에 자동으로 복제됩니다.
+
+업데이트 및 삭제를 거의 실시간으로 처리하기 위해 ClickPipes는 Postgres 테이블을 ClickHouse에 매핑할 때 [ReplacingMergeTree](/engines/table-engines/mergetree-family/replacingmergetree) 엔진을 사용합니다. 이 엔진은 ClickHouse에서 업데이트 및 삭제를 처리하도록 설계되었습니다. ClickPipes를 사용하여 데이터가 ClickHouse에 복제되는 방법에 대한 자세한 내용은 [여기](/integrations/clickpipes/postgres/deduplication#how-does-data-get-replicated)에서 확인할 수 있습니다. 복제에 있어 CDC를 사용하면 ClickHouse에서 업데이트 또는 삭제 작업을 복제할 때 중복된 행이 생성된다는 점에 유의해야 합니다. ClickHouse에서 이를 처리하기 위해 [FINAL](https://clickhouse.com/docs/sql-reference/statements/select/from#final-modifier) 수정자를 사용하는 [기술](/integrations/clickpipes/postgres/deduplication#deduplicate-using-final-keyword)을 참조하십시오.
+
+ClickPipes를 사용하여 ClickHouse에서 `users` 테이블이 어떻게 생성되는지 살펴보겠습니다.
+
+```sql
+CREATE TABLE users
+(
+ `id` Int32,
+ `reputation` String,
+ `creationdate` DateTime64(6),
+ `displayname` String,
+ `lastaccessdate` DateTime64(6),
+ `aboutme` String,
+ `views` Int32,
+ `upvotes` Int32,
+ `downvotes` Int32,
+ `websiteurl` String,
+ `location` String,
+ `accountid` Int32,
+ `_peerdb_synced_at` DateTime64(9) DEFAULT now64(),
+ `_peerdb_is_deleted` Int8,
+ `_peerdb_version` Int64
+)
+ENGINE = ReplacingMergeTree(_peerdb_version)
+PRIMARY KEY id
+ORDER BY id;
+```
+
+설정이 완료되면 ClickPipes는 PostgreSQL에서 ClickHouse로 모든 데이터를 마이그레이션하기 시작합니다. 네트워크 및 배포 크기에 따라, Stack Overflow 데이터셋의 경우 몇 분 만에 완료되어야 합니다.
+
+### 주기적인 업데이트가 포함된 수동 대량 로드 {#initial-bulk-load-with-periodic-updates}
+
+수동 방식으로, 데이터셋의 초기 대량 로드는 다음을 통해 달성할 수 있습니다:
+
+- **테이블 함수** - [Postgres 테이블 함수](/sql-reference/table-functions/postgresql)를 사용하여 ClickHouse에서 Postgres로부터 데이터를 `SELECT`하고 ClickHouse 테이블에 `INSERT`합니다. 이는 수백 GB에 달하는 데이터셋의 대량 로드에 관련됩니다.
+- **내보내기** - CSV 또는 SQL 스크립트 파일과 같은 중간 형식으로 내보냅니다. 그런 다음 이 파일들은 ClickHouse에 클라이언트를 통해 `INSERT FROM INFILE` 절 또는 객체 저장소와 관련된 함수(예: s3, gcs)를 사용하여 로드할 수 있습니다.
+
+PostgreSQL에서 데이터를 수동으로 로드할 때, 먼저 ClickHouse에 테이블을 생성해야 합니다. ClickHouse에서 테이블 스키마를 최적화하기 위해 Stack Overflow 데이터셋을 사용하는 이 [데이터 모델링 문서](/data-modeling/schema-design#establish-initial-schema)를 참조하십시오.
+
+PostgreSQL과 ClickHouse 간의 데이터 타입은 다를 수 있습니다. 각 테이블 컬럼에 대한 동등한 타입을 설정하기 위해 [Postgres 테이블 함수](/sql-reference/table-functions/postgresql)와 함께 `DESCRIBE` 명령을 사용할 수 있습니다. 다음 명령은 PostgreSQL에서 `posts` 테이블을 설명하며, 사용자 환경에 맞게 수정하십시오:
+
+```sql title="Query"
+DESCRIBE TABLE postgresql(':', 'postgres', 'posts', '', '')
+SETTINGS describe_compact_output = 1
+```
+
+PostgreSQL과 ClickHouse 간의 데이터 타입 매핑 개요에 대해서는 [부록 문서](/migrations/postgresql/appendix#data-type-mappings)를 참조하십시오.
+
+이 스키마를 위한 타입 최적화 과정은 다른 출처에서 데이터가 로드된 경우와 동일합니다. S3의 Parquet를 사용하는 [대체 가이드](/data-modeling/schema-design)에 설명된 프로세스를 적용하면 다음과 같은 스키마가 나옵니다:
+
+```sql title="Query"
+CREATE TABLE stackoverflow.posts
+(
+ `Id` Int32,
+ `PostTypeId` Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime,
+ `Score` Int32,
+ `ViewCount` UInt32,
+ `Body` String,
+ `OwnerUserId` Int32,
+ `OwnerDisplayName` String,
+ `LastEditorUserId` Int32,
+ `LastEditorDisplayName` String,
+ `LastEditDate` DateTime,
+ `LastActivityDate` DateTime,
+ `Title` String,
+ `Tags` String,
+ `AnswerCount` UInt16,
+ `CommentCount` UInt8,
+ `FavoriteCount` UInt8,
+ `ContentLicense`LowCardinality(String),
+ `ParentId` String,
+ `CommunityOwnedDate` DateTime,
+ `ClosedDate` DateTime
+)
+ENGINE = MergeTree
+ORDER BY tuple()
+COMMENT 'Optimized types'
+```
+
+우리는 간단한 `INSERT INTO SELECT`를 사용하여 PostgresSQL에서 데이터를 읽고 ClickHouse에 삽입하여 이를 채울 수 있습니다:
+
+```sql title="Query"
+INSERT INTO stackoverflow.posts SELECT * FROM postgresql(':', 'postgres', 'posts', '', '')
+0 rows in set. Elapsed: 146.471 sec. Processed 59.82 million rows, 83.82 GB (408.40 thousand rows/s., 572.25 MB/s.)
+```
+
+증분 로드도 그에 따라 예약할 수 있습니다. Postgres 테이블이 오직 삽입만 수신하고 증가하는 id 또는 타임스탬프가 존재하는 경우, 위의 테이블 함수 접근 방식을 사용하여 증분을 로드할 수 있습니다. 즉, `SELECT`에 `WHERE` 절을 적용할 수 있습니다. 이 접근 방식은 업데이트된 동일한 컬럼을 보장할 경우 업데이트를 지원하는 데에도 사용될 수 있습니다. 하지만 삭제를 지원하려면 완전한 재로드가 필요하며, 테이블이 커짐에 따라 이를 성취하는 것은 어려울 수 있습니다.
+
+우리는 `CreationDate`를 사용하여 초기 로드와 증분 로드를 시연합니다(행이 업데이트될 경우 업데이트된다고 가정합니다).
+
+```sql
+-- initial load
+INSERT INTO stackoverflow.posts SELECT * FROM postgresql('', 'postgres', 'posts', 'postgres', '', 'postgres', 'posts', 'postgres', ' ( SELECT (max(CreationDate) FROM stackoverflow.posts)
+```
+
+> ClickHouse는 `=`, `!=`, `>`, `>=`, `<`, `<=`, 및 IN과 같은 간단한 `WHERE` 절을 PostgreSQL 서버로 푸시합니다. 따라서 변경 세트를 식별하는 데 사용하는 컬럼에 인덱스가 존재하는지 확인하여 증분 로드를 더욱 효율적으로 만들 수 있습니다.
+
+> 쿼리 복제를 사용할 때 UPDATE 작업을 감지하는 가능한 방법 중 하나는 [`XMIN` 시스템 컬럼](https://www.postgresql.org/docs/9.1/ddl-system-columns.html) (트랜잭션 ID)을 수위 표시기로 사용하는 것입니다. 이 컬럼의 변화는 변화의 지표로, 따라서 목적지 테이블에 적용될 수 있습니다. 이러한 접근 방식을 사용하는 사용자는 `XMIN` 값이 랩around 될 수 있고 비교를 위해 전체 테이블 스캔이 필요하며 변경 추적이 더 복잡할 수 있다는 점을 유의해야 합니다.
+
+[2부로 가기](/migrations/postgresql/rewriting-queries)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/01_migration_guide_part1.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/01_migration_guide_part1.md.hash
new file mode 100644
index 00000000000..69273c46952
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/01_migration_guide_part1.md.hash
@@ -0,0 +1 @@
+348ac3e0c6cae337
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/02_migration_guide_part2.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/02_migration_guide_part2.md
new file mode 100644
index 00000000000..9487d99e89b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/02_migration_guide_part2.md
@@ -0,0 +1,277 @@
+---
+'slug': '/migrations/postgresql/rewriting-queries'
+'title': 'PostgreSQL 쿼리 재작성'
+'keywords':
+- 'postgres'
+- 'postgresql'
+- 'rewriting queries'
+'description': 'ClickHouse로 마이그레이션하는 가이드의 2부'
+'sidebar_label': '2부'
+'doc_type': 'guide'
+---
+
+> 이것은 PostgreSQL에서 ClickHouse로 마이그레이션하는 가이드의 **2부**입니다. 실제 예제를 사용하여 실시간 복제(CDC) 접근 방식을 통해 효율적으로 마이그레이션 수행하는 방법을 보여줍니다. 다루는 많은 개념은 PostgreSQL에서 ClickHouse로의 수동 대량 데이터 전송에도 적용될 수 있습니다.
+
+PostgreSQL 설정의 대다수 SQL 쿼리는 ClickHouse에서 수정 없이 실행되며, 더 빠르게 실행될 가능성이 높습니다.
+
+## CDC를 이용한 중복 제거 {#deduplication-cdc}
+
+CDC를 사용하여 실시간 복제를 수행할 때, 업데이트 및 삭제로 인해 중복 행이 발생할 수 있음을 염두에 두십시오. 이를 관리하기 위해 Views 및 Refreshable Materialized Views를 포함한 기술을 사용할 수 있습니다.
+
+최소한의 마찰로 PostgreSQL에서 ClickHouse로 애플리케이션을 마이그레이션하는 방법에 대한 자세한 내용은 이 [가이드](/integrations/clickpipes/postgres/deduplication#query-like-with-postgres)를 참조하십시오.
+
+## ClickHouse에서 쿼리 최적화 {#optimize-queries-in-clickhouse}
+
+최소한의 쿼리 재작성으로 마이그레이션이 가능하지만, ClickHouse의 기능을 활용하여 쿼리를 상당히 단순화하고 쿼리 성능을 더욱 향상시킬 것을 권장합니다.
+
+여기에서 제공하는 예제는 일반적인 쿼리 패턴을 다루며 ClickHouse를 사용하여 이를 최적화하는 방법을 보여줍니다. 이들은 PostgreSQL 및 ClickHouse에서의 동등한 리소스(8코어, 32GiB RAM)에 대한 전체 [Stack Overflow 데이터 집합](/getting-started/example-datasets/stackoverflow) (2024년 4월까지)를 사용합니다.
+
+> 간단함을 위해 아래 쿼리는 데이터 중복 제거 기술 사용을 생략합니다.
+
+> 여기서 Count는 Postgres 데이터가 외래 키의 참조 무결성을 만족하는 행만 포함하고 있기 때문에 약간 다를 것입니다. ClickHouse는 이러한 제약을 부과하지 않으므로 전체 데이터 세트를 가지고 있습니다. 예를 들어, 익명의 사용자도 포함됩니다.
+
+가장 많은 조회수를 기록한 사용자(질문이 10개 이상인 경우):
+
+```sql
+-- ClickHouse
+SELECT OwnerDisplayName, sum(ViewCount) AS total_views
+FROM stackoverflow.posts
+WHERE (PostTypeId = 'Question') AND (OwnerDisplayName != '')
+GROUP BY OwnerDisplayName
+HAVING count() > 10
+ORDER BY total_views DESC
+LIMIT 5
+
+┌─OwnerDisplayName────────┬─total_views─┐
+│ Joan Venge │ 25520387 │
+│ Ray Vega │ 21576470 │
+│ anon │ 19814224 │
+│ Tim │ 19028260 │
+│ John │ 17638812 │
+└─────────────────────────┴─────────────┘
+
+5 rows in set. Elapsed: 0.360 sec. Processed 24.37 million rows, 140.45 MB (67.73 million rows/s., 390.38 MB/s.)
+Peak memory usage: 510.71 MiB.
+```
+
+```sql
+--Postgres
+SELECT OwnerDisplayName, SUM(ViewCount) AS total_views
+FROM public.posts
+WHERE (PostTypeId = 1) AND (OwnerDisplayName != '')
+GROUP BY OwnerDisplayName
+HAVING COUNT(*) > 10
+ORDER BY total_views DESC
+LIMIT 5;
+
+ ownerdisplayname | total_views
+-------------------------+-------------
+ Joan Venge | 25520387
+ Ray Vega | 21576470
+ Tim | 18283579
+ J. Pablo Fernández | 12446818
+ Matt | 12298764
+
+Time: 107620.508 ms (01:47.621)
+```
+
+가장 많은 조회수를 기록한 `tags`:
+
+```sql
+--ClickHouse
+SELECT arrayJoin(arrayFilter(t -> (t != ''), splitByChar('|', Tags))) AS tags,
+ sum(ViewCount) AS views
+FROM posts
+GROUP BY tags
+ORDER BY views DESC
+LIMIT 5
+
+┌─tags───────┬──────views─┐
+│ javascript │ 8190916894 │
+│ python │ 8175132834 │
+│ java │ 7258379211 │
+│ c# │ 5476932513 │
+│ android │ 4258320338 │
+└────────────┴────────────┘
+
+5 rows in set. Elapsed: 0.908 sec. Processed 59.82 million rows, 1.45 GB (65.87 million rows/s., 1.59 GB/s.)
+```
+
+```sql
+--Postgres
+WITH tags_exploded AS (
+ SELECT
+ unnest(string_to_array(Tags, '|')) AS tag,
+ ViewCount
+ FROM public.posts
+),
+filtered_tags AS (
+ SELECT
+ tag,
+ ViewCount
+ FROM tags_exploded
+ WHERE tag <> ''
+)
+SELECT tag AS tags,
+ SUM(ViewCount) AS views
+FROM filtered_tags
+GROUP BY tag
+ORDER BY views DESC
+LIMIT 5;
+
+ tags | views
+------------+------------
+ javascript | 7974880378
+ python | 7972340763
+ java | 7064073461
+ c# | 5308656277
+ android | 4186216900
+(5 rows)
+
+Time: 112508.083 ms (01:52.508)
+```
+
+**집계 함수**
+
+가능한 경우, 사용자는 ClickHouse의 집계 함수를 활용해야 합니다. 아래에서는 [argMax](/sql-reference/aggregate-functions/reference/argmax) 함수를 사용하여 매년 가장 많이 조회된 질문을 계산하는 방법을 보여줍니다.
+
+```sql
+--ClickHouse
+SELECT toYear(CreationDate) AS Year,
+ argMax(Title, ViewCount) AS MostViewedQuestionTitle,
+ max(ViewCount) AS MaxViewCount
+FROM stackoverflow.posts
+WHERE PostTypeId = 'Question'
+GROUP BY Year
+ORDER BY Year ASC
+FORMAT Vertical
+Row 1:
+──────
+Year: 2008
+MostViewedQuestionTitle: How to find the index for a given item in a list?
+MaxViewCount: 6316987
+
+Row 2:
+──────
+Year: 2009
+MostViewedQuestionTitle: How do I undo the most recent local commits in Git?
+MaxViewCount: 13962748
+
+...
+
+Row 16:
+───────
+Year: 2023
+MostViewedQuestionTitle: How do I solve "error: externally-managed-environment" every time I use pip 3?
+MaxViewCount: 506822
+
+Row 17:
+───────
+Year: 2024
+MostViewedQuestionTitle: Warning "Third-party cookie will be blocked. Learn more in the Issues tab"
+MaxViewCount: 66975
+
+17 rows in set. Elapsed: 0.677 sec. Processed 24.37 million rows, 1.86 GB (36.01 million rows/s., 2.75 GB/s.)
+Peak memory usage: 554.31 MiB.
+```
+
+이것은 동등한 Postgres 쿼리보다 훨씬 더 간단하고 (더 빠름)입니다:
+
+```sql
+--Postgres
+WITH yearly_views AS (
+ SELECT
+ EXTRACT(YEAR FROM CreationDate) AS Year,
+ Title,
+ ViewCount,
+ ROW_NUMBER() OVER (PARTITION BY EXTRACT(YEAR FROM CreationDate) ORDER BY ViewCount DESC) AS rn
+ FROM public.posts
+ WHERE PostTypeId = 1
+)
+SELECT
+ Year,
+ Title AS MostViewedQuestionTitle,
+ ViewCount AS MaxViewCount
+FROM yearly_views
+WHERE rn = 1
+ORDER BY Year;
+ year | mostviewedquestiontitle | maxviewcount
+------+-----------------------------------------------------------------------------------------------------------------------+--------------
+ 2008 | How to find the index for a given item in a list? | 6316987
+ 2009 | How do I undo the most recent local commits in Git? | 13962748
+
+...
+
+ 2023 | How do I solve "error: externally-managed-environment" every time I use pip 3? | 506822
+ 2024 | Warning "Third-party cookie will be blocked. Learn more in the Issues tab" | 66975
+(17 rows)
+
+Time: 125822.015 ms (02:05.822)
+```
+
+**조건문 및 배열**
+
+조건문과 배열 함수는 쿼리를 상당히 단순화합니다. 다음 쿼리는 2022년부터 2023년까지 가장 큰 비율 증가를 보인 태그(10000회 이상 발생)를 계산합니다. 다음 ClickHouse 쿼리가 조건문, 배열 함수, HAVING 및 SELECT 절에서 별칭을 재사용할 수 있는 덕분에 짧다는 것을 주목하세요.
+
+```sql
+--ClickHouse
+SELECT arrayJoin(arrayFilter(t -> (t != ''), splitByChar('|', Tags))) AS tag,
+ countIf(toYear(CreationDate) = 2023) AS count_2023,
+ countIf(toYear(CreationDate) = 2022) AS count_2022,
+ ((count_2023 - count_2022) / count_2022) * 100 AS percent_change
+FROM stackoverflow.posts
+WHERE toYear(CreationDate) IN (2022, 2023)
+GROUP BY tag
+HAVING (count_2022 > 10000) AND (count_2023 > 10000)
+ORDER BY percent_change DESC
+LIMIT 5
+
+┌─tag─────────┬─count_2023─┬─count_2022─┬──────percent_change─┐
+│ next.js │ 13788 │ 10520 │ 31.06463878326996 │
+│ spring-boot │ 16573 │ 17721 │ -6.478189718413183 │
+│ .net │ 11458 │ 12968 │ -11.644046884639112 │
+│ azure │ 11996 │ 14049 │ -14.613139725247349 │
+│ docker │ 13885 │ 16877 │ -17.72826924216389 │
+└─────────────┴────────────┴────────────┴─────────────────────┘
+
+5 rows in set. Elapsed: 0.247 sec. Processed 5.08 million rows, 155.73 MB (20.58 million rows/s., 630.61 MB/s.)
+Peak memory usage: 403.04 MiB.
+```
+
+```sql
+--Postgres
+SELECT
+ tag,
+ SUM(CASE WHEN year = 2023 THEN count ELSE 0 END) AS count_2023,
+ SUM(CASE WHEN year = 2022 THEN count ELSE 0 END) AS count_2022,
+ ((SUM(CASE WHEN year = 2023 THEN count ELSE 0 END) - SUM(CASE WHEN year = 2022 THEN count ELSE 0 END))
+ / SUM(CASE WHEN year = 2022 THEN count ELSE 0 END)::float) * 100 AS percent_change
+FROM (
+ SELECT
+ unnest(string_to_array(Tags, '|')) AS tag,
+ EXTRACT(YEAR FROM CreationDate) AS year,
+ COUNT(*) AS count
+ FROM public.posts
+ WHERE EXTRACT(YEAR FROM CreationDate) IN (2022, 2023)
+ AND Tags <> ''
+ GROUP BY tag, year
+) AS yearly_counts
+GROUP BY tag
+HAVING SUM(CASE WHEN year = 2022 THEN count ELSE 0 END) > 10000
+ AND SUM(CASE WHEN year = 2023 THEN count ELSE 0 END) > 10000
+ORDER BY percent_change DESC
+LIMIT 5;
+
+ tag | count_2023 | count_2022 | percent_change
+-------------+------------+------------+---------------------
+ next.js | 13712 | 10370 | 32.22757955641273
+ spring-boot | 16482 | 17474 | -5.677005837243905
+ .net | 11376 | 12750 | -10.776470588235295
+ azure | 11938 | 13966 | -14.520979521695546
+ docker | 13832 | 16701 | -17.178612059158134
+(5 rows)
+
+Time: 116750.131 ms (01:56.750)
+```
+
+[파트 3로 이동하려면 클릭하세요](/migrations/postgresql/data-modeling-techniques)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/02_migration_guide_part2.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/02_migration_guide_part2.md.hash
new file mode 100644
index 00000000000..218600402ee
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/02_migration_guide_part2.md.hash
@@ -0,0 +1 @@
+cf2918e4831a135d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/03_migration_guide_part3.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/03_migration_guide_part3.md
new file mode 100644
index 00000000000..0a2559e759a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/03_migration_guide_part3.md
@@ -0,0 +1,271 @@
+---
+'slug': '/migrations/postgresql/data-modeling-techniques'
+'title': '데이터 모델링 기법'
+'description': 'PostgreSQL에서 ClickHouse로 마이그레이션하는 가이드의 Part 3'
+'keywords':
+- 'postgres'
+- 'postgresql'
+'show_related_blogs': true
+'sidebar_label': 'Part 3'
+'doc_type': 'guide'
+---
+
+import postgres_b_tree from '@site/static/images/migrations/postgres-b-tree.png';
+import postgres_sparse_index from '@site/static/images/migrations/postgres-sparse-index.png';
+import postgres_partitions from '@site/static/images/migrations/postgres-partitions.png';
+import postgres_projections from '@site/static/images/migrations/postgres-projections.png';
+import Image from '@theme/IdealImage';
+
+> 이 글은 PostgreSQL에서 ClickHouse로 마이그레이션하는 방법에 대한 **3부** 가이드입니다. 실용적인 예제를 사용하여 PostgreSQL에서 ClickHouse로 마이그레이션하는 경우 ClickHouse에서 데이터를 모델링하는 방법을 설명합니다.
+
+Postgres에서 마이그레이션하는 사용자에게는 [ClickHouse에서 데이터를 모델링하기 위한 가이드](/data-modeling/schema-design)를 읽을 것을 권장합니다. 이 가이드는 동일한 Stack Overflow 데이터 세트를 사용하고 ClickHouse 기능을 활용한 여러 접근 방식을 탐구합니다.
+
+## ClickHouse의 기본(정렬) 키 {#primary-ordering-keys-in-clickhouse}
+
+OLTP 데이터베이스에서 온 사용자는 ClickHouse에서 해당 개념의 동등한 항목을 자주 찾습니다. ClickHouse가 `PRIMARY KEY` 구문을 지원하는 것을 발견했을 때, 사용자는 소스 OLTP 데이터베이스와 동일한 키를 사용하여 테이블 스키마를 정의하고자 할 수 있습니다. 이는 적절하지 않습니다.
+
+### ClickHouse의 기본 키가 다른 이유는 무엇인가요? {#how-are-clickhouse-primary-keys-different}
+
+OLTP 기본 키를 ClickHouse에서 사용하는 것이 적절하지 않은 이유를 이해하기 위해 사용자는 ClickHouse 인덱싱의 기본 사항을 이해해야 합니다. Postgres를 비교 예제로 사용하지만, 이러한 일반적인 개념은 다른 OLTP 데이터베이스에도 적용됩니다.
+
+- Postgres 기본 키는 정의상 각 행마다 고유합니다. [B-트리 구조](/guides/best-practices/sparse-primary-indexes#an-index-design-for-massive-data-scales)를 사용하면 이 키로 단일 행을 효율적으로 조회할 수 있습니다. ClickHouse는 단일 행 값을 조회하도록 최적화할 수 있지만, 분석 작업 부하는 일반적으로 많은 행에 대해 몇 개의 컬럼을 읽어야 하므로, 필터는 **집계를 수행할 행의 하위 집합**을 식별해야 할 경우가 많습니다.
+- 메모리와 디스크 효율성은 ClickHouse가 자주 사용되는 규모에 필수적입니다. 데이터는 ClickHouse 테이블에 파트라는 청크로 쓰여지며, 백그라운드에서 파트를 병합하기 위한 규칙이 적용됩니다. ClickHouse에서 각 파트에는 고유한 기본 인덱스가 있습니다. 파트가 병합될 때, 병합된 파트의 기본 인덱스도 병합됩니다. Postgres와는 달리, 이러한 인덱스는 각 행에 대해 구축되지 않습니다. 대신, 파트의 기본 인덱스는 행 그룹당 하나의 인덱스 항목을 가집니다. 이 기술을 **스파스 인덱싱**이라고 합니다.
+- **스파스 인덱싱**이 가능한 이유는 ClickHouse가 파트의 행을 지정된 키에 따라 디스크에 정렬하여 저장하기 때문입니다. 단일 행을 직접 찾는 대신(B-트리 기반 인덱스처럼), 스파스 기본 인덱스는 인덱스 항목에 대한 이진 검색을 통해 쿼리에 일치할 가능성이 있는 행 그룹을 빠르게 식별할 수 있습니다. 그러고 나서 잠재적으로 일치할 행 그룹은 ClickHouse 엔진으로 스트리밍되어 일치 항목을 찾습니다. 이 인덱스 설계는 기본 인덱스가 작아지면서 주 메모리로 완전히 적재될 수 있도록 하여, 특히 데이터 분석 사용 사례에서 전형적인 범위 쿼리에 대해 쿼리 실행 시간을 유의미하게 단축할 수 있습니다.
+
+자세한 내용은 [이 심층 가이드](/guides/best-practices/sparse-primary-indexes)를 권장합니다.
+
+
+
+
+
+ClickHouse에서 선택된 키는 인덱스뿐만 아니라 데이터가 디스크에 쓰이는 순서도 결정합니다. 이로 인해 압축 수준에 중대한 영향을 줄 수 있으며, 결과적으로 쿼리 성능에도 영향을 미칠 수 있습니다. 대부분의 컬럼 값이 연속적인 순서로 쓰이도록 하는 정렬 키는 선택된 압축 알고리즘(및 코덱)이 데이터를 보다 효과적으로 압축하도록 도와줍니다.
+
+> 테이블의 모든 컬럼은 지정된 정렬 키의 값에 따라 정렬됩니다. 키 자체에 포함되어 있는지와 관계없이 말입니다. 예를 들어, `CreationDate`가 키로 사용되면 다른 모든 컬럼의 값 순서는 `CreationDate` 컬럼의 값 순서에 대응됩니다. 여러 개의 정렬 키를 지정할 수 있으며, 이는 `SELECT` 쿼리의 `ORDER BY` 절과 동일한 의미로 정렬됩니다.
+
+### 정렬 키 선택하기 {#choosing-an-ordering-key}
+
+정렬 키 선택에 대한 고려 사항과 단계에 대해서는, 게시물 테이블을 예로 들어 [여기서]( /data-modeling/schema-design#choosing-an-ordering-key) 확인하십시오.
+
+CDC를 사용하는 실시간 복제 시에는 추가 제약 조건이 있으니, CDC와 함께 정렬 키를 사용자 정의하는 기술에 대해서는 [이 문서](/integrations/clickpipes/postgres/ordering_keys)를 참조하십시오.
+
+## 파티션 {#partitions}
+
+Postgres 사용자는 큰 데이터베이스의 성능 및 관리성을 향상시키기 위해 테이블을 작은 더 관리 가능한 조각인 파티션으로 나누는 테이블 파티셔닝 개념에 익숙할 것입니다. 이 파티셔닝은 지정된 컬럼(예: 날짜)에서 범위, 정의된 리스트 또는 키 해시를 사용하여 수행할 수 있습니다. 이를 통해 관리자는 특정 기준(예: 날짜 범위 또는 지리적 위치)에 따라 데이터를 구성할 수 있습니다. 파티셔닝은 파티션 프루닝을 통해 데이터 접근 속도를 빠르게 하여 쿼리 성능을 향상시키고, 전체 테이블이 아니라 개별 파티션에서 작업을 수행할 수 있으므로 백업 및 데이터 정리와 같은 유지 관리 작업에도 도움이 됩니다. 또한, 파티셔닝은 PostgreSQL 데이터베이스의 확장성을 크게 향상시키고 여러 파티션에 부하를 분산시킬 수 있습니다.
+
+ClickHouse에서는 테이블을 처음 정의할 때 `PARTITION BY` 절을 통해 파티셔닝이 지정됩니다. 이 절은 SQL 표현식을 포함할 수 있으며, 이 표현식의 결과가 행이 전송되는 파티션을 정의합니다.
+
+
+
+데이터 파트는 디스크에서 각 파티션과 논리적으로 연결되어 있으며, 개별적으로 쿼리할 수 있습니다. 아래 예에서는 `toYear(CreationDate)` 표현식을 사용하여 `posts` 테이블을 연도별로 파티셔닝합니다. 행이 ClickHouse에 삽입될 때 이 표현식은 각 행에 대해 평가되고, 결과 파티션이 존재하면 해당 파티션으로 라우팅됩니다(해당 연도의 첫 번째 행이면 파티션이 생성됨).
+
+```sql
+ CREATE TABLE posts
+(
+ `Id` Int32 CODEC(Delta(4), ZSTD(1)),
+ `PostTypeId` Enum8('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime64(3, 'UTC'),
+...
+ `ClosedDate` DateTime64(3, 'UTC')
+)
+ENGINE = MergeTree
+ORDER BY (PostTypeId, toDate(CreationDate), CreationDate)
+PARTITION BY toYear(CreationDate)
+```
+
+파티셔닝에 대한 전체 설명은 ["테이블 파티션"](/partitions)를 참조하십시오.
+
+### 파티션의 용도 {#applications-of-partitions}
+
+ClickHouse의 파티셔닝은 Postgres와 유사한 용도가 있지만 몇 가지 미세한 차이가 있습니다. 좀 더 구체적으로:
+
+- **데이터 관리** - ClickHouse에서 사용자는 주로 파티셔닝을 데이터 관리 기능으로 간주해야 하며, 쿼리 최적화 기법으로 보지 않아야 합니다. 키에 따라 데이터를 논리적으로 분리함으로써 각 파티션에서 개별적으로 작업할 수 있습니다. 예를 들어 삭제할 수 있습니다. 이를 통해 사용자는 파티션을 이동할 수 있으며, 따라서 하위 집합을 [스토리지 티어](/integrations/s3#storage-tiers) 간에 효율적으로 이동시키거나 데이터를 만료/클러스터에서 효율적으로 삭제할 수 있습니다. 예를 들어, 아래에서는 2008년의 게시물을 삭제합니다.
+
+```sql
+SELECT DISTINCT partition
+FROM system.parts
+WHERE `table` = 'posts'
+
+┌─partition─┐
+│ 2008 │
+│ 2009 │
+│ 2010 │
+│ 2011 │
+│ 2012 │
+│ 2013 │
+│ 2014 │
+│ 2015 │
+│ 2016 │
+│ 2017 │
+│ 2018 │
+│ 2019 │
+│ 2020 │
+│ 2021 │
+│ 2022 │
+│ 2023 │
+│ 2024 │
+└───────────┘
+
+17 rows in set. Elapsed: 0.002 sec.
+
+ALTER TABLE posts
+(DROP PARTITION '2008')
+
+Ok.
+
+0 rows in set. Elapsed: 0.103 sec.
+```
+
+- **쿼리 최적화** - 파티션이 쿼리 성능에 도움을 줄 수 있지만, 이는 액세스 패턴에 따라 크게 달라집니다. 쿼리가 몇 개의 파티션(이상적으로는 하나)만 대상으로 할 경우 성능이 향상될 수 있습니다. 이는 기본 키에 파티셔닝 키가 포함되어 있지 않고 이를 필터링할 때만 유용합니다. 그러나 많은 파티션을 커버해야 하는 쿼리는 파르푸 효과를 위해 성능이 악화될 수 있으며(파티셔닝 결과로 더 많은 파트가 있을 수 때문입니다). 단일 파티션을 타겟팅하는 이점은 해당 파티셔닝 키가 이미 기본 키의 초기 항목인 경우에도 존재감이 미미할 수 있습니다. 파티셔닝은 또한 각 파티션에 있는 값이 고유한 경우 [GROUP BY 쿼리 최적화](/engines/table-engines/mergetree-family/custom-partitioning-key#group-by-optimisation-using-partition-key)에 사용될 수 있습니다. 그러나 일반적으로 사용자는 기본 키가 최적화되어 있는지 확인해야 하며, 액세스 패턴이 특정 예측 가능한 하위 집합에만 접근하는 비상적 경우를 제외하고는 쿼리 최적화 기법으로서의 파티셔닝을 고려해야 합니다. 예를 들어 하루 단위로 파티셔닝하고, 대부분의 쿼리가 마지막 날에 있는 경우가 이에 해당합니다.
+
+### 파티션에 대한 권장 사항 {#recommendations-for-partitions}
+
+사용자는 파티셔닝을 데이터 관리 기법으로 간주해야 합니다. 시계열 데이터를 사용할 때 클러스터에서 데이터를 만료해야 할 경우 이상적입니다. 예를 들어, 가장 오래된 파티션은 [간단히 삭제할 수 있습니다](/sql-reference/statements/alter/partition#drop-partitionpart).
+
+**중요:** 파티셔닝 키 표현이 높은 카디널리티 집합을 초래하지 않도록 해야 합니다. 즉, 100개 이상의 파티션을 생성하는 것은 피해야 합니다. 예를 들어, 클라이언트 식별자 또는 이름과 같은 높은 카디널리티 컬럼으로 데이터를 파티셔닝하지 마십시오. 대신, 클라이언트 식별자나 이름을 ORDER BY 표현식의 첫 번째 컬럼으로 만드십시오.
+
+> 내부적으로 ClickHouse는 [삽입된 데이터에 대해 파트]( /guides/best-practices/sparse-primary-indexes#clickhouse-index-design)를 생성합니다. 데이터가 더 많이 삽입됨에 따라 파트 수가 증가합니다. 쿼리 성능을 저하시킬 수 있는 지나치게 많은 파트를 방지하기 위해, 파트는 백그라운드 비동기 프로세스에서 결합됩니다. 파트 수가 사전 구성된 한도를 초과하면 ClickHouse는 삽입 시 "너무 많은 파트" 오류를 발생시킵니다. 이는 정상적으로 발생해서는 안 되며 ClickHouse가 잘못 구성되거나 잘못 사용될 경우에만 발생합니다. 예를 들어, 많은 소규모 삽입이 이루어질 수 있습니다.
+
+> 파트는 파티션별로 독립적으로 생성되므로, 파티션 수가 증가하면 파트 수가 증가하게 됩니다. 즉, 이것은 파티션 수의 배수입니다. 높은 카디널리티 파티셔닝 키는 따라서 이 오류를 야기할 수 있으며 피해야 합니다.
+
+## 물리화된 뷰vs 프로젝션 {#materialized-views-vs-projections}
+
+Postgres는 단일 테이블에서 여러 인덱스를 생성할 수 있게 하여 다양한 접근 패턴을 위한 최적화를 가능하게 합니다. 이러한 유연성은 관리자가 특정 쿼리 및 운영 요구에 맞게 데이터베이스 성능을 조정할 수 있게 합니다. ClickHouse의 프로젝션 개념은 전적으로 유사하지 않지만 사용자가 테이블에 대해 여러 `ORDER BY` 절을 지정할 수 있게 합니다.
+
+ClickHouse의 [데이터 모델링 문서](/data-modeling/schema-design)에서는 물리화된 뷰를 ClickHouse에서 집계, 행 변환 및 다양한 접근 패턴에 대한 쿼리 최적화를 미리 계산하는 데 어떻게 활용할 수 있는지 설명합니다.
+
+이 중 후자는 물리화된 뷰가 `PostId`에 대해 다른 정렬 키를 가진 대상 테이블로 행을 전송하는 [예시](/materialized-view/incremental-materialized-view#lookup-table)를 제공합니다.
+
+예를 들어, 다음 쿼리를 고려하십시오:
+
+```sql
+SELECT avg(Score)
+FROM comments
+WHERE UserId = 8592047
+
+ ┌──────────avg(Score)─┐
+1. │ 0.18181818181818182 │
+ └─────────────────────┘
+
+1 row in set. Elapsed: 0.040 sec. Processed 90.38 million rows, 361.59 MB (2.25 billion rows/s., 9.01 GB/s.)
+Peak memory usage: 201.93 MiB.
+```
+
+이 쿼리는 `UserId`가 정렬 키가 아니기 때문에 모든 9000만 행을 스캔해야 합니다(확실히 빠르게).
+이전에는 `PostId`에 대한 조회 작업을 수행하는 물리화된 뷰를 사용하여 이 문제를 해결했습니다. 같은 문제는 [프로젝션](/data-modeling/projections)으로 해결할 수 있습니다. 아래 명령은 `ORDER BY user_id`에 대한 프로젝션을 추가합니다.
+
+```sql
+ALTER TABLE comments ADD PROJECTION comments_user_id (
+SELECT * ORDER BY UserId
+)
+
+ALTER TABLE comments MATERIALIZE PROJECTION comments_user_id
+```
+
+먼저 프로젝션을 생성한 다음 이를 물리화해야 한다는 점에 유의하십시오. 이 후자는 데이터를 두 가지 다른 순서로 디스크에 두 번 저장하도록 합니다. 데이터 생성 시에도 프로젝션을 정의할 수 있으며, 아래와 같이 데이터가 삽입되고 유지 관리됩니다.
+
+```sql
+CREATE TABLE comments
+(
+ `Id` UInt32,
+ `PostId` UInt32,
+ `Score` UInt16,
+ `Text` String,
+ `CreationDate` DateTime64(3, 'UTC'),
+ `UserId` Int32,
+ `UserDisplayName` LowCardinality(String),
+ PROJECTION comments_user_id
+ (
+ SELECT *
+ ORDER BY UserId
+ )
+)
+ENGINE = MergeTree
+ORDER BY PostId
+```
+
+`ALTER`를 통해 프로젝션이 생성되면 `MATERIALIZE PROJECTION` 명령이 발행될 때 비동기적으로 생성됩니다. 사용자는 다음 쿼리로 이 작업의 진행 상황을 확인할 수 있으며, `is_done=1`을 기다립니다.
+
+```sql
+SELECT
+ parts_to_do,
+ is_done,
+ latest_fail_reason
+FROM system.mutations
+WHERE (`table` = 'comments') AND (command LIKE '%MATERIALIZE%')
+
+ ┌─parts_to_do─┬─is_done─┬─latest_fail_reason─┐
+1. │ 1 │ 0 │ │
+ └─────────────┴─────────┴────────────────────┘
+
+1 row in set. Elapsed: 0.003 sec.
+```
+
+위의 쿼리를 반복하면 추가 스토리지 비용을 감수하면서 성능이 크게 개선되었음을 확인할 수 있습니다.
+
+```sql
+SELECT avg(Score)
+FROM comments
+WHERE UserId = 8592047
+
+ ┌──────────avg(Score)─┐
+1. │ 0.18181818181818182 │
+ └─────────────────────┘
+
+1 row in set. Elapsed: 0.008 sec. Processed 16.36 thousand rows, 98.17 KB (2.15 million rows/s., 12.92 MB/s.)
+Peak memory usage: 4.06 MiB.
+```
+
+`EXPLAIN` 명령을 사용하여 이 쿼리에서 프로젝션이 사용되었음을 확인할 수도 있습니다:
+
+```sql
+EXPLAIN indexes = 1
+SELECT avg(Score)
+FROM comments
+WHERE UserId = 8592047
+
+ ┌─explain─────────────────────────────────────────────┐
+ 1. │ Expression ((Projection + Before ORDER BY)) │
+ 2. │ Aggregating │
+ 3. │ Filter │
+ 4. │ ReadFromMergeTree (comments_user_id) │
+ 5. │ Indexes: │
+ 6. │ PrimaryKey │
+ 7. │ Keys: │
+ 8. │ UserId │
+ 9. │ Condition: (UserId in [8592047, 8592047]) │
+10. │ Parts: 2/2 │
+11. │ Granules: 2/11360 │
+ └─────────────────────────────────────────────────────┘
+
+11 rows in set. Elapsed: 0.004 sec.
+```
+
+### 프로젝션을 사용할 때 {#when-to-use-projections}
+
+프로젝션은 데이터가 삽입됨에 따라 자동으로 유지 관리되는 매력적인 기능으로 사용자는 단일 테이블로 쿼리를 보낼 수 있으며, 필요한 경우 프로젝션을 활용하여 응답 시간을 단축할 수 있습니다.
+
+
+
+이는 사용자에게 적합한 최적화된 대상 테이블을 선택하거나 필터에 따라 쿼리를 재작성해야 하는 물리화된 뷰와는 대조적입니다. 이는 사용자 애플리케이션에 더 큰 강조를 두고 클라이언트 측의 복잡성을 증가시킵니다.
+
+이러한 장점에도 불구하고, 프로젝션에는 사용자가 인지해야 하는 [고유한 제한 사항](/data-modeling/projections#when-to-use-projections)이 있으므로 신중하게 배포해야 합니다.
+
+다음과 같은 경우에 프로젝션을 사용하는 것이 좋습니다:
+
+- 데이터의 완전한 재정렬이 필요한 경우입니다. 프로젝션의 표현식이 이론적으로는 `GROUP BY`를 사용할 수 있지만, 물리화된 뷰는 집계를 유지하는 데 더 효과적입니다. 또한 쿼리 최적화기는 단순한 재정렬을 사용하는 프로젝션을 활용할 가능성이 더 높습니다. 즉, `SELECT * ORDER BY x`. 사용자는 저장소 공간을 줄이기 위해 이 표현식에서 일부 컬럼을 선택할 수 있습니다.
+- 사용자가 두 번의 데이터 작성을 수반하는 스토리지 비용 증가를 감수할 수 있을 때입니다. 삽입 속도에 미치는 영향을 테스트하고, [스토리지 오버헤드](/data-compression/compression-in-clickhouse)를 평가하십시오.
+
+:::note
+버전 25.5부터 ClickHouse는 프로젝션 내에서 가상 컬럼 `_part_offset`을 지원합니다. 이는 프로젝션을 저장하는 보다 공간 효율적인 방법을 제공합니다.
+
+자세한 내용은 ["프로젝션"](/data-modeling/projections)를 참조하십시오.
+:::
+
+## 비정규화 {#denormalization}
+
+Postgres는 관계형 데이터베이스이므로 데이터 모델은 일반적으로 수백 개의 테이블을 포함하여 상당히 [정규화](https://en.wikipedia.org/wiki/Database_normalization)됩니다. ClickHouse에서는 JOIN 성능을 최적화하기 위해 때때로 비정규화하는 것이 유용할 수 있습니다.
+
+이 [가이드](/data-modeling/denormalization)에서는 ClickHouse에서 Stack Overflow 데이터 세트를 비정규화하는 이점을 보여줍니다.
+
+이로써 Postgres에서 ClickHouse로 마이그레이션하는 사용자에 대한 기본 가이드를 마칩니다. Postgres에서 마이그레이션하는 사용자에게는 [ClickHouse에서 데이터를 모델링하기 위한 가이드](/data-modeling/schema-design)를 읽어 ClickHouse의 고급 기능에 대해 자세히 알아볼 것을 권장합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/03_migration_guide_part3.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/03_migration_guide_part3.md.hash
new file mode 100644
index 00000000000..3c565131b82
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/03_migration_guide_part3.md.hash
@@ -0,0 +1 @@
+d80cc736b9d77113
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/_category_.json
new file mode 100644
index 00000000000..ad514aeb890
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/02_postgres/migration_guide/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Migration guide",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/01_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/01_overview.md
new file mode 100644
index 00000000000..45120f5da4f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/01_overview.md
@@ -0,0 +1,482 @@
+---
+'title': 'BigQuery와 ClickHouse Cloud의 차이'
+'slug': '/migrations/bigquery/biquery-vs-clickhouse-cloud'
+'description': 'BigQuery가 ClickHouse Cloud와 어떻게 다른지'
+'keywords':
+- 'BigQuery'
+'show_related_blogs': true
+'sidebar_label': '개요'
+'doc_type': 'guide'
+---
+
+import bigquery_1 from '@site/static/images/migrations/bigquery-1.png';
+import Image from '@theme/IdealImage';
+
+
+# ClickHouse Cloud와 BigQuery 비교하기
+
+## 리소스 조직 {#resource-organization}
+
+ClickHouse Cloud의 리소스 조직 방식은 [BigQuery의 리소스 계층 구조](https://cloud.google.com/bigquery/docs/resource-hierarchy)와 유사합니다. 아래의 다이어그램을 기반으로 특정 차이점을 설명합니다:
+
+
+
+### 조직 {#organizations}
+
+BigQuery와 유사하게, 조직은 ClickHouse Cloud 리소스 계층 구조의 루트 노드입니다. ClickHouse Cloud 계정에 설정한 첫 번째 사용자는 자동으로 사용자가 소유한 조직에 할당됩니다. 사용자는 추가 사용자들을 조직에 초대할 수 있습니다.
+
+### BigQuery 프로젝트 vs ClickHouse Cloud 서비스 {#bigquery-projects-vs-clickhouse-cloud-services}
+
+조직 내에서 ClickHouse Cloud에 저장된 데이터는 서비스와 연결되어 있기 때문에 BigQuery 프로젝트와 느슨하게 동등한 서비스를 생성할 수 있습니다. ClickHouse Cloud에는 [여러 가지 서비스 유형이 제공됩니다](/cloud/manage/cloud-tiers). 각 ClickHouse Cloud 서비스는 특정 지역에 배치되며 다음을 포함합니다:
+
+1. 컴퓨트 노드 그룹(현재 개발 계층 서비스에는 2 노드, 생산 계층 서비스에는 3 노드). 이 노드는 ClickHouse Cloud가 [수직 및 수평 확장을 지원합니다](/manage/scaling#how-scaling-works-in-clickhouse), 수동 및 자동으로.
+2. 서비스가 모든 데이터를 저장하는 오브젝트 스토리지 폴더.
+3. 서비스에 연결하는 데 사용하는 엔드포인트(또는 ClickHouse Cloud UI 콘솔을 통해 생성된 여러 엔드포인트) - 서비스 URL(예: `https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443`)
+
+### BigQuery 데이터세트 vs ClickHouse Cloud 데이터베이스 {#bigquery-datasets-vs-clickhouse-cloud-databases}
+
+ClickHouse는 논리적으로 테이블을 데이터베이스로 묶습니다. BigQuery 데이터세트와 마찬가지로 ClickHouse 데이터베이스는 테이블 데이터를 조직하고 접근을 제어하는 논리적 컨테이너입니다.
+
+### BigQuery 폴더 {#bigquery-folders}
+
+현재 ClickHouse Cloud에는 BigQuery 폴더에 해당하는 개념이 없습니다.
+
+### BigQuery 슬롯 예약 및 할당량 {#bigquery-slot-reservations-and-quotas}
+
+BigQuery 슬롯 예약처럼 ClickHouse Cloud에서 [수직 및 수평 자동 확장](/manage/scaling#configuring-vertical-auto-scaling)을 구성할 수 있습니다. 수직 자동 확장을 위해 서비스의 컴퓨트 노드의 메모리와 CPU 코어에 대한 최소 및 최대 크기를 설정할 수 있습니다. 그러면 서비스는 필요한 경우 이 범위 내에서 확장됩니다. 이러한 설정은 서비스 초기 생성 흐름 중에도 사용할 수 있습니다. 서비스 내 각 컴퓨트 노드는 동일한 크기입니다. [수평 확장](/manage/scaling#manual-horizontal-scaling)을 통해 서비스 내에서 컴퓨트 노드 수를 변경할 수 있습니다.
+
+게다가, BigQuery 할당량과 유사하게 ClickHouse Cloud는 동시성 제어, 메모리 사용 제한 및 I/O 스케줄링을 제공하여 사용자가 쿼리를 워크로드 클래스에 분리할 수 있도록 합니다. 특정 워크로드 클래스에 대한 공유 자원(CPU 코어, DRAM, 디스크 및 네트워크 I/O)에 제한을 설정함으로써 이러한 쿼리가 다른 중요한 비즈니스 쿼리에 영향을 미치지 않도록 보장합니다. 동시성 제어는 동시 쿼리 수가 많은 시나리오에서 스레드 과다 구독을 방지합니다.
+
+ClickHouse는 서버, 사용자 및 쿼리 수준에서 메모리 할당의 바이트 크기를 추적하여 유연한 메모리 사용 한도를 허용합니다. 메모리 과잉 사용은 쿼리가 보장된 메모리 이상으로 추가적인 여유 메모리를 사용할 수 있도록 하며, 다른 쿼리의 메모리 한도도 보장합니다. 또한 집계, 정렬 및 조인 절에서 메모리 사용량을 제한할 수 있어 메모리 한도가 초과될 경우 외부 알고리즘으로 대체할 수 있습니다.
+
+마지막으로 I/O 스케줄링을 통해 사용자는 최대 대역폭, 비행 요청 및 정책에 따라 워크로드 클래스에 대한 로컬 및 원격 디스크 접근을 제한할 수 있습니다.
+
+### 권한 {#permissions}
+
+ClickHouse Cloud는 두 곳에서 사용자 액세스를 제어합니다. [클라우드 콘솔](/cloud/guides/sql-console/manage-sql-console-role-assignments)과 [데이터베이스](/cloud/security/manage-database-users)입니다. 콘솔 액세스는 [clickhouse.cloud](https://console.clickhouse.cloud) 사용자 인터페이스를 통해 관리됩니다. 데이터베이스 액세스는 데이터베이스 사용자 계정 및 역할을 통해 관리됩니다. 또한 콘솔 사용자에게는 데이터를 통해 콘솔 사용자가 데이터베이스와 상호 작용할 수 있도록 하는 역할을 부여할 수 있습니다. [SQL 콘솔](/integrations/sql-clients/sql-console).
+
+## 데이터 유형 {#data-types}
+
+ClickHouse는 숫자에 대해 더 세밀한 정밀도를 제공합니다. 예를 들어, BigQuery는 [`INT64`, `NUMERIC`, `BIGNUMERIC`, `FLOAT64`](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#numeric_types)와 같은 숫자 유형을 제공합니다. 이러한 유형을 ClickHouse와 대조하면, ClickHouse는 여러 정밀도 유형을 제공하여 소수, 부동 소수점 및 정수에 대해 저장 공간 및 메모리 오버헤드를 최적화할 수 있으므로 더 빠른 쿼리와 낮은 자원 소비로 이어집니다. 아래는 각 BigQuery 유형에 대한 ClickHouse의 동등한 유형을 나열한 표입니다:
+
+| BigQuery | ClickHouse |
+|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [ARRAY](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#array_type) | [Array(t)](/sql-reference/data-types/array) |
+| [NUMERIC](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#decimal_types) | [Decimal(P, S), Decimal32(S), Decimal64(S), Decimal128(S)](/sql-reference/data-types/decimal) |
+| [BIG NUMERIC](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#decimal_types) | [Decimal256(S)](/sql-reference/data-types/decimal) |
+| [BOOL](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#boolean_type) | [Bool](/sql-reference/data-types/boolean) |
+| [BYTES](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#bytes_type) | [FixedString](/sql-reference/data-types/fixedstring) |
+| [DATE](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#date_type) | [Date32](/sql-reference/data-types/date32) (범위가 더 좁음) |
+| [DATETIME](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#datetime_type) | [DateTime](/sql-reference/data-types/datetime), [DateTime64](/sql-reference/data-types/datetime64) (범위가 좁고 더 높은 정밀도) |
+| [FLOAT64](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#floating_point_types) | [Float64](/sql-reference/data-types/float) |
+| [GEOGRAPHY](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#geography_type) | [Geo Data Types](/sql-reference/data-types/float) |
+| [INT64](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#integer_types) | [UInt8, UInt16, UInt32, UInt64, UInt128, UInt256, Int8, Int16, Int32, Int64, Int128, Int256](/sql-reference/data-types/int-uint) |
+| [INTERVAL](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#integer_types) | NA - [표현으로 지원됨](/sql-reference/data-types/special-data-types/interval#usage-remarks) 또는 [함수를 통해](/sql-reference/functions/date-time-functions#addYears) |
+| [JSON](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#json_type) | [JSON](/integrations/data-formats/json/inference) |
+| [STRING](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#string_type) | [String (bytes)](/sql-reference/data-types/string) |
+| [STRUCT](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#constructing_a_struct) | [Tuple](/sql-reference/data-types/tuple), [Nested](/sql-reference/data-types/nested-data-structures/nested) |
+| [TIME](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#time_type) | [DateTime64](/sql-reference/data-types/datetime64) |
+| [TIMESTAMP](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#timestamp_type) | [DateTime64](/sql-reference/data-types/datetime64) |
+
+ClickHouse 유형에 대한 여러 옵션이 제공될 때 데이터의 실제 범위를 고려하고 요구되는 가장 낮은 값을 선택하세요. 또한 추가적인 압축을 위해 [적절한 코덱](https://clickhouse.com/blog/optimize-clickhouse-codecs-compression-schema)의 사용을 고려하세요.
+
+## 쿼리 가속 기술 {#query-acceleration-techniques}
+
+### 기본 키 및 외래 키와 기본 인덱스 {#primary-and-foreign-keys-and-primary-index}
+
+BigQuery에서는 테이블이 [기본 키 및 외래 키 제약 조건](https://cloud.google.com/bigquery/docs/information-schema-table-constraints)을 가질 수 있습니다. 일반적으로 기본 키 및 외래 키는 데이터 무결성을 보장하기 위해 관계형 데이터베이스에서 사용됩니다. 기본 키 값은 일반적으로 각 행마다 고유하며 `NULL`이 아닙니다. 행의 각 외래 키 값은 기본 키 테이블의 기본 키 열에 있어야 하거나 `NULL`이어야 합니다. BigQuery에서는 이러한 제약 조건이 시행되지 않지만, 쿼리 최적화기는 이 정보를 사용하여 쿼리를 더 잘 최적화할 수 있습니다.
+
+ClickHouse에서도 테이블은 기본 키를 가질 수 있습니다. ClickHouse는 기본 키 열 값의 유일성을 강제하지 않습니다. BigQuery와는 달리 ClickHouse에서는 테이블의 데이터가 기본 키 열로 [정렬된](https://guides/best-practices/sparse-primary-indexes#optimal-compression-ratio-of-data-files) 상태로 디스크에 저장됩니다. 쿼리 최적화기는 이 정렬 순서를 사용하여 재정렬을 방지하고, 조인의 메모리 사용량을 최소화하며, 제한 절의 단축 회로를 가능하게 합니다. BigQuery와는 달리 ClickHouse는 기본 키 열 값을 기반으로 [하나의 (스파스) 기본 인덱스](https://guides/best-practices/sparse-primary-indexes#an-index-design-for-massive-data-scales)를 자동으로 생성합니다. 이 인덱스는 기본 키 열에 대한 필터가 포함된 모든 쿼리를 가속화하는 데 사용됩니다. ClickHouse는 현재 외래 키 제약 조건을 지원하지 않습니다.
+
+## 보조 인덱스 (ClickHouse에서만 사용 가능) {#secondary-indexes-only-available-in-clickhouse}
+
+ClickHouse는 테이블의 기본 키 열 값에서 생성된 기본 인덱스 외에도 기본 키에 없는 다른 컬럼에 대한 보조 인덱스를 생성할 수 있습니다. ClickHouse는 각기 다른 쿼리 유형에 적합한 여러 종류의 보조 인덱스를 제공합니다:
+
+- **블룸 필터 인덱스**:
+ - 동등 조건(예: =, IN)이 있는 쿼리를 가속화하는 데 사용됩니다.
+ - 데이터 블록에 값이 존재하는지 여부를 결정하기 위해 확률적 데이터 구조를 사용합니다.
+- **토큰 블룸 필터 인덱스**:
+ - 블룸 필터 인덱스와 유사하지만 토큰화된 문자열에 사용되며 전체 텍스트 검색 쿼리에 적합합니다.
+- **최소-최대 인덱스**:
+ - 각 데이터 파트에 대해 하나의 컬럼의 최소값과 최대값을 유지합니다.
+ - 지정된 범위에 포함되지 않는 데이터 파트를 읽지 않도록 도와줍니다.
+
+## 검색 인덱스 {#search-indexes}
+
+BigQuery의 [검색 인덱스](https://cloud.google.com/bigquery/docs/search-index)와 유사하게, ClickHouse의 [전체 텍스트 인덱스](/engines/table-engines/mergetree-family/invertedindexes)는 문자열 값을 가진 열의 ClickHouse 테이블에 생성될 수 있습니다.
+
+## 벡터 인덱스 {#vector-indexes}
+
+BigQuery는 최근 [벡터 인덱스](https://cloud.google.com/bigquery/docs/vector-index)를 Pre-GA 기능으로 도입했습니다. 마찬가지로 ClickHouse는 벡터 검색 사용 사례를 가속화하기 위한 [인덱스에 대한 실험적 지원](https://engines/table-engines/mergetree-family/annindexes)을 제공합니다.
+
+## 파티셔닝 {#partitioning}
+
+BigQuery와 마찬가지로 ClickHouse는 테이블 파티셔닝을 사용하여 큰 테이블의 성능과 관리 용이성을 향상시킵니다. 테이블은 파티션이라 부르는 더 작고 관리 가능한 조각으로 나뉘어집니다. ClickHouse의 파티셔닝에 대한 자세한 설명은 [여기](https://engines/table-engines/mergetree-family/custom-partitioning-key)에서 확인할 수 있습니다.
+
+## 클러스터링 {#clustering}
+
+클러스터링을 사용하면 BigQuery는 몇 개의 지정된 열의 값을 기반으로 테이블 데이터를 자동으로 정렬하고 최적의 크기의 블록으로 함께 배치합니다. 클러스터링은 쿼리 성능을 향상시키며, BigQuery가 쿼리 실행 비용을 더 잘 추정할 수 있도록 합니다. 클러스터 열을 사용하면 불필요한 데이터 검색을 제거할 수 있습니다.
+
+ClickHouse에서는 데이터가 기본 키 열을 기반으로 [디스크에 자동으로 클러스터링](/guides/best-practices/sparse-primary-indexes#optimal-compression-ratio-of-data-files)되고, 기본 인덱스 데이터 구조를 활용하는 쿼리에 의해 신속하게 찾거나 추적할 수 있는 블록으로 논리적으로 조직됩니다.
+
+## 물리화된 뷰 {#materialized-views}
+
+BigQuery와 ClickHouse 모두 물리화된 뷰를 지원하여 기본 테이블에 대한 변환 쿼리의 결과를 기반으로 미리 계산된 결과를 생성하여 성능과 효율성을 높입니다.
+
+## 물리화된 뷰 쿼리하기 {#querying-materialized-views}
+
+BigQuery 물리화된 뷰는 직접 쿼리할 수 있으며, 최적화기에 의해 기본 테이블에 대한 쿼리를 처리하는 데 사용될 수 있습니다. 기본 테이블에 대한 변경이 물리화된 뷰를 무효화할 수 있는 경우, 데이터는 기본 테이블에서 직접 읽습니다. 기본 테이블에 대한 변경이 물리화된 뷰를 무효화하지 않으면 물리화된 뷰에서 나머지 데이터를 읽고 기본 테이블에서 변경 사항만 읽습니다.
+
+ClickHouse에서는 물리화된 뷰를 오직 직접 쿼리할 수 있습니다. 그러나 ClickHouse의 물리화된 뷰는 기본 테이블에 대한 변경이 있을 경우 5분 이내에 자동으로 새로 고쳐지는 BigQuery와 달리 기본 테이블과 항상 동기화되어 있습니다.
+
+**물리화된 뷰 업데이트**
+
+BigQuery는 기본 테이블에 대해 뷰의 변환 쿼리를 실행하여 물리화된 뷰를 주기적으로 완전히 새로 고칩니다. 새로 고침 사이가 길어질 때에도 BigQuery는 물리화된 뷰의 데이터를 새로운 기본 테이블 데이터와 결합하여 일관된 쿼리 결과를 제공합니다.
+
+ClickHouse에서는 물리화된 뷰가 점진적으로 업데이트됩니다. 이 점진적 업데이트 메커니즘은 높은 확장성과 낮은 컴퓨팅 비용을 제공합니다: 점진적으로 업데이트되는 물리화된 뷰는 기본 테이블에 수십억 또는 수조 행이 포함된 시나리오에 특히 맞춰 설계되었습니다. ClickHouse는 기본 테이블을 반복적으로 쿼리하여 물리화된 뷰를 새로 고치는 대신, 단지 신규 삽입된 기본 테이블 행의 값에서 부분 결과를 계산합니다. 이 부분 결과는 이전에 계산된 부분 결과와 백그라운드에서 점진적으로 병합됩니다. 이로 인해 전체 기본 테이블에서 반복적으로 물리화된 뷰를 새로 고치는 것에 비해 컴퓨팅 비용이 크게 낮아집니다.
+
+## 트랜잭션 {#transactions}
+
+ClickHouse와는 달리 BigQuery는 단일 쿼리 내에서 또는 세션을 사용할 때 여러 쿼리 간의 다중 문장 트랜잭션을 지원합니다. 다중 문장 트랜잭션을 사용하면 한 개 이상의 테이블에서 행을 삽입하거나 삭제하는 등의 변형 작업을 수행하고 변경 내용을 원자적으로 커밋하거나 롤백할 수 있습니다. 다중 문장 트랜잭션은 [ClickHouse의 2024년 로드맵](https://github.com/ClickHouse/ClickHouse/issues/58392)에 포함되어 있습니다.
+
+## 집계 함수 {#aggregate-functions}
+
+BigQuery에 비해 ClickHouse는 훨씬 더 많은 내장 집계 함수를 제공합니다:
+
+- BigQuery는 [18개의 집계 함수](https://cloud.google.com/bigquery/docs/reference/standard-sql/aggregate_functions)와 [4개의 근사 집계 함수](https://cloud.google.com/bigquery/docs/reference/standard-sql/approximate_aggregate_functions)를 제공합니다.
+- ClickHouse는 [150개 이상의 사전 구축된 집계 함수](/sql-reference/aggregate-functions/reference)와 [사전 구축된 집계 함수의 동작을 확장하기 위한 강력한 집계 조합자](/sql-reference/aggregate-functions/combinators)를 제공합니다. 예를 들어, 150개 이상의 사전 구축된 집계 함수를 테이블 행 대신 배열에 적용하려면 [-Array 접미사](/sql-reference/aggregate-functions/combinators#-array)를 호출하면 됩니다. [-Map 접미사](/sql-reference/aggregate-functions/combinators#-map)를 사용하면 지도의 모든 집계 함수를 적용할 수 있습니다. [-ForEach 접미사](/sql-reference/aggregate-functions/combinators#-foreach)를 통해 중첩 배열에 모든 집계 함수를 적용할 수 있습니다.
+
+## 데이터 소스 및 파일 형식 {#data-sources-and-file-formats}
+
+BigQuery와 비교할 때 ClickHouse는 훨씬 더 많은 파일 형식과 데이터 소스를 지원합니다:
+
+- ClickHouse는 모든 데이터 소스에서 90개 이상의 파일 형식으로 데이터를 로드하는 네이티브 지원을 제공합니다.
+- BigQuery는 5개의 파일 형식과 19개의 데이터 소스를 지원합니다.
+
+## SQL 언어 기능 {#sql-language-features}
+
+ClickHouse는 표준 SQL에 많은 확장 및 개선 사항을 제공하여 분석 작업에 더 친숙하도록 제작되어 있습니다. 예를 들어 ClickHouse SQL은 [람다 함수](/sql-reference/functions/overview#arrow-operator-and-lambda) 및 고차 함수를 지원하므로 변환 적용 시 배열을 펼치거나 폭발시킬 필요가 없습니다. 이는 BigQuery와 같은 다른 시스템에 비해 큰 장점입니다.
+
+## 배열 {#arrays}
+
+BigQuery의 8개 배열 함수에 비해 ClickHouse는 다양한 문제를 우아하고 간단하게 모델링하고 해결하기 위한 80개 이상의 [내장 배열 함수](/sql-reference/functions/array-functions)를 제공합니다.
+
+ClickHouse의 일반적인 디자인 패턴은 [`groupArray`](/sql-reference/aggregate-functions/reference/grouparray) 집계 함수를 사용하여 테이블의 특정 행 값을 배열로 (일시적으로) 변환하는 것입니다. 그런 다음 배열 함수들을 사용하여 편리하게 처리할 수 있으며, 결과는 [`arrayJoin`](/sql-reference/functions/array-join) 집계 함수를 통해 개별 테이블 행으로 다시 변환할 수 있습니다.
+
+ClickHouse SQL은 [고차 람다 함수](/sql-reference/functions/overview#arrow-operator-and-lambda)를 지원하므로, 배열을 일시적으로 테이블로 변환하는 대신 고차 내장 배열 함수 중 하나를 단순히 호출하여 여러 고급 배열 작업을 수행할 수 있습니다. 이는 BigQuery에서 [필터링](https://cloud.google.com/bigquery/docs/arrays#filtering_arrays)이나 [압축](https://cloud.google.com/bigquery/docs/arrays#zipping_arrays) 배열이 필요한 경우 자주 요구되는 방법입니다. ClickHouse에서는 이러한 작업이 각각 [arrayFilter](/sql-reference/functions/array-functions#arrayFilter) 및 [arrayZip](/sql-reference/functions/array-functions#arrayZip) 고차 함수의 단순한 함수 호출로 수행됩니다.
+
+다음은 BigQuery에서 ClickHouse로의 배열 작업 매핑입니다:
+
+| BigQuery | ClickHouse |
+|----------|------------|
+| [ARRAY_CONCAT](https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#array_concat) | [arrayConcat](/sql-reference/functions/array-functions#arrayConcat) |
+| [ARRAY_LENGTH](https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#array_length) | [length](/sql-reference/functions/array-functions#length) |
+| [ARRAY_REVERSE](https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#array_reverse) | [arrayReverse](/sql-reference/functions/array-functions#arrayReverse) |
+| [ARRAY_TO_STRING](https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#array_to_string) | [arrayStringConcat](/sql-reference/functions/splitting-merging-functions#arrayStringConcat) |
+| [GENERATE_ARRAY](https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#generate_array) | [range](/sql-reference/functions/array-functions#range) |
+
+**서브쿼리에서 각 행에 대해 하나의 요소로 배열 만들기**
+
+_BigQuery_
+
+[ARRAY 함수](https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#array)
+
+```sql
+SELECT ARRAY
+ (SELECT 1 UNION ALL
+ SELECT 2 UNION ALL
+ SELECT 3) AS new_array;
+
+/*-----------*
+ | new_array |
+ +-----------+
+ | [1, 2, 3] |
+ *-----------*/
+```
+
+_ClickHouse_
+
+[groupArray](/sql-reference/aggregate-functions/reference/grouparray) 집계 함수
+
+```sql
+SELECT groupArray(*) AS new_array
+FROM
+(
+ SELECT 1
+ UNION ALL
+ SELECT 2
+ UNION ALL
+ SELECT 3
+)
+ ┌─new_array─┐
+1. │ [1,2,3] │
+ └───────────┘
+```
+
+**배열을 행 집합으로 변환하기**
+
+_BigQuery_
+
+[`UNNEST`](https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#unnest_operator) 연산자
+
+```sql
+SELECT *
+FROM UNNEST(['foo', 'bar', 'baz', 'qux', 'corge', 'garply', 'waldo', 'fred'])
+ AS element
+WITH OFFSET AS offset
+ORDER BY offset;
+
+/*----------+--------*
+ | element | offset |
+ +----------+--------+
+ | foo | 0 |
+ | bar | 1 |
+ | baz | 2 |
+ | qux | 3 |
+ | corge | 4 |
+ | garply | 5 |
+ | waldo | 6 |
+ | fred | 7 |
+ *----------+--------*/
+```
+
+_ClickHouse_
+
+[ARRAY JOIN](/sql-reference/statements/select/array-join) 절
+
+```sql
+WITH ['foo', 'bar', 'baz', 'qux', 'corge', 'garply', 'waldo', 'fred'] AS values
+SELECT element, num-1 AS offset
+FROM (SELECT values AS element) AS subquery
+ARRAY JOIN element, arrayEnumerate(element) AS num;
+
+/*----------+--------*
+ | element | offset |
+ +----------+--------+
+ | foo | 0 |
+ | bar | 1 |
+ | baz | 2 |
+ | qux | 3 |
+ | corge | 4 |
+ | garply | 5 |
+ | waldo | 6 |
+ | fred | 7 |
+ *----------+--------*/
+```
+
+**날짜 배열 반환하기**
+
+_BigQuery_
+
+[GENERATE_DATE_ARRAY](https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#generate_date_array) 함수
+
+```sql
+SELECT GENERATE_DATE_ARRAY('2016-10-05', '2016-10-08') AS example;
+
+/*--------------------------------------------------*
+ | example |
+ +--------------------------------------------------+
+ | [2016-10-05, 2016-10-06, 2016-10-07, 2016-10-08] |
+ *--------------------------------------------------*/
+```
+
+[range](/sql-reference/functions/array-functions#range) + [arrayMap](/sql-reference/functions/array-functions#arrayMap) 함수
+
+_ClickHouse_
+
+```sql
+SELECT arrayMap(x -> (toDate('2016-10-05') + x), range(toUInt32((toDate('2016-10-08') - toDate('2016-10-05')) + 1))) AS example
+
+ ┌─example───────────────────────────────────────────────┐
+1. │ ['2016-10-05','2016-10-06','2016-10-07','2016-10-08'] │
+ └───────────────────────────────────────────────────────┘
+```
+
+**타임스탬프 배열 반환하기**
+
+_BigQuery_
+
+[GENERATE_TIMESTAMP_ARRAY](https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions#generate_timestamp_array) 함수
+
+```sql
+SELECT GENERATE_TIMESTAMP_ARRAY('2016-10-05 00:00:00', '2016-10-07 00:00:00',
+ INTERVAL 1 DAY) AS timestamp_array;
+
+/*--------------------------------------------------------------------------*
+ | timestamp_array |
+ +--------------------------------------------------------------------------+
+ | [2016-10-05 00:00:00+00, 2016-10-06 00:00:00+00, 2016-10-07 00:00:00+00] |
+ *--------------------------------------------------------------------------*/
+```
+
+_ClickHouse_
+
+[range](/sql-reference/functions/array-functions#range) + [arrayMap](/sql-reference/functions/array-functions#arrayMap) 함수
+
+```sql
+SELECT arrayMap(x -> (toDateTime('2016-10-05 00:00:00') + toIntervalDay(x)), range(dateDiff('day', toDateTime('2016-10-05 00:00:00'), toDateTime('2016-10-07 00:00:00')) + 1)) AS timestamp_array
+
+Query id: b324c11f-655b-479f-9337-f4d34fd02190
+
+ ┌─timestamp_array─────────────────────────────────────────────────────┐
+1. │ ['2016-10-05 00:00:00','2016-10-06 00:00:00','2016-10-07 00:00:00'] │
+ └─────────────────────────────────────────────────────────────────────┘
+```
+
+**배열 필터링**
+
+_BigQuery_
+
+[`UNNEST`](https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#unnest_operator) 연산자를 통해 배열을 일시적으로 테이블로 변환해야 합니다.
+
+```sql
+WITH Sequences AS
+ (SELECT [0, 1, 1, 2, 3, 5] AS some_numbers
+ UNION ALL SELECT [2, 4, 8, 16, 32] AS some_numbers
+ UNION ALL SELECT [5, 10] AS some_numbers)
+SELECT
+ ARRAY(SELECT x * 2
+ FROM UNNEST(some_numbers) AS x
+ WHERE x < 5) AS doubled_less_than_five
+FROM Sequences;
+
+/*------------------------*
+ | doubled_less_than_five |
+ +------------------------+
+ | [0, 2, 2, 4, 6] |
+ | [4, 8] |
+ | [] |
+ *------------------------*/
+```
+
+_ClickHouse_
+
+[arrayFilter](/sql-reference/functions/array-functions#arrayFilter) 함수
+
+```sql
+WITH Sequences AS
+ (
+ SELECT [0, 1, 1, 2, 3, 5] AS some_numbers
+ UNION ALL
+ SELECT [2, 4, 8, 16, 32] AS some_numbers
+ UNION ALL
+ SELECT [5, 10] AS some_numbers
+ )
+SELECT arrayMap(x -> (x * 2), arrayFilter(x -> (x < 5), some_numbers)) AS doubled_less_than_five
+FROM Sequences;
+ ┌─doubled_less_than_five─┐
+1. │ [0,2,2,4,6] │
+ └────────────────────────┘
+ ┌─doubled_less_than_five─┐
+2. │ [] │
+ └────────────────────────┘
+ ┌─doubled_less_than_five─┐
+3. │ [4,8] │
+ └────────────────────────┘
+```
+
+**배열 압축하기**
+
+_BigQuery_
+
+[`UNNEST`](https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#unnest_operator) 연산자를 통해 배열을 일시적으로 테이블로 변환해야 합니다.
+
+```sql
+WITH
+ Combinations AS (
+ SELECT
+ ['a', 'b'] AS letters,
+ [1, 2, 3] AS numbers
+ )
+SELECT
+ ARRAY(
+ SELECT AS STRUCT
+ letters[SAFE_OFFSET(index)] AS letter,
+ numbers[SAFE_OFFSET(index)] AS number
+ FROM Combinations
+ CROSS JOIN
+ UNNEST(
+ GENERATE_ARRAY(
+ 0,
+ LEAST(ARRAY_LENGTH(letters), ARRAY_LENGTH(numbers)) - 1)) AS index
+ ORDER BY index
+ );
+
+/*------------------------------*
+ | pairs |
+ +------------------------------+
+ | [{ letter: "a", number: 1 }, |
+ | { letter: "b", number: 2 }] |
+ *------------------------------*/
+```
+
+_ClickHouse_
+
+[arrayZip](/sql-reference/functions/array-functions#arrayZip) 함수
+
+```sql
+WITH Combinations AS
+ (
+ SELECT
+ ['a', 'b'] AS letters,
+ [1, 2, 3] AS numbers
+ )
+SELECT arrayZip(letters, arrayResize(numbers, length(letters))) AS pairs
+FROM Combinations;
+ ┌─pairs─────────────┐
+1. │ [('a',1),('b',2)] │
+ └───────────────────┘
+```
+
+**배열 집계하기**
+
+_BigQuery_
+
+[`UNNEST`](https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#unnest_operator) 연산자를 통해 배열을 다시 테이블로 변환해야 합니다.
+
+```sql
+WITH Sequences AS
+ (SELECT [0, 1, 1, 2, 3, 5] AS some_numbers
+ UNION ALL SELECT [2, 4, 8, 16, 32] AS some_numbers
+ UNION ALL SELECT [5, 10] AS some_numbers)
+SELECT some_numbers,
+ (SELECT SUM(x)
+ FROM UNNEST(s.some_numbers) AS x) AS sums
+FROM Sequences AS s;
+
+/*--------------------+------*
+ | some_numbers | sums |
+ +--------------------+------+
+ | [0, 1, 1, 2, 3, 5] | 12 |
+ | [2, 4, 8, 16, 32] | 62 |
+ | [5, 10] | 15 |
+ *--------------------+------*/
+```
+
+_ClickHouse_
+
+[arraySum](/sql-reference/functions/array-functions#arraySum), [arrayAvg](/sql-reference/functions/array-functions#arrayAvg) ... 등의 함수, 또는 [arrayReduce](/sql-reference/functions/array-functions#arrayReduce) 함수의 인수로 90개 이상의 기존 집계 함수 이름.
+
+```sql
+WITH Sequences AS
+ (
+ SELECT [0, 1, 1, 2, 3, 5] AS some_numbers
+ UNION ALL
+ SELECT [2, 4, 8, 16, 32] AS some_numbers
+ UNION ALL
+ SELECT [5, 10] AS some_numbers
+ )
+SELECT
+ some_numbers,
+ arraySum(some_numbers) AS sums
+FROM Sequences;
+ ┌─some_numbers──┬─sums─┐
+1. │ [0,1,1,2,3,5] │ 12 │
+ └───────────────┴──────┘
+ ┌─some_numbers──┬─sums─┐
+2. │ [2,4,8,16,32] │ 62 │
+ └───────────────┴──────┘
+ ┌─some_numbers─┬─sums─┐
+3. │ [5,10] │ 15 │
+ └──────────────┴──────┘
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/01_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/01_overview.md.hash
new file mode 100644
index 00000000000..dc490fc5501
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/01_overview.md.hash
@@ -0,0 +1 @@
+eddc2edb2c92d735
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/02_migrating-to-clickhouse-cloud.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/02_migrating-to-clickhouse-cloud.md
new file mode 100644
index 00000000000..5b187ed4e1e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/02_migrating-to-clickhouse-cloud.md
@@ -0,0 +1,532 @@
+---
+'title': 'BigQuery에서 ClickHouse Cloud로 마이그레이션하기'
+'slug': '/migrations/bigquery/migrating-to-clickhouse-cloud'
+'description': 'BigQuery에서 ClickHouse Cloud로 데이터를 마이그레이션하는 방법'
+'keywords':
+- 'BigQuery'
+'show_related_blogs': true
+'sidebar_label': '마이그레이션 가이드'
+'doc_type': 'guide'
+---
+
+import bigquery_2 from '@site/static/images/migrations/bigquery-2.png';
+import bigquery_3 from '@site/static/images/migrations/bigquery-3.png';
+import bigquery_4 from '@site/static/images/migrations/bigquery-4.png';
+import bigquery_5 from '@site/static/images/migrations/bigquery-5.png';
+import bigquery_6 from '@site/static/images/migrations/bigquery-6.png';
+import bigquery_7 from '@site/static/images/migrations/bigquery-7.png';
+import bigquery_8 from '@site/static/images/migrations/bigquery-8.png';
+import bigquery_9 from '@site/static/images/migrations/bigquery-9.png';
+import bigquery_10 from '@site/static/images/migrations/bigquery-10.png';
+import bigquery_11 from '@site/static/images/migrations/bigquery-11.png';
+import bigquery_12 from '@site/static/images/migrations/bigquery-12.png';
+import Image from '@theme/IdealImage';
+
+## Why use ClickHouse Cloud over BigQuery? {#why-use-clickhouse-cloud-over-bigquery}
+
+TLDR: ClickHouse는 현대 데이터 분석을 위해 BigQuery보다 더 빠르고, 저렴하며, 강력하기 때문입니다:
+
+
+
+## Loading data from BigQuery to ClickHouse Cloud {#loading-data-from-bigquery-to-clickhouse-cloud}
+
+### Dataset {#dataset}
+
+BigQuery에서 ClickHouse Cloud로의 전형적인 마이그레이션을 보여주기 위해 예제 데이터셋으로 Stack Overflow 데이터셋을 사용합니다. 이 데이터셋은 2008년부터 2024년 4월까지 Stack Overflow에서 발생한 모든 `post`, `vote`, `user`, `comment`, `badge`를 포함하고 있습니다. 이 데이터에 대한 BigQuery 스키마는 아래에 나타나 있습니다:
+
+
+
+이 데이터셋을 BigQuery 인스턴스에 채우고 마이그레이션 단계를 테스트하고자 하는 사용자에게는 GCS 버킷에 Parquet 형식으로 데이터를 제공하며, BigQuery에서 테이블을 생성하고 로드하는 DDL 명령은 [여기](https://pastila.nl/?003fd86b/2b93b1a2302cfee5ef79fd374e73f431#hVPC52YDsUfXg2eTLrBdbA==)에서 확인할 수 있습니다.
+
+### Migrating data {#migrating-data}
+
+BigQuery와 ClickHouse Cloud 간의 데이터 마이그레이션은 두 가지 주요 작업 유형으로 나뉩니다:
+
+- **초기 대량 로드 및 주기적 업데이트** - 초기 데이터셋을 마이그레이션해야 하며, 정해진 간격(예: 매일)으로 주기적인 업데이트가 필요합니다. 여기서 업데이트는 변경된 행을 다시 전송하여 처리합니다 - 비교할 수 있는 열(예: 날짜)을 사용하여 식별됩니다. 삭제는 데이터셋의 주기적 완전 로드를 통해 처리됩니다.
+- **실시간 복제 또는 CDC** - 초기 데이터셋을 마이그레이션해야 하며, 이 데이터셋의 변경 사항은 ClickHouse에 거의 실시간으로 반영되어야 하며, 몇 초의 지연만 허용됩니다. 이는 실제로 [변경 데이터 캡처(CDC) 프로세스](https://en.wikipedia.org/wiki/Change_data_capture)로, BigQuery의 테이블은 ClickHouse와 동기화되어야 하며, 즉 각 BigQuery 테이블의 삽입, 업데이트 및 삭제는 ClickHouse의 동등한 테이블에 적용되어야 합니다.
+
+#### Bulk loading via Google Cloud Storage (GCS) {#bulk-loading-via-google-cloud-storage-gcs}
+
+BigQuery는 데이터의 Google 객체 저장소(GCS)로의 내보내기를 지원합니다. 우리의 예제 데이터셋에 대해:
+
+1. 7개의 테이블을 GCS로 내보냅니다. 그에 대한 명령은 [여기](https://pastila.nl/?014e1ae9/cb9b07d89e9bb2c56954102fd0c37abd#0Pzj52uPYeu1jG35nmMqRQ==)에서 확인할 수 있습니다.
+
+2. ClickHouse Cloud에 데이터를 가져옵니다. 이를 위해 [gcs 테이블 함수](/sql-reference/table-functions/gcs)를 사용할 수 있습니다. DDL 및 가져오기 쿼리는 [여기](https://pastila.nl/?00531abf/f055a61cc96b1ba1383d618721059976#Wf4Tn43D3VCU5Hx7tbf1Qw==)에서 확인할 수 있습니다. ClickHouse Cloud 인스턴스는 여러 컴퓨트 노드로 구성되어 있기 때문에 `gcs` 테이블 함수 대신 [s3Cluster 테이블 함수](/sql-reference/table-functions/s3Cluster)를 사용하고 있습니다. 이 함수는 gcs 버킷과 함께 작동하며 [ClickHouse Cloud 서비스의 모든 노드를 활용하여](https://clickhouse.com/blog/supercharge-your-clickhouse-data-loads-part1#parallel-servers) 데이터를 병렬로 로드합니다.
+
+
+
+이 접근 방식은 여러 가지 장점이 있습니다:
+
+- BigQuery 내보내기 기능은 데이터 하위 집합을 내보내기 위한 필터를 지원합니다.
+- BigQuery는 [Parquet, Avro, JSON, CSV](https://cloud.google.com/bigquery/docs/exporting-data) 형식으로 내보내기를 지원하며, 여러 [압축 유형](https://cloud.google.com/bigquery/docs/exporting-data)을 지원합니다 - 모든 것은 ClickHouse에서 지원됩니다.
+- GCS는 [객체 생애 주기 관리](https://cloud.google.com/storage/docs/lifecycle)를 지원하며, ClickHouse로 내보내고 가져온 데이터를 지정된 기간 후에 삭제할 수 있습니다.
+- [Google은 하루에 최대 50TB를 무료로 GCS로 내보낼 수 있도록 허용합니다](https://cloud.google.com/bigquery/quotas#export_jobs). 사용자 는 GCS 저장소에 대해서만 요금을 지불합니다.
+- 내보내기는 자동으로 여러 파일을 생성하며, 각 파일의 최대 테이블 데이터 용량은 1GB로 제한됩니다. 이는 ClickHouse에 유리하여 가져오기를 병렬화할 수 있습니다.
+
+다음 예제를 시도하기 전에 사용자는 내보내기 및 가져오기 성능을 극대화하기 위해 [내보내기에 필요한 권한](https://cloud.google.com/bigquery/docs/exporting-data#required_permissions) 및 [지역성 권장 사항](https://cloud.google.com/bigquery/docs/exporting-data#data-locations)을 검토할 것을 권장합니다.
+
+### Real-time replication or CDC via scheduled queries {#real-time-replication-or-cdc-via-scheduled-queries}
+
+변경 데이터 캡처(CDC)는 두 데이터베이스 간에 테이블을 동기화하는 과정입니다. 여기에 실시간으로 업데이트 및 삭제가 처리되어야 하므로 상당히 복잡합니다. 한 가지 접근 방식은 단순히 BigQuery의 [예약 쿼리 기능](https://cloud.google.com/bigquery/docs/scheduling-queries)을 사용하여 주기적으로 내보내기를 예약하는 것입니다. ClickHouse에 데이터가 삽입되는 데 다소 지연이 허용된다면 이 접근 방식은 구현 및 유지 관리가 용이합니다. 예시는 [이 블로그 게시물](https://clickhouse.com/blog/clickhouse-bigquery-migrating-data-for-realtime-queries#using-scheduled-queries)에서 확인할 수 있습니다.
+
+## Designing schemas {#designing-schemas}
+
+Stack Overflow 데이터셋에는 여러 관련 테이블이 포함되어 있습니다. 우리는 먼저 기본 테이블의 마이그레이션에 집중할 것을 권장합니다. 이 테이블은 반드시 가장 큰 테이블일 필요는 없으며, 오히려 가장 많은 분석 쿼리를 받을 것으로 예상되는 테이블입니다. 이는 ClickHouse의 주요 개념에 익숙해질 수 있게 해줍니다. 이 테이블은 추가 테이블이 추가됨에 따라 ClickHouse 기능을 최대한 활용하고 최적의 성능을 얻기 위해 리모델링이 필요할 수 있습니다. 이 모델링 프로세스는 [데이터 모델링 문서](/data-modeling/schema-design#next-data-modeling-techniques)에서 살펴봅니다.
+
+이 원칙을 준수하여, 우리는 주요 `posts` 테이블에 집중합니다. 이에 대한 BigQuery 스키마는 아래에 나타나 있습니다:
+
+```sql
+CREATE TABLE stackoverflow.posts (
+ id INTEGER,
+ posttypeid INTEGER,
+ acceptedanswerid STRING,
+ creationdate TIMESTAMP,
+ score INTEGER,
+ viewcount INTEGER,
+ body STRING,
+ owneruserid INTEGER,
+ ownerdisplayname STRING,
+ lasteditoruserid STRING,
+ lasteditordisplayname STRING,
+ lasteditdate TIMESTAMP,
+ lastactivitydate TIMESTAMP,
+ title STRING,
+ tags STRING,
+ answercount INTEGER,
+ commentcount INTEGER,
+ favoritecount INTEGER,
+ conentlicense STRING,
+ parentid STRING,
+ communityowneddate TIMESTAMP,
+ closeddate TIMESTAMP
+);
+```
+
+### Optimizing types {#optimizing-types}
+
+[여기](https://data-modeling/schema-design)에서 설명한 프로세스를 적용하면 다음과 같은 스키마가 생성됩니다:
+
+```sql
+CREATE TABLE stackoverflow.posts
+(
+ `Id` Int32,
+ `PostTypeId` Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime,
+ `Score` Int32,
+ `ViewCount` UInt32,
+ `Body` String,
+ `OwnerUserId` Int32,
+ `OwnerDisplayName` String,
+ `LastEditorUserId` Int32,
+ `LastEditorDisplayName` String,
+ `LastEditDate` DateTime,
+ `LastActivityDate` DateTime,
+ `Title` String,
+ `Tags` String,
+ `AnswerCount` UInt16,
+ `CommentCount` UInt8,
+ `FavoriteCount` UInt8,
+ `ContentLicense`LowCardinality(String),
+ `ParentId` String,
+ `CommunityOwnedDate` DateTime,
+ `ClosedDate` DateTime
+)
+ENGINE = MergeTree
+ORDER BY tuple()
+COMMENT 'Optimized types'
+```
+
+이 테이블에 데이터를 채우기 위해 간단한 [`INSERT INTO SELECT`](/sql-reference/statements/insert-into)를 사용하여 gcs에서 내보낸 데이터를 읽을 수 있습니다. ClickHouse Cloud에서는 여러 노드에 걸쳐 로딩을 병렬화하기 위해 gcs 호환 [`s3Cluster` 테이블 함수](/sql-reference/table-functions/s3Cluster)도 사용할 수 있습니다:
+
+```sql
+INSERT INTO stackoverflow.posts SELECT * FROM gcs( 'gs://clickhouse-public-datasets/stackoverflow/parquet/posts/*.parquet', NOSIGN);
+```
+
+우리는 새로운 스키마에서 어떤 Nullable도 유지하지 않습니다. 위의 삽입은 이를 해당 유형의 기본값으로 암묵적으로 변환합니다 - 정수의 경우 0, 문자열의 경우 빈 값입니다. ClickHouse는 또한 자동으로 모든 숫자를 대상 정밀도로 변환합니다.
+
+## How are ClickHouse Primary keys different? {#how-are-clickhouse-primary-keys-different}
+
+[여기](https://migrations/bigquery)에서 설명한 대로, BigQuery와 마찬가지로 ClickHouse는 테이블의 기본 키 열 값에 대해 고유성을 강제하지 않습니다.
+
+BigQuery의 클러스터링과 유사하게, ClickHouse 테이블의 데이터는 기본 키 열에 의해 디스크에 정렬되어 저장됩니다. 이 정렬 순서는 쿼리 최적화 프로그램에서 리소팅을 방지하고 조인에 대한 메모리 사용을 최소화하며, 제한 절에 대한 단축 회로를 가능하게 하는 데 사용됩니다. ClickHouse는 기본 키 열 값을 기반으로 [희소 기본 인덱스](https://guides/best-practices/sparse-primary-indexes)를 자동으로 생성합니다. 이 인덱스는 기본 키 열에 필터가 포함된 모든 쿼리를 가속화하는 데 사용됩니다. 구체적으로:
+
+- 메모리와 디스크 효율성은 ClickHouse가 자주 사용되는 규모에 매우 중요합니다. 데이터는 'parts'로 알려진 청크로 ClickHouse 테이블에 기록되며, 백그라운드에서 파트를 병합하는 규칙이 적용됩니다. ClickHouse에서 각 파트는 자체 기본 인덱스를 가지고 있습니다. 파트가 병합될 때, 병합된 파트의 기본 인덱스도 함께 병합됩니다. 이 인덱스는 각 행에 대해 생성되지 않습니다. 대신, 파트의 기본 인덱스는 행 그룹당 하나의 인덱스 항목을 가지고 있습니다 - 이 기술을 희소 인덱싱이라고 합니다.
+- 희소 인덱싱은 ClickHouse가 파트의 행을 지정된 키에 따라 디스크에 순서대로 저장하기 때문에 가능합니다. 개별 행을 직접 찾는 대신 (B-Tree 기반 인덱스처럼), 희소 기본 인덱스는 빠르게 (인덱스 항목에 대한 이진 검색을 통해) 쿼리에 잠재적으로 일치할 수 있는 행 그룹을 식별할 수 있습니다. 발견된 잠재적 일치 행 그룹은 ClickHouse 엔진으로 비슷한 순서로 스트리밍되어 일치를 찾습니다. 이러한 인덱스 설계는 기본 인덱스를 작게 유지할 수 있게 하며(메인 메모리에 완전히 적재 가능) 쿼리 실행 시간을 상당히 단축시킵니다, 특히 데이터 분석 사용 사례에서 일반적인 범위 쿼리에 대해 더욱 그렇습니다. 더 자세한 내용은 [이 심층 가이드](https://guides/best-practices/sparse-primary-indexes)를 권장합니다.
+
+
+
+ClickHouse에서 선택한 기본 키는 인덱스뿐만 아니라 디스크에 데이터가 기록되는 순서도 결정합니다. 이로 인해 압축 수준에 중대한 영향을 미칠 수 있으며, 이는 쿼리 성능에 영향을 미칠 수 있습니다. 대부분의 열 값이 연속적으로 기록되도록 하는 정렬 키는 선택된 압축 알고리즘(및 코덱)이 데이터를 더 효과적으로 압축하도록 합니다.
+
+> 테이블의 모든 열은 지정된 정렬 키의 값에 따라 정렬됩니다. 정렬 키에 포함되지 않은 경우에도 해당합니다. 예를 들어, `CreationDate`를 키로 사용하는 경우, 모든 다른 열의 값 순서는 `CreationDate` 열의 값 순서에 해당합니다. 여러 개의 정렬 키를 지정할 수 있습니다 - 이는 `SELECT` 쿼리의 `ORDER BY` 절과 동일한 의미로 정렬됩니다.
+
+### Choosing an ordering key {#choosing-an-ordering-key}
+
+정렬 키 선택 시 고려사항 및 단계에 대해 posts 테이블을 예로 들어 [여기](https://data-modeling/schema-design#choosing-an-ordering-key)에서 확인하세요.
+
+## Data modeling techniques {#data-modeling-techniques}
+
+BigQuery에서 마이그레이션하는 사용자에게는 [ClickHouse에서 데이터 모델링 가이드](https://data-modeling/schema-design)를 읽어볼 것을 권장합니다. 이 가이드는 동일한 Stack Overflow 데이터셋을 사용하여 ClickHouse 기능을 활용하는 여러 접근 방식을 탐구합니다.
+
+### Partitions {#partitions}
+
+BigQuery 사용자는 테이블을 더 작은 관리 가능한 파트로 나누어 성능과 관리성을 향상시키는 테이블 파티셔닝 개념에 익숙할 것입니다. 이 파티셔닝은 지정된 열(예: 날짜)의 범위, 정의된 목록 또는 키에 대한 해시를 사용하여 수행할 수 있습니다. 이를 통해 관리자는 날짜 범위나 지리적 위치와 같은 특정 기준에 따라 데이터를 구성할 수 있습니다.
+
+파티셔닝은 파티션 프루닝(Partition Pruning)을 통해 더 빠른 데이터 접근을 가능하게 하여 쿼리 성능을 향상시키며, 백업 및 데이터 정리를 포함한 유지 관리 작업을 개선합니다. 개별 파티션에서 작업을 수행할 수 있게 해줍니다. 또한, 파티셔닝은 BigQuery 데이터베이스의 확장성을 크게 향상시켜 여러 파티션에 부하를 분산시킬 수 있습니다.
+
+ClickHouse에서는 테이블이 처음 정의될 때 [`PARTITION BY`](/engines/table-engines/mergetree-family/custom-partitioning-key) 절을 통해 파티셔닝이 지정됩니다. 이 절은 SQL 표현식을 포함할 수 있으며, 이 표현식의 결과는 어떤 파티션으로 행이 전송될지를 정의합니다.
+
+
+
+데이터 파트는 디스크의 각 파티션과 논리적으로 연결되어 있으며, 개별적으로 쿼리될 수 있습니다. 아래의 예에서는 `toYear(CreationDate)` 표현식을 사용하여 posts 테이블을 연도로 파티셔닝합니다. ClickHouse에 행이 삽입되면 이 표현식은 각 행에 대해 평가되며, 그 결과에 따라 새로운 데이터 파트가 해당 파티션의 일부로 라우팅됩니다.
+
+```sql
+CREATE TABLE posts
+(
+ `Id` Int32 CODEC(Delta(4), ZSTD(1)),
+ `PostTypeId` Enum8('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime64(3, 'UTC'),
+...
+ `ClosedDate` DateTime64(3, 'UTC')
+)
+ENGINE = MergeTree
+ORDER BY (PostTypeId, toDate(CreationDate), CreationDate)
+PARTITION BY toYear(CreationDate)
+```
+
+#### Applications {#applications}
+
+ClickHouse의 파티셔닝은 BigQuery와 유사한 응용 프로그램을 가지고 있지만 미세한 차이가 있습니다. 구체적으로:
+
+- **데이터 관리** - ClickHouse에서는 사용자가 주로 파티셔닝을 데이터 관리 기능으로 고려해야 하며, 쿼리 최적화 기법이 아닙니다. 키를 기준으로 데이터를 논리적으로 분리함으로써 각 파티션을 독립적으로 운영할 수 있습니다(예: 삭제). 이를 통해 사용자는 파티션을 이동시키고, 따라서 하위 집합을 [스토리지 계층](/integrations/s3#storage-tiers) 간에 효율적으로 이동할 수 있습니다. 예를 들어, 아래에서는 2008년의 게시물을 삭제합니다:
+
+```sql
+SELECT DISTINCT partition
+FROM system.parts
+WHERE `table` = 'posts'
+
+┌─partition─┐
+│ 2008 │
+│ 2009 │
+│ 2010 │
+│ 2011 │
+│ 2012 │
+│ 2013 │
+│ 2014 │
+│ 2015 │
+│ 2016 │
+│ 2017 │
+│ 2018 │
+│ 2019 │
+│ 2020 │
+│ 2021 │
+│ 2022 │
+│ 2023 │
+│ 2024 │
+└───────────┘
+
+17 rows in set. Elapsed: 0.002 sec.
+
+ALTER TABLE posts
+(DROP PARTITION '2008')
+
+Ok.
+
+0 rows in set. Elapsed: 0.103 sec.
+```
+
+- **쿼리 최적화** - 파티션은 쿼리 성능을 도울 수 있지만, 이는 액세스 패턴에 크게 의존합니다. 쿼리가 몇 개의 파티션(이상적으로는 하나)만을 타겟팅하는 경우 성능이 개선될 수 있습니다. 이는 파티셔닝 키가 기본 키에 포함되지 않고 이를 기반으로 필터링할 때만 일반적으로 유용합니다. 그러나, 많은 파티션을 포함해야 하는 쿼리는 파티셔닝이 없는 경우보다 성능이 저하될 수 있습니다(파티셔닝의 결과로 파트가 더 많을 수 있기 때문입니다). 단일 파티션을 타겟팅하는 이점은 파티셔닝 키가 이미 기본 키의 초기 항목인 경우 그 효과가 미미해질 수 있습니다. 파티셔닝은 또한 각 파티션의 값이 고유한 경우 [GROUP BY 쿼리를 최적화하는 데](https://engines/table-engines/mergetree-family/custom-partitioning-key#group-by-optimisation-using-partition-key) 사용될 수 있습니다. 그러나 일반적으로 사용자는 기본 키가 최적화되었는지 확인해야 하며, 액세스 패턴이 특정 예측 가능한 하위 집합에 대한 경우(예: 일자별 파티셔닝)와 같은 예외적인 경우에만 파티셔닝을 쿼리 최적화 기법으로 고려해야 합니다.
+
+#### Recommendations {#recommendations}
+
+사용자는 파티셔닝을 데이터 관리 기법으로 고려해야 합니다. 주로 시간 시퀀스 데이터로 작업할 때 클러스터에서 데이터를 만료시킬 필요가 있을 때 이상적입니다. 예를 들어, 가장 오래된 파티션을 [단순히 삭제할 수 있습니다](/sql-reference/statements/alter/partition#drop-partitionpart).
+
+중요: 파티셔닝 키 표현이 높은 기수 집합을 생성하지 않도록 해야 합니다. 즉, 100개 이상의 파티션을 만드는 것은 피해야 합니다. 예를 들어, 클라이언트 식별자 또는 이름과 같은 높은 기수 열로 데이터를 파티셔닝하지 마십시오. 대신 클라이언트 식별자나 이름을 `ORDER BY` 표현식의 첫 번째 열로 만듭니다.
+
+> 내부적으로 ClickHouse는 삽입된 데이터에 대해 [parts를 생성합니다](https://guides/best-practices/sparse-primary-indexes#clickhouse-index-design). 더 많은 데이터가 삽입되면 파트의 수가 증가합니다. 쿼리 성능이 저하되지 않도록 과도한 파트 수를 방지하기 위해, 파트는 백그라운드 비동기 프로세스에서 병합됩니다. 파트 수가 [사전 구성된 한도를 초과하면](https://operations/settings/merge-tree-settings#parts_to_throw_insert), ClickHouse는 삽입 시 ["너무 많은 파트" 오류](https://knowledgebase/exception-too-many-parts)를 발생시킵니다. 이는 정상적인 작업 조건에서는 발생하지 않아야 하며, ClickHouse가 잘못 구성되었거나 잘못 사용되었을 때만 발생합니다(예: 너무 많은 소규모 삽입). 파트가 파티션 별로 독립적으로 만들어지므로, 파티션 수가 증가할수록 파트 수는 증가하게 됩니다. 따라서 높은 기수 파티셔닝 키는 이 오류를 유발할 수 있으므로 피해야 합니다.
+
+## Materialized views vs projections {#materialized-views-vs-projections}
+
+ClickHouse의 프로젝션 개념을 통해 사용자는 테이블에 대해 여러 `ORDER BY` 절을 지정할 수 있습니다.
+
+[ClickHouse 데이터 모델링](/data-modeling/schema-design)에서는 물리화된 뷰를 ClickHouse에서 사용하여 집계 항목을 미리 계산하고, 행을 변환하며, 다양한 접근 패턴에 대한 쿼리를 최적화하는 방법을 탐구합니다. 후자의 경우, 우리는 [예시](https://materialized-view/incremental-materialized-view#lookup-table)를 제공하여 물리화된 뷰가 다른 정렬 키와 함께 대상 테이블로 행을 전송하는 방법을 보여줍니다.
+
+예를 들어, 다음 쿼리를 고려해보세요:
+
+```sql
+SELECT avg(Score)
+FROM comments
+WHERE UserId = 8592047
+
+ ┌──────────avg(Score)─┐
+ │ 0.18181818181818182 │
+ └─────────────────────┘
+--highlight-next-line
+1 row in set. Elapsed: 0.040 sec. Processed 90.38 million rows, 361.59 MB (2.25 billion rows/s., 9.01 GB/s.)
+Peak memory usage: 201.93 MiB.
+```
+
+이 쿼리는 모든 90m 행을 스캔해야 하며(빠르게, 비록), `UserId`가 정렬 키가 아닙니다. 이전에 우리는 `PostId`를 조회하는 물리화된 뷰를 사용하여 이 문제를 해결했습니다. 같은 문제는 프로젝션으로도 해결할 수 있습니다. 아래 명령은 `ORDER BY user_id`를 가진 프로젝션을 추가합니다.
+
+```sql
+ALTER TABLE comments ADD PROJECTION comments_user_id (
+SELECT * ORDER BY UserId
+)
+
+ALTER TABLE comments MATERIALIZE PROJECTION comments_user_id
+```
+
+여기서 우리는 먼저 프로젝션을 생성한 다음 물리화해야 합니다. 후자의 명령은 데이터를 두 개의 서로 다른 방식으로 디스크에 두 번 저장하게 만듭니다. 또한, 데이터 생성 시 프로젝션을 정의할 수 있으며 아래와 같이 표시되며 데이터가 삽입되는 대로 자동으로 유지 관리됩니다.
+
+```sql
+CREATE TABLE comments
+(
+ `Id` UInt32,
+ `PostId` UInt32,
+ `Score` UInt16,
+ `Text` String,
+ `CreationDate` DateTime64(3, 'UTC'),
+ `UserId` Int32,
+ `UserDisplayName` LowCardinality(String),
+ --highlight-begin
+ PROJECTION comments_user_id
+ (
+ SELECT *
+ ORDER BY UserId
+ )
+ --highlight-end
+)
+ENGINE = MergeTree
+ORDER BY PostId
+```
+
+프로젝션이 `ALTER` 명령을 통해 생성되는 경우, `MATERIALIZE PROJECTION` 명령이 발행될 때 생성은 비동기입니다. 사용자는 다음 쿼리로 이 작업의 진행 상황을 확인할 수 있으며, `is_done=1`이 될 때까지 기다립니다.
+
+```sql
+SELECT
+ parts_to_do,
+ is_done,
+ latest_fail_reason
+FROM system.mutations
+WHERE (`table` = 'comments') AND (command LIKE '%MATERIALIZE%')
+
+ ┌─parts_to_do─┬─is_done─┬─latest_fail_reason─┐
+1. │ 1 │ 0 │ │
+ └─────────────┴─────────┴────────────────────┘
+
+1 row in set. Elapsed: 0.003 sec.
+```
+
+앞의 쿼리를 반복하면 성능이 추가 저장소를 희생하고 상당히 향상된 것을 확인할 수 있습니다.
+
+```sql
+SELECT avg(Score)
+FROM comments
+WHERE UserId = 8592047
+
+ ┌──────────avg(Score)─┐
+1. │ 0.18181818181818182 │
+ └─────────────────────┘
+--highlight-next-line
+1 row in set. Elapsed: 0.008 sec. Processed 16.36 thousand rows, 98.17 KB (2.15 million rows/s., 12.92 MB/s.)
+Peak memory usage: 4.06 MiB.
+```
+
+[`EXPLAIN` 명령](/sql-reference/statements/explain)을 통해, 이 쿼리를 처리하기 위해 프로젝션이 사용되었음을 확인할 수 있습니다:
+
+```sql
+EXPLAIN indexes = 1
+SELECT avg(Score)
+FROM comments
+WHERE UserId = 8592047
+
+ ┌─explain─────────────────────────────────────────────┐
+ 1. │ Expression ((Projection + Before ORDER BY)) │
+ 2. │ Aggregating │
+ 3. │ Filter │
+ 4. │ ReadFromMergeTree (comments_user_id) │
+ 5. │ Indexes: │
+ 6. │ PrimaryKey │
+ 7. │ Keys: │
+ 8. │ UserId │
+ 9. │ Condition: (UserId in [8592047, 8592047]) │
+10. │ Parts: 2/2 │
+11. │ Granules: 2/11360 │
+ └─────────────────────────────────────────────────────┘
+
+11 rows in set. Elapsed: 0.004 sec.
+```
+
+### When to use projections {#when-to-use-projections}
+
+프로젝션은 데이터가 삽입될 때 자동으로 유지 관리되기 때문에 새로운 사용자에게 매력적인 기능입니다. 또한 쿼리는 가능한 경우 프로젝션이 활용되는 단일 테이블로 전송될 수 있어 응답 시간을 단축시킵니다.
+
+
+
+이것은 사용자가 적절한 최적화된 대상 테이블을 선택하거나 필터에 따라 쿼리를 다시 작성해야 하는 물리화된 뷰와 대조적입니다. 이는 사용자 애플리케이션에 더 큰 강조를 두며 클라이언트 측 복잡성을 증가시킵니다.
+
+하지만 이러한 장점에도 불구하고 프로젝션은 사용자가 알고 있어야 하는 고유한 제한사항이 있으며, 따라서 신중하게 배포해야 합니다. 자세한 내용은 ["물리화된 뷰 대 프로젝션"](/managing-data/materialized-views-versus-projections)를 참조하십시오.
+
+우리는 다음과 같은 경우 프로젝션을 사용하는 것을 권장합니다:
+
+- 데이터의 완전한 재배치가 필요한 경우. 프로젝션의 표현식이 이론적으로 `GROUP BY`를 사용할 수 있지만, 물리화된 뷰는 집계를 유지하는 데 더 효과적입니다. 쿼리 최적화기는 일반적으로 간단한 재배치(즉, `SELECT * ORDER BY x`)를 사용하는 프로젝션을 활용하는 경향이 높습니다. 사용자는 이 표현식에서 컬럼의 하위 집합을 선택하여 저장소 발자국을 줄일 수 있습니다.
+- 사용자가 데이터 두 번 쓰기와 관련된 저장소 발자국 증가 및 오버헤드를 편안하게 여기는 경우. 삽입 속도에 미치는 영향을 테스트하고 [저장소 오버헤드를 평가하십시오](/data-compression/compression-in-clickhouse).
+
+## Rewriting BigQuery queries in ClickHouse {#rewriting-bigquery-queries-in-clickhouse}
+
+다음은 BigQuery와 ClickHouse를 비교하는 예제 쿼리입니다. 이 목록은 ClickHouse 기능을 활용하여 쿼리를 크게 단순화하는 방법을 보여주기 위한 것입니다. 여기의 예시는 전체 Stack Overflow 데이터셋(2024년 4월까지)을 사용합니다.
+
+**가장 많은 조회를 받은 사용자(질문이 10개 이상인):**
+
+_BigQuery_
+
+
+
+_ClickHouse_
+
+```sql
+SELECT
+ OwnerDisplayName,
+ sum(ViewCount) AS total_views
+FROM stackoverflow.posts
+WHERE (PostTypeId = 'Question') AND (OwnerDisplayName != '')
+GROUP BY OwnerDisplayName
+HAVING count() > 10
+ORDER BY total_views DESC
+LIMIT 5
+
+ ┌─OwnerDisplayName─┬─total_views─┐
+1. │ Joan Venge │ 25520387 │
+2. │ Ray Vega │ 21576470 │
+3. │ anon │ 19814224 │
+4. │ Tim │ 19028260 │
+5. │ John │ 17638812 │
+ └──────────────────┴─────────────┘
+
+5 rows in set. Elapsed: 0.076 sec. Processed 24.35 million rows, 140.21 MB (320.82 million rows/s., 1.85 GB/s.)
+Peak memory usage: 323.37 MiB.
+```
+
+**가장 많은 조회를 받은 태그:**
+
+_BigQuery_
+
+
+
+
+
+_ClickHouse_
+
+```sql
+-- ClickHouse
+SELECT
+ arrayJoin(arrayFilter(t -> (t != ''), splitByChar('|', Tags))) AS tags,
+ sum(ViewCount) AS views
+FROM stackoverflow.posts
+GROUP BY tags
+ORDER BY views DESC
+LIMIT 5
+
+ ┌─tags───────┬──────views─┐
+1. │ javascript │ 8190916894 │
+2. │ python │ 8175132834 │
+3. │ java │ 7258379211 │
+4. │ c# │ 5476932513 │
+5. │ android │ 4258320338 │
+ └────────────┴────────────┘
+
+5 rows in set. Elapsed: 0.318 sec. Processed 59.82 million rows, 1.45 GB (188.01 million rows/s., 4.54 GB/s.)
+Peak memory usage: 567.41 MiB.
+```
+
+## Aggregate functions {#aggregate-functions}
+
+가능한 경우 사용자는 ClickHouse 집계 함수를 활용해야 합니다. 아래에서는 [`argMax` 함수](/sql-reference/aggregate-functions/reference/argmax)를 사용하여 매년 가장 많이 조회된 질문을 계산하는 예를 보여줍니다.
+
+_BigQuery_
+
+
+
+
+
+_ClickHouse_
+
+```sql
+-- ClickHouse
+SELECT
+ toYear(CreationDate) AS Year,
+ argMax(Title, ViewCount) AS MostViewedQuestionTitle,
+ max(ViewCount) AS MaxViewCount
+FROM stackoverflow.posts
+WHERE PostTypeId = 'Question'
+GROUP BY Year
+ORDER BY Year ASC
+FORMAT Vertical
+
+Row 1:
+──────
+Year: 2008
+MostViewedQuestionTitle: How to find the index for a given item in a list?
+MaxViewCount: 6316987
+
+Row 2:
+──────
+Year: 2009
+MostViewedQuestionTitle: How do I undo the most recent local commits in Git?
+MaxViewCount: 13962748
+
+...
+
+Row 16:
+───────
+Year: 2023
+MostViewedQuestionTitle: How do I solve "error: externally-managed-environment" every time I use pip 3?
+MaxViewCount: 506822
+
+Row 17:
+───────
+Year: 2024
+MostViewedQuestionTitle: Warning "Third-party cookie will be blocked. Learn more in the Issues tab"
+MaxViewCount: 66975
+
+17 rows in set. Elapsed: 0.225 sec. Processed 24.35 million rows, 1.86 GB (107.99 million rows/s., 8.26 GB/s.)
+Peak memory usage: 377.26 MiB.
+```
+
+## Conditionals and arrays {#conditionals-and-arrays}
+
+조건부 및 배열 함수는 쿼리를 상당히 간단하게 만듭니다. 다음 쿼리는 2022년에서 2023년 사이에 가장 큰 비율 증가를 보인 태그(출현이 10000회 이상)를 계산합니다. 다음 ClickHouse 쿼리가 조건부, 배열 함수, `HAVING` 및 `SELECT` 절에서 별칭을 재사용할 수 있는 능력 덕분에 간결함을 보여줍니다.
+
+_BigQuery_
+
+
+
+_ClickHouse_
+
+```sql
+SELECT
+ arrayJoin(arrayFilter(t -> (t != ''), splitByChar('|', Tags))) AS tag,
+ countIf(toYear(CreationDate) = 2023) AS count_2023,
+ countIf(toYear(CreationDate) = 2022) AS count_2022,
+ ((count_2023 - count_2022) / count_2022) * 100 AS percent_change
+FROM stackoverflow.posts
+WHERE toYear(CreationDate) IN (2022, 2023)
+GROUP BY tag
+HAVING (count_2022 > 10000) AND (count_2023 > 10000)
+ORDER BY percent_change DESC
+LIMIT 5
+
+┌─tag─────────┬─count_2023─┬─count_2022─┬──────percent_change─┐
+│ next.js │ 13788 │ 10520 │ 31.06463878326996 │
+│ spring-boot │ 16573 │ 17721 │ -6.478189718413183 │
+│ .net │ 11458 │ 12968 │ -11.644046884639112 │
+│ azure │ 11996 │ 14049 │ -14.613139725247349 │
+│ docker │ 13885 │ 16877 │ -17.72826924216389 │
+└─────────────┴────────────┴────────────┴─────────────────────┘
+
+5 rows in set. Elapsed: 0.096 sec. Processed 5.08 million rows, 155.73 MB (53.10 million rows/s., 1.63 GB/s.)
+Peak memory usage: 410.37 MiB.
+```
+
+이것으로 BigQuery에서 ClickHouse로 마이그레이션하는 사용자에 대한 기본 가이드를 마칩니다. BigQuery에서 마이그레이션하는 사용자는 고급 ClickHouse 기능에 대해 더 알고 싶다면 [ClickHouse에서 데이터 모델링에 대한 가이드](/data-modeling/schema-design)를 읽어보기를 권장합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/02_migrating-to-clickhouse-cloud.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/02_migrating-to-clickhouse-cloud.md.hash
new file mode 100644
index 00000000000..97f2cb2d25f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/02_migrating-to-clickhouse-cloud.md.hash
@@ -0,0 +1 @@
+70fc47f9883ee418
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/03_loading-data.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/03_loading-data.md
new file mode 100644
index 00000000000..ee552dc70b6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/03_loading-data.md
@@ -0,0 +1,140 @@
+---
+'sidebar_label': '데이터 로드하기'
+'title': 'BigQuery에서 ClickHouse로 데이터 로드하기'
+'slug': '/migrations/bigquery/loading-data'
+'description': 'BigQuery에서 ClickHouse로 데이터를 로드하는 방법'
+'keywords':
+- 'migrate'
+- 'migration'
+- 'migrating'
+- 'data'
+- 'etl'
+- 'elt'
+- 'BigQuery'
+'doc_type': 'guide'
+---
+
+_이 가이드는 ClickHouse Cloud와 자가 호스팅 ClickHouse v23.5+에 호환됩니다._
+
+이 가이드는 [BigQuery](https://cloud.google.com/bigquery)에서 ClickHouse로 데이터를 마이그레이션하는 방법을 보여줍니다.
+
+우리는 먼저 테이블을 [Google의 객체 저장소 (GCS)](https://cloud.google.com/storage)에 내보내고, 그런 다음 해당 데이터를 [ClickHouse Cloud](https://clickhouse.com/cloud)로 가져옵니다. 각 테이블을 BigQuery에서 ClickHouse로 내보내기 위해 이 단계를 반복해야 합니다.
+
+## ClickHouse로 데이터 내보내는 데 얼마나 걸리나요? {#how-long-will-exporting-data-to-clickhouse-take}
+
+BigQuery에서 ClickHouse로 데이터를 내보내는 시간은 데이터셋의 크기에 따라 다릅니다. 예를 들어, 이 가이드를 사용하여 [4TB 공용 이더리움 데이터셋](https://cloud.google.com/blog/products/data-analytics/ethereum-bigquery-public-dataset-smart-contract-analytics)을 BigQuery에서 ClickHouse로 내보내는 데 약 1시간이 걸립니다.
+
+| 테이블 | 행 수 | 내보낸 파일 수 | 데이터 크기 | BigQuery 내보내기 | 슬롯 시간 | ClickHouse 가져오기 |
+| --------------------------------------------------------------------------------------------------- | ----------------- | -------------- | ----------- | ----------------- | ---------------- | ------------------- |
+| [blocks](https://github.com/ClickHouse/examples/blob/main/ethereum/schemas/blocks.md) | 16,569,489 | 73 | 14.53GB | 23 초 | 37 분 | 15.4 초 |
+| [transactions](https://github.com/ClickHouse/examples/blob/main/ethereum/schemas/transactions.md) | 1,864,514,414 | 5169 | 957GB | 1 분 38 초 | 1일 8시간 | 18 분 5 초 |
+| [traces](https://github.com/ClickHouse/examples/blob/main/ethereum/schemas/traces.md) | 6,325,819,306 | 17,985 | 2.896TB | 5 분 46 초 | 5일 19시간 | 34 분 55 초 |
+| [contracts](https://github.com/ClickHouse/examples/blob/main/ethereum/schemas/contracts.md) | 57,225,837 | 350 | 45.35GB | 16 초 | 1 시간 51 분 | 39.4 초 |
+| 합계 | 82.6억 | 23,577 | 3.982TB | 8 분 3 초 | \> 6일 5시간 | 53 분 45 초 |
+
+
+
+## GCS로 테이블 데이터 내보내기 {#1-export-table-data-to-gcs}
+
+이 단계에서는 [BigQuery SQL 작업 공간](https://cloud.google.com/bigquery/docs/bigquery-web-ui)을 활용하여 SQL 명령을 실행합니다. 아래에서 `mytable`이라는 BigQuery 테이블을 GCS 버킷으로 내보내기 위해 [`EXPORT DATA`](https://cloud.google.com/bigquery/docs/reference/standard-sql/other-statements) 문을 사용합니다.
+
+```sql
+DECLARE export_path STRING;
+DECLARE n INT64;
+DECLARE i INT64;
+SET i = 0;
+
+-- We recommend setting n to correspond to x billion rows. So 5 billion rows, n = 5
+SET n = 100;
+
+WHILE i < n DO
+ SET export_path = CONCAT('gs://mybucket/mytable/', i,'-*.parquet');
+ EXPORT DATA
+ OPTIONS (
+ uri = export_path,
+ format = 'PARQUET',
+ overwrite = true
+ )
+ AS (
+ SELECT * FROM mytable WHERE export_id = i
+ );
+ SET i = i + 1;
+END WHILE;
+```
+
+위 쿼리에서 우리는 BigQuery 테이블을 [Parquet 데이터 형식](https://parquet.apache.org/)으로 내보냅니다. `uri` 매개변수에 `*` 문자가 포함되어 있습니다. 이것은 내보내는 데이터가 1GB를 초과할 경우 출력이 여러 파일로 분할되며, 숫자가 증가하는 접미사가 붙도록 합니다.
+
+이 접근 방식에는 여러 가지 이점이 있습니다:
+
+- Google은 하루 최대 50TB를 GCS로 무료로 내보낼 수 있도록 허용합니다. 사용자는 GCS 저장소에 대해서만 비용을 지불합니다.
+- 내보낼 때 여러 파일이 자동으로 생성되며, 각 파일의 최대 크기는 1GB로 제한됩니다. 이는 ClickHouse에 유리하게 작용하여 병렬로 가져오는 것이 가능합니다.
+- Parquet은 컬럼형 형식으로, 본질적으로 압축되어 있으며 BigQuery에서 데이터를 내보내고 ClickHouse에서 쿼리하는 데 더 빠른 교환 형식을 제공합니다.
+
+## GCS에서 ClickHouse로 데이터 가져오기 {#2-importing-data-into-clickhouse-from-gcs}
+
+내보내기가 완료되면, 이 데이터를 ClickHouse 테이블로 가져올 수 있습니다. 아래 명령을 실행하기 위해 [ClickHouse SQL 콘솔](/integrations/sql-clients/sql-console) 또는 [`clickhouse-client`](/interfaces/cli)를 사용할 수 있습니다.
+
+먼저 ClickHouse에서 테이블을 [생성해야 합니다](/sql-reference/statements/create/table):
+
+```sql
+-- If your BigQuery table contains a column of type STRUCT, you must enable this setting
+-- to map that column to a ClickHouse column of type Nested
+SET input_format_parquet_import_nested = 1;
+
+CREATE TABLE default.mytable
+(
+ `timestamp` DateTime64(6),
+ `some_text` String
+)
+ENGINE = MergeTree
+ORDER BY (timestamp);
+```
+
+테이블을 생성한 후에는 클러스터에 여러 ClickHouse 복제본이 있는 경우 내보내기를 빠르게 하기 위해 `parallel_distributed_insert_select` 설정을 활성화합니다. ClickHouse 노드가 하나만 있는 경우 이 단계를 건너뛸 수 있습니다:
+
+```sql
+SET parallel_distributed_insert_select = 1;
+```
+
+마지막으로, [`INSERT INTO SELECT` 명령](/sql-reference/statements/insert-into#inserting-the-results-of-select)을 사용하여 GCS에서 우리의 ClickHouse 테이블로 데이터를 삽입할 수 있습니다. 이 명령은 `SELECT` 쿼리의 결과를 바탕으로 테이블에 데이터를 삽입합니다.
+
+삽입할 데이터를 검색하기 위해 [s3Cluster 함수](/sql-reference/table-functions/s3Cluster)를 사용하여 GCS 버킷에서 데이터를 검색할 수 있습니다. GCS는 [Amazon S3](https://aws.amazon.com/s3/)와 호환됩니다. ClickHouse 노드가 하나만 있는 경우 `s3` 테이블 함수 대신 [s3Cluster 함수](/sql-reference/table-functions/s3)를 사용할 수 있습니다.
+
+```sql
+INSERT INTO mytable
+SELECT
+ timestamp,
+ ifNull(some_text, '') AS some_text
+FROM s3Cluster(
+ 'default',
+ 'https://storage.googleapis.com/mybucket/mytable/*.parquet.gz',
+ '',
+ ''
+);
+```
+
+위 쿼리에서 사용된 `ACCESS_ID`와 `SECRET`은 GCS 버킷에 연결된 [HMAC 키](https://cloud.google.com/storage/docs/authentication/hmackeys)입니다.
+
+:::note Nullable 컬럼을 내보낼 때 `ifNull` 사용
+위 쿼리에서 우리는 `some_text` 컬럼에 대해 기본값을 사용하여 ClickHouse 테이블에 데이터를 삽입하기 위해 [`ifNull` 함수](/sql-reference/functions/functions-for-nulls#ifNull)를 사용합니다. ClickHouse에서 컬럼을 [`Nullable`](/sql-reference/data-types/nullable)로 만들 수 있지만, 이는 성능에 부정적인 영향을 미칠 수 있으므로 권장되지 않습니다.
+
+대안으로, `SET input_format_null_as_default=1`을 사용하면 누락되거나 NULL 값이 해당 컬럼의 기본값으로 교체됩니다. 기본값이 지정되어 있는 경우에 한정됩니다.
+:::
+
+## 내보내기가 성공적으로 되었는지 테스트하기 {#3-testing-successful-data-export}
+
+데이터가 제대로 삽입되었는지 테스트하려면, 새로운 테이블에서 `SELECT` 쿼리를 실행하면 됩니다:
+
+```sql
+SELECT * FROM mytable LIMIT 10;
+```
+
+추가 BigQuery 테이블을 내보내려면, 각 추가 테이블에 대해 위 단계를 반복하면 됩니다.
+
+
+
+## 추가 자료 및 지원 {#further-reading-and-support}
+
+이 가이드 외에도 [ClickHouse를 사용하여 BigQuery를 빠르게 하고 증분 가져오기를 처리하는 방법](https://clickhouse.com/blog/clickhouse-bigquery-migrating-data-for-realtime-queries)에 대한 블로그 게시물도 읽어보시기를 권장합니다.
+
+BigQuery에서 ClickHouse로 데이터를 전송하는 데 문제가 있는 경우, 언제든지 지원을 위해 support@clickhouse.com으로 문의해 주십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/03_loading-data.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/03_loading-data.md.hash
new file mode 100644
index 00000000000..b2c2ecc2b44
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/03_loading-data.md.hash
@@ -0,0 +1 @@
+c630731ca2f98fc5
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/index.md
new file mode 100644
index 00000000000..9c14696eb07
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/index.md
@@ -0,0 +1,19 @@
+---
+'slug': '/migrations/bigquery'
+'title': 'BigQuery'
+'pagination_prev': null
+'pagination_next': null
+'description': 'BigQuery 마이그레이션 섹션의 랜딩 페이지'
+'keywords':
+- 'BigQuery'
+- 'migration'
+'doc_type': 'landing-page'
+---
+
+이 섹션의 문서에서는 BigQuery와 ClickHouse Cloud 간의 유사점과 차이점, 마이그레이션을 수행해야 하는 이유 및 방법에 대해 자세히 알아보세요.
+
+| 페이지 | 설명 |
+|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
+| [BigQuery vs ClickHouse Cloud](/migrations/bigquery/biquery-vs-clickhouse-cloud) | ClickHouse Cloud에서 리소스가 구성되는 방식은 BigQuery의 리소스 계층과 유사합니다. 이 문서에서는 특정 차이점을 설명합니다. |
+| [Migrating from BigQuery to ClickHouse Cloud](/migrations/bigquery/migrating-to-clickhouse-cloud) | BigQuery에서 ClickHouse Cloud로 마이그레이션해야 하는 이유에 대해 알아보세요. |
+| [Loading Data](/migrations/bigquery/loading-data) | BigQuery에서 ClickHouse로 데이터를 마이그레이션하는 방법을 보여주는 가이드입니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/index.md.hash
new file mode 100644
index 00000000000..7b991a2e15b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/03_bigquery/index.md.hash
@@ -0,0 +1 @@
+c987d529f1791379
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/01_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/01_overview.md
new file mode 100644
index 00000000000..787bcb460fa
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/01_overview.md
@@ -0,0 +1,70 @@
+---
+'sidebar_label': '개요'
+'slug': '/migrations/snowflake-overview'
+'description': 'Snowflake에서 ClickHouse로 마이그레이션'
+'keywords':
+- 'Snowflake'
+'title': 'Snowflake에서 ClickHouse로 마이그레이션'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+import snowflake_architecture from '@site/static/images/cloud/onboard/discover/use_cases/snowflake_architecture.png';
+import cloud_architecture from '@site/static/images/cloud/onboard/discover/use_cases/cloud_architecture.png';
+import Image from '@theme/IdealImage';
+
+
+# Snowflake에서 ClickHouse로 마이그레이션
+
+> 이 문서는 Snowflake에서 ClickHouse로 데이터를 마이그레이션하는 방법에 대한 소개를 제공합니다.
+
+Snowflake는 클라우드 기반 데이터 웨어하우스이며, 주로 레거시 온프레미스 데이터 웨어하우징 워크로드를 클라우드로 마이그레이션하는 데 중점을 두고 있습니다. 대규모로 오랜 시간 실행되는 보고서를 실행하는 데 최적화되어 있습니다. 데이터셋이 클라우드로 이동함에 따라 데이터 소유자는 이 데이터를 다른 방식으로 활용할 수 있는 방법을 고민하기 시작하며, 내부 및 외부 사용 사례를 위한 실시간 애플리케이션을 구축하기 위해 이러한 데이터셋을 사용하는 것을 포함합니다. 이 경우 그들은 종종 ClickHouse와 같은 실시간 분석을 위해 최적화된 데이터베이스가 필요하다는 것을 깨닫게 됩니다.
+
+## 비교 {#comparison}
+
+이 섹션에서는 ClickHouse와 Snowflake의 주요 기능을 비교합니다.
+
+### 유사점 {#similarities}
+
+Snowflake는 대량의 데이터를 저장, 처리 및 분석하기 위한 확장 가능하고 효율적인 솔루션을 제공하는 클라우드 기반 데이터 웨어하우징 플랫폼입니다.
+ClickHouse와 마찬가지로 Snowflake는 기존 기술을 기반으로 구축되지 않았지만 자체 SQL 쿼리 엔진과 맞춤형 아키텍처에 의존합니다.
+
+Snowflake의 아키텍처는 공유 스토리지 (shared-disk) 아키텍처와 공용 없음(shared-nothing) 아키텍처의 하이브리드로 설명됩니다. 공유 스토리지 아키텍처는 데이터가 S3와 같은 객체 저장소를 사용하여 모든 컴퓨트 노드에서 액세스할 수 있는 구조입니다. 공용 없음 아키텍처는 각 컴퓨트 노드가 전체 데이터 세트의 일부를 로컬에 저장하여 쿼리에 응답하는 구조입니다. 이론적으로 이는 두 모델의 장점을 모두 제공하는데, 즉 공유 디스크 아키텍처의 간단함과 공용 없음 아키텍처의 확장성을 결합합니다.
+
+이 디자인은 본질적으로 객체 저장소를 기본 저장 매체로 사용하며, 이는 동시 접근 중 거의 무한히 확장 가능하면서 높은 내구성과 확장 가능한 처리량 보장을 제공합니다.
+
+아래 이미지는 [docs.snowflake.com](https://docs.snowflake.com/en/user-guide/intro-key-concepts)에서 제공하는 이 아키텍처를 보여줍니다:
+
+
+
+반대로, 오픈 소스 및 클라우드 호스팅 제품인 ClickHouse는 공유 디스크 및 공용 없음 아키텍처 모두에 배포될 수 있습니다. 후자는 자체 관리 배포에 일반적입니다. CPU와 메모리를 쉽게 확장할 수 있도록 하면서, 공용 없음 구성은 데이터 관리의 고전적인 문제 및 데이터 복제의 오버헤드를 도입합니다, 특히 구성원이 변경될 때.
+
+이러한 이유로 ClickHouse Cloud는 Snowflake와 개념적으로 유사한 공유 스토리지 아키텍처를 활용합니다. 데이터는 객체 저장소(단일 복사본)인 S3 또는 GCS에 한 번 저장되어 거의 무한한 저장 용량과 강력한 중복성 보장을 제공합니다. 각 노드는 이 단일 데이터 복사본과 캐시 용도의 로컬 SSD에 액세스할 수 있습니다. 필요에 따라 추가 CPU 및 메모리 자원을 제공하기 위해 노드를 확장할 수도 있습니다. Snowflake와 마찬가지로 S3의 확장성 특성은 클러스터의 현재 노드에 대한 I/O 처리량이 추가 노드를 추가할 때 영향을 받지 않도록 하여 공유 디스크 아키텍처의 고전적인 한계를 해결합니다.
+
+
+
+### 차이점 {#differences}
+
+기본 스토리지 형식과 쿼리 엔진 외에도 이 아키텍처는 몇 가지 미묘한 차이점이 있습니다:
+
+* Snowflake의 컴퓨트 리소스는 [웨어하우스](https://docs.snowflake.com/en/user-guide/warehouses)의 개념을 통해 제공됩니다. 이는 여러 노드로 구성되며, 각 노드는 정해진 크기를 가집니다. Snowflake는 자사의 웨어하우스의 구체적인 아키텍처를 공개하지 않지만, 일반적으로 [이해되는](https://select.dev/posts/snowflake-warehouse-sizing) 바에 따르면 각 노드는 8 vCPU, 16GiB, 200GB의 로컬 스토리지를 갖습니다(캐시 용도로). 노드의 수는 티셔츠 크기(예: x-small은 1개, small은 2개, medium은 4개, large는 8개 등)에 따라 다릅니다. 이러한 웨어하우스는 데이터와 독립적이며, 객체 스토리지에 저장된 모든 데이터베이스를 쿼리하는 데 사용할 수 있습니다. 유휴 상태일 때 쿼리 부하에 노출되지 않으면 웨어하우스는 일시 중지되며 쿼리가 수신되면 다시 실행됩니다. 저장 비용은 항상 청구된다고 할 수 있지만, 웨어하우스는 활성 상태일 때만 요금이 부과됩니다.
+
+* ClickHouse Cloud는 로컬 캐시 저장소를 갖는 유사한 노드 원칙을 활용합니다. 티셔츠 크기 대신 사용자는 총 컴퓨트 및 사용 가능한 RAM 값을 가진 서비스를 배포합니다. 이는 쿼리 부하에 따라 투명하게 자동으로 확장됩니다(정의된 한도 내에서) - 각 노드에 대한 자원을 증가(또는 감소)시키거나 총 노드 수를 늘리거나 줄여서 수평적으로 확장됩니다. 현재 ClickHouse Cloud의 노드는 Snowflake의 1이 아닌 1 CPU-to-memory 비율을 가집니다. 느슨한 결합도 가능하지만, 서비스는 현재 데이터에 결합되어 있으며 Snowflake 웨어하우스와는 다릅니다. 노드는 또한 유휴 상태라면 일시 중지되고 쿼리가 도착하면 다시 실행됩니다. 필요한 경우 사용자가 서비스의 크기를 수동으로 조정할 수도 있습니다.
+
+* ClickHouse Cloud의 쿼리 캐시는 현재 노드별로 특정적이며, Snowflake의 경우는 웨어하우스와 독립적인 서비스 계층에서 제공됩니다. 벤치마크에 따르면 ClickHouse Cloud의 노드 캐시는 Snowflake보다 성능이 우수합니다.
+
+* Snowflake와 ClickHouse Cloud는 쿼리 동시성을 증가시키기 위해 서로 다른 접근 방식을 취합니다. Snowflake는 [다중 클러스터 웨어하우스](https://docs.snowflake.com/en/user-guide/warehouses-multicluster#benefits-of-multi-cluster-warehouses)라는 기능을 통해 이를 해결합니다. 이 기능은 사용자가 웨어하우스에 클러스터를 추가할 수 있게 해줍니다. 이로 인해 쿼리 지연 시간이 개선되지는 않지만, 추가적인 병렬 처리를 제공하고 더 많은 쿼리 동시성을 허용합니다. ClickHouse는 수직 또는 수평 확장을 통해 서비스에 더 많은 메모리와 CPU를 추가하여 이를 달성합니다. 이 블로그에서는 레이턴시에 집중하였으나 이러한 서비스가 높은 동시성에 확장할 수 있는 능력을 탐구하지는 않았지만, ClickHouse가 모든 동시성 테스트에서 우수한 성능을 보일 것으로 예상합니다. Snowflake는 기본적으로[웨어하우스에서 동시 쿼리 수를 8로 제한](https://docs.snowflake.com/en/sql-reference/parameters#max-concurrency-level)합니다. 이에 비해 ClickHouse Cloud는 노드당 최대 1000개의 쿼리를 실행할 수 있게 합니다.
+
+* Snowflake는 데이터 세트에 대한 컴퓨트 크기를 전환할 수 있는 능력이 있으며, 웨어하우스의 빠른 재개 시간으로 인해 즉석 쿼리에 대한 우수한 경험을 제공합니다. 데이터 웨어하우스 및 데이터 레이크 사용 사례의 경우 이는 다른 시스템에 비해 이점을 제공합니다.
+
+### 실시간 분석 {#real-time-analytics}
+
+공식 [벤치마크](https://benchmark.clickhouse.com/#system=+%E2%98%81w|%EF%B8%8Fr|C%20c|nfe&type=-&machine=-ca2|gl|6ax|6ale|3al&cluster_size=-&opensource=-&tuned=+n&metric=hot&queries=-) 데이터에 따르면, ClickHouse는 다음 영역의 실시간 분석 애플리케이션에서 Snowflake보다 뛰어난 성능을 보여줍니다:
+
+* **쿼리 지연 시간**: Snowflake 쿼리는 데이터를 최적화하기 위해 테이블에 클러스터링이 적용되더라도 더 높은 쿼리 지연 시간을 가집니다. 우리의 테스트에서 Snowflake는 Snowflake 클러스터링 키 또는 ClickHouse 기본 키의 일부인 필터가 적용된 쿼리에서 ClickHouse의 동등한 성능을 달성하기 위해 두 배 이상의 컴퓨트를 요구합니다. Snowflake의 [지속적 쿼리 캐시](https://docs.snowflake.com/en/user-guide/querying-persisted-results)는 이러한 지연 문제를 부분적으로 완화하지만, 필터 기준이 더 다양할 경우에는 효과적이지 않습니다. 이러한 쿼리 캐시의 효과는 기본 데이터가 변경될 때 재편성이 필요하며, 데이터 테이블이 변경될 때 캐시 항목이 무효화됩니다. 우리의 애플리케이션 벤치마크에서 이것이 아니라도, 실제 배포에서는 새로운 최신 데이터를 입력해야 할 필요가 있습니다. ClickHouse의 쿼리 캐시는 노드별로 특정적이며 [트랜잭션 일관성이 없습니다](https://clickhouse.com/blog/introduction-to-the-clickhouse-query-cache-and-design), 이는 [실시간 분석에 더 적합합니다](https://clickhouse.com/blog/introduction-to-the-clickhouse-query-cache-and-design). 사용자는 또한 [쿼리별로 캐시 사용 여부를 조정](https://operations/settings/settings#use_query_cache)하거나 [정확한 크기](https://operations/settings/settings#query_cache_max_size_in_bytes) 및 [쿼리가 캐시되는지 여부](https://operations/settings/settings#enable_writes_to_query_cache) 및 [수동 사용 여부](https://clickhouse.com/blog/introduction-to-the-clickhouse-query-cache-and-design#using-logs-and-settings)에 대해 세밀한 제어를 가질 수 있습니다.
+
+* **낮은 비용**: Snowflake 웨어하우스는 쿼리 비활성 기간이 지나면 일시 중지하도록 구성할 수 있습니다. 일단 일시 중지되면 비용이 발생하지 않습니다. 일반적으로 이 비활성 검사 기간은 [60초로만 줄어들 수 있습니다](https://docs.snowflake.com/en/sql-reference/sql/alter-warehouse). 웨어하우스는 쿼리를 수신하면 자동으로 몇 초 내에 재개됩니다. Snowflake는 웨어하우스가 사용 중일 때만 자원에 대해 요금을 부과하므로, 즉석 쿼리와 같이 종종 유휴 상태에 있는 워크로드에 적합합니다.
+
+ 하지만 많은 실시간 분석 작업은 지속적인 실시간 데이터 수집과 자주 쿼리가 필요하며 비활성에서 이득을 보기 어렵습니다(예: 고객 대면 대시보드). 이는 웨어하우스가 자주 완전히 활성화되고 요금을 발생해야 함을 의미합니다. 이는 비활성 상태에서의 비용-편익과 Snowflake가 응답 상태로 더 빨리 복귀할 수 있는 성능 이점을 무효화합니다. ClickHouse Cloud의 활성 상태에 대한 초당 낮은 비용과 결합될 때, 이번 유형의 워크로드에서 ClickHouse Cloud가 상당히 낮은 총 비용을 제공하게 됩니다.
+
+* **기능 예측 가능 가격**: 자료화 뷰 및 클러스터링(ClickHouse의 ORDER BY에 해당)과 같은 기능은 실시간 분석 사용 사례에서 최고 성능에 도달하기 위해 필요합니다. 이러한 기능은 Snowflake에서 추가 비용이 발생하며, 이는 더 높은 등급이 필요하여 기본 요금이 1.5배 증가하고 예측이 어려운 배경 비용 또한 발생합니다. 예를 들어, 자료화된 뷰는 백그라운드 유지 관리 비용이 있으며, 클러스터링도 마찬가지로 사용 전에 예측하기 어렵습니다. 이에 비해, ClickHouse Cloud에서는 이러한 기능에 대해 추가 비용이 발생하지 않으며, 일반적으로 고삽입 워크로드 사용 사례 외에는 거의 무시할 수 있는 추가 CPU 및 메모리 사용만 발생합니다. 우리의 벤치마크에서 이러한 차이점과 더 낮은 쿼리 지연 시간 및 더 높은 압축률이 결합되어 ClickHouse의 비용을 크게 줄이는 결과를 얻었습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/01_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/01_overview.md.hash
new file mode 100644
index 00000000000..a0ef83b0f3e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/01_overview.md.hash
@@ -0,0 +1 @@
+5397c3fe4e88cb9d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/02_migration_guide.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/02_migration_guide.md
new file mode 100644
index 00000000000..f6e19d48c5d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/02_migration_guide.md
@@ -0,0 +1,115 @@
+---
+'sidebar_label': '마이그레이션 가이드'
+'slug': '/migrations/snowflake'
+'description': 'Snowflake에서 ClickHouse로 마이그레이션'
+'keywords':
+- 'Snowflake'
+'title': 'Snowflake에서 ClickHouse로 마이그레이션'
+'show_related_blogs': false
+'doc_type': 'guide'
+---
+
+import migrate_snowflake_clickhouse from '@site/static/images/migrations/migrate_snowflake_clickhouse.png';
+import Image from '@theme/IdealImage';
+
+
+# Snowflake에서 ClickHouse로 마이그레이션하기
+
+> 이 가이드는 Snowflake에서 ClickHouse로 데이터를 마이그레이션하는 방법을 보여줍니다.
+
+Snowflake와 ClickHouse 간의 데이터 마이그레이션은 S3와 같은 객체 저장소를 전송을 위한 중간 저장소로 사용해야 합니다. 마이그레이션 프로세스는 Snowflake의 `COPY INTO` 명령과 ClickHouse의 `INSERT INTO SELECT` 명령을 사용합니다.
+
+
+
+## Snowflake에서 데이터 내보내기 {#1-exporting-data-from-snowflake}
+
+
+
+Snowflake에서 데이터를 내보내려면 외부 스테이지를 사용해야 하며, 이는 위의 다이어그램에 나와 있습니다.
+
+다음 스키마를 가진 Snowflake 테이블을 내보낸다고 가정해 보겠습니다:
+
+```sql
+CREATE TABLE MYDATASET (
+ timestamp TIMESTAMP,
+ some_text varchar,
+ some_file OBJECT,
+ complex_data VARIANT,
+) DATA_RETENTION_TIME_IN_DAYS = 0;
+```
+
+이 테이블의 데이터를 ClickHouse 데이터베이스로 이동하려면 먼저 이 데이터를 외부 스테이지에 복사해야 합니다. 데이터를 복사할 때는 Parquet를 중간 형식으로 추천하며, 이는 타입 정보를 공유하고, 정밀도를 유지하며, 잘 압축되고, 분석에서 일반적으로 사용되는 중첩 구조를 기본적으로 지원합니다.
+
+아래 예에서 우리는 Snowflake에서 Parquet를 나타내고 원하는 파일 옵션을 가진 이름이 지정된 파일 형식을 생성합니다. 그런 다음 복사된 데이터셋이 포함될 버킷을 지정합니다. 마지막으로 데이터셋을 버킷에 복사합니다.
+
+```sql
+CREATE FILE FORMAT my_parquet_format TYPE = parquet;
+
+-- Create the external stage that specifies the S3 bucket to copy into
+CREATE OR REPLACE STAGE external_stage
+URL='s3://mybucket/mydataset'
+CREDENTIALS=(AWS_KEY_ID='' AWS_SECRET_KEY='')
+FILE_FORMAT = my_parquet_format;
+
+-- Apply "mydataset" prefix to all files and specify a max file size of 150mb
+-- The `header=true` parameter is required to get column names
+COPY INTO @external_stage/mydataset from mydataset max_file_size=157286400 header=true;
+```
+
+약 5TB의 데이터셋을 최대 파일 크기 150MB로 설정하고, 동일한 AWS `us-east-1` 지역에 위치한 2X-Large Snowflake 웨어하우스를 사용할 경우, S3 버킷으로 데이터를 복사하는 데 약 30분이 소요됩니다.
+
+## ClickHouse로 가져오기 {#2-importing-to-clickhouse}
+
+데이터가 중간 객체 저장소에 준비되면, ClickHouse의 [s3 테이블 함수](/sql-reference/table-functions/s3)를 사용하여 데이터를 테이블에 삽입할 수 있습니다. 아래와 같이 진행됩니다.
+
+이 예시는 AWS S3용 [s3 테이블 함수](/sql-reference/table-functions/s3)를 사용하지만, Google Cloud Storage에는 [gcs 테이블 함수](/sql-reference/table-functions/gcs)를, Azure Blob Storage에는 [azureBlobStorage 테이블 함수](/sql-reference/table-functions/azureBlobStorage)를 사용할 수 있습니다.
+
+다음과 같은 목표 테이블 스키마를 가정합니다:
+
+```sql
+CREATE TABLE default.mydataset
+(
+ `timestamp` DateTime64(6),
+ `some_text` String,
+ `some_file` Tuple(filename String, version String),
+ `complex_data` Tuple(name String, description String),
+)
+ENGINE = MergeTree
+ORDER BY (timestamp)
+```
+
+그런 다음 `INSERT INTO SELECT` 명령을 사용하여 S3에서 ClickHouse 테이블로 데이터를 삽입할 수 있습니다:
+
+```sql
+INSERT INTO mydataset
+SELECT
+ timestamp,
+ some_text,
+ JSONExtract(
+ ifNull(some_file, '{}'),
+ 'Tuple(filename String, version String)'
+ ) AS some_file,
+ JSONExtract(
+ ifNull(complex_data, '{}'),
+ 'Tuple(filename String, description String)'
+ ) AS complex_data,
+FROM s3('https://mybucket.s3.amazonaws.com/mydataset/mydataset*.parquet')
+SETTINGS input_format_null_as_default = 1, -- Ensure columns are inserted as default if values are null
+input_format_parquet_case_insensitive_column_matching = 1 -- Column matching between source data and target table should be case insensitive
+```
+
+:::note 중첩 컬럼 구조에 대한 주의
+원래 Snowflake 테이블 스키마의 `VARIANT` 및 `OBJECT` 컬럼은 기본적으로 JSON 문자열로 출력되며, 이를 ClickHouse에 삽입할 때 강제로 형변환해야 합니다.
+
+`some_file`과 같은 중첩 구조는 Snowflake에서 복사 시 JSON 문자열로 변환됩니다. 이 데이터를 가져오려면 ClickHouse에 삽입할 때 이러한 구조를 Tuple로 변환해야 하며, 위에서 설명한 [JSONExtract 함수](/sql-reference/functions/json-functions#JSONExtract)를 사용해야 합니다.
+:::
+
+## 성공적인 데이터 내보내기 테스트 {#3-testing-successful-data-export}
+
+데이터가 올바르게 삽입되었는지 확인하려면 새 테이블에서 `SELECT` 쿼리를 실행하면 됩니다:
+
+```sql
+SELECT * FROM mydataset LIMIT 10;
+```
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/02_migration_guide.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/02_migration_guide.md.hash
new file mode 100644
index 00000000000..5fe730f20d5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/02_migration_guide.md.hash
@@ -0,0 +1 @@
+638bcf587ac97514
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/03_sql_translation_reference.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/03_sql_translation_reference.md
new file mode 100644
index 00000000000..2954096b929
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/03_sql_translation_reference.md
@@ -0,0 +1,66 @@
+---
+'sidebar_label': 'SQL 변환 참조'
+'slug': '/migrations/snowflake-translation-reference'
+'description': 'SQL 변환 참조'
+'keywords':
+- 'Snowflake'
+'title': 'Snowflake에서 ClickHouse로 마이그레이션'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+
+# Snowflake SQL 변환 가이드
+
+## 데이터 타입 {#data-types}
+
+### 숫자 {#numerics}
+
+ClickHouse와 Snowflake 간에 데이터를 이동하는 사용자는 ClickHouse가 숫자 선언에 대해 더 세밀한 정밀도를 제공한다는 점을 즉시 알게 됩니다. 예를 들어, Snowflake는 숫자에 대한 타입인 Number를 제공합니다. 이를 통해 사용자는 정밀도(전체 숫자 수)와 스케일(소수점 오른쪽의 숫자 수)를 최대 38까지 지정해야 합니다. 정수 선언은 Number와 동의어이며, 정밀도와 스케일을 고정으로 정의하여 범위가 동일합니다. 이러한 편리함은 정수의 경우 스케일이 0이기 때문에 정밀도를 수정하는 것이 Snowflake에서 디스크의 데이터 크기에 영향을 미치지 않기 때문입니다 - 마이크로 파티션 수준에서 기록 시에 숫자 범위를 위해 필요한 최소 바이트가 사용됩니다. 그러나 스케일은 저장 공간에 영향을 미치며 압축으로 상쇄됩니다. `Float64` 타입은 정밀도가 떨어지는 대신 더 넓은 값 범위를 제공합니다.
+
+이와 대조적으로 ClickHouse는 부동 소수점 및 정수에 대해 여러 개의 부호 있는 및 부호 없는 정밀도를 제공합니다. 이러한 기능을 통해 ClickHouse 사용자는 정수를 위한 필요한 정밀도를 명시적으로 설정하여 저장 및 메모리 오버헤드를 최적화할 수 있습니다. Decimal 타입은 Snowflake의 Number 타입에 해당하며, 76자리의 두 배의 정밀도와 스케일을 제공합니다. 유사한 `Float64` 값 외에도 ClickHouse는 정밀도가 덜 중요한 경우에 사용될 수 있는 `Float32`를 제공합니다.
+
+### 문자열 {#strings}
+
+ClickHouse와 Snowflake는 문자열 데이터 저장에 대해 대조적인 접근 방식을 취합니다. Snowflake의 `VARCHAR`는 유니코드 문자를 UTF-8로 보관하며, 사용자가 최대 길이를 지정할 수 있습니다. 이 길이는 저장 또 는 성능에 영향을 미치지 않으며, 문자열을 저장하는 데 항상 최소 바이트 수가 사용되며, 실제로는 다운스트림 도구에 유용한 제약 조건만 제공합니다. `Text` 및 `NChar`와 같은 다른 타입은 이 타입의 단순한 별칭입니다. 반면 ClickHouse는 모든 [문자열 데이터를 원시 바이트로](/sql-reference/data-types/string) `String` 타입(길이 지정 필요 없음)으로 저장하며, 인코딩을 사용자에게 맡기고, [쿼리 시간 함수](/sql-reference/functions/string-functions#lengthUTF8)를 제공하여 다양한 인코딩을 지원합니다. 이는 독자에게 ["불투명한 데이터 인수"](https://utf8everywhere.org/#cookie)가 왜 필요한지를 설명합니다. 따라서 ClickHouse의 `String`은 그 구현 방식에서 Snowflake의 Binary 타입과 더 유사합니다. [Snowflake](https://docs.snowflake.com/en/sql-reference/collation)와 [ClickHouse](/sql-reference/statements/select/order-by#collation-support) 모두 사용자가 문자열이 정렬되고 비교되는 방식을 오버라이드할 수 있도록 "정렬"을 지원합니다.
+
+### 반구조적 타입 {#semi-structured-data}
+
+Snowflake는 반구조적 데이터에 대해 `VARIANT`, `OBJECT`, `ARRAY` 타입을 지원합니다.
+
+ClickHouse는 이에 상응하는 [`Variant`](/sql-reference/data-types/variant), `Object`(현재는 기본 `JSON` 타입을 선호하여 사용되지 않음) 및 [`Array`](/sql-reference/data-types/array) 타입을 제공합니다. 또한 ClickHouse는 현재 사용되지 않는 `Object('json')` 타입을 대체하는 [`JSON`](/sql-reference/data-types/newjson) 타입을 제공하며, 이는 [기타 기본 JSON 타입과 비교하여](https://jsonbench.com/) 특히 성능이 우수하고 저장 효율적입니다.
+
+ClickHouse는 또한 이름이 지정된 [`Tuple`s](/sql-reference/data-types/tuple)와 [`Nested`](/sql-reference/data-types/nested-data-structures/nested) 타입을 통해 Tuple의 배열을 지원하여 사용자가 중첩된 구조를 명시적으로 매핑할 수 있도록 합니다. 이는 ClickHouse에서 인덱스 정의에서 캐스팅이 필요 없고 사용할 수 있는 중첩된 숫자에 대한 쿼리를 간소화합니다. Snowflake는 사용자에게 외부 객체에 대해 `OBJECT`, `VARIANT`, `ARRAY` 타입을 사용하도록 요구하며 [명시적인 내부 타이핑](https://docs.snowflake.com/en/sql-reference/data-types-semistructured#characteristics-of-an-object)을 허용하지 않는 것과 달리, ClickHouse에서는 모든 계층에서 코덱 및 타입 최적화를 적용할 수 있습니다.
+
+ClickHouse에서는 서브 구조에 코덱과 최적화된 타입도 적용할 수 있습니다. 이는 중첩 구조의 압축이 우수하며 평탄화된 데이터와 비교할 때 동등하게 유지된다는 추가 이점을 제공합니다. 반대로 특정 타입을 서브 구조에 적용할 수 없기 때문에 Snowflake는 [최적 압축을 달성하기 위해 데이터를 평탄화할 것을 권장합니다](https://docs.snowflake.com/en/user-guide/semistructured-considerations#storing-semi-structured-data-in-a-variant-column-vs-flattening-the-nested-structure). Snowflake는 이러한 데이터 타입에 대해 [크기 제한을 부과합니다](https://docs.snowflake.com/en/user-guide/semistructured-considerations#data-size-limitations).
+
+### 타입 참조 {#type-reference}
+
+| Snowflake | ClickHouse | Note |
+|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [`NUMBER`](https://docs.snowflake.com/en/sql-reference/data-types-numeric) | [`Decimal`](/sql-reference/data-types/decimal) | ClickHouse는 Snowflake보다 두 배의 정밀도와 스케일을 지원합니다 - 76 자리 대 38 자리. |
+| [`FLOAT`, `FLOAT4`, `FLOAT8`](https://docs.snowflake.com/en/sql-reference/data-types-numeric#data-types-for-floating-point-numbers) | [`Float32`, `Float64`](/sql-reference/data-types/float) | Snowflake의 모든 부동 소수점 수는 64 비트입니다. |
+| [`VARCHAR`](https://docs.snowflake.com/en/sql-reference/data-types-text#varchar) | [`String`](/sql-reference/data-types/string) | |
+| [`BINARY`](https://docs.snowflake.com/en/sql-reference/data-types-text#binary) | [`String`](/sql-reference/data-types/string) | |
+| [`BOOLEAN`](https://docs.snowflake.com/en/sql-reference/data-types-logical) | [`Bool`](/sql-reference/data-types/boolean) | |
+| [`DATE`](https://docs.snowflake.com/en/sql-reference/data-types-datetime#date) | [`Date`](/sql-reference/data-types/date), [`Date32`](/sql-reference/data-types/date32) | `DATE`는 Snowflake에서 ClickHouse보다 더 넓은 날짜 범위를 제공합니다. 예를 들어, `Date32`의 최소값은 `1900-01-01`이고 `Date`는 `1970-01-01`입니다. ClickHouse의 `Date`는 보다 비용 효율적인(2바이트) 저장소를 제공합니다. |
+| [`TIME(N)`](https://docs.snowflake.com/en/sql-reference/data-types-datetime#time) | 직접적인 동등물은 없지만 [`DateTime`](/sql-reference/data-types/datetime) 및 [`DateTime64(N)`](/sql-reference/data-types/datetime64)로 표현될 수 있습니다. | `DateTime64`는 정밀도의 동일한 개념을 사용합니다. |
+| [`TIMESTAMP`](https://docs.snowflake.com/en/sql-reference/data-types-datetime#timestamp) - [`TIMESTAMP_LTZ`](https://docs.snowflake.com/en/sql-reference/data-types-datetime#timestamp-ltz-timestamp-ntz-timestamp-tz), [`TIMESTAMP_NTZ`](https://docs.snowflake.com/en/sql-reference/data-types-datetime#timestamp-ltz-timestamp-ntz-timestamp-tz), [`TIMESTAMP_TZ`](https://docs.snowflake.com/en/sql-reference/data-types-datetime#timestamp-ltz-timestamp-ntz-timestamp-tz) | [`DateTime`](/sql-reference/data-types/datetime) 및 [`DateTime64`](/sql-reference/data-types/datetime64) | `DateTime` 및 `DateTime64`는 열에 대해 TZ 파라미터를 선택적으로 정의할 수 있습니다. 정의되지 않은 경우 서버의 시간대가 사용됩니다. 또한 클라이언트에 대해 `--use_client_time_zone` 매개변수를 사용할 수 있습니다. |
+| [`VARIANT`](https://docs.snowflake.com/en/sql-reference/data-types-semistructured#variant) | [`JSON`, `Tuple`, `Nested`](/interfaces/formats) | `JSON` 타입은 ClickHouse에서 실험적입니다. 이 타입은 입력 시간에 열 타입을 유추합니다. `Tuple`, `Nested` 및 `Array` 또한 대안으로 명시적 타입 구조를 구축하는 데 사용될 수 있습니다. |
+| [`OBJECT`](https://docs.snowflake.com/en/sql-reference/data-types-semistructured#object) | [`Tuple`, `Map`, `JSON`](/interfaces/formats) | `OBJECT` 및 `Map`은 ClickHouse의 `JSON` 타입과 유사하며, 키는 `String`입니다. ClickHouse는 값이 일관되고 강하게 타입이 정의되도록 요구하는 반면, Snowflake는 `VARIANT`를 사용합니다. 이는 ClickHouse에서 필요한 경우 `Tuple`을 사용하여 계층을 명시적으로 정의하거나 `JSON` 타입에 의존해야 함을 의미합니다. |
+| [`ARRAY`](https://docs.snowflake.com/en/sql-reference/data-types-semistructured#array) | [`Array`](/sql-reference/data-types/array), [`Nested`](/sql-reference/data-types/nested-data-structures/nested) | Snowflake의 `ARRAY`는 요소에 대해 `VARIANT`를 사용합니다 - 슈퍼 타입입니다. 반대로 ClickHouse에서는 이들이 강하게 타입화됩니다. |
+| [`GEOGRAPHY`](https://docs.snowflake.com/en/sql-reference/data-types-geospatial#geography-data-type) | [`Point`, `Ring`, `Polygon`, `MultiPolygon`](/sql-reference/data-types/geo) | Snowflake는 좌표계(WGS 84)를 부과하지만 ClickHouse는 쿼리 시간에 적용합니다. |
+| [`GEOMETRY`](https://docs.snowflake.com/en/sql-reference/data-types-geospatial#geometry-data-type) | [`Point`, `Ring`, `Polygon`, `MultiPolygon`](/sql-reference/data-types/geo) | | |
+
+| ClickHouse 타입 | 설명 |
+|-------------------|------------------------------------------------------------------------------------------------|
+| `IPv4` 및 `IPv6` | IP 특정 타입으로 Snowflake보다 더 효율적인 저장이 가능할 수 있습니다. |
+| `FixedString` | 해시를 위해 유용한 고정 길이의 바이트를 사용할 수 있게 해 줍니다. |
+| `LowCardinality` | 각 타입을 딕셔너리 인코딩할 수 있게 해주며, 카디널리티가 < 100k인 경우에 유용합니다. |
+| `Enum` | 8비트 또는 16비트 범위에서 이름 값의 효율적인 인코딩을 허용합니다. |
+| `UUID` | UUID를 효율적으로 저장하기 위한 타입입니다. |
+| `Array(Float32)` | 벡터를 Float32의 배열로 표현할 수 있으며 지원되는 거리 함수가 있습니다. |
+
+마지막으로, ClickHouse는 집계 함수의 중간
+[상태를 저장하는 독특한 기능을 제공합니다](/sql-reference/data-types/aggregatefunction). 이
+상태는 구현에 따라 다르지만, 집계 결과를 저장하고 나중에 쿼리할 수 있게 해 줍니다(해당하는 병합 함수와 함께). 일반적으로 이 기능은 물리화된 뷰를 통해 사용되며, 아래에서 보여드리듯이 최소한의 저장 비용으로 삽입된 데이터에 대한 쿼리의 증가 결과를 저장함으로써 특정 쿼리의 성능을 개선할 수 있는 기능을 제공합니다(자세한 내용은 여기에서 확인하십시오).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/03_sql_translation_reference.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/03_sql_translation_reference.md.hash
new file mode 100644
index 00000000000..de501b11a6e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/03_sql_translation_reference.md.hash
@@ -0,0 +1 @@
+3f66b5e4c859906c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/_category_.json
new file mode 100644
index 00000000000..50b05cb45a0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/04_snowflake/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Snowflake",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/01_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/01_overview.md
new file mode 100644
index 00000000000..53317bf4dbc
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/01_overview.md
@@ -0,0 +1,15 @@
+---
+'sidebar_label': '개요'
+'slug': '/migrations/elastic-overview'
+'description': 'Snowflake에서 ClickHouse로 마이그레이션'
+'keywords':
+- 'Snowflake'
+'title': 'Snowflake에서 ClickHouse로 마이그레이션'
+'show_related_blogs': true
+'doc_type': 'landing-page'
+---
+
+
+# Elasticsearch to ClickHouse migration
+
+관찰 가능성 사용 사례에 대해서는 [Elasticsearch to ClickStack](/use-cases/observability/clickstack/migration/elastic) 마이그레이션 문서를 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/01_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/01_overview.md.hash
new file mode 100644
index 00000000000..6290c6ca69c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/01_overview.md.hash
@@ -0,0 +1 @@
+eb7f41486298aa1d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/_category_.json
new file mode 100644
index 00000000000..4f49621cf3d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/05_elastic/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Elasticsearch",
+ "collapsible": true,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/01_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/01_overview.md
new file mode 100644
index 00000000000..a798b99687e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/01_overview.md
@@ -0,0 +1,34 @@
+---
+'sidebar_label': '개요'
+'slug': '/migrations/redshift-overview'
+'description': 'Amazon Redshift에서 ClickHouse로 마이그레이션'
+'keywords':
+- 'Redshift'
+'title': 'Comparing ClickHouse Cloud and Amazon Redshift'
+'doc_type': 'guide'
+---
+
+
+# Amazon Redshift에서 ClickHouse로의 마이그레이션
+
+> 이 문서는 Amazon Redshift에서 ClickHouse로 데이터를 마이그레이션하는 방법에 대한 소개를 제공합니다.
+
+## 소개 {#introduction}
+
+Amazon Redshift는 구조화된 데이터와 반구조화된 데이터에 대한 보고 및 분석 기능을 제공하는 클라우드 데이터 웨어하우스입니다. 이는 ClickHouse와 유사한 컬럼 지향 데이터베이스 원칙을 사용하여 대규모 데이터 세트에 대한 분석 작업을 처리하도록 설계되었습니다. AWS 제공의 일환으로, 이는 AWS 사용자가 분석 데이터 요구를 충족하기 위해 자주 선택하는 기본 솔루션입니다.
+
+Amazon 생태계와의 긴밀한 통합으로 인해 기존 AWS 사용자에게 매력적이지만, 실시간 분석 애플리케이션에 이를 채택한 Redshift 사용자들은 이러한 목적을 위한 보다 최적화된 솔루션이 필요하게 됩니다. 결과적으로, 그들은 ClickHouse로 점점 더 많이 전환하여 우수한 쿼리 성능과 데이터 압축의 이점을 얻고 있으며, 이를 기존 Redshift 작업량과 함께 배포하는 "속도 계층"으로 활용하거나 교체하고 있습니다.
+
+## ClickHouse vs Redshift {#clickhouse-vs-redshift}
+
+AWS 생태계에 깊이 투자한 사용자에게 Redshift는 데이터 웨어하우징 요구에 직면했을 때 자연스러운 선택을 나타냅니다. Redshift는 ClickHouse와의 중요한 차이점이 있으며, 데이터 웨어하우징 작업과 복잡한 보고 및 분석 쿼리에 대해 엔진을 최적화합니다. 모든 배포 모드에서 다음 두 가지 제한으로 인해 Redshift를 실시간 분석 작업에 사용하기 어렵습니다:
+* Redshift는 [각 쿼리 실행 계획을 위해 코드를 컴파일합니다](https://docs.aws.amazon.com/redshift/latest/dg/c-query-performance.html), 이는 첫 번째 쿼리 실행에 상당한 오버헤드를 추가합니다. 쿼리 패턴이 예측 가능하고 컴파일된 실행 계획을 쿼리 캐시에 저장할 수 있을 때 이 오버헤드는 정당화될 수 있습니다. 그러나 이는 변동성이 있는 쿼리를 가진 인터랙티브 애플리케이션에 도전 과제를 제기합니다. Redshift가 이 코드 컴파일 캐시를 활용할 수 있을 때에도 ClickHouse는 대부분의 쿼리에서 더 빠릅니다. ["ClickBench"](https://benchmark.clickhouse.com/#system=+%E2%98%81w|%EF%B8%8Fr|C%20c|Rf&type=-&machine=-ca2|gl|6ax|6ale|3al&cluster_size=-&opensource=-&tuned=+n&metric=hot&queries=-)를 참조하세요.
+* Redshift는 [모든 큐에서 동시성을 50으로 제한합니다](https://docs.aws.amazon.com/redshift/latest/dg/c_workload_mngmt_classification.html), 이는 BI에는 적합하지만 매우 동시성이 높은 분석 애플리케이션에는 부적합합니다.
+
+반대로 ClickHouse는 복잡한 분석 쿼리를 처리할 수 있지만 실시간 분석 작업에 최적화되어 있으며, 애플리케이션의 동력을 제공하거나 웨어하우스 가속기 역할을 합니다. 결과적으로 Redshift 사용자는 일반적으로 ClickHouse로 Redshift를 교체하거나 보완합니다. 그 이유는 다음과 같습니다:
+
+| 장점 | 설명 |
+|------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **더 낮은 쿼리 대기 시간** | ClickHouse는 높은 동시성 하에서도 다양한 쿼리 패턴과 스트리밍 인서트에도 불구하고 더 낮은 쿼리 대기 시간을 달성합니다. 사용자 인터페이스 분석에서 캐시 히트에 실패할 경우에도 ClickHouse는 여전히 빠르게 처리할 수 있습니다. |
+| **더 높은 동시 쿼리 한도** | ClickHouse는 동시 쿼리에 대한 매우 높은 한계를 두며, 이는 실시간 애플리케이션 경험에 필수적입니다. ClickHouse에서는 자체 관리 및 클라우드 모두에서 서비스를 위해 필요한 동시성을 달성하기 위해 컴퓨팅 할당을 증대할 수 있습니다. ClickHouse의 허용된 쿼리 동시성 수준은 구성할 수 있으며, ClickHouse Cloud는 기본적으로 1000의 값을 기본으로 합니다. |
+| **우수한 데이터 압축** | ClickHouse는 우수한 데이터 압축을 제공하여 사용자가 총 스토리지를 줄이거나 동일한 비용으로 더 많은 데이터를 지속할 수 있게 하여 데이터에서 더 많은 실시간 통찰력을 도출할 수 있도록 합니다. 아래 "ClickHouse vs Redshift 저장 효율성"을 참조하십시오. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/01_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/01_overview.md.hash
new file mode 100644
index 00000000000..f06a417fbbc
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/01_overview.md.hash
@@ -0,0 +1 @@
+73480e41528acef2
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/02_migration_guide.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/02_migration_guide.md
new file mode 100644
index 00000000000..897b9b21444
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/02_migration_guide.md
@@ -0,0 +1,16 @@
+---
+'sidebar_label': '마이그레이션 가이드'
+'slug': '/migrations/redshift/migration-guide'
+'description': 'Amazon Redshift에서 ClickHouse로 마이그레이션'
+'keywords':
+- 'Redshift'
+'title': 'Amazon Redshift에서 ClickHouse로 마이그레이션 가이드'
+'doc_type': 'guide'
+---
+
+import MigrationGuide from '@site/i18n/ko/docusaurus-plugin-content-docs/current/integrations/data-ingestion/redshift/_snippets/_migration_guide.md'
+
+
+# Amazon Redshift to ClickHouse migration guide
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/02_migration_guide.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/02_migration_guide.md.hash
new file mode 100644
index 00000000000..8a9af16ecea
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/02_migration_guide.md.hash
@@ -0,0 +1 @@
+153863f77d31518f
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/03_sql_translation_reference.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/03_sql_translation_reference.md
new file mode 100644
index 00000000000..479f527bda3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/03_sql_translation_reference.md
@@ -0,0 +1,67 @@
+---
+'sidebar_label': 'SQL 번역 참조'
+'slug': '/migrations/redshift/sql-translation-reference'
+'description': '아마존 레드시프트에서 ClickHouse로의 SQL 번역 참조'
+'keywords':
+- 'Redshift'
+'title': '아마존 레드시프트 SQL 번역 가이드'
+'doc_type': 'reference'
+---
+
+
+# Amazon Redshift SQL 번역 가이드
+
+## 데이터 유형 {#data-types}
+
+ClickHouse와 Redshift 간에 데이터를 이동하는 사용자는 즉시 ClickHouse가 제공하는 더 포괄적인 유형 범위가 있으며, 이는 또한 덜 제한적이라는 것을 알게 됩니다. Redshift는 사용자에게 문자열 길이를 지정할 것을 요구하지만, ClickHouse는 문자열을 바이트로 인코딩하지 않고 저장함으로써 이러한 제한과 부담을 사용자에게서 제거합니다. 따라서 ClickHouse 문자열 유형은 제한이나 길이 지정 요건이 없습니다.
+
+게다가 사용자는 Redshift에서 첫 번째 클래스 시민으로 제공되지 않는 배열, 튜플 및 열거형을 활용할 수 있습니다(배열/구조체는 `SUPER`로 모방할 수 있음) 이는 사용자에게 일반적인 불만 사항입니다. ClickHouse는 또한 쿼리 시간이나 심지어 테이블 내에서 집계 상태의 지속성을 허용합니다. 이를 통해 데이터는 물리화된 뷰를 사용하여 미리 집계될 수 있으며, 일반적인 쿼리의 쿼리 성능을 크게 향상시킬 수 있습니다.
+
+아래는 각 Redshift 유형에 대한 ClickHouse의 동등한 유형을 나열합니다:
+
+| Redshift | ClickHouse |
+|------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [`SMALLINT`](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-integer-types) | [`Int8`](/sql-reference/data-types/int-uint) * |
+| [`INTEGER`](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-integer-types) | [`Int32`](/sql-reference/data-types/int-uint) * |
+| [`BIGINT`](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-integer-types) | [`Int64`](/sql-reference/data-types/int-uint) * |
+| [`DECIMAL`](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-decimal-or-numeric-type) | [`UInt128`, `UInt256`, `Int128`, `Int256`](/sql-reference/data-types/int-uint), [`Decimal(P, S)`, `Decimal32(S)`, `Decimal64(S)`, `Decimal128(S)`, `Decimal256(S)`](/sql-reference/data-types/decimal) - (높은 정밀도 및 가능한 범위) |
+| [`REAL`](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-floating-point-types) | [`Float32`](/sql-reference/data-types/float) |
+| [`DOUBLE PRECISION`](https://docs.aws.amazon.com/redshift/latest/dg/r_Numeric_types201.html#r_Numeric_types201-floating-point-types) | [`Float64`](/sql-reference/data-types/float) |
+| [`BOOLEAN`](https://docs.aws.amazon.com/redshift/latest/dg/r_Boolean_type.html) | [`Bool`](/sql-reference/data-types/boolean) |
+| [`CHAR`](https://docs.aws.amazon.com/redshift/latest/dg/r_Character_types.html#r_Character_types-char-or-character) | [`String`](/sql-reference/data-types/string), [`FixedString`](/sql-reference/data-types/fixedstring) |
+| [`VARCHAR`](https://docs.aws.amazon.com/redshift/latest/dg/r_Character_types.html#r_Character_types-varchar-or-character-varying) ** | [`String`](/sql-reference/data-types/string) |
+| [`DATE`](https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-date) | [`Date32`](/sql-reference/data-types/date32) |
+| [`TIMESTAMP`](https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timestamp) | [`DateTime`](/sql-reference/data-types/datetime), [`DateTime64`](/sql-reference/data-types/datetime64) |
+| [`TIMESTAMPTZ`](https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timestamptz) | [`DateTime`](/sql-reference/data-types/datetime), [`DateTime64`](/sql-reference/data-types/datetime64) |
+| [`GEOMETRY`](https://docs.aws.amazon.com/redshift/latest/dg/geospatial-overview.html) | [Geo 데이터 유형](/sql-reference/data-types/geo) |
+| [`GEOGRAPHY`](https://docs.aws.amazon.com/redshift/latest/dg/geospatial-overview.html) | [Geo 데이터 유형](/sql-reference/data-types/geo) (덜 개발됨, 예: 좌표계 없음 - [함수와 함께](/sql-reference/functions/geo/) 에뮬레이션 가능) |
+| [`HLLSKETCH`](https://docs.aws.amazon.com/redshift/latest/dg/r_HLLSKTECH_type.html) | [`AggregateFunction(uniqHLL12, X)`](/sql-reference/data-types/aggregatefunction) |
+| [`SUPER`](https://docs.aws.amazon.com/redshift/latest/dg/r_SUPER_type.html) | [`Tuple`](/sql-reference/data-types/tuple), [`Nested`](/sql-reference/data-types/nested-data-structures/nested), [`Array`](/sql-reference/data-types/array), [`JSON`](/sql-reference/data-types/newjson), [`Map`](/sql-reference/data-types/map) |
+| [`TIME`](https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-time) | [`DateTime`](/sql-reference/data-types/datetime), [`DateTime64`](/sql-reference/data-types/datetime64) |
+| [`TIMETZ`](https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timetz) | [`DateTime`](/sql-reference/data-types/datetime), [`DateTime64`](/sql-reference/data-types/datetime64) |
+| [`VARBYTE`](https://docs.aws.amazon.com/redshift/latest/dg/r_VARBYTE_type.html) ** | [`String`](/sql-reference/data-types/string)과 [`Bit`](/sql-reference/functions/bit-functions) 및 [인코딩](/sql-reference/functions/encoding-functions/#hex) 함수의 조합 |
+
+* ClickHouse는 추가로 확장된 범위를 가진 부호 없는 정수도 지원합니다. 즉, `UInt8`, `UInt32`, `UInt32` 및 `UInt64`입니다.
+**ClickHouse의 문자열 유형은 기본적으로 무제한이지만 제약조건을 사용하여 특정 길이로 제약할 수 있습니다.
+
+## DDL 구문 {#compression}
+
+### 정렬 키 {#sorting-keys}
+
+ClickHouse와 Redshift 모두 "정렬 키" 개념을 가지고 있으며, 이는 데이터가 저장될 때 어떻게 정렬되는지를 정의합니다. Redshift는 `SORTKEY` 절을 사용하여 정렬 키를 정의합니다:
+
+```sql
+CREATE TABLE some_table(...) SORTKEY (column1, column2)
+```
+
+비교적으로, ClickHouse는 `ORDER BY` 절을 사용하여 정렬 순서를 지정합니다:
+
+```sql
+CREATE TABLE some_table(...) ENGINE = MergeTree ORDER BY (column1, column2)
+```
+
+대부분의 경우, 디폴트 `COMPOUND` 유형을 사용하는 경우 ClickHouse에서 같은 정렬 키 컬럼과 순서를 사용할 수 있습니다. Redshift에 데이터가 추가되면 `VACUUM` 및 `ANALYZE` 명령을 실행하여 새로 추가된 데이터를 재정렬하고 쿼리 플래너의 통계를 업데이트해야 합니다 - 그렇지 않으면 정렬되지 않은 공간이 증가합니다. ClickHouse는 이러한 과정이 필요하지 않습니다.
+
+Redshift는 정렬 키에 대한 몇 가지 편리한 기능을 지원합니다. 첫 번째는 자동 정렬 키(`SORTKEY AUTO`)입니다. 이것은 시작하는 데 적합할 수 있지만, 명시적인 정렬 키는 최적의 정렬 키를 사용할 때 최고의 성능과 저장 효율성을 보장합니다. 두 번째는 `INTERLEAVED` 정렬 키로, 쿼리가 하나 이상의 보조 정렬 컬럼을 사용할 때 성능을 향상시키기 위해 정렬 키의 서브셋에 동일한 가중치를 부여합니다. ClickHouse는 [프로젝션](/data-modeling/projections)을 지원하며, 이는 약간 다른 설정으로 동일한 결과를 달성합니다.
+
+사용자는 "기본 키" 개념이 ClickHouse와 Redshift에서 다르게 나타난다는 것을 인식해야 합니다. Redshift에서 기본 키는 제약 조건을 시행하기 위해 의도된 전통적인 RDMS 개념을 닮고 있지만, Redshift에서는 엄격하게 시행되지 않고 쿼리 플래너와 데이터 분배에 대한 힌트 역할을 합니다. ClickHouse에서 기본 키는 행이 디스크에서 정렬되도록 사용되는 열을 나타내며, 압축을 극대화하면서 기본 인덱스의 오염을 방지하고 메모리 낭비를 줄입니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/03_sql_translation_reference.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/03_sql_translation_reference.md.hash
new file mode 100644
index 00000000000..52e67e43b0c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/03_sql_translation_reference.md.hash
@@ -0,0 +1 @@
+14638af86d960d76
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/_category_.json
new file mode 100644
index 00000000000..95419dcb41c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/06_redshift/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Redshift",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/01_clickhouse-to-cloud.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/01_clickhouse-to-cloud.md
new file mode 100644
index 00000000000..8a93a1379dd
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/01_clickhouse-to-cloud.md
@@ -0,0 +1,209 @@
+---
+'sidebar_label': 'ClickHouse OSS'
+'slug': '/cloud/migration/clickhouse-to-cloud'
+'title': '자체 관리 ClickHouse와 ClickHouse Cloud 간의 마이그레이션'
+'description': '자체 관리 ClickHouse와 ClickHouse Cloud 간의 마이그레이션 방법을 설명하는 페이지'
+'doc_type': 'guide'
+'keywords':
+- 'migration'
+- 'ClickHouse Cloud'
+- 'OSS'
+- 'Migrate self-managed to Cloud'
+---
+
+import Image from '@theme/IdealImage';
+import AddARemoteSystem from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_add_remote_ip_access_list_detail.md';
+import self_managed_01 from '@site/static/images/integrations/migration/self-managed-01.png';
+import self_managed_02 from '@site/static/images/integrations/migration/self-managed-02.png';
+import self_managed_03 from '@site/static/images/integrations/migration/self-managed-03.png';
+import self_managed_04 from '@site/static/images/integrations/migration/self-managed-04.png';
+import self_managed_05 from '@site/static/images/integrations/migration/self-managed-05.png';
+import self_managed_06 from '@site/static/images/integrations/migration/self-managed-06.png';
+
+
+# 자가 관리 ClickHouse와 ClickHouse Cloud 간의 마이그레이션
+
+
+
+이 가이드는 자가 관리 ClickHouse 서버에서 ClickHouse Cloud로 마이그레이션하는 방법과 ClickHouse Cloud 서비스 간의 마이그레이션 방법을 보여줍니다. [`remoteSecure`](/sql-reference/table-functions/remote) 함수는 원격 ClickHouse 서버에 대한 접근을 허용하기 위해 `SELECT` 및 `INSERT` 쿼리에서 사용되며, 이는 테이블을 마이그레이션 하는 과정을 `INSERT INTO` 쿼리 작성처럼 간단하게 만듭니다.
+
+## 자가 관리 ClickHouse에서 ClickHouse Cloud로 마이그레이션 {#migrating-from-self-managed-clickhouse-to-clickhouse-cloud}
+
+
+
+:::note
+원본 테이블이 샤드되었거나 복제되었는지 여부와 관계없이, ClickHouse Cloud에서는 목적지 테이블을 생성하기만 하면 됩니다(이 테이블에 대해 엔진 매개변수를 생략해도 되며, 자동으로 ReplicatedMergeTree 테이블이 됩니다). ClickHouse Cloud는 수직 및 수평 확장을 자동으로 처리하므로 테이블을 복제하고 샤드하는 방법에 대해 고민할 필요가 없습니다.
+:::
+
+이 예제에서 자가 관리 ClickHouse 서버는 *원본*이고, ClickHouse Cloud 서비스는 *목적지*입니다.
+
+### 개요 {#overview}
+
+프로세스는 다음과 같습니다:
+
+1. 원본 서비스에 읽기 전용 사용자 추가
+1. 목적지 서비스에서 원본 테이블 구조 복제
+1. 네트워크 가용성에 따라 원본에서 목적지로 데이터 풀기 또는 원본에서 데이터 푸시
+1. 목적지의 IP 접근 리스트에서 원본 서버 제거 (해당되는 경우)
+1. 원본 서비스에서 읽기 전용 사용자 제거
+
+### 시스템 간 테이블 마이그레이션: {#migration-of-tables-from-one-system-to-another}
+이 예에서는 자가 관리 ClickHouse 서버에서 ClickHouse Cloud로 하나의 테이블을 마이그레이션합니다.
+
+### 원본 ClickHouse 시스템에서 (현재 데이터를 호스팅하는 시스템) {#on-the-source-clickhouse-system-the-system-that-currently-hosts-the-data}
+
+- 원본 테이블(`db.table` 오른쪽 예)의 데이터를 읽을 수 있는 읽기 전용 사용자 추가
+```sql
+CREATE USER exporter
+IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
+SETTINGS readonly = 1;
+```
+
+```sql
+GRANT SELECT ON db.table TO exporter;
+```
+
+- 테이블 정의 복사
+```sql
+SELECT create_table_query
+FROM system.tables
+WHERE database = 'db' AND table = 'table'
+```
+
+### 목적지 ClickHouse Cloud 시스템에서: {#on-the-destination-clickhouse-cloud-system}
+
+- 목적지 데이터베이스 생성:
+```sql
+CREATE DATABASE db
+```
+
+- 원본의 CREATE TABLE 문을 사용하여 목적지 생성.
+
+:::tip
+CREATE 문을 실행할 때 ENGINE을 ReplicatedMergeTree로 변경하세요. ClickHouse Cloud는 항상 테이블을 복제하며 올바른 매개변수를 제공합니다. `ORDER BY`, `PRIMARY KEY`, `PARTITION BY`, `SAMPLE BY`, `TTL` 및 `SETTINGS` 절은 유지하세요.
+:::
+
+```sql
+CREATE TABLE db.table ...
+```
+
+- 자가 관리 원본에서 데이터 풀기 위해 `remoteSecure` 함수 사용
+
+
+
+```sql
+INSERT INTO db.table SELECT * FROM
+remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
+```
+
+:::note
+원본 시스템이 외부 네트워크에서 사용할 수 없는 경우, 데이터를 푸시하는 것이 가능하며, `remoteSecure` 함수는 SELECT 및 INSERT 모두에 작동합니다. 다음 옵션을 참고하십시오.
+:::
+
+- ClickHouse Cloud 서비스에 데이터를 푸시하기 위해 `remoteSecure` 함수 사용
+
+
+
+:::tip 원격 시스템을 ClickHouse Cloud 서비스의 IP 접근 리스트에 추가
+`remoteSecure` 함수가 ClickHouse Cloud 서비스에 연결할 수 있도록 하려면 원격 시스템의 IP 주소가 IP 접근 리스트에 허용되어야 합니다. 추가 정보는 이 팁 아래의 **IP 접근 리스트 관리**를 확장하세요.
+:::
+
+
+
+```sql
+INSERT INTO FUNCTION
+remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
+'default', 'PASS') SELECT * FROM db.table
+```
+
+## ClickHouse Cloud 서비스 간 마이그레이션 {#migrating-between-clickhouse-cloud-services}
+
+
+
+ClickHouse Cloud 서비스 간 데이터 마이그레이션의 몇 가지 예:
+- 복원된 백업에서 데이터 마이그레이션
+- 개발 서비스에서 스테이징 서비스로 데이터 복사 (또는 스테이징에서 프로덕션으로)
+
+이 예에서는 두 개의 ClickHouse Cloud 서비스가 있으며, 이들은 *원본*과 *목적지*로 참조됩니다. 데이터는 원본에서 목적지로 풀립니다. 원하시면 푸시할 수 있지만 읽기 전용 사용자를 사용하는 점에서 풀기 방식을 보여줍니다.
+
+
+
+마이그레이션에는 몇 가지 단계가 있습니다:
+1. 한 ClickHouse Cloud 서비스는 *원본*으로, 다른 한 서비스는 *목적지*로 식별
+1. 원본 서비스에 읽기 전용 사용자 추가
+1. 목적지 서비스에서 원본 테이블 구조 복제
+1. 원본 서비스에 IP 접근을 일시적으로 허용
+1. 원본에서 목적지로 데이터 복사
+1. 목적지의 IP 접근 리스트 재설정
+1. 원본 서비스에서 읽기 전용 사용자 제거
+
+#### 원본 서비스에 읽기 전용 사용자 추가 {#add-a-read-only-user-to-the-source-service}
+
+- 원본 테이블(`db.table` 오른쪽 예)의 데이터를 읽을 수 있는 읽기 전용 사용자 추가
+```sql
+CREATE USER exporter
+IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
+SETTINGS readonly = 1;
+```
+
+```sql
+GRANT SELECT ON db.table TO exporter;
+```
+
+- 테이블 정의 복사
+```sql
+select create_table_query
+from system.tables
+where database = 'db' and table = 'table'
+```
+
+#### 목적지 서비스에서 테이블 구조 복제 {#duplicate-the-table-structure-on-the-destination-service}
+
+목적지 데이터베이스가 아직 없다면 생성하십시오:
+
+- 목적지 데이터베이스 생성:
+```sql
+CREATE DATABASE db
+```
+
+- 원본의 CREATE TABLE 문을 사용하여 목적지 생성.
+
+ 원본의 `select create_table_query...` 출력 결과를 사용하여 목적지에서 테이블 생성:
+
+```sql
+CREATE TABLE db.table ...
+```
+
+#### 원본 서비스에 원격 접근 허용 {#allow-remote-access-to-the-source-service}
+
+원본에서 목적지로 데이터를 풀기 위해서는 원본 서비스가 연결을 허용해야 합니다. 원본 서비스에서 "IP 접근 리스트" 기능을 일시적으로 비활성화하십시오.
+
+:::tip
+원본 ClickHouse Cloud 서비스를 계속 사용할 경우, "어디서든 접근 허용"으로 전환하기 전에 기존 IP 접근 리스트를 JSON 파일로 내보내십시오. 이렇게 하면 데이터 마이그레이션 후 접근 리스트를 다시 불러올 수 있습니다.
+:::
+
+허용 목록을 수정하여 임시로 **어디서나** 접근을 허용합니다. 자세한 내용은 [IP 접근 리스트](/cloud/security/setting-ip-filters) 문서를 참조하십시오.
+
+#### 원본에서 목적지로 데이터 복사 {#copy-the-data-from-source-to-destination}
+
+- `remoteSecure` 함수를 사용하여 원본 ClickHouse Cloud 서비스에서 데이터를 풀기
+ 목적지에 연결합니다. 목적지 ClickHouse Cloud 서비스에서 다음 명령을 실행하십시오:
+
+```sql
+INSERT INTO db.table SELECT * FROM
+remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
+```
+
+- 목적지 서비스에서 데이터 확인
+
+#### 원본에서 IP 접근 리스트 재설정 {#re-establish-the-ip-access-list-on-the-source}
+
+ 이전에 접근 리스트를 내보냈다면, **Share**를 사용하여 다시 가져올 수 있습니다. 그렇지 않은 경우, 접근 리스트에 항목을 다시 추가하십시오.
+
+#### 읽기 전용 `exporter` 사용자 제거 {#remove-the-read-only-exporter-user}
+
+```sql
+DROP USER exporter
+```
+
+- 서비스 IP 접근 리스트를 스위치하여 접근 제한
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/01_clickhouse-to-cloud.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/01_clickhouse-to-cloud.md.hash
new file mode 100644
index 00000000000..98039252044
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/01_clickhouse-to-cloud.md.hash
@@ -0,0 +1 @@
+522a08e50668af60
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/_category_.json
new file mode 100644
index 00000000000..9720f826193
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/07_OSS_to_Cloud/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "OSS to Cloud",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/01_clickhouse-local-etl.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/01_clickhouse-local-etl.md
new file mode 100644
index 00000000000..06780abb61b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/01_clickhouse-local-etl.md
@@ -0,0 +1,146 @@
+---
+'sidebar_label': 'clickhouse-local 사용'
+'keywords':
+- 'clickhouse'
+- 'migrate'
+- 'migration'
+- 'migrating'
+- 'data'
+- 'etl'
+- 'elt'
+- 'clickhouse-local'
+- 'clickhouse-client'
+'slug': '/cloud/migration/clickhouse-local'
+'title': 'ClickHouse로 이주하기 위한 clickhouse-local 사용'
+'description': 'clickhouse-local을 사용하여 ClickHouse로 이주하는 방법을 보여주는 가이드'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import CodeBlock from '@theme/CodeBlock';
+import AddARemoteSystem from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_add_remote_ip_access_list_detail.md';
+import ch_local_01 from '@site/static/images/integrations/migration/ch-local-01.png';
+import ch_local_02 from '@site/static/images/integrations/migration/ch-local-02.png';
+import ch_local_03 from '@site/static/images/integrations/migration/ch-local-03.png';
+import ch_local_04 from '@site/static/images/integrations/migration/ch-local-04.png';
+
+
+# ClickHouse로 마이그레이션하기: clickhouse-local 사용하기
+
+
+
+ClickHouse, 보다 구체적으로는 [`clickhouse-local`](/operations/utilities/clickhouse-local.md)을 ETL 도구로 사용하여 현재 데이터베이스 시스템에서 ClickHouse Cloud로 데이터를 마이그레이션할 수 있습니다. 현재 데이터베이스 시스템에 기본 제공되는 ClickHouse [통합 엔진](/engines/table-engines/#integration-engines) 또는 [테이블 함수](/sql-reference/table-functions/)가 있거나, 공급자가 제공하는 JDBC 드라이버 또는 ODBC 드라이버가 사용 가능해야 합니다.
+
+이 마이그레이션 방법을 "회전(pivot)" 방식이라고 부르기도 합니다. 이는 데이터 소스 데이터베이스에서 대상 데이터베이스로 데이터를 전송하기 위해 중간 회전 포인트 또는 홉을 사용하는 방법입니다. 예를 들어, 보안 요구 사항으로 인해 내부 네트워크 내에서 아웃바운드 연결만 허용되는 경우 이 방법이 필요할 수 있으며, 이 경우 clickhouse-local을 사용하여 소스 데이터베이스에서 데이터를 가져온 후, 그 데이터를 대상 ClickHouse 데이터베이스로 푸시하게 됩니다. 이때 clickhouse-local이 회전 포인트 역할을 합니다.
+
+ClickHouse는 [MySQL](/engines/table-engines/integrations/mysql/), [PostgreSQL](/engines/table-engines/integrations/postgresql), [MongoDB](/engines/table-engines/integrations/mongodb) 및 [SQLite](/engines/table-engines/integrations/sqlite)에 대한 통합 엔진과 테이블 함수를 제공합니다 (이 함수는 즉석에서 통합 엔진을 생성합니다). 다른 모든 인기 있는 데이터베이스 시스템의 경우, 해당 시스템 공급자로부터 JDBC 드라이버 또는 ODBC 드라이버가 제공됩니다.
+
+## clickhouse-local이란 무엇인가? {#what-is-clickhouse-local}
+
+
+
+일반적으로 ClickHouse는 여러 인스턴스의 ClickHouse 데이터베이스 엔진이 다양한 서버에서 분산 방식으로 실행되는 클러스터 형태로 실행됩니다.
+
+단일 서버에서 ClickHouse 데이터베이스 엔진은 `clickhouse-server` 프로그램의 일부로 실행됩니다. 데이터베이스 접근(경로, 사용자, 보안 등)은 서버 구성 파일로 설정됩니다.
+
+`clickhouse-local` 도구는 ClickHouse 데이터베이스 엔진을 명령줄 유틸리티 방식으로 격리하여, ClickHouse 서버를 구성하고 시작할 필요 없이 많은 입력 및 출력에 대해 신속한 SQL 데이터 처리를 수행할 수 있도록 합니다.
+
+## clickhouse-local 설치하기 {#installing-clickhouse-local}
+
+`clickhouse-local`을 실행할 호스트 머신은 현재 소스 데이터베이스 시스템과 ClickHouse Cloud 타겟 서비스 모두에 네트워크 접근이 가능해야 합니다.
+
+그 호스트 머신에서, 컴퓨터의 운영 체제에 따라 적절한 `clickhouse-local` 빌드를 다운로드합니다:
+
+
+
+
+1. `clickhouse-local`을 로컬에서 다운로드하는 가장 간단한 방법은 다음 명령어를 실행하는 것입니다:
+```bash
+curl https://clickhouse.com/ | sh
+```
+
+1. `clickhouse-local`을 실행합니다 (단순히 버전을 출력합니다):
+```bash
+./clickhouse-local
+```
+
+
+
+
+1. `clickhouse-local`을 로컬에서 다운로드하는 가장 간단한 방법은 다음 명령어를 실행하는 것입니다:
+```bash
+curl https://clickhouse.com/ | sh
+```
+
+1. `clickhouse-local`을 실행합니다 (단순히 버전을 출력합니다):
+```bash
+./clickhouse local
+```
+
+
+
+
+:::info 중요
+이 가이드의 예제는 `clickhouse-local`을 실행하기 위한 Linux 명령을 사용합니다 (`./clickhouse-local`).
+Mac에서 `clickhouse-local`을 실행하려면 `./clickhouse local`을 사용하세요.
+:::
+
+:::tip ClickHouse Cloud 서비스 IP 접근 목록에 원격 시스템 추가
+`remoteSecure` 함수가 ClickHouse Cloud 서비스에 연결할 수 있도록 하려면, 원격 시스템의 IP 주소가 IP 접근 목록에서 허용되어야 합니다. 이 팁 아래의 **IP 접근 목록 관리**를 확장하여 자세한 정보를 확인하세요.
+:::
+
+
+
+## 예제 1: 통합 엔진을 사용하여 MySQL에서 ClickHouse Cloud로 마이그레이션하기 {#example-1-migrating-from-mysql-to-clickhouse-cloud-with-an-integration-engine}
+
+우리는 소스 MySQL 데이터베이스에서 데이터를 읽기 위해 [통합 테이블 엔진](/engines/table-engines/integrations/mysql/) (즉석에서 생성되는 [mysql 테이블 함수](/sql-reference/table-functions/mysql/))을 사용할 것이며, ClickHouse Cloud 서비스의 대상 테이블에 데이터를 쓰기 위해 [remoteSecure 테이블 함수](/sql-reference/table-functions/remote/)를 사용할 것입니다.
+
+
+
+### ClickHouse Cloud 서비스에서: {#on-the-destination-clickhouse-cloud-service}
+
+#### 대상 데이터베이스 생성: {#create-the-destination-database}
+
+```sql
+CREATE DATABASE db
+```
+
+#### MySQL 테이블에 상응하는 스키마를 가진 대상 테이블 생성: {#create-a-destination-table-that-has-a-schema-equivalent-to-the-mysql-table}
+
+```sql
+CREATE TABLE db.table ...
+```
+
+:::note
+ClickHouse Cloud 대상 테이블의 스키마와 소스 MySQL 테이블의 스키마는 일치해야 합니다 (컬럼 이름과 순서가 동일해야 하며, 컬럼 데이터 유형이 호환 가능해야 합니다).
+:::
+
+### clickhouse-local 호스트 머신에서: {#on-the-clickhouse-local-host-machine}
+
+#### 마이그레이션 쿼리로 clickhouse-local 실행: {#run-clickhouse-local-with-the-migration-query}
+
+```sql
+ ./clickhouse-local --query "
+INSERT INTO FUNCTION
+remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
+SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
+```
+
+:::note
+`clickhouse-local` 호스트 머신에는 데이터가 로컬에 저장되지 않습니다. 대신, 소스 MySQL 테이블에서 데이터를 읽고, 즉시 ClickHouse Cloud 서비스의 대상 테이블에 쓰게 됩니다.
+:::
+
+## 예제 2: JDBC 브리지를 사용하여 MySQL에서 ClickHouse Cloud로 마이그레이션하기 {#example-2-migrating-from-mysql-to-clickhouse-cloud-with-the-jdbc-bridge}
+
+우리는 [JDBC 통합 테이블 엔진](/engines/table-engines/integrations/jdbc.md) (즉석에서 생성되는 [jdbc 테이블 함수](/sql-reference/table-functions/jdbc.md))과 [ClickHouse JDBC Bridge](https://github.com/ClickHouse/clickhouse-jdbc-bridge) 및 MySQL JDBC 드라이버를 사용하여 소스 MySQL 데이터베이스에서 데이터를 읽고, ClickHouse Cloud 서비스의 대상 테이블에 데이터를 쓰기 위해 [remoteSecure 테이블 함수](/sql-reference/table-functions/remote.md)를 사용할 것입니다.
+
+
+
+### ClickHouse Cloud 서비스에서: {#on-the-destination-clickhouse-cloud-service-1}
+
+#### 대상 데이터베이스 생성: {#create-the-destination-database-1}
+```sql
+CREATE DATABASE db
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/01_clickhouse-local-etl.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/01_clickhouse-local-etl.md.hash
new file mode 100644
index 00000000000..feb5e6b61b9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/01_clickhouse-local-etl.md.hash
@@ -0,0 +1 @@
+dadfc60a8ad286f5
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/02_etl-tool-to-clickhouse.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/02_etl-tool-to-clickhouse.md
new file mode 100644
index 00000000000..4a1e31d49fc
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/02_etl-tool-to-clickhouse.md
@@ -0,0 +1,33 @@
+---
+'sidebar_label': '서드파티 ETL 도구 사용하기'
+'keywords':
+- 'clickhouse'
+- 'migrate'
+- 'migration'
+- 'migrating'
+- 'data'
+- 'etl'
+- 'elt'
+- 'clickhouse-local'
+- 'clickhouse-client'
+'slug': '/cloud/migration/etl-tool-to-clickhouse'
+'title': '서드파티 ETL 도구 사용하기'
+'description': 'ClickHouse와 함께 3rd-party ETL 도구를 사용하는 방법을 설명하는 페이지'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import third_party_01 from '@site/static/images/integrations/migration/third-party-01.png';
+
+
+# 3rd-party ETL 도구 사용하기
+
+
+
+데이터를 외부 데이터 소스에서 ClickHouse로 이동하는 훌륭한 옵션은 많은 인기 있는 ETL 및 ELT 도구 중 하나를 사용하는 것입니다. 우리는 다음을 다루는 문서를 가지고 있습니다:
+
+- [Airbyte](/integrations/data-ingestion/etl-tools/airbyte-and-clickhouse.md)
+- [dbt](/integrations/data-ingestion/etl-tools/dbt/index.md)
+- [Vector](/integrations/data-ingestion/etl-tools/vector-to-clickhouse.md)
+
+그러나 ClickHouse와 통합되는 많은 다른 ETL/ELT 도구가 있으므로, 선호하는 도구의 문서를 확인하여 자세한 내용을 살펴보세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/02_etl-tool-to-clickhouse.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/02_etl-tool-to-clickhouse.md.hash
new file mode 100644
index 00000000000..b6ebee24091
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/02_etl-tool-to-clickhouse.md.hash
@@ -0,0 +1 @@
+148182a041c49493
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/03_object-storage-to-clickhouse.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/03_object-storage-to-clickhouse.md
new file mode 100644
index 00000000000..194bf72044f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/03_object-storage-to-clickhouse.md
@@ -0,0 +1,32 @@
+---
+'title': '객체 스토리지 사용하기'
+'description': '객체 스토리지에서 ClickHouse Cloud로 데이터 이동하기'
+'keywords':
+- 'object storage'
+- 's3'
+- 'azure blob'
+- 'gcs'
+- 'migration'
+'slug': '/integrations/migration/object-storage-to-clickhouse'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import object_storage_01 from '@site/static/images/integrations/migration/object-storage-01.png';
+
+
+# 클라우드 오브젝트 스토리지에서 ClickHouse Cloud로 데이터 이동
+
+
+
+클라우드 오브젝트 스토리지를 데이터 레이크로 사용하고 있으며 이 데이터를 ClickHouse Cloud로 가져오려는 경우, 또는 현재 사용 중인 데이터베이스 시스템이 클라우드 오브젝트 스토리지에 직접 데이터를 오프로드할 수 있는 경우, 다음 중 하나의 테이블 함수를 사용하여 클라우드 오브젝트 스토리지에 저장된 데이터를 ClickHouse Cloud 테이블로 마이그레이션할 수 있습니다:
+
+- [s3](/sql-reference/table-functions/s3.md) 또는 [s3Cluster](/sql-reference/table-functions/s3Cluster.md)
+- [gcs](/sql-reference/table-functions/gcs)
+- [azureBlobStorage](/sql-reference/table-functions/azureBlobStorage)
+
+현재 사용 중인 데이터베이스 시스템이 클라우드 오브젝트 스토리지에 직접 데이터를 오프로드할 수 없는 경우, [타사 ETL/ELT 도구](/cloud/migration/etl-tool-to-clickhouse) 또는 [clickhouse-local](/cloud/migration/clickhouse-local)을 사용하여 현재 데이터베이스 시스템에서 클라우드 오브젝트 스토리지로 데이터를 이동하고, 그 데이터를 두 번째 단계로 ClickHouse Cloud 테이블로 마이그레이션할 수 있습니다.
+
+이 과정은 두 단계(클라우드 오브젝트 스토리지에 데이터 오프로드, 그 다음 ClickHouse로 로드)지만, 장점은 [강력한 ClickHouse Cloud](https://clickhouse.com/blog/getting-data-into-clickhouse-part-3-s3)가 클라우드 오브젝트 스토리지에서의 고도로 병렬화된 읽기를 지원하기 때문에 페타바이트 규모로 확장 가능하다는 것입니다. 또한 [Parquet](/interfaces/formats/Parquet)와 같은 정교하고 압축된 형식을 활용할 수 있습니다.
+
+데이터를 S3를 사용하여 ClickHouse Cloud로 가져오는 방법에 대한 구체적인 코드 예제가 포함된 [블로그 기사](https://clickhouse.com/blog/getting-data-into-clickhouse-part-3-s3)가 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/03_object-storage-to-clickhouse.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/03_object-storage-to-clickhouse.md.hash
new file mode 100644
index 00000000000..636f63a83b6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/03_object-storage-to-clickhouse.md.hash
@@ -0,0 +1 @@
+35a8170ab42b8c92
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/_category_.json
new file mode 100644
index 00000000000..61c592ce8a0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/08_other_methods/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Other...",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/_category_.json
new file mode 100644
index 00000000000..aca0c529bce
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/02_migrate/01_migration_guides/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Migration guides",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/_snippets/_monitoring_table_of_contents.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/_snippets/_monitoring_table_of_contents.md
new file mode 100644
index 00000000000..e5d813d8226
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/_snippets/_monitoring_table_of_contents.md
@@ -0,0 +1,3 @@
+| Page | Description |
+|------|-------------|
+| | |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/_snippets/_monitoring_table_of_contents.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/_snippets/_monitoring_table_of_contents.md.hash
new file mode 100644
index 00000000000..e852b72ed46
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/_snippets/_monitoring_table_of_contents.md.hash
@@ -0,0 +1 @@
+b95b12523c2327fa
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/resource_tour.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/resource_tour.md
new file mode 100644
index 00000000000..cd844f4bf79
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/resource_tour.md
@@ -0,0 +1,50 @@
+---
+'slug': '/cloud/get-started/cloud/resource-tour'
+'title': '리소스 투어'
+'description': '쿼리 최적화, 스케일링 전략, 모니터링 및 모범 사례에 대한 ClickHouse Cloud 문서 리소스 개요'
+'keywords':
+- 'clickhouse cloud'
+'hide_title': true
+'doc_type': 'guide'
+---
+
+import TableOfContentsBestPractices from '@site/i18n/ko/docusaurus-plugin-content-docs/current/best-practices/_snippets/_table_of_contents.md';
+import TableOfContentsOptimizationAndPerformance from '@site/i18n/ko/docusaurus-plugin-content-docs/current/guides/best-practices/_snippets/_performance_optimizations_table_of_contents.md';
+import TableOfContentsSecurity from '@site/i18n/ko/docusaurus-plugin-content-docs/current/cloud/_snippets/_security_table_of_contents.md';
+
+
+# 리소스 투어
+
+이 문서는 ClickHouse Cloud 배포에서 최대의 이점을 얻기 위해 사용할 수 있는 리소스 개요를 제공합니다. 다음 주제별로 구성된 리소스를 탐색해보세요:
+
+- [쿼리 최적화 기술 및 성능 조정](#query-optimization)
+- [모니터링](#monitoring)
+- [보안 모범 사례 및 컴플라이언스 기능](#security)
+- [비용 최적화 및 청구](#cost-optimization)
+
+더 구체적인 주제로 들어가기 전에, ClickHouse를 사용할 때 따라야 할 일반적인 모범 사례를 다룬 일반 ClickHouse 모범 사례 가이드를 시작하는 것을 추천합니다.
+
+
+
+## 쿼리 최적화 기술 및 성능 조정 {#query-optimization}
+
+
+
+## 모니터링 {#monitoring}
+
+| 페이지 | 설명 |
+|----------------------------------------------------------------------------|-------------------------------------------------------------------------------|
+| [고급 대시보드](/cloud/manage/monitor/advanced-dashboard) | 내장된 고급 대시보드를 사용하여 서비스 상태 및 성능을 모니터링합니다. |
+| [Prometheus 통합](/integrations/prometheus) | Prometheus를 사용하여 Cloud 서비스를 모니터링합니다. |
+| [Cloud 모니터링 기능](/use-cases/observability/cloud-monitoring) | 내장된 모니터링 기능 및 통합 옵션에 대한 개요를 제공합니다. |
+
+## 보안 {#security}
+
+
+
+## 비용 최적화 및 청구 {#cost-optimization}
+
+| 페이지 | 설명 |
+|-----------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
+| [데이터 전송](/cloud/manage/network-data-transfer)| ClickHouse Cloud가 수신 및 송신된 데이터의 측정 방법을 이해합니다. |
+| [알림](/cloud/notifications) | ClickHouse Cloud 서비스에 대한 알림을 설정합니다. 예를 들어, 크레딧 사용량이 특정 임계값을 초과할 때 알림을 설정합니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/resource_tour.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/resource_tour.md.hash
new file mode 100644
index 00000000000..31d25111c25
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/03_tune/resource_tour.md.hash
@@ -0,0 +1 @@
+be7ddb0ce28637f6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/index.md
new file mode 100644
index 00000000000..946618189ba
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/index.md
@@ -0,0 +1,46 @@
+---
+'slug': '/cloud/get-started'
+'title': 'ClickHouse Cloud 시작하기'
+'description': 'ClickHouse Cloud 시작을 위한 완벽한 가이드 - 기능 발견부터 배포 및 최적화까지'
+'hide_title': true
+'doc_type': 'guide'
+'keywords':
+- 'onboarding'
+- 'getting started'
+- 'cloud setup'
+- 'quickstart'
+- 'introduction'
+---
+
+
+# ClickHouse Cloud 시작하기
+
+ClickHouse Cloud에 처음이고 어디서 시작해야 할지 모르겠나요? 이 문서의 이 섹션에서는 신속하게 시작하는 데 필요한 모든 것을 안내해 드립니다. ClickHouse Cloud를 탐색하는 각 단계별로 안내할 수 있도록 시작하기 섹션을 세 가지 하위 섹션으로 정리했습니다.
+
+
+
+## ClickHouse Cloud 발견하기 {#discover-clickhouse-cloud}
+
+- ClickHouse Cloud가 무엇인지, 오픈 소스 버전과 어떻게 다른지에 대해 [학습하기](/cloud/overview)
+- ClickHouse Cloud의 주요 사용 사례를 [발견하기](/cloud/get-started/cloud/use-cases/overview)
+
+## ClickHouse Cloud 설정하기 {#get-set-up-with-clickhouse-cloud}
+
+이제 ClickHouse Cloud가 무엇인지 알았으므로, ClickHouse Cloud에 데이터를 가져오는 과정, 사용 가능한 주요 기능을 보여주고 알아야 할 일반적인 모범 사례를 안내해 드리겠습니다.
+
+주제에는 다음이 포함됩니다:
+
+- 다양한 플랫폼에서의 [마이그레이션 가이드](/integrations/migration/overview)
+
+## ClickHouse Cloud 배포 조정하기 {#evaluate-clickhouse-cloud}
+
+이제 데이터가 ClickHouse Cloud에 있으므로, ClickHouse Cloud 경험을 최대한 활용하고 플랫폼이 제공하는 것을 탐색하는 데 도움이 되는 몇 가지 고급 주제를 안내해 드리겠습니다.
+
+주제에는 다음이 포함됩니다:
+
+- [쿼리 성능 및 최적화](/cloud/get-started/cloud/resource-tour#query-optimization)
+- [모니터링](/cloud/get-started/cloud/resource-tour#monitoring)
+- [보안 고려 사항](/cloud/get-started/cloud/resource-tour#security)
+- [문제 해결 팁](/troubleshooting)
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/index.md.hash
new file mode 100644
index 00000000000..1fbef56af9a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/onboard/index.md.hash
@@ -0,0 +1 @@
+5becdcbe28e89fe6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/01_changelog.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/01_changelog.md
new file mode 100644
index 00000000000..a2d0ee7b2bd
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/01_changelog.md
@@ -0,0 +1,1540 @@
+---
+slug: /whats-new/cloud
+sidebar_label: 'Cloud changelog'
+title: 'Cloud Changelog'
+description: 'ClickHouse Cloud changelog providing descriptions of what is new in each ClickHouse Cloud release'
+doc_type: 'changelog'
+keywords: ['changelog', 'release notes', 'updates', 'new features', 'cloud changes']
+---
+
+import Image from '@theme/IdealImage';
+import add_marketplace from '@site/static/images/cloud/reference/add_marketplace.png';
+import beta_dashboards from '@site/static/images/cloud/reference/beta_dashboards.png';
+import api_endpoints from '@site/static/images/cloud/reference/api_endpoints.png';
+import cross_vpc from '@site/static/images/cloud/reference/cross-vpc-clickpipes.png';
+import nov_22 from '@site/static/images/cloud/reference/nov-22-dashboard.png';
+import private_endpoint from '@site/static/images/cloud/reference/may-30-private-endpoints.png';
+import notifications from '@site/static/images/cloud/reference/nov-8-notifications.png';
+import kenesis from '@site/static/images/cloud/reference/may-17-kinesis.png';
+import s3_gcs from '@site/static/images/cloud/reference/clickpipes-s3-gcs.png';
+import tokyo from '@site/static/images/cloud/reference/create-tokyo-service.png';
+import cloud_console from '@site/static/images/cloud/reference/new-cloud-console.gif';
+import copilot from '@site/static/images/cloud/reference/nov-22-copilot.gif';
+import latency_insights from '@site/static/images/cloud/reference/oct-4-latency-insights.png';
+import cloud_console_2 from '@site/static/images/cloud/reference/aug-15-compute-compute.png';
+import compute_compute from '@site/static/images/cloud/reference/july-18-table-inspector.png';
+import query_insights from '@site/static/images/cloud/reference/june-28-query-insights.png';
+import prometheus from '@site/static/images/cloud/reference/june-28-prometheus.png';
+import kafka_config from '@site/static/images/cloud/reference/june-13-kafka-config.png';
+import fast_releases from '@site/static/images/cloud/reference/june-13-fast-releases.png';
+import share_queries from '@site/static/images/cloud/reference/may-30-share-queries.png';
+import query_endpoints from '@site/static/images/cloud/reference/may-17-query-endpoints.png';
+import dashboards from '@site/static/images/cloud/reference/may-30-dashboards.png';
+
+In addition to this ClickHouse Cloud changelog, please see the [Cloud Compatibility](/whats-new/cloud-compatibility) page.
+
+:::tip[Automatically keep up to date!]
+
+ Subscribe to Cloud Changelog via RSS
+
+:::
+
+## November 7, 2025 {#november-7-2025}
+
+- ClickHouse Cloud console now supports configuring replica sizes in increments of 1 vCPU, 4 GiB from the cloud console.
+ These options are available both when setting up a new service as well as when setting minimum and maximum replica sizes on the settings page.
+- Custom hardware profiles (available on the Enterprise tier) now support idling.
+- ClickHouse Cloud now offers a simplified purchasing experience through AWS Marketplace, with separate options for [pay-as-you-go](https://aws.amazon.com/marketplace/pp/prodview-p4gwofrqpkltu?sr=0-2&ref_=beagle&applicationId=AWSMPContessa) and [committed spend contracts](https://aws.amazon.com/marketplace/pp/prodview-4qyeihstyym2s?sr=0-3&ref_=beagle&applicationId=AWSMPContessa).
+- Alerting is now available for ClickStack users in ClickHouse Cloud.
+ Users can now create and manage alerts directly in the HyperDX UI, across logs, metrics, and traces with no extra setup, no extra infra or service, and no config. Alerts integrate with Slack, PagerDuty, and more.
+ For more information see the [alerting documentation](/use-cases/observability/clickstack/alerts).
+
+## October 17, 2025 {#october-17-2025}
+
+- **Service Monitoring - Resource Utilization Dashboard**
+ The CPU utilization and memory utilization metrics display will change to show the maximum utilization metric during a particular time period to better surface instances of underprovisionment, from average.
+ In addition, the CPU utilization metric will show a kubernetes-level CPU utilization metric which more closely resembles the metric used by ClickHouse Cloud’s autoscaler.
+- **External Buckets**
+ ClickHouse Cloud now lets you export backups directly to your own cloud service provider account.
+ Connect your external storage bucket - AWS S3, Google Cloud Storage, or Azure Blob Storage - and take control of your backup management.
+
+## August 29, 2025 {#august-29-2025}
+
+- [ClickHouse Cloud Azure Private Link](/cloud/security/azure-privatelink) has switched from using Resource GUID to Resource ID filters for resource identification. You can still use the legacy Resource GUID, which is backward compatible, but we recommend switching to Resource ID filters. For migration details see the [docs](/cloud/security/azure-privatelink#obtaining-private-endpoint-resourceid) for Azure Private Link.
+
+## August 22, 2025 {#august-22-2025}
+
+- **ClickHouse Connector for AWS Glue**
+ You can now use the official [ClickHouse Connector for AWS Glue](/integrations/glue) that is available from the [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-eqvmuopqzdg7s). Utilizes AWS Glue’s Apache
+ Spark-based serverless engine for extracting, transforming and loading data integration between ClickHouse and other data sources. Get
+ started by following along with the announcement [blogpost](http://clickhouse.com/blog/clickhouse-connector-aws-glue) for how to create tables, write and read data between ClickHouse and Spark.
+- **Change to the minimum number of replicas in a service**
+ Services which have been scaled up can now be [scaled back down](/manage/scaling) to use a single replica (previously the minimum was 2 replicas). Note: single replica services have reduced availability and are not recommended for production usage.
+- ClickHouse Cloud will begin to send notifications related to service scaling and service version upgrades, by default for administrator roles. Users can adjust their notification preferences in their notification settings.
+
+## August 13, 2025 {#august-13-2025}
+
+- **ClickPipes for MongoDB CDC now in Private Preview**
+ You can now use ClickPipes to replicate data from MongoDB into ClickHouse Cloud in a few clicks, enabling
+ real-time analytics without the need for external ETL tools. The connector supports continuous
+ replication as well as one-time migrations, and is compatible with MongoDB Atlas and self-hosted MongoDB
+ deployments. Read the [blogpost](https://clickhouse.com/blog/mongodb-cdc-clickhouse-preview) for an overview of the MongoDB CDC connector and [sign up for early access here](https://clickhouse.com/cloud/clickpipes/mongodb-cdc-connector)!
+
+## August 8, 2025 {#august-08-2025}
+
+- **Notifications**: Users will now receive a UI notification when their service starts upgrading to a new ClickHouse version. Additional Email and Slack notifications can be added via the notification center.
+- **ClickPipes**: Azure Blob Storage (ABS) ClickPipes support was added to the ClickHouse Terraform provider. See the provider documentation for an example of how to programmatically create an ABS ClickPipe.
+ - [Bug fix] Object storage ClickPipes writing to a destination table using the Null engine now report "Total records" and "Data ingested" metrics in the UI.
+ - [Bug fix] The “Time period” selector for metrics in the UI defaulted to “24 hours” regardless of the selected time period. This has now been fixed, and the UI correctly updates the charts for the selected time period.
+- **Cross-region private link (AWS)** is now Generally Available. Please refer to the [documentation](/manage/security/aws-privatelink) for the list of supported regions.
+
+## July 31, 2025 {#july-31-2025}
+
+**Vertical scaling for ClickPipes now available**
+
+[Vertical scaling is now available for streaming ClickPipes](https://clickhouse.com/blog/clickpipes-flexible-scaling-monitoring).
+This feature allows you to control the size of each replica, in addition to the
+number of replicas (horizontal scaling). The details page for each ClickPipe now
+also includes per-replica CPU and memory utilization, which helps you better
+understand your workloads and plan re-sizing operations with confidence.
+
+## July 24, 2025 {#july-24-2025}
+
+**ClickPipes for MySQL CDC now in public beta**
+
+The MySQL CDC connector in ClickPipes is now widely available in public beta. With just a few clicks,
+you can start replicating your MySQL (or MariaDB) data directly into ClickHouse Cloud in real-time,
+with no external dependencies. Read the [blogpost](https://clickhouse.com/blog/mysql-cdc-connector-clickpipes-beta)
+for an overview of the connector and follow the [quickstart](https://clickhouse.com/docs/integrations/clickpipes/mysql)
+to get up and running.
+
+## July 11, 2025 {#june-11-2025}
+
+- New services now store database and table metadata in a central **SharedCatalog**,
+ a new model for coordination and object lifecycles which enables:
+ - **Cloud-scale DDL**, even under high concurrency
+ - **Resilient deletion and new DDL operations**
+ - **Fast spin-up and wake-ups** as stateless nodes now launch with no disk dependencies
+ - **Stateless compute across both native and open formats**, including Iceberg and Delta Lake
+
+ Read more about SharedCatalog in our [blog](https://clickhouse.com/blog/clickhouse-cloud-stateless-compute)
+
+- We now support the ability to launch HIPAA compliant services in GCP `europe-west4`
+
+## June 27, 2025 {#june-27-2025}
+
+- We now officially support a Terraform provider for managing database privileges
+ which is also compatible with self-managed deployments. Please refer to the
+ [blog](https://clickhouse.com/blog/new-terraform-provider-manage-clickhouse-database-users-roles-and-privileges-with-code)
+ and our [docs](https://registry.terraform.io/providers/ClickHouse/clickhousedbops/latest/docs)
+ for more information.
+- Enterprise tier services can now enlist in the [slow release channel](/manage/updates/#slow-release-channel-deferred-upgrades) to defer
+ upgrades by two weeks after the regular release to permit additional time for
+ testing.
+
+## June 13, 2025 {#june-13-2025}
+
+- We're excited to announce that ClickHouse Cloud Dashboards are now generally available. Dashboards allow users to visualize queries on dashboards, interact with data via filters and query parameters, and manage sharing.
+- API key IP filters: we are introducing an additional layer of protection for your interactions with ClickHouse Cloud. When generating an API key, you may setup an IP allow list to limit where the API key may be used. Please refer to the [documentation](https://clickhouse.com/docs/cloud/security/setting-ip-filters) for details.
+
+## May 30, 2025 {#may-30-2025}
+
+- We're excited to announce general availability of **ClickPipes for Postgres CDC**
+ in ClickHouse Cloud. With just a few clicks, you can now replicate your Postgres
+ databases and unlock blazing-fast, real-time analytics. The connector delivers
+ faster data synchronization, latency as low as a few seconds, automatic schema changes,
+ fully secure connectivity, and more. Refer to the
+ [blog](https://clickhouse.com/blog/postgres-cdc-connector-clickpipes-ga) for
+ more information. To get started, refer to the instructions [here](https://clickhouse.com/docs/integrations/clickpipes/postgres).
+
+- Introduced new improvements to the SQL console dashboards:
+ - Sharing: You can share your dashboard with your team members. Four levels of access are supported, that can be adjusted both globally and on a per-user basis:
+ - _Write access_: Add/edit visualizations, refresh settings, interact with dashboards via filters.
+ - _Owner_: Share a dashboard, delete a dashboard, and all other permissions of a user with "write access".
+ - _Read-only access_: View and interact with dashboard via filters
+ - _No access_: Cannot view a dashboard
+ - For existing dashboards that have already been created, Organization Administrators can assign existing dashboards to themselves as owners.
+ - You can now add a table or chart from the SQL console to a dashboard from the query view.
+
+
+
+- We are enlisting preview participants for [Distributed cache](https://clickhouse.com/cloud/distributed-cache-waitlist)
+ for AWS and GCP. Read more in the [blog](https://clickhouse.com/blog/building-a-distributed-cache-for-s3).
+
+## May 16, 2025 {#may-16-2025}
+
+- Introduced the Resource Utilization Dashboard which provides a view of
+ resources being used by a service in ClickHouse Cloud. The following metrics
+ are scraped from system tables, and displayed on this dashboard:
+ * Memory & CPU: Graphs for `CGroupMemoryTotal` (Allocated Memory), `CGroupMaxCPU` (allocated CPU),
+ `MemoryResident` (memory used), and `ProfileEvent_OSCPUVirtualTimeMicroseconds` (CPU used)
+ * Data Transfer: Graphs showing data ingress and egress from ClickHouse Cloud. Learn more [here](/cloud/manage/network-data-transfer).
+- We're excited to announce the launch of our new ClickHouse Cloud Prometheus/Grafana mix-in,
+ built to simplify monitoring for your ClickHouse Cloud services.
+ This mix-in uses our Prometheus-compatible API endpoint to seamlessly integrate
+ ClickHouse metrics into your existing Prometheus and Grafana setup. It includes
+ a pre-configured dashboard that gives you real-time visibility into the health
+ and performance of your services. Refer to the launch [blog](https://clickhouse.com/blog/monitor-with-new-prometheus-grafana-mix-in) to read more.
+
+## April 18, 2025 {#april-18-2025}
+
+- Introduced a new **Member** organization level role and two new service level
+ roles: **Service Admin** and **Service Read Only**.
+ **Member** is an organization level role that is assigned to SAML SSO users by
+ default and provides only sign-in and profile update capabilities. **Service Admin**
+ and **Service Read Only** roles for one or more services can be assigned to users
+ with **Member**, **Developer**, or **Billing Admin** roles. For more information
+ see ["Access control in ClickHouse Cloud"](https://clickhouse.com/docs/cloud/security/cloud-access-management/overview)
+- ClickHouse Cloud now offers **HIPAA** and **PCI** services in the following regions
+ for **Enterprise** customers: AWS eu-central-1, AWS eu-west-2, AWS us-east-2.
+- Introduced **user facing notifications for ClickPipes**. This feature sends
+ automatic alerts for ClickPipes failures via email, ClickHouse Cloud UI, and
+ Slack. Notifications via email and UI are enabled by default and can be
+ configured per pipe. For **Postgres CDC ClickPipes**, alerts also cover
+ replication slot threshold (configurable in the **Settings** tab), specific error
+ types, and self-serve steps to resolve failures.
+- **MySQL CDC private preview** is now open. This lets customers replicate MySQL
+ databases to ClickHouse Cloud in a few clicks, enabling fast analytics and
+ removing the need for external ETL tools. The connector supports both continuous
+ replication and one-time migrations, whether MySQL is on the cloud (RDS,
+ Aurora, Cloud SQL, Azure, etc.) or on-premises. You can sign up to the private
+ preview by [following this link](https://clickhouse.com/cloud/clickpipes/mysql-cdc-connector).
+- Introduced **AWS PrivateLink for ClickPipes**. You can use AWS PrivateLink to
+ establish secure connectivity between VPCs, AWS services, your on-premises
+ systems, and ClickHouse Cloud. This can be done without exposing traffic to
+ the public internet while moving data from sources like Postgres, MySQL, and
+ MSK on AWS. It also supports cross-region access through VPC service endpoints.
+ PrivateLink connectivity set-up is now [fully self-serve](https://clickhouse.com/docs/integrations/clickpipes/aws-privatelink)
+ through ClickPipes.
+
+## April 4, 2025 {#april-4-2025}
+
+- Slack notifications for ClickHouse Cloud: ClickHouse Cloud now supports Slack notifications for billing, scaling, and ClickPipes events, in addition to in-console and email notifications. These notifications are sent via the ClickHouse Cloud Slack application. Organization admins can configure these notifications via the notification center by specifying slack channels to which notifications should be sent.
+- Users running Production and Development services will now see ClickPipes and data transfer usage price on their bills.
+
+## March 21, 2025 {#march-21-2025}
+
+- Cross-region Private Link connectivity on AWS is now in Beta. Please refer to
+ ClickHouse Cloud private link [docs](/manage/security/aws-privatelink) for
+ details of how to set up and list of supported regions.
+- The maximum replica size available for services on AWS is now set to 236 GiB RAM.
+ This allows for efficient utilization, while ensuring we have resources
+ allocated to background processes.
+
+## March 7, 2025 {#march-7-2025}
+
+- New `UsageCost` API endpoint: The API specification now supports a new endpoint
+ for retrieving usage information. This is an organization endpoint and usage
+ costs can be queried for a maximum of 31 days. The metrics that can be
+ retrieved include Storage, Compute, Data Transfer and ClickPipes. Please refer
+ to the [documentation](https://clickhouse.com/docs/cloud/manage/api/usageCost-api-reference) for details.
+- Terraform provider [v2.1.0](https://registry.terraform.io/providers/ClickHouse/clickhouse/2.1.0/docs/resources/service#nestedatt--endpoints_configuration) release supports enabling the MySQL endpoint.
+
+## February 21, 2025 {#february-21-2025}
+
+### ClickHouse Bring Your Own Cloud (BYOC) for AWS is now generally available {#clickhouse-byoc-for-aws-ga}
+
+In this deployment model, data plane components (compute, storage, backups, logs, metrics)
+run in the Customer VPC, while the control plane (web access, APIs, and billing)
+remains within the ClickHouse VPC. This setup is ideal for large workloads that
+need to comply with strict data residency requirements by ensuring all data stays
+within a secure customer environment.
+
+- For more details, you can refer to the [documentation](/cloud/reference/byoc/overview) for BYOC
+ or read our [announcement blog post](https://clickhouse.com/blog/announcing-general-availability-of-clickhouse-bring-your-own-cloud-on-aws).
+- [Contact us](https://clickhouse.com/cloud/bring-your-own-cloud) to request access.
+
+### Postgres CDC connector for ClickPipes {#postgres-cdc-connector-for-clickpipes}
+
+Postgres CDC connector for ClickPipes allows users to seamlessly replicate their Postgres databases to ClickHouse Cloud.
+
+- To get started, refer to the [documentation](https://clickhouse.com/docs/integrations/clickpipes/postgres) for ClickPipes Postgres CDC connector.
+- For more information on customer use cases and features, please refer to the [landing page](https://clickhouse.com/cloud/clickpipes/postgres-cdc-connector) and the [launch blog](https://clickhouse.com/blog/postgres-cdc-connector-clickpipes-public-beta).
+
+### PCI compliance for ClickHouse Cloud on AWS {#pci-compliance-for-clickhouse-cloud-on-aws}
+
+ClickHouse Cloud now supports **PCI-compliant services** for **Enterprise tier**
+customers in **us-east-1** and **us-west-2** regions. Users who wish to launch
+a service in a PCI-compliant environment can contact [support](https://clickhouse.com/support/program)
+for assistance.
+
+### Transparent Data Encryption and Customer Managed Encryption Keys on Google Cloud Platform {#tde-and-cmek-on-gcp}
+
+Support for **Transparent Data Encryption (TDE)** and **Customer Managed
+Encryption Keys (CMEK)** is now available for ClickHouse Cloud on **Google Cloud Platform (GCP)**.
+
+- Please refer to the [documentation](https://clickhouse.com/docs/cloud/security/cmek#transparent-data-encryption-tde) of these features for more information.
+
+### AWS Middle East (UAE) availability {#aws-middle-east-uae-availability}
+
+New region support is added for ClickHouse Cloud, which is now available in the
+**AWS Middle East (UAE) me-central-1** region.
+
+### ClickHouse Cloud guardrails {#clickhouse-cloud-guardrails}
+
+To promote best practices and ensure stable use of ClickHouse Cloud, we are
+introducing guardrails for the number of tables, databases, partitions and parts
+in use.
+
+- Refer to the [usage limits](https://clickhouse.com/docs/cloud/bestpractices/usage-limits)
+ section of the documentation for details.
+- If your service is already above these limits, we will permit a 10% increase.
+ Please contact [support](https://clickhouse.com/support/program) if you have any questions.
+
+## January 27, 2025 {#january-27-2025}
+
+### Changes to ClickHouse Cloud tiers {#changes-to-clickhouse-cloud-tiers}
+
+We are dedicated to adapting our products to meet the ever-changing requirements of our customers. Since its introduction in GA over the past two years, ClickHouse Cloud has evolved substantially, and we've gained invaluable insights into how our customers leverage our cloud offerings.
+
+We are introducing new features to optimize the sizing and cost-efficiency of ClickHouse Cloud services for your workloads. These include **compute-compute separation**, high-performance machine types, and **single-replica services**. We are also evolving automatic scaling and managed upgrades to execute in a more seamless and reactive fashion.
+
+We are adding a **new Enterprise tier** to serve the needs of the most demanding customers and workloads, with focus on industry-specific security and compliance features, even more controls over underlying hardware and upgrades, and advanced disaster recovery features.
+
+To support these changes, we are restructuring our current **Development** and **Production** tiers to more closely match how our evolving customer base is using our offerings. We are introducing the **Basic** tier, oriented toward users that are testing out new ideas and projects, and the **Scale** tier, matching users working with production workloads and data at scale.
+
+You can read about these and other functional changes in this [blog](https://clickhouse.com/blog/evolution-of-clickhouse-cloud-new-features-superior-performance-tailored-offerings). Existing customers will need to take action to select a [new plan](https://clickhouse.com/pricing). Customer-facing communication was sent via email to organization administrators.
+
+### Warehouses: Compute-compute separation (GA) {#warehouses-compute-compute-separation-ga}
+
+Compute-compute separation (also known as "Warehouses") is Generally Available; please refer to [blog](https://clickhouse.com/blog/introducing-warehouses-compute-compute-separation-in-clickhouse-cloud) for more details and the [documentation](/cloud/reference/warehouses).
+
+### Single-replica services {#single-replica-services}
+
+We are introducing the concept of a "single-replica service", both as a standalone offering and within warehouses. As a standalone offering, single-replica services are size limited and intended to be used for small test workloads. Within warehouses, single-replica services can be deployed at larger sizes, and utilized for workloads not requiring high availability at scale, such as restartable ETL jobs.
+
+### Vertical auto-scaling improvements {#vertical-auto-scaling-improvements}
+
+We are introducing a new vertical scaling mechanism for compute replicas, which we call "Make Before Break" (MBB). This approach adds one or more replicas of the new size before removing the old replicas, preventing any loss of capacity during scaling operations. By eliminating the gap between removing existing replicas and adding new ones, MBB creates a more seamless and less disruptive scaling process. It is especially beneficial in scale-up scenarios, where high resource utilization triggers the need for additional capacity, since removing replicas prematurely would only exacerbate the resource constraints.
+
+### Horizontal scaling (GA) {#horizontal-scaling-ga}
+
+Horizontal scaling is now Generally Available. Users can add additional replicas to scale out their service through the APIs and the cloud console. Please refer to the [documentation](/manage/scaling#manual-horizontal-scaling) for information.
+
+### Configurable backups {#configurable-backups}
+
+We now support the ability for customers to export backups to their own cloud account; please refer to the [documentation](/cloud/manage/backups/configurable-backups) for additional information.
+
+### Managed upgrade improvements {#managed-upgrade-improvements}
+
+Safe managed upgrades deliver significant value to our users by allowing them to stay current with the database as it moves forward to add features. With this rollout, we applied the "make before break" (or MBB) approach to upgrades, further reducing impact to running workloads.
+
+### HIPAA support {#hipaa-support}
+
+We now support HIPAA in compliant regions, including AWS `us-east-1`, `us-west-2` and GCP `us-central1`, `us-east1`. Customers wishing to onboard must sign a Business Associate Agreement (BAA) and deploy to the compliant version of the region. For more information on HIPAA, please refer to the [documentation](/cloud/security/compliance-overview).
+
+### Scheduled upgrades {#scheduled-upgrades}
+
+Users can schedule upgrades for their services. This feature is supported for Enterprise tier services only. For more information on Scheduled upgrades, please refer to the [documentation](/manage/updates).
+
+### Language client support for complex types {#language-client-support-for-complex-types}
+
+[Golang](https://github.com/ClickHouse/clickhouse-go/releases/tag/v2.30.1), [Python](https://github.com/ClickHouse/clickhouse-connect/releases/tag/v0.8.11), and [NodeJS](https://github.com/ClickHouse/clickhouse-js/releases/tag/1.10.1) clients added support for Dynamic, Variant, and JSON types.
+
+### DBT support for refreshable materialized views {#dbt-support-for-refreshable-materialized-views}
+
+DBT now [supports Refreshable Materialized Views](https://github.com/ClickHouse/dbt-clickhouse/releases/tag/v1.8.7) in the `1.8.7` release.
+
+### JWT token support {#jwt-token-support}
+
+Support has been added for JWT-based authentication in the JDBC driver v2, clickhouse-java, [Python](https://github.com/ClickHouse/clickhouse-connect/releases/tag/v0.8.12), and[ NodeJS](https://github.com/ClickHouse/clickhouse-js/releases/tag/1.10.0) clients.
+
+JDBC / Java will be in[ 0.8.0](https://github.com/ClickHouse/clickhouse-java/releases/tag/v0.8.0) when it's released - ETA pending.
+
+### Prometheus integration improvements {#prometheus-integration-improvements}
+
+We've added several enhancements for the Prometheus integration:
+
+- **Organization-level endpoint**. We've introduced an enhancement to our Prometheus integration for ClickHouse Cloud. In addition to service-level metrics, the API now includes an endpoint for **organization-level metrics**. This new endpoint automatically collects metrics for all services within your organization, streamlining the process of exporting metrics into your Prometheus collector. These metrics can be integrated with visualization tools like Grafana and Datadog for a more comprehensive view of your organization's performance.
+
+ This feature is available now for all users. You can find more details [here](/integrations/prometheus).
+
+- **Filtered metrics**. We've added support for returning a filtered list of metrics in our Prometheus integration for ClickHouse Cloud. This feature helps reduce response payload size by enabling you to focus on metrics that are critical for monitoring the health of your service.
+
+ This functionality is available via an optional query parameter in the API, making it easier to optimize your data collection and streamline integrations with tools like Grafana and Datadog.
+
+ The filtered metrics feature is now available for all users. You can find more details [here](/integrations/prometheus).
+
+## December 20, 2024 {#december-20-2024}
+
+### Marketplace subscription organization attachment {#marketplace-subscription-organization-attachment}
+
+You can now attach your new marketplace subscription to an existing ClickHouse Cloud organization. Once you finish subscribing to the marketplace and redirect to ClickHouse Cloud, you can connect an existing organization created in the past to the new marketplace subscription. From this point, your resources in the organization will be billed via the marketplace.
+
+
+
+### Force OpenAPI key expiration {#force-openapi-key-expiration}
+
+It is now possible to restrict the expiry options of API keys so you don't create unexpired OpenAPI keys. Please contact the ClickHouse Cloud Support team to enable these restrictions for your organization.
+
+### Custom emails for notifications {#custom-emails-for-notifications}
+
+Org Admins can now add more email addresses to a specific notification as additional recipients. This is useful in case you want to send notifications to an alias or to other users within your organization who might not be users of ClickHouse Cloud. To configure this, go to the Notification Settings from the cloud console and edit the email addresses that you want to receive the email notifications.
+
+## December 6, 2024 {#december-6-2024}
+
+### BYOC (beta) {#byoc-beta}
+
+Bring Your Own Cloud for AWS is now available in Beta. This deployment model allows you to deploy and run ClickHouse Cloud in your own AWS account. We support deployments in 11+ AWS regions, with more coming soon. Please [contact support](https://clickhouse.com/support/program) for access. Note that this deployment is reserved for large-scale deployments.
+
+### Postgres Change Data Capture (CDC) connector in ClickPipes {#postgres-change-data-capture-cdc-connector-in-clickpipes}
+
+This turnkey integration enables customers to replicate their Postgres databases to ClickHouse Cloud in just a few clicks and leverage ClickHouse for blazing-fast analytics. You can use this connector for both continuous replication and one-time migrations from Postgres.
+
+### Dashboards (beta) {#dashboards-beta}
+
+This week, we're excited to announce the Beta launch of Dashboards in ClickHouse Cloud. With Dashboards, users can turn saved queries into visualizations, organize visualizations onto dashboards, and interact with dashboards using query parameters. To get started, follow the [dashboards documentation](/cloud/manage/dashboards).
+
+
+
+### Query API endpoints (GA) {#query-api-endpoints-ga}
+
+We are excited to announce the GA release of Query API Endpoints in ClickHouse Cloud. Query API Endpoints allow you to spin up RESTful API endpoints for saved queries in just a couple of clicks and begin consuming data in your application without wrangling language clients or authentication complexity. Since the initial launch, we have shipped a number of improvements, including:
+
+* Reducing endpoint latency, especially for cold-starts
+* Increased endpoint RBAC controls
+* Configurable CORS-allowed domains
+* Result streaming
+* Support for all ClickHouse-compatible output formats
+
+In addition to these improvements, we are excited to announce generic query API endpoints that, leveraging our existing framework, allow you to execute arbitrary SQL queries against your ClickHouse Cloud service(s). Generic endpoints can be enabled and configured from the service settings page.
+
+To get started, follow the [Query API Endpoints documentation](/cloud/get-started/query-endpoints).
+
+
+
+### Native JSON support (Beta) {#native-json-support-beta}
+
+We are launching Beta for our native JSON support in ClickHouse Cloud. To get started, please get in touch with support[ to enable your cloud service](/cloud/support).
+
+### Vector search using vector similarity indexes (early access) {#vector-search-using-vector-similarity-indexes-early-access}
+
+We are announcing vector similarity indexes for approximate vector search in early access.
+
+ClickHouse already offers robust support for vector-based use cases, with a wide range of [distance functions]https://clickhouse.com/blog/reinvent-2024-product-announcements#vector-search-using-vector-similarity-indexes-early-access) and the ability to perform linear scans. In addition, more recently, we added an experimental[ approximate vector search](/engines/table-engines/mergetree-family/annindexes) approach powered by the [usearch](https://github.com/unum-cloud/usearch) library and the Hierarchical Navigable Small Worlds (HNSW) approximate nearest neighbor search algorithm.
+
+To get started, [please sign up for the early access waitlist](https://clickhouse.com/cloud/vector-search-index-waitlist).
+
+### ClickHouse-connect (Python) and ClickHouse Kafka Connect users {#clickhouse-connect-python-and-clickhouse-kafka-connect-users}
+
+Notification emails went out to customers who had experienced issues where the clients could encounter a `MEMORY_LIMIT_EXCEEDED` exception.
+
+Please upgrade to:
+- Kafka-Connect: > 1.2.5
+- ClickHouse-Connect (Java): > 0.8.6
+
+### ClickPipes now supports cross-VPC resource access on AWS {#clickpipes-now-supports-cross-vpc-resource-access-on-aws}
+
+You can now grant uni-directional access to a specific data source like AWS MSK. With Cross-VPC resource access with AWS PrivateLink and VPC Lattice, you can share individual resources across VPC and account boundaries, or even from on-premise networks without compromising on privacy and security when going over a public network. To get started and set up a resource share, you can read the [announcement post](https://clickhouse.com/blog/clickpipes-crossvpc-resource-endpoints?utm_medium=web&utm_source=changelog).
+
+
+
+### ClickPipes now supports IAM for AWS MSK {#clickpipes-now-supports-iam-for-aws-msk}
+
+You can now use IAM authentication to connect to an MSK broker with AWS MSK ClickPipes. To get started, review our [documentation](/integrations/clickpipes/kafka/best-practices/#iam).
+
+### Maximum replica size for new services on AWS {#maximum-replica-size-for-new-services-on-aws}
+
+From now on, any new services created on AWS will allow a maximum available replica size of 236 GiB.
+
+## November 22, 2024 {#november-22-2024}
+
+### Built-in advanced observability dashboard for ClickHouse Cloud {#built-in-advanced-observability-dashboard-for-clickhouse-cloud}
+
+Previously, the advanced observability dashboard that allows you to monitor ClickHouse server metrics and hardware resource utilization was only available in open-source ClickHouse. We are happy to announce that this feature is now available in the ClickHouse Cloud console.
+
+This dashboard allows you to view queries based on the [system.dashboards](/operations/system-tables/dashboards) table in an all-in-one UI. Visit **Monitoring > Service Health** page to start using the advanced observability dashboard today.
+
+
+
+### AI-powered SQL autocomplete {#ai-powered-sql-autocomplete}
+
+We've improved autocomplete significantly, allowing you to get in-line SQL completions as you write your queries with the new AI Copilot. This feature can be enabled by toggling the **"Enable Inline Code Completion"** setting for any ClickHouse Cloud service.
+
+
+
+### New "billing" role {#new-billing-role}
+
+You can now assign users in your organization to a new **Billing** role that allows them to view and manage billing information without giving them the ability to configure or manage services. Simply invite a new user or edit an existing user's role to assign the **Billing** role.
+
+## November 8, 2024 {#november-8-2024}
+
+### Customer Notifications in ClickHouse Cloud {#customer-notifications-in-clickhouse-cloud}
+
+ClickHouse Cloud now provides in-console and email notifications for several billing and scaling events. Customers can configure these notifications via the cloud console notification center to only appear on the UI, receive emails, or both. You can configure the category and severity of the notifications you receive at the service level.
+
+In future, we will add notifications for other events, as well as additional ways to receive the notifications.
+
+Please see the [ClickHouse docs](/cloud/notifications) to learn more about how to enable notifications for your service.
+
+
+
+
+
+## October 4, 2024 {#october-4-2024}
+
+### ClickHouse Cloud now offers HIPAA-ready services in Beta for GCP {#clickhouse-cloud-now-offers-hipaa-ready-services-in-beta-for-gcp}
+
+Customers looking for increased security for protected health information (PHI) can now onboard to ClickHouse Cloud in [Google Cloud Platform (GCP)](https://cloud.google.com/). ClickHouse has implemented administrative, physical and technical safeguards prescribed by the [HIPAA Security Rule](https://www.hhs.gov/hipaa/for-professionals/security/index.html) and now has configurable security settings that can be implemented, depending on your specific use case and workload. For more information on available security settings, please review our [Security features page](/cloud/security).
+
+Services are available in GCP `us-central-1` to customers with the **Dedicated** service type and require a Business Associate Agreement (BAA). Contact [sales](mailto:sales@clickhouse.com) or [support](https://clickhouse.com/support/program) to request access to this feature or join the wait list for additional GCP, AWS, and Azure regions.
+
+### Compute-compute separation is now in private preview for GCP and Azure {#compute-compute-separation-is-now-in-private-preview-for-gcp-and-azure}
+
+We recently announced the Private Preview for Compute-Compute Separation for AWS. We're happy to announce that it is now available for GCP and Azure.
+
+Compute-compute separation allows you to designate specific services as read-write or read-only services, allowing you to design the optimal compute configuration for your application to optimize cost and performance. Please [read the docs](/cloud/reference/warehouses) for more details.
+
+### Self-service MFA recovery codes {#self-service-mfa-recovery-codes}
+
+Customers using multi-factor authentication can now obtain recovery codes that can be used in the event of a lost phone or accidentally deleted token. Customers enrolling in MFA for the first time will be provided the code on set up. Customers with existing MFA can obtain a recovery code by removing their existing MFA token and adding a new one.
+
+### ClickPipes update: custom certificates, latency insights, and more. {#clickpipes-update-custom-certificates-latency-insights-and-more}
+
+We're excited to share the latest updates for ClickPipes, the easiest way to ingest data into your ClickHouse service. These new features are designed to enhance your control over data ingestion and provide greater visibility into performance metrics.
+
+*Custom Authentication Certificates for Kafka*
+
+ClickPipes for Kafka now supports custom authentication certificates for Kafka brokers using SASL & public SSL/TLS. You can easily upload your own certificate in the SSL Certificate section during ClickPipe setup, ensuring a more secure connection to Kafka.
+
+*Introducing Latency Metrics for Kafka and Kinesis*
+
+Performance visibility is crucial. ClickPipes now features a latency graph, giving you insight into the time between message production (whether from a Kafka Topic or a Kinesis Stream) to ingestion in ClickHouse Cloud. With this new metric, you can keep a closer eye on the performance of your data pipelines and optimize accordingly.
+
+
+
+
+
+*Scaling Controls for Kafka and Kinesis (Private Beta)*
+
+High throughput can demand extra resources to meet your data volume and latency needs. We're introducing horizontal scaling for ClickPipes, available directly through our cloud console. This feature is currently in private beta, allowing you to scale resources more effectively based on your requirements. Please contact [support](https://clickhouse.com/support/program) to join the beta.
+
+*Raw Message Ingestion for Kafka and Kinesis*
+
+It is now possible to ingest an entire Kafka or Kinesis message without parsing it. ClickPipes now offers support for a `_raw_message` [virtual column](/integrations/clickpipes/kafka/reference/#kafka-virtual-columns), allowing users to map the full message into a single String column. This gives you the flexibility to work with raw data as needed.
+
+## August 29, 2024 {#august-29-2024}
+
+### New Terraform provider version - v1.0.0 {#new-terraform-provider-version---v100}
+
+Terraform allows you to control your ClickHouse Cloud services programmatically, then store your configuration as code. Our Terraform provider has almost 200,000 downloads and is now officially v1.0.0. This new version includes improvements such as better retry logic and a new resource to attach private endpoints to your ClickHouse Cloud service. You can download the [Terraform provider here](https://registry.terraform.io/providers/ClickHouse/clickhouse/latest) and view the [full changelog here](https://github.com/ClickHouse/terraform-provider-clickhouse/releases/tag/v1.0.0).
+
+### 2024 SOC 2 Type II report and updated ISO 27001 certificate {#2024-soc-2-type-ii-report-and-updated-iso-27001-certificate}
+
+We are proud to announce the availability of our 2024 SOC 2 Type II report and updated ISO 27001 certificate, both of which include our recently launched services on Azure as well as continued coverage of services in AWS and GCP.
+
+Our SOC 2 Type II demonstrates our ongoing commitment to achieving security, availability, processing integrity and confidentiality of the services we provide to ClickHouse users. For more information, check out [SOC 2 - SOC for Service Organizations: Trust Services Criteria](https://www.aicpa-cima.com/resources/landing/system-and-organization-controls-soc-suite-of-services) issued by the American Institute of Certified Public Accountants (AICPA) and [What is ISO/IEC 27001](https://www.iso.org/standard/27001) from the International Standards Organization (ISO).
+
+Please also check out our [Trust Center](https://trust.clickhouse.com/) for security and compliance documents and reports.
+
+## August 15, 2024 {#august-15-2024}
+
+### Compute-compute separation is now in Private Preview for AWS {#compute-compute-separation-is-now-in-private-preview-for-aws}
+
+For existing ClickHouse Cloud services, replicas handle both reads and writes, and there is no way to configure a certain replica to handle only one kind of operation. We have an upcoming new feature called Compute-compute separation that allows you to designate specific services as read-write or read-only services, allowing you to design the optimal compute configuration for your application to optimize cost and performance.
+
+Our new compute-compute separation feature enables you to create multiple compute node groups, each with its own endpoint, that are using the same object storage folder, and thus, with the same tables, views, etc. Read more about [Compute-compute separation here](/cloud/reference/warehouses). Please [contact support](https://clickhouse.com/support/program) if you would like access to this feature in Private Preview.
+
+
+
+### ClickPipes for S3 and GCS now in GA, Continuous mode support {#clickpipes-for-s3-and-gcs-now-in-ga-continuous-mode-support}
+
+ClickPipes is the easiest way to ingest data into ClickHouse Cloud. We're happy to announce that [ClickPipes](https://clickhouse.com/cloud/clickpipes) for S3 and GCS is now **Generally Available**. ClickPipes supports both one-time batch ingest and "continuous mode". An ingest task will load all the files matched by a pattern from a specific remote bucket into the ClickHouse destination table. In "continuous mode", the ClickPipes job will run constantly, ingesting matching files that get added into the remote object storage bucket as they arrive. This will allow users to turn any object storage bucket into a fully fledged staging area for ingesting data into ClickHouse Cloud. Read more about ClickPipes in [our documentation](/integrations/clickpipes).
+
+## July 18, 2024 {#july-18-2024}
+
+### Prometheus endpoint for metrics is now generally available {#prometheus-endpoint-for-metrics-is-now-generally-available}
+
+In our last cloud changelog, we announced the Private Preview for exporting [Prometheus](https://prometheus.io/) metrics from ClickHouse Cloud. This feature allows you to use the [ClickHouse Cloud API](/cloud/manage/api/api-overview) to get your metrics into tools like [Grafana](https://grafana.com/) and [Datadog](https://www.datadoghq.com/) for visualization. We're happy to announce that this feature is now **Generally Available**. Please see [our docs](/integrations/prometheus) to learn more about this feature.
+
+### Table inspector in Cloud console {#table-inspector-in-cloud-console}
+
+ClickHouse has commands like [`DESCRIBE`](/sql-reference/statements/describe-table) that allow you to introspect your table to examine schema. These commands output to the console, but they are often not convenient to use as you need to combine several queries to retrieve all pertinent data about your tables and columns.
+
+We recently launched a **Table Inspector** in the cloud console which allows you to retrieve important table and column information in the UI, without having to write SQL. You can try out the Table Inspector for your services by checking out the cloud console. It provides information about your schema, storage, compression, and more in one unified interface.
+
+
+
+### New Java Client API {#new-java-client-api}
+
+Our [Java Client](https://github.com/ClickHouse/clickhouse-java) is one of the most popular clients that users use to connect to ClickHouse. We wanted to make it even easier and more intuitive to use, including a re-designed API and various performance optimizations. These changes will make it much easier to connect to ClickHouse from your Java applications. You can read more about how to use the updated Java Client in this [blog post](https://clickhouse.com/blog/java-client-sequel).
+
+### New Analyzer is enabled by default {#new-analyzer-is-enabled-by-default}
+
+For the last couple of years, we've been working on a new analyzer for query analysis and optimization. This analyzer improves query performance and will allow us to make further optimizations, including faster and more efficient `JOIN`s. Previously, it was required that new users enable this feature using the setting `allow_experimental_analyzer`. This improved analyzer is now available on new ClickHouse Cloud services by default.
+
+Stay tuned for more improvements to the analyzer as we have many more optimizations planned.
+
+## June 28, 2024 {#june-28-2024}
+
+### ClickHouse Cloud for Microsoft Azure is now generally available {#clickhouse-cloud-for-microsoft-azure-is-now-generally-available}
+
+We first announced Microsoft Azure support in Beta [this past May](https://clickhouse.com/blog/clickhouse-cloud-is-now-on-azure-in-public-beta). In this latest cloud release, we're happy to announce that our Azure support is transitioning from Beta to Generally Available. ClickHouse Cloud is now available on all the three major cloud platforms: AWS, Google Cloud Platform, and now Microsoft Azure.
+
+This release also includes support for subscriptions via the [Microsoft Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/clickhouse.clickhouse_cloud). The service will initially be supported in the following regions:
+- United States: West US 3 (Arizona)
+- United States: East US 2 (Virginia)
+- Europe: Germany West Central (Frankfurt)
+
+If you'd like any specific region to be supported, please [contact us](https://clickhouse.com/support/program).
+
+### Query log insights {#query-log-insights}
+
+Our new Query Insights UI in the Cloud console makes ClickHouse's built-in query log a lot easier to use. ClickHouse's `system.query_log` table is a key source of information for query optimization, debugging, and monitoring overall cluster health and performance. There's just one caveat: with 70+ fields and multiple records per query, interpreting the query log represents a steep learning curve. This initial version of query insights provides a blueprint for future work to simplify query debugging and optimization patterns. We'd love to hear your feedback as we continue to iterate on this feature, so please reach out—your input will be greatly appreciated.
+
+
+
+### Prometheus endpoint for metrics (private preview) {#prometheus-endpoint-for-metrics-private-preview}
+
+Perhaps one of our most requested features: you can now export [Prometheus](https://prometheus.io/) metrics from ClickHouse Cloud to [Grafana](https://grafana.com/) and [Datadog](https://www.datadoghq.com/) for visualization. Prometheus provides an open-source solution to monitor ClickHouse and set up custom alerts. Access to Prometheus metrics for your ClickHouse Cloud service is available via the [ClickHouse Cloud API](/integrations/prometheus). This feature is currently in Private Preview. Please reach out to the [support team](https://clickhouse.com/support/program) to enable this feature for your organization.
+
+
+
+### Other features {#other-features}
+- [Configurable backups](/cloud/manage/backups/configurable-backups) to configure custom backup policies like frequency, retention, and schedule are now Generally Available.
+
+## June 13, 2024 {#june-13-2024}
+
+### Configurable offsets for Kafka ClickPipes Connector (Beta) {#configurable-offsets-for-kafka-clickpipes-connector-beta}
+
+Until recently, whenever you set up a new [Kafka Connector for ClickPipes](/integrations/clickpipes/kafka), it always consumed data from the beginning of the Kafka topic. In this situation, it may not be flexible enough to fit specific use cases when you need to reprocess historical data, monitor new incoming data, or resume from a precise point.
+
+ClickPipes for Kafka has added a new feature that enhances the flexibility and control over data consumption from Kafka topics. You can now configure the offset from which data is consumed.
+
+The following options are available:
+- From the beginning: Start consuming data from the very beginning of the Kafka topic. This option is ideal for users who need to reprocess all historical data.
+- From latest: Begin consuming data from the most recent offset. This is useful for users who are only interested in new messages.
+- From a timestamp: Start consuming data from messages that were produced at or after a specific timestamp. This feature allows for more precise control, enabling users to resume processing from an exact point in time.
+
+
+
+### Enroll services to the Fast release channel {#enroll-services-to-the-fast-release-channel}
+
+The Fast release channel allows your services to receive updates ahead of the release schedule. Previously, this feature required assistance from the support team to enable. Now, you can use the ClickHouse Cloud console to enable this feature for your services directly. Simply navigate to **Settings**, and click **Enroll in fast releases**. Your service will now receive updates as soon as they are available.
+
+
+
+### Terraform support for horizontal scaling {#terraform-support-for-horizontal-scaling}
+
+ClickHouse Cloud supports [horizontal scaling](/manage/scaling#how-scaling-works-in-clickhouse-cloud), or the ability to add additional replicas of the same size to your services. Horizontal scaling improves performance and parallelization to support concurrent queries. Previously, adding more replicas required either using the ClickHouse Cloud console or the API. You can now use Terraform to add or remove replicas from your service, allowing you to programmatically scale your ClickHouse services as needed.
+
+Please see the [ClickHouse Terraform provider](https://registry.terraform.io/providers/ClickHouse/clickhouse/latest/docs) for more information.
+
+## May 30, 2024 {#may-30-2024}
+
+### Share queries with your teammates {#share-queries-with-your-teammates}
+
+When you write a SQL query, there's a good chance that other people on your team would also find that query useful. Previously, you'd have to send a query over Slack or email and there would be no way for a teammate to automatically receive updates for that query if you edit it.
+
+We're happy to announce that you can now easily share queries via the ClickHouse Cloud console. From the query editor, you can share a query directly with your entire team or a specific team member. You can also specify whether they have read or write only access. Click on the **Share** button in the query editor to try out the new shared queries feature.
+
+
+
+### ClickHouse Cloud for Microsoft Azure is now in beta {#clickhouse-cloud-for-microsoft-azure-is-now-in-beta}
+
+We've finally launched the ability to create ClickHouse Cloud services on Microsoft Azure. We already have many customers using ClickHouse Cloud on Azure in production as part of our Private Preview program. Now, anyone can create their own service on Azure. All of your favorite ClickHouse features that are supported on AWS and GCP will also work on Azure.
+
+We expect to have ClickHouse Cloud for Azure ready for General Availability in the next few weeks. [Read this blog post](https://clickhouse.com/blog/clickhouse-cloud-is-now-on-azure-in-public-beta) to learn more, or create your new service using Azure via the ClickHouse Cloud console.
+
+Note: **Development** services for Azure are not supported at this time.
+
+### Set up Private Link via the Cloud console {#set-up-private-link-via-the-cloud-console}
+
+Our Private Link feature allows you to connect your ClickHouse Cloud services with internal services in your cloud provider account without having to direct traffic to the public internet, saving costs and enhancing security. Previously, this was difficult to set up and required using the ClickHouse Cloud API.
+
+You can now configure private endpoints in just a few clicks directly from the ClickHouse Cloud console. Simply go to your service's **Settings**, go to the **Security** section and click **Set up private endpoint**.
+
+
+
+## May 17, 2024 {#may-17-2024}
+
+### Ingest data from Amazon Kinesis using ClickPipes (beta) {#ingest-data-from-amazon-kinesis-using-clickpipes-beta}
+
+ClickPipes is an exclusive service provided by ClickHouse Cloud to ingest data without code. Amazon Kinesis is AWS's fully managed streaming service to ingest and store data streams for processing. We are thrilled to launch the ClickPipes beta for Amazon Kinesis, one of our most requested integrations. We're looking to add more integrations to ClickPipes, so please let us know which data source you'd like us to support. Read more about this feature [here](https://clickhouse.com/blog/clickpipes-amazon-kinesis).
+
+You can try the new Amazon Kinesis integration for ClickPipes in the cloud console:
+
+
+
+### Configurable backups (private preview) {#configurable-backups-private-preview}
+
+Backups are important for every database (no matter how reliable), and we've taken backups very seriously since day 1 of ClickHouse Cloud. This week, we launched Configurable Backups, which allows for much more flexibility for your service's backups. You can now control start time, retention, and frequency. This feature is available for **Production** and **Dedicated** services and is not available for **Development** services. As this feature is in private preview, please contact support@clickhouse.com to enable this for your service. Read more about configurable backups [here](https://clickhouse.com/blog/configurable-backups-in-clickhouse-cloud).
+
+### Create APIs from your SQL queries (Beta) {#create-apis-from-your-sql-queries-beta}
+
+When you write a SQL query for ClickHouse, you still need to connect to ClickHouse via a driver to expose your query to your application. Now with our now **Query Endpoints** feature, you can execute SQL queries directly from an API without any configuration. You can specify the query endpoints to return JSON, CSV, or TSVs. Click the "Share" button in the cloud console to try this new feature with your queries. Read more about Query Endpoints [here](https://clickhouse.com/blog/automatic-query-endpoints).
+
+
+
+### Official ClickHouse Certification is now available {#official-clickhouse-certification-is-now-available}
+
+There are 12 free training modules in ClickHouse Develop training course. Prior to this week, there was no official way to prove your mastery in ClickHouse. We recently launched an official exam to become a **ClickHouse Certified Developer**. Completing this exam allows you to share with current and prospective employers your mastery in ClickHouse on topics including data ingestion, modeling, analysis, performance optimization, and more. You can take the exam [here](https://clickhouse.com/learn/certification) or read more about ClickHouse certification in this [blog post](https://clickhouse.com/blog/first-official-clickhouse-certification).
+
+## April 25, 2024 {#april-25-2024}
+
+### Load data from S3 and GCS using ClickPipes {#load-data-from-s3-and-gcs-using-clickpipes}
+
+You may have noticed in our newly released cloud console that there's a new section called "Data sources". The "Data sources" page is powered by ClickPipes, a native ClickHouse Cloud feature which lets you easily insert data from a variety of sources into ClickHouse Cloud.
+
+Our most recent ClickPipes update features the ability to directly upload data directly from Amazon S3 and Google Cloud Storage. While you can still use our built-in table functions, ClickPipes is a fully-managed service via our UI that will let you ingest data from S3 and GCS in just a few clicks. This feature is still in Private Preview, but you can try it out today via the cloud console.
+
+
+
+### Use Fivetran to load data from 500+ sources into ClickHouse Cloud {#use-fivetran-to-load-data-from-500-sources-into-clickhouse-cloud}
+
+ClickHouse can quickly query all of your large datasets, but of course, your data must first be inserted into ClickHouse. Thanks to Fivetran's comprehensive range of connectors, users can now quickly load data from over 500 sources. Whether you need to load data from Zendesk, Slack, or any of your favorite applications, the new ClickHouse destination for Fivetran now lets you use ClickHouse as the target database for your application data.
+
+This is an open-source integration built over many months of hard work by our Integrations team. You can check out our [release blog post](https://clickhouse.com/blog/fivetran-destination-clickhouse-cloud) here and the [GitHub repository](https://github.com/ClickHouse/clickhouse-fivetran-destination).
+
+### Other changes {#other-changes}
+
+**Console changes**
+- Output formats support in the SQL console
+
+**Integrations changes**
+- ClickPipes Kafka connector supports multi-broker setup
+- PowerBI connector supports providing ODBC driver configuration options.
+
+## April 18, 2024 {#april-18-2024}
+
+### AWS Tokyo region is now available for ClickHouse Cloud {#aws-tokyo-region-is-now-available-for-clickhouse-cloud}
+
+This release introduces the new AWS Tokyo region (`ap-northeast-1`) for ClickHouse Cloud. Because we want ClickHouse to be the fastest database, we are continuously adding more regions for every cloud to reduce latency as much as possible. You can create your new service in Tokyo in the updated cloud console.
+
+
+
+Other changes:
+
+### Console changes {#console-changes}
+- Avro format support for ClickPipes for Kafka is now Generally Available
+- Implement full support for importing resources (services and private endpoints) for the Terraform provider
+
+### Integrations changes {#integrations-changes}
+- NodeJS client major stable release: Advanced TypeScript support for query + ResultSet, URL configuration
+- Kafka Connector: Fixed a bug with ignoring exceptions when writing into DLQ, added support for Avro Enum type, published guides for using the connector on [MSK](https://www.youtube.com/watch?v=6lKI_WlQ3-s) and [Confluent Cloud](https://www.youtube.com/watch?v=SQAiPVbd3gg)
+- Grafana: Fixed support Nullable type support in UI, fixed support for dynamic OTEL tracing table name
+- DBT: Fixed model settings for custom materialization.
+- Java client: Fixed bug with incorrect error code parsing
+- Python client: Fixed parameters binding for numeric types, fixed bugs with number list in query binding, added SQLAlchemy Point support.
+
+## April 4, 2024 {#april-4-2024}
+
+### Introducing the new ClickHouse Cloud console {#introducing-the-new-clickhouse-cloud-console}
+
+This release introduces a private preview for the new cloud console.
+
+At ClickHouse, we are constantly thinking about how to improve the developer experience. We recognize that it is not enough to provide the fastest real-time data warehouse, it also needs to be easy to use and manage.
+
+Thousands of ClickHouse Cloud users execute billions of queries on our SQL console every month, which is why we've decided to invest more in a world-class console to make it easier than ever to interact with your ClickHouse Cloud services. Our new cloud console experience combines our standalone SQL editor with our management console in one intuitive UI.
+
+Select customers will receive a preview of our new cloud console experience – a unified and immersive way to explore and manage your data in ClickHouse. Please reach out to us at support@clickhouse.com if you'd like priority access.
+
+
+
+## March 28, 2024 {#march-28-2024}
+
+This release introduces support for Microsoft Azure, Horizontal Scaling via API, and Release Channels in Private Preview.
+
+### General updates {#general-updates}
+- Introduced support for Microsoft Azure in Private Preview. To gain access, please reach out to account management or support, or join the [waitlist](https://clickhouse.com/cloud/azure-waitlist).
+- Introduced Release Channels – the ability to specify the timing of upgrades based on environment type. In this release, we added the "fast" release channel, which enables you to upgrade your non-production environments ahead of production (please contact support to enable).
+
+### Administration changes {#administration-changes}
+- Added support for horizontal scaling configuration via API (private preview, please contact support to enable)
+- Improved autoscaling to scale up services encountering out of memory errors on startup
+- Added support for CMEK for AWS via the Terraform provider
+
+### Console changes {#console-changes-1}
+- Added support for Microsoft social login
+- Added parameterized query sharing capabilities in SQL console
+- Improved query editor performance significantly (from 5 secs to 1.5 sec latency in some EU regions)
+
+### Integrations changes {#integrations-changes-1}
+- ClickHouse OpenTelemetry exporter: [Added support](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/31920) for ClickHouse replication table engine and [added integration tests](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/31896)
+- ClickHouse DBT adapter: Added support for [materialization macro for dictionaries](https://github.com/ClickHouse/dbt-clickhouse/pull/255), [tests for TTL expression support](https://github.com/ClickHouse/dbt-clickhouse/pull/254)
+- ClickHouse Kafka Connect Sink: [Added compatibility](https://github.com/ClickHouse/clickhouse-kafka-connect/issues/350) with Kafka plugin discovery (community contribution)
+- ClickHouse Java Client: Introduced [a new package](https://github.com/ClickHouse/clickhouse-java/pull/1574) for new client API and [added test coverage](https://github.com/ClickHouse/clickhouse-java/pull/1575) for Cloud tests
+- ClickHouse NodeJS Client: Extended tests and documentation for new HTTP keep-alive behavior. Available since v0.3.0 release
+- ClickHouse Golang Client: [Fixed a bug](https://github.com/ClickHouse/clickhouse-go/pull/1236) for Enum as a key in Map; [fixed a bug](https://github.com/ClickHouse/clickhouse-go/pull/1237) when an errored connection is left in the connection pool (community contribution)
+- ClickHouse Python Client: [Added support](https://github.com/ClickHouse/clickhouse-connect/issues/155) for query streaming via PyArrow (community contribution)
+
+### Security updates {#security-updates}
+- Updated ClickHouse Cloud to prevent ["Role-based Access Control is bypassed when query caching is enabled"](https://github.com/ClickHouse/ClickHouse/security/advisories/GHSA-45h5-f7g3-gr8r) (CVE-2024-22412)
+
+## March 14, 2024 {#march-14-2024}
+
+This release makes available in early access the new Cloud console experience, ClickPipes for bulk loading from S3 and GCS, and support for Avro format in ClickPipes for Kafka. It also upgrades the ClickHouse database version to 24.1, bringing support for new functions as well as performance and resource usage optimizations.
+
+### Console changes {#console-changes-2}
+- New Cloud console experience is available in early access (please contact support if you're interested in participating).
+- ClickPipes for bulk loading from S3 and GCS are available in early access (please contact support if you're interested in participating).
+- Support for Avro format in ClickPipes for Kafka is available in early access (please contact support if you're interested in participating).
+
+### ClickHouse version upgrade {#clickhouse-version-upgrade}
+- Optimizations for FINAL, vectorization improvements, faster aggregations - see [23.12 release blog](https://clickhouse.com/blog/clickhouse-release-23-12#optimizations-for-final) for details.
+- New functions for processing punycode, string similarity, detecting outliers, as well as memory optimizations for merges and Keeper - see [24.1 release blog](https://clickhouse.com/blog/clickhouse-release-24-01) and [presentation](https://presentations.clickhouse.com/release_24.1/) for details.
+- This ClickHouse cloud version is based on 24.1, you can see dozens of new features, performance improvements, and bug fixes. See core database [changelogs](/whats-new/changelog/2023#2312) for details.
+
+### Integrations changes {#integrations-changes-2}
+- Grafana: Fixed dashboard migration for v4, ad-hoc filtering logic
+- Tableau Connector: Fixed DATENAME function and rounding for "real" arguments
+- Kafka Connector: Fixed NPE in connection initialization, added ability to specify JDBC driver options
+- Golang client: Reduced the memory footprint for handling responses, fixed Date32 extreme values, fixed error reporting when compression is enabled
+- Python client: Improved timezone support in datetime parameters, improved performance for Pandas DataFrame
+
+## February 29, 2024 {#february-29-2024}
+
+This release improves SQL console application load time, adds support for SCRAM-SHA-256 authentication in ClickPipes, and extends nested structure support to Kafka Connect.
+
+### Console changes {#console-changes-3}
+- Optimized SQL console application initial load time
+- Fixed SQL console race condition resulting in 'authentication failed' error
+- Fixed behavior on the monitoring page where most recent memory allocation value was sometimes incorrect
+- Fixed behavior where SQL console sometimes issue duplicate KILL QUERY commands
+- Added support in ClickPipes for SCRAM-SHA-256 authentication method for Kafka-based data sources
+
+### Integrations changes {#integrations-changes-3}
+- Kafka Connector: Extended support for complex nested structures (Array, Map); added support for FixedString type; added support for ingestion into multiple databases
+- Metabase: Fixed incompatibility with ClickHouse lower than version 23.8
+- DBT: Added the ability to pass settings to model creation
+- Node.js client: Added support for long-running queries (>1hr) and handling of empty values gracefully
+
+## February 15, 2024 {#february-15-2024}
+
+This release upgrades the core database version, adds ability to set up private links via Terraform, and adds support for exactly once semantics for asynchronous inserts through Kafka Connect.
+
+### ClickHouse version upgrade {#clickhouse-version-upgrade-1}
+- S3Queue table engine for continuous, scheduled data loading from S3 is production-ready - [see 23.11 release blog](https://clickhouse.com/blog/clickhouse-release-23-11) for details.
+- Significant performance improvements for FINAL and vectorization improvements for SIMD instructions resulting in faster queries - [see 23.12 release blog](https://clickhouse.com/blog/clickhouse-release-23-12#optimizations-for-final) for details.
+- This ClickHouse cloud version is based on 23.12, you can see dozens of new features, performance improvements, and bug fixes. See [core database changelogs](/whats-new/changelog/2023#2312) for details.
+
+### Console changes {#console-changes-4}
+- Added ability to set up AWS Private Link and GCP Private Service Connect through Terraform provider
+- Improved resiliency for remote file data imports
+- Added import status details flyout to all data imports
+- Added key/secret key credential support to s3 data imports
+
+### Integrations changes {#integrations-changes-4}
+* Kafka Connect
+ * Support async_insert for exactly once (disabled by default)
+* Golang client
+ * Fixed DateTime binding
+ * Improved batch insert performance
+* Java client
+ * Fixed request compression problem
+
+### Settings changes {#settings-changes}
+* `use_mysql_types_in_show_columns` is no longer required. It will be automatically enabled when you connect through the MySQL interface.
+* `async_insert_max_data_size` now has the default value of `10 MiB`
+
+## February 2, 2024 {#february-2-2024}
+
+This release brings availability of ClickPipes for Azure Event Hub, dramatically improves workflow for logs and traces navigation using v4 ClickHouse Grafana connector, and debuts support for Flyway and Atlas database schema management tools.
+
+### Console changes {#console-changes-5}
+* Added ClickPipes support for Azure Event Hub
+* New services are launched with default idling time of 15 mins
+
+### Integrations changes {#integrations-changes-5}
+* [ClickHouse data source for Grafana](https://grafana.com/grafana/plugins/grafana-clickhouse-datasource/) v4 release
+ * Completely rebuilt query builder to have specialized editors for Table, Logs, Time Series, and Traces
+ * Completely rebuilt SQL generator to support more complicated and dynamic queries
+ * Added first-class support for OpenTelemetry in Log and Trace views
+ * Extended Configuration to allow to specify default tables and columns for Logs and Traces
+ * Added ability to specify custom HTTP headers
+ * And many more improvements - check the full [changelog](https://github.com/grafana/clickhouse-datasource/blob/main/CHANGELOG.md#400)
+* Database schema management tools
+ * [Flyway added ClickHouse support](https://github.com/flyway/flyway-community-db-support/packages/2037428)
+ * [Ariga Atlas added ClickHouse support](https://atlasgo.io/blog/2023/12/19/atlas-v-0-16#clickhouse-beta-program)
+* Kafka Connector Sink
+ * Optimized ingestion into a table with default values
+ * Added support for string-based dates in DateTime64
+* Metabase
+ * Added support for a connection to multiple databases
+
+## January 18, 2024 {#january-18-2024}
+
+This release brings a new region in AWS (London / eu-west-2), adds ClickPipes support for Redpanda, Upstash, and Warpstream, and improves reliability of the [is_deleted](/engines/table-engines/mergetree-family/replacingmergetree#is_deleted) core database capability.
+
+### General changes {#general-changes}
+- New AWS Region: London (eu-west-2)
+
+### Console changes {#console-changes-6}
+- Added ClickPipes support for Redpanda, Upstash, and Warpstream
+- Made the ClickPipes authentication mechanism configurable in the UI
+
+### Integrations changes {#integrations-changes-6}
+- Java client:
+ - Breaking changes: Removed the ability to specify random URL handles in the call. This functionality has been removed from ClickHouse
+ - Deprecations: Java CLI client and GRPC packages
+ - Added support for RowBinaryWithDefaults format to reduce the batch size and workload on ClickHouse instance (request by Exabeam)
+ - Made Date32 and DateTime64 range boundaries compatible with ClickHouse, compatibility with Spark Array string type, node selection mechanism
+- Kafka Connector: Added a JMX monitoring dashboard for Grafana
+- PowerBI: Made ODBC driver settings configurable in the UI
+- JavaScript client: Exposed query summary information, allow to provide a subset of specific columns for insertion, make keep_alive configurable for web client
+- Python client: Added Nothing type support for SQLAlchemy
+
+### Reliability changes {#reliability-changes}
+- User-facing backward incompatible change: Previously, two features ([is_deleted](/engines/table-engines/mergetree-family/replacingmergetree#is_deleted) and ``OPTIMIZE CLEANUP``) under certain conditions could lead to corruption of the data in ClickHouse. To protect the integrity of the data of our users, while keeping the core of the functionality, we adjusted how this feature works. Specifically, the MergeTree setting ``clean_deleted_rows`` is now deprecated and has no effect anymore. The ``CLEANUP`` keyword is not allowed by default (to use it you will need to enable ``allow_experimental_replacing_merge_with_cleanup``). If you decide to use ``CLEANUP``, you need to make sure that it is always used together with ``FINAL``, and you must guarantee that no rows with older versions will be inserted after you run ``OPTIMIZE FINAL CLEANUP``.
+
+## December 18, 2023 {#december-18-2023}
+
+This release brings a new region in GCP (us-east1), ability to self-service secure endpoint connections, support for additional integrations including DBT 1.7, and numerous bug fixes and security enhancements.
+
+### General changes {#general-changes-1}
+- ClickHouse Cloud is now available in GCP us-east1 (South Carolina) region
+- Enabled ability to set up AWS Private Link and GCP Private Service Connect via OpenAPI
+
+### Console changes {#console-changes-7}
+- Enabled seamless login to SQL console for users with the Developer role
+- Streamlined workflow for setting idling controls during onboarding
+
+### Integrations changes {#integrations-changes-7}
+- DBT connector: Added support for DBT up to v1.7
+- Metabase: Added support for Metabase v0.48
+- PowerBI Connector: Added ability to run on PowerBI Cloud
+- Make permissions for ClickPipes internal user configurable
+- Kafka Connect
+ - Improved deduplication logic and ingestion of Nullable types.
+ - Add support text-based formats (CSV, TSV)
+- Apache Beam: add support for Boolean and LowCardinality types
+- Nodejs client: add support for Parquet format
+
+### Security announcements {#security-announcements}
+- Patched 3 security vulnerabilities - see [security changelog](/whats-new/security-changelog) for details:
+ - CVE 2023-47118 (CVSS 7.0) - a heap buffer overflow vulnerability affecting the native interface running by default on port 9000/tcp
+ - CVE-2023-48704 (CVSS 7.0) - a heap buffer overflow vulnerability affecting the native interface running by default on port 9000/tcp
+ - CVE 2023-48298 (CVSS 5.9) - an integer underflow vulnerability in the FPC compressions codec
+
+## November 22, 2023 {#november-22-2023}
+
+This release upgrades the core database version, improves login and authentication flow, and adds proxy support to Kafka Connect Sink.
+
+### ClickHouse version upgrade {#clickhouse-version-upgrade-2}
+
+- Dramatically improved performance for reading Parquet files. See [23.8 release blog](https://clickhouse.com/blog/clickhouse-release-23-08) for details.
+- Added type inference support for JSON. See [23.9 release blog](https://clickhouse.com/blog/clickhouse-release-23-09) for details.
+- Introduced powerful analyst-facing functions like `ArrayFold`. See [23.10 release blog](https://clickhouse.com/blog/clickhouse-release-23-10) for details.
+- **User-facing backward-incompatible change**: Disabled setting `input_format_json_try_infer_numbers_from_strings` by default to avoid inferring numbers from strings in JSON format. Doing so can create possible parsing errors when sample data contains strings similar to numbers.
+- Dozens of new features, performance improvements, and bug fixes. See [core database changelogs](/whats-new/changelog) for details.
+
+### Console changes {#console-changes-8}
+
+- Improved login and authentication flow.
+- Improved AI-based query suggestions to better support large schemas.
+
+### Integrations changes {#integrations-changes-8}
+
+- Kafka Connect Sink: Added proxy support, `topic-tablename` mapping, and configurability for Keeper _exactly-once_ delivery properties.
+- Node.js client: Added support for Parquet format.
+- Metabase: Added `datetimeDiff` function support.
+- Python client: Added support for special characters in column names. Fixed timezone parameter binding.
+
+## November 2, 2023 {#november-2-2023}
+
+This release adds more regional support for development services in Asia, introduces key rotation functionality to customer-managed encryption keys, improved granularity of tax settings in the billing console and a number of bug fixes across supported language clients.
+
+### General updates {#general-updates-1}
+- Development services are now available in AWS for `ap-south-1` (Mumbai) and `ap-southeast-1` (Singapore)
+- Added support for key rotation in customer-managed encryption keys (CMEK)
+
+### Console changes {#console-changes-9}
+- Added ability to configure granular tax settings when adding a credit card
+
+### Integrations changes {#integrations-changes-9}
+- MySQL
+ - Improved Tableau Online and QuickSight support via MySQL
+- Kafka Connector
+ - Introduced a new StringConverter to support text-based formats (CSV, TSV)
+ - Added support for Bytes and Decimal data types
+ - Adjusted Retryable Exceptions to now always be retried (even when errors.tolerance=all)
+- Node.js client
+ - Fixed an issue with streamed large datasets providing corrupted results
+- Python client
+ - Fixed timeouts on large inserts
+ - Fixed NumPy/Pandas Date32 issue
+- Golang client
+ - Fixed insertion of an empty map into JSON column, compression buffer cleanup, query escaping, panic on zero/nil for IPv4 and IPv6
+ - Added watchdog on canceled inserts
+- DBT
+ - Improved distributed table support with tests
+
+## October 19, 2023 {#october-19-2023}
+
+This release brings usability and performance improvements in the SQL console, better IP data type handling in the Metabase connector, and new functionality in the Java and Node.js clients.
+
+### Console changes {#console-changes-10}
+- Improved usability of the SQL console (e.g. preserve column width between query executions)
+- Improved performance of the SQL console
+
+### Integrations changes {#integrations-changes-10}
+- Java client:
+ - Switched the default network library to improve performance and reuse open connections
+ - Added proxy support
+ - Added support for secure connections with using Trust Store
+- Node.js client: Fixed keep-alive behavior for insert queries
+- Metabase: Fixed IPv4/IPv6 column serialization
+
+## September 28, 2023 {#september-28-2023}
+
+This release brings general availability of ClickPipes for Kafka, Confluent Cloud, and Amazon MSK and the Kafka Connect ClickHouse Sink, self-service workflow to secure access to Amazon S3 via IAM roles, and AI-assisted query suggestions ( private preview).
+
+### Console changes {#console-changes-11}
+- Added a self-service workflow to secure [access to Amazon S3 via IAM roles](/cloud/data-sources/secure-s3)
+- Introduced AI-assisted query suggestions in private preview (please [contact ClickHouse Cloud support](https://console.clickhouse.cloud/support) to try it out.)
+
+### Integrations changes {#integrations-changes-11}
+- Announced general availability of ClickPipes - a turnkey data ingestion service - for Kafka, Confluent Cloud, and Amazon MSK (see the [release blog](https://clickhouse.com/blog/clickpipes-is-generally-available))
+- Reached general availability of Kafka Connect ClickHouse Sink
+ - Extended support for customized ClickHouse settings using `clickhouse.settings` property
+ - Improved deduplication behavior to account for dynamic fields
+ - Added support for `tableRefreshInterval` to re-fetch table changes from ClickHouse
+- Fixed an SSL connection issue and type mappings between [PowerBI](/integrations/powerbi) and ClickHouse data types
+
+## September 7, 2023 {#september-7-2023}
+
+This release brings the beta release of the PowerBI Desktop official connector, improved credit card payment handling for India, and multiple improvements across supported language clients.
+
+### Console changes {#console-changes-12}
+- Added remaining credits and payment retries to support charges from India
+
+### Integrations changes {#integrations-changes-12}
+- Kafka Connector: added support for configuring ClickHouse settings, added error.tolerance configuration option
+- PowerBI Desktop: released the beta version of the official connector
+- Grafana: added support for Point geo type, fixed Panels in Data Analyst dashboard, fixed timeInterval macro
+- Python client: Compatible with Pandas 2.1.0, dropped Python 3.7 support, added support for nullable JSON type
+- Node.js client: added default_format setting support
+- Golang client: fixed bool type handling, removed string limits
+
+## Aug 24, 2023 {#aug-24-2023}
+
+This release adds support for the MySQL interface to the ClickHouse database, introduces a new official PowerBI connector, adds a new "Running Queries" view in the cloud console, and updates the ClickHouse version to 23.7.
+
+### General updates {#general-updates-2}
+- Added support for the [MySQL wire protocol](/interfaces/mysql), which (among other use cases) enables compatibility with many existing BI tools. Please reach out to support to enable this feature for your organization.
+- Introduced a new official PowerBI connector
+
+### Console changes {#console-changes-13}
+- Added support for "Running Queries" view in SQL Console
+
+### ClickHouse 23.7 version upgrade {#clickhouse-237-version-upgrade}
+- Added support for Azure Table function, promoted geo datatypes to production-ready, and improved join performance - see 23.5 release [blog](https://clickhouse.com/blog/clickhouse-release-23-05) for details
+- Extended MongoDB integration support to version 6.0 - see 23.6 release [blog](https://clickhouse.com/blog/clickhouse-release-23-06) for details
+- Improved performance of writing to Parquet format by 6x, added support for PRQL query language, and improved SQL compatibility - see 23.7 release [deck](https://presentations.clickhouse.com/release_23.7/) for details
+- Dozens of new features, performance improvements, and bug fixes - see detailed [changelogs](/whats-new/changelog) for 23.5, 23.6, 23.7
+
+### Integrations changes {#integrations-changes-13}
+- Kafka Connector: Added support for Avro Date and Time types
+- JavaScript client: Released a stable version for web-based environment
+- Grafana: Improved filter logic, database name handling, and added support for TimeInteval with sub-second precision
+- Golang Client: Fixed several batch and async data loading issues
+- Metabase: Support v0.47, added connection impersonation, fixed data types mappings
+
+## July 27, 2023 {#july-27-2023}
+
+This release brings the private preview of ClickPipes for Kafka, a new data loading experience, and the ability to load a file from a URL using the cloud console.
+
+### Integrations changes {#integrations-changes-14}
+- Introduced the private preview of [ClickPipes](https://clickhouse.com/cloud/clickpipes) for Kafka, a cloud-native integration engine that makes ingesting massive volumes of data from Kafka and Confluent Cloud as simple as clicking a few buttons. Please sign up for the waitlist [here](https://clickhouse.com/cloud/clickpipes#joinwaitlist).
+- JavaScript client: released support for web-based environment (browser, Cloudflare workers). The code is refactored to allow community creating connectors for custom environments.
+- Kafka Connector: Added support for inline schema with Timestamp and Time Kafka types
+- Python client: Fixed insert compression and LowCardinality reading issues
+
+### Console changes {#console-changes-14}
+- Added a new data loading experience with more table creation configuration options
+- Introduced ability to load a file from a URL using the cloud console
+- Improved invitation flow with additional options to join a different organization and see all your outstanding invitations
+
+## July 14, 2023 {#july-14-2023}
+
+This release brings the ability to spin up Dedicated Services, a new AWS region in Australia, and the ability to bring your own key for encrypting data on disk.
+
+### General updates {#general-updates-3}
+- New AWS Australia region: Sydney (ap-southeast-2)
+- Dedicated tier services for demanding latency-sensitive workloads (please contact [support](https://console.clickhouse.cloud/support) to set it up)
+- Bring your own key (BYOK) for encrypting data on disk (please contact [support](https://console.clickhouse.cloud/support) to set it up)
+
+### Console changes {#console-changes-15}
+- Improvements to observability metrics dashboard for asynchronous inserts
+- Improved chatbot behavior for integration with support
+
+### Integrations changes {#integrations-changes-15}
+- NodeJS client: fixed a bug with a connection failure due to socket timeout
+- Python client: added QuerySummary to insert queries, support special characters in the database name
+- Metabase: updated JDBC driver version, added DateTime64 support, performance improvements.
+
+### Core database changes {#core-database-changes}
+- [Query cache](/operations/query-cache) can be enabled in ClickHouse Cloud. When it is enabled, successful queries are cached for a minute by default and subsequent queries will use the cached result.
+
+## June 20, 2023 {#june-20-2023}
+
+This release makes ClickHouse Cloud on GCP generally available, brings a Terraform provider for the Cloud API, and updates the ClickHouse version to 23.4.
+
+### General updates {#general-updates-4}
+- ClickHouse Cloud on GCP is now GA, bringing GCP Marketplace integration, support for Private Service Connect, and automatic backups (see [blog](https://clickhouse.com/blog/clickhouse-cloud-on-google-cloud-platform-gcp-is-generally-available) and [press release](https://clickhouse.com/blog/clickhouse-cloud-expands-choice-with-launch-on-google-cloud-platform) for details)
+- [Terraform provider](https://registry.terraform.io/providers/ClickHouse/clickhouse/latest/docs) for Cloud API is now available
+
+### Console changes {#console-changes-16}
+- Added a new consolidated settings page for services
+- Adjusted metering accuracy for storage and compute
+
+### Integrations changes {#integrations-changes-16}
+- Python client: improved insert performance, refactored internal dependencies to support multiprocessing
+- Kafka Connector: It can be uploaded and installed on Confluent Cloud, added retry for interim connection problems, reset the incorrect connector state automatically
+
+### ClickHouse 23.4 version upgrade {#clickhouse-234-version-upgrade}
+- Added JOIN support for parallel replicas (please contact [support](https://console.clickhouse.cloud/support) to set it up)
+- Improved performance of lightweight deletes
+- Improved caching while processing large inserts
+
+### Administration changes {#administration-changes-1}
+- Expanded local dictionary creation for non "default" users
+
+## May 30, 2023 {#may-30-2023}
+
+This release brings the public release of the ClickHouse Cloud Programmatic API for Control Plane operations (see [blog](https://clickhouse.com/blog/using-the-new-clickhouse-cloud-api-to-automate-deployments) for details), S3 access using IAM roles, and additional scaling options.
+
+### General changes {#general-changes-2}
+- API Support for ClickHouse Cloud. With the new Cloud API, you can seamlessly integrate managing services in your existing CI/CD pipeline and manage your services programmatically
+- S3 access using IAM roles. You can now leverage IAM roles to securely access your private Amazon Simple Storage Service (S3) buckets (please contact support to set it up)
+
+### Scaling changes {#scaling-changes}
+- [Horizontal scaling](/manage/scaling#manual-horizontal-scaling). Workloads that require more parallelization can now be configured with up to 10 replicas (please contact support to set it up)
+- [CPU based autoscaling](/manage/scaling). CPU-bound workloads can now benefit from additional triggers for autoscaling policies
+
+### Console changes {#console-changes-17}
+- Migrate Dev service to Production service (please contact support to enable)
+- Added scaling configuration controls during instance creation flows
+- Fix connection string when default password is not present in memory
+
+### Integrations changes {#integrations-changes-17}
+- Golang client: fixed a problem leading to unbalanced connections in native protocol, added support for the custom settings in the native protocol
+- Nodejs client: dropped support for nodejs v14, added support for v20
+- Kafka Connector: added support for LowCardinality type
+- Metabase: fixed grouping by a time range, fixed support for integers in built-in Metabase questions
+
+### Performance and reliability {#performance-and-reliability}
+- Improved efficiency and performance of write heavy workloads
+- Deployed incremental backup strategy to increase speed and efficiency of backups
+
+## May 11, 2023 {#may-11-2023}
+
+This release brings the public beta of ClickHouse Cloud on GCP
+(see [blog](https://clickhouse.com/blog/clickhouse-cloud-on-gcp-available-in-public-beta)
+for details), extends administrators' rights to grant terminate query permissions,
+and adds more visibility into the status of MFA users in the Cloud console.
+
+:::note Update
+ClickHouse Cloud on GCP is now GA, see the entry for June twenty above.
+:::
+
+### ClickHouse Cloud on GCP is now available in public beta {#clickhouse-cloud-on-gcp-is-now-available-in-public-beta-now-ga-see-june-20th-entry-above}
+
+:::note
+ClickHouse Cloud on GCP is now GA, see the [June 20th](#june-20-2023) entry above.
+:::
+
+- Launches a fully-managed separated storage and compute ClickHouse offering, running on top of Google Compute and Google Cloud Storage
+- Available in Iowa (us-central1), Netherlands (europe-west4), and Singapore (asia-southeast1) regions
+- Supports both Development and Production services in all three initial regions
+- Provides strong security by default: End-to-end encryption in transit, data-at-rest encryption, IP Allow Lists
+
+### Integrations changes {#integrations-changes-18}
+- Golang client: Added proxy environment variables support
+- Grafana: Added the ability to specify ClickHouse custom settings and proxy environment variables in Grafana datasource setup
+- Kafka Connector: Improved handling of empty records
+
+### Console changes {#console-changes-18}
+- Added an indicator for multifactor authentication (MFA) use in the user list
+
+### Performance and reliability {#performance-and-reliability-1}
+- Added more granular control over terminate query permission for administrators
+
+## May 4, 2023 {#may-4-2023}
+
+This release brings a new heatmap chart type, improves billing usage page, and improves service startup time.
+
+### Console changes {#console-changes-19}
+- Added heatmap chart type to SQL console
+- Improved billing usage page to show credits consumed within each billing dimension
+
+### Integrations changes {#integrations-changes-19}
+- Kafka connector: Added retry mechanism for transient connection errors
+- Python client: Added max_connection_age setting to ensure that HTTP connections are not reused forever. This can help with certain load-balancing issues
+- Node.js client: Added support for Node.js v20
+- Java client: Improved client certificate authentication support, and added support for nested Tuple/Map/Nested types
+
+### Performance and reliability {#performance-and-reliability-2}
+- Improved service startup time in presence of a large number of parts
+- Optimized long-running query cancellation logic in SQL console
+
+### Bug fixes {#bug-fixes}
+- Fixed a bug causing 'Cell Towers' sample dataset import to fail
+
+## April 20, 2023 {#april-20-2023}
+
+This release updates the ClickHouse version to 23.3, significantly improves the speed of cold reads, and brings real-time chat with support.
+
+### Console changes {#console-changes-20}
+- Added an option for real-time chat with support
+
+### Integrations changes {#integrations-changes-20}
+- Kafka connector: Added support for Nullable types
+- Golang client: Added support for external tables, support boolean and pointer type parameter bindings
+
+### Configuration changes {#configuration-changes}
+- Adds ability to drop large tables–by overriding `max_table_size_to_drop` and `max_partition_size_to_drop` settings
+
+### Performance and reliability {#performance-and-reliability-3}
+- Improve speed of cold reads by the means of S3 prefetching via `allow_prefetched_read_pool_for_remote_filesystem` setting
+
+### ClickHouse 23.3 version upgrade {#clickhouse-233-version-upgrade}
+- Lightweight deletes are production-ready–see 23.3 release [blog](https://clickhouse.com/blog/clickhouse-release-23-03) for details
+- Added support for multi-stage PREWHERE-see 23.2 release [blog](https://clickhouse.com/blog/clickhouse-release-23-03) for details
+- Dozens of new features, performance improvements, and bug fixes–see detailed [changelogs](/whats-new/changelog/index.md) for 23.3 and 23.2
+
+## April 6, 2023 {#april-6-2023}
+
+This release brings an API for retrieving cloud endpoints, an advanced scaling control for minimum idle timeout, and support for external data in Python client query methods.
+
+### API changes {#api-changes}
+* Added ability to programmatically query ClickHouse Cloud endpoints via [Cloud Endpoints API](//cloud/get-started/query-endpoints.md)
+
+### Console changes {#console-changes-21}
+- Added 'minimum idle timeout' setting to advanced scaling settings
+- Added best-effort datetime detection to schema inference in data loading modal
+
+### Integrations changes {#integrations-changes-21}
+- [Metabase](/integrations/data-visualization/metabase-and-clickhouse.md): Added support for multiple schemas
+- [Go client](/integrations/language-clients/go/index.md): Fixed idle connection liveness check for TLS connections
+- [Python client](/integrations/language-clients/python/index.md)
+ - Added support for external data in query methods
+ - Added timezone support for query results
+ - Added support for `no_proxy`/`NO_PROXY` environment variable
+ - Fixed server-side parameter binding of the NULL value for Nullable types
+
+### Bug fixes {#bug-fixes-1}
+* Fixed behavior where running `INSERT INTO ... SELECT ...` from the SQL console incorrectly applied the same row limit as select queries
+
+## March 23, 2023 {#march-23-2023}
+
+This release brings database password complexity rules, significant speedup in restoring large backups, and support for displaying traces in Grafana Trace View.
+
+### Security and reliability {#security-and-reliability}
+- Core database endpoints now enforce password complexity rules
+- Improved time to restore large backups
+
+### Console changes {#console-changes-22}
+- Streamlined onboarding workflow, introducing new defaults and more compact views
+- Reduced sign-up and sign-in latencies
+
+### Integrations changes {#integrations-changes-22}
+- Grafana:
+ - Added support for displaying trace data stored in ClickHouse in Trace View
+ - Improved time range filters and added support for special characters in table names
+- Superset: Added native ClickHouse support
+- Kafka Connect Sink: Added automatic date conversion and Null column handling
+- Metabase: Implemented compatibility with v0.46
+- Python client: Fixed inserts in temporary tables and added support for Pandas Null
+- Golang client: Normalized Date types with timezone
+- Java client
+ - Added to SQL parser support for compression, infile, and outfile keywords
+ - Added credentials overload
+ - Fixed batch support with `ON CLUSTER`
+- Node.js client
+ - Added support for JSONStrings, JSONCompact, JSONCompactStrings, JSONColumnsWithMetadata formats
+ - `query_id` can now be provided for all main client methods
+
+### Bug fixes {#bug-fixes-2}
+- Fixed a bug resulting in slow initial provisioning and startup times for new services
+- Fixed a bug that resulted in slower query performance due to cache misconfiguration
+
+## March 9, 2023 {#march-9-2023}
+
+This release improves observability dashboards, optimizes time to create large backups, and adds the configuration necessary to drop large tables and partitions.
+
+### Console changes {#console-changes-23}
+- Added advanced observability dashboards (preview)
+- Introduced a memory allocation chart to the observability dashboards
+- Improved spacing and newline handling in SQL Console spreadsheet view
+
+### Reliability and performance {#reliability-and-performance}
+- Optimized backup schedule to run backups only if data was modified
+- Improved time to complete large backups
+
+### Configuration changes {#configuration-changes-1}
+- Added the ability to increase the limit to drop tables and partitions by overriding the settings `max_table_size_to_drop` and `max_partition_size_to_drop` on the query or connection level
+- Added source IP to query log, to enable quota and access control enforcement based on source IP
+
+### Integrations {#integrations}
+- [Python client](/integrations/language-clients/python/index.md): Improved Pandas support and fixed timezone-related issues
+- [Metabase](/integrations/data-visualization/metabase-and-clickhouse.md): Metabase 0.46.x compatibility and support for SimpleAggregateFunction
+- [Kafka-Connect](/integrations/data-ingestion/kafka/index.md): Implicit date conversion and better handling for null columns
+- [Java Client](https://github.com/ClickHouse/clickhouse-java): Nested conversion to Java maps
+
+## February 23, 2023 {#february-23-2023}
+
+This release enables a subset of the features in the ClickHouse 23.1 core release, brings interoperability with Amazon Managed Streaming for Apache Kafka (MSK), and exposes advanced scaling and idling adjustments in the activity log.
+
+### ClickHouse 23.1 version upgrade {#clickhouse-231-version-upgrade}
+
+Adds support for a subset of features in ClickHouse 23.1, for example:
+- ARRAY JOIN with Map type
+- SQL standard hex and binary literals
+- New functions, including `age()`, `quantileInterpolatedWeighted()`, `quantilesInterpolatedWeighted()`
+- Ability to use structure from insertion table in `generateRandom` without arguments
+- Improved database creation and rename logic that allows the reuse of previous names
+- See the 23.1 release [webinar slides](https://presentations.clickhouse.com/release_23.1/#cover) and [23.1 release changelog](/whats-new/cloud#clickhouse-231-version-upgrade) for more details
+
+### Integrations changes {#integrations-changes-23}
+- [Kafka-Connect](/integrations/data-ingestion/kafka/index.md): Added support for Amazon MSK
+- [Metabase](/integrations/data-visualization/metabase-and-clickhouse.md): First stable release 1.0.0
+ - Made the connector is available on [Metabase Cloud](https://www.metabase.com/start/)
+ - Added a feature to explore all available databases
+ - Fixed synchronization of database with AggregationFunction type
+- [DBT-clickhouse](/integrations/data-ingestion/etl-tools/dbt/index.md): Added support for the latest DBT version v1.4.1
+- [Python client](/integrations/language-clients/python/index.md): Improved proxy and ssh tunneling support; added a number of fixes and performance optimizations for Pandas DataFrames
+- [Nodejs client](/integrations/language-clients/js.md): Released ability to attach `query_id` to query result, which can be used to retrieve query metrics from the `system.query_log`
+- [Golang client](/integrations/language-clients/go/index.md): Optimized network connection with ClickHouse Cloud
+
+### Console changes {#console-changes-24}
+- Added advanced scaling and idling settings adjustments to the activity log
+- Added user agent and IP information to reset password emails
+- Improved signup flow mechanics for Google OAuth
+
+### Reliability and performance {#reliability-and-performance-1}
+- Speed up the resume time from idle for large services
+- Improved reading latency for services with a large number of tables and partitions
+
+### Bug fixes {#bug-fixes-3}
+- Fixed behavior where resetting service password did not adhere to the password policy
+- Made organization invite email validation case-insensitive
+
+## February 2, 2023 {#february-2-2023}
+
+This release brings an officially supported Metabase integration, a major Java client / JDBC driver release, and support for views and materialized views in the SQL console.
+
+### Integrations changes {#integrations-changes-24}
+- [Metabase](/integrations/data-visualization/metabase-and-clickhouse.md) plugin: Became an official solution maintained by ClickHouse
+- [dbt](/integrations/data-ingestion/etl-tools/dbt/index.md) plugin: Added support for [multiple threads](https://github.com/ClickHouse/dbt-clickhouse/blob/main/CHANGELOG.md)
+- [Grafana](/integrations/data-visualization/grafana/index.md) plugin: Better handling of connection errors
+- [Python](/integrations/language-clients/python/index.md) client: [Streaming support](/integrations/language-clients/python/advanced-querying.md#streaming-queries) for insert operation
+- [Go](/integrations/language-clients/go/index.md) client: [Bug fixes](https://github.com/ClickHouse/clickhouse-go/blob/main/CHANGELOG.md): close canceled connections, better handling of connection errors
+- [JS](/integrations/language-clients/js.md) client: [Breaking changes in exec/insert](https://github.com/ClickHouse/clickhouse-js/releases/tag/0.0.12); exposed query_id in the return types
+- [Java](https://github.com/ClickHouse/clickhouse-java#readme) client / JDBC driver major release
+ - [Breaking changes](https://github.com/ClickHouse/clickhouse-java/releases): deprecated methods, classes and packages were removed
+ - Added R2DBC driver and file insert support
+
+### Console changes {#console-changes-25}
+- Added support for views and materialized views in SQL console
+
+### Performance and reliability {#performance-and-reliability-4}
+- Faster password reset for stopped/idling instances
+- Improved the scale-down behavior via more accurate activity tracking
+- Fixed a bug where SQL console CSV export was truncated
+- Fixed a bug resulting in intermittent sample data upload failures
+
+## January 12, 2023 {#january-12-2023}
+
+This release updates the ClickHouse version to 22.12, enables dictionaries for many new sources, and improves query performance.
+
+### General changes {#general-changes-3}
+- Enabled dictionaries for additional sources, including external ClickHouse, Cassandra, MongoDB, MySQL, PostgreSQL, and Redis
+
+### ClickHouse 22.12 version upgrade {#clickhouse-2212-version-upgrade}
+- Extended JOIN support to include Grace Hash Join
+- Added Binary JSON (BSON) support for reading files
+- Added support for GROUP BY ALL standard SQL syntax
+- New mathematical functions for decimal operations with fixed precision
+- See the [22.12 release blog](https://clickhouse.com/blog/clickhouse-release-22-12) and [detailed 22.12 changelog](/whats-new/cloud#clickhouse-2212-version-upgrade) for the complete list of changes
+
+### Console changes {#console-changes-26}
+- Improved auto-complete capabilities in SQL Console
+- Default region now takes into account continent locality
+- Improved Billing Usage page to display both billing and website units
+
+### Integrations changes {#integrations-changes-25}
+- DBT release [v1.3.2](https://github.com/ClickHouse/dbt-clickhouse/blob/main/CHANGELOG.md#release-132-2022-12-23)
+ - Added experimental support for the delete+insert incremental strategy
+ - New s3source macro
+- Python client [v0.4.8](https://github.com/ClickHouse/clickhouse-connect/blob/main/CHANGELOG.md#048-2023-01-02)
+ - File insert support
+ - Server-side query [parameters binding](/interfaces/cli.md/#cli-queries-with-parameters)
+- Go client [v2.5.0](https://github.com/ClickHouse/clickhouse-go/releases/tag/v2.5.0)
+ - Reduced memory usage for compression
+ - Server-side query [parameters binding](/interfaces/cli.md/#cli-queries-with-parameters)
+
+### Reliability and performance {#reliability-and-performance-2}
+- Improved read performance for queries that fetch a large number of small files on object store
+- Set the [compatibility](/operations/settings/settings#compatibility) setting to the version with which the service is initially launched, for newly launched services
+
+### Bug fixes {#bug-fixes-4}
+Using the Advanced Scaling slider to reserve resources now takes effect right away.
+
+## December 20, 2022 {#december-20-2022}
+
+This release introduces seamless logins for administrators to SQL console, improved read performance for cold reads, and an improved Metabase connector for ClickHouse Cloud.
+
+### Console changes {#console-changes-27}
+- Enabled seamless access to SQL console for admin users
+- Changed default role for new invitees to "Administrator"
+- Added onboarding survey
+
+### Reliability and performance {#reliability-and-performance-3}
+- Added retry logic for longer running insert queries to recover in the event of network failures
+- Improved read performance of cold reads
+
+### Integrations changes {#integrations-changes-26}
+- The [Metabase plugin](/integrations/data-visualization/metabase-and-clickhouse.md) got a long-awaited v0.9.1 major update. Now it is compatible with the latest Metabase version and has been thoroughly tested against ClickHouse Cloud.
+
+## December 6, 2022 - General availability {#december-6-2022---general-availability}
+
+ClickHouse Cloud is now production-ready with SOC2 Type II compliance, uptime SLAs for production workloads, and public status page. This release includes major new capabilities like AWS Marketplace integration, SQL console - a data exploration workbench for ClickHouse users, and ClickHouse Academy - self-paced learning in ClickHouse Cloud. Learn more in this [blog](https://clickhouse.com/blog/clickhouse-cloud-generally-available).
+
+### Production-ready {#production-ready}
+- SOC2 Type II compliance (details in [blog](https://clickhouse.com/blog/clickhouse-cloud-is-now-soc-2-type-ii-compliant) and [Trust Center](https://trust.clickhouse.com/))
+- Public [Status Page](https://status.clickhouse.com/) for ClickHouse Cloud
+- Uptime SLA available for production use cases
+- Availability on [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-jettukeanwrfc)
+
+### Major new capabilities {#major-new-capabilities}
+- Introduced SQL console, the data exploration workbench for ClickHouse users
+- Launched [ClickHouse Academy](https://learn.clickhouse.com/visitor_class_catalog), self-paced learning in ClickHouse Cloud
+
+### Pricing and metering changes {#pricing-and-metering-changes}
+- Extended trial to 30 days
+- Introduced fixed-capacity, low-monthly-spend Development Services, well-suited for starter projects and development/staging environments
+- Introduced new reduced pricing on Production Services, as we continue to improve how ClickHouse Cloud operates and scales
+- Improved granularity and fidelity when metering compute
+
+### Integrations changes {#integrations-changes-27}
+- Enabled support for ClickHouse Postgres / MySQL integration engines
+- Added support for SQL user-defined functions (UDFs)
+- Advanced Kafka Connect sink to Beta status
+- Improved Integrations UI by introducing rich meta-data about versions, update status, and more
+
+### Console changes {#console-changes-28}
+
+- Multi-factor authentication support in the cloud console
+- Improved cloud console navigation for mobile devices
+
+### Documentation changes {#documentation-changes}
+
+- Introduced a dedicated [documentation](/cloud/overview) section for ClickHouse Cloud
+
+### Bug fixes {#bug-fixes-5}
+- Addressed known issue where restore from backup did not always work due to dependency resolution
+
+## November 29, 2022 {#november-29-2022}
+
+This release brings SOC2 Type II compliance, updates the ClickHouse version to 22.11, and improves a number of ClickHouse clients and integrations.
+
+### General changes {#general-changes-4}
+
+- Reached SOC2 Type II compliance (details in [blog](https://clickhouse.com/blog/clickhouse-cloud-is-now-soc-2-type-ii-compliant) and [Trust Center](https://trust.clickhouse.com))
+
+### Console changes {#console-changes-29}
+
+- Added an "Idle" status indicator to show that a service has been automatically paused
+
+### ClickHouse 22.11 version upgrade {#clickhouse-2211-version-upgrade}
+
+- Added support for Hudi and DeltaLake table engines and table functions
+- Improved recursive directory traversal for S3
+- Added support for composite time interval syntax
+- Improved insert reliability with retries on insert
+- See the [detailed 22.11 changelog](/whats-new/cloud#clickhouse-2211-version-upgrade) for the complete list of changes
+
+### Integrations {#integrations-1}
+
+- Python client: v3.11 support, improved insert performance
+- Go client: fix DateTime and Int64 support
+- JS client: support for mutual SSL authentication
+- dbt-clickhouse: support for DBT v1.3
+
+### Bug fixes {#bug-fixes-6}
+
+- Fixed a bug that showed an outdated ClickHouse version after an upgrade
+- Changing grants for the "default" account no longer interrupts sessions
+- Newly created non-admin accounts no longer have system table access by default
+
+### Known issues in this release {#known-issues-in-this-release}
+
+- Restore from backup may not work due to dependency resolution
+
+## November 17, 2022 {#november-17-2022}
+
+This release enables dictionaries from local ClickHouse table and HTTP sources, introduces support for the Mumbai region, and improves the cloud console user experience.
+
+### General changes {#general-changes-5}
+
+- Added support for [dictionaries](/sql-reference/dictionaries/index.md) from local ClickHouse table and HTTP sources
+- Introduced support for the Mumbai [region](/cloud/reference/supported-regions)
+
+### Console changes {#console-changes-30}
+
+- Improved billing invoice formatting
+- Streamlined user interface for payment method capture
+- Added more granular activity logging for backups
+- Improved error handling during file upload
+
+### Bug fixes {#bug-fixes-7}
+- Fixed a bug that could lead to failing backups if there were single large files in some parts
+- Fixed a bug where restores from backup did not succeed if access list changes were applied at the same time
+
+### Known issues {#known-issues}
+- Restore from backup may not work due to dependency resolution
+
+## November 3, 2022 {#november-3-2022}
+
+This release removes read & write units from pricing (see the [pricing page](https://clickhouse.com/pricing) for details), updates the ClickHouse version to 22.10, adds support for higher vertical scaling for self-service customers, and improves reliability through better defaults.
+
+### General changes {#general-changes-6}
+
+- Removed read/write units from the pricing model
+
+### Configuration changes {#configuration-changes-2}
+
+- The settings `allow_suspicious_low_cardinality_types`, `allow_suspicious_fixed_string_types` and `allow_suspicious_codecs` (default is false) cannot be changed by users anymore for stability reasons.
+
+### Console changes {#console-changes-31}
+
+- Increased the self-service maximum for vertical scaling to 720GB memory for paying customers
+- Improved the restore from backup workflow to set IP Access List rules and password
+- Introduced waitlists for GCP and Azure in the service creation dialog
+- Improved error handling during file upload
+- Improved workflows for billing administration
+
+### ClickHouse 22.10 version upgrade {#clickhouse-2210-version-upgrade}
+
+- Improved merges on top of object stores by relaxing the "too many parts" threshold in the presence of many large parts (at least 10 GiB). This enables up to petabytes of data in a single partition of a single table.
+- Improved control over merging with the `min_age_to_force_merge_seconds` setting, to merge after a certain time threshold.
+- Added MySQL-compatible syntax to reset settings `SET setting_name = DEFAULT`.
+- Added functions for Morton curve encoding, Java integer hashing, and random number generation.
+- See the [detailed 22.10 changelog](/whats-new/cloud#clickhouse-2210-version-upgrade) for the complete list of changes.
+
+## October 25, 2022 {#october-25-2022}
+
+This release significantly lowers compute consumption for small workloads, lowers compute pricing (see [pricing](https://clickhouse.com/pricing) page for details), improves stability through better defaults, and enhances the Billing and Usage views in the ClickHouse Cloud console.
+
+### General changes {#general-changes-7}
+
+- Reduced minimum service memory allocation to 24G
+- Reduced service idle timeout from 30 minutes to 5 minutes
+
+### Configuration changes {#configuration-changes-3}
+
+- Reduced max_parts_in_total from 100k to 10k. The default value of the `max_parts_in_total` setting for MergeTree tables has been lowered from 100,000 to 10,000. The reason for this change is that we observed that a large number of data parts is likely to cause a slow startup time of services in the cloud. A large number of parts usually indicates a choice of too granular partition key, which is typically done accidentally and should be avoided. The change of default will allow the detection of these cases earlier.
+
+### Console changes {#console-changes-32}
+
+- Enhanced credit usage details in the Billing view for trial users
+- Improved tooltips and help text, and added a link to the pricing page in the Usage view
+- Improved workflow when switching options for IP filtering
+- Added resend email confirmation button to the cloud console
+
+## October 4, 2022 - Beta {#october-4-2022---beta}
+
+ClickHouse Cloud began its public Beta on October 4th, 2022. Learn more in this [blog](https://clickhouse.com/blog/clickhouse-cloud-public-beta).
+
+The ClickHouse Cloud version is based on ClickHouse core v22.10. For a list of compatible features, refer to the [Cloud Compatibility](/whats-new/cloud-compatibility) guide.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_02.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_02.md
new file mode 100644
index 00000000000..7143ccdc9b2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_02.md
@@ -0,0 +1,243 @@
+---
+slug: /whats-new/changelog/24.2-fast-release
+title: 'v24.2 Changelog'
+description: 'Fast release changelog for v24.2'
+keywords: ['changelog']
+sidebar_label: '24.2'
+sidebar_position: 9
+doc_type: 'changelog'
+---
+
+### ClickHouse release tag: 24.2.2.15987 {#clickhouse-release-tag-242215987}
+
+#### Backward incompatible change {#backward-incompatible-change}
+* Validate suspicious/experimental types in nested types. Previously we didn't validate such types (except JSON) in nested types like Array/Tuple/Map. [#59385](https://github.com/ClickHouse/ClickHouse/pull/59385) ([Kruglov Pavel](https://github.com/Avogar)).
+* The sort clause `ORDER BY ALL` (introduced with v23.12) is replaced by `ORDER BY *`. The previous syntax was too error-prone for tables with a column `all`. [#59450](https://github.com/ClickHouse/ClickHouse/pull/59450) ([Robert Schulze](https://github.com/rschu1ze)).
+* Add sanity check for number of threads and block sizes. [#60138](https://github.com/ClickHouse/ClickHouse/pull/60138) ([Raúl Marín](https://github.com/Algunenano)).
+* Reject incoming INSERT queries in case when query-level settings `async_insert` and `deduplicate_blocks_in_dependent_materialized_views` are enabled together. This behaviour is controlled by a setting `throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert` and enabled by default. This is a continuation of https://github.com/ClickHouse/ClickHouse/pull/59699 needed to unblock https://github.com/ClickHouse/ClickHouse/pull/59915. [#60888](https://github.com/ClickHouse/ClickHouse/pull/60888) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Utility `clickhouse-copier` is moved to a separate repository on GitHub: https://github.com/ClickHouse/copier. It is no longer included in the bundle but is still available as a separate download. This closes: [#60734](https://github.com/ClickHouse/ClickHouse/issues/60734) This closes: [#60540](https://github.com/ClickHouse/ClickHouse/issues/60540) This closes: [#60250](https://github.com/ClickHouse/ClickHouse/issues/60250) This closes: [#52917](https://github.com/ClickHouse/ClickHouse/issues/52917) This closes: [#51140](https://github.com/ClickHouse/ClickHouse/issues/51140) This closes: [#47517](https://github.com/ClickHouse/ClickHouse/issues/47517) This closes: [#47189](https://github.com/ClickHouse/ClickHouse/issues/47189) This closes: [#46598](https://github.com/ClickHouse/ClickHouse/issues/46598) This closes: [#40257](https://github.com/ClickHouse/ClickHouse/issues/40257) This closes: [#36504](https://github.com/ClickHouse/ClickHouse/issues/36504) This closes: [#35485](https://github.com/ClickHouse/ClickHouse/issues/35485) This closes: [#33702](https://github.com/ClickHouse/ClickHouse/issues/33702) This closes: [#26702](https://github.com/ClickHouse/ClickHouse/issues/26702) ### Documentation entry for user-facing changes. [#61058](https://github.com/ClickHouse/ClickHouse/pull/61058) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* To increase compatibility with MySQL, function `locate` now accepts arguments `(needle, haystack[, start_pos])` by default. The previous behavior `(haystack, needle, [, start_pos])` can be restored by setting `function_locate_has_mysql_compatible_argument_order = 0`. [#61092](https://github.com/ClickHouse/ClickHouse/pull/61092) ([Robert Schulze](https://github.com/rschu1ze)).
+* The obsolete in-memory data parts have been deprecated since version 23.5 and have not been supported since version 23.10. Now the remaining code is removed. Continuation of [#55186](https://github.com/ClickHouse/ClickHouse/issues/55186) and [#45409](https://github.com/ClickHouse/ClickHouse/issues/45409). It is unlikely that you have used in-memory data parts because they were available only before version 23.5 and only when you enabled them manually by specifying the corresponding SETTINGS for a MergeTree table. To check if you have in-memory data parts, run the following query: `SELECT part_type, count() FROM system.parts GROUP BY part_type ORDER BY part_type`. To disable the usage of in-memory data parts, do `ALTER TABLE ... MODIFY SETTING min_bytes_for_compact_part = DEFAULT, min_rows_for_compact_part = DEFAULT`. Before upgrading from old ClickHouse releases, first check that you don't have in-memory data parts. If there are in-memory data parts, disable them first, then wait while there are no in-memory data parts and continue the upgrade. [#61127](https://github.com/ClickHouse/ClickHouse/pull/61127) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Forbid `SimpleAggregateFunction` in `ORDER BY` of `MergeTree` tables (like `AggregateFunction` is forbidden, but they are forbidden because they are not comparable) by default (use `allow_suspicious_primary_key` to allow them). [#61399](https://github.com/ClickHouse/ClickHouse/pull/61399) ([Azat Khuzhin](https://github.com/azat)).
+* ClickHouse allows arbitrary binary data in the String data type, which is typically UTF-8. Parquet/ORC/Arrow Strings only support UTF-8. That's why you can choose which Arrow's data type to use for the ClickHouse String data type - String or Binary. This is controlled by the settings, `output_format_parquet_string_as_string`, `output_format_orc_string_as_string`, `output_format_arrow_string_as_string`. While Binary would be more correct and compatible, using String by default will correspond to user expectations in most cases. Parquet/ORC/Arrow supports many compression methods, including lz4 and zstd. ClickHouse supports each and every compression method. Some inferior tools lack support for the faster `lz4` compression method, that's why we set `zstd` by default. This is controlled by the settings `output_format_parquet_compression_method`, `output_format_orc_compression_method`, and `output_format_arrow_compression_method`. We changed the default to `zstd` for Parquet and ORC, but not Arrow (it is emphasized for low-level usages). [#61817](https://github.com/ClickHouse/ClickHouse/pull/61817) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix for the materialized view security issue, which allowed a user to insert into a table without required grants for that. Fix validates that the user has permission to insert not only into a materialized view but also into all underlying tables. This means that some queries, which worked before, now can fail with Not enough privileges. To address this problem, the release introduces a new feature of SQL security for views [https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security](/sql-reference/statements/create/view#sql_security). [#54901](https://github.com/ClickHouse/ClickHouse/pull/54901) ([pufit](https://github.com/pufit))
+
+#### New feature {#new-feature}
+* Topk/topkweighed support mode, which return count of values and it's error. [#54508](https://github.com/ClickHouse/ClickHouse/pull/54508) ([UnamedRus](https://github.com/UnamedRus)).
+* Added new syntax which allows to specify definer user in view/materialized view. This allows to execute selects/inserts from views without explicit grants for underlying tables. [#54901](https://github.com/ClickHouse/ClickHouse/pull/54901) ([pufit](https://github.com/pufit)).
+* Implemented automatic conversion of merge tree tables of different kinds to replicated engine. Create empty `convert_to_replicated` file in table's data directory (`/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/`) and that table will be converted automatically on next server start. [#57798](https://github.com/ClickHouse/ClickHouse/pull/57798) ([Kirill](https://github.com/kirillgarbar)).
+* Added table function `mergeTreeIndex`. It represents the contents of index and marks files of `MergeTree` tables. It can be used for introspection. Syntax: `mergeTreeIndex(database, table, [with_marks = true])` where `database.table` is an existing table with `MergeTree` engine. [#58140](https://github.com/ClickHouse/ClickHouse/pull/58140) ([Anton Popov](https://github.com/CurtizJ)).
+* Try to detect file format automatically during schema inference if it's unknown in `file/s3/hdfs/url/azureBlobStorage` engines. Closes [#50576](https://github.com/ClickHouse/ClickHouse/issues/50576). [#59092](https://github.com/ClickHouse/ClickHouse/pull/59092) ([Kruglov Pavel](https://github.com/Avogar)).
+* Add generate_series as a table function. This function generates table with an arithmetic progression with natural numbers. [#59390](https://github.com/ClickHouse/ClickHouse/pull/59390) ([divanik](https://github.com/divanik)).
+* Added query `ALTER TABLE table FORGET PARTITION partition` that removes ZooKeeper nodes, related to an empty partition. [#59507](https://github.com/ClickHouse/ClickHouse/pull/59507) ([Sergei Trifonov](https://github.com/serxa)).
+* Support reading and writing backups as tar archives. [#59535](https://github.com/ClickHouse/ClickHouse/pull/59535) ([josh-hildred](https://github.com/josh-hildred)).
+* Provides new aggregate function 'groupArrayIntersect'. Follows up: [#49862](https://github.com/ClickHouse/ClickHouse/issues/49862). [#59598](https://github.com/ClickHouse/ClickHouse/pull/59598) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Implemented system.dns_cache table, which can be useful for debugging DNS issues. [#59856](https://github.com/ClickHouse/ClickHouse/pull/59856) ([Kirill Nikiforov](https://github.com/allmazz)).
+* Implemented support for S3Express buckets. [#59965](https://github.com/ClickHouse/ClickHouse/pull/59965) ([Nikita Taranov](https://github.com/nickitat)).
+* The codec `LZ4HC` will accept a new level 2, which is faster than the previous minimum level 3, at the expense of less compression. In previous versions, `LZ4HC(2)` and less was the same as `LZ4HC(3)`. Author: [Cyan4973](https://github.com/Cyan4973). [#60090](https://github.com/ClickHouse/ClickHouse/pull/60090) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Implemented system.dns_cache table, which can be useful for debugging DNS issues. New server setting dns_cache_max_size. [#60257](https://github.com/ClickHouse/ClickHouse/pull/60257) ([Kirill Nikiforov](https://github.com/allmazz)).
+* Added function `toMillisecond` which returns the millisecond component for values of type`DateTime` or `DateTime64`. [#60281](https://github.com/ClickHouse/ClickHouse/pull/60281) ([Shaun Struwig](https://github.com/Blargian)).
+* Support single-argument version for the merge table function, as `merge(['db_name', ] 'tables_regexp')`. [#60372](https://github.com/ClickHouse/ClickHouse/pull/60372) ([豪肥肥](https://github.com/HowePa)).
+* Make all format names case insensitive, like Tsv, or TSV, or tsv, or even rowbinary. [#60420](https://github.com/ClickHouse/ClickHouse/pull/60420) ([豪肥肥](https://github.com/HowePa)).
+* Added new syntax which allows to specify definer user in view/materialized view. This allows to execute selects/inserts from views without explicit grants for underlying tables. [#60439](https://github.com/ClickHouse/ClickHouse/pull/60439) ([pufit](https://github.com/pufit)).
+* Add four properties to the `StorageMemory` (memory-engine) `min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep` and `max_rows_to_keep` - Add tests to reflect new changes - Update `memory.md` documentation - Add table `context` property to `MemorySink` to enable access to table parameter bounds. [#60612](https://github.com/ClickHouse/ClickHouse/pull/60612) ([Jake Bamrah](https://github.com/JakeBamrah)).
+* Added function `toMillisecond` which returns the millisecond component for values of type`DateTime` or `DateTime64`. [#60649](https://github.com/ClickHouse/ClickHouse/pull/60649) ([Robert Schulze](https://github.com/rschu1ze)).
+* Separate limits on number of waiting and executing queries. Added new server setting `max_waiting_queries` that limits the number of queries waiting due to `async_load_databases`. Existing limits on number of executing queries no longer count waiting queries. [#61053](https://github.com/ClickHouse/ClickHouse/pull/61053) ([Sergei Trifonov](https://github.com/serxa)).
+* Add support for `ATTACH PARTITION ALL`. [#61107](https://github.com/ClickHouse/ClickHouse/pull/61107) ([Kirill Nikiforov](https://github.com/allmazz)).
+
+#### Performance Improvement {#performance-improvement}
+* Eliminates min/max/any/anyLast aggregators of GROUP BY keys in SELECT section. [#52230](https://github.com/ClickHouse/ClickHouse/pull/52230) ([JackyWoo](https://github.com/JackyWoo)).
+* Improve the performance of serialized aggregation method when involving multiple [nullable] columns. This is a general version of [#51399](https://github.com/ClickHouse/ClickHouse/issues/51399) that doesn't compromise on abstraction integrity. [#55809](https://github.com/ClickHouse/ClickHouse/pull/55809) ([Amos Bird](https://github.com/amosbird)).
+* Lazy build join output to improve performance of ALL join. [#58278](https://github.com/ClickHouse/ClickHouse/pull/58278) ([LiuNeng](https://github.com/liuneng1994)).
+* Improvements to aggregate functions ArgMin / ArgMax / any / anyLast / anyHeavy, as well as `ORDER BY {u8/u16/u32/u64/i8/i16/u32/i64) LIMIT 1` queries. [#58640](https://github.com/ClickHouse/ClickHouse/pull/58640) ([Raúl Marín](https://github.com/Algunenano)).
+* Optimize performance of sum/avg conditionally for bigint and big decimal types by reducing branch miss. [#59504](https://github.com/ClickHouse/ClickHouse/pull/59504) ([李扬](https://github.com/taiyang-li)).
+* Improve performance of SELECTs with active mutations. [#59531](https://github.com/ClickHouse/ClickHouse/pull/59531) ([Azat Khuzhin](https://github.com/azat)).
+* Trivial optimize on column filter. Avoid those filter columns whoes underlying data type is not number being filtered with `result_size_hint = -1`. Peak memory can be reduced to 44% of the original in some cases. [#59698](https://github.com/ClickHouse/ClickHouse/pull/59698) ([李扬](https://github.com/taiyang-li)).
+* Primary key will use less amount of memory. [#60049](https://github.com/ClickHouse/ClickHouse/pull/60049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Improve memory usage for primary key and some other operations. [#60050](https://github.com/ClickHouse/ClickHouse/pull/60050) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* The tables' primary keys will be loaded in memory lazily on first access. This is controlled by the new MergeTree setting `primary_key_lazy_load`, which is on by default. This provides several advantages: - it will not be loaded for tables that are not used; - if there is not enough memory, an exception will be thrown on first use instead of at server startup. This provides several disadvantages: - the latency of loading the primary key will be paid on the first query rather than before accepting connections; this theoretically may introduce a thundering-herd problem. This closes [#11188](https://github.com/ClickHouse/ClickHouse/issues/11188). [#60093](https://github.com/ClickHouse/ClickHouse/pull/60093) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Vectorized function `dotProduct` which is useful for vector search. [#60202](https://github.com/ClickHouse/ClickHouse/pull/60202) ([Robert Schulze](https://github.com/rschu1ze)).
+* If the table's primary key contains mostly useless columns, don't keep them in memory. This is controlled by a new setting `primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns` with the value `0.9` by default, which means: for a composite primary key, if a column changes its value for at least 0.9 of all the times, the next columns after it will be not loaded. [#60255](https://github.com/ClickHouse/ClickHouse/pull/60255) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Execute multiIf function columnarly when result_type's underlying type is number. [#60384](https://github.com/ClickHouse/ClickHouse/pull/60384) ([李扬](https://github.com/taiyang-li)).
+* As is shown in Fig 1, the replacement of "&&" with "&" could generate the SIMD code.  Fig 1. Code compiled from '&&' (left) and '&' (right). [#60498](https://github.com/ClickHouse/ClickHouse/pull/60498) ([Zhiguo Zhou](https://github.com/ZhiguoZh)).
+* Faster (almost 2x) mutexes (was slower due to ThreadFuzzer). [#60823](https://github.com/ClickHouse/ClickHouse/pull/60823) ([Azat Khuzhin](https://github.com/azat)).
+* Move connection drain from prepare to work, and drain multiple connections in parallel. [#60845](https://github.com/ClickHouse/ClickHouse/pull/60845) ([lizhuoyu5](https://github.com/lzydmxy)).
+* Optimize insertManyFrom of nullable number or nullable string. [#60846](https://github.com/ClickHouse/ClickHouse/pull/60846) ([李扬](https://github.com/taiyang-li)).
+* Optimized function `dotProduct` to omit unnecessary and expensive memory copies. [#60928](https://github.com/ClickHouse/ClickHouse/pull/60928) ([Robert Schulze](https://github.com/rschu1ze)).
+* Operations with the filesystem cache will suffer less from the lock contention. [#61066](https://github.com/ClickHouse/ClickHouse/pull/61066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Optimize ColumnString::replicate and prevent memcpySmallAllowReadWriteOverflow15Impl from being optimized to built-in memcpy. Close [#61074](https://github.com/ClickHouse/ClickHouse/issues/61074). ColumnString::replicate speeds up by 2.46x on x86-64. [#61075](https://github.com/ClickHouse/ClickHouse/pull/61075) ([李扬](https://github.com/taiyang-li)).
+* 30x faster printing for 256-bit integers. [#61100](https://github.com/ClickHouse/ClickHouse/pull/61100) ([Raúl Marín](https://github.com/Algunenano)).
+* If a query with a syntax error contained COLUMNS matcher with a regular expression, the regular expression was compiled each time during the parser's backtracking, instead of being compiled once. This was a fundamental error. The compiled regexp was put to AST. But the letter A in AST means "abstract" which means it should not contain heavyweight objects. Parts of AST can be created and discarded during parsing, including a large number of backtracking. This leads to slowness on the parsing side and consequently allows DoS by a readonly user. But the main problem is that it prevents progress in fuzzers. [#61543](https://github.com/ClickHouse/ClickHouse/pull/61543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+#### Improvement {#improvement}
+* While running the MODIFY COLUMN query for materialized views, check the inner table's structure to ensure every column exists. [#47427](https://github.com/ClickHouse/ClickHouse/pull/47427) ([sunny](https://github.com/sunny19930321)).
+* Added table `system.keywords` which contains all the keywords from parser. Mostly needed and will be used for better fuzzing and syntax highlighting. [#51808](https://github.com/ClickHouse/ClickHouse/pull/51808) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Added support for parameterized view with analyzer to not analyze create parameterized view. Refactor existing parameterized view logic to not analyze create parameterized view. [#54211](https://github.com/ClickHouse/ClickHouse/pull/54211) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
+* Ordinary database engine is deprecated. You will receive a warning in clickhouse-client if your server is using it. This closes [#52229](https://github.com/ClickHouse/ClickHouse/issues/52229). [#56942](https://github.com/ClickHouse/ClickHouse/pull/56942) ([shabroo](https://github.com/shabroo)).
+* All zero copy locks related to a table have to be dropped when the table is dropped. The directory which contains these locks has to be removed also. [#57575](https://github.com/ClickHouse/ClickHouse/pull/57575) ([Sema Checherinda](https://github.com/CheSema)).
+* Add short-circuit ability for `dictGetOrDefault` function. Closes [#52098](https://github.com/ClickHouse/ClickHouse/issues/52098). [#57767](https://github.com/ClickHouse/ClickHouse/pull/57767) ([jsc0218](https://github.com/jsc0218)).
+* Allow declaring enum in external table structure. [#57857](https://github.com/ClickHouse/ClickHouse/pull/57857) ([Duc Canh Le](https://github.com/canhld94)).
+* Running `ALTER COLUMN MATERIALIZE` on a column with `DEFAULT` or `MATERIALIZED` expression now writes the correct values: The default value for existing parts with default value or the non-default value for existing parts with non-default value. Previously, the default value was written for all existing parts. [#58023](https://github.com/ClickHouse/ClickHouse/pull/58023) ([Duc Canh Le](https://github.com/canhld94)).
+* Enabled a backoff logic (e.g. exponential). Will provide an ability for reduced CPU usage, memory usage and log file sizes. [#58036](https://github.com/ClickHouse/ClickHouse/pull/58036) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+* Consider lightweight deleted rows when selecting parts to merge. [#58223](https://github.com/ClickHouse/ClickHouse/pull/58223) ([Zhuo Qiu](https://github.com/jewelzqiu)).
+* Allow to define `volume_priority` in `storage_configuration`. [#58533](https://github.com/ClickHouse/ClickHouse/pull/58533) ([Andrey Zvonov](https://github.com/zvonand)).
+* Add support for Date32 type in T64 codec. [#58738](https://github.com/ClickHouse/ClickHouse/pull/58738) ([Hongbin Ma](https://github.com/binmahone)).
+* This PR makes http/https connections reusable for all uses cases. Even when response is 3xx or 4xx. [#58845](https://github.com/ClickHouse/ClickHouse/pull/58845) ([Sema Checherinda](https://github.com/CheSema)).
+* Added comments for columns for more system tables. Continuation of https://github.com/ClickHouse/ClickHouse/pull/58356. [#59016](https://github.com/ClickHouse/ClickHouse/pull/59016) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Now we can use virtual columns in PREWHERE. It's worthwhile for non-const virtual columns like `_part_offset`. [#59033](https://github.com/ClickHouse/ClickHouse/pull/59033) ([Amos Bird](https://github.com/amosbird)).
+* Settings for the Distributed table engine can now be specified in the server configuration file (similar to MergeTree settings), e.g. ``` false ```. [#59291](https://github.com/ClickHouse/ClickHouse/pull/59291) ([Azat Khuzhin](https://github.com/azat)).
+* Keeper improvement: cache only a certain amount of logs in-memory controlled by `latest_logs_cache_size_threshold` and `commit_logs_cache_size_threshold`. [#59460](https://github.com/ClickHouse/ClickHouse/pull/59460) ([Antonio Andelic](https://github.com/antonio2368)).
+* Instead using a constant key, now object storage generates key for determining remove objects capability. [#59495](https://github.com/ClickHouse/ClickHouse/pull/59495) ([Sema Checherinda](https://github.com/CheSema)).
+* Don't infer floats in exponential notation by default. Add a setting `input_format_try_infer_exponent_floats` that will restore previous behaviour (disabled by default). Closes [#59476](https://github.com/ClickHouse/ClickHouse/issues/59476). [#59500](https://github.com/ClickHouse/ClickHouse/pull/59500) ([Kruglov Pavel](https://github.com/Avogar)).
+* Allow alter operations to be surrounded by parenthesis. The emission of parentheses can be controlled by the `format_alter_operations_with_parentheses` config. By default in formatted queries the parentheses are emitted as we store the formatted alter operations in some places as metadata (e.g.: mutations). The new syntax clarifies some of the queries where alter operations end in a list. E.g.: `ALTER TABLE x MODIFY TTL date GROUP BY a, b, DROP COLUMN c` cannot be parsed properly with the old syntax. In the new syntax the query `ALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c)` is obvious. Older versions are not able to read the new syntax, therefore using the new syntax might cause issues if newer and older version of ClickHouse are mixed in a single cluster. [#59532](https://github.com/ClickHouse/ClickHouse/pull/59532) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Bumped Intel QPL (used by codec `DEFLATE_QPL`) from v1.3.1 to v1.4.0 . Also fixed a bug for polling timeout mechanism, as we observed in same cases timeout won't work properly, if timeout happen, IAA and CPU may process buffer concurrently. So far, we'd better make sure IAA codec status is not QPL_STS_BEING_PROCESSED, then fallback to SW codec. [#59551](https://github.com/ClickHouse/ClickHouse/pull/59551) ([jasperzhu](https://github.com/jinjunzh)).
+* Add positional pread in libhdfs3. If you want to call positional read in libhdfs3, use the hdfsPread function in hdfs.h as follows. `tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);`. [#59624](https://github.com/ClickHouse/ClickHouse/pull/59624) ([M1eyu](https://github.com/M1eyu2018)).
+* Check for stack overflow in parsers even if the user misconfigured the `max_parser_depth` setting to a very high value. This closes [#59622](https://github.com/ClickHouse/ClickHouse/issues/59622). [#59697](https://github.com/ClickHouse/ClickHouse/pull/59697) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Unify xml and sql created named collection behaviour in kafka storage. [#59710](https://github.com/ClickHouse/ClickHouse/pull/59710) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Allow uuid in replica_path if CREATE TABLE explicitly has it. [#59908](https://github.com/ClickHouse/ClickHouse/pull/59908) ([Azat Khuzhin](https://github.com/azat)).
+* Add column `metadata_version` of ReplicatedMergeTree table in `system.tables` system table. [#59942](https://github.com/ClickHouse/ClickHouse/pull/59942) ([Maksim Kita](https://github.com/kitaisreal)).
+* Keeper improvement: add retries on failures for Disk related operations. [#59980](https://github.com/ClickHouse/ClickHouse/pull/59980) ([Antonio Andelic](https://github.com/antonio2368)).
+* Add new config setting `backups.remove_backup_files_after_failure`: ``` true ```. [#60002](https://github.com/ClickHouse/ClickHouse/pull/60002) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Use multiple threads while reading the metadata of tables from a backup while executing the RESTORE command. [#60040](https://github.com/ClickHouse/ClickHouse/pull/60040) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Now if `StorageBuffer` has more than 1 shard (`num_layers` > 1) background flush will happen simultaneously for all shards in multiple threads. [#60111](https://github.com/ClickHouse/ClickHouse/pull/60111) ([alesapin](https://github.com/alesapin)).
+* Support specifying users for specific S3 settings in config using `user` key. [#60144](https://github.com/ClickHouse/ClickHouse/pull/60144) ([Antonio Andelic](https://github.com/antonio2368)).
+* Copy S3 file GCP fallback to buffer copy in case GCP returned `Internal Error` with `GATEWAY_TIMEOUT` HTTP error code. [#60164](https://github.com/ClickHouse/ClickHouse/pull/60164) ([Maksim Kita](https://github.com/kitaisreal)).
+* Allow "local" as object storage type instead of "local_blob_storage". [#60165](https://github.com/ClickHouse/ClickHouse/pull/60165) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Implement comparison operator for Variant values and proper Field inserting into Variant column. Don't allow creating `Variant` type with similar variant types by default (allow uder a setting `allow_suspicious_variant_types`) Closes [#59996](https://github.com/ClickHouse/ClickHouse/issues/59996). Closes [#59850](https://github.com/ClickHouse/ClickHouse/issues/59850). [#60198](https://github.com/ClickHouse/ClickHouse/pull/60198) ([Kruglov Pavel](https://github.com/Avogar)).
+* Improved overall usability of virtual columns. Now it is allowed to use virtual columns in `PREWHERE` (it's worthwhile for non-const virtual columns like `_part_offset`). Now a builtin documentation is available for virtual columns as a comment of column in `DESCRIBE` query with enabled setting `describe_include_virtual_columns`. [#60205](https://github.com/ClickHouse/ClickHouse/pull/60205) ([Anton Popov](https://github.com/CurtizJ)).
+* Short circuit execution for `ULIDStringToDateTime`. [#60211](https://github.com/ClickHouse/ClickHouse/pull/60211) ([Juan Madurga](https://github.com/jlmadurga)).
+* Added `query_id` column for tables `system.backups` and `system.backup_log`. Added error stacktrace to `error` column. [#60220](https://github.com/ClickHouse/ClickHouse/pull/60220) ([Maksim Kita](https://github.com/kitaisreal)).
+* Parallel flush of pending INSERT blocks of Distributed engine on `DETACH`/server shutdown and `SYSTEM FLUSH DISTRIBUTED` (Parallelism will work only if you have multi disk policy for table (like everything in Distributed engine right now)). [#60225](https://github.com/ClickHouse/ClickHouse/pull/60225) ([Azat Khuzhin](https://github.com/azat)).
+* Filter setting is improper in `joinRightColumnsSwitchNullability`, resolve [#59625](https://github.com/ClickHouse/ClickHouse/issues/59625). [#60259](https://github.com/ClickHouse/ClickHouse/pull/60259) ([lgbo](https://github.com/lgbo-ustc)).
+* Add a setting to force read-through cache for merges. [#60308](https://github.com/ClickHouse/ClickHouse/pull/60308) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Issue [#57598](https://github.com/ClickHouse/ClickHouse/issues/57598) mentions a variant behaviour regarding transaction handling. An issued COMMIT/ROLLBACK when no transaction is active is reported as an error contrary to MySQL behaviour. [#60338](https://github.com/ClickHouse/ClickHouse/pull/60338) ([PapaToemmsn](https://github.com/PapaToemmsn)).
+* Added `none_only_active` mode for `distributed_ddl_output_mode` setting. [#60340](https://github.com/ClickHouse/ClickHouse/pull/60340) ([Alexander Tokmakov](https://github.com/tavplubix)).
+* Connections through the MySQL port now automatically run with setting `prefer_column_name_to_alias = 1` to support QuickSight out-of-the-box. Also, settings `mysql_map_string_to_text_in_show_columns` and `mysql_map_fixed_string_to_text_in_show_columns` are now enabled by default, affecting also only MySQL connections. This increases compatibility with more BI tools. [#60365](https://github.com/ClickHouse/ClickHouse/pull/60365) ([Robert Schulze](https://github.com/rschu1ze)).
+* When output format is Pretty format and a block consists of a single numeric value which exceeds one million, A readable number will be printed on table right. e.g. ``` ┌──────count()─┐ │ 233765663884 │ -- 233.77 billion └──────────────┘ ```. [#60379](https://github.com/ClickHouse/ClickHouse/pull/60379) ([rogeryk](https://github.com/rogeryk)).
+* Allow configuring HTTP redirect handlers for clickhouse-server. For example, you can make `/` redirect to the Play UI. [#60390](https://github.com/ClickHouse/ClickHouse/pull/60390) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* The advanced dashboard has slightly better colors for multi-line graphs. [#60391](https://github.com/ClickHouse/ClickHouse/pull/60391) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix a race condition in JavaScript code leading to duplicate charts on top of each other. [#60392](https://github.com/ClickHouse/ClickHouse/pull/60392) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Check for stack overflow in parsers even if the user misconfigured the `max_parser_depth` setting to a very high value. This closes [#59622](https://github.com/ClickHouse/ClickHouse/issues/59622). [#60434](https://github.com/ClickHouse/ClickHouse/pull/60434) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Function `substring` now has a new alias `byteSlice`. [#60494](https://github.com/ClickHouse/ClickHouse/pull/60494) ([Robert Schulze](https://github.com/rschu1ze)).
+* Renamed server setting `dns_cache_max_size` to `dns_cache_max_entries` to reduce ambiguity. [#60500](https://github.com/ClickHouse/ClickHouse/pull/60500) ([Kirill Nikiforov](https://github.com/allmazz)).
+* `SHOW INDEX | INDEXES | INDICES | KEYS` no longer sorts by the primary key columns (which was unintuitive). [#60514](https://github.com/ClickHouse/ClickHouse/pull/60514) ([Robert Schulze](https://github.com/rschu1ze)).
+* Keeper improvement: abort during startup if an invalid snapshot is detected to avoid data loss. [#60537](https://github.com/ClickHouse/ClickHouse/pull/60537) ([Antonio Andelic](https://github.com/antonio2368)).
+* Added MergeTree read split ranges into intersecting and non intersecting fault injection using `merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability` setting. [#60548](https://github.com/ClickHouse/ClickHouse/pull/60548) ([Maksim Kita](https://github.com/kitaisreal)).
+* The Advanced dashboard now has controls always visible on scrolling. This allows you to add a new chart without scrolling up. [#60692](https://github.com/ClickHouse/ClickHouse/pull/60692) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* String types and Enums can be used in the same context, such as: arrays, UNION queries, conditional expressions. This closes [#60726](https://github.com/ClickHouse/ClickHouse/issues/60726). [#60727](https://github.com/ClickHouse/ClickHouse/pull/60727) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Update tzdata to 2024a. [#60768](https://github.com/ClickHouse/ClickHouse/pull/60768) ([Raúl Marín](https://github.com/Algunenano)).
+* Support files without format extension in Filesystem database. [#60795](https://github.com/ClickHouse/ClickHouse/pull/60795) ([Kruglov Pavel](https://github.com/Avogar)).
+* Keeper improvement: support `leadership_expiry_ms` in Keeper's settings. [#60806](https://github.com/ClickHouse/ClickHouse/pull/60806) ([Brokenice0415](https://github.com/Brokenice0415)).
+* Always infer exponential numbers in JSON formats regardless of the setting `input_format_try_infer_exponent_floats`. Add setting `input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects` that allows to use String type for ambiguous paths instead of an exception during named Tuples inference from JSON objects. [#60808](https://github.com/ClickHouse/ClickHouse/pull/60808) ([Kruglov Pavel](https://github.com/Avogar)).
+* Add a flag for SMJ to treat null as biggest/smallest. So the behavior can be compitable with other SQL systems, like Apache Spark. [#60896](https://github.com/ClickHouse/ClickHouse/pull/60896) ([loudongfeng](https://github.com/loudongfeng)).
+* Clickhouse version has been added to docker labels. Closes [#54224](https://github.com/ClickHouse/ClickHouse/issues/54224). [#60949](https://github.com/ClickHouse/ClickHouse/pull/60949) ([Nikolay Monkov](https://github.com/nikmonkov)).
+* Add a setting `parallel_replicas_allow_in_with_subquery = 1` which allows subqueries for IN work with parallel replicas. [#60950](https://github.com/ClickHouse/ClickHouse/pull/60950) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* DNSResolver shuffles set of resolved IPs. [#60965](https://github.com/ClickHouse/ClickHouse/pull/60965) ([Sema Checherinda](https://github.com/CheSema)).
+* Support detect output format by file exctension in `clickhouse-client` and `clickhouse-local`. [#61036](https://github.com/ClickHouse/ClickHouse/pull/61036) ([豪肥肥](https://github.com/HowePa)).
+* Check memory limit update periodically. [#61049](https://github.com/ClickHouse/ClickHouse/pull/61049) ([Han Fei](https://github.com/hanfei1991)).
+* Enable processors profiling (time spent/in and out bytes for sorting, aggregation, ...) by default. [#61096](https://github.com/ClickHouse/ClickHouse/pull/61096) ([Azat Khuzhin](https://github.com/azat)).
+* Add the function `toUInt128OrZero`, which was missed by mistake (the mistake is related to https://github.com/ClickHouse/ClickHouse/pull/945). The compatibility aliases `FROM_UNIXTIME` and `DATE_FORMAT` (they are not ClickHouse-native and only exist for MySQL compatibility) have been made case insensitive, as expected for SQL-compatibility aliases. [#61114](https://github.com/ClickHouse/ClickHouse/pull/61114) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Improvements for the access checks, allowing to revoke of unpossessed rights in case the target user doesn't have the revoking grants either. Example: ```sql GRANT SELECT ON *.* TO user1; REVOKE SELECT ON system.* FROM user1;. [#61115](https://github.com/ClickHouse/ClickHouse/pull/61115) ([pufit](https://github.com/pufit)).
+* Fix an error in previeous opt: https://github.com/ClickHouse/ClickHouse/pull/59698: remove break to make sure the first filtered column has minimum size cc @jsc0218. [#61145](https://github.com/ClickHouse/ClickHouse/pull/61145) ([李扬](https://github.com/taiyang-li)).
+* Fix `has()` function with `Nullable` column (fixes [#60214](https://github.com/ClickHouse/ClickHouse/issues/60214)). [#61249](https://github.com/ClickHouse/ClickHouse/pull/61249) ([Mikhail Koviazin](https://github.com/mkmkme)).
+* Now it's possible to specify attribute `merge="true"` in config substitutions for subtrees ``. In case this attribute specified, clickhouse will merge subtree with existing configuration, otherwise default behavior is append new content to configuration. [#61299](https://github.com/ClickHouse/ClickHouse/pull/61299) ([alesapin](https://github.com/alesapin)).
+* Add async metrics for virtual memory mappings: VMMaxMapCount & VMNumMaps. Closes [#60662](https://github.com/ClickHouse/ClickHouse/issues/60662). [#61354](https://github.com/ClickHouse/ClickHouse/pull/61354) ([Tuan Pham Anh](https://github.com/tuanpavn)).
+* Use `temporary_files_codec` setting in all places where we create temporary data, for example external memory sorting and external memory GROUP BY. Before it worked only in `partial_merge` JOIN algorithm. [#61456](https://github.com/ClickHouse/ClickHouse/pull/61456) ([Maksim Kita](https://github.com/kitaisreal)).
+* Remove duplicated check `containing_part.empty()`, It's already being checked here: https://github.com/ClickHouse/ClickHouse/blob/1296dac3c7e47670872c15e3f5e58f869e0bd2f2/src/Storages/MergeTree/MergeTreeData.cpp#L6141. [#61467](https://github.com/ClickHouse/ClickHouse/pull/61467) ([William Schoeffel](https://github.com/wiledusc)).
+* Add a new setting `max_parser_backtracks` which allows to limit the complexity of query parsing. [#61502](https://github.com/ClickHouse/ClickHouse/pull/61502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Less contention during dynamic resize of filesystem cache. [#61524](https://github.com/ClickHouse/ClickHouse/pull/61524) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Disallow sharded mode of StorageS3 queue, because it will be rewritten. [#61537](https://github.com/ClickHouse/ClickHouse/pull/61537) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fixed typo: from `use_leagcy_max_level` to `use_legacy_max_level`. [#61545](https://github.com/ClickHouse/ClickHouse/pull/61545) ([William Schoeffel](https://github.com/wiledusc)).
+* Remove some duplicate entries in blob_storage_log. [#61622](https://github.com/ClickHouse/ClickHouse/pull/61622) ([YenchangChan](https://github.com/YenchangChan)).
+* Added `current_user` function as a compatibility alias for MySQL. [#61770](https://github.com/ClickHouse/ClickHouse/pull/61770) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Use managed identity for backups IO when using Azure Blob Storage. Add a setting to prevent ClickHouse from attempting to create a non-existent container, which requires permissions at the storage account level. [#61785](https://github.com/ClickHouse/ClickHouse/pull/61785) ([Daniel Pozo Escalona](https://github.com/danipozo)).
+* In the previous version, some numbers in Pretty formats were not pretty enough. [#61794](https://github.com/ClickHouse/ClickHouse/pull/61794) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* A long value in Pretty formats won't be cut if it is the single value in the resultset, such as in the result of the `SHOW CREATE TABLE` query. [#61795](https://github.com/ClickHouse/ClickHouse/pull/61795) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Similarly to `clickhouse-local`, `clickhouse-client` will accept the `--output-format` option as a synonym to the `--format` option. This closes [#59848](https://github.com/ClickHouse/ClickHouse/issues/59848). [#61797](https://github.com/ClickHouse/ClickHouse/pull/61797) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* If stdout is a terminal and the output format is not specified, `clickhouse-client` and similar tools will use `PrettyCompact` by default, similarly to the interactive mode. `clickhouse-client` and `clickhouse-local` will handle command line arguments for input and output formats in a unified fashion. This closes [#61272](https://github.com/ClickHouse/ClickHouse/issues/61272). [#61800](https://github.com/ClickHouse/ClickHouse/pull/61800) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Underscore digit groups in Pretty formats for better readability. This is controlled by a new setting, `output_format_pretty_highlight_digit_groups`. [#61802](https://github.com/ClickHouse/ClickHouse/pull/61802) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+#### Bug Fix (user-visible misbehavior in an official stable release) {#bug-fix-user-visible-misbehavior-in-an-official-stable-release}
+
+* Fix bug with `intDiv` for decimal arguments [#59243](https://github.com/ClickHouse/ClickHouse/pull/59243) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix_kql_issue_found_by_wingfuzz [#59626](https://github.com/ClickHouse/ClickHouse/pull/59626) ([Yong Wang](https://github.com/kashwy)).
+* Fix error "Read beyond last offset" for AsynchronousBoundedReadBuffer [#59630](https://github.com/ClickHouse/ClickHouse/pull/59630) ([Vitaly Baranov](https://github.com/vitlibar)).
+* rabbitmq: fix having neither acked nor nacked messages [#59775](https://github.com/ClickHouse/ClickHouse/pull/59775) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix function execution over const and LowCardinality with GROUP BY const for analyzer [#59986](https://github.com/ClickHouse/ClickHouse/pull/59986) ([Azat Khuzhin](https://github.com/azat)).
+* Fix scale conversion for DateTime64 [#60004](https://github.com/ClickHouse/ClickHouse/pull/60004) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix INSERT into SQLite with single quote (by escaping single quotes with a quote instead of backslash) [#60015](https://github.com/ClickHouse/ClickHouse/pull/60015) ([Azat Khuzhin](https://github.com/azat)).
+* Fix optimize_uniq_to_count removing the column alias [#60026](https://github.com/ClickHouse/ClickHouse/pull/60026) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix finished_mutations_to_keep=0 for MergeTree (as docs says 0 is to keep everything) [#60031](https://github.com/ClickHouse/ClickHouse/pull/60031) ([Azat Khuzhin](https://github.com/azat)).
+* Fix possible exception from s3queue table on drop [#60036](https://github.com/ClickHouse/ClickHouse/pull/60036) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* PartsSplitter invalid ranges for the same part [#60041](https://github.com/ClickHouse/ClickHouse/pull/60041) ([Maksim Kita](https://github.com/kitaisreal)).
+* Use max_query_size from context in DDLLogEntry instead of hardcoded 4096 [#60083](https://github.com/ClickHouse/ClickHouse/pull/60083) ([Kruglov Pavel](https://github.com/Avogar)).
+* Fix inconsistent formatting of queries [#60095](https://github.com/ClickHouse/ClickHouse/pull/60095) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix inconsistent formatting of explain in subqueries [#60102](https://github.com/ClickHouse/ClickHouse/pull/60102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix cosineDistance crash with Nullable [#60150](https://github.com/ClickHouse/ClickHouse/pull/60150) ([Raúl Marín](https://github.com/Algunenano)).
+* Allow casting of bools in string representation to to true bools [#60160](https://github.com/ClickHouse/ClickHouse/pull/60160) ([Robert Schulze](https://github.com/rschu1ze)).
+* Fix system.s3queue_log [#60166](https://github.com/ClickHouse/ClickHouse/pull/60166) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix arrayReduce with nullable aggregate function name [#60188](https://github.com/ClickHouse/ClickHouse/pull/60188) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix actions execution during preliminary filtering (PK, partition pruning) [#60196](https://github.com/ClickHouse/ClickHouse/pull/60196) ([Azat Khuzhin](https://github.com/azat)).
+* Hide sensitive info for s3queue [#60233](https://github.com/ClickHouse/ClickHouse/pull/60233) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Revert "Replace `ORDER BY ALL` by `ORDER BY *`" [#60248](https://github.com/ClickHouse/ClickHouse/pull/60248) ([Robert Schulze](https://github.com/rschu1ze)).
+* Azure Blob Storage : Fix issues endpoint and prefix [#60251](https://github.com/ClickHouse/ClickHouse/pull/60251) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
+* Fix http exception codes. [#60252](https://github.com/ClickHouse/ClickHouse/pull/60252) ([Austin Kothig](https://github.com/kothiga)).
+* fix LRUResource Cache bug (Hive cache) [#60262](https://github.com/ClickHouse/ClickHouse/pull/60262) ([shanfengp](https://github.com/Aed-p)).
+* s3queue: fix bug (also fixes flaky test_storage_s3_queue/test.py::test_shards_distributed) [#60282](https://github.com/ClickHouse/ClickHouse/pull/60282) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix use-of-uninitialized-value and invalid result in hashing functions with IPv6 [#60359](https://github.com/ClickHouse/ClickHouse/pull/60359) ([Kruglov Pavel](https://github.com/Avogar)).
+* Force reanalysis if parallel replicas changed [#60362](https://github.com/ClickHouse/ClickHouse/pull/60362) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix usage of plain metadata type with new disks configuration option [#60396](https://github.com/ClickHouse/ClickHouse/pull/60396) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Don't allow to set max_parallel_replicas to 0 as it doesn't make sense [#60430](https://github.com/ClickHouse/ClickHouse/pull/60430) ([Kruglov Pavel](https://github.com/Avogar)).
+* Try to fix logical error 'Cannot capture column because it has incompatible type' in mapContainsKeyLike [#60451](https://github.com/ClickHouse/ClickHouse/pull/60451) ([Kruglov Pavel](https://github.com/Avogar)).
+* Fix OptimizeDateOrDateTimeConverterWithPreimageVisitor with null arguments [#60453](https://github.com/ClickHouse/ClickHouse/pull/60453) ([Raúl Marín](https://github.com/Algunenano)).
+* Try to avoid calculation of scalar subqueries for CREATE TABLE. [#60464](https://github.com/ClickHouse/ClickHouse/pull/60464) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Merging [#59674](https://github.com/ClickHouse/ClickHouse/issues/59674). [#60470](https://github.com/ClickHouse/ClickHouse/pull/60470) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Correctly check keys in s3Cluster [#60477](https://github.com/ClickHouse/ClickHouse/pull/60477) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix deadlock in parallel parsing when lots of rows are skipped due to errors [#60516](https://github.com/ClickHouse/ClickHouse/pull/60516) ([Kruglov Pavel](https://github.com/Avogar)).
+* Fix_max_query_size_for_kql_compound_operator: [#60534](https://github.com/ClickHouse/ClickHouse/pull/60534) ([Yong Wang](https://github.com/kashwy)).
+* Keeper fix: add timeouts when waiting for commit logs [#60544](https://github.com/ClickHouse/ClickHouse/pull/60544) ([Antonio Andelic](https://github.com/antonio2368)).
+* Reduce the number of read rows from `system.numbers` [#60546](https://github.com/ClickHouse/ClickHouse/pull/60546) ([JackyWoo](https://github.com/JackyWoo)).
+* Don't output number tips for date types [#60577](https://github.com/ClickHouse/ClickHouse/pull/60577) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix reading from MergeTree with non-deterministic functions in filter [#60586](https://github.com/ClickHouse/ClickHouse/pull/60586) ([Kruglov Pavel](https://github.com/Avogar)).
+* Fix logical error on bad compatibility setting value type [#60596](https://github.com/ClickHouse/ClickHouse/pull/60596) ([Kruglov Pavel](https://github.com/Avogar)).
+* Fix inconsistent aggregate function states in mixed x86-64 / ARM clusters [#60610](https://github.com/ClickHouse/ClickHouse/pull/60610) ([Harry Lee](https://github.com/HarryLeeIBM)).
+* fix(prql): Robust panic handler [#60615](https://github.com/ClickHouse/ClickHouse/pull/60615) ([Maximilian Roos](https://github.com/max-sixty)).
+* Fix `intDiv` for decimal and date arguments [#60672](https://github.com/ClickHouse/ClickHouse/pull/60672) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix: expand CTE in alter modify query [#60682](https://github.com/ClickHouse/ClickHouse/pull/60682) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Fix system.parts for non-Atomic/Ordinary database engine (i.e. Memory) [#60689](https://github.com/ClickHouse/ClickHouse/pull/60689) ([Azat Khuzhin](https://github.com/azat)).
+* Fix "Invalid storage definition in metadata file" for parameterized views [#60708](https://github.com/ClickHouse/ClickHouse/pull/60708) ([Azat Khuzhin](https://github.com/azat)).
+* Fix buffer overflow in CompressionCodecMultiple [#60731](https://github.com/ClickHouse/ClickHouse/pull/60731) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Remove nonsense from SQL/JSON [#60738](https://github.com/ClickHouse/ClickHouse/pull/60738) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Remove wrong sanitize checking in aggregate function quantileGK [#60740](https://github.com/ClickHouse/ClickHouse/pull/60740) ([李扬](https://github.com/taiyang-li)).
+* Fix insert-select + insert_deduplication_token bug by setting streams to 1 [#60745](https://github.com/ClickHouse/ClickHouse/pull/60745) ([Jordi Villar](https://github.com/jrdi)).
+* Prevent setting custom metadata headers on unsupported multipart upload operations [#60748](https://github.com/ClickHouse/ClickHouse/pull/60748) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
+* Fix toStartOfInterval [#60763](https://github.com/ClickHouse/ClickHouse/pull/60763) ([Andrey Zvonov](https://github.com/zvonand)).
+* Fix crash in arrayEnumerateRanked [#60764](https://github.com/ClickHouse/ClickHouse/pull/60764) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix crash when using input() in INSERT SELECT JOIN [#60765](https://github.com/ClickHouse/ClickHouse/pull/60765) ([Kruglov Pavel](https://github.com/Avogar)).
+* Fix crash with different allow_experimental_analyzer value in subqueries [#60770](https://github.com/ClickHouse/ClickHouse/pull/60770) ([Dmitry Novik](https://github.com/novikd)).
+* Remove recursion when reading from S3 [#60849](https://github.com/ClickHouse/ClickHouse/pull/60849) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix possible stuck on error in HashedDictionaryParallelLoader [#60926](https://github.com/ClickHouse/ClickHouse/pull/60926) ([vdimir](https://github.com/vdimir)).
+* Fix async RESTORE with Replicated database [#60934](https://github.com/ClickHouse/ClickHouse/pull/60934) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix deadlock in async inserts to `Log` tables via native protocol [#61055](https://github.com/ClickHouse/ClickHouse/pull/61055) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix lazy execution of default argument in dictGetOrDefault for RangeHashedDictionary [#61196](https://github.com/ClickHouse/ClickHouse/pull/61196) ([Kruglov Pavel](https://github.com/Avogar)).
+* Fix multiple bugs in groupArraySorted [#61203](https://github.com/ClickHouse/ClickHouse/pull/61203) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix Keeper reconfig for standalone binary [#61233](https://github.com/ClickHouse/ClickHouse/pull/61233) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix usage of session_token in S3 engine [#61234](https://github.com/ClickHouse/ClickHouse/pull/61234) ([Kruglov Pavel](https://github.com/Avogar)).
+* Fix possible incorrect result of aggregate function `uniqExact` [#61257](https://github.com/ClickHouse/ClickHouse/pull/61257) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix bugs in show database [#61269](https://github.com/ClickHouse/ClickHouse/pull/61269) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix logical error in RabbitMQ storage with MATERIALIZED columns [#61320](https://github.com/ClickHouse/ClickHouse/pull/61320) ([vdimir](https://github.com/vdimir)).
+* Fix CREATE OR REPLACE DICTIONARY [#61356](https://github.com/ClickHouse/ClickHouse/pull/61356) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Fix ATTACH query with external ON CLUSTER [#61365](https://github.com/ClickHouse/ClickHouse/pull/61365) ([Nikolay Degterinsky](https://github.com/evillique)).
+* fix issue of actions dag split [#61458](https://github.com/ClickHouse/ClickHouse/pull/61458) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix finishing a failed RESTORE [#61466](https://github.com/ClickHouse/ClickHouse/pull/61466) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Disable async_insert_use_adaptive_busy_timeout correctly with compatibility settings [#61468](https://github.com/ClickHouse/ClickHouse/pull/61468) ([Raúl Marín](https://github.com/Algunenano)).
+* Allow queuing in restore pool [#61475](https://github.com/ClickHouse/ClickHouse/pull/61475) ([Nikita Taranov](https://github.com/nickitat)).
+* Fix bug when reading system.parts using UUID (issue 61220). [#61479](https://github.com/ClickHouse/ClickHouse/pull/61479) ([Dan Wu](https://github.com/wudanzy)).
+* Fix crash in window view [#61526](https://github.com/ClickHouse/ClickHouse/pull/61526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix `repeat` with non native integers [#61527](https://github.com/ClickHouse/ClickHouse/pull/61527) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix client `-s` argument [#61530](https://github.com/ClickHouse/ClickHouse/pull/61530) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* Fix crash in arrayPartialReverseSort [#61539](https://github.com/ClickHouse/ClickHouse/pull/61539) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix string search with const position [#61547](https://github.com/ClickHouse/ClickHouse/pull/61547) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix addDays cause an error when used datetime64 [#61561](https://github.com/ClickHouse/ClickHouse/pull/61561) ([Shuai li](https://github.com/loneylee)).
+* Fix `system.part_log` for async insert with deduplication [#61620](https://github.com/ClickHouse/ClickHouse/pull/61620) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix Non-ready set for system.parts. [#61666](https://github.com/ClickHouse/ClickHouse/pull/61666) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_05.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_05.md
new file mode 100644
index 00000000000..314efabb25b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_05.md
@@ -0,0 +1,183 @@
+---
+slug: /changelogs/24.5
+title: 'v24.5 Changelog for Cloud'
+description: 'Fast release changelog for v24.5'
+keywords: ['changelog', 'cloud']
+sidebar_label: '24.5'
+sidebar_position: 8
+doc_type: 'changelog'
+---
+
+# V24.5 changelog for Cloud
+
+Relevant changes for ClickHouse Cloud services based on the v24.5 release.
+
+## Breaking changes {#breaking-changes}
+
+* Change the column name from duration_ms to duration_microseconds in the system.zookeeper table to reflect the reality that the duration is in the microsecond resolution. [#60774](https://github.com/ClickHouse/ClickHouse/pull/60774) (Duc Canh Le).
+
+* Don't allow to set max_parallel_replicas to 0 as it doesn't make sense. Setting it to 0 could lead to unexpected logical errors. Closes #60140. [#61201](https://github.com/ClickHouse/ClickHouse/pull/61201) (Kruglov Pavel).
+
+* Remove support for INSERT WATCH query (part of the experimental LIVE VIEW feature). [#62382](https://github.com/ClickHouse/ClickHouse/pull/62382) (Alexey Milovidov).
+
+* Usage of functions neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue, runningDifference deprecated (because it is error-prone). Proper window functions should be used instead. To enable them back, set allow_deprecated_error_prone_window_functions=1. [#63132](https://github.com/ClickHouse/ClickHouse/pull/63132) (Nikita Taranov).
+
+## Backward incompatible changes {#backward-incompatible-changes}
+
+* In the new ClickHouse version, the functions geoDistance, greatCircleDistance, and greatCircleAngle will use 64-bit double precision floating point data type for internal calculations and return type if all the arguments are Float64. This closes #58476. In previous versions, the function always used Float32. You can switch to the old behavior by setting geo_distance_returns_float64_on_float64_arguments to false or setting compatibility to 24.2 or earlier. [#61848](https://github.com/ClickHouse/ClickHouse/pull/61848) (Alexey Milovidov).
+
+* Queries from system.columns will work faster if there is a large number of columns, but many databases or tables are not granted for SHOW TABLES. Note that in previous versions, if you grant SHOW COLUMNS to individual columns without granting SHOW TABLES to the corresponding tables, the system.columns table will show these columns, but in a new version, it will skip the table entirely. Remove trace log messages "Access granted" and "Access denied" that slowed down queries. [#63439](https://github.com/ClickHouse/ClickHouse/pull/63439) (Alexey Milovidov).
+
+* Fix crash in largestTriangleThreeBuckets. This changes the behaviour of this function and makes it to ignore NaNs in the series provided. Thus the resultset might differ from previous versions. [#62646](https://github.com/ClickHouse/ClickHouse/pull/62646) (Raúl Marín).
+
+## New features {#new-features}
+
+* The new analyzer is enabled by default on new services.
+
+* Supports dropping multiple tables at the same time like drop table a,b,c;. [#58705](https://github.com/ClickHouse/ClickHouse/pull/58705) (zhongyuankai).
+
+* User can now parse CRLF with TSV format using a setting input_format_tsv_crlf_end_of_line. Closes #56257. [#59747](https://github.com/ClickHouse/ClickHouse/pull/59747) (Shaun Struwig).
+
+* Table engine is grantable now, and it won't affect existing users behavior. [#60117](https://github.com/ClickHouse/ClickHouse/pull/60117) (jsc0218).
+
+* Adds the Form Format to read/write a single record in the application/x-www-form-urlencoded format. [#60199](https://github.com/ClickHouse/ClickHouse/pull/60199) (Shaun Struwig).
+
+* Added possibility to compress in CROSS JOIN. [#60459](https://github.com/ClickHouse/ClickHouse/pull/60459) (p1rattttt).
+
+* New setting input_format_force_null_for_omitted_fields that forces NULL values for omitted fields. [#60887](https://github.com/ClickHouse/ClickHouse/pull/60887) (Constantine Peresypkin).
+
+* Support join with inequal conditions which involve columns from both left and right table. e.g. `t1.y < t2.y`. To enable, SET allow_experimental_join_condition = 1. [#60920](https://github.com/ClickHouse/ClickHouse/pull/60920) (lgbo).
+
+* Add a new function, getClientHTTPHeader. This closes #54665. Co-authored with @lingtaolf. [#61820](https://github.com/ClickHouse/ClickHouse/pull/61820) (Alexey Milovidov).
+
+* For convenience purpose, SELECT * FROM numbers() will work in the same way as SELECT * FROM system.numbers - without a limit. [#61969](https://github.com/ClickHouse/ClickHouse/pull/61969) (YenchangChan).
+
+* Modifying memory table settings through ALTER MODIFY SETTING is now supported. ALTER TABLE memory MODIFY SETTING min_rows_to_keep = 100, max_rows_to_keep = 1000;. [#62039](https://github.com/ClickHouse/ClickHouse/pull/62039) (zhongyuankai).
+
+* Analyzer support recursive CTEs. [#62074](https://github.com/ClickHouse/ClickHouse/pull/62074) (Maksim Kita).
+
+* Earlier our s3 storage and s3 table function didn't support selecting from archive files. I created a solution that allows to iterate over files inside archives in S3. [#62259](https://github.com/ClickHouse/ClickHouse/pull/62259) (Daniil Ivanik).
+
+* Support for conditional function clamp. [#62377](https://github.com/ClickHouse/ClickHouse/pull/62377) (skyoct).
+
+* Add npy output format. [#62430](https://github.com/ClickHouse/ClickHouse/pull/62430) (豪肥肥).
+
+* Analyzer support QUALIFY clause. Closes #47819. [#62619](https://github.com/ClickHouse/ClickHouse/pull/62619) (Maksim Kita).
+
+* Added role query parameter to the HTTP interface. It works similarly to SET ROLE x, applying the role before the statement is executed. This allows for overcoming the limitation of the HTTP interface, as multiple statements are not allowed, and it is not possible to send both SET ROLE x and the statement itself at the same time. It is possible to set multiple roles that way, e.g., ?role=x&role=y, which will be an equivalent of SET ROLE x, y. [#62669](https://github.com/ClickHouse/ClickHouse/pull/62669) (Serge Klochkov).
+
+* Add SYSTEM UNLOAD PRIMARY KEY. [#62738](https://github.com/ClickHouse/ClickHouse/pull/62738) (Pablo Marcos).
+
+* Added SQL functions generateUUIDv7, generateUUIDv7ThreadMonotonic, generateUUIDv7NonMonotonic (with different monotonicity/performance trade-offs) to generate version 7 UUIDs aka. timestamp-based UUIDs with random component. Also added a new function UUIDToNum to extract bytes from a UUID and a new function UUIDv7ToDateTime to extract timestamp component from a UUID version 7. [#62852](https://github.com/ClickHouse/ClickHouse/pull/62852) (Alexey Petrunyaka).
+
+* Raw as a synonym for TSVRaw. [#63394](https://github.com/ClickHouse/ClickHouse/pull/63394) (Unalian).
+
+* Added possibility to do cross join in temporary file if size exceeds limits. [#63432](https://github.com/ClickHouse/ClickHouse/pull/63432) (p1rattttt).
+
+## Performance Improvements {#performance-improvements}
+
+* Skip merging of newly created projection blocks during INSERT-s. [#59405](https://github.com/ClickHouse/ClickHouse/pull/59405) (Nikita Taranov).
+
+* Reduce overhead of the mutations for SELECTs (v2). [#60856](https://github.com/ClickHouse/ClickHouse/pull/60856) (Azat Khuzhin).
+
+* JOIN filter push down improvements using equivalent sets. [#61216](https://github.com/ClickHouse/ClickHouse/pull/61216) (Maksim Kita).
+
+* Add a new analyzer pass to optimize in single value. [#61564](https://github.com/ClickHouse/ClickHouse/pull/61564) (LiuNeng).
+
+* Process string functions XXXUTF8 'asciily' if input strings are all ASCII chars. Inspired by apache/doris#29799. Overall speed up by 1.07x~1.62x. Notice that peak memory usage had been decreased in some cases. [#61632](https://github.com/ClickHouse/ClickHouse/pull/61632) (李扬).
+
+* Enabled fast Parquet encoder by default (output_format_parquet_use_custom_encoder). [#62088](https://github.com/ClickHouse/ClickHouse/pull/62088) (Michael Kolupaev).
+
+* Improve JSONEachRowRowInputFormat by skipping all remaining fields when all required fields are read. [#62210](https://github.com/ClickHouse/ClickHouse/pull/62210) (lgbo).
+
+* Functions splitByChar and splitByRegexp were speed up significantly. [#62392](https://github.com/ClickHouse/ClickHouse/pull/62392) (李扬).
+
+* Improve trivial insert select from files in file/s3/hdfs/url/... table functions. Add separate max_parsing_threads setting to control the number of threads used in parallel parsing. [#62404](https://github.com/ClickHouse/ClickHouse/pull/62404) (Kruglov Pavel).
+
+* Support parallel write buffer for AzureBlobStorage managed by setting azure_allow_parallel_part_upload. [#62534](https://github.com/ClickHouse/ClickHouse/pull/62534) (SmitaRKulkarni).
+
+* Functions to_utc_timestamp and from_utc_timestamp are now about 2x faster. [#62583](https://github.com/ClickHouse/ClickHouse/pull/62583) (KevinyhZou).
+
+* Functions parseDateTimeOrNull, parseDateTimeOrZero, parseDateTimeInJodaSyntaxOrNull and parseDateTimeInJodaSyntaxOrZero now run significantly faster (10x - 1000x) when the input contains mostly non-parseable values. [#62634](https://github.com/ClickHouse/ClickHouse/pull/62634) (LiuNeng).
+
+* Change HostResolver behavior on fail to keep only one record per IP [#62652](https://github.com/ClickHouse/ClickHouse/pull/62652) (Anton Ivashkin).
+
+* Add a new configurationprefer_merge_sort_block_bytes to control the memory usage and speed up sorting 2 times when merging when there are many columns. [#62904](https://github.com/ClickHouse/ClickHouse/pull/62904) (LiuNeng).
+
+* QueryPlan convert OUTER JOIN to INNER JOIN optimization if filter after JOIN always filters default values. Optimization can be controlled with setting query_plan_convert_outer_join_to_inner_join, enabled by default. [#62907](https://github.com/ClickHouse/ClickHouse/pull/62907) (Maksim Kita).
+
+* Enable optimize_rewrite_sum_if_to_count_if by default. [#62929](https://github.com/ClickHouse/ClickHouse/pull/62929) (Raúl Marín).
+
+* Micro-optimizations for the new analyzer. [#63429](https://github.com/ClickHouse/ClickHouse/pull/63429) (Raúl Marín).
+
+* Index analysis will work if DateTime is compared to DateTime64. This closes #63441. [#63443](https://github.com/ClickHouse/ClickHouse/pull/63443) (Alexey Milovidov).
+
+* Speed up indices of type set a little (around 1.5 times) by removing garbage. [#64098](https://github.com/ClickHouse/ClickHouse/pull/64098) (Alexey Milovidov).
+
+# Improvements
+
+* Remove optimize_monotonous_functions_in_order_by setting this is becoming a no-op. [#63004](https://github.com/ClickHouse/ClickHouse/pull/63004) (Raúl Marín).
+
+* Maps can now have Float32, Float64, Array(T), Map(K,V) and Tuple(T1, T2, ...) as keys. Closes #54537. [#59318](https://github.com/ClickHouse/ClickHouse/pull/59318) (李扬).
+
+* Add asynchronous WriteBuffer for AzureBlobStorage similar to S3. [#59929](https://github.com/ClickHouse/ClickHouse/pull/59929) (SmitaRKulkarni).
+
+* Multiline strings with border preservation and column width change. [#59940](https://github.com/ClickHouse/ClickHouse/pull/59940) (Volodyachan).
+
+* Make RabbitMQ nack broken messages. Closes #45350. [#60312](https://github.com/ClickHouse/ClickHouse/pull/60312) (Kseniia Sumarokova).
+
+* Add a setting first_day_of_week which affects the first day of the week considered by functions toStartOfInterval(..., INTERVAL ... WEEK). This allows for consistency with function toStartOfWeek which defaults to Sunday as the first day of the week. [#60598](https://github.com/ClickHouse/ClickHouse/pull/60598) (Jordi Villar).
+
+* Added persistent virtual column _block_offset which stores original number of row in block that was assigned at insert. Persistence of column _block_offset can be enabled by setting enable_block_offset_column. Added virtual column_part_data_version which contains either min block number or mutation version of part. Persistent virtual column _block_number is not considered experimental anymore. [#60676](https://github.com/ClickHouse/ClickHouse/pull/60676) (Anton Popov).
+
+* Functions date_diff and age now calculate their result at nanosecond instead of microsecond precision. They now also offer nanosecond (or nanoseconds or ns) as a possible value for the unit parameter. [#61409](https://github.com/ClickHouse/ClickHouse/pull/61409) (Austin Kothig).
+
+* Now marks are not loaded for wide parts during merges. [#61551](https://github.com/ClickHouse/ClickHouse/pull/61551) (Anton Popov).
+
+* Enable output_format_pretty_row_numbers by default. It is better for usability. [#61791](https://github.com/ClickHouse/ClickHouse/pull/61791) (Alexey Milovidov).
+
+* The progress bar will work for trivial queries with LIMIT from system.zeros, system.zeros_mt (it already works for system.numbers and system.numbers_mt), and the generateRandom table function. As a bonus, if the total number of records is greater than the max_rows_to_read limit, it will throw an exception earlier. This closes #58183. [#61823](https://github.com/ClickHouse/ClickHouse/pull/61823) (Alexey Milovidov).
+
+* Add TRUNCATE ALL TABLES. [#61862](https://github.com/ClickHouse/ClickHouse/pull/61862) (豪肥肥).
+
+* Add a setting input_format_json_throw_on_bad_escape_sequence, disabling it allows saving bad escape sequences in JSON input formats. [#61889](https://github.com/ClickHouse/ClickHouse/pull/61889) (Kruglov Pavel).
+
+* Fixed grammar from "a" to "the" in the warning message. There is only one Atomic engine, so it should be "to the new Atomic engine" instead of "to a new Atomic engine". [#61952](https://github.com/ClickHouse/ClickHouse/pull/61952) (shabroo).
+
+* Fix logical-error when undoing quorum insert transaction. [#61953](https://github.com/ClickHouse/ClickHouse/pull/61953) (Han Fei).
+
+* Automatically infer Nullable column types from Apache Arrow schema. [#61984](https://github.com/ClickHouse/ClickHouse/pull/61984) (Maksim Kita).
+
+* Allow to cancel parallel merge of aggregate states during aggregation. Example: uniqExact. [#61992](https://github.com/ClickHouse/ClickHouse/pull/61992) (Maksim Kita).
+
+* Dictionary source with INVALIDATE_QUERY is not reloaded twice on startup. [#62050](https://github.com/ClickHouse/ClickHouse/pull/62050) (vdimir).
+
+* OPTIMIZE FINAL for ReplicatedMergeTree now will wait for currently active merges to finish and then reattempt to schedule a final merge. This will put it more in line with ordinary MergeTree behaviour. [#62067](https://github.com/ClickHouse/ClickHouse/pull/62067) (Nikita Taranov).
+
+* While read data from a hive text file, it would use the first line of hive text file to resize of number of input fields, and sometimes the fields number of first line is not matched with the hive table defined , such as the hive table is defined to have 3 columns, like test_tbl(a Int32, b Int32, c Int32), but the first line of text file only has 2 fields, and in this situation, the input fields will be resized to 2, and if the next line of the text file has 3 fields, then the third field can not be read but set a default value 0, which is not right. [#62086](https://github.com/ClickHouse/ClickHouse/pull/62086) (KevinyhZou).
+
+* The syntax highlighting while typing in the client will work on the syntax level (previously, it worked on the lexer level). [#62123](https://github.com/ClickHouse/ClickHouse/pull/62123) (Alexey Milovidov).
+
+* Fix an issue where when a redundant = 1 or = 0 is added after a boolean expression involving the primary key, the primary index is not used. For example, both `SELECT * FROM
WHERE IN () = 1` and `SELECT * FROM
WHERE NOT IN () = 0` will both perform a full table scan, when the primary index can be used. [#62142](https://github.com/ClickHouse/ClickHouse/pull/62142) (josh-hildred).
+
+* Added setting lightweight_deletes_sync (default value: 2 - wait all replicas synchronously). It is similar to setting mutations_sync but affects only behaviour of lightweight deletes. [#62195](https://github.com/ClickHouse/ClickHouse/pull/62195) (Anton Popov).
+
+* Distinguish booleans and integers while parsing values for custom settings: SET custom_a = true; SET custom_b = 1;. [#62206](https://github.com/ClickHouse/ClickHouse/pull/62206) (Vitaly Baranov).
+
+* Support S3 access through AWS Private Link Interface endpoints. Closes #60021, #31074 and #53761. [#62208](https://github.com/ClickHouse/ClickHouse/pull/62208) (Arthur Passos).
+
+* Client has to send header 'Keep-Alive: timeout=X' to the server. If a client receives a response from the server with that header, client has to use the value from the server. Also for a client it is better not to use a connection which is nearly expired in order to avoid connection close race. [#62249](https://github.com/ClickHouse/ClickHouse/pull/62249) (Sema Checherinda).
+
+* Added nano- micro- milliseconds unit for date_trunc. [#62335](https://github.com/ClickHouse/ClickHouse/pull/62335) (Misz606).
+
+* The query cache now no longer caches results of queries against system tables (system.*, information_schema.*, INFORMATION_SCHEMA.*). [#62376](https://github.com/ClickHouse/ClickHouse/pull/62376) (Robert Schulze).
+
+* MOVE PARTITION TO TABLE query can be delayed or can throw TOO_MANY_PARTS exception to avoid exceeding limits on the part count. The same settings and limits are applied as for theINSERT query (see max_parts_in_total, parts_to_delay_insert, parts_to_throw_insert, inactive_parts_to_throw_insert, inactive_parts_to_delay_insert, max_avg_part_size_for_too_many_parts, min_delay_to_insert_ms and max_delay_to_insert settings). [#62420](https://github.com/ClickHouse/ClickHouse/pull/62420) (Sergei Trifonov).
+
+* Make transform always return the first match. [#62518](https://github.com/ClickHouse/ClickHouse/pull/62518) (Raúl Marín).
+
+* Avoid evaluating table DEFAULT expressions while executing RESTORE. [#62601](https://github.com/ClickHouse/ClickHouse/pull/62601) (Vitaly Baranov).
+
+* Allow quota key with different auth scheme in HTTP requests. [#62842](https://github.com/ClickHouse/ClickHouse/pull/62842) (Kseniia Sumarokova).
+
+* Close session if user's valid_until is reached. [#63046](https://github.com/ClickHouse/ClickHouse/pull/63046) (Konstantin Bogdanov).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_06.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_06.md
new file mode 100644
index 00000000000..8dc1c28ec0c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_06.md
@@ -0,0 +1,142 @@
+---
+slug: /changelogs/24.6
+title: 'v24.6 Changelog for Cloud'
+description: 'Fast release changelog for v24.6'
+keywords: ['changelog', 'cloud']
+sidebar_label: '24.6'
+sidebar_position: 7
+doc_type: 'changelog'
+---
+
+# V24.6 changelog for Cloud
+
+Relevant changes for ClickHouse Cloud services based on the v24.6 release.
+
+## Backward incompatible change {#backward-incompatible-change}
+* Rework parallel processing in `Ordered` mode of storage `S3Queue`. This PR is backward incompatible for Ordered mode if you used settings `s3queue_processing_threads_num` or `s3queue_total_shards_num`. Setting `s3queue_total_shards_num` is deleted, previously it was allowed to use only under `s3queue_allow_experimental_sharded_mode`, which is now deprecated. A new setting is added - `s3queue_buckets`. [#64349](https://github.com/ClickHouse/ClickHouse/pull/64349) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* New functions `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID`, and `dateTime64ToSnowflakeID` were added. Unlike the existing functions `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake`, and `dateTime64ToSnowflake`, the new functions are compatible with function `generateSnowflakeID`, i.e. they accept the snowflake IDs generated by `generateSnowflakeID` and produce snowflake IDs of the same type as `generateSnowflakeID` (i.e. `UInt64`). Furthermore, the new functions default to the UNIX epoch (aka. 1970-01-01), just like `generateSnowflakeID`. If necessary, a different epoch, e.g. Twitter's/X's epoch 2010-11-04 aka. 1288834974657 msec since UNIX epoch, can be passed. The old conversion functions are deprecated and will be removed after a transition period: to use them regardless, enable setting `allow_deprecated_snowflake_conversion_functions`. [#64948](https://github.com/ClickHouse/ClickHouse/pull/64948) ([Robert Schulze](https://github.com/rschu1ze)).
+
+## New feature {#new-feature}
+
+* Support empty tuples. [#55061](https://github.com/ClickHouse/ClickHouse/pull/55061) ([Amos Bird](https://github.com/amosbird)).
+* Add Hilbert Curve encode and decode functions. [#60156](https://github.com/ClickHouse/ClickHouse/pull/60156) ([Artem Mustafin](https://github.com/Artemmm91)).
+* Add support for index analysis over `hilbertEncode`. [#64662](https://github.com/ClickHouse/ClickHouse/pull/64662) ([Artem Mustafin](https://github.com/Artemmm91)).
+* Added support for reading `LINESTRING` geometry in the WKT format using function `readWKTLineString`. [#62519](https://github.com/ClickHouse/ClickHouse/pull/62519) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Added new SQL functions `generateSnowflakeID` for generating Twitter-style Snowflake IDs. [#63577](https://github.com/ClickHouse/ClickHouse/pull/63577) ([Danila Puzov](https://github.com/kazalika)).
+* Add support for comparing `IPv4` and `IPv6` types using the `=` operator. [#64292](https://github.com/ClickHouse/ClickHouse/pull/64292) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
+* Support decimal arguments in binary math functions (pow, atan2, max2, min2, hypot). [#64582](https://github.com/ClickHouse/ClickHouse/pull/64582) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
+* Added SQL functions `parseReadableSize` (along with `OrNull` and `OrZero` variants). [#64742](https://github.com/ClickHouse/ClickHouse/pull/64742) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
+* Add `_time` virtual column to file alike storages (s3/file/hdfs/url/azureBlobStorage). [#64947](https://github.com/ClickHouse/ClickHouse/pull/64947) ([Ilya Golshtein](https://github.com/ilejn)).
+* Introduced new functions `base64URLEncode`, `base64URLDecode` and `tryBase64URLDecode`. [#64991](https://github.com/ClickHouse/ClickHouse/pull/64991) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
+* Add new function `editDistanceUTF8`, which calculates the [edit distance](https://en.wikipedia.org/wiki/Edit_distance) between two UTF8 strings. [#65269](https://github.com/ClickHouse/ClickHouse/pull/65269) ([LiuNeng](https://github.com/liuneng1994)).
+* Add `http_response_headers` configuration to support custom response headers in custom HTTP handlers. [#63562](https://github.com/ClickHouse/ClickHouse/pull/63562) ([Grigorii](https://github.com/GSokol)).
+* Added a new table function `loop` to support returning query results in an infinite loop. [#63452](https://github.com/ClickHouse/ClickHouse/pull/63452) ([Sariel](https://github.com/sarielwxm)). This is useful for testing.
+* Introduced two additional columns in the `system.query_log`: `used_privileges` and `missing_privileges`. `used_privileges` is populated with the privileges that were checked during query execution, and `missing_privileges` contains required privileges that are missing. [#64597](https://github.com/ClickHouse/ClickHouse/pull/64597) ([Alexey Katsman](https://github.com/alexkats)).
+* Added a setting `output_format_pretty_display_footer_column_names` which when enabled displays column names at the end of the table for long tables (50 rows by default), with the threshold value for minimum number of rows controlled by `output_format_pretty_display_footer_column_names_min_rows`. [#65144](https://github.com/ClickHouse/ClickHouse/pull/65144) ([Shaun Struwig](https://github.com/Blargian)).
+
+## Performance Improvement {#performance-improvement}
+
+* Fix performance regression in cross join introduced in #60459 (24.5). #65243 (Nikita Taranov).
+* Improve io_uring resubmits visibility. Rename profile event IOUringSQEsResubmits -> IOUringSQEsResubmitsAsync and add a new one IOUringSQEsResubmitsSync. #63699 (Tomer Shafir).
+* Introduce assertions to verify all functions are called with columns of the right size. #63723 (Raúl Marín).
+* Add the ability to reshuffle rows during insert to optimize for size without violating the order set by `PRIMARY KEY`. It's controlled by the setting `optimize_row_order` (off by default). [#63578](https://github.com/ClickHouse/ClickHouse/pull/63578) ([Igor Markelov](https://github.com/ElderlyPassionFruit)).
+* Add a native parquet reader, which can read parquet binary to ClickHouse Columns directly. It's controlled by the setting `input_format_parquet_use_native_reader` (disabled by default). [#60361](https://github.com/ClickHouse/ClickHouse/pull/60361) ([ZhiHong Zhang](https://github.com/copperybean)).
+* Support partial trivial count optimization when the query filter is able to select exact ranges from merge tree tables. [#60463](https://github.com/ClickHouse/ClickHouse/pull/60463) ([Amos Bird](https://github.com/amosbird)).
+* Reduce max memory usage of multi-threaded `INSERT`s by collecting chunks of multiple threads in a single transform. [#61047](https://github.com/ClickHouse/ClickHouse/pull/61047) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Reduce the memory usage when using Azure object storage by using fixed memory allocation, avoiding the allocation of an extra buffer. [#63160](https://github.com/ClickHouse/ClickHouse/pull/63160) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
+* Reduce the number of virtual function calls in `ColumnNullable::size`. [#60556](https://github.com/ClickHouse/ClickHouse/pull/60556) ([HappenLee](https://github.com/HappenLee)).
+* Speedup `splitByRegexp` when the regular expression argument is a single-character. [#62696](https://github.com/ClickHouse/ClickHouse/pull/62696) ([Robert Schulze](https://github.com/rschu1ze)).
+* Speed up aggregation by 8-bit and 16-bit keys by keeping track of the min and max keys used. This allows to reduce the number of cells that need to be verified. [#62746](https://github.com/ClickHouse/ClickHouse/pull/62746) ([Jiebin Sun](https://github.com/jiebinn)).
+* Optimize operator IN when the left hand side is `LowCardinality` and the right is a set of constants. [#64060](https://github.com/ClickHouse/ClickHouse/pull/64060) ([Zhiguo Zhou](https://github.com/ZhiguoZh)).
+* Use a thread pool to initialize and destroy hash tables inside `ConcurrentHashJoin`. [#64241](https://github.com/ClickHouse/ClickHouse/pull/64241) ([Nikita Taranov](https://github.com/nickitat)).
+* Optimized vertical merges in tables with sparse columns. [#64311](https://github.com/ClickHouse/ClickHouse/pull/64311) ([Anton Popov](https://github.com/CurtizJ)).
+* Enabled prefetches of data from remote filesystem during vertical merges. It improves latency of vertical merges in tables with data stored on remote filesystem. [#64314](https://github.com/ClickHouse/ClickHouse/pull/64314) ([Anton Popov](https://github.com/CurtizJ)).
+* Reduce redundant calls to `isDefault` of `ColumnSparse::filter` to improve performance. [#64426](https://github.com/ClickHouse/ClickHouse/pull/64426) ([Jiebin Sun](https://github.com/jiebinn)).
+* Speedup `find_super_nodes` and `find_big_family` keeper-client commands by making multiple asynchronous getChildren requests. [#64628](https://github.com/ClickHouse/ClickHouse/pull/64628) ([Alexander Gololobov](https://github.com/davenger)).
+* Improve function `least`/`greatest` for nullable numberic type arguments. [#64668](https://github.com/ClickHouse/ClickHouse/pull/64668) ([KevinyhZou](https://github.com/KevinyhZou)).
+* Allow merging two consequent filtering steps of a query plan. This improves filter-push-down optimization if the filter condition can be pushed down from the parent step. [#64760](https://github.com/ClickHouse/ClickHouse/pull/64760) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Remove bad optimization in the vertical final implementation and re-enable vertical final algorithm by default. [#64783](https://github.com/ClickHouse/ClickHouse/pull/64783) ([Duc Canh Le](https://github.com/canhld94)).
+* Remove ALIAS nodes from the filter expression. This slightly improves performance for queries with `PREWHERE` (with the new analyzer). [#64793](https://github.com/ClickHouse/ClickHouse/pull/64793) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Re-enable OpenSSL session caching. [#65111](https://github.com/ClickHouse/ClickHouse/pull/65111) ([Robert Schulze](https://github.com/rschu1ze)).
+* Added settings to disable materialization of skip indexes and statistics on inserts (`materialize_skip_indexes_on_insert` and `materialize_statistics_on_insert`). [#64391](https://github.com/ClickHouse/ClickHouse/pull/64391) ([Anton Popov](https://github.com/CurtizJ)).
+* Use the allocated memory size to calculate the row group size and reduce the peak memory of the parquet writer in the single-threaded mode. [#64424](https://github.com/ClickHouse/ClickHouse/pull/64424) ([LiuNeng](https://github.com/liuneng1994)).
+* Improve the iterator of sparse column to reduce call of `size`. [#64497](https://github.com/ClickHouse/ClickHouse/pull/64497) ([Jiebin Sun](https://github.com/jiebinn)).
+* Update condition to use server-side copy for backups to Azure blob storage. [#64518](https://github.com/ClickHouse/ClickHouse/pull/64518) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
+* Optimized memory usage of vertical merges for tables with high number of skip indexes. [#64580](https://github.com/ClickHouse/ClickHouse/pull/64580) ([Anton Popov](https://github.com/CurtizJ)).
+
+## Improvement {#improvement}
+
+* Returned back the behaviour of how ClickHouse works and interprets Tuples in CSV format. This change effectively reverts ClickHouse/ClickHouse#60994 and makes it available only under a few settings: output_format_csv_serialize_tuple_into_separate_columns, input_format_csv_deserialize_separate_columns_into_tuple and input_format_csv_try_infer_strings_from_quoted_tuples. #65170 (Nikita Mikhaylov).
+* `SHOW CREATE TABLE` executed on top of system tables will now show the super handy comment unique for each table which will explain why this table is needed. [#63788](https://github.com/ClickHouse/ClickHouse/pull/63788) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* The second argument (scale) of functions `round()`, `roundBankers()`, `floor()`, `ceil()` and `trunc()` can now be non-const. [#64798](https://github.com/ClickHouse/ClickHouse/pull/64798) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
+* Avoid possible deadlock during MergeTree index analysis when scheduling threads in a saturated service. [#59427](https://github.com/ClickHouse/ClickHouse/pull/59427) ([Sean Haynes](https://github.com/seandhaynes)).
+* Several minor corner case fixes to S3 proxy support & tunneling. [#63427](https://github.com/ClickHouse/ClickHouse/pull/63427) ([Arthur Passos](https://github.com/arthurpassos)).
+* Add metrics to track the number of directories created and removed by the `plain_rewritable` metadata storage, and the number of entries in the local-to-remote in-memory map. [#64175](https://github.com/ClickHouse/ClickHouse/pull/64175) ([Julia Kartseva](https://github.com/jkartseva)).
+* The query cache now considers identical queries with different settings as different. This increases robustness in cases where different settings (e.g. `limit` or `additional_table_filters`) would affect the query result. [#64205](https://github.com/ClickHouse/ClickHouse/pull/64205) ([Robert Schulze](https://github.com/rschu1ze)).
+* Support the non standard error code `QpsLimitExceeded` in object storage as a retryable error. [#64225](https://github.com/ClickHouse/ClickHouse/pull/64225) ([Sema Checherinda](https://github.com/CheSema)).
+* Added a new setting `input_format_parquet_prefer_block_bytes` to control the average output block bytes, and modified the default value of `input_format_parquet_max_block_size` to 65409. [#64427](https://github.com/ClickHouse/ClickHouse/pull/64427) ([LiuNeng](https://github.com/liuneng1994)).
+* Settings from the user's config don't affect merges and mutations for `MergeTree` on top of object storage. [#64456](https://github.com/ClickHouse/ClickHouse/pull/64456) ([alesapin](https://github.com/alesapin)).
+* Support the non standard error code `TotalQpsLimitExceeded` in object storage as a retryable error. [#64520](https://github.com/ClickHouse/ClickHouse/pull/64520) ([Sema Checherinda](https://github.com/CheSema)).
+* Updated Advanced Dashboard for both open-source and ClickHouse Cloud versions to include a chart for 'Maximum concurrent network connections'. [#64610](https://github.com/ClickHouse/ClickHouse/pull/64610) ([Thom O'Connor](https://github.com/thomoco)).
+* Improve progress report on `zeros_mt` and `generateRandom`. [#64804](https://github.com/ClickHouse/ClickHouse/pull/64804) ([Raúl Marín](https://github.com/Algunenano)).
+* Add an asynchronous metric `jemalloc.profile.active` to show whether sampling is currently active. This is an activation mechanism in addition to prof.active; both must be active for the calling thread to sample. [#64842](https://github.com/ClickHouse/ClickHouse/pull/64842) ([Unalian](https://github.com/Unalian)).
+* Remove mark of `allow_experimental_join_condition` as important. This mark may have prevented distributed queries in a mixed versions cluster from being executed successfully. [#65008](https://github.com/ClickHouse/ClickHouse/pull/65008) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Added server Asynchronous metrics `DiskGetObjectThrottler*` and `DiskGetObjectThrottler*` reflecting request per second rate limit defined with `s3_max_get_rps` and `s3_max_put_rps` disk settings and currently available number of requests that could be sent without hitting throttling limit on the disk. Metrics are defined for every disk that has a configured limit. [#65050](https://github.com/ClickHouse/ClickHouse/pull/65050) ([Sergei Trifonov](https://github.com/serxa)).
+* Add a validation when creating a user with `bcrypt_hash`. [#65242](https://github.com/ClickHouse/ClickHouse/pull/65242) ([Raúl Marín](https://github.com/Algunenano)).
+* Add profile events for number of rows read during/after `PREWHERE`. [#64198](https://github.com/ClickHouse/ClickHouse/pull/64198) ([Nikita Taranov](https://github.com/nickitat)).
+* Print query in `EXPLAIN PLAN` with parallel replicas. [#64298](https://github.com/ClickHouse/ClickHouse/pull/64298) ([vdimir](https://github.com/vdimir)).
+* Rename `allow_deprecated_functions` to `allow_deprecated_error_prone_window_functions`. [#64358](https://github.com/ClickHouse/ClickHouse/pull/64358) ([Raúl Marín](https://github.com/Algunenano)).
+* Respect `max_read_buffer_size` setting for file descriptors as well in the `file` table function. [#64532](https://github.com/ClickHouse/ClickHouse/pull/64532) ([Azat Khuzhin](https://github.com/azat)).
+* Disable transactions for unsupported storages even for materialized views. [#64918](https://github.com/ClickHouse/ClickHouse/pull/64918) ([alesapin](https://github.com/alesapin)).
+* Forbid `QUALIFY` clause in the old analyzer. The old analyzer ignored `QUALIFY`, so it could lead to unexpected data removal in mutations. [#65356](https://github.com/ClickHouse/ClickHouse/pull/65356) ([Dmitry Novik](https://github.com/novikd)).
+
+## Bug Fix (user-visible misbehavior in an official stable release) {#bug-fix-user-visible-misbehavior-in-an-official-stable-release}
+* Fixed 'set' skip index not working with IN and indexHint(). #62083 (Michael Kolupaev).
+* Fix queries with FINAL give wrong result when table does not use adaptive granularity. #62432 (Duc Canh Le).
+* Support executing function during assignment of parameterized view value. #63502 (SmitaRKulkarni).
+* Fixed parquet memory tracking. #63584 (Michael Kolupaev).
+* Fix rare case with missing data in the result of distributed query. #63691 (vdimir).
+* Fixed reading of columns of type Tuple(Map(LowCardinality(String), String), ...). #63956 (Anton Popov).
+* Fix resolve of unqualified COLUMNS matcher. Preserve the input columns order and forbid usage of unknown identifiers. #63962 (Dmitry Novik).
+* Fix an Cyclic aliases error for cyclic aliases of different type (expression and function). #63993 (Nikolai Kochetov).
+* This fix will use a proper redefined context with the correct definer for each individual view in the query pipeline. #64079 (pufit).
+* Fix analyzer: "Not found column" error is fixed when using INTERPOLATE. #64096 (Yakov Olkhovskiy).
+* Prevent LOGICAL_ERROR on CREATE TABLE as MaterializedView. #64174 (Raúl Marín).
+* The query cache now considers two identical queries against different databases as different. The previous behavior could be used to bypass missing privileges to read from a table. #64199 (Robert Schulze).
+* Fix possible abort on uncaught exception in ~WriteBufferFromFileDescriptor in StatusFile. #64206 (Kruglov Pavel).
+* Fix duplicate alias error for distributed queries with ARRAY JOIN. #64226 (Nikolai Kochetov).
+* Fix unexpected accurateCast from string to integer. #64255 (wudidapaopao).
+* Fixed CNF simplification, in case any OR group contains mutually exclusive atoms. #64256 (Eduard Karacharov).
+* Fix Query Tree size validation. #64377 (Dmitry Novik).
+* Fix Logical error: Bad cast for Buffer table with PREWHERE. #64388 (Nikolai Kochetov).
+* Fixed CREATE TABLE AS queries for tables with default expressions. #64455 (Anton Popov).
+* Fixed optimize_read_in_order behaviour for ORDER BY ... NULLS FIRST / LAST on tables with nullable keys. #64483 (Eduard Karacharov).
+* Fix the Expression nodes list expected 1 projection names and Unknown expression or identifier errors for queries with aliases to GLOBAL IN.. #64517 (Nikolai Kochetov).
+* Fix an error Cannot find column in distributed queries with constant CTE in the GROUP BY key. #64519 (Nikolai Kochetov).
+* Fix the output of function formatDateTimeInJodaSyntax when a formatter generates an uneven number of characters and the last character is 0. For example, SELECT formatDateTimeInJodaSyntax(toDate('2012-05-29'), 'D') now correctly returns 150 instead of previously 15. #64614 (LiuNeng).
+* Do not rewrite aggregation if -If combinator is already used. #64638 (Dmitry Novik).
+* Fix type inference for float (in case of small buffer, i.e. --max_read_buffer_size 1). #64641 (Azat Khuzhin).
+* Fix bug which could lead to non-working TTLs with expressions. #64694 (alesapin).
+* Fix removing the WHERE and PREWHERE expressions, which are always true (for the new analyzer). #64695 (Nikolai Kochetov).
+* Fixed excessive part elimination by token-based text indexes (ngrambf , full_text) when filtering by result of startsWith, endsWith, match, multiSearchAny. #64720 (Eduard Karacharov).
+* Fixes incorrect behaviour of ANSI CSI escaping in the UTF8::computeWidth function. #64756 (Shaun Struwig).
+* Fix a case of incorrect removal of ORDER BY / LIMIT BY across subqueries. #64766 (Raúl Marín).
+* Fix (experimental) unequal join with subqueries for sets which are in the mixed join conditions. #64775 (lgbo).
+* Fix crash in a local cache over plain_rewritable disk. #64778 (Julia Kartseva).
+* Fix Cannot find column in distributed query with ARRAY JOIN by Nested column. Fixes #64755. #64801 (Nikolai Kochetov).
+* Fix memory leak in slru cache policy. #64803 (Kseniia Sumarokova).
+* Fixed possible incorrect memory tracking in several kinds of queries: queries that read any data from S3, queries via http protocol, asynchronous inserts. #64844 (Anton Popov).
+* Fix the Block structure mismatch error for queries reading with PREWHERE from the materialized view when the materialized view has columns of different types than the source table. Fixes #64611. #64855 (Nikolai Kochetov).
+* Fix rare crash when table has TTL with subquery + database replicated + parallel replicas + analyzer. It's really rare, but please don't use TTLs with subqueries. #64858 (alesapin).
+* Fix ALTER MODIFY COMMENT query that was broken for parameterized VIEWs in ClickHouse/ClickHouse#54211. #65031 (Nikolay Degterinsky).
+* Fix host_id in DatabaseReplicated when cluster_secure_connection parameter is enabled. Previously all the connections within the cluster created by DatabaseReplicated were not secure, even if the parameter was enabled. #65054 (Nikolay Degterinsky).
+* Fixing the Not-ready Set error after the PREWHERE optimization for StorageMerge. #65057 (Nikolai Kochetov).
+* Avoid writing to finalized buffer in File-like storages. #65063 (Kruglov Pavel).
+* Fix possible infinite query duration in case of cyclic aliases. Fixes #64849. #65081 (Nikolai Kochetov).
+* Fix the Unknown expression identifier error for remote queries with INTERPOLATE (alias) (new analyzer). Fixes #64636. #65090 (Nikolai Kochetov).
+* Fix pushing arithmetic operations out of aggregation. In the new analyzer, optimization was applied only once. #65104 (Dmitry Novik).
+* Fix aggregate function name rewriting in the new analyzer. #65110 (Dmitry Novik).
+* Respond with 5xx instead of 200 OK in case of receive timeout while reading (parts of) the request body from the client socket. #65118 (Julian Maicher).
+* Fix possible crash for hedged requests. #65206 (Azat Khuzhin).
+* Fix the bug in Hashed and Hashed_Array dictionary short circuit evaluation, which may read uninitialized number, leading to various errors. #65256 (jsc0218).
+* This PR ensures that the type of the constant(IN operator's second parameter) is always visible during the IN operator's type conversion process. Otherwise, losing type information may cause some conversions to fail, such as the conversion from DateTime to Date. fix (#64487). #65315 (pn).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_08.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_08.md
new file mode 100644
index 00000000000..62ab2b1675d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_08.md
@@ -0,0 +1,67 @@
+---
+slug: /changelogs/24.8
+title: 'v24.8 Changelog for Cloud'
+description: 'Fast release changelog for v24.8'
+keywords: ['changelog', 'cloud']
+sidebar_label: '24.8'
+sidebar_position: 6
+doc_type: 'changelog'
+---
+
+Relevant changes for ClickHouse Cloud services based on the v24.8 release.
+
+## Backward incompatible change {#backward-incompatible-change}
+
+- Change binary serialization of Variant data type: add compact mode to avoid writing the same discriminator multiple times for granules with single variant or with only NULL values. Add MergeTree setting use_compact_variant_discriminators_serialization that is enabled by default. Note that Variant type is still experimental and backward-incompatible change in serialization should not impact you unless you have been working with support to get this feature enabled earlier. [#62774](https://github.com/ClickHouse/ClickHouse/pull/62774) (Kruglov Pavel).
+
+- Forbid CREATE MATERIALIZED VIEW ... ENGINE Replicated*MergeTree POPULATE AS SELECT ... with Replicated databases. This specific PR is only applicable to users still using, ReplicatedMergeTree. [#63963](https://github.com/ClickHouse/ClickHouse/pull/63963) (vdimir).
+
+- Metric KeeperOutstandingRequets was renamed to KeeperOutstandingRequests. This fixes a typo reported in [#66179](https://github.com/ClickHouse/ClickHouse/issues/66179). [#66206](https://github.com/ClickHouse/ClickHouse/pull/66206) (Robert Schulze).
+
+- clickhouse-client and clickhouse-local now default to multi-query mode (instead single-query mode). As an example, clickhouse-client -q "SELECT 1; SELECT 2" now works, whereas users previously had to add --multiquery (or -n). The --multiquery/-n switch became obsolete. INSERT queries in multi-query statements are treated specially based on their FORMAT clause: If the FORMAT is VALUES (the most common case), the end of the INSERT statement is represented by a trailing semicolon ; at the end of the query. For all other FORMATs (e.g. CSV or JSONEachRow), the end of the INSERT statement is represented by two newlines \n\n at the end of the query. [#63898](https://github.com/ClickHouse/ClickHouse/pull/63898) (wxybear).
+
+- In previous versions, it was possible to use an alternative syntax for LowCardinality data types by appending WithDictionary to the name of the data type. It was an initial working implementation, and it was never documented or exposed to the public. Now, it is deprecated. If you have used this syntax, you have to ALTER your tables and rename the data types to LowCardinality. [#66842](https://github.com/ClickHouse/ClickHouse/pull/66842)(Alexey Milovidov).
+
+- Fix logical errors with storage Buffer used with distributed destination table. It's a backward incompatible change: queries using Buffer with a distributed destination table may stop working if the table appears more than once in the query (e.g., in a self-join). [#67015](https://github.com/vdimir) (vdimir).
+
+- In previous versions, calling functions for random distributions based on the Gamma function (such as Chi-Squared, Student, Fisher) with negative arguments close to zero led to a long computation or an infinite loop. In the new version, calling these functions with zero or negative arguments will produce an exception. This closes [#67297](https://github.com/ClickHouse/ClickHouse/issues/67297). [#67326](https://github.com/ClickHouse/ClickHouse/pull/67326) (Alexey Milovidov).
+
+- In previous versions, arrayWithConstant can be slow if asked to generate very large arrays. In the new version, it is limited to 1 GB per array. This closes [#32754](https://github.com/ClickHouse/ClickHouse/issues/32754). [#67741](https://github.com/ClickHouse/ClickHouse/pull/67741) (Alexey Milovidov).
+
+- Fix REPLACE modifier formatting (forbid omitting brackets). [#67774](https://github.com/ClickHouse/ClickHouse/pull/67774) (Azat Khuzhin).
+
+## New feature {#new-feature}
+
+- Extend function tuple to construct named tuples in query. Introduce function tupleNames to extract names from tuples. [#54881](https://github.com/ClickHouse/ClickHouse/pull/54881) (Amos Bird).
+
+- ASOF JOIN support for full_sorting_join algorithm Close [#54493](https://github.com/ClickHouse/ClickHouse/issues/54493). [#55051](https://github.com/ClickHouse/ClickHouse/pull/55051) (vdimir).
+
+- A new table function, fuzzQuery, was added. This function allows you to modify a given query string with random variations. Example: SELECT query FROM fuzzQuery('SELECT 1');. [#62103](https://github.com/ClickHouse/ClickHouse/pull/62103) (pufit).
+
+- Add new window function percent_rank. [#62747](https://github.com/ClickHouse/ClickHouse/pull/62747) (lgbo).
+
+- Support JWT authentication in clickhouse-client. [#62829](https://github.com/ClickHouse/ClickHouse/pull/62829) (Konstantin Bogdanov).
+
+- Add SQL functions changeYear, changeMonth, changeDay, changeHour, changeMinute, changeSecond. For example, SELECT changeMonth(toDate('2024-06-14'), 7) returns date 2024-07-14. [#63186](https://github.com/ClickHouse/ClickHouse/pull/63186) (cucumber95).
+
+- Add system.error_log which contains history of error values from table system.errors, periodically flushed to disk. [#65381](https://github.com/ClickHouse/ClickHouse/pull/65381) (Pablo Marcos).
+
+- Add aggregate function groupConcat. About the same as arrayStringConcat( groupArray(column), ',') Can receive 2 parameters: a string delimiter and the number of elements to be processed. [#65451](https://github.com/ClickHouse/ClickHouse/pull/65451) (Yarik Briukhovetskyi).
+
+- Add AzureQueue storage. [#65458](https://github.com/ClickHouse/ClickHouse/pull/65458) (Kseniia Sumarokova).
+
+- Add a new setting to disable/enable writing page index into parquet files. [#65475](https://github.com/ClickHouse/ClickHouse/pull/65475) (lgbo).
+
+- Automatically append a wildcard * to the end of a directory path with table function file. [#66019](https://github.com/ClickHouse/ClickHouse/pull/66019) (Zhidong (David) Guo).
+
+- Add --memory-usage option to client in non interactive mode. [#66393](https://github.com/ClickHouse/ClickHouse/pull/66393) (vdimir).
+
+- Add _etag virtual column for S3 table engine. Fixes [#65312](https://github.com/ClickHouse/ClickHouse/issues/65312). [#65386](https://github.com/ClickHouse/ClickHouse/pull/65386) (skyoct)
+
+- This pull request introduces Hive-style partitioning for different engines (File, URL, S3, AzureBlobStorage, HDFS). Hive-style partitioning organizes data into partitioned sub-directories, making it efficient to query and manage large datasets. Currently, it only creates virtual columns with the appropriate name and data. The follow-up PR will introduce the appropriate data filtering (performance speedup). [#65997](https://github.com/ClickHouse/ClickHouse/pull/65997) (Yarik Briukhovetskyi).
+
+- Add function printf for spark compatibility. [#66257](https://github.com/ClickHouse/ClickHouse/pull/66257) (李扬).
+
+- Added support for reading MULTILINESTRING geometry in WKT format using function readWKTLineString. [#67647](https://github.com/ClickHouse/ClickHouse/pull/67647) (Jacob Reckhard).
+
+- Added a tagging (namespace) mechanism for the query cache. The same queries with different tags are considered different by the query cache. Example: SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'abc' and SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'def' now create different query cache entries. [#68235](https://github.com/ClickHouse/ClickHouse/pull/68235)(sakulali).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_10.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_10.md
new file mode 100644
index 00000000000..22d82ef9e24
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_10.md
@@ -0,0 +1,53 @@
+---
+slug: /changelogs/24.10
+title: 'v24.10 Changelog for Cloud'
+description: 'Fast release changelog for v24.10'
+keywords: ['changelog', 'cloud']
+sidebar_label: '24.10'
+sidebar_position: 5
+doc_type: 'changelog'
+---
+
+Relevant changes for ClickHouse Cloud services based on the v24.10 release.
+
+## Backward incompatible change {#backward-incompatible-change}
+- Allow to write `SETTINGS` before `FORMAT` in a chain of queries with `UNION` when subqueries are inside parentheses. This closes [#39712](https://github.com/ClickHouse/ClickHouse/issues/39712). Change the behavior when a query has the SETTINGS clause specified twice in a sequence. The closest SETTINGS clause will have a preference for the corresponding subquery. In the previous versions, the outermost SETTINGS clause could take a preference over the inner one. [#60197](https://github.com/ClickHouse/ClickHouse/pull/60197)[#68614](https://github.com/ClickHouse/ClickHouse/pull/68614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Reimplement Dynamic type. Now when the limit of dynamic data types is reached new types are not cast to String but stored in a special data structure in binary format with binary encoded data type. Now any type ever inserted into Dynamic column can be read from it as subcolumn. [#68132](https://github.com/ClickHouse/ClickHouse/pull/68132) ([Pavel Kruglov](https://github.com/Avogar)).
+- Expressions like `a[b].c` are supported for named tuples, as well as named subscripts from arbitrary expressions, e.g., `expr().name`. This is useful for processing JSON. This closes [#54965](https://github.com/ClickHouse/ClickHouse/issues/54965). In previous versions, an expression of form `expr().name` was parsed as `tupleElement(expr(), name)`, and the query analyzer was searching for a column `name` rather than for the corresponding tuple element; while in the new version, it is changed to `tupleElement(expr(), 'name')`. In most cases, the previous version was not working, but it is possible to imagine a very unusual scenario when this change could lead to incompatibility: if you stored names of tuple elements in a column or an alias, that was named differently than the tuple element's name: `SELECT 'b' AS a, CAST([tuple(123)] AS 'Array(Tuple(b UInt8))') AS t, t[1].a`. It is very unlikely that you used such queries, but we still have to mark this change as potentially backward incompatible. [#68435](https://github.com/ClickHouse/ClickHouse/pull/68435) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- When the setting `print_pretty_type_names` is enabled, it will print `Tuple` data type in a pretty form in `SHOW CREATE TABLE` statements, `formatQuery` function, and in the interactive mode in `clickhouse-client` and `clickhouse-local`. In previous versions, this setting was only applied to `DESCRIBE` queries and `toTypeName`. This closes [#65753](https://github.com/ClickHouse/ClickHouse/issues/65753). [#68492](https://github.com/ClickHouse/ClickHouse/pull/68492) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Reordering of filter conditions from `[PRE]WHERE` clause is now allowed by default. It could be disabled by setting `allow_reorder_prewhere_conditions` to `false`. [#70657](https://github.com/ClickHouse/ClickHouse/pull/70657) ([Nikita Taranov](https://github.com/nickitat)).
+- Fix `optimize_functions_to_subcolumns` optimization (previously could lead to `Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got LowCardinality(String)` error), by preserving `LowCardinality` type in `mapKeys`/`mapValues`. [#70716](https://github.com/ClickHouse/ClickHouse/pull/70716) ([Azat Khuzhin](https://github.com/azat)).
+
+## New feature {#new-feature}
+- Refreshable materialized views are production ready. [#70550](https://github.com/ClickHouse/ClickHouse/pull/70550) ([Michael Kolupaev](https://github.com/al13n321)). Refreshable materialized views are now supported in Replicated databases. [#60669](https://github.com/ClickHouse/ClickHouse/pull/60669) ([Michael Kolupaev](https://github.com/al13n321)).
+- Function `toStartOfInterval()` now has a new overload which emulates TimescaleDB's `time_bucket()` function, respectively PostgreSQL's `date_bin()` function. ([#55619](https://github.com/ClickHouse/ClickHouse/issues/55619)). It allows to align date or timestamp values to multiples of a given interval from an *arbitrary* origin (instead of 0000-01-01 00:00:00.000 as *fixed* origin). For example, `SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'));` returns `2023-01-01 14:44:30` which is a multiple of 1 minute intervals, starting from origin `2023-01-01 14:35:30`. [#56738](https://github.com/ClickHouse/ClickHouse/pull/56738) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+- MongoDB integration refactored: migration to new driver mongocxx from deprecated Poco::MongoDB, remove support for deprecated old protocol, support for connection by URI, support for all MongoDB types, support for WHERE and ORDER BY statements on MongoDB side, restriction for expression unsupported by MongoDB. [#63279](https://github.com/ClickHouse/ClickHouse/pull/63279) ([Kirill Nikiforov](https://github.com/allmazz)).
+- A new `--progress-table` option in clickhouse-client prints a table with metrics changing during query execution; a new `--enable-progress-table-toggle` is associated with the `--progress-table` option, and toggles the rendering of the progress table by pressing the control key (Space). [#63689](https://github.com/ClickHouse/ClickHouse/pull/63689) ([Maria Khristenko](https://github.com/mariaKhr)).
+- This allows to grant access to the wildcard prefixes. `GRANT SELECT ON db.table_pefix_* TO user`. [#65311](https://github.com/ClickHouse/ClickHouse/pull/65311) ([pufit](https://github.com/pufit)).
+- Introduced JSONCompactWithProgress format where ClickHouse outputs each row as a newline-delimited JSON object, including metadata, data, progress, totals, and statistics. [#66205](https://github.com/ClickHouse/ClickHouse/pull/66205) ([Alexey Korepanov](https://github.com/alexkorep)).
+- Add system.query_metric_log which contains history of memory and metric values from table system.events for individual queries, periodically flushed to disk. [#66532](https://github.com/ClickHouse/ClickHouse/pull/66532) ([Pablo Marcos](https://github.com/pamarcos)).
+- Add the `input_format_json_empty_as_default` setting which, when enabled, treats empty fields in JSON inputs as default values. Closes [#59339](https://github.com/ClickHouse/ClickHouse/issues/59339). [#66782](https://github.com/ClickHouse/ClickHouse/pull/66782) ([Alexis Arnaud](https://github.com/a-a-f)).
+- Added functions `overlay` and `overlayUTF8` which replace parts of a string by another string. Example: `SELECT overlay('Hello New York', 'Jersey', 11)` returns `Hello New Jersey`. [#66933](https://github.com/ClickHouse/ClickHouse/pull/66933) ([李扬](https://github.com/taiyang-li)).
+- Add new Command, Lightweight Delete In Partition ``` DELETE FROM [db.]table [ON CLUSTER cluster] [IN PARTITION partition_expr] WHERE expr; ``` ``` VM-114-29-tos :) select * from ads_app_poster_ip_source_channel_di_replicated_local;. [#67805](https://github.com/ClickHouse/ClickHouse/pull/67805) ([sunny](https://github.com/sunny19930321)).
+- Implemented comparison for `Interval` data type values so they are converting now to the least supertype. [#68057](https://github.com/ClickHouse/ClickHouse/pull/68057) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+- Add create_if_not_exists setting to default to IF NOT EXISTS behavior during CREATE statements. [#68164](https://github.com/ClickHouse/ClickHouse/pull/68164) ([Peter Nguyen](https://github.com/petern48)).
+- Makes possible to read Iceberg tables in Azure and locally. [#68210](https://github.com/ClickHouse/ClickHouse/pull/68210) ([Daniil Ivanik](https://github.com/divanik)).
+- Add aggregate functions distinctDynamicTypes/distinctJSONPaths/distinctJSONPathsAndTypes for better introspection of JSON column type content. [#68463](https://github.com/ClickHouse/ClickHouse/pull/68463) ([Pavel Kruglov](https://github.com/Avogar)).
+- Query cache entries can now be dropped by tag. For example, the query cache entry created by `SELECT 1 SETTINGS use_query_cache = true, query_cache_tag = 'abc'` can now be dropped by `SYSTEM DROP QUERY CACHE TAG 'abc'` (or of course just: `SYSTEM DROP QUERY CACHE` which will clear the entire query cache). [#68477](https://github.com/ClickHouse/ClickHouse/pull/68477) ([Michał Tabaszewski](https://github.com/pinsvin00)).
+- A simple SELECT query can be written with implicit SELECT to enable calculator-style expressions, e.g., `ch "1 + 2"`. This is controlled by a new setting, `implicit_select`. [#68502](https://github.com/ClickHouse/ClickHouse/pull/68502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Support --copy mode for clickhouse local as a shortcut for format conversion [#68503](https://github.com/ClickHouse/ClickHouse/issues/68503). [#68583](https://github.com/ClickHouse/ClickHouse/pull/68583) ([Denis Hananein](https://github.com/denis-hananein)).
+- Added `ripeMD160` function, which computes the RIPEMD-160 cryptographic hash of a string. Example: `SELECT hex(ripeMD160('The quick brown fox jumps over the lazy dog'))` returns `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#68639](https://github.com/ClickHouse/ClickHouse/pull/68639) ([Dergousov Maxim](https://github.com/m7kss1)).
+- Add virtual column _headers for url table engine. Closes [#65026](https://github.com/ClickHouse/ClickHouse/issues/65026). [#68867](https://github.com/ClickHouse/ClickHouse/pull/68867) ([flynn](https://github.com/ucasfl)).
+- Adding `system.projections` table to track available projections. [#68901](https://github.com/ClickHouse/ClickHouse/pull/68901) ([Jordi Villar](https://github.com/jrdi)).
+- Add support for `arrayUnion` function. [#68989](https://github.com/ClickHouse/ClickHouse/pull/68989) ([Peter Nguyen](https://github.com/petern48)).
+- Add new function `arrayZipUnaligned` for spark compatiablity(arrays_zip), which allowed unaligned arrays based on original `arrayZip`. ``` sql SELECT arrayZipUnaligned([1], [1, 2, 3]). [#69030](https://github.com/ClickHouse/ClickHouse/pull/69030) ([李扬](https://github.com/taiyang-li)).
+- Support aggregate function `quantileExactWeightedInterpolated`, which is a interpolated version based on quantileExactWeighted. Some people may wonder why we need a new `quantileExactWeightedInterpolated` since we already have `quantileExactInterpolatedWeighted`. The reason is the new one is more accurate than the old one. BTW, it is for spark compatibility in Apache Gluten. [#69619](https://github.com/ClickHouse/ClickHouse/pull/69619) ([李扬](https://github.com/taiyang-li)).
+- Support function arrayElementOrNull. It returns null if array index is out of range or map key not found. [#69646](https://github.com/ClickHouse/ClickHouse/pull/69646) ([李扬](https://github.com/taiyang-li)).
+- Support Dynamic type in most functions by executing them on internal types inside Dynamic. [#69691](https://github.com/ClickHouse/ClickHouse/pull/69691) ([Pavel Kruglov](https://github.com/Avogar)).
+- Adds argument `scale` (default: `true`) to function `arrayAUC` which allows to skip the normalization step (issue [#69609](https://github.com/ClickHouse/ClickHouse/issues/69609)). [#69717](https://github.com/ClickHouse/ClickHouse/pull/69717) ([gabrielmcg44](https://github.com/gabrielmcg44)).
+- Re-added `RIPEMD160` function, which computes the RIPEMD-160 cryptographic hash of a string. Example: `SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))` returns `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#70087](https://github.com/ClickHouse/ClickHouse/pull/70087) ([Dergousov Maxim](https://github.com/m7kss1)).
+- Allow to cache read files for object storage table engines and data lakes using hash from ETag + file path as cache key. [#70135](https://github.com/ClickHouse/ClickHouse/pull/70135) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Support reading Iceberg tables on HDFS. [#70268](https://github.com/ClickHouse/ClickHouse/pull/70268) ([flynn](https://github.com/ucasfl)).
+- Allow to read/write JSON type as binary string in RowBinary format under settings `input_format_binary_read_json_as_string/output_format_binary_write_json_as_string`. [#70288](https://github.com/ClickHouse/ClickHouse/pull/70288) ([Pavel Kruglov](https://github.com/Avogar)).
+- Allow to serialize/deserialize JSON column as single String column in Native format. For output use setting `output_format_native_write_json_as_string`. For input, use serialization version `1` before the column data. [#70312](https://github.com/ClickHouse/ClickHouse/pull/70312) ([Pavel Kruglov](https://github.com/Avogar)).
+- Supports standard CTE, `with insert`, as previously only supports `insert ... with ...`. [#70593](https://github.com/ClickHouse/ClickHouse/pull/70593) ([Shichao Jin](https://github.com/jsc0218)).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_12.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_12.md
new file mode 100644
index 00000000000..a19e04a5d39
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/24_12.md
@@ -0,0 +1,228 @@
+---
+slug: /changelogs/24.12
+title: 'v24.12 Changelog for Cloud'
+description: 'Fast release changelog for v24.12'
+keywords: ['changelog', 'cloud']
+sidebar_label: '24.12'
+sidebar_position: 4
+doc_type: 'changelog'
+---
+
+Relevant changes for ClickHouse Cloud services based on the v24.12 release.
+
+## Backward incompatible changes {#backward-incompatible-changes}
+
+- Functions `greatest` and `least` now ignore NULL input values, whereas they previously returned NULL if one of the arguments was NULL. For example, `SELECT greatest(1, 2, NULL)` now returns 2. This makes the behavior compatible with PostgreSQL. [#65519](https://github.com/ClickHouse/ClickHouse/pull/65519) ([kevinyhzou](https://github.com/KevinyhZou)).
+- Don't allow Variant/Dynamic types in ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY by default because it may lead to unexpected results. [#69731](https://github.com/ClickHouse/ClickHouse/pull/69731) ([Pavel Kruglov](https://github.com/Avogar)).
+- Remove system tables `generate_series` and `generateSeries`. They were added by mistake here: [#59390](https://github.com/ClickHouse/ClickHouse/issues/59390). [#71091](https://github.com/ClickHouse/ClickHouse/pull/71091) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Remove `StorageExternalDistributed`. Closes [#70600](https://github.com/ClickHouse/ClickHouse/issues/70600). [#71176](https://github.com/ClickHouse/ClickHouse/pull/71176) ([flynn](https://github.com/ucasfl)).
+- Settings from server config (users.xml) now apply on the client too. Useful for format settings, e.g. `date_time_output_format`. [#71178](https://github.com/ClickHouse/ClickHouse/pull/71178) ([Michael Kolupaev](https://github.com/al13n321)).
+- Fix possible error `No such file or directory` due to unescaped special symbols in files for JSON subcolumns. [#71182](https://github.com/ClickHouse/ClickHouse/pull/71182) ([Pavel Kruglov](https://github.com/Avogar)).
+- The table engines Kafka, NATS and RabbitMQ are now covered by their own grants in the `SOURCES` hierarchy. Add grants to any non-default database users that create tables with these engine types. [#71250](https://github.com/ClickHouse/ClickHouse/pull/71250) ([Christoph Wurm](https://github.com/cwurm)).
+- Check the full mutation query before executing it (including subqueries). This prevents accidentally running an invalid query and building up dead mutations that block valid mutations. [#71300](https://github.com/ClickHouse/ClickHouse/pull/71300) ([Christoph Wurm](https://github.com/cwurm)).
+- Rename filesystem cache setting `skip_download_if_exceeds_query_cache` to `filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit`. [#71578](https://github.com/ClickHouse/ClickHouse/pull/71578) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Forbid Dynamic/Variant types in min/max functions to avoid confusion. [#71761](https://github.com/ClickHouse/ClickHouse/pull/71761) ([Pavel Kruglov](https://github.com/Avogar)).
+- Remove support for `Enum` as well as `UInt128` and `UInt256` arguments in `deltaSumTimestamp`. Remove support for `Int8`, `UInt8`, `Int16`, and `UInt16` of the second ("timestamp") argument of `deltaSumTimestamp`. [#71790](https://github.com/ClickHouse/ClickHouse/pull/71790) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Added source query validation when ClickHouse is used as a source for a dictionary. [#72548](https://github.com/ClickHouse/ClickHouse/pull/72548) ([Alexey Katsman](https://github.com/alexkats)).
+
+## New features {#new-features}
+
+- Implement SYSTEM LOAD PRIMARY KEY command to load primary indexes for all parts of a specified table or for all tables if no table is specified. This will be useful for benchmarks and to prevent extra latency during query execution. [#66252](https://github.com/ClickHouse/ClickHouse/pull/66252) ([ZAWA_ll](https://github.com/Zawa-ll)).
+- Added statement `SYSTEM LOAD PRIMARY KEY` for loading the primary indexes of all parts in a specified table or for all tables if no table is specified. This can be useful for benchmarking and to prevent extra latency during query execution. [#67733](https://github.com/ClickHouse/ClickHouse/pull/67733) ([ZAWA_ll](https://github.com/Zawa-ll)).
+- Add `CHECK GRANT` query to check whether the current user/role has been granted the specific privilege and whether the corresponding table/column exists in the memory. [#68885](https://github.com/ClickHouse/ClickHouse/pull/68885) ([Unalian](https://github.com/Unalian)).
+- Added SQL syntax to describe workload and resource management. https://clickhouse.com/docs/en/operations/workload-scheduling. [#69187](https://github.com/ClickHouse/ClickHouse/pull/69187) ([Sergei Trifonov](https://github.com/serxa)).
+- [The Iceberg data storage](https://iceberg.apache.org/spec/#file-system-operations) format provides the user with extensive options for modifying the schema of their table. In this pull request, reading a table in Iceberg format has been implemented, where the order of columns, column names, and simple type extensions have been changed. [#69445](https://github.com/ClickHouse/ClickHouse/pull/69445) ([Daniil Ivanik](https://github.com/divanik)).
+- Allow each authentication method to have its own expiration date, remove from user entity. [#70090](https://github.com/ClickHouse/ClickHouse/pull/70090) ([Arthur Passos](https://github.com/arthurpassos)).
+- Push external user roles from query originator to other nodes in cluster. Helpful when only originator has access to the external authenticator (like LDAP). [#70332](https://github.com/ClickHouse/ClickHouse/pull/70332) ([Andrey Zvonov](https://github.com/zvonand)).
+- Support alter from String to JSON. This PR also changes the serialization of JSON and Dynamic types to new version V2. Old version V1 can be still used by enabling setting `merge_tree_use_v1_object_and_dynamic_serialization` (can be used during upgrade to be able to rollback the version without issues). [#70442](https://github.com/ClickHouse/ClickHouse/pull/70442) ([Pavel Kruglov](https://github.com/Avogar)).
+- Add function `toUnixTimestamp64Second` which converts a `DateTime64` to a `Int64` value with fixed second precision, so we can support return negative value if date is before 00:00:00 UTC on Thursday, 1 January 1970. [#70597](https://github.com/ClickHouse/ClickHouse/pull/70597) ([zhanglistar](https://github.com/zhanglistar)).
+- Add new setting `enforce_index_structure_match_on_partition_manipulation` to allow attach when source table's projections and secondary indices is a subset of those in the target table. Close [#70602](https://github.com/ClickHouse/ClickHouse/issues/70602). [#70603](https://github.com/ClickHouse/ClickHouse/pull/70603) ([zwy991114](https://github.com/zwy991114)).
+- The output of function `cast` differs with Apache Spark which cause difference in gluten project, see https://github.com/apache/incubator-gluten/issues/7602 This PR adds Spark text output format support feature, default closed. [#70957](https://github.com/ClickHouse/ClickHouse/pull/70957) ([zhanglistar](https://github.com/zhanglistar)).
+- Added a new header type for S3 endpoints for user authentication (`access_header`). This allows to get some access header with the lowest priority, which will be overwritten with `access_key_id` from any other source (for example, a table schema or a named collection). [#71011](https://github.com/ClickHouse/ClickHouse/pull/71011) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+- Initial implementation of settings tiers. [#71145](https://github.com/ClickHouse/ClickHouse/pull/71145) ([Raúl Marín](https://github.com/Algunenano)).
+- Add support for staleness clause in order by with fill operator. [#71151](https://github.com/ClickHouse/ClickHouse/pull/71151) ([Mikhail Artemenko](https://github.com/Michicosun)).
+- Implement simple CAST from Map/Tuple/Object to new JSON through serialization/deserialization from JSON string. [#71320](https://github.com/ClickHouse/ClickHouse/pull/71320) ([Pavel Kruglov](https://github.com/Avogar)).
+- Added aliases `anyRespectNulls`, `firstValueRespectNulls`, and `anyValueRespectNulls` for aggregation function `any`. Also added aliases `anyLastRespectNulls` and `lastValueRespectNulls` for aggregation function `anyLast`. This allows using more natural camel-case-only syntax rather than mixed camel-case/underscore syntax, for example: `SELECT anyLastRespectNullsStateIf` instead of `anyLast_respect_nullsStateIf`. [#71403](https://github.com/ClickHouse/ClickHouse/pull/71403) ([Peter Nguyen](https://github.com/petern48)).
+- Added the configuration `date_time_utc` parameter, enabling JSON log formatting to support UTC date-time in RFC 3339/ISO8601 format. [#71560](https://github.com/ClickHouse/ClickHouse/pull/71560) ([Ali](https://github.com/xogoodnow)).
+- Added an option to select the side of the join that will act as the inner (build) table in the query plan. This is controlled by `query_plan_join_swap_table`, which can be set to `auto`. In this mode, ClickHouse will try to choose the table with the smallest number of rows. [#71577](https://github.com/ClickHouse/ClickHouse/pull/71577) ([Vladimir Cherkasov](https://github.com/vdimir)).
+- Optimized memory usage for values of index granularity if granularity is constant for part. Added an ability to always select constant granularity for part (setting `use_const_adaptive_granularity`), which helps to ensure that it is always optimized in memory. It helps in large workloads (trillions of rows in shared storage) to avoid constantly growing memory usage by metadata (values of index granularity) of data parts. [#71786](https://github.com/ClickHouse/ClickHouse/pull/71786) ([Anton Popov](https://github.com/CurtizJ)).
+- Implement `allowed_feature_tier` as a global switch to disable all experimental / beta features. [#71841](https://github.com/ClickHouse/ClickHouse/pull/71841) ([Raúl Marín](https://github.com/Algunenano)).
+- Add `iceberg[S3;HDFS;Azure]Cluster`, `deltaLakeCluster`, `hudiCluster` table functions. [#72045](https://github.com/ClickHouse/ClickHouse/pull/72045) ([Mikhail Artemenko](https://github.com/Michicosun)).
+- Add syntax `ALTER USER {ADD|MODIFY|DROP SETTING}`, `ALTER USER {ADD|DROP PROFILE}`, the same for `ALTER ROLE` and `ALTER PROFILE`. [#72050](https://github.com/ClickHouse/ClickHouse/pull/72050) ([pufit](https://github.com/pufit)).
+- Added `arrayPrAUC` function, which calculates the AUC (Area Under the Curve) for the Precision Recall curve. [#72073](https://github.com/ClickHouse/ClickHouse/pull/72073) ([Emmanuel](https://github.com/emmanuelsdias)).
+- Added cache for primary index of `MergeTree` tables (can be enabled by table setting `use_primary_key_cache`). If lazy load and cache are enabled for primary index, it will be loaded to cache on demand (similar to mark cache) instead of keeping it in memory forever. Added prewarm of primary index on inserts/mergs/fetches of data parts and on restarts of table (can be enabled by setting `prewarm_primary_key_cache`). [#72102](https://github.com/ClickHouse/ClickHouse/pull/72102) ([Anton Popov](https://github.com/CurtizJ)).
+- Add indexOfAssumeSorted function for array types. Optimizes the search in the case of a sorted in non-decreasing order array. [#72517](https://github.com/ClickHouse/ClickHouse/pull/72517) ([Eric Kurbanov](https://github.com/erickurbanov)).
+- Allows to use a delimiter as a optional second argument for aggregate function `groupConcat`. [#72540](https://github.com/ClickHouse/ClickHouse/pull/72540) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+- A new setting, `http_response_headers` which allows you to customize the HTTP response headers. For example, you can tell the browser to render a picture that is stored in the database. This closes [#59620](https://github.com/ClickHouse/ClickHouse/issues/59620). [#72656](https://github.com/ClickHouse/ClickHouse/pull/72656) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Add function `fromUnixTimestamp64Second` which converts a Int64 Unix timestamp value to a DateTime64. [#73146](https://github.com/ClickHouse/ClickHouse/pull/73146) ([Robert Schulze](https://github.com/rschu1ze)).
+
+## Performance Improvements {#performance-improvements}
+
+- Add 2 new settings `short_circuit_function_evaluation_for_nulls` and `short_circuit_function_evaluation_for_nulls_threshold` that allow to execute functions over `Nullable` columns in short-circuit manner when the ratio of NULL values in the block of data exceeds the specified threshold. It means that the function will be executed only on rows with non-null values. It applies only to functions that return NULL value for rows where at least one argument is NULL. [#60129](https://github.com/ClickHouse/ClickHouse/pull/60129) ([李扬](https://github.com/taiyang-li)).
+- Memory usage of `clickhouse disks remove --recursive` is reduced for object storage disks. [#67323](https://github.com/ClickHouse/ClickHouse/pull/67323) ([Kirill](https://github.com/kirillgarbar)).
+- Now we won't copy input blocks columns for `join_algorithm='parallel_hash'` when distribute them between threads for parallel processing. [#67782](https://github.com/ClickHouse/ClickHouse/pull/67782) ([Nikita Taranov](https://github.com/nickitat)).
+- Enable JIT compilation for more expressions: `abs`/`bitCount`/`sign`/`modulo`/`pmod`/`isNull`/`isNotNull`/`assumeNotNull`/`to(U)Int*`/`toFloat*`, comparison functions(`=`, `<`, `>`, `>=`, `<=`), logical functions(`and`, `or`). [#70598](https://github.com/ClickHouse/ClickHouse/pull/70598) ([李扬](https://github.com/taiyang-li)).
+- Now `parallel_hash` algorithm will be used (if applicable) when `join_algorithm` setting is set to `default`. Two previous alternatives (`direct` and `hash`) are still considered when `parallel_hash` cannot be used. [#70788](https://github.com/ClickHouse/ClickHouse/pull/70788) ([Nikita Taranov](https://github.com/nickitat)).
+- Optimized `Replacing` merge algorithm for non intersecting parts. [#70977](https://github.com/ClickHouse/ClickHouse/pull/70977) ([Anton Popov](https://github.com/CurtizJ)).
+- Do not list detached parts from readonly and write-once disks for metrics and system.detached_parts. [#71086](https://github.com/ClickHouse/ClickHouse/pull/71086) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Do not calculate heavy asynchronous metrics by default. The feature was introduced in [#40332](https://github.com/ClickHouse/ClickHouse/issues/40332), but it isn't good to have a heavy background job that is needed for only a single customer. [#71087](https://github.com/ClickHouse/ClickHouse/pull/71087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Improve the performance and accuracy of system.query_metric_log collection interval by reducing the critical region. [#71473](https://github.com/ClickHouse/ClickHouse/pull/71473) ([Pablo Marcos](https://github.com/pamarcos)).
+- Add option to extract common expressions from `WHERE` and `ON` expressions in order to reduce the number of hash tables used during joins. Can be enabled by `optimize_extract_common_expressions = 1`. [#71537](https://github.com/ClickHouse/ClickHouse/pull/71537) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+- Allows to use indexes on `SELECT` with `LowCardinality(String)`. [#71598](https://github.com/ClickHouse/ClickHouse/pull/71598) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+- During query execution with parallel replicas and enabled local plan, skip index analysis on workers. The coordinator will choose ranges to read for workers based on index analysis on its side (on query initiator). [#72109](https://github.com/ClickHouse/ClickHouse/pull/72109) ([Igor Nikonov](https://github.com/devcrafter)).
+- Bring back optimization for reading subcolumns of single column in Compact parts from https://github.com/ClickHouse/ClickHouse/pull/57631. It was deleted accidentally. [#72285](https://github.com/ClickHouse/ClickHouse/pull/72285) ([Pavel Kruglov](https://github.com/Avogar)).
+- Speedup sorting of `LowCardinality(String)` columns by de-virtualizing calls in comparator. [#72337](https://github.com/ClickHouse/ClickHouse/pull/72337) ([Alexander Gololobov](https://github.com/davenger)).
+- Optimize function argMin/Max for some simple data types. [#72350](https://github.com/ClickHouse/ClickHouse/pull/72350) ([alesapin](https://github.com/alesapin)).
+- Optimize locking with shared locks in the memory tracker to reduce lock contention. [#72375](https://github.com/ClickHouse/ClickHouse/pull/72375) ([Jiebin Sun](https://github.com/jiebinn)).
+- Add a new setting, `use_async_executor_for_materialized_views`. Use async and potentially multithreaded execution of materialized view query, can speedup views processing during INSERT, but also consume more memory. [#72497](https://github.com/ClickHouse/ClickHouse/pull/72497) ([alesapin](https://github.com/alesapin)).
+- Default values for settings `max_size_to_preallocate_for_aggregation`, `max_size_to_preallocate_for_joins` were further increased to `10^12`, so the optimisation will be applied in more cases. [#72555](https://github.com/ClickHouse/ClickHouse/pull/72555) ([Nikita Taranov](https://github.com/nickitat)).
+- Improved performance of deserialization of states of aggregate functions (in data type `AggregateFunction` and in distributed queries). Slightly improved performance of parsing of format `RowBinary`. [#72818](https://github.com/ClickHouse/ClickHouse/pull/72818) ([Anton Popov](https://github.com/CurtizJ)).
+
+## Improvement {#improvement}
+
+- Higher-order functions with constant arrays and constant captured arguments will return constants. [#58400](https://github.com/ClickHouse/ClickHouse/pull/58400) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Read-in-order optimization via generating virtual rows, so less data would be read during merge sort especially useful when multiple parts exist. [#62125](https://github.com/ClickHouse/ClickHouse/pull/62125) ([Shichao Jin](https://github.com/jsc0218)).
+- Query plan step names (`EXPLAIN PLAN json=1`) and pipeline processor names (`EXPLAIN PIPELINE compact=0,graph=1`) now have a unique id as a suffix. This allows to match processors profiler output and OpenTelemetry traces with explain output. [#63518](https://github.com/ClickHouse/ClickHouse/pull/63518) ([qhsong](https://github.com/qhsong)).
+- Added option to check object exists after writing to Azure Blob Storage, this is controlled by setting `check_objects_after_upload`. [#64847](https://github.com/ClickHouse/ClickHouse/pull/64847) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+- Fix use-after-dtor logic in HashTable destroyElements. [#65279](https://github.com/ClickHouse/ClickHouse/pull/65279) ([cangyin](https://github.com/cangyin)).
+- Use `Atomic` database by default in `clickhouse-local`. Address items 1 and 5 from [#50647](https://github.com/ClickHouse/ClickHouse/issues/50647). Closes [#44817](https://github.com/ClickHouse/ClickHouse/issues/44817). [#68024](https://github.com/ClickHouse/ClickHouse/pull/68024) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Write buffer has to be canceled or finalized explicitly. Exceptions break the HTTP protocol in order to alert the client about error. [#68800](https://github.com/ClickHouse/ClickHouse/pull/68800) ([Sema Checherinda](https://github.com/CheSema)).
+- Report running DDLWorker hosts by creating replica_dir and mark replicas active in DDLWorker. [#69658](https://github.com/ClickHouse/ClickHouse/pull/69658) ([Tuan Pham Anh](https://github.com/tuanpach)).
+- 1. Refactor `DDLQueryStatusSource`: - Rename `DDLQueryStatusSource` to `DistributedQueryStatusSource`, and make it a base class - Create two subclasses `DDLOnClusterQueryStatusSource` and `ReplicatedDatabaseQueryStatusSource` derived from `DDLQueryStatusSource` to query the status of DDL tasks from `DDL On Cluster and Replicated databases respectively. 2. Support stop waiting for offline hosts in `DDLOnClusterQueryStatusSource`. [#69660](https://github.com/ClickHouse/ClickHouse/pull/69660) ([Tuan Pham Anh](https://github.com/tuanpach)).
+- Adding a new cancellation logic: `CancellationChecker` checks timeouts for every started query and stops them once the timeout has reached. [#69880](https://github.com/ClickHouse/ClickHouse/pull/69880) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+- Remove the `allow_experimental_join_condition` setting, allowing non-equi conditions by default. [#69910](https://github.com/ClickHouse/ClickHouse/pull/69910) ([Vladimir Cherkasov](https://github.com/vdimir)).
+- Enable `parallel_replicas_local_plan` by default. Building a full-fledged local plan on the query initiator improves parallel replicas performance with less resource consumption, provides opportunities to apply more query optimizations. [#70171](https://github.com/ClickHouse/ClickHouse/pull/70171) ([Igor Nikonov](https://github.com/devcrafter)).
+- Add ability to set user/password in http_handlers (for `dynamic_query_handler`/`predefined_query_handler`). [#70725](https://github.com/ClickHouse/ClickHouse/pull/70725) ([Azat Khuzhin](https://github.com/azat)).
+- Support `ALTER TABLE ... MODIFY/RESET SETTING ...` for certain settings in storage S3Queue. [#70811](https://github.com/ClickHouse/ClickHouse/pull/70811) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Do not call the object storage API when listing directories, as this may be cost-inefficient. Instead, store the list of filenames in the memory. The trade-offs are increased initial load time and memory required to store filenames. [#70823](https://github.com/ClickHouse/ClickHouse/pull/70823) ([Julia Kartseva](https://github.com/jkartseva)).
+- Add `--threads` parameter to `clickhouse-compressor`, which allows to compress data in parallel. [#70860](https://github.com/ClickHouse/ClickHouse/pull/70860) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Make the Replxx client history size configurable. [#71014](https://github.com/ClickHouse/ClickHouse/pull/71014) ([Jiří Kozlovský](https://github.com/jirislav)).
+- Added a setting `prewarm_mark_cache` which enables loading of marks to mark cache on inserts, merges, fetches of parts and on startup of the table. [#71053](https://github.com/ClickHouse/ClickHouse/pull/71053) ([Anton Popov](https://github.com/CurtizJ)).
+- Boolean support for parquet native reader. [#71055](https://github.com/ClickHouse/ClickHouse/pull/71055) ([Arthur Passos](https://github.com/arthurpassos)).
+- Retry more errors when interacting with S3, such as "Malformed message". [#71088](https://github.com/ClickHouse/ClickHouse/pull/71088) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Lower log level for some messages about S3. [#71090](https://github.com/ClickHouse/ClickHouse/pull/71090) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Support write hdfs files with space. [#71105](https://github.com/ClickHouse/ClickHouse/pull/71105) ([exmy](https://github.com/exmy)).
+- `system.session_log` is quite okay. This closes [#51760](https://github.com/ClickHouse/ClickHouse/issues/51760). [#71150](https://github.com/ClickHouse/ClickHouse/pull/71150) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Fixes RIGHT / FULL joins in queries with parallel replicas. Now, RIGHT joins can be executed with parallel replicas (right table reading is distributed). FULL joins can't be parallelized among nodes, - executed locally. [#71162](https://github.com/ClickHouse/ClickHouse/pull/71162) ([Igor Nikonov](https://github.com/devcrafter)).
+- Added settings limiting the number of replicated tables, dictionaries and views. [#71179](https://github.com/ClickHouse/ClickHouse/pull/71179) ([Kirill](https://github.com/kirillgarbar)).
+- Fixes [#71227](https://github.com/ClickHouse/ClickHouse/issues/71227). [#71286](https://github.com/ClickHouse/ClickHouse/pull/71286) ([Arthur Passos](https://github.com/arthurpassos)).
+- Automatic `GROUP BY`/`ORDER BY` to disk based on the server/user memory usage. Controlled with `max_bytes_ratio_before_external_group_by`/`max_bytes_ratio_before_external_sort` query settings. [#71406](https://github.com/ClickHouse/ClickHouse/pull/71406) ([Azat Khuzhin](https://github.com/azat)).
+- Add per host dashboards `Overview (host)` and `Cloud overview (host)` to advanced dashboard. [#71422](https://github.com/ClickHouse/ClickHouse/pull/71422) ([alesapin](https://github.com/alesapin)).
+- Function `translate` now supports character deletion if the `from` argument contains more characters than the `to` argument. Example: `SELECT translate('clickhouse', 'clickhouse', 'CLICK')` now returns `CLICK`. [#71441](https://github.com/ClickHouse/ClickHouse/pull/71441) ([shuai.xu](https://github.com/shuai-xu)).
+- Added new functions `parseDateTime64`, `parseDateTime64OrNull` and `parseDateTime64OrZero`. Compared to the existing function `parseDateTime` (and variants), they return a value of type `DateTime64` instead of `DateTime`. [#71581](https://github.com/ClickHouse/ClickHouse/pull/71581) ([kevinyhzou](https://github.com/KevinyhZou)).
+- Shrink to fit index_granularity array in memory to reduce memory footprint for MergeTree table engines family. [#71595](https://github.com/ClickHouse/ClickHouse/pull/71595) ([alesapin](https://github.com/alesapin)).
+- The command line applications will highlight syntax even for multi-statements. [#71622](https://github.com/ClickHouse/ClickHouse/pull/71622) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Command-line applications will return non-zero exit codes on errors. In previous versions, the `disks` application returned zero on errors, and other applications returned zero for errors 256 (`PARTITION_ALREADY_EXISTS`) and 512 (`SET_NON_GRANTED_ROLE`). [#71623](https://github.com/ClickHouse/ClickHouse/pull/71623) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- The `Vertical` format (which is also activated when you end your query with `\G`) gets the features of Pretty formats, such as: - highlighting thousand groups in numbers; - printing a readable number tip. [#71630](https://github.com/ClickHouse/ClickHouse/pull/71630) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Allow to disable memory buffer increase for filesystem cache via setting `filesystem_cache_prefer_bigger_buffer_size`. [#71640](https://github.com/ClickHouse/ClickHouse/pull/71640) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Add a separate setting `background_download_max_file_segment_size` for background download max file segment size in filesystem cache. [#71648](https://github.com/ClickHouse/ClickHouse/pull/71648) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Changes the default value of `enable_http_compression` from 0 to 1. Closes [#71591](https://github.com/ClickHouse/ClickHouse/issues/71591). [#71774](https://github.com/ClickHouse/ClickHouse/pull/71774) ([Peter Nguyen](https://github.com/petern48)).
+- Support ALTER from Object to JSON. [#71784](https://github.com/ClickHouse/ClickHouse/pull/71784) ([Pavel Kruglov](https://github.com/Avogar)).
+- Slightly better JSON type parsing: if current block for the JSON path contains values of several types, try to choose the best type by trying types in special best-effort order. [#71785](https://github.com/ClickHouse/ClickHouse/pull/71785) ([Pavel Kruglov](https://github.com/Avogar)).
+- Previously reading from `system.asynchronous_metrics` would wait for concurrent update to finish. This can take long time if system is under heavy load. With this change the previously collected values can always be read. [#71798](https://github.com/ClickHouse/ClickHouse/pull/71798) ([Alexander Gololobov](https://github.com/davenger)).
+- Set `polling_max_timeout_ms` to 10 minutes, `polling_backoff_ms` to 30 seconds. [#71817](https://github.com/ClickHouse/ClickHouse/pull/71817) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Queries like 'SELECT - FROM t LIMIT 1' used to load part indexes even though they were not used. [#71866](https://github.com/ClickHouse/ClickHouse/pull/71866) ([Alexander Gololobov](https://github.com/davenger)).
+- Allow_reorder_prewhere_conditions is on by default with old compatibility settings. [#71867](https://github.com/ClickHouse/ClickHouse/pull/71867) ([Raúl Marín](https://github.com/Algunenano)).
+- Do not increment the `ILLEGAL_TYPE_OF_ARGUMENT` counter in the `system.errors` table when the `bitmapTransform` function is used, and argument types are valid. [#71971](https://github.com/ClickHouse/ClickHouse/pull/71971) ([Dmitry Novik](https://github.com/novikd)).
+- When retrieving data directly from a dictionary using Dictionary storage, dictionary table function, or direct SELECT from the dictionary itself, it is now enough to have `SELECT` permission or `dictGet` permission for the dictionary. This aligns with previous attempts to prevent ACL bypasses: https://github.com/ClickHouse/ClickHouse/pull/57362 and https://github.com/ClickHouse/ClickHouse/pull/65359. It also makes the latter one backward compatible. [#72051](https://github.com/ClickHouse/ClickHouse/pull/72051) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+- On the advanced dashboard HTML page added a dropdown selector for the dashboard from `system.dashboards` table. [#72081](https://github.com/ClickHouse/ClickHouse/pull/72081) ([Sergei Trifonov](https://github.com/serxa)).
+- Respect `prefer_locahost_replica` when building plan for distributed `INSERT ... SELECT`. [#72190](https://github.com/ClickHouse/ClickHouse/pull/72190) ([filimonov](https://github.com/filimonov)).
+- The problem is [described here](https://github.com/ClickHouse/ClickHouse/issues/72091). Azure Iceberg Writer creates Iceberg metadata files (as well as manifest files) that violate specs. In this PR I added an attempt to read v1 iceberg format metadata with v2 reader (cause they write it in a this way), and added error when they didn't create corresponding fields in a manifest file. [#72277](https://github.com/ClickHouse/ClickHouse/pull/72277) ([Daniil Ivanik](https://github.com/divanik)).
+- Move JSON/Dynamic/Variant types from experimental features to beta. [#72294](https://github.com/ClickHouse/ClickHouse/pull/72294) ([Pavel Kruglov](https://github.com/Avogar)).
+- Now it's allowed to `CREATE MATERIALIZED VIEW` with `UNION [ALL]` in query. Behavior is the same as for matview with `JOIN`: **only first table in `SELECT` expression will work as trigger for insert*- , all other tables will be ignored. [#72347](https://github.com/ClickHouse/ClickHouse/pull/72347) ([alesapin](https://github.com/alesapin)).
+- Speed up insertions into merge tree in case of a single value of partition key inside inserted batch. [#72348](https://github.com/ClickHouse/ClickHouse/pull/72348) ([alesapin](https://github.com/alesapin)).
+- Add the new MergeTreeIndexGranularityInternalArraysTotalSize metric to system.metrics. This metric is needed to find the instances with huge datasets susceptible to the high memory usage issue. [#72490](https://github.com/ClickHouse/ClickHouse/pull/72490) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+- All spellings of word `Null` now recognised when query uses `Format Null`. Previously other forms (e.g. `NULL`) did not result in exceptions being thrown, but at the same time format `Null` wasn't actually used in those cases. [#72658](https://github.com/ClickHouse/ClickHouse/pull/72658) ([Nikita Taranov](https://github.com/nickitat)).
+- Allow unknown values in set that are not present in Enum. Fix [#72662](https://github.com/ClickHouse/ClickHouse/issues/72662). [#72686](https://github.com/ClickHouse/ClickHouse/pull/72686) ([zhanglistar](https://github.com/zhanglistar)).
+- Add total_bytes_with_inactive to system.tables to count the total bytes of inactive parts. [#72690](https://github.com/ClickHouse/ClickHouse/pull/72690) ([Kai Zhu](https://github.com/nauu)).
+- Add MergeTreeSettings to system.settings_changes. [#72694](https://github.com/ClickHouse/ClickHouse/pull/72694) ([Raúl Marín](https://github.com/Algunenano)).
+- Support string search operator(eg. like) for Enum data type, fix [#72661](https://github.com/ClickHouse/ClickHouse/issues/72661). [#72732](https://github.com/ClickHouse/ClickHouse/pull/72732) ([zhanglistar](https://github.com/zhanglistar)).
+- Support JSON type in notEmpty function. [#72741](https://github.com/ClickHouse/ClickHouse/pull/72741) ([Pavel Kruglov](https://github.com/Avogar)).
+- Support parsing GCS S3 error `AuthenticationRequired`. [#72753](https://github.com/ClickHouse/ClickHouse/pull/72753) ([Vitaly Baranov](https://github.com/vitlibar)).
+- Support Dynamic type in functions ifNull and coalesce. [#72772](https://github.com/ClickHouse/ClickHouse/pull/72772) ([Pavel Kruglov](https://github.com/Avogar)).
+- Added `JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCount` profile events. [#72842](https://github.com/ClickHouse/ClickHouse/pull/72842) ([Vladimir Cherkasov](https://github.com/vdimir)).
+- Support Dynamic in functions toFloat64/touInt32/etc. [#72989](https://github.com/ClickHouse/ClickHouse/pull/72989) ([Pavel Kruglov](https://github.com/Avogar)).
+
+## Bug Fix (user-visible misbehavior in an official stable release) {#bug-fix}
+
+- The parts deduplicated during `ATTACH PART` query don't get stuck with the `attaching_` prefix anymore. [#65636](https://github.com/ClickHouse/ClickHouse/pull/65636) ([Kirill](https://github.com/kirillgarbar)).
+- Fix for the bug when dateTime64 losing precision for the `IN` function. [#67230](https://github.com/ClickHouse/ClickHouse/pull/67230) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+- Fix possible logical error when using functions with `IGNORE/RESPECT NULLS` in `ORDER BY ... WITH FILL`, close [#57609](https://github.com/ClickHouse/ClickHouse/issues/57609). [#68234](https://github.com/ClickHouse/ClickHouse/pull/68234) ([Vladimir Cherkasov](https://github.com/vdimir)).
+- Fixed rare logical errors in asynchronous inserts with format `Native` in case of reached memory limit. [#68965](https://github.com/ClickHouse/ClickHouse/pull/68965) ([Anton Popov](https://github.com/CurtizJ)).
+- Fix COMMENT in CREATE TABLE for EPHEMERAL column. [#70458](https://github.com/ClickHouse/ClickHouse/pull/70458) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+- Fix logical error in JSONExtract with LowCardinality(Nullable). [#70549](https://github.com/ClickHouse/ClickHouse/pull/70549) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fixes behaviour when table name is too long. [#70810](https://github.com/ClickHouse/ClickHouse/pull/70810) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+- Add ability to override Content-Type by user headers in the URL engine. [#70859](https://github.com/ClickHouse/ClickHouse/pull/70859) ([Artem Iurin](https://github.com/ortyomka)).
+- Fix logical error in `StorageS3Queue` "Cannot create a persistent node in /processed since it already exists". [#70984](https://github.com/ClickHouse/ClickHouse/pull/70984) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Fix the bug that didn't consider _row_exists column in rebuild option of projection lightweight delete. [#71089](https://github.com/ClickHouse/ClickHouse/pull/71089) ([Shichao Jin](https://github.com/jsc0218)).
+- Fix wrong value in system.query_metric_log due to unexpected race condition. [#71124](https://github.com/ClickHouse/ClickHouse/pull/71124) ([Pablo Marcos](https://github.com/pamarcos)).
+- Fix mismatched aggreage function name of quantileExactWeightedInterpolated. The bug was introduced in https://github.com/ClickHouse/ClickHouse/pull/69619. cc @Algunenano. [#71168](https://github.com/ClickHouse/ClickHouse/pull/71168) ([李扬](https://github.com/taiyang-li)).
+- Fix bad_weak_ptr exception with Dynamic in functions comparison. [#71183](https://github.com/ClickHouse/ClickHouse/pull/71183) ([Pavel Kruglov](https://github.com/Avogar)).
+- Don't delete a blob when there are nodes using it in ReplicatedMergeTree with zero-copy replication. [#71186](https://github.com/ClickHouse/ClickHouse/pull/71186) ([Antonio Andelic](https://github.com/antonio2368)).
+- Fix ignoring format settings in Native format via HTTP and Async Inserts. [#71193](https://github.com/ClickHouse/ClickHouse/pull/71193) ([Pavel Kruglov](https://github.com/Avogar)).
+- SELECT queries run with setting `use_query_cache = 1` are no longer rejected if the name of a system table appears as a literal, e.g. `SELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true;` now works. [#71254](https://github.com/ClickHouse/ClickHouse/pull/71254) ([Robert Schulze](https://github.com/rschu1ze)).
+- Fix bug of memory usage increase if enable_filesystem_cache=1, but disk in storage configuration did not have any cache configuration. [#71261](https://github.com/ClickHouse/ClickHouse/pull/71261) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Fix possible error "Cannot read all data" erros during deserialization of LowCardinality dictionary from Dynamic column. [#71299](https://github.com/ClickHouse/ClickHouse/pull/71299) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fix incomplete cleanup of parallel output format in the client. [#71304](https://github.com/ClickHouse/ClickHouse/pull/71304) ([Raúl Marín](https://github.com/Algunenano)).
+- Added missing unescaping in named collections. Without fix clickhouse-server can't start. [#71308](https://github.com/ClickHouse/ClickHouse/pull/71308) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+- Fix async inserts with empty blocks via native protocol. [#71312](https://github.com/ClickHouse/ClickHouse/pull/71312) ([Anton Popov](https://github.com/CurtizJ)).
+- Fix inconsistent AST formatting when granting wrong wildcard grants [#71309](https://github.com/ClickHouse/ClickHouse/issues/71309). [#71332](https://github.com/ClickHouse/ClickHouse/pull/71332) ([pufit](https://github.com/pufit)).
+- Check suspicious and experimental types in JSON type hints. [#71369](https://github.com/ClickHouse/ClickHouse/pull/71369) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fix error Invalid number of rows in Chunk with Variant column. [#71388](https://github.com/ClickHouse/ClickHouse/pull/71388) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fix crash in `mongodb` table function when passing wrong arguments (e.g. `NULL`). [#71426](https://github.com/ClickHouse/ClickHouse/pull/71426) ([Vladimir Cherkasov](https://github.com/vdimir)).
+- Fix crash with optimize_rewrite_array_exists_to_has. [#71432](https://github.com/ClickHouse/ClickHouse/pull/71432) ([Raúl Marín](https://github.com/Algunenano)).
+- Fix NoSuchKey error during transaction rollback when creating a directory fails for the palin_rewritable disk. [#71439](https://github.com/ClickHouse/ClickHouse/pull/71439) ([Julia Kartseva](https://github.com/jkartseva)).
+- Fixed the usage of setting `max_insert_delayed_streams_for_parallel_write` in inserts. Previously it worked incorrectly which could lead to high memory usage in inserts which write data into several partitions. [#71474](https://github.com/ClickHouse/ClickHouse/pull/71474) ([Anton Popov](https://github.com/CurtizJ)).
+- Fix possible error `Argument for function must be constant` (old analyzer) in case when arrayJoin can apparently appear in `WHERE` condition. Regression after https://github.com/ClickHouse/ClickHouse/pull/65414. [#71476](https://github.com/ClickHouse/ClickHouse/pull/71476) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+- Prevent crash in SortCursor with 0 columns (old analyzer). [#71494](https://github.com/ClickHouse/ClickHouse/pull/71494) ([Raúl Marín](https://github.com/Algunenano)).
+- Fix date32 out of range caused by uninitialized orc data. For more details, refer to https://github.com/apache/incubator-gluten/issues/7823. [#71500](https://github.com/ClickHouse/ClickHouse/pull/71500) ([李扬](https://github.com/taiyang-li)).
+- Fix counting column size in wide part for Dynamic and JSON types. [#71526](https://github.com/ClickHouse/ClickHouse/pull/71526) ([Pavel Kruglov](https://github.com/Avogar)).
+- Analyzer fix when query inside materialized view uses IN with CTE. Closes [#65598](https://github.com/ClickHouse/ClickHouse/issues/65598). [#71538](https://github.com/ClickHouse/ClickHouse/pull/71538) ([Maksim Kita](https://github.com/kitaisreal)).
+- Return 0 or default char instead of throwing an error in bitShift functions in case of out of bounds. [#71580](https://github.com/ClickHouse/ClickHouse/pull/71580) ([Pablo Marcos](https://github.com/pamarcos)).
+- Fix server crashes while using materialized view with certain engines. [#71593](https://github.com/ClickHouse/ClickHouse/pull/71593) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+- Array join with a nested data structure, which contains an alias to a constant array was leading to a null pointer dereference. This closes [#71677](https://github.com/ClickHouse/ClickHouse/issues/71677). [#71678](https://github.com/ClickHouse/ClickHouse/pull/71678) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Fix LOGICAL_ERROR when doing ALTER with empty tuple. This fixes [#71647](https://github.com/ClickHouse/ClickHouse/issues/71647). [#71679](https://github.com/ClickHouse/ClickHouse/pull/71679) ([Amos Bird](https://github.com/amosbird)).
+- Don't transform constant set in predicates over partition columns in case of NOT IN operator. [#71695](https://github.com/ClickHouse/ClickHouse/pull/71695) ([Eduard Karacharov](https://github.com/korowa)).
+- Fix CAST from LowCardinality(Nullable) to Dynamic. Previously it could lead to error `Bad cast from type DB::ColumnVector to DB::ColumnNullable`. [#71742](https://github.com/ClickHouse/ClickHouse/pull/71742) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fix exception for toDayOfWeek on WHERE condition with primary key of DateTime64 type. [#71849](https://github.com/ClickHouse/ClickHouse/pull/71849) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+- Fixed filling of defaults after parsing into sparse columns. [#71854](https://github.com/ClickHouse/ClickHouse/pull/71854) ([Anton Popov](https://github.com/CurtizJ)).
+- Fix GROUPING function error when input is ALIAS on distributed table, close [#68602](https://github.com/ClickHouse/ClickHouse/issues/68602). [#71855](https://github.com/ClickHouse/ClickHouse/pull/71855) ([Vladimir Cherkasov](https://github.com/vdimir)).
+- Fixed select statements that use `WITH TIES` clause which might not return enough rows. [#71886](https://github.com/ClickHouse/ClickHouse/pull/71886) ([wxybear](https://github.com/wxybear)).
+- Fix an exception of TOO_LARGE_ARRAY_SIZE caused when a column of arrayWithConstant evaluation is mistaken to cross the array size limit. [#71894](https://github.com/ClickHouse/ClickHouse/pull/71894) ([Udi](https://github.com/udiz)).
+- `clickhouse-benchmark` reported wrong metrics for queries taking longer than one second. [#71898](https://github.com/ClickHouse/ClickHouse/pull/71898) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+- Fix data race between the progress indicator and the progress table in clickhouse-client. This issue is visible when FROM INFILE is used. Intercept keystrokes during INSERT queries to toggle progress table display. [#71901](https://github.com/ClickHouse/ClickHouse/pull/71901) ([Julia Kartseva](https://github.com/jkartseva)).
+- Fix serialization of Dynamic values in Pretty JSON formats. [#71923](https://github.com/ClickHouse/ClickHouse/pull/71923) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fix rows_processed column in system.s3/azure_queue_log broken in 24.6. Closes [#69975](https://github.com/ClickHouse/ClickHouse/issues/69975). [#71946](https://github.com/ClickHouse/ClickHouse/pull/71946) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Fixed case when `s3`/`s3Cluster` functions could return incomplete result or throw an exception. It involved using glob pattern in s3 uri (like `pattern/*`) and an empty object should exist with the key `pattern/` (such objects automatically created by S3 Console). Also default value for setting `s3_skip_empty_files` changed from `false` to `true` by default. [#71947](https://github.com/ClickHouse/ClickHouse/pull/71947) ([Nikita Taranov](https://github.com/nickitat)).
+- Fix a crash in clickhouse-client syntax highlighting. Closes [#71864](https://github.com/ClickHouse/ClickHouse/issues/71864). [#71949](https://github.com/ClickHouse/ClickHouse/pull/71949) ([Nikolay Degterinsky](https://github.com/evillique)).
+- Fix `Illegal type` error for `MergeTree` tables with binary monotonic function in `ORDER BY` when the first argument is constant. Fixes [#71941](https://github.com/ClickHouse/ClickHouse/issues/71941). [#71966](https://github.com/ClickHouse/ClickHouse/pull/71966) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+- Allow only SELECT queries in EXPLAIN AST used inside subquery. Other types of queries lead to logical error: 'Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery' or `Inconsistent AST formatting`. [#71982](https://github.com/ClickHouse/ClickHouse/pull/71982) ([Pavel Kruglov](https://github.com/Avogar)).
+- When insert a record by `clickhouse-client`, client will read column descriptions from server. but there was a bug that we wrote the descritions with a wrong order , it should be [statistics, ttl, settings]. [#71991](https://github.com/ClickHouse/ClickHouse/pull/71991) ([Han Fei](https://github.com/hanfei1991)).
+- Fix formatting of `MOVE PARTITION ... TO TABLE ...` alter commands when `format_alter_commands_with_parentheses` is enabled. [#72080](https://github.com/ClickHouse/ClickHouse/pull/72080) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+- Add inferred format name to create query in File/S3/URL/HDFS/Azure engines. Previously the format name was inferred each time the server was restarted, and if the specified data files were removed, it led to errors during server startup. [#72108](https://github.com/ClickHouse/ClickHouse/pull/72108) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fix a bug where `min_age_to_force_merge_on_partition_only` was getting stuck trying to merge down the same partition repeatedly that was already merged to a single part and not merging partitions that had multiple parts. [#72209](https://github.com/ClickHouse/ClickHouse/pull/72209) ([Christoph Wurm](https://github.com/cwurm)).
+- Fixed a crash in `SimpleSquashingChunksTransform` that occurred in rare cases when processing sparse columns. [#72226](https://github.com/ClickHouse/ClickHouse/pull/72226) ([Vladimir Cherkasov](https://github.com/vdimir)).
+- Fixed data race in `GraceHashJoin` as the result of which some rows might be missing in the join output. [#72233](https://github.com/ClickHouse/ClickHouse/pull/72233) ([Nikita Taranov](https://github.com/nickitat)).
+- Fixed `ALTER DELETE` queries with materialized `_block_number` column (if setting `enable_block_number_column` is enabled). [#72261](https://github.com/ClickHouse/ClickHouse/pull/72261) ([Anton Popov](https://github.com/CurtizJ)).
+- Fixed data race when `ColumnDynamic::dumpStructure()` is called concurrently e.g. in `ConcurrentHashJoin` constructor. [#72278](https://github.com/ClickHouse/ClickHouse/pull/72278) ([Nikita Taranov](https://github.com/nickitat)).
+- Fix possible `LOGICAL_ERROR` with duplicate columns in `ORDER BY ... WITH FILL`. [#72387](https://github.com/ClickHouse/ClickHouse/pull/72387) ([Vladimir Cherkasov](https://github.com/vdimir)).
+- Fixed mismatched types in several cases after applying `optimize_functions_to_subcolumns`. [#72394](https://github.com/ClickHouse/ClickHouse/pull/72394) ([Anton Popov](https://github.com/CurtizJ)).
+- Fix failure on parsing `BACKUP DATABASE db EXCEPT TABLES db.table` queries. [#72429](https://github.com/ClickHouse/ClickHouse/pull/72429) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+- Don't allow creating empty Variant. [#72454](https://github.com/ClickHouse/ClickHouse/pull/72454) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fix invalid formatting of `result_part_path` in `system.merges`. [#72567](https://github.com/ClickHouse/ClickHouse/pull/72567) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+- Fix parsing a glob with one element. [#72572](https://github.com/ClickHouse/ClickHouse/pull/72572) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+- Fix query generation for the follower server in case of a distributed query with ARRAY JOIN. Fixes [#69276](https://github.com/ClickHouse/ClickHouse/issues/69276). [#72608](https://github.com/ClickHouse/ClickHouse/pull/72608) ([Dmitry Novik](https://github.com/novikd)).
+- Fix a bug when DateTime64 in DateTime64 returns nothing. [#72640](https://github.com/ClickHouse/ClickHouse/pull/72640) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+- Fix "No such key" error in S3Queue Unordered mode with `tracked_files_limit` setting smaller than s3 files appearance rate. [#72738](https://github.com/ClickHouse/ClickHouse/pull/72738) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Dropping mark cache might take noticeable time if it is big. If we hold context mutex during this it block many other activities, even new client connection cannot be established until it is released. And holding this mutex is not actually required for synchronization, it is enough to have a local reference to the cache via shared ptr. [#72749](https://github.com/ClickHouse/ClickHouse/pull/72749) ([Alexander Gololobov](https://github.com/davenger)).
+- PK cache was heavily underestimating it's size on one of the test instances. In particular LowCardinality columns were not including dictionary size. The fix is to use column->allocatedBytes() plus some more overhead estimates for cache entry size. [#72750](https://github.com/ClickHouse/ClickHouse/pull/72750) ([Alexander Gololobov](https://github.com/davenger)).
+- Fix exception thrown in RemoteQueryExecutor when user does not exist locally. [#72759](https://github.com/ClickHouse/ClickHouse/pull/72759) ([Andrey Zvonov](https://github.com/zvonand)).
+- Fixed mutations with materialized `_block_number` column (if setting `enable_block_number_column` is enabled). [#72854](https://github.com/ClickHouse/ClickHouse/pull/72854) ([Anton Popov](https://github.com/CurtizJ)).
+- Fix backup/restore with plain rewritable disk in case there are empty files in backup. [#72858](https://github.com/ClickHouse/ClickHouse/pull/72858) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Properly cancel inserts in DistributedAsyncInsertDirectoryQueue. [#72885](https://github.com/ClickHouse/ClickHouse/pull/72885) ([Antonio Andelic](https://github.com/antonio2368)).
+- Fixed crash while parsing of incorrect data into sparse columns (can happen with enabled setting `enable_parsing_to_custom_serialization`). [#72891](https://github.com/ClickHouse/ClickHouse/pull/72891) ([Anton Popov](https://github.com/CurtizJ)).
+- Fix potential crash during backup restore. [#72947](https://github.com/ClickHouse/ClickHouse/pull/72947) ([Kseniia Sumarokova](https://github.com/kssenii)).
+- Fixed bug in `parallel_hash` JOIN method that might appear when query has complex condition in the `ON` clause with inequality filters. [#72993](https://github.com/ClickHouse/ClickHouse/pull/72993) ([Nikita Taranov](https://github.com/nickitat)).
+- Use default format settings during JSON parsing to avoid broken deserialization. [#73043](https://github.com/ClickHouse/ClickHouse/pull/73043) ([Pavel Kruglov](https://github.com/Avogar)).
+- Fix crash in transactions with unsupported storage. [#73045](https://github.com/ClickHouse/ClickHouse/pull/73045) ([Raúl Marín](https://github.com/Algunenano)).
+- Check for duplicate JSON keys during Tuple parsing. Previously it could lead to logical error `Invalid number of rows in Chunk` during parsing. [#73082](https://github.com/ClickHouse/ClickHouse/pull/73082) ([Pavel Kruglov](https://github.com/Avogar)).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_04.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_04.md
new file mode 100644
index 00000000000..8fe9330665d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_04.md
@@ -0,0 +1,648 @@
+---
+slug: /changelogs/25.4
+title: 'v25.4 Changelog for Cloud'
+description: 'Fast release changelog for v25.4'
+keywords: ['changelog', 'cloud']
+sidebar_label: '25.4'
+sidebar_position: 3
+doc_type: 'changelog'
+---
+
+## Backward incompatible changes {#backward-incompatible-changes}
+
+* Parquet output format converts Date and DateTime columns to date/time types supported by Parquet, instead of writing them as raw numbers. DateTime becomes DateTime64(3) (was: UInt32); setting `output_format_parquet_datetime_as_uint32` brings back the old behavior. Date becomes Date32 (was: UInt16). [#70950](https://github.com/ClickHouse/ClickHouse/pull/70950) ([Michael Kolupaev](https://github.com/al13n321)).
+* Don't allow comparable types (like JSON/Object/AggregateFunction) in ORDER BY and comparison functions `less/greater/equal/etc` by default. [#73276](https://github.com/ClickHouse/ClickHouse/pull/73276) ([Pavel Kruglov](https://github.com/Avogar)).
+* `JSONEachRowWithProgress` will write the progress whenever the progress happens. In previous versions, the progress was shown only after each block of the result, which made it useless. Change the way how the progress is displayed: it will not show zero values. Keep in mind that the progress is sent even if it happens frequently. It can generate a significant volume of traffic. Keep in mind that the progress is not flushed when the output is compressed. This closes [#70800](https://github.com/ClickHouse/ClickHouse/issues/70800). [#73834](https://github.com/ClickHouse/ClickHouse/pull/73834) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* The `mysql` dictionary source no longer does `SHOW TABLE STATUS` query, because it does not provide any value for InnoDB tables, as long as for any recent MySQL versions. This closes [#72636](https://github.com/ClickHouse/ClickHouse/issues/72636). This change is backward compatible, but put in this category, so you have a chance to notice it. [#73914](https://github.com/ClickHouse/ClickHouse/pull/73914) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* `Merge` tables will unify the structure of underlying tables by using a union of their columns and deriving common types. This closes [#64864](https://github.com/ClickHouse/ClickHouse/issues/64864). This closes [#35307](https://github.com/ClickHouse/ClickHouse/issues/35307). In certain cases, this change could be backward incompatible. One example is when there is no common type between tables, but conversion to the type of the first table is still possible, such as in the case of UInt64 and Int64 or any numeric type and String. If you want to return to the old behavior, set `merge_table_max_tables_to_look_for_schema_inference` to `1` or set `compatibility` to `24.12` or earlier. [#73956](https://github.com/ClickHouse/ClickHouse/pull/73956) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* `CHECK TABLE` queries now require a separate, `CHECK` grant. In previous versions, it was enough to have `SHOW TABLES` grant to run these queries. But a `CHECK TABLE` query can be heavy, and usual query complexity limits for `SELECT` queries don't apply to it. It led to the potential of DoS. [#74471](https://github.com/ClickHouse/ClickHouse/pull/74471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Check all columns in a materialized view match the target table if `allow_materialized_view_with_bad_select` is `false`. [#74481](https://github.com/ClickHouse/ClickHouse/pull/74481) ([Christoph Wurm](https://github.com/cwurm)).
+* Function `h3ToGeo()` now returns the results in the order `(lat, lon)` (which is the standard order for geometric functions). Users who wish to retain the legacy result order `(lon, lat)` can set setting `h3togeo_lon_lat_result_order = true`. [#74719](https://github.com/ClickHouse/ClickHouse/pull/74719) ([Manish Gill](https://github.com/mgill25)).
+* Add `JSONCompactEachRowWithProgress` and `JSONCompactStringsEachRowWithProgress` formats. Continuation of [#69989](https://github.com/ClickHouse/ClickHouse/issues/69989). The `JSONCompactWithNames` and `JSONCompactWithNamesAndTypes` no longer output "totals" - apparently, it was a mistake in the implementation. [#75037](https://github.com/ClickHouse/ClickHouse/pull/75037) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Change `format_alter_operations_with_parentheses` default to true to make alter commands list unambiguous (see https://github.com/ClickHouse/ClickHouse/pull/59532). This breaks replication with clusters prior to 24.3. If you are upgrading a cluster using older releases, turn off the setting in the server config or upgrade to 24.3 first. [#75302](https://github.com/ClickHouse/ClickHouse/pull/75302) ([Raúl Marín](https://github.com/Algunenano)).
+* Disallow truncate database for replicated databases. [#76651](https://github.com/ClickHouse/ClickHouse/pull/76651) ([Bharat Nallan](https://github.com/bharatnc)).
+* Disable parallel replicas by default when analyzer is disabled regardless `compatibility` setting. It's still possible to change this behavior by explicitly setting `parallel_replicas_only_with_analyzer` to `false`. [#77115](https://github.com/ClickHouse/ClickHouse/pull/77115) ([Igor Nikonov](https://github.com/devcrafter)).
+* It's no longer possible to use `NaN` or `inf` for float values as settings. [#77546](https://github.com/ClickHouse/ClickHouse/pull/77546) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fixes cases where `dateTrunc` is used with negative date/datetime arguments. [#77622](https://github.com/ClickHouse/ClickHouse/pull/77622) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* The legacy MongoDB integration has been removed. Server setting `use_legacy_mongodb_integration` became obsolete and now does nothing. [#77895](https://github.com/ClickHouse/ClickHouse/pull/77895) ([Robert Schulze](https://github.com/rschu1ze)).
+* Enhance SummingMergeTree validation to skip aggregation for columns used in partition or sort keys. [#78022](https://github.com/ClickHouse/ClickHouse/pull/78022) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+
+## New features {#new-features}
+
+* Added an in-memory cache for deserialized skipping index granules. This should make repeated queries that use skipping indexes faster. The size of the new cache is controlled by server settings `skipping_index_cache_size` and `skipping_index_cache_max_entries`. The original motivation for the cache were vector similarity indexes which became a lot faster now. [#70102](https://github.com/ClickHouse/ClickHouse/pull/70102) ([Robert Schulze](https://github.com/rschu1ze)).
+* A new implementation of the Userspace Page Cache, which allows caching data in the in-process memory instead of relying on the OS page cache. It is useful when the data is stored on a remote virtual filesystem without backing with the local filesystem cache. [#70509](https://github.com/ClickHouse/ClickHouse/pull/70509) ([Michael Kolupaev](https://github.com/al13n321)).
+* Add setting to query Iceberg tables as of a specific timestamp. [#71072](https://github.com/ClickHouse/ClickHouse/pull/71072) ([Brett Hoerner](https://github.com/bretthoerner)).
+* Implement Iceberg tables partition pruning for time-related transform partition operations in Iceberg. [#72044](https://github.com/ClickHouse/ClickHouse/pull/72044) ([Daniil Ivanik](https://github.com/divanik)).
+* Add the ability to create min-max (skipping) indices by default for columns managed by MergeTree using settings `enable_minmax_index_for_all_numeric_columns` (for numeric columns) and `enable_minmax_index_for_all_string_columns` (for string columns). For now, both settings are disabled, so there is no behavior change yet. [#72090](https://github.com/ClickHouse/ClickHouse/pull/72090) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+* Added aggregation function sequenceMatchEvents which return timestamps of matched events for longest chain of events in pattern. [#72349](https://github.com/ClickHouse/ClickHouse/pull/72349) ([UnamedRus](https://github.com/UnamedRus)).
+* `SELECT` and `VIEW` statements now support aliases, e.g. `SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);`. This enables TPC-H query 15 to run without modifications. [#72480](https://github.com/ClickHouse/ClickHouse/pull/72480) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Added a new setting `enable_adaptive_memory_spill_scheduler` that allows multiple grace JOINs in the same query to monitor their combined memory footprint and trigger spilling into an external storage adaptively to prevent MEMORY_LIMIT_EXCEEDED. [#72728](https://github.com/ClickHouse/ClickHouse/pull/72728) ([lgbo](https://github.com/lgbo-ustc)).
+* Added function `arrayNormalizedGini`. [#72823](https://github.com/ClickHouse/ClickHouse/pull/72823) ([flynn](https://github.com/ucasfl)).
+* Support low cardinality decimal data types, fix [#72256](https://github.com/ClickHouse/ClickHouse/issues/72256). [#72833](https://github.com/ClickHouse/ClickHouse/pull/72833) ([zhanglistar](https://github.com/zhanglistar)).
+* When `min_age_to_force_merge_seconds` and `min_age_to_force_merge_on_partition_only` are both enabled, the part merging will ignore the max bytes limit. [#73656](https://github.com/ClickHouse/ClickHouse/pull/73656) ([Kai Zhu](https://github.com/nauu)).
+* Support reading HALF_FLOAT values from Apache Arrow/Parquet/ORC (they are read into Float32). This closes [#72960](https://github.com/ClickHouse/ClickHouse/issues/72960). Keep in mind that IEEE-754 half float is not the same as BFloat16. Closes [#73835](https://github.com/ClickHouse/ClickHouse/issues/73835). [#73836](https://github.com/ClickHouse/ClickHouse/pull/73836) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* The `system.trace_log` table will contain two new columns, `symbols` and `lines` containing symbolized stack trace. It allows for easy collection and export of profile information. This is controlled by the server configuration value `symbolize` inside `trace_log` and is enabled by default. [#73896](https://github.com/ClickHouse/ClickHouse/pull/73896) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add a new function, `generateSerialID`, which can be used to generate auto-incremental numbers in tables. Continuation of [#64310](https://github.com/ClickHouse/ClickHouse/issues/64310) by [kazalika](https://github.com/kazalika). This closes [#62485](https://github.com/ClickHouse/ClickHouse/issues/62485). [#73950](https://github.com/ClickHouse/ClickHouse/pull/73950) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add syntax `query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN` That means subqueries `{query1, query2, ... queryN}` are allowed to run in parallel with each other (and it's preferable). [#73983](https://github.com/ClickHouse/ClickHouse/pull/73983) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Now, Play UI has a progress bar during query runtime. It allows cancelling queries. It displays the total number of records and the extended information about the speed. The table can be rendered incrementally as soon as data arrives. Enable HTTP compression. Rendering of the table became faster. The table header became sticky. It allows selecting cells and navigating them by arrow keys. Fix the issue when the outline of the selected cell makes it smaller. Cells no longer expand on mouse hover but only on selection. The moment to stop rendering the incoming data is decided on the client rather than on the server side. Highlight digit groups for numbers. The overall design was refreshed and became bolder. It checks if the server is reachable and the correctness of credentials and displays the server version and uptime. The cloud icon is contoured in every font, even in Safari. Big integers inside nested data types will be rendered better. It will display inf/nan correctly. It will display data types when the mouse is over a column header. [#74204](https://github.com/ClickHouse/ClickHouse/pull/74204) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add the ability to create min-max (skipping) indices by default for columns managed by MergeTree using settings `add_minmax_index_for_numeric_columns` (for numeric columns) and `add_minmax_index_for_string_columns` (for string columns). For now, both settings are disabled, so there is no behavior change yet. [#74266](https://github.com/ClickHouse/ClickHouse/pull/74266) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+* Add `script_query_number` and `script_line_number` fields to `system.query_log`, to the ClientInfo in the native protocol, and to server logs. This closes [#67542](https://github.com/ClickHouse/ClickHouse/issues/67542). Credits to [pinsvin00](https://github.com/pinsvin00) for kicking off this feature earlier in [#68133](https://github.com/ClickHouse/ClickHouse/issues/68133). [#74477](https://github.com/ClickHouse/ClickHouse/pull/74477) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add minus operator support for DateTime64, to allow subtraction between DateTime64 values, as well as DateTime. [#74482](https://github.com/ClickHouse/ClickHouse/pull/74482) ([Li Yin](https://github.com/liyinsg)).
+* Support DeltaLake table engine for AzureBlobStorage. Fixes [#68043](https://github.com/ClickHouse/ClickHouse/issues/68043). [#74541](https://github.com/ClickHouse/ClickHouse/pull/74541) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+* Add bind_host setting to set the source IP address for clickhouse client connections. [#74741](https://github.com/ClickHouse/ClickHouse/pull/74741) ([Todd Yocum](https://github.com/toddyocum)).
+* Added an ability to apply non-finished (not materialized by background process) mutations during the execution of `SELECT` queries immediately after submitting. It can be enabled by setting `apply_mutations_on_fly`. [#74877](https://github.com/ClickHouse/ClickHouse/pull/74877) ([Anton Popov](https://github.com/CurtizJ)).
+* Fixed some previously unexpected cases when `toStartOfInterval` datetime arguments are negative. Done by implementing a new function called toStartOfIntervalAllowNegative, which does pretty much the same but returns only Date32/DateTime64. [#74933](https://github.com/ClickHouse/ClickHouse/pull/74933) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* A new function initialQueryStartTime has been added. It returns the start time of the current query. The value is the same across all shards during a distributed query. [#75087](https://github.com/ClickHouse/ClickHouse/pull/75087) ([Roman Lomonosov](https://github.com/lomik)).
+* Introduce parametrized_view_parameters in system.tables. Closes https://github.com/clickhouse/clickhouse/issues/66756. [#75112](https://github.com/ClickHouse/ClickHouse/pull/75112) ([NamNguyenHoai](https://github.com/NamHoaiNguyen)).
+* Allow altering a database comment. Closes [#73351](https://github.com/ClickHouse/ClickHouse/issues/73351) ### Documentation entry for user-facing changes. [#75622](https://github.com/ClickHouse/ClickHouse/pull/75622) ([NamNguyenHoai](https://github.com/NamHoaiNguyen)).
+* Add ability to ATTACH tables without database layer (avoids UUID hack). [#75788](https://github.com/ClickHouse/ClickHouse/pull/75788) ([Azat Khuzhin](https://github.com/azat)).
+* Added `concurrent_threads_scheduler` server setting that governs how CPU slots are distributed among concurrent queries. Could be set to `round_robin` (previous behavior) or `fair_round_robin` to address the issue of unfair CPU distribution between INSERTs and SELECTs. [#75949](https://github.com/ClickHouse/ClickHouse/pull/75949) ([Sergei Trifonov](https://github.com/serxa)).
+* Restore QPL codec which has been removed in v24.10 due to licensing issues. [#76021](https://github.com/ClickHouse/ClickHouse/pull/76021) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Added function `arraySymmetricDifference`. It returns all elements from multiple array arguments which do not occur in all arguments. Example: `SELECT arraySymmetricDifference([1, 2], [2, 3])` returns `[1, 3]`. (issue [#61673](https://github.com/ClickHouse/ClickHouse/issues/61673)). [#76231](https://github.com/ClickHouse/ClickHouse/pull/76231) ([Filipp Abapolov](https://github.com/pheepa)).
+* Add `estimatecompressionratio` aggregate function- see [#70801](https://github.com/ClickHouse/ClickHouse/issues/70801). [#76661](https://github.com/ClickHouse/ClickHouse/pull/76661) ([Tariq Almawash](https://github.com/talmawash)).
+* `FilterTransformPassedRows` and `FilterTransformPassedBytes` profile events will show the number of rows and number of bytes filtered during the query execution. [#76662](https://github.com/ClickHouse/ClickHouse/pull/76662) ([Onkar Deshpande](https://github.com/onkar)).
+* Added the keccak256 hash function, commonly used in blockchain implementations, especially in EVM-based systems. [#76669](https://github.com/ClickHouse/ClickHouse/pull/76669) ([Arnaud Briche](https://github.com/arnaudbriche)).
+* Scram SHA256 & update postgres wire auth. [#76839](https://github.com/ClickHouse/ClickHouse/pull/76839) ([scanhex12](https://github.com/scanhex12)).
+* The functionality adds the ability to define a list of headers that are forwarded from the headers of the client request to the external http authenticator. [#77054](https://github.com/ClickHouse/ClickHouse/pull/77054) ([inv2004](https://github.com/inv2004)).
+* Support `IcebergMetadataFilesCache`, which will store manifest files/list and metadata.json in one cache. [#77156](https://github.com/ClickHouse/ClickHouse/pull/77156) ([Han Fei](https://github.com/hanfei1991)).
+* Add functions `arrayLevenshteinDistance`, `arrayLevenshteinDistanceWeighted`, and `arraySimilarity`. [#77187](https://github.com/ClickHouse/ClickHouse/pull/77187) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* Add three new functions. `icebergTruncate` according to specification. https://iceberg.apache.org/spec/#truncate-transform-details, `toYearNumSinceEpoch` and `toMonthNumSinceEpoch`. Support `truncate` transform in partition pruning for `Iceberg` engine. [#77403](https://github.com/ClickHouse/ClickHouse/pull/77403) ([alesapin](https://github.com/alesapin)).
+* Allows a user to query the state of an Iceberg table as it existed at a previous point in time. [#77439](https://github.com/ClickHouse/ClickHouse/pull/77439) ([Daniil Ivanik](https://github.com/divanik)).
+* Added CPU slot scheduling for workloads, see https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling for details. [#77595](https://github.com/ClickHouse/ClickHouse/pull/77595) ([Sergei Trifonov](https://github.com/serxa)).
+* The `hasAll()` function can now take advantage of the tokenbf_v1, ngrambf_v1 full-text skipping indices. [#77662](https://github.com/ClickHouse/ClickHouse/pull/77662) ([UnamedRus](https://github.com/UnamedRus)).
+* `JSON` data type is production-ready. See https://jsonbench.com/. `Dynamic` and `Varaint` data types are production ready. [#77785](https://github.com/ClickHouse/ClickHouse/pull/77785) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Added an in-memory cache for deserialized vector similarity indexes. This should make repeated approximate nearest neighbor (ANN) search queries faster. The size of the new cache is controlled by server settings `vector_similarity_index_cache_size` and `vector_similarity_index_cache_max_entries`. This feature supersedes the skipping index cache feature of earlier releases. [#77905](https://github.com/ClickHouse/ClickHouse/pull/77905) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Functions sparseGrams and sparseGramsHashes with UTF8 versions added. Author: [scanhex12](https://github.com/scanhex12). [#78176](https://github.com/ClickHouse/ClickHouse/pull/78176) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Introduce `toInterval` function. This function accepts 2 arguments (value and unit), and converts the value to a specific `Interval` type. [#78723](https://github.com/ClickHouse/ClickHouse/pull/78723) ([Andrew Davis](https://github.com/pulpdrew)).
+
+## Experimental features {#experimental-features}
+
+* Allow automatic cleanup merges of entire partitions after a configurable timeout with a new setting `enable_replacing_merge_with_cleanup_for_min_age_to_force_merge`. [#76440](https://github.com/ClickHouse/ClickHouse/pull/76440) ([Christoph Wurm](https://github.com/cwurm)).
+* Add support [for Unity Catalog](https://www.databricks.com/product/unity-catalog) for DeltaLake tables on top of AWS S3 and local filesystem. [#76988](https://github.com/ClickHouse/ClickHouse/pull/76988) ([alesapin](https://github.com/alesapin)).
+* Introduce experimental integration with AWS Glue service catalog for Iceberg tables. [#77257](https://github.com/ClickHouse/ClickHouse/pull/77257) ([alesapin](https://github.com/alesapin)).
+
+## Performance improvements {#performance-improvements}
+
+* Optimize performance with lazy projection to avoid reading unused columns. [#55518](https://github.com/ClickHouse/ClickHouse/pull/55518) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
+* Start to compare rows from most likely unequal columns first. [#63780](https://github.com/ClickHouse/ClickHouse/pull/63780) ([UnamedRus](https://github.com/UnamedRus)).
+* Optimize RowBinary input format. Closes [#63805](https://github.com/ClickHouse/ClickHouse/issues/63805). [#65059](https://github.com/ClickHouse/ClickHouse/pull/65059) ([Pavel Kruglov](https://github.com/Avogar)).
+* Speedup string deserialization by some low-level optimisation. [#65948](https://github.com/ClickHouse/ClickHouse/pull/65948) ([Nikita Taranov](https://github.com/nickitat)).
+* Apply `preserve_most` attribute at some places in code. [#67778](https://github.com/ClickHouse/ClickHouse/pull/67778) ([Nikita Taranov](https://github.com/nickitat)).
+* Implement query condition cache to improve query performance using repeated conditions. The range of the portion of data that does not meet the condition is remembered as a temporary index in memory. Subsequent queries will use this index. close [#67768](https://github.com/ClickHouse/ClickHouse/issues/67768) ### Documentation entry for user-facing changes. [#69236](https://github.com/ClickHouse/ClickHouse/pull/69236) ([zhongyuankai](https://github.com/zhongyuankai)).
+* Support async io prefetch for `NativeORCBlockInputFormat`, which improves overall performance by hiding remote io latency. Speedup ratio could reach 1.47x in my test case. [#70534](https://github.com/ClickHouse/ClickHouse/pull/70534) ([李扬](https://github.com/taiyang-li)).
+* Improve grace hash join performance by rerange the right join table by keys. [#72237](https://github.com/ClickHouse/ClickHouse/pull/72237) ([kevinyhzou](https://github.com/KevinyhZou)).
+* Reintroduce respect `ttl_only_drop_parts` on `materialize ttl`; only read the necessary columns to recalculate TTL and drop parts by replacing them with an empty one. [#72751](https://github.com/ClickHouse/ClickHouse/pull/72751) ([Andrey Zvonov](https://github.com/zvonand)).
+* Allow `arrayROCAUC` and `arrayAUCPR` to compute partial area of the whole curve, so that its calculation can be parallelized over huge datasets. [#72904](https://github.com/ClickHouse/ClickHouse/pull/72904) ([Emmanuel](https://github.com/emmanuelsdias)).
+* Avoid spawn too many idle threads. [#72920](https://github.com/ClickHouse/ClickHouse/pull/72920) ([Guo Wangyang](https://github.com/guowangy)).
+* Splitting of left table blocks by hash was removed from the probe phase of the `parallel_hash` JOIN algorithm. [#73089](https://github.com/ClickHouse/ClickHouse/pull/73089) ([Nikita Taranov](https://github.com/nickitat)).
+* Don't list blob storage keys if we only have curly brackets expansion in table function. Closes [#73333](https://github.com/ClickHouse/ClickHouse/issues/73333). [#73518](https://github.com/ClickHouse/ClickHouse/pull/73518) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Replace Int256 and UInt256 with clang builtin i256 in arithmetic calculation according to tests in [#70502](https://github.com/ClickHouse/ClickHouse/issues/70502). [#73658](https://github.com/ClickHouse/ClickHouse/pull/73658) ([李扬](https://github.com/taiyang-li)).
+* Adds a fast path for functions with all argument types is numeric. Fix performance issues in https://github.com/ClickHouse/ClickHouse/pull/72258. [#73820](https://github.com/ClickHouse/ClickHouse/pull/73820) ([李扬](https://github.com/taiyang-li)).
+* Do not apply `maskedExecute` on non-function columns, improve the performance of short circuit execution. [#73965](https://github.com/ClickHouse/ClickHouse/pull/73965) ([lgbo](https://github.com/lgbo-ustc)).
+* Disable header detection for Kafka/NATS/RabbitMQ/FileLog to improve performance. [#74006](https://github.com/ClickHouse/ClickHouse/pull/74006) ([Azat Khuzhin](https://github.com/azat)).
+* Use log wrappers by value and don't allocate them in a heap. [#74034](https://github.com/ClickHouse/ClickHouse/pull/74034) ([Mikhail Artemenko](https://github.com/Michicosun)).
+* Execute a pipeline with a higher degree of parallelism after aggregation with grouping sets. [#74082](https://github.com/ClickHouse/ClickHouse/pull/74082) ([Nikita Taranov](https://github.com/nickitat)).
+* Reduce critical section in `MergeTreeReadPool`. [#74202](https://github.com/ClickHouse/ClickHouse/pull/74202) ([Guo Wangyang](https://github.com/guowangy)).
+* Optimized function `indexHint`. Now, columns that are only used as arguments of function `indexHint` are not read from the table. [#74314](https://github.com/ClickHouse/ClickHouse/pull/74314) ([Anton Popov](https://github.com/CurtizJ)).
+* Parallel replicas performance improvement. Packets deserialization on query initiator, for packets not related to parallel replicas protocol, now always happens in pipeline thread. Before, it could happen in a thread responsible for pipeline scheduling, which could make initiator less responsive and delay pipeline execution. [#74398](https://github.com/ClickHouse/ClickHouse/pull/74398) ([Igor Nikonov](https://github.com/devcrafter)).
+* Fixed calculation of size in memory for `LowCardinality` columns. [#74688](https://github.com/ClickHouse/ClickHouse/pull/74688) ([Nikita Taranov](https://github.com/nickitat)).
+* Improves the performance of whole JSON column reading in Wide parts from S3. It's done by adding prefetches for sub column prefixes deserialization, cache of deserialized prefixes and parallel deserialization of subcolumn prefixes. It improves reading of the JSON column from S3 4 times in query like `SELECT data FROM table` and about 10 times in query like `SELECT data FROM table LIMIT 10`. [#74827](https://github.com/ClickHouse/ClickHouse/pull/74827) ([Pavel Kruglov](https://github.com/Avogar)).
+* Preallocate memory used by async inserts to improve performance. [#74945](https://github.com/ClickHouse/ClickHouse/pull/74945) ([Ilya Golshtein](https://github.com/ilejn)).
+* Fixed double pre-allocation in `ConcurrentHashJoin` in case join sides are swapped by the optimizer. [#75149](https://github.com/ClickHouse/ClickHouse/pull/75149) ([Nikita Taranov](https://github.com/nickitat)).
+* Fixed unnecessary contention in `parallel_hash` when `max_rows_in_join = max_bytes_in_join = 0`. [#75155](https://github.com/ClickHouse/ClickHouse/pull/75155) ([Nikita Taranov](https://github.com/nickitat)).
+* Slight improvement in some join scenarios: precalculate number of output rows and reserve memory for them. [#75376](https://github.com/ClickHouse/ClickHouse/pull/75376) ([Alexander Gololobov](https://github.com/davenger)).
+* `plain_rewritable` metadata files are small and do not need a large default buffer. Use a write buffer sized appropriately to fit the given path, improving memory utilization for a large number of active parts. ### Documentation entry for user-facing changes. [#75758](https://github.com/ClickHouse/ClickHouse/pull/75758) ([Julia Kartseva](https://github.com/jkartseva)).
+* In some cases (e.g., empty array column) data parts can contain empty files. We can skip writing empty blobs to ObjectStorage and only store metadata for such files when the table resides on disk with separated metadata and object storages. [#75860](https://github.com/ClickHouse/ClickHouse/pull/75860) ([Alexander Gololobov](https://github.com/davenger)).
+* It was discovered that concurrency control could lead to unfair CPU distribution between INSERTs and SELECTs. When all CPU slots are allocated unconditionally (w/o competition) to INSERTs with `max_threads` = 1 while SELECTs with high `max_threads` values suffer from poor performance due to using only a single thread. [#75941](https://github.com/ClickHouse/ClickHouse/pull/75941) ([Sergei Trifonov](https://github.com/serxa)).
+* Trivial opt on wrapInNullable to avoid unnecessary null map allocation. [#76489](https://github.com/ClickHouse/ClickHouse/pull/76489) ([李扬](https://github.com/taiyang-li)).
+* Improve min/max performance for Decimal32/Decimal64/DateTime64. [#76570](https://github.com/ClickHouse/ClickHouse/pull/76570) ([李扬](https://github.com/taiyang-li)).
+* Actively evict data from the cache on parts removal. Do not let the cache grow to the maximum size if the amount of data is less. [#76641](https://github.com/ClickHouse/ClickHouse/pull/76641) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Query compilation (setting `compile_expressions`) now considers the machine type. This speeds up such queries significantly. [#76753](https://github.com/ClickHouse/ClickHouse/pull/76753) ([Robert Schulze](https://github.com/rschu1ze)).
+* Optimize arraySort. [#76850](https://github.com/ClickHouse/ClickHouse/pull/76850) ([李扬](https://github.com/taiyang-li)).
+* Speed-up building JOIN result by de-virtualizing calls to `col->insertFrom()`. [#77350](https://github.com/ClickHouse/ClickHouse/pull/77350) ([Alexander Gololobov](https://github.com/davenger)).
+* Merge marks of the same part and write them to the query condition cache at one time to reduce the consumption of locks. [#77377](https://github.com/ClickHouse/ClickHouse/pull/77377) ([zhongyuankai](https://github.com/zhongyuankai)).
+* Optimize order by single nullable or low-cardinality columns. [#77789](https://github.com/ClickHouse/ClickHouse/pull/77789) ([李扬](https://github.com/taiyang-li)).
+* Disable `filesystem_cache_prefer_bigger_buffer_size` when the cache is used passively, such as for merges. [#77898](https://github.com/ClickHouse/ClickHouse/pull/77898) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Implement trivial count optimization for Iceberg. Now queries with `count()` and without any filters should be faster. Closes [#77639](https://github.com/ClickHouse/ClickHouse/issues/77639). [#78090](https://github.com/ClickHouse/ClickHouse/pull/78090) ([alesapin](https://github.com/alesapin)).
+* Support Iceberg data pruning based on lower_bound and uppert_bound values for columns. Fixes [#77638](https://github.com/ClickHouse/ClickHouse/issues/77638). [#78242](https://github.com/ClickHouse/ClickHouse/pull/78242) ([alesapin](https://github.com/alesapin)).
+* Optimize memory usage for NativeReader. [#78442](https://github.com/ClickHouse/ClickHouse/pull/78442) ([Azat Khuzhin](https://github.com/azat)).
+* Trivial optimization: do not rewrite `count(if())` to countIf if `CAST` is required. Close [#78564](https://github.com/ClickHouse/ClickHouse/issues/78564). [#78565](https://github.com/ClickHouse/ClickHouse/pull/78565) ([李扬](https://github.com/taiyang-li)).
+
+## Improvements {#improvements}
+
+* Decrease the amount of Keeper requests by eliminating the use of single `get` requests, which could have caused a significant load on Keeper with the increased number of replicas, in places where `multiRead` is available. [#56862](https://github.com/ClickHouse/ClickHouse/pull/56862) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Add support for SSL authentication with named collections for MySQL. Closes [#59111](https://github.com/ClickHouse/ClickHouse/issues/59111). [#59452](https://github.com/ClickHouse/ClickHouse/pull/59452) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Improve new analyzer infrastructure performance via storing `ColumnPtr` instead of `Field` in the `ConstantNode`. Related to [#62245](https://github.com/ClickHouse/ClickHouse/issues/62245). [#63198](https://github.com/ClickHouse/ClickHouse/pull/63198) ([Dmitry Novik](https://github.com/novikd)).
+* Reject queries when the server is overloaded. The decision is made based on the ratio of wait time (`OSCPUWaitMicroseconds`) to busy time (`OSCPUVirtualTimeMicroseconds`). The query is dropped with some probability, when this ratio is between `min_os_cpu_wait_time_ratio_to_throw` and `max_os_cpu_wait_time_ratio_to_throw` (those are query level settings). [#63206](https://github.com/ClickHouse/ClickHouse/pull/63206) ([Alexey Katsman](https://github.com/alexkats)).
+* Drop blocks as early as possible to reduce the memory requirements. [#65647](https://github.com/ClickHouse/ClickHouse/pull/65647) ([lgbo](https://github.com/lgbo-ustc)).
+* `processors_profile_log` table now has default configuration with TTL of 30 days. [#66139](https://github.com/ClickHouse/ClickHouse/pull/66139) ([Ilya Yatsishin](https://github.com/qoega)).
+* Allow creating of a `bloom_filter` index on columns with datatype DateTime64. [#66416](https://github.com/ClickHouse/ClickHouse/pull/66416) ([Yutong Xiao](https://github.com/YutSean)).
+* Introduce latency buckets and use them to track first byte read/write and connect times for S3 requests. That way we can later use gathered data to calculate approximate percentiles and adapt timeouts. [#69783](https://github.com/ClickHouse/ClickHouse/pull/69783) ([Alexey Katsman](https://github.com/alexkats)).
+* Queries passed to `Executable` storage are no longer limited to single threaded execution. [#70084](https://github.com/ClickHouse/ClickHouse/pull/70084) ([yawnt](https://github.com/yawnt)).
+* Added HTTP headers to OpenTelemetry span logs table for enhanced traceability. [#70516](https://github.com/ClickHouse/ClickHouse/pull/70516) ([jonymohajanGmail](https://github.com/jonymohajanGmail)).
+* Support writing of orc files by custom time zone, not always by `GMT` time zone. [#70615](https://github.com/ClickHouse/ClickHouse/pull/70615) ([kevinyhzou](https://github.com/KevinyhZou)).
+* Replace table functions with their `-Cluster` alternatives if parallel replicas are enabled. Fixes [#65024](https://github.com/ClickHouse/ClickHouse/issues/65024). [#70659](https://github.com/ClickHouse/ClickHouse/pull/70659) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Respect IO scheduling settings when writing backups across clouds. [#71093](https://github.com/ClickHouse/ClickHouse/pull/71093) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Reestablish connection to MySQL and Postgres dictionary replicas in the background so it wouldn't delay requests to corresponding dictionaries. [#71101](https://github.com/ClickHouse/ClickHouse/pull/71101) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Add metric alias name to system.asynchronous_metrics. [#71164](https://github.com/ClickHouse/ClickHouse/pull/71164) ([megao](https://github.com/jetgm)).
+* Refreshes of refreshable materialized views now appear in `system.query_log`. [#71333](https://github.com/ClickHouse/ClickHouse/pull/71333) ([Michael Kolupaev](https://github.com/al13n321)).
+* Evaluate parquet bloom filters and min/max indexes together. Necessary to properly support: `x = 3 or x > 5` where data = [1, 2, 4, 5]. [#71383](https://github.com/ClickHouse/ClickHouse/pull/71383) ([Arthur Passos](https://github.com/arthurpassos)).
+* Interactive metrics improvements. Fix metrics from parallel replicas not being fully displayed. Display the metrics in order of the most recent update, then lexicographically by name. Do not display stale metrics. [#71631](https://github.com/ClickHouse/ClickHouse/pull/71631) ([Julia Kartseva](https://github.com/jkartseva)).
+* Historically for some reason, the query `ALTER TABLE MOVE PARTITION TO TABLE` checked `SELECT` and `ALTER DELETE` rights instead of dedicated `ALTER_MOVE_PARTITION`. This PR makes use of this access type. For compatibility, this permission is also will be granted implicitly if `SELECT` and `ALTER DELETE` are granted, but this behavior will be removed in future releases. Closes [#16403](https://github.com/ClickHouse/ClickHouse/issues/16403). [#71632](https://github.com/ClickHouse/ClickHouse/pull/71632) ([pufit](https://github.com/pufit)).
+* Enables setting `use_hive_partitioning` by default. [#71636](https://github.com/ClickHouse/ClickHouse/pull/71636) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Throw an exception when trying to materialize a column in the sort key instead of allowing it to break the sort order. Does not solve [#71777](https://github.com/ClickHouse/ClickHouse/issues/71777), though. [#71891](https://github.com/ClickHouse/ClickHouse/pull/71891) ([Peter Nguyen](https://github.com/petern48)).
+* Allow more general join planning algorithm when hash join algorithm is enabled. [#71926](https://github.com/ClickHouse/ClickHouse/pull/71926) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Hide secrets in `EXPLAIN QUERY TREE`. [#72025](https://github.com/ClickHouse/ClickHouse/pull/72025) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Allow use of a configurable disk to store metadata files of databases and tables. The disk name can be set via `database_disk.disk` config parameter. [#72027](https://github.com/ClickHouse/ClickHouse/pull/72027) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Support parquet integer logical types on native reader. [#72105](https://github.com/ClickHouse/ClickHouse/pull/72105) ([Arthur Passos](https://github.com/arthurpassos)).
+* Make JSON output format pretty by default. Add new setting `output_format_json_pretty_print` to control it and enable it by default. [#72148](https://github.com/ClickHouse/ClickHouse/pull/72148) ([Pavel Kruglov](https://github.com/Avogar)).
+* Interactively request credentials in the browser if the default user requires a password. In previous versions, the server returned HTTP 403; now, it returns HTTP 401. [#72198](https://github.com/ClickHouse/ClickHouse/pull/72198) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* This PR converts access types `CREATE_USER`, `ALTER_USER`, `DROP_USER`, `CREATE_ROLE`, `ALTER_ROLE`, `DROP_ROLE` from global to parameterized. That means users can now grant access management grants more precise:. [#72246](https://github.com/ClickHouse/ClickHouse/pull/72246) ([pufit](https://github.com/pufit)).
+* Allow to shard names in cluster configuration. [#72276](https://github.com/ClickHouse/ClickHouse/pull/72276) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+* Support CAST and ALTER between JSON types with different parameters. [#72303](https://github.com/ClickHouse/ClickHouse/pull/72303) ([Pavel Kruglov](https://github.com/Avogar)).
+* Add the `latest_fail_error_code_name` column to `system.mutations`. We need this column to introduce a new metric on stuck mutations and use it to build graphs of the errors encountered in the cloud as well as, optionally, adding a new less-noisy alert. [#72398](https://github.com/ClickHouse/ClickHouse/pull/72398) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Reduce the amount of allocation in attaching of partitions. [#72583](https://github.com/ClickHouse/ClickHouse/pull/72583) ([Konstantin Morozov](https://github.com/k-morozov)).
+* Make max_bytes_before_external_sort limit depends on total query memory consumption (previously it was number of bytes in the sorting block for one sorting thread, now it has the same meaning as `max_bytes_before_external_group_by` - it is total limit for the whole query memory for all threads). Also one more setting added to control on disk block size - `min_external_sort_block_bytes`. [#72598](https://github.com/ClickHouse/ClickHouse/pull/72598) ([Azat Khuzhin](https://github.com/azat)).
+* Ignore memory restrictions by trace collector. [#72606](https://github.com/ClickHouse/ClickHouse/pull/72606) ([Azat Khuzhin](https://github.com/azat)).
+* Support subcolumns in MergeTree sorting key and skip indexes. [#72644](https://github.com/ClickHouse/ClickHouse/pull/72644) ([Pavel Kruglov](https://github.com/Avogar)).
+* Add server settings `dictionaries_lazy_load` and `wait_dictionaries_load_at_startup` to `system.server_settings`. [#72664](https://github.com/ClickHouse/ClickHouse/pull/72664) ([Christoph Wurm](https://github.com/cwurm)).
+* Adds setting `max_backup_bandwidth` to the list of settings that can be specified as part of `BACKUP`/`RESTORE` queries. [#72665](https://github.com/ClickHouse/ClickHouse/pull/72665) ([Christoph Wurm](https://github.com/cwurm)).
+* Parallel replicas used historical information about replica availability to improve replica selection but did not update the replica's error count when the connection was unavailable. This PR updates the replica's error count when unavailable. [#72666](https://github.com/ClickHouse/ClickHouse/pull/72666) ([zoomxi](https://github.com/zoomxi)).
+* Reducing the log level for appearing replicated parts in the ReplicatedMergeTree engine to help minimize the volume of logs generated in a replicated cluster. [#72876](https://github.com/ClickHouse/ClickHouse/pull/72876) ([mor-akamai](https://github.com/morkalfon)).
+* A lot of new features will require better code incapsulation (what relates to Iceberg metadata) and better code abstractions. [#72941](https://github.com/ClickHouse/ClickHouse/pull/72941) ([Daniil Ivanik](https://github.com/divanik)).
+* Support equal comparison for values of JSON column. [#72991](https://github.com/ClickHouse/ClickHouse/pull/72991) ([Pavel Kruglov](https://github.com/Avogar)).
+* Improve formatting of identifiers with JSON subcolumns to avoid unnecessary back quotes. [#73085](https://github.com/ClickHouse/ClickHouse/pull/73085) ([Pavel Kruglov](https://github.com/Avogar)).
+* Log `PREWHERE` conditions with `Test` level. [#73116](https://github.com/ClickHouse/ClickHouse/pull/73116) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Support SETTINGS with implicit ENGINE and mixing engine and query settings. [#73120](https://github.com/ClickHouse/ClickHouse/pull/73120) ([Raúl Marín](https://github.com/Algunenano)).
+* Write parts with level 1 if `optimize_on_insert` is enabled. It allows to use several optimizations of queries with `FINAL` for freshly written parts. [#73132](https://github.com/ClickHouse/ClickHouse/pull/73132) ([Anton Popov](https://github.com/CurtizJ)).
+* For a query like, `WHERE a[...]`, and 3. also in the configuration file, via per-connection settings `[...]`. [#74168](https://github.com/ClickHouse/ClickHouse/pull/74168) ([Christoph Wurm](https://github.com/cwurm)).
+* Change prometheus remote write response success status from 200/OK to 204/NoContent. [#74170](https://github.com/ClickHouse/ClickHouse/pull/74170) ([Michael Dempsey](https://github.com/bluestealth)).
+* Expose X-ClickHouse HTTP headers to JavaScript in the browser. It makes writing applications more convenient. [#74180](https://github.com/ClickHouse/ClickHouse/pull/74180) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* The `JSONEachRowWithProgress` format will include events with metadata, as well as totals and extremes. It also includes `rows_before_limit_at_least` and `rows_before_aggregation`. The format prints the exception properly if it arrives after partial results. The progress now includes elapsed nanoseconds. One final progress event is emitted at the end. The progress during query runtime will be printed no more frequently than the value of the `interactive_delay` setting. [#74181](https://github.com/ClickHouse/ClickHouse/pull/74181) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Hourglass will rotate smoothly in Play UI. [#74182](https://github.com/ClickHouse/ClickHouse/pull/74182) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Even if the HTTP response is compressed, send packets as soon as they arrive. This allows the browser to receive progress packets and compressed data. [#74201](https://github.com/ClickHouse/ClickHouse/pull/74201) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add ability to reload `max_remote_read_network_bandwidth_for_serve` and `max_remote_write_network_bandwidth_for_server` on fly without restart server. [#74206](https://github.com/ClickHouse/ClickHouse/pull/74206) ([Kai Zhu](https://github.com/nauu)).
+* Autodetect secure connection based on connecting to port 9440 in ClickHouse Client. [#74212](https://github.com/ClickHouse/ClickHouse/pull/74212) ([Christoph Wurm](https://github.com/cwurm)).
+* Authenticate users with username only for http_handlers (previously it requires user to put the password as well). [#74221](https://github.com/ClickHouse/ClickHouse/pull/74221) ([Azat Khuzhin](https://github.com/azat)).
+* Support for the alternative query languages PRQL and KQL was marked experimental. To use them, specify settings `allow_experimental_prql_dialect = 1` and `allow_experimental_kusto_dialect = 1`. [#74224](https://github.com/ClickHouse/ClickHouse/pull/74224) ([Robert Schulze](https://github.com/rschu1ze)).
+* Support returning the default Enum type in more aggregate functions. [#74272](https://github.com/ClickHouse/ClickHouse/pull/74272) ([Raúl Marín](https://github.com/Algunenano)).
+* In `OPTIMIZE TABLE`, it is now possible to specify keyword `FORCE` as an alternative to existing keyword `FINAL`. [#74342](https://github.com/ClickHouse/ClickHouse/pull/74342) ([Robert Schulze](https://github.com/rschu1ze)).
+* Added a merge tree setting `materialize_skip_indexes_on_merge` which suppresses the creation of skip indexes during merge. This allows users to control explicitly (via `ALTER TABLE [..] MATERIALIZE INDEX [...]`) when skip indexes are created. This can be useful if skip indexes are expensive to build (e.g. vector similarity indexes). [#74401](https://github.com/ClickHouse/ClickHouse/pull/74401) ([Robert Schulze](https://github.com/rschu1ze)).
+* Support subcolumns in default and materialized expressions. [#74403](https://github.com/ClickHouse/ClickHouse/pull/74403) ([Pavel Kruglov](https://github.com/Avogar)).
+* Optimize keeper requests in Storage(S3/Azure)Queue. [#74410](https://github.com/ClickHouse/ClickHouse/pull/74410) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add the IsServerShuttingDown metric, which is needed to trigger an alert when the server shutdown takes too much time. [#74429](https://github.com/ClickHouse/ClickHouse/pull/74429) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Added iceberg tables names to EXPLAIN. [#74485](https://github.com/ClickHouse/ClickHouse/pull/74485) ([alekseev-maksim](https://github.com/alekseev-maksim)).
+* Use up to `1000` parallel replicas by default. [#74504](https://github.com/ClickHouse/ClickHouse/pull/74504) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Provide a better error message when using RECURSIVE CTE with the old analyzer. [#74523](https://github.com/ClickHouse/ClickHouse/pull/74523) ([Raúl Marín](https://github.com/Algunenano)).
+* Optimize keeper requests in Storage(S3/Azure)Queue. [#74538](https://github.com/ClickHouse/ClickHouse/pull/74538) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Improve HTTP session reuse when reading from s3 disk ([#72401](https://github.com/ClickHouse/ClickHouse/issues/72401)). [#74548](https://github.com/ClickHouse/ClickHouse/pull/74548) ([Julian Maicher](https://github.com/jmaicher)).
+* Show extended error messages in `system.errors`. [#74574](https://github.com/ClickHouse/ClickHouse/pull/74574) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Enabled a backoff logic for all types of replicated tasks. It will provide the ability to reduce CPU usage, memory usage, and log file sizes. Added new settings `max_postpone_time_for_failed_replicated_fetches_ms`, `max_postpone_time_for_failed_replicated_merges_ms` and `max_postpone_time_for_failed_replicated_tasks_ms` which are similar to `max_postpone_time_for_failed_mutations_ms`. [#74576](https://github.com/ClickHouse/ClickHouse/pull/74576) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+* More accurate accounting for `max_joined_block_size_rows` setting for `parallel_hash` JOIN algorithm. Helps to avoid increased memory consumption compared to `hash` algorithm. [#74630](https://github.com/ClickHouse/ClickHouse/pull/74630) ([Nikita Taranov](https://github.com/nickitat)).
+* Added `dfs.client.use.datanode.hostname` libhdfs3 config option support. [#74635](https://github.com/ClickHouse/ClickHouse/pull/74635) ([Mikhail Tiukavkin](https://github.com/freshertm)).
+* Fixes Invalid: Codec 'snappy' doesn't support setting a compression level. [#74659](https://github.com/ClickHouse/ClickHouse/pull/74659) ([Arthur Passos](https://github.com/arthurpassos)).
+* Allow using password for client communication with clickhouse-keeper. This feature is not very useful if you specify proper SSL configuration for server and client, but still can be useful for some cases. Password cannot be longer than 16 characters. It's not connected with Keeper Auth model. [#74673](https://github.com/ClickHouse/ClickHouse/pull/74673) ([alesapin](https://github.com/alesapin)).
+* Allow using blob paths to calculate checksums while making a backup. [#74729](https://github.com/ClickHouse/ClickHouse/pull/74729) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Use dynamic sharding for JOIN if the JOIN key is a prefix of PK for both parts. This optimization is enabled with `query_plan_join_shard_by_pk_ranges` setting (disabled by default). [#74733](https://github.com/ClickHouse/ClickHouse/pull/74733) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Add error code for config reloader. [#74746](https://github.com/ClickHouse/ClickHouse/pull/74746) ([Garrett Thomas](https://github.com/garrettthomaskth)).
+* Added support for IPv6 addresses in MySQL and PostgreSQL table functions and engines. [#74796](https://github.com/ClickHouse/ClickHouse/pull/74796) ([Mikhail Koviazin](https://github.com/mkmkme)).
+* Parameters for the codec Gorilla will now always be saved in the table metadata in .sql file. This closes: [#70072](https://github.com/ClickHouse/ClickHouse/issues/70072). [#74814](https://github.com/ClickHouse/ClickHouse/pull/74814) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Implement short circuit optimization for `divideDecimal`. Fixes [#74280](https://github.com/ClickHouse/ClickHouse/issues/74280). [#74843](https://github.com/ClickHouse/ClickHouse/pull/74843) ([Kevin Mingtarja](https://github.com/kevinmingtarja)).
+* Improve performance of larger multi requests in Keeper. [#74849](https://github.com/ClickHouse/ClickHouse/pull/74849) ([Antonio Andelic](https://github.com/antonio2368)).
+* Now users can be specified inside the startup scripts. [#74894](https://github.com/ClickHouse/ClickHouse/pull/74894) ([pufit](https://github.com/pufit)).
+* Fetch parts in parallel in ALTER TABLE FETCH PARTITION (thread pool size is controlled with `max_fetch_partition_thread_pool_size`). [#74978](https://github.com/ClickHouse/ClickHouse/pull/74978) ([Azat Khuzhin](https://github.com/azat)).
+* Added a query ID column to `system.query_cache` (issue [#68205](https://github.com/ClickHouse/ClickHouse/issues/68205)). [#74982](https://github.com/ClickHouse/ClickHouse/pull/74982) ([NamNguyenHoai](https://github.com/NamHoaiNguyen)).
+* Enabled SSH protocol back. Fixed some critical vulnerabilities so that it is no longer possible to use custom pager or specify `server-logs-file`. Disabled the ability to pass client options through the environment variables by default (it is still possible via `ssh-server.enable_client_options_passing` in config.xml). Supported progress table, query cancellation, completion, profile events progress, stdin and `send_logs_level` option. This closes: [#74340](https://github.com/ClickHouse/ClickHouse/issues/74340). [#74989](https://github.com/ClickHouse/ClickHouse/pull/74989) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Fix formatting of exceptions using a custom format if they appear during query interpretation. In previous versions, exceptions were formatted using the default format rather than the format specified in the query. This closes [#55422](https://github.com/ClickHouse/ClickHouse/issues/55422). [#74994](https://github.com/ClickHouse/ClickHouse/pull/74994) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Implemented parsing enhancements (Sequence ID parsing: Added functionality to parse sequence identifiers in manifest files AND Avro metadata parsing: Redesigned the Avro metadata parser to be easily extendable for future enhancements). [#75010](https://github.com/ClickHouse/ClickHouse/pull/75010) ([Daniil Ivanik](https://github.com/divanik)).
+* It is allowed to cancel `ALTER TABLE ... FREEZE ...` queries with `KILL QUERY` and timeout(`max_execution_time`). [#75016](https://github.com/ClickHouse/ClickHouse/pull/75016) ([Kirill](https://github.com/kirillgarbar)).
+* Add support for `groupUniqArrayArrayMap` as `SimpleAggregateFunction`. [#75034](https://github.com/ClickHouse/ClickHouse/pull/75034) ([Miel Donkers](https://github.com/mdonkers)).
+* Support prepared statements in postgres wire protocol. [#75035](https://github.com/ClickHouse/ClickHouse/pull/75035) ([scanhex12](https://github.com/scanhex12)).
+* Hide catalog credential settings in database engine `Iceberg`. Closes [#74559](https://github.com/ClickHouse/ClickHouse/issues/74559). [#75080](https://github.com/ClickHouse/ClickHouse/pull/75080) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Added a few missing features into BuzzHouse: `ILIKE` and `REGEXP` operators, `<=>` and `IS NOT DISTINCT FROM`. [#75168](https://github.com/ClickHouse/ClickHouse/pull/75168) ([Pedro Ferreira](https://github.com/PedroTadim)).
+* The setting `min_chunk_bytes_for_parallel_parsing` cannot be zero anymore. This fixes: [#71110](https://github.com/ClickHouse/ClickHouse/issues/71110). [#75239](https://github.com/ClickHouse/ClickHouse/pull/75239) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* `intExp2` / `intExp10`: Define undefined behaviour: return 0 for too small argument, `18446744073709551615` for too big argument, throw exception if `nan`. [#75312](https://github.com/ClickHouse/ClickHouse/pull/75312) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Support `s3.endpoint` natively from catalog config in `DatabaseIceberg`. Closes [#74558](https://github.com/ClickHouse/ClickHouse/issues/74558). [#75375](https://github.com/ClickHouse/ClickHouse/pull/75375) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Don't fail silently if user executing `SYSTEM DROP REPLICA` doesn't have enough permissions. [#75377](https://github.com/ClickHouse/ClickHouse/pull/75377) ([Bharat Nallan](https://github.com/bharatnc)).
+* Add a ProfileEvent about the number of times any of system logs has failed to flush. [#75466](https://github.com/ClickHouse/ClickHouse/pull/75466) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add check and logging for decrypting and decompressing. [#75471](https://github.com/ClickHouse/ClickHouse/pull/75471) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Added support for the micro sign (U+00B5) in the `parseTimeDelta` function. Now both the micro sign (U+00B5) and the Greek letter mu (U+03BC) are recognized as valid representations for microseconds, aligning ClickHouse's behavior with Go's implementation ([see time.go](https://github.com/golang/go/blob/ad7b46ee4ac1cee5095d64b01e8cf7fcda8bee5e/src/time/time.go#L983C19-L983C20) and [time/format.go](https://github.com/golang/go/blob/ad7b46ee4ac1cee5095d64b01e8cf7fcda8bee5e/src/time/format.go#L1608-L1609)). [#75472](https://github.com/ClickHouse/ClickHouse/pull/75472) ([Vitaly Orlov](https://github.com/orloffv)).
+* Replace server setting (`send_settings_to_client`) with client setting (`apply_settings_from_server`) that controls whether client-side code (e.g. parsing INSERT data and formatting query output) should use settings from server's `users.xml` and user profile. Otherwise only settings from client command line, session, and the query are used. Note that this only applies to native client (not e.g. HTTP), and doesn't apply to most of query processing (which happens on the server). [#75478](https://github.com/ClickHouse/ClickHouse/pull/75478) ([Michael Kolupaev](https://github.com/al13n321)).
+* Keeper improvement: disable digest calculation when committing to in-memory storage for better performance. It can be enabled with `keeper_server.digest_enabled_on_commit` config. Digest is still calculated when preprocessing requests. [#75490](https://github.com/ClickHouse/ClickHouse/pull/75490) ([Antonio Andelic](https://github.com/antonio2368)).
+* Push down filter expression from JOIN ON when possible. [#75536](https://github.com/ClickHouse/ClickHouse/pull/75536) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Better error messages at syntax errors. Previously, if the query was too large, and the token whose length exceeds the limit is a very large string literal, the message about the reason was lost in the middle of two examples of this very long token. Fix the issue when a query with UTF-8 was cut incorrectly in the error message. Fix excessive quoting of query fragments. This closes [#75473](https://github.com/ClickHouse/ClickHouse/issues/75473). [#75561](https://github.com/ClickHouse/ClickHouse/pull/75561) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add profile events in storage `S3(Azure)Queue`. [#75618](https://github.com/ClickHouse/ClickHouse/pull/75618) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Disable sending settings from server to client (`send_settings_to_client=false`) for compatibility (This feature will be re-implemented as client setting later for better usability). [#75648](https://github.com/ClickHouse/ClickHouse/pull/75648) ([Michael Kolupaev](https://github.com/al13n321)).
+* Add a config `memory_worker_correct_memory_tracker` to enable correction of internal memory tracker with information from different source read in the background thread periodically. [#75714](https://github.com/ClickHouse/ClickHouse/pull/75714) ([Antonio Andelic](https://github.com/antonio2368)).
+* Use Analyzer in PrometheusRemoteReadProtocol. [#75729](https://github.com/ClickHouse/ClickHouse/pull/75729) ([Dmitry Novik](https://github.com/novikd)).
+* We have support for gauge/counter metric types. However, they are insufficient for some metrics (e.g., the response times of requests to the keeper), so support for the histogram metric type is needed. The interface closely mirrors the Prometheus client, where you simply call `observe(value)` to increment the counter in the bucket corresponding to the value. The histogram metrics are exposed via system.histogram_metrics. [#75736](https://github.com/ClickHouse/ClickHouse/pull/75736) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Add column `normalized_query_hash` into `system.processes`. Note: while it can be easily calculated on the fly with the `normalizedQueryHash` function, this is needed to prepare for subsequent changes. [#75756](https://github.com/ClickHouse/ClickHouse/pull/75756) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Querying `system.tables` will not throw even if there is a `Merge` table created over a database that no longer exists. Remove the `getTotalRows` method from `Hive` tables, because we don't allow it to do complex work. [#75772](https://github.com/ClickHouse/ClickHouse/pull/75772) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Web UI now has interactive database navigation. [#75777](https://github.com/ClickHouse/ClickHouse/pull/75777) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Allow to combine read-only and read-write disks in storage policy (as multiple volumes, or multiple disks). This allows to read data from the entire volume, while inserts will prefer the writable disk (i.e. Copy-on-Write storage policy). [#75862](https://github.com/ClickHouse/ClickHouse/pull/75862) ([Azat Khuzhin](https://github.com/azat)).
+* Remove trace_id from default ORDER BY for system.opentelemetry_span_log. [#75907](https://github.com/ClickHouse/ClickHouse/pull/75907) ([Azat Khuzhin](https://github.com/azat)).
+* Encryption (XML attribute `encrypted_by`) can now be applied to any configuration file (config.xml, users.xml, nested configuration files). Previously, it worked only for the top-level config.xml file. [#75911](https://github.com/ClickHouse/ClickHouse/pull/75911) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
+* Store start_time/end_time for Backups with microseconds. [#75929](https://github.com/ClickHouse/ClickHouse/pull/75929) ([Aleksandr Musorin](https://github.com/AVMusorin)).
+* Add `MemoryTrackingUncorrected` metric showing value of internal global memory tracker which is not corrected by RSS. [#75935](https://github.com/ClickHouse/ClickHouse/pull/75935) ([Antonio Andelic](https://github.com/antonio2368)).
+* Calculate columns and indices sizes lazily in MergeTree. [#75938](https://github.com/ClickHouse/ClickHouse/pull/75938) ([Pavel Kruglov](https://github.com/Avogar)).
+* Convert join to in subquery if output column is tied to the left table, need a uniqueness step at first, so disabled by default until the step is added later. [#75942](https://github.com/ClickHouse/ClickHouse/pull/75942) ([Shichao Jin](https://github.com/jsc0218)).
+* Added a server setting `throw_on_unknown_workload` that allows to choose behavior on query with `workload` setting set to unknown value: either allow unlimited access (default) or throw a `RESOURCE_ACCESS_DENIED` error. It is useful to force all queries to use workload scheduling. [#75999](https://github.com/ClickHouse/ClickHouse/pull/75999) ([Sergei Trifonov](https://github.com/serxa)).
+* Make the new, experimental Kafka table engine fully respect Keeper feature flags. [#76004](https://github.com/ClickHouse/ClickHouse/pull/76004) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Don't rewrite subcolumns to getSubcolumn in ARRAY JOIN if not necessary. [#76018](https://github.com/ClickHouse/ClickHouse/pull/76018) ([Pavel Kruglov](https://github.com/Avogar)).
+* Retry coordination errors when loading tables. [#76020](https://github.com/ClickHouse/ClickHouse/pull/76020) ([Alexander Tokmakov](https://github.com/tavplubix)).
+* Improve the `system.warnings` table and add some dynamic warning messages that can be added, updated or removed. [#76029](https://github.com/ClickHouse/ClickHouse/pull/76029) ([Bharat Nallan](https://github.com/bharatnc)).
+* Support flushing individual logs in SYSTEM FLUSH LOGS. [#76132](https://github.com/ClickHouse/ClickHouse/pull/76132) ([Raúl Marín](https://github.com/Algunenano)).
+* Improved the `/binary` server's page. Using the Hilbert curve instead of the Morton curve. Display 512 MB worth of addresses in the square, which fills the square better (in previous versions, addresses fill only half of the square). Color addresses closer to the library name rather than the function name. Allow scrolling a bit more outside of the area. [#76192](https://github.com/ClickHouse/ClickHouse/pull/76192) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* This PR makes it impossible to run a query `ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES` because all `DROP` operations should come first in the order. [#76242](https://github.com/ClickHouse/ClickHouse/pull/76242) ([pufit](https://github.com/pufit)).
+* Various enhancements for SYNC REPLICA (better error messages, better tests, sanity checks). [#76307](https://github.com/ClickHouse/ClickHouse/pull/76307) ([Azat Khuzhin](https://github.com/azat)).
+* Retry ON CLUSTER queries in case of TOO_MANY_SIMULTANEOUS_QUERIES. [#76352](https://github.com/ClickHouse/ClickHouse/pull/76352) ([Patrick Galbraith](https://github.com/CaptTofu)).
+* Changed the default value of `output_format_pretty_max_rows` from 10000 to 1000. I think it is better for usability. [#76407](https://github.com/ClickHouse/ClickHouse/pull/76407) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Support for a refresh in readonly MergeTree tables. [#76467](https://github.com/ClickHouse/ClickHouse/pull/76467) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Use correct fallback when multipart copy to S3 fails during backup with Access Denied. Multi part copy can generate Access Denied error when backup is done between buckets that have different credentials. [#76515](https://github.com/ClickHouse/ClickHouse/pull/76515) ([Antonio Andelic](https://github.com/antonio2368)).
+* Faster ClickHouse Servers shutdown (get rid of 2.5sec delay). [#76550](https://github.com/ClickHouse/ClickHouse/pull/76550) ([Azat Khuzhin](https://github.com/azat)).
+* Add query_id to system.errors. Related ticket [#75815](https://github.com/ClickHouse/ClickHouse/issues/75815). [#76581](https://github.com/ClickHouse/ClickHouse/pull/76581) ([Vladimir Baikov](https://github.com/bkvvldmr)).
+* Upgraded librdkafka to version 2.8.0 and improved the shutdown sequence for Kafka tables, reducing delays during table drops and server restarts. The `engine=Kafka` no longer explicitly leaves the consumer group when a table is dropped. Instead, the consumer remains in the group until it is automatically removed after `session_timeout_ms` (default: 45 seconds) of inactivity. [#76621](https://github.com/ClickHouse/ClickHouse/pull/76621) ([filimonov](https://github.com/filimonov)).
+* Fix validation of s3 request settings. [#76658](https://github.com/ClickHouse/ClickHouse/pull/76658) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Avoid excess allocation in readbufferfroms3 and other remote reading buffers, reduce their memory consumption in half. [#76692](https://github.com/ClickHouse/ClickHouse/pull/76692) ([Sema Checherinda](https://github.com/CheSema)).
+* Support JSON type and subcolumns reading from View. [#76903](https://github.com/ClickHouse/ClickHouse/pull/76903) ([Pavel Kruglov](https://github.com/Avogar)).
+* Adding Support for Converting UInt128 to IPv6. This allows the `bitAnd` operation and arithmatics for IPv6 and conversion back to IPv6. Closes [#76752](https://github.com/ClickHouse/ClickHouse/issues/76752). This allows the result from `bitAnd` operation on IPv6 to be converted back to IPv6, as well. See: https://github.com/ClickHouse/ClickHouse/pull/57707. [#76928](https://github.com/ClickHouse/ClickHouse/pull/76928) ([Muzammil Abdul Rehman](https://github.com/muzammilar)).
+* System tables like `server_settings` or `settings` have a `default` value column which is convenient. only `merge_tree_settings` and `replicated_merge_tree_settings` do not have that column enabled. [#76942](https://github.com/ClickHouse/ClickHouse/pull/76942) ([Diego Nieto](https://github.com/lesandie)).
+* Don't parse special Bool values in text formats inside Variant type by default. It can be enabled using setting `allow_special_bool_values_inside_variant`. [#76974](https://github.com/ClickHouse/ClickHouse/pull/76974) ([Pavel Kruglov](https://github.com/Avogar)).
+* Support configurable per task waiting time of low priority query in session level and in server level. [#77013](https://github.com/ClickHouse/ClickHouse/pull/77013) ([VicoWu](https://github.com/VicoWu)).
+* Added `ProfileEvents::QueryPreempted`, which has the same logic as `CurrentMetrics::QueryPreempted`. [#77015](https://github.com/ClickHouse/ClickHouse/pull/77015) ([VicoWu](https://github.com/VicoWu)).
+* Previously database replicated might print credentials specified in a query to logs. This behaviour is fixed. This closes: [#77123](https://github.com/ClickHouse/ClickHouse/issues/77123). [#77133](https://github.com/ClickHouse/ClickHouse/pull/77133) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Bump zstd from 1.5.5 to 1.5.7 which has pretty [good performance improvements](https://github.com/facebook/zstd/releases/tag/v1.5.7). [#77137](https://github.com/ClickHouse/ClickHouse/pull/77137) ([Pradeep Chhetri](https://github.com/chhetripradeep)).
+* Allow ALTER TABLE DROP PARTITION for plain_rewritable disk. [#77138](https://github.com/ClickHouse/ClickHouse/pull/77138) ([Julia Kartseva](https://github.com/jkartseva)).
+* Add the ability to randomly sleep up to 500ms independent of part sizes before merges/mutations execution in case of zero-copy replication. [#77165](https://github.com/ClickHouse/ClickHouse/pull/77165) ([Alexey Katsman](https://github.com/alexkats)).
+* Support atomic rename when `TRUNCATE` is used with `INTO OUTFILE`. Resolves [#70323](https://github.com/ClickHouse/ClickHouse/issues/70323). [#77181](https://github.com/ClickHouse/ClickHouse/pull/77181) ([Onkar Deshpande](https://github.com/onkar)).
+* Use FixedString for PostgreSQL's CHARACTER, CHAR and BPCHAR. [#77304](https://github.com/ClickHouse/ClickHouse/pull/77304) ([Pablo Marcos](https://github.com/pamarcos)).
+* Allow to explicitly specify metadata file to read for Iceberg with storage/table function setting `iceberg_metadata_file_path `. Fixes [#47412](https://github.com/ClickHouse/ClickHouse/issues/47412). [#77318](https://github.com/ClickHouse/ClickHouse/pull/77318) ([alesapin](https://github.com/alesapin)).
+* Support using a remote disk for databases to store metadata files. [#77365](https://github.com/ClickHouse/ClickHouse/pull/77365) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Implement comparison for values of JSON data type. Now JSON objects can be compared similarly to Maps. [#77397](https://github.com/ClickHouse/ClickHouse/pull/77397) ([Pavel Kruglov](https://github.com/Avogar)).
+* Change reverted. [#77399](https://github.com/ClickHouse/ClickHouse/pull/77399) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Backup/restore setting `allow_s3_native_copy` now supports value three possible values: - `False` - s3 native copy will not be used; - `True` (old default) - ClickHouse will try s3 native copy first, if it fails then fallback to the reading+writing approach; - `'auto'` (new default) - ClickHouse will compare the source and destination credentials first. If they are same, ClickHouse will try s3 native copy and then may fallback to the reading+writing approach. If they are different, ClickHouse will go directly to the reading+writing approach. [#77401](https://github.com/ClickHouse/ClickHouse/pull/77401) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Support ALTER TABLE ... ATTACH|DETACH|MOVE|REPLACE PARTITION for the plain_rewritable disk. [#77406](https://github.com/ClickHouse/ClickHouse/pull/77406) ([Julia Kartseva](https://github.com/jkartseva)).
+* Skipping index cache is reverted. [#77447](https://github.com/ClickHouse/ClickHouse/pull/77447) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Reduce memory usage during prefetches of JSON column in Wide parts. [#77640](https://github.com/ClickHouse/ClickHouse/pull/77640) ([Pavel Kruglov](https://github.com/Avogar)).
+* Support aws session token and environment credentials usage in delta kernel for DeltaLake table engine. [#77661](https://github.com/ClickHouse/ClickHouse/pull/77661) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Support query parameters inside `additional_table_filters` setting. After the change, the following query would succeed:. [#77680](https://github.com/ClickHouse/ClickHouse/pull/77680) ([wxybear](https://github.com/wxybear)).
+* User-defined functions (UDFs) can now be marked as deterministic via a new tag in their XML definition. Also, the query cache now checks if UDFs called within a query are deterministic. If this is the case, it caches the query result. (Issue [#59988](https://github.com/ClickHouse/ClickHouse/issues/59988)). [#77769](https://github.com/ClickHouse/ClickHouse/pull/77769) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
+* Added Buffer table engine parameters validation. [#77840](https://github.com/ClickHouse/ClickHouse/pull/77840) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Add config `enable_hdfs_pread` to enable or disable hdfs pread. [#77885](https://github.com/ClickHouse/ClickHouse/pull/77885) ([kevinyhzou](https://github.com/KevinyhZou)).
+* Add profile events for number of zookeeper 'multi' read and write requests. [#77888](https://github.com/ClickHouse/ClickHouse/pull/77888) ([JackyWoo](https://github.com/JackyWoo)).
+* Allow creating and inserting into temp table when disable_insertion_and_mutation is on. [#77901](https://github.com/ClickHouse/ClickHouse/pull/77901) ([Xu Jia](https://github.com/XuJia0210)).
+* Decrease max_insert_delayed_streams_for_parallel_write (to 100). [#77919](https://github.com/ClickHouse/ClickHouse/pull/77919) ([Azat Khuzhin](https://github.com/azat)).
+* Add ability to configure number of columns that merges can flush in parallel using `max_merge_delayed_streams_for_parallel_write` (this should reduce memory usage for vertical merges to S3 about 25x times). [#77922](https://github.com/ClickHouse/ClickHouse/pull/77922) ([Azat Khuzhin](https://github.com/azat)).
+* Fix year parsing in joda syntax like 'yyy'. [#77973](https://github.com/ClickHouse/ClickHouse/pull/77973) ([李扬](https://github.com/taiyang-li)).
+* Attaching parts of MergeTree tables will be performed in their block order, which is important for special merging algorithms, such as ReplacingMergeTree. This closes [#71009](https://github.com/ClickHouse/ClickHouse/issues/71009). [#77976](https://github.com/ClickHouse/ClickHouse/pull/77976) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Query masking rules are now able to throw a LOGICAL_ERROR in case if the match happened. This will help to check if pre-defined password is leaking anywhere in logs. [#78094](https://github.com/ClickHouse/ClickHouse/pull/78094) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Added column `index_length_column` to `information_schema.tables` for better compatibility with MySQL. [#78119](https://github.com/ClickHouse/ClickHouse/pull/78119) ([Paweł Zakrzewski](https://github.com/KrzaQ)).
+* Introduce two new metrics: `TotalMergeFailures` and `NonAbortedMergeFailures`. These metrics are needed to detect the cases where too many merges fail within a short period. [#78150](https://github.com/ClickHouse/ClickHouse/pull/78150) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Fix incorrect S3 uri parsing when key is not specified on path style. [#78185](https://github.com/ClickHouse/ClickHouse/pull/78185) ([Arthur Passos](https://github.com/arthurpassos)).
+* Fix incorrect values of `BlockActiveTime`, `BlockDiscardTime`, `BlockWriteTime`, `BlockQueueTime`, and `BlockReadTime` asynchronous metrics (before the change 1 second was incorrectly reported as 0.001). [#78211](https://github.com/ClickHouse/ClickHouse/pull/78211) ([filimonov](https://github.com/filimonov)).
+* Respect `loading_retries` limit for errors during push to materialized view for StorageS3(Azure)Queue. Before that such errors were retried indefinitely. [#78313](https://github.com/ClickHouse/ClickHouse/pull/78313) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* In StorageDeltaLake with delta-kernel-rs implementation, fix performance and progress bar. [#78368](https://github.com/ClickHouse/ClickHouse/pull/78368) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Vector similarity index could over-allocate main memory by up to 2x. This fix reworks the memory allocation strategy, reducing the memory consumption and improving the effectiveness of the vector similarity index cache. (issue [#78056](https://github.com/ClickHouse/ClickHouse/issues/78056)). [#78394](https://github.com/ClickHouse/ClickHouse/pull/78394) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Introduce a setting `schema_type` for `system.metric_log` table with schema type. There are three allowed schemas: `wide` -- current schema, each metric/event in a separate column (most effective for reads of separate columns), `transposed` -- similar to `system.asynchronous_metric_log`, metrics/events are stored as rows, and the most interesting `transposed_with_wide_view` -- create underlying table with `transposed` schema, but also introduce a view with `wide` schema which translates queries to underlying table. In `transposed_with_wide_view` subsecond resolution for view is not supported, `event_time_microseconds` is just an alias for backward compatibility. [#78412](https://github.com/ClickHouse/ClickHouse/pull/78412) ([alesapin](https://github.com/alesapin)).
+* Support `include`, `from_env`, `from_zk` for runtime disks. Closes [#78177](https://github.com/ClickHouse/ClickHouse/issues/78177). [#78470](https://github.com/ClickHouse/ClickHouse/pull/78470) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add several convenient ways to resolve root metadata.json file in an iceberg table function and engine. Closes [#78455](https://github.com/ClickHouse/ClickHouse/issues/78455). [#78475](https://github.com/ClickHouse/ClickHouse/pull/78475) ([Daniil Ivanik](https://github.com/divanik)).
+* Support partition pruning in delta lake. [#78486](https://github.com/ClickHouse/ClickHouse/pull/78486) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Support password based auth in SSH protocol in ClickHouse. [#78586](https://github.com/ClickHouse/ClickHouse/pull/78586) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Add a dynamic warning to the `system.warnings` table for long running mutations. [#78658](https://github.com/ClickHouse/ClickHouse/pull/78658) ([Bharat Nallan](https://github.com/bharatnc)).
+* Drop connections if the CPU is massively overloaded. The decision is made based on the ratio of wait time (`OSCPUWaitMicroseconds`) to busy time (`OSCPUVirtualTimeMicroseconds`). The query is dropped with some probability, when this ratio is between `min_os_cpu_wait_time_ratio_to_drop_connection` and `max_os_cpu_wait_time_ratio_to_drop_connection`. [#78778](https://github.com/ClickHouse/ClickHouse/pull/78778) ([Alexey Katsman](https://github.com/alexkats)).
+* Allow empty value on hive partitioning. [#78816](https://github.com/ClickHouse/ClickHouse/pull/78816) ([Arthur Passos](https://github.com/arthurpassos)).
+* Fix `IN` clause type coercion for `BFloat16` (i.e. `SELECT toBFloat16(1) IN [1, 2, 3];` now returns `1`). Closes [#78754](https://github.com/ClickHouse/ClickHouse/issues/78754). [#78839](https://github.com/ClickHouse/ClickHouse/pull/78839) ([Raufs Dunamalijevs](https://github.com/rienath)).
+* Do not check parts on other disks for MergeTree if disk= is set. [#78855](https://github.com/ClickHouse/ClickHouse/pull/78855) ([Azat Khuzhin](https://github.com/azat)).
+* Make data types in `used_data_type_families` in `system.query_log` canonical. [#78972](https://github.com/ClickHouse/ClickHouse/pull/78972) ([Kseniia Sumarokova](https://github.com/kssenii)).
+
+## Bug Fix (user-visible misbehavior in an official stable release) {#bug-fix}
+
+* Fix cannot create SEQUENTIAL node with keeper-client. [#64177](https://github.com/ClickHouse/ClickHouse/pull/64177) ([Duc Canh Le](https://github.com/canhld94)).
+* Fix identifier resolution from parent scopes. Allow the use of aliases to expressions in the WITH clause. Fixes [#58994](https://github.com/ClickHouse/ClickHouse/issues/58994). Fixes [#62946](https://github.com/ClickHouse/ClickHouse/issues/62946). Fixes [#63239](https://github.com/ClickHouse/ClickHouse/issues/63239). Fixes [#65233](https://github.com/ClickHouse/ClickHouse/issues/65233). Fixes [#71659](https://github.com/ClickHouse/ClickHouse/issues/71659). Fixes [#71828](https://github.com/ClickHouse/ClickHouse/issues/71828). Fixes [#68749](https://github.com/ClickHouse/ClickHouse/issues/68749). [#66143](https://github.com/ClickHouse/ClickHouse/pull/66143) ([Dmitry Novik](https://github.com/novikd)).
+* Fix incorrect character counting in PositionImpl::vectorVector. [#71003](https://github.com/ClickHouse/ClickHouse/pull/71003) ([思维](https://github.com/heymind)).
+* Fix negate function monotonicity. In previous versions, the query `select * from a where -x = -42;` where `x` is the primary key, can return a wrong result. [#71440](https://github.com/ClickHouse/ClickHouse/pull/71440) ([Michael Kolupaev](https://github.com/al13n321)).
+* `RESTORE` operations for access entities required more permission than necessary because of unhandled partial revokes. This PR fixes the issue. Closes [#71853](https://github.com/ClickHouse/ClickHouse/issues/71853). [#71958](https://github.com/ClickHouse/ClickHouse/pull/71958) ([pufit](https://github.com/pufit)).
+* Avoid pause after `ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE`. Retrieve correct settings for background task scheduling. [#72024](https://github.com/ClickHouse/ClickHouse/pull/72024) ([Aleksei Filatov](https://github.com/aalexfvk)).
+* Fix empty tuple handling in arrayIntersect. This fixes [#72578](https://github.com/ClickHouse/ClickHouse/issues/72578). [#72581](https://github.com/ClickHouse/ClickHouse/pull/72581) ([Amos Bird](https://github.com/amosbird)).
+* Fix handling of empty tuples in some input and output formats (e.g. Parquet, Arrow). [#72616](https://github.com/ClickHouse/ClickHouse/pull/72616) ([Michael Kolupaev](https://github.com/al13n321)).
+* Column-level GRANT SELECT/INSERT statements on wildcard databases/tables now throw an error. [#72646](https://github.com/ClickHouse/ClickHouse/pull/72646) ([Johann Gan](https://github.com/johanngan)).
+* Fix the situation when a user can't run `REVOKE ALL ON *.*` because of implicit grants in the target access entity. [#72872](https://github.com/ClickHouse/ClickHouse/pull/72872) ([pufit](https://github.com/pufit)).
+* Fix stuck while processing pending batch for async distributed INSERT (due to i.e. `No such file or directory`). [#72939](https://github.com/ClickHouse/ClickHouse/pull/72939) ([Azat Khuzhin](https://github.com/azat)).
+* Add support for Azure SAS Tokens. [#72959](https://github.com/ClickHouse/ClickHouse/pull/72959) ([Azat Khuzhin](https://github.com/azat)).
+* Fix positive timezone formatting of formatDateTime scalar function. [#73091](https://github.com/ClickHouse/ClickHouse/pull/73091) ([ollidraese](https://github.com/ollidraese)).
+* Fix to correctly reflect source port when connection made through PROXYv1 and `auth_use_forwarded_address` is set - previously proxy port was incorrectly used. Add `currentQueryID()` function. [#73095](https://github.com/ClickHouse/ClickHouse/pull/73095) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Propagate format settings to NativeWriter in TCPHandler, so settings like `output_format_native_write_json_as_string` are applied correctly. [#73179](https://github.com/ClickHouse/ClickHouse/pull/73179) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix reading JSON sub-object subcolumns with incorrect prefix. [#73182](https://github.com/ClickHouse/ClickHouse/pull/73182) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix crash in StorageObjectStorageQueue. [#73274](https://github.com/ClickHouse/ClickHouse/pull/73274) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix rare crash in refreshable materialized view during server shutdown. [#73323](https://github.com/ClickHouse/ClickHouse/pull/73323) ([Michael Kolupaev](https://github.com/al13n321)).
+* The `%f` placeholder of function `formatDateTime` now unconditionally generates six (sub-second) digits. This makes the behavior compatible with MySQL `DATE_FORMAT` function. The previous behavior can be restored using setting `formatdatetime_f_prints_scale_number_of_digits = 1`. [#73324](https://github.com/ClickHouse/ClickHouse/pull/73324) ([ollidraese](https://github.com/ollidraese)).
+* Improved datetime conversion during index analysis by enforcing saturating behavior for implicit Date to DateTime conversions. This resolves potential index analysis inaccuracies caused by datetime range limitations. This fixes [#73307](https://github.com/ClickHouse/ClickHouse/issues/73307). It also fixes explicit `toDateTime` conversion when `date_time_overflow_behavior = 'ignore'` which is the default value. [#73326](https://github.com/ClickHouse/ClickHouse/pull/73326) ([Amos Bird](https://github.com/amosbird)).
+* Fixed filtering by `_etag` column while reading from `s3` storage and table function. [#73353](https://github.com/ClickHouse/ClickHouse/pull/73353) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix `Not-ready Set is passed as the second argument for function 'in'` error when `IN (subquery)` is used in `JOIN ON` expression, with the old analyzer. [#73382](https://github.com/ClickHouse/ClickHouse/pull/73382) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix preparing for squashin for Dynamic and JSON columns. Previously in some cases new types could be inserted into shared variant/shared data even when the limit on types/paths is not reached. [#73388](https://github.com/ClickHouse/ClickHouse/pull/73388) ([Pavel Kruglov](https://github.com/Avogar)).
+* Check for corrupted sizes during types binary decoding to avoid too big allocations. [#73390](https://github.com/ClickHouse/ClickHouse/pull/73390) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fixed a logical error when reading from single-replica cluster with parallel replicas enabled. [#73403](https://github.com/ClickHouse/ClickHouse/pull/73403) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix ObjectStorageQueue with ZooKeeper and older Keeper. [#73420](https://github.com/ClickHouse/ClickHouse/pull/73420) ([Antonio Andelic](https://github.com/antonio2368)).
+* Implements fix, needed to enable hive partitioning by default. [#73479](https://github.com/ClickHouse/ClickHouse/pull/73479) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix data race when creating vector similarity index. [#73517](https://github.com/ClickHouse/ClickHouse/pull/73517) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fixes segfault when the source of the dictionary contains a function with wrong data. [#73535](https://github.com/ClickHouse/ClickHouse/pull/73535) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix retries on failed insert in storage S3(Azure)Queue. Closes [#70951](https://github.com/ClickHouse/ClickHouse/issues/70951). [#73546](https://github.com/ClickHouse/ClickHouse/pull/73546) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fixed error in function `tupleElement` which may appear in some cases for tuples with `LowCardinality` elelments and enabled setting `optimize_functions_to_subcolumns`. [#73548](https://github.com/ClickHouse/ClickHouse/pull/73548) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix parsing enum glob followed by range one. Fixes [#73473](https://github.com/ClickHouse/ClickHouse/issues/73473). [#73569](https://github.com/ClickHouse/ClickHouse/pull/73569) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Fixed parallel_replicas_for_non_replicated_merge_tree being ignored in subqueries for non-replicated tables. [#73584](https://github.com/ClickHouse/ClickHouse/pull/73584) ([Igor Nikonov](https://github.com/devcrafter)).
+* Fix for `std::logical_error` thrown when a task cannot be scheduled. Found in stress tests. Example stacktrace: `2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:.` [#73629](https://github.com/ClickHouse/ClickHouse/pull/73629) ([Alexander Gololobov](https://github.com/davenger)).
+* Do not interpret queries in `EXPLAIN SYNTAX` to avoid logical errors with incorrect processing stage for distributed queries. Fixes [#65205](https://github.com/ClickHouse/ClickHouse/issues/65205). [#73634](https://github.com/ClickHouse/ClickHouse/pull/73634) ([Dmitry Novik](https://github.com/novikd)).
+* Fix possible data inconsistency in Dynamic column. Fixes possible logical error `Nested columns sizes are inconsistent with local_discriminators column size`. [#73644](https://github.com/ClickHouse/ClickHouse/pull/73644) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fixed `NOT_FOUND_COLUMN_IN_BLOCK` in queries with `FINAL` and `SAMPLE`. Fixed incorrect result in selects with `FINAL` from `CollapsingMergeTree` and enabled optimizations of `FINAL` . [#73682](https://github.com/ClickHouse/ClickHouse/pull/73682) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix crash in LIMIT BY COLUMNS. [#73686](https://github.com/ClickHouse/ClickHouse/pull/73686) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix the bug when the normal projection is forced to use, and query is exactly the same as the projection defined, but the projection is not selected and thus error is prompted. [#73700](https://github.com/ClickHouse/ClickHouse/pull/73700) ([Shichao Jin](https://github.com/jsc0218)).
+* Fix deserialization of Dynamic/Object structure. It could lead to CANNOT_READ_ALL_DATA exceptions. [#73767](https://github.com/ClickHouse/ClickHouse/pull/73767) ([Pavel Kruglov](https://github.com/Avogar)).
+* Skip `metadata_version.txt` in while restoring parts from a backup. [#73768](https://github.com/ClickHouse/ClickHouse/pull/73768) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Fix [#73737](https://github.com/ClickHouse/ClickHouse/issues/73737). [#73775](https://github.com/ClickHouse/ClickHouse/pull/73775) ([zhanglistar](https://github.com/zhanglistar)).
+* Fixes [#72078](https://github.com/ClickHouse/ClickHouse/issues/72078) ( S3 Express Support was broken ). [#73777](https://github.com/ClickHouse/ClickHouse/pull/73777) ([Sameer Tamsekar](https://github.com/stamsekar)).
+* Allow merging of rows with invalid sign column values in CollapsingMergeTree tables. [#73864](https://github.com/ClickHouse/ClickHouse/pull/73864) ([Christoph Wurm](https://github.com/cwurm)).
+* Fix the following error ``` Row 1: ────── hostname: c-test-wy-37-server-nlkyjyb-0.c-test-wy-37-server-headless.ns-test-wy-37.svc.cluster.local type: ExceptionWhileProcessing event_date: 2024-12-23 event_time: 2024-12-23 16:21:19 event_time_microseconds: 2024-12-23 16:21:19.824624 query_start_time: 2024-12-23 16:21:19 query_start_time_microseconds: 2024-12-23 16:21:19.747142 query_duration_ms: 77 read_rows: 1 read_bytes: 134 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 7824 current_database: default query: CREATE DATABASE db0 formatted_query: normalized_query_hash: 7820917191074023511 -- 7.82 quintillion query_kind: Create databases: ['db0'] tables: [] columns: [] partitions: [] projections: [] views: [] exception_code: 170 exception: Code: 170. DB::Exception: Bad get: has Null, requested Int64: While executing DDLOnClusterQueryStatus. (BAD_GET) (version 25.1.1.19134 (official build)) stack_trace: 0. ./build_docker/./src/Common/Exception.cpp:107: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000da5e53b 1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x00000000088aca4c 2. DB::Exception::Exception>, std::basic_string_view>>(int, FormatStringHelperImpl>>::type, std::type_identity>>::type>, std::basic_string_view>&&, std::basic_string_view>&&) @ 0x00000000088bae8b 3. auto& DB::Field::safeGet() & @ 0x0000000008a3c748 4. ./src/Core/Field.h:484: DB::ColumnVector::insert(DB::Field const&) @ 0x0000000012e44c0f 5. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:53: DB::DDLOnClusterQueryStatusSource::generateChunkWithUnfinishedHosts() const @ 0x0000000012a40214 6. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:104: DB::DDLOnClusterQueryStatusSource::handleTimeoutExceeded() @ 0x0000000012a41640 7. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:109: DB::DDLOnClusterQueryStatusSource::stopWaitingOfflineHosts() @ 0x0000000012a41be9 8. ./build_docker/./src/Interpreters/DistributedQueryStatusSource.cpp:182: DB::DistributedQueryStatusSource::generate() @ 0x0000000011feb3bf 9. ./build_docker/./src/Processors/ISource.cpp:139: DB::ISource::tryGenerate() @ 0x0000000014148f5b 10. ./build_docker/./src/Processors/ISource.cpp:108: DB::ISource::work() @ 0x0000000014148c47 11. ./build_docker/./src/Processors/Executors/ExecutionThreadContext.cpp:49: DB::ExecutionThreadContext::executeTask() @ 0x0000000014164fc7 12. ./build_docker/./src/Processors/Executors/PipelineExecutor.cpp:290: DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic*) @ 0x00000000141577e5 ```. [#73876](https://github.com/ClickHouse/ClickHouse/pull/73876) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Fixes occasional failure to compare `map()` types due to possibility to create `Map` lacking explicit naming ('keys','values') of its nested tuple. [#73878](https://github.com/ClickHouse/ClickHouse/pull/73878) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Ignore window functions during GROUP BY ALL clause resolution. Fix [#73501](https://github.com/ClickHouse/ClickHouse/issues/73501). [#73916](https://github.com/ClickHouse/ClickHouse/pull/73916) ([Dmitry Novik](https://github.com/novikd)).
+* Propogate Native format settings properly for client-server communication. [#73924](https://github.com/ClickHouse/ClickHouse/pull/73924) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix implicit privileges (worked as wildcard before). [#73932](https://github.com/ClickHouse/ClickHouse/pull/73932) ([Azat Khuzhin](https://github.com/azat)).
+* Fix high memory usage during nested Maps creation. [#73982](https://github.com/ClickHouse/ClickHouse/pull/73982) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix parsing nested JSON with empty keys. [#73993](https://github.com/ClickHouse/ClickHouse/pull/73993) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix: alias can be not added to the projection if it is referenced by another alias and selected in inverse order. [#74033](https://github.com/ClickHouse/ClickHouse/pull/74033) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* A disk using the plain_rewritable metadata can be shared among multiple server instances. It is expected for one instance to read a metadata object while another modifies it. Object not found errors are ignored during plain_rewritable initialization with Azure storage, similar to the behavior implemented for S3. [#74059](https://github.com/ClickHouse/ClickHouse/pull/74059) ([Julia Kartseva](https://github.com/jkartseva)).
+* Fix behaviour of `any` and `anyLast` with enum types and empty table. [#74061](https://github.com/ClickHouse/ClickHouse/pull/74061) ([Joanna Hulboj](https://github.com/jh0x)).
+* Fixes case when the user specifies keyword arguments in the kafka table engine. [#74064](https://github.com/ClickHouse/ClickHouse/pull/74064) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix altering Storage `S3Queue` settings with "s3queue_" prefix to without and vice versa. [#74075](https://github.com/ClickHouse/ClickHouse/pull/74075) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add a setting `allow_push_predicate_ast_for_distributed_subqueries`. This adds AST-based predicate push-down for distributed queries with the analyzer. This is a temporary solution that we use until distributed queries with query plan serialization are supported. Closes [#66878](https://github.com/ClickHouse/ClickHouse/issues/66878) [#69472](https://github.com/ClickHouse/ClickHouse/issues/69472) [#65638](https://github.com/ClickHouse/ClickHouse/issues/65638) [#68030](https://github.com/ClickHouse/ClickHouse/issues/68030) [#73718](https://github.com/ClickHouse/ClickHouse/issues/73718). [#74085](https://github.com/ClickHouse/ClickHouse/pull/74085) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fixes issue when after [#73095](https://github.com/ClickHouse/ClickHouse/issues/73095) port can be present in the forwarded_for field, which leads to inability to resolve host name with port included. [#74116](https://github.com/ClickHouse/ClickHouse/pull/74116) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Fixed incorrect formatting of `ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...)`. [#74126](https://github.com/ClickHouse/ClickHouse/pull/74126) ([Han Fei](https://github.com/hanfei1991)).
+* Fix for issue [#66112](https://github.com/ClickHouse/ClickHouse/issues/66112). [#74128](https://github.com/ClickHouse/ClickHouse/pull/74128) ([Anton Ivashkin](https://github.com/ianton-ru)).
+* It is no longer possible to use `Loop` as a table engine in `CREATE TABLE`. This combination was previously causing segfaults. [#74137](https://github.com/ClickHouse/ClickHouse/pull/74137) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix security issue to prevent SQL injection in postgresql and sqlite table functions. [#74144](https://github.com/ClickHouse/ClickHouse/pull/74144) ([Pablo Marcos](https://github.com/pamarcos)).
+* Fix crash when reading a subcolumn from the compressed Memory engine table. Fixes [#74009](https://github.com/ClickHouse/ClickHouse/issues/74009). [#74161](https://github.com/ClickHouse/ClickHouse/pull/74161) ([Nikita Taranov](https://github.com/nickitat)).
+* Fixed an infinite loop occurring with queries to the system.detached_tables. [#74190](https://github.com/ClickHouse/ClickHouse/pull/74190) ([Konstantin Morozov](https://github.com/k-morozov)).
+* Fix logical error in s3queue during setting file as failed. [#74216](https://github.com/ClickHouse/ClickHouse/pull/74216) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Check for not supported types for some storages. [#74218](https://github.com/ClickHouse/ClickHouse/pull/74218) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix crash with query `INSERT INTO SELECT` over PostgreSQL interface on macOS (issue [#72938](https://github.com/ClickHouse/ClickHouse/issues/72938)). [#74231](https://github.com/ClickHouse/ClickHouse/pull/74231) ([Artem Yurov](https://github.com/ArtemYurov)).
+* Fix native copy settings (`allow_s3_native_copy`/`allow_azure_native_copy`) for `RESTORE` from base backup. [#74286](https://github.com/ClickHouse/ClickHouse/pull/74286) ([Azat Khuzhin](https://github.com/azat)).
+* Fixed the issue when the number of detached tables in the database is a multiple of max_block_size. [#74289](https://github.com/ClickHouse/ClickHouse/pull/74289) ([Konstantin Morozov](https://github.com/k-morozov)).
+* Fix copying via ObjectStorage (i.e. S3) when source and destination credentials differs. [#74331](https://github.com/ClickHouse/ClickHouse/pull/74331) ([Azat Khuzhin](https://github.com/azat)).
+* Fixed uninitialized max_log_ptr in the replicated database. [#74336](https://github.com/ClickHouse/ClickHouse/pull/74336) ([Konstantin Morozov](https://github.com/k-morozov)).
+* Fix detection of "use the Rewrite method in the JSON API" for native copy on GCS. [#74338](https://github.com/ClickHouse/ClickHouse/pull/74338) ([Azat Khuzhin](https://github.com/azat)).
+* Fix crash when inserting interval (issue [#74299](https://github.com/ClickHouse/ClickHouse/issues/74299)). [#74478](https://github.com/ClickHouse/ClickHouse/pull/74478) ([NamNguyenHoai](https://github.com/NamHoaiNguyen)).
+* Fix incorrect projection analysis when `count(nullable)` is used in aggregate projections. This fixes [#74495](https://github.com/ClickHouse/ClickHouse/issues/74495) . This PR also adds some logs around projection analysis to clarify why a projection is used or why not. [#74498](https://github.com/ClickHouse/ClickHouse/pull/74498) ([Amos Bird](https://github.com/amosbird)).
+* Fix incorrect calculation of `BackgroundMergesAndMutationsPoolSize` (it was x2 from real value). [#74509](https://github.com/ClickHouse/ClickHouse/pull/74509) ([alesapin](https://github.com/alesapin)).
+* Fix the bug of leaking keeper watches when enable Cluster Discovery. [#74521](https://github.com/ClickHouse/ClickHouse/pull/74521) ([RinChanNOW](https://github.com/RinChanNOWWW)).
+* Fix formatting constant JSON literals. Previously it could lead to syntax errors during sending the query to another server. [#74533](https://github.com/ClickHouse/ClickHouse/pull/74533) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix mem alignment issue reported by UBSan [#74512](https://github.com/ClickHouse/ClickHouse/issues/74512). [#74534](https://github.com/ClickHouse/ClickHouse/pull/74534) ([Arthur Passos](https://github.com/arthurpassos)).
+* Fix KeeperMap concurrent cleanup during table creation. [#74568](https://github.com/ClickHouse/ClickHouse/pull/74568) ([Antonio Andelic](https://github.com/antonio2368)).
+* Do not remove unused projection columns in subqueries in the presence of `EXCEPT` or `INTERSECT` to preserve the correct query result. Fixes [#73930](https://github.com/ClickHouse/ClickHouse/issues/73930). Fixes [#66465](https://github.com/ClickHouse/ClickHouse/issues/66465). [#74577](https://github.com/ClickHouse/ClickHouse/pull/74577) ([Dmitry Novik](https://github.com/novikd)).
+* Fix broken create query when using constant partition expressions with implicit projections enabled. This fixes [#74596](https://github.com/ClickHouse/ClickHouse/issues/74596) . [#74634](https://github.com/ClickHouse/ClickHouse/pull/74634) ([Amos Bird](https://github.com/amosbird)).
+* Fixed `INSERT SELECT` queries between tables with `Tuple` columns and enabled sparse serialization. [#74698](https://github.com/ClickHouse/ClickHouse/pull/74698) ([Anton Popov](https://github.com/CurtizJ)).
+* Function `right` works incorrectly for const negative offset. [#74701](https://github.com/ClickHouse/ClickHouse/pull/74701) ([Daniil Ivanik](https://github.com/divanik)).
+* Fix insertion of gzip-ed data sometimes fails due to flawed decompression on client side. [#74707](https://github.com/ClickHouse/ClickHouse/pull/74707) ([siyuan](https://github.com/linkwk7)).
+* Avoid leaving connection in broken state after INSERT finishes with exception. [#74740](https://github.com/ClickHouse/ClickHouse/pull/74740) ([Azat Khuzhin](https://github.com/azat)).
+* Avoid reusing connections that had been left in the intermediate state. [#74749](https://github.com/ClickHouse/ClickHouse/pull/74749) ([Azat Khuzhin](https://github.com/azat)).
+* Partial revokes with wildcard grants could remove more privileges than expected. Closes [#74263](https://github.com/ClickHouse/ClickHouse/issues/74263). [#74751](https://github.com/ClickHouse/ClickHouse/pull/74751) ([pufit](https://github.com/pufit)).
+* Fix crash during JSON type declaration parsing when type name is not uppercase. [#74784](https://github.com/ClickHouse/ClickHouse/pull/74784) ([Pavel Kruglov](https://github.com/Avogar)).
+* Keeper fix: fix reading log entries from disk. [#74785](https://github.com/ClickHouse/ClickHouse/pull/74785) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fixed checking grants for SYSTEM REFRESH/START/STOP VIEW, now it's not required to have this grant on `*.*` to execute a query for a specific view, only grant for this view are required. [#74789](https://github.com/ClickHouse/ClickHouse/pull/74789) ([Alexander Tokmakov](https://github.com/tavplubix)).
+* The `hasColumnInTable` function doesn't account for alias columns. Fix it to also work for alias columns. [#74841](https://github.com/ClickHouse/ClickHouse/pull/74841) ([Bharat Nallan](https://github.com/bharatnc)).
+* Keeper: fix logical_error when the connection had been terminated before establishing. [#74844](https://github.com/ClickHouse/ClickHouse/pull/74844) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix a behavior when the server couldn't startup when there's a table using `AzureBlobStorage`. Tables are loaded without any requests to Azure. [#74880](https://github.com/ClickHouse/ClickHouse/pull/74880) ([Alexey Katsman](https://github.com/alexkats)).
+* Fix missing `used_privileges` and `missing_privileges` fields in `query_log` for BACKUP and RESTORE operations. [#74887](https://github.com/ClickHouse/ClickHouse/pull/74887) ([Alexey Katsman](https://github.com/alexkats)).
+* Fix FILE_DOESNT_EXIST error occurring during data parts merge for a table with an empty column in Azure Blob Storage. [#74892](https://github.com/ClickHouse/ClickHouse/pull/74892) ([Julia Kartseva](https://github.com/jkartseva)).
+* Fix projection column name when joining temporary tables, close [#68872](https://github.com/ClickHouse/ClickHouse/issues/68872). [#74897](https://github.com/ClickHouse/ClickHouse/pull/74897) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* HDFS refresh krb ticket if sasl error during hdfs select request. [#74930](https://github.com/ClickHouse/ClickHouse/pull/74930) ([inv2004](https://github.com/inv2004)).
+* Fix queries to Replicated database in startup_scripts. [#74942](https://github.com/ClickHouse/ClickHouse/pull/74942) ([Azat Khuzhin](https://github.com/azat)).
+* Fix issues with expressions type aliased in the JOIN ON clause when a null-safe comparison is used. [#74970](https://github.com/ClickHouse/ClickHouse/pull/74970) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Revert part's state from deleting back to outdated when remove operation has failed. [#74985](https://github.com/ClickHouse/ClickHouse/pull/74985) ([Sema Checherinda](https://github.com/CheSema)).
+* In previous versions, when there was a scalar subquery, we started writing the progress (accumulated from processing the subquery) during the initialization of the data format, which was before HTTP headers were written. This led to the loss of HTTP headers, such as X-ClickHouse-QueryId and X-ClickHouse-Format, as well as Content-Type. [#74991](https://github.com/ClickHouse/ClickHouse/pull/74991) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix `CREATE TABLE AS...` queries for `database_replicated_allow_replicated_engine_arguments=0`. [#75000](https://github.com/ClickHouse/ClickHouse/pull/75000) ([Bharat Nallan](https://github.com/bharatnc)).
+* Fix leaving connection in a bad state in client after INSERT exceptions. [#75030](https://github.com/ClickHouse/ClickHouse/pull/75030) ([Azat Khuzhin](https://github.com/azat)).
+* Fix crash due to uncaught exception in PSQL replication. [#75062](https://github.com/ClickHouse/ClickHouse/pull/75062) ([Azat Khuzhin](https://github.com/azat)).
+* Sasl can fail any rpc call, the fix helps to repeat the call in case if krb5 ticker is expired. [#75063](https://github.com/ClickHouse/ClickHouse/pull/75063) ([inv2004](https://github.com/inv2004)).
+* Fixed usage of indexes (primary and secondary) for `Array`, `Map` and `Nullable(..)` columns with enabled setting `optimize_function_to_subcolumns`. Previously, indexes for these columns could have been ignored. [#75081](https://github.com/ClickHouse/ClickHouse/pull/75081) ([Anton Popov](https://github.com/CurtizJ)).
+* Disable `flatten_nested` when creating materialized views with inner tables since it will not be possible to use such flattened columns. [#75085](https://github.com/ClickHouse/ClickHouse/pull/75085) ([Christoph Wurm](https://github.com/cwurm)).
+* Fix for some of IPv6 addresses (such as ::ffff:1.1.1.1) in forwarded_for field is wrongly interpreted resulting in client disconnect with exception. [#75133](https://github.com/ClickHouse/ClickHouse/pull/75133) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Fix nullsafe JOIN handling for LowCardinality nullable data type. Previously JOIN ON with nullsafe comparison, such as `IS NOT DISTINCT FROM`, `<=>` , `a IS NULL AND b IS NULL OR a == b` didn't work correctly with LowCardinality columns. [#75143](https://github.com/ClickHouse/ClickHouse/pull/75143) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fix queries with unused interpolation with the new analyzer. [#75173](https://github.com/ClickHouse/ClickHouse/pull/75173) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Fix the crash bug of CTE with Insert. [#75188](https://github.com/ClickHouse/ClickHouse/pull/75188) ([Shichao Jin](https://github.com/jsc0218)).
+* Keeper fix: avoid writing to broken changelogs when rolling back logs. [#75197](https://github.com/ClickHouse/ClickHouse/pull/75197) ([Antonio Andelic](https://github.com/antonio2368)).
+* Use `BFloat16` as a supertype where appropriate. This closes: [#74404](https://github.com/ClickHouse/ClickHouse/issues/74404). [#75236](https://github.com/ClickHouse/ClickHouse/pull/75236) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Fix unexpected defaults in join result with any_join_distinct_right_table_keys and OR in JOIN ON. [#75262](https://github.com/ClickHouse/ClickHouse/pull/75262) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Mask azureblobstorage table engine credentials. [#75319](https://github.com/ClickHouse/ClickHouse/pull/75319) ([Garrett Thomas](https://github.com/garrettthomaskth)).
+* Fixed behavior when ClickHouse may erroneously do a filter pushdown to an external database like PostgreSQL, MySQL, or SQLite. This closes: [#71423](https://github.com/ClickHouse/ClickHouse/issues/71423). [#75320](https://github.com/ClickHouse/ClickHouse/pull/75320) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Fix crash in protobuf schema cache that can happen during output in Protobuf format and parallel query `SYSTEM DROP FORMAT SCHEMA CACHE`. [#75357](https://github.com/ClickHouse/ClickHouse/pull/75357) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix a possible logical error or uninitialized memory issue when a filter from `HAVING` is pushed down with parallel replicas. [#75363](https://github.com/ClickHouse/ClickHouse/pull/75363) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Hide sensitive info for `icebergS3`, `icebergAzure` table functions and table engines. [#75378](https://github.com/ClickHouse/ClickHouse/pull/75378) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Function `TRIM` with computed empty trim characters are now correctly handled. Example: `SELECT TRIM(LEADING concat('') FROM 'foo')` (Issue [#69922](https://github.com/ClickHouse/ClickHouse/issues/69922)). [#75399](https://github.com/ClickHouse/ClickHouse/pull/75399) ([Manish Gill](https://github.com/mgill25)).
+* Fix data race in IOutputFormat. [#75448](https://github.com/ClickHouse/ClickHouse/pull/75448) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix possible error `Elements ... and ... of Nested data structure ... (Array columns) have different array sizes` when JSON subcolumns with Array type are used in JOIN over distributed tables. [#75512](https://github.com/ClickHouse/ClickHouse/pull/75512) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix invalid result buffer size calculation. Closes [#70031](https://github.com/ClickHouse/ClickHouse/issues/70031). [#75548](https://github.com/ClickHouse/ClickHouse/pull/75548) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Fix interaction between allow_feature_tier and compatibility mergetree setting. [#75635](https://github.com/ClickHouse/ClickHouse/pull/75635) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix incorrect processed_rows value in system.s3queue_log in case file was retried. [#75666](https://github.com/ClickHouse/ClickHouse/pull/75666) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Respect `materialized_views_ignore_errors` when a materialized view writes to a URL engine and there is a connectivity issue. [#75679](https://github.com/ClickHouse/ClickHouse/pull/75679) ([Christoph Wurm](https://github.com/cwurm)).
+* Fixed rare crashes while reading from `MergeTree` table after multiple asynchronous `RENAME` queries (with `alter_sync = 0`) between columns with different types. [#75693](https://github.com/ClickHouse/ClickHouse/pull/75693) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix `Block structure mismatch in QueryPipeline stream` error for some queries with `UNION ALL`. [#75715](https://github.com/ClickHouse/ClickHouse/pull/75715) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Rebuild projection on alter modify of its PK column. Previously it could lead to `CANNOT_READ_ALL_DATA` errors during selects after alter modify of the column used in projection PK. [#75720](https://github.com/ClickHouse/ClickHouse/pull/75720) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix incorrect result of `ARRAY JOIN` for scalar subqueries (with analyzer). [#75732](https://github.com/ClickHouse/ClickHouse/pull/75732) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fixed null pointer dereference in `DistinctSortedStreamTransform`. [#75734](https://github.com/ClickHouse/ClickHouse/pull/75734) ([Nikita Taranov](https://github.com/nickitat)).
+* Fix `allow_suspicious_ttl_expressions` behaviour. [#75771](https://github.com/ClickHouse/ClickHouse/pull/75771) ([Aleksei Filatov](https://github.com/aalexfvk)).
+* Fix uninitialized memory read in function `translate`. This closes [#75592](https://github.com/ClickHouse/ClickHouse/issues/75592). [#75794](https://github.com/ClickHouse/ClickHouse/pull/75794) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Propagate format settings to JSON as string formatting in Native format. [#75832](https://github.com/ClickHouse/ClickHouse/pull/75832) ([Pavel Kruglov](https://github.com/Avogar)).
+* Recorded the default enablement of parallel hash as join algorithm in v24.12 in the settings change history. This means that ClickHouse will continue to join using non-parallel hash if an older compatibility level than v24.12 is configured. [#75870](https://github.com/ClickHouse/ClickHouse/pull/75870) ([Robert Schulze](https://github.com/rschu1ze)).
+* Fixed a bug that tables with implicitly added min-max indices could not be copied into a new table (issue [#75677](https://github.com/ClickHouse/ClickHouse/issues/75677)). [#75877](https://github.com/ClickHouse/ClickHouse/pull/75877) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+* `clickhouse-library-bridge` allows opening arbitrary libraries from the filesystem, which makes it safe to run only inside an isolated environment. To prevent a vulnerability when it is run near the clickhouse-server, we will limit the paths of libraries to a location, provided in the configuration. This vulnerability was found with the [ClickHouse Bug Bounty Program](https://github.com/ClickHouse/ClickHouse/issues/38986) by **Arseniy Dugin**. [#75954](https://github.com/ClickHouse/ClickHouse/pull/75954) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* We happened to use JSON serialization for some metadata, which was a mistake, because JSON does not support binary data inside string literals, including zero bytes. SQL queries can contain binary data and invalid UTF-8, so we have to support this in our metadata files as well. At the same time, ClickHouse's `JSONEachRow` and similar formats work around that by deviating from the JSON standard in favor of a perfect roundtrip for the binary data. See the motivation here: https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790. The solution is to make `Poco::JSON` library consistent with the JSON format serialization in ClickHouse. This closes [#73668](https://github.com/ClickHouse/ClickHouse/issues/73668). [#75963](https://github.com/ClickHouse/ClickHouse/pull/75963) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix `Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED)` during DETACH PART. [#76039](https://github.com/ClickHouse/ClickHouse/pull/76039) ([Aleksei Filatov](https://github.com/aalexfvk)).
+* Fix check for commit limits in storage `S3Queue`. [#76104](https://github.com/ClickHouse/ClickHouse/pull/76104) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix attaching MergeTree tables with auto indexes (`add_minmax_index_for_numeric_columns`/`add_minmax_index_for_string_columns`). [#76139](https://github.com/ClickHouse/ClickHouse/pull/76139) ([Azat Khuzhin](https://github.com/azat)).
+* Fixed issue of stack traces from parent threads of a job (`enable_job_stack_trace` setting) are not printed out. Fixed issue `enable_job_stack_trace` setting is not properly propagated to the threads resulting stack trace content not always respects this setting. [#76191](https://github.com/ClickHouse/ClickHouse/pull/76191) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Fix reinterpretAs with FixedString on big-endian architecture. [#76253](https://github.com/ClickHouse/ClickHouse/pull/76253) ([Azat Khuzhin](https://github.com/azat)).
+* Fix all sort of bugs due to race between UUID and table names (for instance it will fix the race between `RENAME` and `RESTART REPLICA`, in case of concurrent `RENAME` with `SYSTEM RESTART REPLICA` you may get end up restarting wrong replica, or/and leaving one of the tables in a `Table X is being restarted` state). [#76308](https://github.com/ClickHouse/ClickHouse/pull/76308) ([Azat Khuzhin](https://github.com/azat)).
+* Removed allocation from the signal handler. [#76446](https://github.com/ClickHouse/ClickHouse/pull/76446) ([Nikita Taranov](https://github.com/nickitat)).
+* Fix dynamic filesystem cache resize handling unexpected errors during eviction. [#76466](https://github.com/ClickHouse/ClickHouse/pull/76466) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fixed `used_flag` initialization in parallel hash. It might cause a server crash. [#76580](https://github.com/ClickHouse/ClickHouse/pull/76580) ([Nikita Taranov](https://github.com/nickitat)).
+* Fix a logical error when calling `defaultProfiles()` function inside a projection. [#76627](https://github.com/ClickHouse/ClickHouse/pull/76627) ([pufit](https://github.com/pufit)).
+* Do not request interactive basic auth in the browser in Web UI. Closes [#76319](https://github.com/ClickHouse/ClickHouse/issues/76319). [#76637](https://github.com/ClickHouse/ClickHouse/pull/76637) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix THERE_IS_NO_COLUMN exception when selecting boolean literal from distributed tables. [#76656](https://github.com/ClickHouse/ClickHouse/pull/76656) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* The subpath inside the table directory is chosen in a more profound way. [#76681](https://github.com/ClickHouse/ClickHouse/pull/76681) ([Daniil Ivanik](https://github.com/divanik)).
+* Fix an error `Not found column in block` after altering a table with a subcolumn in PK. After https://github.com/ClickHouse/ClickHouse/pull/72644, requires https://github.com/ClickHouse/ClickHouse/pull/74403. [#76686](https://github.com/ClickHouse/ClickHouse/pull/76686) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Add performance tests for null short circuits and fix bugs. [#76708](https://github.com/ClickHouse/ClickHouse/pull/76708) ([李扬](https://github.com/taiyang-li)).
+* Flush output write buffers before finalizing them. Fix `LOGICAL_ERROR` generated during the finalization of some output format, e.g. `JSONEachRowWithProgressRowOutputFormat`. [#76726](https://github.com/ClickHouse/ClickHouse/pull/76726) ([Antonio Andelic](https://github.com/antonio2368)).
+* Added support for MongoDB binary UUID ([#74452](https://github.com/ClickHouse/ClickHouse/issues/74452)) - Fixed WHERE pushdown to MongoDB when using the table function ([#72210](https://github.com/ClickHouse/ClickHouse/issues/72210)) - Changed the MongoDB - ClickHouse type mapping such that MongoDB's binary UUID can only be parsed to ClickHouse's UUID. This should avoid ambiguities and surprises in future. - Fixed OID mapping, preserving backward compatibility. [#76762](https://github.com/ClickHouse/ClickHouse/pull/76762) ([Kirill Nikiforov](https://github.com/allmazz)).
+* Fix exception handling in parallel prefixes deserialization of JSON subcolumns. [#76809](https://github.com/ClickHouse/ClickHouse/pull/76809) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix lgamma function behavior for negative integers. [#76840](https://github.com/ClickHouse/ClickHouse/pull/76840) ([Ilya Kataev](https://github.com/IlyaKataev)).
+* Fix reverse key analysis for explicitly defined primary keys. Similar to [#76654](https://github.com/ClickHouse/ClickHouse/issues/76654). [#76846](https://github.com/ClickHouse/ClickHouse/pull/76846) ([Amos Bird](https://github.com/amosbird)).
+* Fix pretty print of Bool values in JSON format. [#76905](https://github.com/ClickHouse/ClickHouse/pull/76905) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix possible crash because of bad JSON column rollback on error during async inserts. [#76908](https://github.com/ClickHouse/ClickHouse/pull/76908) ([Pavel Kruglov](https://github.com/Avogar)).
+* Previously, `multi_if` may return different types of columns during planning and main execution. This resulted in code producing undefined behavior from the C++ perspective. [#76914](https://github.com/ClickHouse/ClickHouse/pull/76914) ([Nikita Taranov](https://github.com/nickitat)).
+* Fixed incorrect serialization of constant nullable keys in MergeTree. This fixes [#76939](https://github.com/ClickHouse/ClickHouse/issues/76939). [#76985](https://github.com/ClickHouse/ClickHouse/pull/76985) ([Amos Bird](https://github.com/amosbird)).
+* Fix sorting of `BFloat16` values. This closes [#75487](https://github.com/ClickHouse/ClickHouse/issues/75487). This closes [#75669](https://github.com/ClickHouse/ClickHouse/issues/75669). [#77000](https://github.com/ClickHouse/ClickHouse/pull/77000) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Bug fix JSON with variant subcolumn by adding check to skip ephemeral subcolumns in part consistency check. [#72187](https://github.com/ClickHouse/ClickHouse/issues/72187). [#77034](https://github.com/ClickHouse/ClickHouse/pull/77034) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+* Fix crash in template parsing in Values format in case of types mismatch. [#77071](https://github.com/ClickHouse/ClickHouse/pull/77071) ([Pavel Kruglov](https://github.com/Avogar)).
+* Don't allow creating EmbeddedRocksDB table with subcolumn in a primary key. Previously, such a table could be created but `SELECT` queries failed. [#77074](https://github.com/ClickHouse/ClickHouse/pull/77074) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix illegal comparison in distributed queries because pushing down predicates to remote doesn't respect literal types. [#77093](https://github.com/ClickHouse/ClickHouse/pull/77093) ([Duc Canh Le](https://github.com/canhld94)).
+* Fix crash during Kafka table creation with exception. [#77121](https://github.com/ClickHouse/ClickHouse/pull/77121) ([Pavel Kruglov](https://github.com/Avogar)).
+* Support new JSON and subcolumns in Kafka and RabbitMQ engines. [#77122](https://github.com/ClickHouse/ClickHouse/pull/77122) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix exceptions stack unwinding on MacOS. [#77126](https://github.com/ClickHouse/ClickHouse/pull/77126) ([Eduard Karacharov](https://github.com/korowa)).
+* Fix reading 'null' subcolumn in getSubcolumn function. [#77163](https://github.com/ClickHouse/ClickHouse/pull/77163) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix not working skip indexes with expression with literals in analyzer and remove trivial casts during indexes analysis. [#77229](https://github.com/ClickHouse/ClickHouse/pull/77229) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix bloom filter index with Array and not supported functions. [#77271](https://github.com/ClickHouse/ClickHouse/pull/77271) ([Pavel Kruglov](https://github.com/Avogar)).
+* We should only check the restriction on the amount of tables during the initial CREATE query. [#77274](https://github.com/ClickHouse/ClickHouse/pull/77274) ([Nikolay Degterinsky](https://github.com/evillique)).
+* `SELECT toBFloat16(-0.0) == toBFloat16(0.0)` now correctly returns `true` (from previously `false`). This makes the behavior consistent with `Float32` and `Float64`. [#77290](https://github.com/ClickHouse/ClickHouse/pull/77290) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Fix posbile incorrect reference to unintialized key_index variable, which may lead to crash in debug builds (this uninitialized reference won't cause issues in release builds because subsequent code are likely to throw errors.) ### documentation entry for user-facing changes. [#77305](https://github.com/ClickHouse/ClickHouse/pull/77305) ([wxybear](https://github.com/wxybear)).
+* Reverted. [#77307](https://github.com/ClickHouse/ClickHouse/pull/77307) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix name for partition with a Bool value. It was broken in https://github.com/ClickHouse/ClickHouse/pull/74533. [#77319](https://github.com/ClickHouse/ClickHouse/pull/77319) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix comparison between tuples with nullable elements inside and strings. As an example, before the change comparison between a Tuple `(1, null)` and a String `'(1,null)'` would result in an error. Another example would be a comparison between a Tuple `(1, a)`, where `a` is a Nullable column, and a String `'(1, 2)'`. This change addresses these issues. [#77323](https://github.com/ClickHouse/ClickHouse/pull/77323) ([Alexey Katsman](https://github.com/alexkats)).
+* Fix crash in ObjectStorageQueueSource. Was intoduced in https://github.com/ClickHouse/ClickHouse/pull/76358. [#77325](https://github.com/ClickHouse/ClickHouse/pull/77325) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix a bug when `close_session` query parameter didn't have any effect leading to named sessions being closed only after `session_timeout`. [#77336](https://github.com/ClickHouse/ClickHouse/pull/77336) ([Alexey Katsman](https://github.com/alexkats)).
+* Fix `async_insert` with `input()`. [#77340](https://github.com/ClickHouse/ClickHouse/pull/77340) ([Azat Khuzhin](https://github.com/azat)).
+* Fix: `WITH FILL` may fail with `NOT_FOUND_COLUMN_IN_BLOCK` when planer removes sorting column. Similar issue related to inconsistent DAG calculated for `INTERPOLATE` expression. [#77343](https://github.com/ClickHouse/ClickHouse/pull/77343) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Reverted. [#77390](https://github.com/ClickHouse/ClickHouse/pull/77390) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fixed receiving messages from nats server without attached mv. [#77392](https://github.com/ClickHouse/ClickHouse/pull/77392) ([Dmitry Novikov](https://github.com/dmitry-sles-novikov)).
+* Fix logical error while reading from empty `FileLog` via `merge` table function, close [#75575](https://github.com/ClickHouse/ClickHouse/issues/75575). [#77441](https://github.com/ClickHouse/ClickHouse/pull/77441) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fix several `LOGICAL_ERROR`s around setting an alias of invalid AST nodes. [#77445](https://github.com/ClickHouse/ClickHouse/pull/77445) ([Raúl Marín](https://github.com/Algunenano)).
+* In filesystem cache implementation fix error processing during file segment write. [#77471](https://github.com/ClickHouse/ClickHouse/pull/77471) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Make DatabaseIceberg use correct metadata file provided by catalog. Closes [#75187](https://github.com/ClickHouse/ClickHouse/issues/75187). [#77486](https://github.com/ClickHouse/ClickHouse/pull/77486) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Use default format settings in Dynamic serialization from shared variant. [#77572](https://github.com/ClickHouse/ClickHouse/pull/77572) ([Pavel Kruglov](https://github.com/Avogar)).
+* Revert 'Avoid toAST() in execution of scalar subqueries'. [#77584](https://github.com/ClickHouse/ClickHouse/pull/77584) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix checking if the table data path exists on the local disk. [#77608](https://github.com/ClickHouse/ClickHouse/pull/77608) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* The query cache now assumes that UDFs are non-deterministic. Accordingly, results of queries with UDFs are no longer cached. Previously, users were able to define non-deterministic UDFs whose result would erronously be cached (issue [#77553](https://github.com/ClickHouse/ClickHouse/issues/77553)). [#77633](https://github.com/ClickHouse/ClickHouse/pull/77633) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
+* Fix sending constant values to remote for some types. [#77634](https://github.com/ClickHouse/ClickHouse/pull/77634) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix system.filesystem_cache_log working only under setting `enable_filesystem_cache_log`. [#77650](https://github.com/ClickHouse/ClickHouse/pull/77650) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix a logical error when calling `defaultRoles()` function inside a projection. Follow-up for [#76627](https://github.com/ClickHouse/ClickHouse/issues/76627). [#77667](https://github.com/ClickHouse/ClickHouse/pull/77667) ([pufit](https://github.com/pufit)).
+* Fix crash because of expired context in StorageS3(Azure)Queue. [#77720](https://github.com/ClickHouse/ClickHouse/pull/77720) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Second arguments of type `Nullable` for function `arrayResize` are now disallowed. Previously, anything from errors to wrong results could happen with `Nullable` as second argument. (issue [#48398](https://github.com/ClickHouse/ClickHouse/issues/48398)). [#77724](https://github.com/ClickHouse/ClickHouse/pull/77724) ([Manish Gill](https://github.com/mgill25)).
+* Hide credentials in RabbitMQ, Nats, Redis, AzureQueue table engines. [#77755](https://github.com/ClickHouse/ClickHouse/pull/77755) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix undefined behaviour on NaN comparison in ArgMin/ArgMax. [#77756](https://github.com/ClickHouse/ClickHouse/pull/77756) ([Raúl Marín](https://github.com/Algunenano)).
+* Regularly check if merges and mutations were cancelled even in case when the operation doesn't produce any blocks to write. [#77766](https://github.com/ClickHouse/ClickHouse/pull/77766) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Reverted. [#77843](https://github.com/ClickHouse/ClickHouse/pull/77843) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fix possible crash when `NOT_FOUND_COLUMN_IN_BLOCK` error occurs. [#77854](https://github.com/ClickHouse/ClickHouse/pull/77854) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fix crash that happens in the `StorageSystemObjectStorageQueueSettings` while filling data. [#77878](https://github.com/ClickHouse/ClickHouse/pull/77878) ([Bharat Nallan](https://github.com/bharatnc)).
+* Disable fuzzy search for history in SSH server (since it requires skim). [#78002](https://github.com/ClickHouse/ClickHouse/pull/78002) ([Azat Khuzhin](https://github.com/azat)).
+* Fixes a bug that a vector search query on a non-indexed column was returning incorrect results if there was another vector column in the table with a defined vector similarity index. (Issue [#77978](https://github.com/ClickHouse/ClickHouse/issues/77978)). [#78069](https://github.com/ClickHouse/ClickHouse/pull/78069) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Fix `The requested output format {} is binary... Do you want to output it anyway? [y/N]` prompt. [#78095](https://github.com/ClickHouse/ClickHouse/pull/78095) ([Azat Khuzhin](https://github.com/azat)).
+* Fix of a bug in case of `toStartOfInterval` with zero origin argument. [#78096](https://github.com/ClickHouse/ClickHouse/pull/78096) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Disallow specifying an empty `session_id` query parameter for HTTP interface. [#78098](https://github.com/ClickHouse/ClickHouse/pull/78098) ([Alexey Katsman](https://github.com/alexkats)).
+* Fix metadata override in Database Replicated which could have happened due to a RENAME query executed right after an ALTER query. [#78107](https://github.com/ClickHouse/ClickHouse/pull/78107) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Fix crash in NATS engine. [#78108](https://github.com/ClickHouse/ClickHouse/pull/78108) ([Dmitry Novikov](https://github.com/dmitry-sles-novikov)).
+* Do not try to create a `history_file` in an embedded client for SSH. [#78112](https://github.com/ClickHouse/ClickHouse/pull/78112) ([Azat Khuzhin](https://github.com/azat)).
+* Fix system.detached_tables displaying incorrect information after RENAME DATABASE or DROP TABLE queries. [#78126](https://github.com/ClickHouse/ClickHouse/pull/78126) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Fix for checks for too many tables with Database Replicated after https://github.com/ClickHouse/ClickHouse/pull/77274. Also, perform the check before creating the storage to avoid creating unaccounted nodes in ZooKeeper in the case of RMT or KeeperMap. [#78127](https://github.com/ClickHouse/ClickHouse/pull/78127) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Fix possible crash due to concurrent S3Queue metadata initialization. [#78131](https://github.com/ClickHouse/ClickHouse/pull/78131) ([Azat Khuzhin](https://github.com/azat)).
+* `groupArray*` functions now produce BAD_ARGUMENTS error for Int-typed 0 value of max_size argument, like it's already done for UInt one, instead of trying to execute with it. [#78140](https://github.com/ClickHouse/ClickHouse/pull/78140) ([Eduard Karacharov](https://github.com/korowa)).
+* Prevent crash on recoverLostReplica if the local table is removed before it's detached. [#78173](https://github.com/ClickHouse/ClickHouse/pull/78173) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix "alterable" column in system.s3_queue_settings returning always `false`. [#78187](https://github.com/ClickHouse/ClickHouse/pull/78187) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Mask azure access signature to be not visible to user or in logs. [#78189](https://github.com/ClickHouse/ClickHouse/pull/78189) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix prefetch of substreams with prefixes in Wide parts. [#78205](https://github.com/ClickHouse/ClickHouse/pull/78205) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fixed crashes / incorrect result for `mapFromArrays` in case of `LowCardinality(Nullable)` type of key array. [#78240](https://github.com/ClickHouse/ClickHouse/pull/78240) ([Eduard Karacharov](https://github.com/korowa)).
+* Fix delta-kernel auth options. [#78255](https://github.com/ClickHouse/ClickHouse/pull/78255) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Not schedule RefreshMV task if a replica's `disable_insertion_and_mutation` is true. A task is some insertion, it will failed if `disable_insertion_and_mutation` is true. [#78277](https://github.com/ClickHouse/ClickHouse/pull/78277) ([Xu Jia](https://github.com/XuJia0210)).
+* Validate access to underlying tables for the Merge engine. [#78339](https://github.com/ClickHouse/ClickHouse/pull/78339) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* FINAL modifier can be lost for `Distributed` engine table. [#78428](https://github.com/ClickHouse/ClickHouse/pull/78428) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* `Bitmapmin` returns uint32_max when the bitmap is `empty(uint64_max when input type >= 8bits)`, which matches the behavior of empty `roaring_bitmap`'s `minimum()`. [#78444](https://github.com/ClickHouse/ClickHouse/pull/78444) ([wxybear](https://github.com/wxybear)).
+* Revert "Apply preserve_most attribute at some places in code" since it may lead to crashes. [#78449](https://github.com/ClickHouse/ClickHouse/pull/78449) ([Azat Khuzhin](https://github.com/azat)).
+* Use insertion columns for INFILE schema inference. [#78490](https://github.com/ClickHouse/ClickHouse/pull/78490) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Disable parallelize query processing right after reading `FROM` when `distributed_aggregation_memory_efficient` enabled, it may lead to logical error. Closes [#76934](https://github.com/ClickHouse/ClickHouse/issues/76934). [#78500](https://github.com/ClickHouse/ClickHouse/pull/78500) ([flynn](https://github.com/ucasfl)).
+* Set at least one stream for reading in case there are zero planned streams after applying `max_streams_to_max_threads_ratio` setting. [#78505](https://github.com/ClickHouse/ClickHouse/pull/78505) ([Eduard Karacharov](https://github.com/korowa)).
+* In storage S3Queue fix logical error "Cannot unregister: table uuid is not registered". Closes [#78285](https://github.com/ClickHouse/ClickHouse/issues/78285). [#78541](https://github.com/ClickHouse/ClickHouse/pull/78541) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* ClickHouse is now able to figure out its cgroup v2 on systems with both cgroups v1 and v2 enabled. [#78566](https://github.com/ClickHouse/ClickHouse/pull/78566) ([Grigory Korolev](https://github.com/gkorolev)).
+* ObjectStorage cluster table functions failed when used with table level-settings. [#78587](https://github.com/ClickHouse/ClickHouse/pull/78587) ([Daniil Ivanik](https://github.com/divanik)).
+* Better checks for transactions are not supported by ReplicatedMergeTree on `INSERT`s. [#78633](https://github.com/ClickHouse/ClickHouse/pull/78633) ([Azat Khuzhin](https://github.com/azat)).
+* Apply query settings during attachment. [#78637](https://github.com/ClickHouse/ClickHouse/pull/78637) ([Raúl Marín](https://github.com/Algunenano)).
+* Fixes a crash when an invalid path is specified in `iceberg_metadata_file_path`. [#78688](https://github.com/ClickHouse/ClickHouse/pull/78688) ([alesapin](https://github.com/alesapin)).
+* In DeltaLake table engine with delta-kernel implementation fix case when read schema is different from table schema and there are partition columns at the same time leading to not found column error. [#78690](https://github.com/ClickHouse/ClickHouse/pull/78690) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* This update corrects a bug where a new named session would inadvertently close at the scheduled time of a previous session if both sessions shared the same name and the new one was created before the old one's timeout expired. [#78698](https://github.com/ClickHouse/ClickHouse/pull/78698) ([Alexey Katsman](https://github.com/alexkats)).
+* Don't block table shutdown while running CHECK TABLE. [#78782](https://github.com/ClickHouse/ClickHouse/pull/78782) ([Raúl Marín](https://github.com/Algunenano)).
+* Keeper fix: fix ephemeral count in all cases. [#78799](https://github.com/ClickHouse/ClickHouse/pull/78799) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix bad cast in `StorageDistributed` when using table functions other than `view()`. Closes [#78464](https://github.com/ClickHouse/ClickHouse/issues/78464). [#78828](https://github.com/ClickHouse/ClickHouse/pull/78828) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Fix formatting for `tupleElement(*, 1)`. Closes [#78639](https://github.com/ClickHouse/ClickHouse/issues/78639). [#78832](https://github.com/ClickHouse/ClickHouse/pull/78832) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Dictionaries of type `ssd_cache` now reject zero or negative `block_size` and `write_buffer_size` parameters (issue [#78314](https://github.com/ClickHouse/ClickHouse/issues/78314)). [#78854](https://github.com/ClickHouse/ClickHouse/pull/78854) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* Fix crash in REFRESHABLE MV in case of ALTER after incorrect shutdown. [#78858](https://github.com/ClickHouse/ClickHouse/pull/78858) ([Azat Khuzhin](https://github.com/azat)).
+* Fix parsing of bad DateTime values in CSV format. [#78919](https://github.com/ClickHouse/ClickHouse/pull/78919) ([Pavel Kruglov](https://github.com/Avogar)).
+
+## Build/testing/packaging improvement {#build-testing-packaging-improvement}
+
+* The internal dependency LLVM is bumped from 16 to 18. [#66053](https://github.com/ClickHouse/ClickHouse/pull/66053) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Restore deleted nats integration tests and fix errors. - fixed some race conditions in nats engine - fixed data loss when streaming data to nats in case of connection loss - fixed freeze of receiving the last chunk of data when streaming from nats ended - nats_max_reconnect is deprecated and has no effect, reconnect is performed permanently with nats_reconnect_wait timeout. [#69772](https://github.com/ClickHouse/ClickHouse/pull/69772) ([Dmitry Novikov](https://github.com/dmitry-sles-novikov)).
+* Fix the issue that asm files of contrib openssl cannot be generated. [#72622](https://github.com/ClickHouse/ClickHouse/pull/72622) ([RinChanNOW](https://github.com/RinChanNOWWW)).
+* Fix stability for test 03210_variant_with_aggregate_function_type. [#74012](https://github.com/ClickHouse/ClickHouse/pull/74012) ([Anton Ivashkin](https://github.com/ianton-ru)).
+* Support build HDFS on both ARM and Intel Mac. [#74244](https://github.com/ClickHouse/ClickHouse/pull/74244) ([Yan Xin](https://github.com/yxheartipp)).
+* The universal installation script will propose installation even on macOS. [#74339](https://github.com/ClickHouse/ClickHouse/pull/74339) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix build when kerberos is not enabled. [#74771](https://github.com/ClickHouse/ClickHouse/pull/74771) ([flynn](https://github.com/ucasfl)).
+* Update to embedded LLVM 19. [#75148](https://github.com/ClickHouse/ClickHouse/pull/75148) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* *Potentially breaking*: Improvement to set even more restrictive defaults. The current defaults are already secure. The user has to specify an option to publish ports explicitly. But when the `default` user doesn't have a password set by `CLICKHOUSE_PASSWORD` and/or a username changed by `CLICKHOUSE_USER` environment variables, it should be available only from the local system as an additional level of protection. [#75259](https://github.com/ClickHouse/ClickHouse/pull/75259) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* Integration tests have a 1-hour timeout for single batch of parallel tests running. When this timeout is reached `pytest` is killed without some logs. Internal pytest timeout is set to 55 minutes to print results from a session and not trigger external timeout signal. Closes [#75532](https://github.com/ClickHouse/ClickHouse/issues/75532). [#75533](https://github.com/ClickHouse/ClickHouse/pull/75533) ([Ilya Yatsishin](https://github.com/qoega)).
+* Make all clickhouse-server related actions a function, and execute them only when launching the default binary in `entrypoint.sh`. A long-postponed improvement was suggested in [#50724](https://github.com/ClickHouse/ClickHouse/issues/50724). Added switch `--users` to `clickhouse-extract-from-config` to get values from the `users.xml`. [#75643](https://github.com/ClickHouse/ClickHouse/pull/75643) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* For stress tests if server did not exit while we collected stacktraces via gdb additional wait time is added to make `Possible deadlock on shutdown (see gdb.log)` detection less noisy. It will only add delay for cases when test did not finish successfully. [#75668](https://github.com/ClickHouse/ClickHouse/pull/75668) ([Ilya Yatsishin](https://github.com/qoega)).
+* Restore deleted nats integration tests and fix errors. - fixed some race conditions in nats engine - fixed data loss when streaming data to nats in case of connection loss - fixed freeze of receiving the last chunk of data when streaming from nats ended - nats_max_reconnect is deprecated and has no effect, reconnect is performed permanently with nats_reconnect_wait timeout. [#75850](https://github.com/ClickHouse/ClickHouse/pull/75850) ([Dmitry Novikov](https://github.com/dmitry-sles-novikov)).
+* Enable ICU and GRPC when cross-compiling for Darwin. [#75922](https://github.com/ClickHouse/ClickHouse/pull/75922) ([Raúl Marín](https://github.com/Algunenano)).
+* Fixing splitting test's output because of `sleep` during the process group killing. [#76090](https://github.com/ClickHouse/ClickHouse/pull/76090) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* Do not collect the `docker-compose` logs at the end of running since the script is often killed. Instead, collect them in the background. [#76140](https://github.com/ClickHouse/ClickHouse/pull/76140) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* Split tests for kafka storage into a few files. Fixes [#69452](https://github.com/ClickHouse/ClickHouse/issues/69452). [#76208](https://github.com/ClickHouse/ClickHouse/pull/76208) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* `clickhouse-odbc-bridge` and `clickhouse-library-bridge` are moved to a separate repository, https://github.com/ClickHouse/odbc-bridge/. [#76225](https://github.com/ClickHouse/ClickHouse/pull/76225) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Remove about 20MB of dead code from the binary. [#76226](https://github.com/ClickHouse/ClickHouse/pull/76226) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Raise minimum required CMake version to 3.25 due to `block()` introduction. [#76316](https://github.com/ClickHouse/ClickHouse/pull/76316) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Update fmt to 11.1.3. [#76547](https://github.com/ClickHouse/ClickHouse/pull/76547) ([Raúl Marín](https://github.com/Algunenano)).
+* Bump `lz4` to `1.10.0`. [#76571](https://github.com/ClickHouse/ClickHouse/pull/76571) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Bump `curl` to `8.12.1`. [#76572](https://github.com/ClickHouse/ClickHouse/pull/76572) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Bump `libcpuid` to `0.7.1`. [#76573](https://github.com/ClickHouse/ClickHouse/pull/76573) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Use a machine-readable format to parse pytest results. [#76910](https://github.com/ClickHouse/ClickHouse/pull/76910) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* Fix rust cross-compilation and allow disabling Rust completely. [#76921](https://github.com/ClickHouse/ClickHouse/pull/76921) ([Raúl Marín](https://github.com/Algunenano)).
+* Require clang 19 to build the project. [#76945](https://github.com/ClickHouse/ClickHouse/pull/76945) ([Raúl Marín](https://github.com/Algunenano)).
+* The test is executed for 10+ seconds in the serial mode. It's too long for fast tests. [#76948](https://github.com/ClickHouse/ClickHouse/pull/76948) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* Bump `sccache` to `0.10.0`. [#77580](https://github.com/ClickHouse/ClickHouse/pull/77580) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Respect CPU target features in rust and enable LTO in all crates. [#78590](https://github.com/ClickHouse/ClickHouse/pull/78590) ([Raúl Marín](https://github.com/Algunenano)).
+* Bump `minizip-ng` to `4.0.9`. [#78917](https://github.com/ClickHouse/ClickHouse/pull/78917) ([Konstantin Bogdanov](https://github.com/thevar1able)).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_06.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_06.md
new file mode 100644
index 00000000000..dd8c2540f1b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_06.md
@@ -0,0 +1,396 @@
+---
+slug: /changelogs/25.6
+title: 'v25.6 Changelog for Cloud'
+description: 'Fast release changelog for v25.6'
+keywords: ['changelog', 'cloud']
+sidebar_label: '25.6'
+sidebar_position: 2
+doc_type: 'changelog'
+---
+
+## Backward incompatible change {#backward-incompatible-change}
+
+* Function `geoToH3()` now accepts the input in the order (lat, lon,res) (which is the standard order for geometric functions). Users who wish to retain the legacy result order (lon, lat,res) can set setting `geotoh3_lon_lat_input_order = true`. [#78852](https://github.com/ClickHouse/ClickHouse/pull/78852) ([Pratima Patel](https://github.com/pratimapatel2008)).
+* Indexes of type `full_text` were renamed to `gin`. This follows the more familiar terminology of PostgreSQL and other databases. Existing indexes of type `full_text` remain loadable but they will throw an exception (suggesting `gin` indexes instead) when one tries to use them in searches. [#79024](https://github.com/ClickHouse/ClickHouse/pull/79024) ([Robert Schulze](https://github.com/rschu1ze)).
+* Add a filesystem cache setting `allow_dynamic_cache_resize`, by default `false`, to allow dynamic resize of filesystem cache. Why: in certain environments (ClickHouse Cloud) all the scaling events happen through the restart of the process and we would love this feature to be explicitly disabled to have more control over the behavior + as a safety measure. This PR is marked as backward incompatible, because in older versions dynamic cache resize worked by default without special setting. [#79148](https://github.com/ClickHouse/ClickHouse/pull/79148) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Removed support for legacy index types `annoy` and `usearch`. Both have been stubs for a long time, i.e. every attempt to use the legacy indexes returned an error anyways. If you still have `annoy` and `usearch` indexes, please drop them. [#79802](https://github.com/ClickHouse/ClickHouse/pull/79802) ([Robert Schulze](https://github.com/rschu1ze)).
+#* Remove `format_alter_commands_with_parentheses` server setting. The setting was introduced and disabled by default in 24.2. It was enabled by default in 25.2. As there are no LTS versions that don't support the new format, we can remove the setting. [#79970](https://github.com/ClickHouse/ClickHouse/pull/79970) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+#* Minor: Force backup_threads and restore_threads server settings to be non zero. [#80224](https://github.com/ClickHouse/ClickHouse/pull/80224) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix bitNot() for String to return a zero-terminated string. [#80791](https://github.com/ClickHouse/ClickHouse/pull/80791) ([Azat Khuzhin](https://github.com/azat)).
+
+## New feature {#new-feature}
+
+* Add a new option to MergeTree `SETTINGS` which specifies a default compression codec in case the `CREATE` query does not explicitly define one for the given columns. This closes [#42005](https://github.com/ClickHouse/ClickHouse/issues/42005). [#66394](https://github.com/ClickHouse/ClickHouse/pull/66394) ([gvoelfin](https://github.com/gvoelfin)).
+* Follow up for https://github.com/ClickHouse/ClickHouse/pull/71943. This PR implements `Time`/`Time64` data types. Implements new data types: Time (HHH:MM:SS) and Time64 (HHH:MM:SS.``), some basic cast functions and functions to interact with other data types. Also, changed the existing function's name `toTime` to `toTimeWithFixedDate` because the function `toTime` is required for the cast function. [#75735](https://github.com/ClickHouse/ClickHouse/pull/75735) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Support correlated subqueries as an argument of `EXISTS` expression in the `WHERE` clause. Closes [#72459](https://github.com/ClickHouse/ClickHouse/issues/72459). [#76078](https://github.com/ClickHouse/ClickHouse/pull/76078) ([Dmitry Novik](https://github.com/novikd)).
+* Allow writing to Merge table engines. [#77484](https://github.com/ClickHouse/ClickHouse/pull/77484) ([Anton Ivashkin](https://github.com/ianton-ru)).
+* Distributed `INSERT SELECT` for replicated MergeTree tables now efficiently uses parallel replicas to parallelize `INSERT`s by selecting different data on different nodes and inserting them independently. [#78041](https://github.com/ClickHouse/ClickHouse/pull/78041) ([Igor Nikonov](https://github.com/devcrafter)).
+* Add `mapContainsValuesLike`/`mapContainsValues`/`mapExtractValuesLike` functions to filter on map values and their support in bloomfilter based indexes. [#78171](https://github.com/ClickHouse/ClickHouse/pull/78171) ([UnamedRus](https://github.com/UnamedRus)).
+* Add `system.iceberg_history` table. [#78244](https://github.com/ClickHouse/ClickHouse/pull/78244) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+* Added query slot scheduling for workloads, see https://clickhouse.com/docs/operations/workload-scheduling#query_scheduling for details. [#78415](https://github.com/ClickHouse/ClickHouse/pull/78415) ([Sergei Trifonov](https://github.com/serxa)).
+* Add `getServerSetting` and `getMergeTreeSetting` function. Closes https://github.com/clickhouse/clickhouse/issues/78318. [#78439](https://github.com/ClickHouse/ClickHouse/pull/78439) ([NamNguyenHoai](https://github.com/NamHoaiNguyen)).
+* Support disallowed values under settings constraints. [#78499](https://github.com/ClickHouse/ClickHouse/pull/78499) ([Bharat Nallan](https://github.com/bharatnc)).
+* Add new `iceberg_enable_version_hint` setting to leverage `version-hint.text` file. [#78594](https://github.com/ClickHouse/ClickHouse/pull/78594) ([Arnaud Briche](https://github.com/arnaudbriche)).
+* Gives the possibility to truncate specific tables from a database, filtered with the `LIKE` keyword. [#78597](https://github.com/ClickHouse/ClickHouse/pull/78597) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* `clickhouse-local` (and its shorthand alias, `ch`) now use an implicit `FROM table` when there is input data for processing. This closes [#65023](https://github.com/ClickHouse/ClickHouse/issues/65023). Also enabled format inference in clickhouse-local if `--input-format` is not specified and it processes a regular file. [#79085](https://github.com/ClickHouse/ClickHouse/pull/79085) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add [`icebergHash`](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements) and [`icebergBucketTransform`](https://iceberg.apache.org/spec/#bucket-transform-details) functions. Support data files pruning in `Iceberg` tables partitioned with [`bucket transfom`](https://iceberg.apache.org/spec/#partitioning). [#79262](https://github.com/ClickHouse/ClickHouse/pull/79262) ([Daniil Ivanik](https://github.com/divanik)).
+* Add a support for Coalescing Merge Tree. This closes [#78869](https://github.com/ClickHouse/ClickHouse/issues/78869). [#79344](https://github.com/ClickHouse/ClickHouse/pull/79344) ([Konstantin Vedernikov](https://github.com/scanhex12)).
+* Add `stringBytesUniq` and `stringBytesEntropy` functions to search for possibly random or encrypted data. [#79350](https://github.com/ClickHouse/ClickHouse/pull/79350) ([Sachin Kumar Singh](https://github.com/sachinkumarsingh092)).
+* Support `_part_starting_offset` virtual column in MergeTree-family tables. This column represents the cumulative row count of all preceding parts, calculated at query time based on the current part list. The cumulative values are retained throughout query execution and remain effective even after part pruning. Related internal logic has been refactored to support this behavior. [#79417](https://github.com/ClickHouse/ClickHouse/pull/79417) ([Amos Bird](https://github.com/amosbird)).
+* Added a setting `enable_shared_storage_snapshot_in_query` to enable sharing the same storage snapshot across all subqueries in a single query. This ensures consistent reads from the same table, even when the table is referenced multiple times within a query. [#79471](https://github.com/ClickHouse/ClickHouse/pull/79471) ([Amos Bird](https://github.com/amosbird)).
+* Support writing CH JSON columns to Parquet and reading Parquet JSON columns directly as CH JSON columns. [#79649](https://github.com/ClickHouse/ClickHouse/pull/79649) ([Nihal Z. Miaji](https://github.com/nihalzp)).
+* Bundle [`chdig`](https://github.com/azat/chdig/) - TUI interface for ClickHouse (top like) as part of ClickHouse. [#79666](https://github.com/ClickHouse/ClickHouse/pull/79666) ([Azat Khuzhin](https://github.com/azat)).
+* Add `MultiPolygon` support for `pointInPolygon`. [#79773](https://github.com/ClickHouse/ClickHouse/pull/79773) ([Nihal Z. Miaji](https://github.com/nihalzp)).
+* Support geo parquet. This closes [#75317](https://github.com/ClickHouse/ClickHouse/issues/75317). [#79777](https://github.com/ClickHouse/ClickHouse/pull/79777) ([Konstantin Vedernikov](https://github.com/scanhex12)).
+* Add support for querying local filesystem-mounted delta tables via `deltaLakeLocal` table function. [#79781](https://github.com/ClickHouse/ClickHouse/pull/79781) ([roykim98](https://github.com/roykim98)).
+* Added base32 encode/decode functionality. [#79809](https://github.com/ClickHouse/ClickHouse/pull/79809) ([Joanna Hulboj](https://github.com/jh0x)).
+* Clickhouse vector search now supports both pre-filtering and post-filtering and provides related settings for finer control. (issue [#78161](https://github.com/ClickHouse/ClickHouse/issues/78161)). [#79854](https://github.com/ClickHouse/ClickHouse/pull/79854) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Support functions to read WKB format. This partially closes [#43941](https://github.com/ClickHouse/ClickHouse/issues/43941). [#80139](https://github.com/ClickHouse/ClickHouse/pull/80139) ([Konstantin Vedernikov](https://github.com/scanhex12)).
+* Add new setting `cast_string_to_date_time_mode` that allows to choose DateTime parsing mode during cast from String. [#80210](https://github.com/ClickHouse/ClickHouse/pull/80210) ([Pavel Kruglov](https://github.com/Avogar)).
+* Added `Bech32` and `Bech32m` encoding and decoding functions (issue [#40381](https://github.com/ClickHouse/ClickHouse/issues/40381)). [#80239](https://github.com/ClickHouse/ClickHouse/pull/80239) ([George Larionov](https://github.com/glarik)).
+* Support `disk` setting for Atomic and Ordinary DB engines, specifying the disk to store table metadata files. [#80546](https://github.com/ClickHouse/ClickHouse/pull/80546) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Support functions to unpack and compare merge tree parts. [#80573](https://github.com/ClickHouse/ClickHouse/pull/80573) ([Mikhail Artemenko](https://github.com/Michicosun)).
+* `timeSeries*` helper functions to speed up some scenarios when working with time series data: - re-sample the data to the time grid with specified start timestamp, end timestamp and step - calculate PromQL-like `delta`, `rate`, `idelta` and `irate`. [#80590](https://github.com/ClickHouse/ClickHouse/pull/80590) ([Alexander Gololobov](https://github.com/davenger)).
+* Allow filtering of parts selected for querying by the disk they reside on. [#80650](https://github.com/ClickHouse/ClickHouse/pull/80650) ([tanner-bruce](https://github.com/tanner-bruce)).
+* Add a landing page with the list of embedded web tools. It will open when requested by a browser-like user agent. [#81129](https://github.com/ClickHouse/ClickHouse/pull/81129) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Allow for filtering `NULL` values in `arrayFirst`, `arrayFirstIndex`, `arrayLast` & `arrayLastIndex`. Fixes [#81113](https://github.com/ClickHouse/ClickHouse/issues/81113). [#81197](https://github.com/ClickHouse/ClickHouse/pull/81197) ([Lennard Eijsackers](https://github.com/Blokje5)).
+
+## Experimental feature {#experimental-feature}
+
+* Hive metastore catalog for iceberg datalake. [#77677](https://github.com/ClickHouse/ClickHouse/pull/77677) ([Konstantin Vedernikov](https://github.com/scanhex12)).
+* The explicit parameters are supported via key-value pairs. Currently, supported parameters are a mandatory `tokenizer` and two optional `max_rows_per_postings_list` and `ngram_size`. [#80262](https://github.com/ClickHouse/ClickHouse/pull/80262) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* Experimental indexes of type `gin` were renamed to `text`. Existing indexes of type `gin` remain loadable but they will throw an exception (suggesting `text` indexes instead) when one tries to use them in searches. [#80855](https://github.com/ClickHouse/ClickHouse/pull/80855) ([Robert Schulze](https://github.com/rschu1ze)).
+
+## Performance improvement {#performance-improvement}
+
+* Speed up secondary indices by evaluating their expressions on multiple granules at once. [#64109](https://github.com/ClickHouse/ClickHouse/pull/64109) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Introduced threshold (regulated by setting `parallel_hash_join_threshold`) to fall back to the `hash` algorithm when the size of the right table is below the threshold. [#76185](https://github.com/ClickHouse/ClickHouse/pull/76185) ([Nikita Taranov](https://github.com/nickitat)).
+* The existing implementation of `Pipe::resize` creates a single `Resize` or `StrictResize` node by inserting it into the pipeline topology, which then acts as a central hub connecting all input streams (upstream nodes) to a unified set of output streams (downstream nodes). This design leads to contention for the` ExecutingGraph::Node::status_mutex` during pipeline graph execution, especially in high-core-count environments. When pipelines scale to tens or hundreds of streams, this contention results in:. [#77562](https://github.com/ClickHouse/ClickHouse/pull/77562) ([Zhiguo Zhou](https://github.com/ZhiguoZh)).
+* Improve performance of `S3Queue`/`AzureQueue` by allowing `INSERT`s data in parallel (can be enabled with `parallel_inserts=true` queue setting). Previously `S3Queue`/`AzureQueue` can only do the first part of the pipeline in parallel (downloading, parsing), INSERT was single-threaded. And `INSERT`s are almost always the bottleneck. Now it will scale almost linear with `processing_threads_num`. [#77671](https://github.com/ClickHouse/ClickHouse/pull/77671) ([Azat Khuzhin](https://github.com/azat)).
+* Change the compact part format to save marks for each substream to be able to read individual sub-columns. The old compact format is still supported for reads and can be enabled for writes using MergeTree setting `write_marks_for_substreams_in_compact_parts`. It's disabled by default for safer upgrades as it changes the compact parts storage. It will be enabled by default in one of the next releases. [#77940](https://github.com/ClickHouse/ClickHouse/pull/77940) ([Pavel Kruglov](https://github.com/Avogar)).
+* Introduced new setting`use_skip_indexes_in_final_exact_mode`. If a query on a `ReplacingMergeTree` table has the `FINAL` clause, reading only table ranges based on skip indexes may produce incorrect result. This setting can ensure that correct results are returned by scanning newer parts that have overlap with primary key ranges returned by the skip index. Set to 0 to disable, 1 to enable. [#78350](https://github.com/ClickHouse/ClickHouse/pull/78350) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Now we use the number of replicas to determine the task size for reading with parallel replicas enabled. This provides better work distribution between replicas when the amount of data to read is not very large. [#78695](https://github.com/ClickHouse/ClickHouse/pull/78695) ([Nikita Taranov](https://github.com/nickitat)).
+* Allow parallel merging of `uniqExact` states during the final stage of distributed aggregation. [#78703](https://github.com/ClickHouse/ClickHouse/pull/78703) ([Nikita Taranov](https://github.com/nickitat)).
+* Fix possible performance degradation of the parallel merging of `uniqExact` states for aggregation with key. [#78724](https://github.com/ClickHouse/ClickHouse/pull/78724) ([Nikita Taranov](https://github.com/nickitat)).
+#* Replace `DELETE FROM ... WHERE 1` queries to `TRUNCATE`. (Reverted). [#78739](https://github.com/ClickHouse/ClickHouse/pull/78739) ([Konstantin Vedernikov](https://github.com/scanhex12)).
+* Reduce the number of List Blobs API calls to Azure storage. [#78860](https://github.com/ClickHouse/ClickHouse/pull/78860) ([Julia Kartseva](https://github.com/jkartseva)).
+* Merge equality conditions from filter query plan step into `JOIN` condition if possible to allow using them as hash table keys. [#78877](https://github.com/ClickHouse/ClickHouse/pull/78877) ([Dmitry Novik](https://github.com/novikd)).
+* Improve performance of hive path parsing by using `extractKeyValuePairs` instead of regex. [#79067](https://github.com/ClickHouse/ClickHouse/pull/79067) ([Arthur Passos](https://github.com/arthurpassos)).
+* Fix performance of the distributed `INSERT SELECT` with parallel replicas. [#79441](https://github.com/ClickHouse/ClickHouse/pull/79441) ([Azat Khuzhin](https://github.com/azat)).
+* Allow moving conditions with sub-columns to `PREWHERE`. [#79489](https://github.com/ClickHouse/ClickHouse/pull/79489) ([Pavel Kruglov](https://github.com/Avogar)).
+* Performance improvements to all bloom filter types. [#79800](https://github.com/ClickHouse/ClickHouse/pull/79800) ([Delyan Kratunov](https://github.com/dkratunov)).
+* Prevent `LogSeriesLimiter` from doing cleanup on every construction, avoiding lock contention and performance regressions in high-concurrency scenarios. [#79864](https://github.com/ClickHouse/ClickHouse/pull/79864) ([filimonov](https://github.com/filimonov)).
+* Enable `compile_expressions` (JIT compiler for fragments of ordinary expressions) by default. This closes [#51264](https://github.com/ClickHouse/ClickHouse/issues/51264) and [#56386](https://github.com/ClickHouse/ClickHouse/issues/56386) and [#66486](https://github.com/ClickHouse/ClickHouse/issues/66486). [#79907](https://github.com/ClickHouse/ClickHouse/pull/79907) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Speedup queries with trivial count optimization. [#79945](https://github.com/ClickHouse/ClickHouse/pull/79945) ([Raúl Marín](https://github.com/Algunenano)).
+* Introduced a happy path in `UniqExactSet::merge` when one of the sets is empty. Also, now if the LHS set is two-level and the RHS is single-level, we won't do the conversion to two-level for the RHS. [#79971](https://github.com/ClickHouse/ClickHouse/pull/79971) ([Nikita Taranov](https://github.com/nickitat)).
+* Add `__attribute__((always_inline))` to `convertDecimalsImpl`. [#79999](https://github.com/ClickHouse/ClickHouse/pull/79999) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Set `input_format_parquet_bloom_filter_push_down` to true by default. Also, fix a mistake in the settings changes history. [#80058](https://github.com/ClickHouse/ClickHouse/pull/80058) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+#* Make logging asynchronous by default. You can disable this by setting `false` under ``. [#80125](https://github.com/ClickHouse/ClickHouse/pull/80125) ([Raúl Marín](https://github.com/Algunenano)).
+* Improve memory reuse efficiency and reduce page faults when using the two-level hash tables. [#80245](https://github.com/ClickHouse/ClickHouse/pull/80245) ([Jiebin Sun](https://github.com/jiebinn)).
+* Avoid unnecessary update and reduce lock contention in QueryConditionCache. [#80247](https://github.com/ClickHouse/ClickHouse/pull/80247) ([Jiebin Sun](https://github.com/jiebinn)).
+* Small optimization of `concatenateBlocks`, which could be good for parallel Hash join. [#80328](https://github.com/ClickHouse/ClickHouse/pull/80328) ([李扬](https://github.com/taiyang-li)).
+* When selecting mark ranges from the primary key range, binary search cannot be used if the primary key is wrapped with functions. This PR improves this limitation: binary search can still be applied when the primary key is wrapped with an always monotonic function chain, or when the RPN contains an element that is always true. This PR closes [#45536](https://github.com/ClickHouse/ClickHouse/issues/45536). [#80597](https://github.com/ClickHouse/ClickHouse/pull/80597) ([zoomxi](https://github.com/zoomxi)).
+* Improve the shutdown speed of Kafka engine (remove an extra 3 seconds delay in case of multiple Kafka tables). [#80796](https://github.com/ClickHouse/ClickHouse/pull/80796) ([Azat Khuzhin](https://github.com/azat)).
+* Reduce memory usage of async inserts and improve the performance of insert queries. [#80972](https://github.com/ClickHouse/ClickHouse/pull/80972) ([Raúl Marín](https://github.com/Algunenano)).
+* Don't profile processors if the log table is disabled. [#81256](https://github.com/ClickHouse/ClickHouse/pull/81256) ([Raúl Marín](https://github.com/Algunenano)).
+* Speed up `toFixedString` when the source is exactly what's requested. [#81257](https://github.com/ClickHouse/ClickHouse/pull/81257) ([Raúl Marín](https://github.com/Algunenano)).
+* Don't process quota values if the user is not limited. [#81549](https://github.com/ClickHouse/ClickHouse/pull/81549) ([Raúl Marín](https://github.com/Algunenano)).
+* Make ProcfsMetricsProvider thread_local to keep files open between tasks. [#81576](https://github.com/ClickHouse/ClickHouse/pull/81576) ([Raúl Marín](https://github.com/Algunenano)).
+* Fixed performance regression in memory tracking. [#81694](https://github.com/ClickHouse/ClickHouse/pull/81694) ([Michael Kolupaev](https://github.com/al13n321)).
+
+## Improvement {#improvement}
+
+#* `clickhouse-local` will retain its databases after restart if you specify the `--path` command line argument. This closes [#50647](https://github.com/ClickHouse/ClickHouse/issues/50647). This closes [#49947](https://github.com/ClickHouse/ClickHouse/issues/49947). [#71722](https://github.com/ClickHouse/ClickHouse/pull/71722) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* `EXPLAIN SYNTAX` now uses a new analyzer. It returns an abstract syntax tree (AST) built from the query tree. Added option `query_tree_passes` to control the number of passes to be executed before converting the query tree to the AST. [#74536](https://github.com/ClickHouse/ClickHouse/pull/74536) ([Vladimir Cherkasov](https://github.com/vdimir)).
+#* Use SLRU cache policy in filesystem cache by default. [#75072](https://github.com/ClickHouse/ClickHouse/pull/75072) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Refactored the logic of pushing to views. [#77309](https://github.com/ClickHouse/ClickHouse/pull/77309) ([Sema Checherinda](https://github.com/CheSema)).
+* Object storage cluster table functions (e.g. `s3Cluster`) will now assign files to replicas for reading based on consistent hash to improve cache locality. [#77326](https://github.com/ClickHouse/ClickHouse/pull/77326) ([Andrej Hoos](https://github.com/adikus)).
+* Refresh S3 credentials after error `AuthenticationRequired`. [#77353](https://github.com/ClickHouse/ClickHouse/pull/77353) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Embed proxy configuration in some HTTP buffers with the help of builders. [#77693](https://github.com/ClickHouse/ClickHouse/pull/77693) ([Arthur Passos](https://github.com/arthurpassos)).
+* Added dictionary metrics to `system.asynchronous_metrics` - `DictionaryMaxUpdateDelay` - The maximum delay(in seconds) of dictionary update. - `DictionaryTotalFailedUpdates` - Number of errors since last successful loading in all dictionaries. [#78175](https://github.com/ClickHouse/ClickHouse/pull/78175) ([Vlad](https://github.com/codeworse)).
+* Add functions `divideOrNull`,`moduloOrNull`, `intDivOrNull`,`positiveModuloOrNull` to return NULL when right argument is zero. [#78276](https://github.com/ClickHouse/ClickHouse/pull/78276) ([kevinyhzou](https://github.com/KevinyhZou)).
+* Extend the `isIPAddressInRange` function to String, IPv4, IPv6, Nullable(String) Nullable(IPv4) and Nullable(IPv6) data types. [#78364](https://github.com/ClickHouse/ClickHouse/pull/78364) ([YjyJeff](https://github.com/YjyJeff)).
+* Change PostgreSQL engine connection pooler settings dynamically. [#78414](https://github.com/ClickHouse/ClickHouse/pull/78414) ([Samay Sharma](https://github.com/samay-sharma)).
+* Allow to specify `_part_offset` in a normal projection. This is the first step to build a projection index. It can be used with [#58224](https://github.com/ClickHouse/ClickHouse/issues/58224) and can help improve https://github.com/ClickHouse/ClickHouse/pull/63207. [#78429](https://github.com/ClickHouse/ClickHouse/pull/78429) ([Amos Bird](https://github.com/amosbird)).
+* Improve the sharding key optimization on distributed queries. [#78452](https://github.com/ClickHouse/ClickHouse/pull/78452) ([fhw12345](https://github.com/fhw12345)).
+* Add new columns(`create_query` and `source`) for `system.named_collections`. Closes [#78179](https://github.com/ClickHouse/ClickHouse/issues/78179). [#78582](https://github.com/ClickHouse/ClickHouse/pull/78582) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+* Added field `condition` to system table `system.query_condition_cache`. It stores the plaintext condition whose hash is used as a key in the query condition cache. [#78671](https://github.com/ClickHouse/ClickHouse/pull/78671) ([Robert Schulze](https://github.com/rschu1ze)).
+* Implement Kafka re-balance like logic for StorageKafka2 using ClickHouse Keeper. For each replica we support two types of partition locks: permanent locks and temporary locks. The replica tries to hold permanent locks as long as possible, at any given time there are no more than `all_topic_partitions / active_replicas_count` (here `all_topic_partitions` is the number of all partitions, `active_replicas_count` is the number of active replicas) permanent locks on the replica, if there are more, then the replica releases some partitions. Some partitions are temporarily held by the replica. The maximum number of temporary locks on a replica changes dynamically to give other replicas a chance to take some partitions into permanent locks. When updating temporary locks, the replica releases them all and tries to take some others again. [#78726](https://github.com/ClickHouse/ClickHouse/pull/78726) ([Daria Fomina](https://github.com/sinfillo)).
+* Add table settings for SASL configuration and credentials to the `Kafka` table engine. This allows configuring SASL-based authentication to Kafka and Kafka-compatible systems directly in the `CREATE TABLE` statement rather than having to use configuration files or named collections. [#78810](https://github.com/ClickHouse/ClickHouse/pull/78810) ([Christoph Wurm](https://github.com/cwurm)).
+* Add a warning about databases that were potentially created to save broken tables. [#78841](https://github.com/ClickHouse/ClickHouse/pull/78841) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Vector similarity indexes can now be created on top of `BFloat16` columns. [#78850](https://github.com/ClickHouse/ClickHouse/pull/78850) ([Robert Schulze](https://github.com/rschu1ze)).
+* Support unix timestamps with a fractional part in best-effort DateTime64 parsing. [#78908](https://github.com/ClickHouse/ClickHouse/pull/78908) ([Pavel Kruglov](https://github.com/Avogar)).
+* In storage DeltaLake delta-kernel implementation fix for columnMappingMode.name, add tests for schema evolution. [#78921](https://github.com/ClickHouse/ClickHouse/pull/78921) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Improve insert into Variant column in Values format by better conversion of values. [#78923](https://github.com/ClickHouse/ClickHouse/pull/78923) ([Pavel Kruglov](https://github.com/Avogar)).
+* Add `_time` virtual column in `S3Queue` engine. [#78926](https://github.com/ClickHouse/ClickHouse/pull/78926) ([Anton Ivashkin](https://github.com/ianton-ru)).
+* The `tokens` function was extended to accept an additional "tokenizer" argument plus further tokenizer-specific arguments. [#79001](https://github.com/ClickHouse/ClickHouse/pull/79001) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* The `SHOW CLUSTER` statement now expands macros (if any) in its argument. [#79006](https://github.com/ClickHouse/ClickHouse/pull/79006) ([arf42](https://github.com/arf42)).
+* Hash functions now support `NULL`s inside arrays, tuples, and maps. (issues [#48365](https://github.com/ClickHouse/ClickHouse/issues/48365) and [#48623](https://github.com/ClickHouse/ClickHouse/issues/48623)). [#79008](https://github.com/ClickHouse/ClickHouse/pull/79008) ([Michael Kolupaev](https://github.com/al13n321)).
+* Support for a refresh in read-only MergeTree tables. [#79033](https://github.com/ClickHouse/ClickHouse/pull/79033) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+#* Update cctz to 2025a. [#79043](https://github.com/ClickHouse/ClickHouse/pull/79043) ([Raúl Marín](https://github.com/Algunenano)).
+* Make settings controlling connection drop on overloaded CPU hot-reloadable. [#79052](https://github.com/ClickHouse/ClickHouse/pull/79052) ([Alexey Katsman](https://github.com/alexkats)).
+* It's better for usability. [#79066](https://github.com/ClickHouse/ClickHouse/pull/79066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Enable the query condition cache by default. [#79080](https://github.com/ClickHouse/ClickHouse/pull/79080) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+#* Make tabs undo-able in the Web UI. This closes [#71284](https://github.com/ClickHouse/ClickHouse/issues/71284). [#79084](https://github.com/ClickHouse/ClickHouse/pull/79084) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Remove settings during `recoverLostReplica` the same as was done in https://github.com/ClickHouse/ClickHouse/pull/78637. [#79113](https://github.com/ClickHouse/ClickHouse/pull/79113) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Add ProfileEvents ParquetReadRowGroups and ParquetPrunedRowGroups to profile parquet index prune. [#79180](https://github.com/ClickHouse/ClickHouse/pull/79180) ([flynn](https://github.com/ucasfl)).
+* Add container prefix to data paths reported in system.tables for plain disks in Azure blob storage, making reporting consistent with S3 and GCP. [#79241](https://github.com/ClickHouse/ClickHouse/pull/79241) ([Julia Kartseva](https://github.com/jkartseva)).
+* Support altering a database on cluster. [#79242](https://github.com/ClickHouse/ClickHouse/pull/79242) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Explicitly skip missed runs of statistics collection for QueryMetricLog, otherwise the log will take a long time to catch up with the current time. [#79257](https://github.com/ClickHouse/ClickHouse/pull/79257) ([Mikhail Artemenko](https://github.com/Michicosun)).
+* Added an ability to apply lightweight deletes on the fly (with settings `lightweight_deletes_sync = 0`, `apply_mutations_on_fly = 1`. [#79281](https://github.com/ClickHouse/ClickHouse/pull/79281) ([Anton Popov](https://github.com/CurtizJ)).
+* Optimized `ALTER ... DELETE` mutations for parts in which all rows should be deleted. Now, in such cases an empty part is created instead of original without executing a mutation. [#79307](https://github.com/ClickHouse/ClickHouse/pull/79307) ([Anton Popov](https://github.com/CurtizJ)).
+* Some small optimizations to `CHColumnToArrowColumn`. [#79308](https://github.com/ClickHouse/ClickHouse/pull/79308) ([Bharat Nallan](https://github.com/bharatnc)).
+* The setting `allow_archive_path_syntax` was marked as experimental by mistake. Add a test to prevent having experimental settings enabled by default. [#79320](https://github.com/ClickHouse/ClickHouse/pull/79320) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Made page cache settings adjustable on a per-query level. This is needed for faster experimentation and for the possibility of fine-tuning for high-throughput and low-latency queries. [#79337](https://github.com/ClickHouse/ClickHouse/pull/79337) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Do not print number tips in pretty formats for numbers that look like most of the 64-bit hashes. This closes [#79334](https://github.com/ClickHouse/ClickHouse/issues/79334). [#79338](https://github.com/ClickHouse/ClickHouse/pull/79338) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* If data in the pretty format is displayed in the terminal, and a subsequent block has the same column widths, it can continue from the previous block, glue it to the previous block by moving the cursor up. This closes [#79333](https://github.com/ClickHouse/ClickHouse/issues/79333). The feature is controlled by the new setting, `output_format_pretty_glue_chunks`. [#79339](https://github.com/ClickHouse/ClickHouse/pull/79339) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Colors of graphs on the advanced dashboards will be calculated from the hash of the corresponding query. This makes it easier to remember and locate a graph while scrolling the dashboard. [#79341](https://github.com/ClickHouse/ClickHouse/pull/79341) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add asynchronous metric, `FilesystemCacheCapacity` - total capacity in the `cache` virtual filesystem. This is useful for global infrastructure monitoring. [#79348](https://github.com/ClickHouse/ClickHouse/pull/79348) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Optimize access to system.parts (read columns/indexes size only when requested). [#79352](https://github.com/ClickHouse/ClickHouse/pull/79352) ([Azat Khuzhin](https://github.com/azat)).
+* Select important fields for query `'SHOW CLUSTER '` instead of all fields. [#79368](https://github.com/ClickHouse/ClickHouse/pull/79368) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Allow to specify storage settings for `DatabaseCatalog`. [#79407](https://github.com/ClickHouse/ClickHouse/pull/79407) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Support local storage in delta kernel. [#79416](https://github.com/ClickHouse/ClickHouse/pull/79416) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add a query level setting to enable delta-kernel-rs: `allow_experimental_delta_kernel_rs`. [#79418](https://github.com/ClickHouse/ClickHouse/pull/79418) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix possible endless loop when listing blobs from Azure/S3 blob storage. [#79425](https://github.com/ClickHouse/ClickHouse/pull/79425) ([Alexander Gololobov](https://github.com/davenger)).
+* Now, ClickHouse also accepts query parameters as `param-` (dash) along with `param_` (underscore). This closes [#63093](https://github.com/ClickHouse/ClickHouse/issues/63093). [#79429](https://github.com/ClickHouse/ClickHouse/pull/79429) ([Engel Danila](https://github.com/aaaengel)).
+#* Add filesystem cache setting `max_size_ratio_to_total_space`. [#79460](https://github.com/ClickHouse/ClickHouse/pull/79460) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Detailed warning msg for bandwidth discount when copying data from local to remote S3 with checksum enabled. [#79464](https://github.com/ClickHouse/ClickHouse/pull/79464) ([VicoWu](https://github.com/VicoWu)).
+* For `clickhouse-benchmark` reconfigure `reconnect` option to take 0, 1 or N as values for reconnecting accordingly. [#79465](https://github.com/ClickHouse/ClickHouse/pull/79465) ([Sachin Kumar Singh](https://github.com/sachinkumarsingh092)).
+* Add setting `input_format_max_block_size_bytes` to limit blocks created in input formats in bytes. It can help to avoid high memory usage during data import when rows contains large values. [#79495](https://github.com/ClickHouse/ClickHouse/pull/79495) ([Pavel Kruglov](https://github.com/Avogar)).
+* Enhance sparseGrams speed and memory usage. [#79517](https://github.com/ClickHouse/ClickHouse/pull/79517) ([Konstantin Vedernikov](https://github.com/scanhex12)).
+* Avoid extra copying of the block during insertion into Compact part when possible. [#79536](https://github.com/ClickHouse/ClickHouse/pull/79536) ([Pavel Kruglov](https://github.com/Avogar)).
+* Enable `DeltaLake` storage delta-kernel implementation by default. [#79541](https://github.com/ClickHouse/ClickHouse/pull/79541) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* If reading from an URL involves multiple redirects, setting `enable_url_encoding` is correctly applied across all redirects in the chain. [#79563](https://github.com/ClickHouse/ClickHouse/pull/79563) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Allow `ALTER TABLE ... MOVE|REPLACE PARTITION` for tables on different plain_rewritable disks. [#79566](https://github.com/ClickHouse/ClickHouse/pull/79566) ([Julia Kartseva](https://github.com/jkartseva)).
+* Support scalar correlated subqueries in the `WHERE` clause. Closes [#6697](https://github.com/ClickHouse/ClickHouse/issues/6697). [#79600](https://github.com/ClickHouse/ClickHouse/pull/79600) ([Dmitry Novik](https://github.com/novikd)).
+* Previously when `input_format_parquet_max_block_size = 0` ClickHouse would stuck. Now this behaviour is fixed. This closes [#79394](https://github.com/ClickHouse/ClickHouse/issues/79394). [#79601](https://github.com/ClickHouse/ClickHouse/pull/79601) ([abashkeev](https://github.com/abashkeev)).
+* Add `throw_on_error` setting for startup_scripts: when `throw_on_error` is true, the server will not start unless all queries complete successfully. By default, `throw_on_error` is false, preserving the previous behavior. [#79732](https://github.com/ClickHouse/ClickHouse/pull/79732) ([Aleksandr Musorin](https://github.com/AVMusorin)).
+* The vector similarity index is now also used if the reference vector is of type `Array(BFloat16)`. [#79745](https://github.com/ClickHouse/ClickHouse/pull/79745) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Add `last_error_message`, `last_error_trace` and `query_id` to the `system.error_log` table. Related ticket [#75816](https://github.com/ClickHouse/ClickHouse/issues/75816). [#79836](https://github.com/ClickHouse/ClickHouse/pull/79836) ([Andrei Tinikov](https://github.com/Dolso)).
+#* Enable sending crash reports by default. This can be turned off in the server's configuration file. [#79838](https://github.com/ClickHouse/ClickHouse/pull/79838) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* System table `system.functions` now shows in which ClickHouse version functions were first introduced. [#79839](https://github.com/ClickHouse/ClickHouse/pull/79839) ([Robert Schulze](https://github.com/rschu1ze)).
+* Added `access_control_improvements.enable_user_name_access_type` setting. This setting allows enabling/disabling of precise grants for users/roles, introduced in https://github.com/ClickHouse/ClickHouse/pull/72246. You may want to turn this setting off in case you have a cluster with the replicas older than 25.1. [#79842](https://github.com/ClickHouse/ClickHouse/pull/79842) ([pufit](https://github.com/pufit)).
+* Proper implementation of `ASTSelectWithUnionQuery::clone()` method now takes into account `is_normalized` field as well. This might help with [#77569](https://github.com/ClickHouse/ClickHouse/issues/77569). [#79909](https://github.com/ClickHouse/ClickHouse/pull/79909) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Support correlated subqueries in the projection list in simple cases. [#79925](https://github.com/ClickHouse/ClickHouse/pull/79925) ([Dmitry Novik](https://github.com/novikd)).
+* Fix the inconsistent formatting of certain queries with the `EXCEPT` operator. If the left-hand side of the EXCEPT operator ends with `*`, the formatted query loses parentheses and is then parsed as a `*` with the `EXCEPT` modifier. These queries are found by the fuzzer and are unlikely to be found in practice. This closes [#79950](https://github.com/ClickHouse/ClickHouse/issues/79950). [#79952](https://github.com/ClickHouse/ClickHouse/pull/79952) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Allow to add `http_response_headers` in `http_handlers` of any kind. [#79975](https://github.com/ClickHouse/ClickHouse/pull/79975) ([Andrey Zvonov](https://github.com/zvonand)).
+* Small improvement in JSON type parsing by using cache of variants deserialization order. [#79984](https://github.com/ClickHouse/ClickHouse/pull/79984) ([Pavel Kruglov](https://github.com/Avogar)).
+* Allow moving `GLOBAL [NOT] IN` predicate to `PREWHERE` clause if applicable. [#79996](https://github.com/ClickHouse/ClickHouse/pull/79996) ([Eduard Karacharov](https://github.com/korowa)).
+* Add setting `s3_slow_all_threads_after_network_error`. [#80035](https://github.com/ClickHouse/ClickHouse/pull/80035) ([Vitaly Baranov](https://github.com/vitlibar)).
+* The logging level about the selected parts to merge was wrong (Information). Closes [#80061](https://github.com/ClickHouse/ClickHouse/issues/80061). [#80062](https://github.com/ClickHouse/ClickHouse/pull/80062) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Function reverse support Tuple data type. Closes [#80053](https://github.com/ClickHouse/ClickHouse/issues/80053). [#80083](https://github.com/ClickHouse/ClickHouse/pull/80083) ([flynn](https://github.com/ucasfl)).
+* Setting `enble_url_encoding` default value is now set to `False`. [#80088](https://github.com/ClickHouse/ClickHouse/pull/80088) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* This tiny patch resolves [#75817](https://github.com/ClickHouse/ClickHouse/issues/75817): allows get `auxiliary_zookeepers` data from `system.zookeeper` table. [#80146](https://github.com/ClickHouse/ClickHouse/pull/80146) ([Nikolay Govorov](https://github.com/mrdimidium)).
+* Vector search using the vector similarity index is now beta (previously experimental). [#80164](https://github.com/ClickHouse/ClickHouse/pull/80164) ([Robert Schulze](https://github.com/rschu1ze)).
+* Add asynchronous metrics about the server's TCP sockets. This improves the observability. Closes [#80187](https://github.com/ClickHouse/ClickHouse/issues/80187). [#80188](https://github.com/ClickHouse/ClickHouse/pull/80188) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Function `tokens` now supports `string` as a tokenizer. [#80195](https://github.com/ClickHouse/ClickHouse/pull/80195) ([Robert Schulze](https://github.com/rschu1ze)).
+* Parallel replicas: avoid waiting for slow unused replicas if all read tasks have been assigned to other replicas. [#80199](https://github.com/ClickHouse/ClickHouse/pull/80199) ([Igor Nikonov](https://github.com/devcrafter)).
+* Support `anylast_respect_nulls` and `any_respect_nulls` in `simpleAggregateFunction`. [#80219](https://github.com/ClickHouse/ClickHouse/pull/80219) ([Diskein](https://github.com/Diskein)).
+* Remove unnecessary call `adjustCreateQueryForBackup()` for replicated databases. [#80282](https://github.com/ClickHouse/ClickHouse/pull/80282) ([Vitaly Baranov](https://github.com/vitlibar)).
+#* Allow extra options (that go after `--` like `-- --config.value='abc'`) in `clickhouse-local` without the equality sign. Closes [#80292](https://github.com/ClickHouse/ClickHouse/issues/80292). [#80293](https://github.com/ClickHouse/ClickHouse/pull/80293) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Highlight metacharacters in `SHOW ... LIKE` queries. This closes [#80275](https://github.com/ClickHouse/ClickHouse/issues/80275). [#80297](https://github.com/ClickHouse/ClickHouse/pull/80297) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+#* Make SQL UDF persistent in `clickhouse-local`. The previously created function will be loaded at startup. This closes [#80085](https://github.com/ClickHouse/ClickHouse/issues/80085). [#80300](https://github.com/ClickHouse/ClickHouse/pull/80300) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Support comparison between `Time`/`Time64`. [#80327](https://github.com/ClickHouse/ClickHouse/pull/80327) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix description in explain plan for a preliminary distinct step. [#80330](https://github.com/ClickHouse/ClickHouse/pull/80330) ([UnamedRus](https://github.com/UnamedRus)).
+* Allow use of named collections in ODBC/JDBC. [#80334](https://github.com/ClickHouse/ClickHouse/pull/80334) ([Andrey Zvonov](https://github.com/zvonand)).
+* Enable multiple-projection filtering support, allowing to use more than one projection for part-level filtering. This addresses [#55525](https://github.com/ClickHouse/ClickHouse/issues/55525). This is the second step to implement projection index, following [#78429](https://github.com/ClickHouse/ClickHouse/issues/78429). [#80343](https://github.com/ClickHouse/ClickHouse/pull/80343) ([Amos Bird](https://github.com/amosbird)).
+* Metrics for the number of readonly and broken disks. Indicator logs when DiskLocalCheckThread is started. [#80391](https://github.com/ClickHouse/ClickHouse/pull/80391) ([VicoWu](https://github.com/VicoWu)).
+* Implement support for `s3_plain_rewritable` storage with projections. In previous versions, metadata objects in S3 referencing projections would not get updated when moved. Closes [#70258](https://github.com/ClickHouse/ClickHouse/issues/70258). [#80393](https://github.com/ClickHouse/ClickHouse/pull/80393) ([Sav](https://github.com/sberss)).
+* Parallel replicas uses separate connection timeout, see `parallel_replicas_connect_timeout_ms` setting. Before `connect_timeout_with_failover_ms`/`connect_timeout_with_failover_secure_ms` settings were used as connection timeout values for parallel replicas queries (1 second by default). [#80421](https://github.com/ClickHouse/ClickHouse/pull/80421) ([Igor Nikonov](https://github.com/devcrafter)).
+* The `SYSTEM UNFREEZE` command will not try to look up parts in readonly and write-once disks. This closes [#80430](https://github.com/ClickHouse/ClickHouse/issues/80430). [#80432](https://github.com/ClickHouse/ClickHouse/pull/80432) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Changed log level of a merged parts message from INFO to TRACE. [#80476](https://github.com/ClickHouse/ClickHouse/pull/80476) ([Hans Krutzer](https://github.com/hkrutzer)).
+* Implement flattened serialization for Dynamic and JSON in Native format that allows to serialize/deserialize Dynamic and JSON data without special structures like shared variant for Dynamic and shared data for JSON. This serialization can be enabled by setting `output_format_native_use_flattened_dynamic_and_json_serialization`. This serialization can be used for easier support for Dynamic and JSON in TCP protocol in clients in different languages. [#80499](https://github.com/ClickHouse/ClickHouse/pull/80499) ([Pavel Kruglov](https://github.com/Avogar)).
+* Changes the default behavior of partition pruning for Iceberg table. [#80583](https://github.com/ClickHouse/ClickHouse/pull/80583) ([Melvyn Peignon](https://github.com/melvynator)).
+* Add two new ProfileEvents for index search algorithm observability: `IndexBinarySearchAlgorithm` and `IndexGenericExclusionSearchAlgorithm`. [#80679](https://github.com/ClickHouse/ClickHouse/pull/80679) ([Pablo Marcos](https://github.com/pamarcos)).
+* Do not complain about unsupported `MADV_POPULATE_WRITE` for older kernels in logs (to avoid logs polluting). [#80704](https://github.com/ClickHouse/ClickHouse/pull/80704) ([Robert Schulze](https://github.com/rschu1ze)).
+* Added support for Date32, DateTime64 in TTL. [#80710](https://github.com/ClickHouse/ClickHouse/pull/80710) ([Andrey Zvonov](https://github.com/zvonand)).
+* Adjust compatibility values for `max_merge_delayed_streams_for_parallel_write`. [#80760](https://github.com/ClickHouse/ClickHouse/pull/80760) ([Azat Khuzhin](https://github.com/azat)).
+* Fix a crash: if an exception is thrown in an attempt to remove a temporary file (they are used for spilling temporary data on disk) in the destructor, the program can terminate. [#80776](https://github.com/ClickHouse/ClickHouse/pull/80776) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add `IF EXISTS` modifier to `SYSTEM SYNC REPLICA`. [#80810](https://github.com/ClickHouse/ClickHouse/pull/80810) ([Raúl Marín](https://github.com/Algunenano)).
+* Extend the exception message about "Having zero bytes, but read range is not finished...", add finished_download_time column to system.filesystem_cache'. [#80849](https://github.com/ClickHouse/ClickHouse/pull/80849) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Previously, `packed` storage was not supported for the full-text index, because the segment id was updated on-fly by reading and writing (`.gin_sid`) file on disk. In case of packed storage, reading a value from the uncommited file is not supported and this led to an issue. [#80852](https://github.com/ClickHouse/ClickHouse/pull/80852) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* Add a search algorithm section to `EXPLAIN` output when using it with `indexes = 1`. It shows either "binary search" or "generic exclusion search". [#80881](https://github.com/ClickHouse/ClickHouse/pull/80881) ([Pablo Marcos](https://github.com/pamarcos)).
+* At the beginning of 2024, `prefer_column_name_to_alias` was hardcoded to True for MySQL handler because the new analyzer was not enabled by default. Now, it has been unhardcoded. [#80916](https://github.com/ClickHouse/ClickHouse/pull/80916) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Now `system.iceberg_history` shows history for catalogs databases like glue or iceberg rest. Also renamed `table_name` and `database_name` columns to `table` and `database` in `system.iceberg_history` for consistency. [#80975](https://github.com/ClickHouse/ClickHouse/pull/80975) ([alesapin](https://github.com/alesapin)).
+* Allow read-only mode for the `merge` table function, so the `CREATE TEMPORARY TABLE` grant is not required for using it. [#80981](https://github.com/ClickHouse/ClickHouse/pull/80981) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Better introspection of in-memory caches (expose information about caches in `system.metrics` over incomplete `system.asynchronouse_metrics`). Add in-memory caches size (in bytes) into `dashboard.html`. `VectorSimilarityIndexCacheSize`/`IcebergMetadataFilesCacheSize` has been renamed to `VectorSimilarityIndexCacheBytes`/`IcebergMetadataFilesCacheBytes`. [#81023](https://github.com/ClickHouse/ClickHouse/pull/81023) ([Azat Khuzhin](https://github.com/azat)).
+* Ignore databases with engines that can't contain RocksDB tables while reading from system.rocksdb. [#81083](https://github.com/ClickHouse/ClickHouse/pull/81083) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Allow `filesystem_caches` and `named_collections` in the `clickhouse-local` configuration file. [#81105](https://github.com/ClickHouse/ClickHouse/pull/81105) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix highlighting of `PARTITION BY` in `INSERT` queries. In previous versions, `PARTITION BY` was not highlighted as a keyword. [#81106](https://github.com/ClickHouse/ClickHouse/pull/81106) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+#* Two mini improvements in Web UI: correctly handle queries without output, such as `CREATE`, `INSERT` (until recently, these queries resulted in an infinite spinner); - when double clicking on a table, scroll to the top. [#81131](https://github.com/ClickHouse/ClickHouse/pull/81131) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+#* Update `c-ares` to `v1.34.5`. [#81159](https://github.com/ClickHouse/ClickHouse/pull/81159) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+#* Upgrade curl to 8.14 to address CVE-2025-5025 and CVE-2025-4947. [#81171](https://github.com/ClickHouse/ClickHouse/pull/81171) ([larryluogit](https://github.com/larryluogit)).
+#* Upgrade libarchive to 3.7.9 to address: CVE-2024-20696 CVE-2025-25724 CVE-2024-48958 CVE-2024-57970 CVE-2025-1632 CVE-2024-48957 CVE-2024-48615. [#81174](https://github.com/ClickHouse/ClickHouse/pull/81174) ([larryluogit](https://github.com/larryluogit)).
+#* Upgrade libxml2 to 2.14.3. [#81187](https://github.com/ClickHouse/ClickHouse/pull/81187) ([larryluogit](https://github.com/larryluogit)).
+* `MemoryResidentWithoutPageCache` provides the amount of physical memory used by the server process, excluding userspace page cache, in bytes. This provides a more accurate view of actual memory usage when userspace page cache is utilized. When userspace page cache is disabled, this value equals MemoryResident. [#81233](https://github.com/ClickHouse/ClickHouse/pull/81233) ([Jayme Bird](https://github.com/jaymebrd)).
+* Mark manually logged exceptions in client, local server, keeper client and disks app as logged, so that they are not logged twice. [#81271](https://github.com/ClickHouse/ClickHouse/pull/81271) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Setting `use_skip_indexes_if_final` and `use_skip_indexes_if_final_exact_mode` now default to `True`. Queries with `FINAL` clause will now use skip indexes (if applicable) to shortlist granules and also read any additional granules corresponding to matching primary key ranges. Users needing earlier behaviour of approximate/imprecise results can set `use_skip_indexes_if_final_exact_mode` to FALSE after careful evaluation. [#81331](https://github.com/ClickHouse/ClickHouse/pull/81331) ([Shankar Iyer](https://github.com/shankar-iyer)).
+#* When you have multiple queries in the web UI, it will run the one under the cursor. Continuation of [#80977](https://github.com/ClickHouse/ClickHouse/issues/80977). [#81354](https://github.com/ClickHouse/ClickHouse/pull/81354) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* This PR addresses issues with the implementation of `is_strict` in the monotonicity checks for conversion functions. Currently, some conversion functions, such as toFloat64(UInt32) and toDate(UInt8), incorrectly return is_strict as false when they should return true. [#81359](https://github.com/ClickHouse/ClickHouse/pull/81359) ([zoomxi](https://github.com/zoomxi)).
+#* In filesystem with journal `mkdir` is written to the journal of filesystem which is persisted to disk. In case of slow disk this can take long time. Definitely make sense to move out from reserve lock scope. [#81371](https://github.com/ClickHouse/ClickHouse/pull/81371) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* When checking if a `KeyCondition` matches a continuous range, if the key is wrapped with a non-strict function chain, a `Constraint::POINT` may needs to be converted to a`Constraint::RANGE`. For example: `toDate(event_time) = '2025-06-03'` implies a range for `event_time`: ['2025-06-03 00:00:00', '2025-06-04 00:00:00'). This PR fixes this behavior. [#81400](https://github.com/ClickHouse/ClickHouse/pull/81400) ([zoomxi](https://github.com/zoomxi)).
+#* Use `postgres` 16.9. [#81437](https://github.com/ClickHouse/ClickHouse/pull/81437) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+#* Use `openssl` 3.2.4. [#81438](https://github.com/ClickHouse/ClickHouse/pull/81438) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+#* Use `abseil-cpp` 2025-01-27. [#81440](https://github.com/ClickHouse/ClickHouse/pull/81440) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+#* Use `mongo-c-driver` 1.30.4. [#81449](https://github.com/ClickHouse/ClickHouse/pull/81449) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+#* Use `krb5` 1.21.3-final. [#81453](https://github.com/ClickHouse/ClickHouse/pull/81453) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+#* Use `orc` 2.1.2. [#81455](https://github.com/ClickHouse/ClickHouse/pull/81455) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+#* Add support for the `--database` argument in `clickhouse-local`. You can switch to a previously created database. This closes [#44115](https://github.com/ClickHouse/ClickHouse/issues/44115). [#81465](https://github.com/ClickHouse/ClickHouse/pull/81465) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+#* `clickhouse`/`ch` aliases will invoke `clickhouse-client` instead of `clickhouse-local` if `--host` or `--port` are specified. Continuation of [#79422](https://github.com/ClickHouse/ClickHouse/issues/79422). Closes [#65252](https://github.com/ClickHouse/ClickHouse/issues/65252). [#81509](https://github.com/ClickHouse/ClickHouse/pull/81509) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Now that we have the keeper response time distribution data, we can tune the histogram buckets. [#81516](https://github.com/ClickHouse/ClickHouse/pull/81516) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Postpone reading of Iceberg manifest files until the first reading of a query. [#81619](https://github.com/ClickHouse/ClickHouse/pull/81619) ([Daniil Ivanik](https://github.com/divanik)).
+#* Use `grpc` 1.73.0. [#81629](https://github.com/ClickHouse/ClickHouse/pull/81629) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+#* Use `delta-kernel-rs` v0.12.1. [#81707](https://github.com/ClickHouse/ClickHouse/pull/81707) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Add profile event `PageCacheReadBytes`. [#81742](https://github.com/ClickHouse/ClickHouse/pull/81742) ([Kseniia Sumarokova](https://github.com/kssenii)).
+
+## Bug fix (user-visible misbehavior in an official stable release) {#bug-fix-user-visible-misbehavior-in-an-official-stable-release}
+
+* Fix parameterized view with `SELECT EXCEPT` query. Closes [#49447](https://github.com/ClickHouse/ClickHouse/issues/49447). [#57380](https://github.com/ClickHouse/ClickHouse/pull/57380) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Analyzer: fix column projection name after column type promotion in join. Closes [#63345](https://github.com/ClickHouse/ClickHouse/issues/63345). [#63519](https://github.com/ClickHouse/ClickHouse/pull/63519) ([Dmitry Novik](https://github.com/novikd)).
+* A materialized view can start too late, e.g. after the Kafka table that streams to it. [#72123](https://github.com/ClickHouse/ClickHouse/pull/72123) ([Ilya Golshtein](https://github.com/ilejn)).
+* Fixed a logical error in cases of column name clashes when analyzer_compatibility_join_using_top_level_identifier is enabled. [#75676](https://github.com/ClickHouse/ClickHouse/pull/75676) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fixed rare crashes while reading from `MergeTree` table after multiple asynchronous (with `alter_sync = 0`) `RENAME COLUMN` and `ADD COLUMN` queries. [#76346](https://github.com/ClickHouse/ClickHouse/pull/76346) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix `SELECT` query rewriting during `VIEW` creation with enabled analyzer. closes [#75956](https://github.com/ClickHouse/ClickHouse/issues/75956). [#76356](https://github.com/ClickHouse/ClickHouse/pull/76356) ([Dmitry Novik](https://github.com/novikd)).
+* Fix CTE usage in pushed-down predicates when `allow_push_predicate_ast_for_distributed_subqueries` is enabled. Fixes [#75647](https://github.com/ClickHouse/ClickHouse/issues/75647). Fixes [#79672](https://github.com/ClickHouse/ClickHouse/issues/79672). [#77316](https://github.com/ClickHouse/ClickHouse/pull/77316) ([Dmitry Novik](https://github.com/novikd)).
+* Fix applying `async_insert` from server (via `apply_settings_from_server`) (previously leads to `Unknown packet 11 from server` errors on the client). [#77578](https://github.com/ClickHouse/ClickHouse/pull/77578) ([Azat Khuzhin](https://github.com/azat)).
+* Fixed refreshable materialized view in replicated databases not working on newly added replicas. [#77774](https://github.com/ClickHouse/ClickHouse/pull/77774) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fixed refreshable materialized views breaking backups. [#77893](https://github.com/ClickHouse/ClickHouse/pull/77893) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix old firing logical error for `transform`. [#78247](https://github.com/ClickHouse/ClickHouse/pull/78247) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fixes an issue where `SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo'` would report success even when the specified replica didn't exist. The command now properly validates that the replica exists in Keeper before attempting synchronization. [#78405](https://github.com/ClickHouse/ClickHouse/pull/78405) ([Jayme Bird](https://github.com/jaymebrd)).
+* Fix some cases where secondary index was not applied with analyzer. Fixes [#65607](https://github.com/ClickHouse/ClickHouse/issues/65607) , fixes [#69373](https://github.com/ClickHouse/ClickHouse/issues/69373). [#78485](https://github.com/ClickHouse/ClickHouse/pull/78485) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix dumping profile events (`NetworkSendElapsedMicroseconds`/`NetworkSendBytes`) for HTTP protocol with compression enabled (the error should not be more then the buffer size, usually around 1MiB). [#78516](https://github.com/ClickHouse/ClickHouse/pull/78516) ([Azat Khuzhin](https://github.com/azat)).
+#* ```sql CREATE TABLE t0 ( key Int32, value Int32 ) ENGINE=MergeTree() PRIMARY KEY key PARTITION BY key % 2;. [#78593](https://github.com/ClickHouse/ClickHouse/pull/78593) ([Vlad](https://github.com/codeworse)).
+* Fix analyzer producing `LOGICAL_ERROR` when `JOIN ... USING` involves `ALIAS` column - should produce an appropriate error. [#78618](https://github.com/ClickHouse/ClickHouse/pull/78618) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Fix analyzer: `CREATE VIEW ... ON CLUSTER` fails if SELECT contains positional arguments. [#78663](https://github.com/ClickHouse/ClickHouse/pull/78663) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Fix `Block structure mismatch` error in case of `INSERT SELECT` into table a function with schema inference if `SELECT` has scalar subqueries. [#78677](https://github.com/ClickHouse/ClickHouse/pull/78677) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Fix analyzer: with `prefer_global_in_and_join=1` for Distributed table in SELECT query `in` function should be replaced by `globalIn`. [#78749](https://github.com/ClickHouse/ClickHouse/pull/78749) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Fixed several types of `SELECT` queries that read from tables with `MongoDB` engine or `mongodb` table function: queries with implicit conversion of const value in `WHERE` clause (e.g. `WHERE datetime = '2025-03-10 00:00:00'`) ; queries with `LIMIT` and `GROUP BY`. Previously, they could return the wrong result. [#78777](https://github.com/ClickHouse/ClickHouse/pull/78777) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix conversion between different JSON types. Now it's performed by simple cast through convertion to/from String. It's less effective but 100% accurate. [#78807](https://github.com/ClickHouse/ClickHouse/pull/78807) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix logical error during convertion of Dynamic type to Interval. [#78813](https://github.com/ClickHouse/ClickHouse/pull/78813) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix column rollback on JSON parsing error. [#78836](https://github.com/ClickHouse/ClickHouse/pull/78836) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix 'bad cast' error when join using constant alias column. [#78848](https://github.com/ClickHouse/ClickHouse/pull/78848) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Don't allow `PREWHERE` in materialized views on columns with different types in view and target table. [#78889](https://github.com/ClickHouse/ClickHouse/pull/78889) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix logical error during parsing of bad binary data of Variant column. [#78982](https://github.com/ClickHouse/ClickHouse/pull/78982) ([Pavel Kruglov](https://github.com/Avogar)).
+* Throw an exception when the parquet batch size is set to 0. Previously when `output_format_parquet_batch_size = 0` ClickHouse would hang. Now this behavior is fixed. [#78991](https://github.com/ClickHouse/ClickHouse/pull/78991) ([daryawessely](https://github.com/daryawessely)).
+* Fix deserialization of variant discriminators with basic format in compact parts. It was introduced in https://github.com/ClickHouse/ClickHouse/pull/55518. [#79000](https://github.com/ClickHouse/ClickHouse/pull/79000) ([Pavel Kruglov](https://github.com/Avogar)).
+* Dictionaries of type `complex_key_ssd_cache` now reject zero or negative `block_size` and `write_buffer_size` parameters (issue [#78314](https://github.com/ClickHouse/ClickHouse/issues/78314)). [#79028](https://github.com/ClickHouse/ClickHouse/pull/79028) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* Avoid using Field for non-aggregated columns in SummingMergeTree. It could lead to unexpected errors with Dynamic/Variant types used in SummingMergeTree. [#79051](https://github.com/ClickHouse/ClickHouse/pull/79051) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix read from materialized view with distributed destination table and different header in analyzer. [#79059](https://github.com/ClickHouse/ClickHouse/pull/79059) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix crash for a very specific situation when the `currentDatabase` function was used in `CONSTRAINT` sections for `ON CLUSTER` queries Closes [#78100](https://github.com/ClickHouse/ClickHouse/issues/78100). [#79070](https://github.com/ClickHouse/ClickHouse/pull/79070) ([pufit](https://github.com/pufit)).
+* Fixes a bug where `arrayUnion()` returned extra (incorrect) values on tables that had batch inserts. Fixes [#75057](https://github.com/ClickHouse/ClickHouse/issues/75057). [#79079](https://github.com/ClickHouse/ClickHouse/pull/79079) ([Peter Nguyen](https://github.com/petern48)).
+#* Fix segfault in `OpenSSLInitializer`. Closes [#79092](https://github.com/ClickHouse/ClickHouse/issues/79092). [#79097](https://github.com/ClickHouse/ClickHouse/pull/79097) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Fix passing of external roles in inter-server queries. [#79099](https://github.com/ClickHouse/ClickHouse/pull/79099) ([Andrey Zvonov](https://github.com/zvonand)).
+* Always set prefix for S3 ListObject. [#79114](https://github.com/ClickHouse/ClickHouse/pull/79114) ([Azat Khuzhin](https://github.com/azat)).
+* Fixes a bug where `arrayUnion()` returned extra (incorrect) values on tables that had batch inserts. Fixes [#79157](https://github.com/ClickHouse/ClickHouse/issues/79157). [#79158](https://github.com/ClickHouse/ClickHouse/pull/79158) ([Peter Nguyen](https://github.com/petern48)).
+* Fix logical error after filter pushdown. [#79164](https://github.com/ClickHouse/ClickHouse/pull/79164) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Try to use IColumn instead of Field in SingleValueDataGeneric. It fixes the incorrect return values for some aggregate functions like `argMax` for types `Dynamic/Variant/JSON`. [#79166](https://github.com/ClickHouse/ClickHouse/pull/79166) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix DeltaLake table engine with delta-kernel implementation being used with http based endpoints, fix NOSIGN. Closes [#78124](https://github.com/ClickHouse/ClickHouse/issues/78124). [#79203](https://github.com/ClickHouse/ClickHouse/pull/79203) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Keeper fix: Avoid triggering watches on failed multi requests. [#79247](https://github.com/ClickHouse/ClickHouse/pull/79247) ([Antonio Andelic](https://github.com/antonio2368)).
+* Forbid Dynamic and JSON types in IN. With current implementation of `IN` it can lead to incorrect results. Proper support of this types in `IN` is complicated and can be done in future. [#79282](https://github.com/ClickHouse/ClickHouse/pull/79282) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix check for duplicate paths in JSON type parsing. [#79317](https://github.com/ClickHouse/ClickHouse/pull/79317) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix SecureStreamSocket connection issues. [#79383](https://github.com/ClickHouse/ClickHouse/pull/79383) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Fix loading of plain_rewritable disks containing data. [#79439](https://github.com/ClickHouse/ClickHouse/pull/79439) ([Julia Kartseva](https://github.com/jkartseva)).
+* Fix crash in dynamic subcolumns discovery in Wide parts in MergeTree. [#79466](https://github.com/ClickHouse/ClickHouse/pull/79466) ([Pavel Kruglov](https://github.com/Avogar)).
+* Verify the table name's length only for initial create queries. Do not verify this for secondary creates to avoid backward compatibility issues. [#79488](https://github.com/ClickHouse/ClickHouse/pull/79488) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Fixed error `Block structure mismatch` in several cases with tables with sparse columns. [#79491](https://github.com/ClickHouse/ClickHouse/pull/79491) ([Anton Popov](https://github.com/CurtizJ)).
+* Fixes two cases of `Logical Error: Can't set alias of * of Asterisk on alias`. [#79505](https://github.com/ClickHouse/ClickHouse/pull/79505) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix applying use_native_copy and allow_azure_native_copy setting for azure blob storage and updated to use native copy only when credentials match resolves [#78964](https://github.com/ClickHouse/ClickHouse/issues/78964). [#79561](https://github.com/ClickHouse/ClickHouse/pull/79561) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+* Fix using incorrect paths when renaming an Atomic database. [#79569](https://github.com/ClickHouse/ClickHouse/pull/79569) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Fix order by JSON column with other columns. [#79591](https://github.com/ClickHouse/ClickHouse/pull/79591) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix result duplication when reading from remote with both `use_hedged_requests` and `allow_experimental_parallel_reading_from_replicas` disabled. [#79599](https://github.com/ClickHouse/ClickHouse/pull/79599) ([Eduard Karacharov](https://github.com/korowa)).
+* Fix crash in delta-kernel implementation when using unity catalog. [#79677](https://github.com/ClickHouse/ClickHouse/pull/79677) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Resolve macros for autodiscovery clusters. [#79696](https://github.com/ClickHouse/ClickHouse/pull/79696) ([Anton Ivashkin](https://github.com/ianton-ru)).
+* Fix logical errors about a column's unknown origin scope produced while checking if this column is correlated. Fixes [#78183](https://github.com/ClickHouse/ClickHouse/issues/78183). Fixes [#79451](https://github.com/ClickHouse/ClickHouse/issues/79451). [#79727](https://github.com/ClickHouse/ClickHouse/pull/79727) ([Dmitry Novik](https://github.com/novikd)).
+* Fix wrong results for grouping sets with ColumnConst and Analyzer. [#79743](https://github.com/ClickHouse/ClickHouse/pull/79743) ([Andrey Zvonov](https://github.com/zvonand)).
+* Fix local shard result duplication when reading from distributed table with local replica being stale. [#79761](https://github.com/ClickHouse/ClickHouse/pull/79761) ([Eduard Karacharov](https://github.com/korowa)).
+* Handle incorrectly configured `page_cache_limits` suitably. [#79805](https://github.com/ClickHouse/ClickHouse/pull/79805) ([Bharat Nallan](https://github.com/bharatnc)).
+* Fixes the result of SQL function `formatDateTime` if a variable-size formatter (e.g. `%W` aka. weekday `Monday` `Tuesday`, etc.) is followed by a compound formatter (a formatter that prints multiple components at once, e.g. `%D` aka. the American date `05/04/25`). [#79835](https://github.com/ClickHouse/ClickHouse/pull/79835) ([Robert Schulze](https://github.com/rschu1ze)).
+* IcebergS3 supports count optimization, but IcebergS3Cluster does not. As a result, the count() result returned in cluster mode may be a multiple of the number of replicas. [#79844](https://github.com/ClickHouse/ClickHouse/pull/79844) ([wxybear](https://github.com/wxybear)).
+* Fix the sorting order of the NaNs with a negative sign bit. [#79847](https://github.com/ClickHouse/ClickHouse/pull/79847) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Now `GROUP BY ALL` doesn't take into account the `GROUPING` part. [#79915](https://github.com/ClickHouse/ClickHouse/pull/79915) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fixes `AMBIGUOUS_COLUMN_NAME` error with lazy materialization when no columns are used for query execution until projection. Example, SELECT * FROM t ORDER BY rand() LIMIT 5. [#79926](https://github.com/ClickHouse/ClickHouse/pull/79926) ([Igor Nikonov](https://github.com/devcrafter)).
+* Fixed incorrect state merging for `TopK` / `TopKWeighted` functions that would cause excessive error values even when capacity was not exhausted. [#79939](https://github.com/ClickHouse/ClickHouse/pull/79939) ([Joel Höner](https://github.com/athre0z)).
+* Hide password for query `CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\')`. [#79941](https://github.com/ClickHouse/ClickHouse/pull/79941) ([Han Fei](https://github.com/hanfei1991)).
+* Allow specifying an alias in `JOIN USING`. Specify this alias in case the column was renamed (e.g., because of `ARRAY JOIN). Fixes [#73707](https://github.com/ClickHouse/ClickHouse/issues/73707). [#79942](https://github.com/ClickHouse/ClickHouse/pull/79942) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Respect `readonly` setting in `azure_blob_storage` object storage. [#79954](https://github.com/ClickHouse/ClickHouse/pull/79954) ([Julia Kartseva](https://github.com/jkartseva)).
+* Fixed incorrect query results and out-of-memory crashes when using `match(column, '^…')` with backslash-escaped characters. [#79969](https://github.com/ClickHouse/ClickHouse/pull/79969) ([filimonov](https://github.com/filimonov)).
+* Disabling hive partitioning for datalakes Partially addresses https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937. [#80005](https://github.com/ClickHouse/ClickHouse/pull/80005) ([Daniil Ivanik](https://github.com/divanik)).
+* Skip indexes with lambda expressions could not be applied. Fix the case when high-level functions in the index definition exactly match the one in the query. [#80025](https://github.com/ClickHouse/ClickHouse/pull/80025) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Allow materialized views with UNIONs to work correctly on new replicas. [#80037](https://github.com/ClickHouse/ClickHouse/pull/80037) ([Samay Sharma](https://github.com/samay-sharma)).
+* Fix metadata version during attach part on the replica executing ATTACH_PART command from replication log. [#80038](https://github.com/ClickHouse/ClickHouse/pull/80038) ([Aleksei Filatov](https://github.com/aalexfvk)).
+* Format specifier `%e` in SQL function `parseDateTime` now recognizes single-digit days (e.g. `3`), whereas it previously required space padding (e.g. ` 3`). This makes its behavior compatible with MySQL. To retain the previous behaviour, set setting `parsedatetime_e_requires_space_padding = 1`. (issue [#78243](https://github.com/ClickHouse/ClickHouse/issues/78243)). [#80057](https://github.com/ClickHouse/ClickHouse/pull/80057) ([Robert Schulze](https://github.com/rschu1ze)).
+* Executable User Defined Functions (eUDF) names are not added to the `used_functions` column of the `system.query_log` table, unlike other functions. This PR implements the addition of the eUDF name if the eUDF was used in the request. [#80073](https://github.com/ClickHouse/ClickHouse/pull/80073) ([Kyamran](https://github.com/nibblerenush)).
+#* Fix warnings `Cannot find 'kernel' in '[...]/memory.stat'` in ClickHouse's log (issue [#77410](https://github.com/ClickHouse/ClickHouse/issues/77410)). [#80129](https://github.com/ClickHouse/ClickHouse/pull/80129) ([Robert Schulze](https://github.com/rschu1ze)).
+* Fix logical error in Arrow format with LowCardinality(FixedString). [#80156](https://github.com/ClickHouse/ClickHouse/pull/80156) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix reading subcolumns from Merge engine. [#80158](https://github.com/ClickHouse/ClickHouse/pull/80158) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix a bug about the comparison between numeric types in `KeyCondition`. [#80207](https://github.com/ClickHouse/ClickHouse/pull/80207) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix AMBIGUOUS_COLUMN_NAME when lazy materialization applied to table with projections. [#80251](https://github.com/ClickHouse/ClickHouse/pull/80251) ([Igor Nikonov](https://github.com/devcrafter)).
+* Fix incorrect count optimization for string prefix filters like LIKE 'ab_c%' when using implicit projections. This fixes [#80250](https://github.com/ClickHouse/ClickHouse/issues/80250). [#80261](https://github.com/ClickHouse/ClickHouse/pull/80261) ([Amos Bird](https://github.com/amosbird)).
+* Fix improper serialization of nested numeric fields as strings in MongoDB documents. Remove maximum depth limit for documents from MongoDB. [#80289](https://github.com/ClickHouse/ClickHouse/pull/80289) ([Kirill Nikiforov](https://github.com/allmazz)).
+* Perform less strict metadata checks for RMT in the Replicated database. Closes [#80296](https://github.com/ClickHouse/ClickHouse/issues/80296). [#80298](https://github.com/ClickHouse/ClickHouse/pull/80298) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Fix text representation of DateTime and DateTime64 for PostgreSQL storage. [#80301](https://github.com/ClickHouse/ClickHouse/pull/80301) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Allow `DateTime` with timezone in `StripeLog` tables. This closes [#44120](https://github.com/ClickHouse/ClickHouse/issues/44120). [#80304](https://github.com/ClickHouse/ClickHouse/pull/80304) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Disable filter-push-down for the predicate with a non-deterministic function in case the query plan step changes the number of rows. Fixes [#40273](https://github.com/ClickHouse/ClickHouse/issues/40273). [#80329](https://github.com/ClickHouse/ClickHouse/pull/80329) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix possible logical errors and crashes in projections with subcolumns. [#80333](https://github.com/ClickHouse/ClickHouse/pull/80333) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix `NOT_FOUND_COLUMN_IN_BLOCK` error caused by filter-push-down optimization of the logical JOIN sep in case `ON` expression is not a trivial equality. Fixes [#79647](https://github.com/ClickHouse/ClickHouse/issues/79647) Fixes [#77848](https://github.com/ClickHouse/ClickHouse/issues/77848). [#80360](https://github.com/ClickHouse/ClickHouse/pull/80360) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix incorrect results when reading reverse-ordered keys in partitioned tables. This fixes [#79987](https://github.com/ClickHouse/ClickHouse/issues/79987). [#80448](https://github.com/ClickHouse/ClickHouse/pull/80448) ([Amos Bird](https://github.com/amosbird)).
+* Fixed wrong sorting in tables with a nullable key and enabled optimize_read_in_order. [#80515](https://github.com/ClickHouse/ClickHouse/pull/80515) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Fixed refreshable materialized view DROP getting stuck if the view was paused using SYSTEM STOP REPLICATED VIEW. [#80543](https://github.com/ClickHouse/ClickHouse/pull/80543) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix 'Cannot find column' with constant tuple in distributed query. [#80596](https://github.com/ClickHouse/ClickHouse/pull/80596) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Fix `shardNum` function in Distributed tables with `join_use_nulls`. [#80612](https://github.com/ClickHouse/ClickHouse/pull/80612) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Fix incorrect results during reading column that exists in subset of tables in Merge engine. [#80643](https://github.com/ClickHouse/ClickHouse/pull/80643) ([Pavel Kruglov](https://github.com/Avogar)).
+* The timestamp in the iceberg_history table should now be correct. [#80711](https://github.com/ClickHouse/ClickHouse/pull/80711) ([Melvyn Peignon](https://github.com/melvynator)).
+* Fix handling of enum globs of a single element in object storage table functions. [#80716](https://github.com/ClickHouse/ClickHouse/pull/80716) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Fix wrong result types of comparison functions with Tuple(Dynamic) and String that led to logical error. [#80728](https://github.com/ClickHouse/ClickHouse/pull/80728) ([Pavel Kruglov](https://github.com/Avogar)).
+* Add missing support data type `timestamp_ntz` for unity catalog. Fixes [#79535](https://github.com/ClickHouse/ClickHouse/issues/79535), Fixes [#79875](https://github.com/ClickHouse/ClickHouse/issues/79875). [#80740](https://github.com/ClickHouse/ClickHouse/pull/80740) ([alesapin](https://github.com/alesapin)).
+* Fix `THERE_IS_NO_COLUMN` error for distributed queries with `IN cte`. Fixes [#75032](https://github.com/ClickHouse/ClickHouse/issues/75032). [#80757](https://github.com/ClickHouse/ClickHouse/pull/80757) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix excessive number of files (leads to excessive memory usage) for external `ORDER BY`. [#80777](https://github.com/ClickHouse/ClickHouse/pull/80777) ([Azat Khuzhin](https://github.com/azat)).
+#* This PR might close [#80742](https://github.com/ClickHouse/ClickHouse/issues/80742). [#80783](https://github.com/ClickHouse/ClickHouse/pull/80783) ([zoomxi](https://github.com/zoomxi)).
+#* Fix crash in Kafka due to get_member_id() was creating std::string from NULL (it was likely an issue only in case of connection to broker had been failed). [#80793](https://github.com/ClickHouse/ClickHouse/pull/80793) ([Azat Khuzhin](https://github.com/azat)).
+* Properly await consumers before shutting down Kafka engine (active consumers after shutdown can trigger various debug assertions and also may read data from brokers in background after table has been dropped/detached). [#80795](https://github.com/ClickHouse/ClickHouse/pull/80795) ([Azat Khuzhin](https://github.com/azat)).
+* Fix `NOT_FOUND_COLUMN_IN_BLOCK`, which is caused by `predicate-push-down` optimization. Fixes [#80443](https://github.com/ClickHouse/ClickHouse/issues/80443). [#80834](https://github.com/ClickHouse/ClickHouse/pull/80834) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix logical error when resolving star (*) matcher in table function in `JOIN` with `USING`. [#80894](https://github.com/ClickHouse/ClickHouse/pull/80894) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fix memory accounting for Iceberg metadata files cache. [#80904](https://github.com/ClickHouse/ClickHouse/pull/80904) ([Azat Khuzhin](https://github.com/azat)).
+* Fix wrong partitioning with nullable partition key. [#80913](https://github.com/ClickHouse/ClickHouse/pull/80913) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Fix `Table does not exist` error for distributed queries with pushed-down predicate (`allow_push_predicate_ast_for_distributed_subqueries=1`) when the source table does not exist on the initialtor. Fixes [#77281](https://github.com/ClickHouse/ClickHouse/issues/77281). [#80915](https://github.com/ClickHouse/ClickHouse/pull/80915) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix the logical error in the nested functions with named windows. [#80926](https://github.com/ClickHouse/ClickHouse/pull/80926) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Fix extremes for nullable and floating-point columns. [#80970](https://github.com/ClickHouse/ClickHouse/pull/80970) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Fix possible crash while querying from system.tables (likely the case under memory pressure). [#80976](https://github.com/ClickHouse/ClickHouse/pull/80976) ([Azat Khuzhin](https://github.com/azat)).
+* Fix atomic rename with truncate for files which compression is inferred from their file extension. [#80979](https://github.com/ClickHouse/ClickHouse/pull/80979) ([Pablo Marcos](https://github.com/pamarcos)).
+#* Fix ErrorCodes::getName. [#81032](https://github.com/ClickHouse/ClickHouse/pull/81032) ([RinChanNOW](https://github.com/RinChanNOWWW)).
+* Fix bug when user cannot list tables in Unity Catalog without permissions for all of them. Now all tables are listed properly, attempt to read from restricted table will throw an exception. [#81044](https://github.com/ClickHouse/ClickHouse/pull/81044) ([alesapin](https://github.com/alesapin)).
+* Now ClickHouse will ignore errors and unexpected responses from data lake catalogs in `SHOW TABLES` query. Fixes [#79725](https://github.com/ClickHouse/ClickHouse/issues/79725). [#81046](https://github.com/ClickHouse/ClickHouse/pull/81046) ([alesapin](https://github.com/alesapin)).
+* Fix parsing of `DateTime64` from integers in `JSONExtract` and `JSON` type parsing. [#81050](https://github.com/ClickHouse/ClickHouse/pull/81050) ([Pavel Kruglov](https://github.com/Avogar)).
+* Reflect `date_time_input_format` setting in schema inference cache. [#81052](https://github.com/ClickHouse/ClickHouse/pull/81052) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix crash on `INSERT` if table was DROPed after query started but before columns sent. [#81053](https://github.com/ClickHouse/ClickHouse/pull/81053) ([Azat Khuzhin](https://github.com/azat)).
+* Fix use-of-uninitialized-value in quantileDeterministic. [#81062](https://github.com/ClickHouse/ClickHouse/pull/81062) ([Azat Khuzhin](https://github.com/azat)).
+* Fix hardlinks count management for metadatastoragefromdisk disk transactions. add tests. [#81066](https://github.com/ClickHouse/ClickHouse/pull/81066) ([Sema Checherinda](https://github.com/CheSema)).
+* User Defined Functions (UDF) names are not added to the `system.query_log` table, unlike other functions. This PR implements the addition of the UDF name to one of the two columns `used_executable_user_defined_functions` or `used_sql_user_defined_functions` if the UDF was used in the request. [#81101](https://github.com/ClickHouse/ClickHouse/pull/81101) ([Kyamran](https://github.com/nibblerenush)).
+* Fixed `Too large size ... passed to allocator` errors or possible crashes on inserts via http protocol with text formats (`JSON`, `Values`, ...) and omitted `Enum` fields. [#81145](https://github.com/ClickHouse/ClickHouse/pull/81145) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix LOGICAL_ERROR in case of Sparse column in INSERT block pushed to non-MT MV. [#81161](https://github.com/ClickHouse/ClickHouse/pull/81161) ([Azat Khuzhin](https://github.com/azat)).
+* Fix `Unknown table expression identifier` for `distributed_product_mode_local=local` with cross-replication. [#81162](https://github.com/ClickHouse/ClickHouse/pull/81162) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fixed incorrectly caching number of rows in parquet files after filtering. [#81184](https://github.com/ClickHouse/ClickHouse/pull/81184) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix fs cache `max_size_to_total_space` setting when used with relative cache path. [#81237](https://github.com/ClickHouse/ClickHouse/pull/81237) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fixed clickhouse-local crashing when outputting const tuples or maps in Parquet format. [#81249](https://github.com/ClickHouse/ClickHouse/pull/81249) ([Michael Kolupaev](https://github.com/al13n321)).
+* Verify array offsets received over network. [#81269](https://github.com/ClickHouse/ClickHouse/pull/81269) ([Azat Khuzhin](https://github.com/azat)).
+* Fix some corner case in query that joins empty tables and uses window functions. The bug leads to exploding number of parallel streams which leads to OOMs. [#81299](https://github.com/ClickHouse/ClickHouse/pull/81299) ([Alexander Gololobov](https://github.com/davenger)).
+* Fixes for datalake Cluster functions (`deltaLakeCluster`, `icebergCluster`, etc): (1) fix potential segfault in `DataLakeConfiguration` when using `Cluster` function with old analyzer; (2) remove duplicating data lake metadata updates (extra object storage requests); (3) fix redundant listing in object storage when format is not explicitly specified (which was already done for non-cluster data lake engines). [#81300](https://github.com/ClickHouse/ClickHouse/pull/81300) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Make `force_restore_data` flag recover lost keeper metadata. [#81324](https://github.com/ClickHouse/ClickHouse/pull/81324) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix region error in delta-kernel. Fixes [#79914](https://github.com/ClickHouse/ClickHouse/issues/79914). [#81353](https://github.com/ClickHouse/ClickHouse/pull/81353) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Disable incorrect JIT for divideOrNull. [#81370](https://github.com/ClickHouse/ClickHouse/pull/81370) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix insert error when MergeTree table has a long partition column name. [#81390](https://github.com/ClickHouse/ClickHouse/pull/81390) ([hy123q](https://github.com/haoyangqian)).
+* Don't store content of several manifest files in memory. [#81470](https://github.com/ClickHouse/ClickHouse/pull/81470) ([Daniil Ivanik](https://github.com/divanik)).
+* Fix possible crash during shutting down background pools (`background_.*pool_size`). [#81473](https://github.com/ClickHouse/ClickHouse/pull/81473) ([Azat Khuzhin](https://github.com/azat)).
+* Fix out-of-bounds read in the `Npy` format happening when writing to a table with the `URL` engine. This closes [#81356](https://github.com/ClickHouse/ClickHouse/issues/81356). [#81502](https://github.com/ClickHouse/ClickHouse/pull/81502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* There is a chance that Web UI displays `NaN%` (typical JavaScript problems). [#81507](https://github.com/ClickHouse/ClickHouse/pull/81507) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix `DatabaseReplicated` for `database_replicated_enforce_synchronous_settings=1`. [#81564](https://github.com/ClickHouse/ClickHouse/pull/81564) ([Azat Khuzhin](https://github.com/azat)).
+* Fix sorting order for LowCardinality(Nullable(...)) types. [#81583](https://github.com/ClickHouse/ClickHouse/pull/81583) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Server should not preserve a HTTP connection if the request has not been fully read from the socket. [#81595](https://github.com/ClickHouse/ClickHouse/pull/81595) ([Sema Checherinda](https://github.com/CheSema)).
+* Make scalar correlated subqueries return a nullable result of the projection expression. Fix the case when a correlated subquery produces an empty result set. [#81632](https://github.com/ClickHouse/ClickHouse/pull/81632) ([Dmitry Novik](https://github.com/novikd)).
+* Fix `Unexpected relative path for a deduplicated part` during `ATTACH` to `ReplicatedMergeTree`. [#81647](https://github.com/ClickHouse/ClickHouse/pull/81647) ([Azat Khuzhin](https://github.com/azat)).
+* Query settings `use_iceberg_partition_pruning` will not take effect for iceberg storage, because it uses global context rather than query context. it's not critical because its default value is true. this pr can fix it. [#81673](https://github.com/ClickHouse/ClickHouse/pull/81673) ([Han Fei](https://github.com/hanfei1991)).
+* Add validation for merge tree setting `merge_max_block_size` to ensure that it's non zero. [#81693](https://github.com/ClickHouse/ClickHouse/pull/81693) ([Bharat Nallan](https://github.com/bharatnc)).
+* Fix issues with `clickhouse-local` involving stuck `DROP VIEW ` queries. [#81705](https://github.com/ClickHouse/ClickHouse/pull/81705) ([Bharat Nallan](https://github.com/bharatnc)).
+* Fix StorageRedis join in some cases. [#81736](https://github.com/ClickHouse/ClickHouse/pull/81736) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Fix crash in `ConcurrentHashJoin` with empty `USING ()` and old analyzer enabled. [#81754](https://github.com/ClickHouse/ClickHouse/pull/81754) ([Nikita Taranov](https://github.com/nickitat)).
+* Keeper fix: block commits of new logs if there is invalid entry in the logs. Previously, if the leader applied some logs incorrectly, it would continue to commit new logs, even though the follower would detect digest mismatch and abort. [#81780](https://github.com/ClickHouse/ClickHouse/pull/81780) ([Antonio Andelic](https://github.com/antonio2368)).
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_08.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_08.md
new file mode 100644
index 00000000000..6cec679d1ec
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/25_08.md
@@ -0,0 +1,799 @@
+---
+slug: /changelogs/25.8
+title: 'v25.8 Changelog for Cloud'
+description: 'Fast release changelog for v25.8'
+keywords: ['changelog', 'cloud']
+sidebar_label: '25.8'
+sidebar_position: 1
+doc_type: 'changelog'
+---
+
+## Backward incompatible changes {#backward-incompatible-changes}
+
+### JSON and data format changes {#json-and-data-format-changes}
+
+* Disable quoting 64 bit integers in JSON formats by default. [#74079](https://github.com/ClickHouse/ClickHouse/pull/74079) ([Pavel Kruglov](https://github.com/Avogar)).
+* Infer `Array(Dynamic)` instead of unnamed `Tuple` for arrays of values with different types in JSON. To use the previous behaviour, disable setting [`input_format_json_infer_array_of_dynamic_from_array_of_different_types`](/operations/settings/formats#input_format_json_infer_array_of_dynamic_from_array_of_different_types). [#80859](https://github.com/ClickHouse/ClickHouse/pull/80859) ([Pavel Kruglov](https://github.com/Avogar)).
+* Write values of `Enum` type as `BYTE_ARRAY` with `ENUM` logical type in Parquet output format by default. [#84169](https://github.com/ClickHouse/ClickHouse/pull/84169) ([Pavel Kruglov](https://github.com/Avogar)).
+
+### Storage and partitioning {#storage-and-partitioning}
+
+* Add support for hive partition style writes and refactor reads implementation (hive partition columns are no longer virtual). [#76802](https://github.com/ClickHouse/ClickHouse/pull/76802) ([Arthur Passos](https://github.com/arthurpassos)).
+* Enable MergeTree setting [`write_marks_for_substreams_in_compact_parts`](/operations/settings/merge-tree-settings#write_marks_for_substreams_in_compact_parts) by default. It significantly improves performance of subcolumns reading from newly created Compact parts. Servers with version less than 25.5 won't be able to read the new ompact parts. [#84171](https://github.com/ClickHouse/ClickHouse/pull/84171) ([Pavel Kruglov](https://github.com/Avogar)).
+* Disallow `RENAME COLUMN` or `DROP COLUMN` involving explicitly listed columns to sum in SummingMergeTree. Closes [#81836](https://github.com/ClickHouse/ClickHouse/issues/81836). [#82821](https://github.com/ClickHouse/ClickHouse/pull/82821) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+### Function enhancements {#function-enhancements}
+
+* Introduce a new argument `unexpected_quoting_character_strategy` to the [`extractKeyValuePairs`](/sql-reference/functions/tuple-map-functions#extractkeyvaluepairs) function that controls what happens when a `quoting_character` is unexpectedly found. For more details see the docs for [`extractKeyValuePairs`](/sql-reference/functions/tuple-map-functions#extractkeyvaluepairs). [#80657](https://github.com/ClickHouse/ClickHouse/pull/80657) ([Arthur Passos](https://github.com/arthurpassos)).
+* Previously, the function [`countMatches`](/sql-reference/functions/string-search-functions#countMatches) would stop counting at the first empty match even if the pattern accepts it. To overcome this issue, `countMatches` now continues execution by advancing by a single character when an empty match occurs. Users who would like to retain the old behavior can enable setting `count_matches_stop_at_empty_match`. [#81676](https://github.com/ClickHouse/ClickHouse/pull/81676) ([Elmi Ahmadov](https://github.com/ahmadov)).
+
+### Data type improvements {#data-type-improvements}
+
+* Improve the precision of conversion from `Decimal` to `Float32`. Implement conversion from `Decimal` to `BFloat16`. Closes [#82660](https://github.com/ClickHouse/ClickHouse/issues/82660). [#82823](https://github.com/ClickHouse/ClickHouse/pull/82823) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+### Performance and resource management {#performance-and-resource-management}
+
+* Previously, `BACKUP` queries, merges and mutations were not using server-wide throttlers for local (`max_local_read_bandwidth_for_server` and `max_local_write_bandwidth_for_server`) and remote (`max_remote_read_network_bandwidth_for_server` and `max_remote_write_network_bandwidth_for_server`) traffic, instead they were only throttled by dedicated server settings (`max_backup_bandwidth_for_server`, `max_mutations_bandwidth_for_server` and `max_merges_bandwidth_for_server`). Now, they use both types of throttlers simultaneously. [#81753](https://github.com/ClickHouse/ClickHouse/pull/81753) ([Sergei Trifonov](https://github.com/serxa)).
+* Added a new setting [`cluster_function_process_archive_on_multiple_nodes`](/operations/settings/settings#cluster_function_process_archive_on_multiple_nodes) which increases performance of processing archives in cluster functions when set to true (by default). Should be set to `false` for compatibility and to avoid errors during upgrade to 25.7+ if using cluster functions with archives on earlier versions. [#82355](https://github.com/ClickHouse/ClickHouse/pull/82355) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* The previous [`concurrent_threads_scheduler`](/operations/server-configuration-parameters/settings#concurrent_threads_scheduler) default value was `round_robin`, which proved unfair in the presence of a high number of single-threaded queries (e.g., `INSERT`s). This change makes a safer alternative `fair_round_robin` scheduler, the default. [#84747](https://github.com/ClickHouse/ClickHouse/pull/84747) ([Sergei Trifonov](https://github.com/serxa)).
+* Lazy materialization is enabled only with the analyzer to avoid maintenance without the analyzer which can have some issues (for example, when using `indexHint()` in conditions). [#83791](https://github.com/ClickHouse/ClickHouse/pull/83791) ([Igor Nikonov](https://github.com/devcrafter)).
+
+### Schema and SQL syntax {#schema-and-sql-syntax}
+
+* Forbid the creation of a table without insertable columns. [#81835](https://github.com/ClickHouse/ClickHouse/pull/81835) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Require backticks around identifiers with dots in default expressions to prevent them from being parsed as compound identifiers. [#83162](https://github.com/ClickHouse/ClickHouse/pull/83162) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Support PostgreSQL-style heredoc syntax: `$tag$ string contents... $tag$`, also known as dollar-quoted string literals. In previous versions, there were fewer restrictions on tags: they could contain arbitrary characters, including punctuation and whitespace. This introduces parsing ambiguity with identifiers that can also start with a dollar character. At the same time, PostgreSQL only allows word characters for tags. To resolve the problem, we now restrict heredoc tags only to contain word characters. Closes [#84731](https://github.com/ClickHouse/ClickHouse/issues/84731). [#84846](https://github.com/ClickHouse/ClickHouse/pull/84846) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+### Security and permissions {#security-and-permissions}
+
+* `SYSTEM RESTART REPLICAS` will only restart replicas in the databases where you have permission to `SHOW TABLES`. Previously the query led to the wakeup of tables in the Lazy database, even without access to that database, while these tables were being concurrently dropped. [#83321](https://github.com/ClickHouse/ClickHouse/pull/83321) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Functions `azureBlobStorage`, `deltaLakeAzure`, and `icebergAzure` have been updated to properly validate `AZURE` permissions. All cluster-variant functions (`-Cluster` functions) now verify permissions against their corresponding non-clustered counterparts. Additionally, the `icebergLocal` and `deltaLakeLocal` functions now enforce `FILE` permission checks. [#84938](https://github.com/ClickHouse/ClickHouse/pull/84938) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov
+
+## New features {#new-feature}
+
+### Data types {#data-types}
+
+* Add new data types: [`Time`](/sql-reference/data-types/time) `([H]HH:MM:SS)` and [`Time64`](/sql-reference/data-types/time64) `([H]HH:MM:SS[.fractional])`, and some basic cast functions and functions to interact with other data types. Added settings for compatibility with a legacy function `ToTime`. [#81217](https://github.com/ClickHouse/ClickHouse/pull/81217) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+
+### Functions {#functions}
+
+* Add [`NumericIndexedVector`](/sql-reference/functions/numeric-indexed-vector-functions), a new vector data-structure backed by bit-sliced, roaring-bitmap compression, together with more than 20 functions for building, analysing and point-wise arithmetic. Can cut storage and speed up joins, filters and aggregations on sparse data. Implements [#70582](https://github.com/ClickHouse/ClickHouse/issues/70582) and ["Large-Scale Metric Computation in Online Controlled Experiment Platform" paper](https://arxiv.org/abs/2405.08411) by T. Xiong and Y. Wang from VLDB 2024. [#74193](https://github.com/ClickHouse/ClickHouse/pull/74193) ([FriendLey](https://github.com/FriendLey)).
+* Add financial functions: [`financialInternalRateOfReturnExtended`](/sql-reference/functions/financial-functions#financialInternalRateOfReturnExtended) (`XIRR`), [`financialInternalRateOfReturn`](/sql-reference/functions/financial-functions#financialInternalRateOfReturn) (`IRR`), [`financialNetPresentValueExtended`](/sql-reference/functions/financial-functions#financialNetPresentValueExtended) (`XNPV`), [`financialNetPresentValue`](/sql-reference/functions/financial-functions#financialNetPresentValue) (`NPV`). [#81599](https://github.com/ClickHouse/ClickHouse/pull/81599) ([Joanna Hulboj](https://github.com/jh0x)).
+* Add the geospatial functions [`polygonIntersectsCartesian`](/sql-reference/functions/geo/polygons#polygonsintersectcartesian) and [`polygonIntersectsSpherical`](/sql-reference/functions/geo/polygons#polygonsintersectspherical) to check if two polygons intersect. [#81882](https://github.com/ClickHouse/ClickHouse/pull/81882) ([Paul Lamb](https://github.com/plamb)).
+* Support [`lag`](/sql-reference/window-functions/lag) and [`lead`](/sql-reference/window-functions/lead) window functions. Closes [#9887](https://github.com/ClickHouse/ClickHouse/issues/9887). [#82108](https://github.com/ClickHouse/ClickHouse/pull/82108) ([Dmitry Novik](https://github.com/novikd)).
+* Add functions [`colorSRGBToOkLCH`](/sql-reference/functions/other-functions#colorSRGBToOKLCH) and [`colorOkLCHToSRGB`](/sql-reference/functions/other-functions#colorOKLCHToSRGB) for converting colours between the sRGB and OkLCH colour spaces. [#83679](https://github.com/ClickHouse/ClickHouse/pull/83679) ([Fgrtue](https://github.com/Fgrtue)).
+* Users can now do case-insensitive JSON key lookups using [`JSONExtractCaseInsensitive`](/sql-reference/functions/json-functions#JSONExtractCaseInsensitive) (and other variants of `JSONExtract`). [#83770](https://github.com/ClickHouse/ClickHouse/pull/83770) ([Alistair Evans](https://github.com/alistairjevans)).
+* Add a new function [`nowInBlock64`](/sql-reference/functions/date-time-functions#nowInBlock64). [#84178](https://github.com/ClickHouse/ClickHouse/pull/84178) ([Halersson Paris](https://github.com/halersson)).
+* Add function [`dateTimeToUUIDv7`](/sql-reference/functions/uuid-functions#dateTimeToUUIDv7) to convert a DateTime value to a UUIDv7. Example usage: `SELECT dateTimeToUUIDv7(toDateTime('2025-08-15 18:57:56'))` returns `0198af18-8320-7a7d-abd3-358db23b9d5c`. [#84319](https://github.com/ClickHouse/ClickHouse/pull/84319) ([samradovich](https://github.com/samradovich)).
+* Add [`timeSeriesDerivToGrid`](/sql-reference/aggregate-functions/reference/timeSeriesDerivToGrid) and [`timeSeriesPredictLinearToGrid`](/sql-reference/aggregate-functions/reference/timeSeriesPredictLinearToGrid) aggregate functions to re-sample data to a time grid defined by the specified start timestamp, end timestamp, and step; calculates PromQL-like `deriv` and `predict_linear`, respectively. [#84328](https://github.com/ClickHouse/ClickHouse/pull/84328) ([Stephen Chi](https://github.com/stephchi0)).
+* Add [`timeSeriesRange`](/sql-reference/functions/time-series-functions#timeSeriesRange) and [`timeSeriesFromGrid`](/sql-reference/functions/time-series-functions#timeSeriesFromGrid) functions. [#85435](https://github.com/ClickHouse/ClickHouse/pull/85435) ([Vitaly Baranov](https://github.com/vitlibar)).
+
+### System tables {#system-tables}
+
+* Add a [`system.dead_letter_queue`](/operations/system-tables/dead_letter_queue) table to keep erroneous incoming messages from engines like Kafka. [#68873](https://github.com/ClickHouse/ClickHouse/pull/68873) ([Ilya Golshtein](https://github.com/ilejn)).
+* Add [`system.zookeeper_connection_log`](/operations/system-tables/zookeeper_connection_log) system table to store historical information about ZooKeeper connections. [#79494](https://github.com/ClickHouse/ClickHouse/pull/79494) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Added a new system table [`system.codecs`](/operations/system-tables/codecs) to introspect the available codecs. (issue [#81525](https://github.com/ClickHouse/ClickHouse/issues/81525)). [#81600](https://github.com/ClickHouse/ClickHouse/pull/81600) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
+* Introduction of `system.completions` table. Closes [#81889](https://github.com/ClickHouse/ClickHouse/issues/81889). [#83833](https://github.com/ClickHouse/ClickHouse/pull/83833) ([|2ustam](https://github.com/RuS2m)).
+
+### Iceberg and DeltaLake {#iceberg-and-deltalake}
+
+* Support complex types in iceberg schema evolution. [#73714](https://github.com/ClickHouse/ClickHouse/pull/73714) ([scanhex12](https://github.com/scanhex12)).
+* Introduce Iceberg writes for `insert` queries. [#82692](https://github.com/ClickHouse/ClickHouse/pull/82692) ([scanhex12](https://github.com/scanhex12)).
+* Support positional deletes for the Iceberg table engine. [#83094](https://github.com/ClickHouse/ClickHouse/pull/83094) ([Daniil Ivanik](https://github.com/divanik)).
+* Read iceberg data files by field ids. Closes [#83065](https://github.com/ClickHouse/ClickHouse/issues/83065). [#83653](https://github.com/ClickHouse/ClickHouse/pull/83653) ([scanhex12](https://github.com/scanhex12)).
+* Iceberg writes for create. Closes [#83927](https://github.com/ClickHouse/ClickHouse/issues/83927). [#83983](https://github.com/ClickHouse/ClickHouse/pull/83983) ([scanhex12](https://github.com/scanhex12)).
+* Writes for Glue catalogs. [#84136](https://github.com/ClickHouse/ClickHouse/pull/84136) ([scanhex12](https://github.com/scanhex12)).
+* Writes for Iceberg Rest catalogs. [#84684](https://github.com/ClickHouse/ClickHouse/pull/84684) ([scanhex12](https://github.com/scanhex12)).
+* Merge all iceberg position delete files into data files. This will reduce amount and sizes of parquet files in iceberg storage. Syntax: `OPTIMIZE TABLE table_name`. [#85250](https://github.com/ClickHouse/ClickHouse/pull/85250) ([scanhex12](https://github.com/scanhex12)).
+* Support `DROP TABLE` for iceberg (Removing from REST/Glue catalogs + removing metadata about the table). [#85395](https://github.com/ClickHouse/ClickHouse/pull/85395) ([scanhex12](https://github.com/scanhex12)).
+* Support `ALTER DELETE` mutations for iceberg in merge-on-read format. [#85549](https://github.com/ClickHouse/ClickHouse/pull/85549) ([scanhex12](https://github.com/scanhex12)).
+* Support writes into DeltaLake. Closes [#79603](https://github.com/ClickHouse/ClickHouse/issues/79603). [#85564](https://github.com/ClickHouse/ClickHouse/pull/85564) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Write more iceberg statistics (column sizes, lower and upper bounds) in metadata (manifest entries) for min-max pruning. [#85746](https://github.com/ClickHouse/ClickHouse/pull/85746) ([scanhex12](https://github.com/scanhex12)).
+* Support add/drop/modify columns in iceberg for simple types. [#85769](https://github.com/ClickHouse/ClickHouse/pull/85769) ([scanhex12](https://github.com/scanhex12)).
+
+### MergeTree and storage {#mergetree-and-storage}
+
+* All tables now support the `_table` virtual column, not only Merge type tables. [#63665](https://github.com/ClickHouse/ClickHouse/pull/63665) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
+* Add SZ3 as a lossy yet error-bounded compression codec for columns of type `Float32` and `Float64`. [#67161](https://github.com/ClickHouse/ClickHouse/pull/67161) ([scanhex12](https://github.com/scanhex12)).
+* Added support for lightweight updates for `MergeTree`-family tables. Lightweight updates can be used by a new syntax: `UPDATE
SET col1 = val1, col2 = val2, ... WHERE `. Added implementation of lightweight deletes via lightweight updates which can be enabled by setting `lightweight_delete_mode = 'lightweight_update'`. [#82004](https://github.com/ClickHouse/ClickHouse/pull/82004) ([Anton Popov](https://github.com/CurtizJ)).
+* Support `_part_granule_offset` virtual column in MergeTree-family tables. This column indicates the zero-based index of the granule/mark each row belongs to within its data part. This addresses [#79572](https://github.com/ClickHouse/ClickHouse/issues/79572). [#82341](https://github.com/ClickHouse/ClickHouse/pull/82341) ([Amos Bird](https://github.com/amosbird)).
+
+### Protocol and client Support {#protocol-and-client-support}
+
+* Implement support for [ArrowFlight RPC](https://arrow.apache.org/docs/format/Flight.html) protocol by adding the [`arrowflight`](/engines/table-engines/integrations/arrowflight) table engine. [#74184](https://github.com/ClickHouse/ClickHouse/pull/74184) ([zakr600](https://github.com/zakr600)).
+* Add PostgreSQL protocol `COPY` command support. [#74344](https://github.com/ClickHouse/ClickHouse/pull/74344) ([scanhex12](https://github.com/scanhex12)).
+* Support C# client for mysql protocol. This closes [#83992](https://github.com/ClickHouse/ClickHouse/issues/83992). [#84397](https://github.com/ClickHouse/ClickHouse/pull/84397) ([scanhex12](https://github.com/scanhex12)).
+* Force secure connection for `mysql_port` and `postgresql_port`. [#82962](https://github.com/ClickHouse/ClickHouse/pull/82962) ([Shaohua Wang](https://github.com/tiandiwonder)).
+
+### SQL and query features {#sql-and-query-features}
+
+* Support `DESCRIBE SELECT` in addition to `DESCRIBE (SELECT ...)`. [#82947](https://github.com/ClickHouse/ClickHouse/pull/82947) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Support writing `USE DATABASE {name}`. [#81307](https://github.com/ClickHouse/ClickHouse/pull/81307) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Reading from projections is implemented for parallel replicas. A new setting [`parallel_replicas_support_projection`](/operations/settings/settings#parallel_replicas_support_projection) has been added to control whether projection support is enabled. To simplify the implementation, support for projection is only enabled when `parallel_replicas_local_plan` is active. [#82807](https://github.com/ClickHouse/ClickHouse/pull/82807) ([zoomxi](https://github.com/zoomxi)).
+
+### Formats {#formats}
+
+* Add [`format_schema_source`](/operations/settings/formats#format_schema_source) setting which defines the source of `format_schema`. [#80874](https://github.com/ClickHouse/ClickHouse/pull/80874) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Added `Hash` as a new output format. It calculates a single hash value for all columns and rows of the result. This is useful for calculating a "fingerprint" of the result, for example, in use cases where data transfer is a bottleneck. Example: `SELECT arrayJoin(['abc', 'def']), 42 FORMAT Hash` returns `e5f9e676db098fdb9530d2059d8c23ef`. [#84607](https://github.com/ClickHouse/ClickHouse/pull/84607) ([Robert Schulze](https://github.com/rschu1ze)).
+
+### Server configuration and workload management {#server-configuration-and-workload-management}
+
+* Server setting [`cpu_slot_preemption`](/operations/server-configuration-parameters/settings#cpu_slot_preemption) enables preemptive CPU scheduling for workloads and ensures max-min fair allocation of CPU time among workloads. New workload settings for CPU throttling are added: `max_cpus`, `max_cpu_share` and `max_burst_cpu_seconds`. [#80879](https://github.com/ClickHouse/ClickHouse/pull/80879) ([Sergei Trifonov](https://github.com/serxa)).
+* The workload setting [`max_waiting_queries`](/operations/server-configuration-parameters/settings#max_waiting_queries) is now supported. It can be used to limit the size of the query queue. If the limit is reached, all subsequent queries will be terminated with the `SERVER_OVERLOADED` error. [#81250](https://github.com/ClickHouse/ClickHouse/pull/81250) ([Oleg Doronin](https://github.com/dorooleg)).
+* Drop TCP connection after configured number of queries or time threshold. Resolves [#68000](https://github.com/ClickHouse/ClickHouse/issues/68000). [#81472](https://github.com/ClickHouse/ClickHouse/pull/81472) ([Kenny Sun](https://github.com/hwabis)).
+
+### Cloud storage {#cloud-storage}
+
+* Add `extra_credentials` to `AzureBlobStorage` to authenticate with `client_id` and `tenant_id`. [#84235](https://github.com/ClickHouse/ClickHouse/pull/84235) ([Pablo Marcos](https://github.com/pamarcos)).
+
+### Keeper {#keeper}
+
+* Add the ability to set up arbitrary watches in Keeper Multi queries. [#84964](https://github.com/ClickHouse/ClickHouse/pull/84964) ([Mikhail Artemenko](https://github.com/Michicosun)).
+* Support partially aggregated metrics. [#85328](https://github.com/ClickHouse/ClickHouse/pull/85328) ([Mikhail Artemenko](https://github.com/Michicosun)).
+
+## Experimental features {#experimental-features}
+
+### Table engines and table functions {#table-engines-and-table-functions}
+
+* Add Ytsaurus table engine and table function. [#77606](https://github.com/ClickHouse/ClickHouse/pull/77606) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+
+### Text index improvements {#text-index-improvements}
+
+* Add functions `searchAny` and `searchAll` which are general purpose tools to search text indexes. [#80641](https://github.com/ClickHouse/ClickHouse/pull/80641) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* The text index now supports `string` tokenizer. [#81752](https://github.com/ClickHouse/ClickHouse/pull/81752) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* Changed the default index granularity value for `text` indexes to 64. This improves the expected performance for the average test query in internal benchmarks. [#82162](https://github.com/ClickHouse/ClickHouse/pull/82162) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
+* The 256-bit bitmap stores the outgoing labels of a state ordered, but outgoing states are saved into disk in the order they appear in the hash table. Therefore, a label would point to a wrong next state while reading from disk. [#82783](https://github.com/ClickHouse/ClickHouse/pull/82783) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* Currently, FST tree is saved into disk uncompressed. This could lead to slow performance or higher I/O bandwidth while both writing and reading into/from disk. [#83093](https://github.com/ClickHouse/ClickHouse/pull/83093) ([Elmi Ahmadov](https://github.com/ahmadov)).
+
+### Feature maturity updates {#feature-maturity-updates}
+
+* Moved catalog to beta. [#85848](https://github.com/ClickHouse/ClickHouse/pull/85848) ([Melvyn Peignon](https://github.com/melvynator)).
+* Lightweight updates moved to the beta stage from experimental. [#85952](https://github.com/ClickHouse/ClickHouse/pull/85952) ([Anton Popov](https://github.com/CurtizJ)).
+
+## Performance improvements {#performance-improvements}
+
+### Query execution and aggregation {#query-execution-and-aggregation}
+
+* Trivial optimization for `-If` aggregate function combinator. [#78454](https://github.com/ClickHouse/ClickHouse/pull/78454) ([李扬](https://github.com/taiyang-li)).
+* Added new logic (controlled by the setting [`enable_producing_buckets_out_of_order_in_aggregation`](/operations/settings/settings#enable_producing_buckets_out_of_order_in_aggregation), enabled by default) that allows sending some buckets out of order during memory-efficient aggregation. When some aggregation buckets take significantly longer to merge than others, it improves performance by allowing the initiator to merge buckets with higher bucket id-s in the meantime. The downside is potentially higher memory usage (shouldn't be significant). [#80179](https://github.com/ClickHouse/ClickHouse/pull/80179) ([Nikita Taranov](https://github.com/nickitat)).
+* Make the pipeline after the `TOTALS` step multithreaded. [#80331](https://github.com/ClickHouse/ClickHouse/pull/80331) ([UnamedRus](https://github.com/UnamedRus)).
+* When the aggregation query contains only a single `COUNT()` function on a `NOT NULL` column, the aggregation logic is fully inlined during hash table probing. This avoids allocating and maintaining any aggregation state, significantly reducing memory usage and CPU overhead. This partially addresses [#81982](https://github.com/ClickHouse/ClickHouse/issues/81982). [#82104](https://github.com/ClickHouse/ClickHouse/pull/82104) ([Amos Bird](https://github.com/amosbird)).
+* Calculate serialized key columnarly when group by multiple string or number columns. [#83884](https://github.com/ClickHouse/ClickHouse/pull/83884) ([李扬](https://github.com/taiyang-li)).
+* Implement `addManyDefaults` for `-If` combinators. [#83870](https://github.com/ClickHouse/ClickHouse/pull/83870) ([Raúl Marín](https://github.com/Algunenano)).
+
+### JOIN optimizations {#join-optimizations}
+
+* Add new setting [`min_joined_block_size_rows`](/operations/settings/settings#min_joined_block_size_rows) (analogous to `min_joined_block_size_bytes`; defaults to 65409) to control the minimum block size (in rows) for JOIN input and output blocks (if the join algorithm supports it). Small blocks will be squashed. [#81886](https://github.com/ClickHouse/ClickHouse/pull/81886) ([Nikita Taranov](https://github.com/nickitat)).
+* Performance of `HashJoin` optimised by removing the additional loop over hash maps in the typical case of only one key column, also `null_map` and `join_mask` checks are eliminated when they're always `true`/`false`. [#82308](https://github.com/ClickHouse/ClickHouse/pull/82308) ([Nikita Taranov](https://github.com/nickitat)).
+* The optimizations for `null_map` and `JoinMask` from [#82308](https://github.com/ClickHouse/ClickHouse/issues/82308) were applied to the case of JOIN with multiple disjuncts. Also, the `KnownRowsHolder` data structure was optimized. [#83041](https://github.com/ClickHouse/ClickHouse/pull/83041) ([Nikita Taranov](https://github.com/nickitat)).
+* Plain `std::vector` is used for join flags to avoid calculating a hash on each access to flags. [#83043](https://github.com/ClickHouse/ClickHouse/pull/83043) ([Nikita Taranov](https://github.com/nickitat)).
+* Process `max_joined_block_rows` outside of hash JOIN main loop. Slightly better performance for ALL JOIN. [#83216](https://github.com/ClickHouse/ClickHouse/pull/83216) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Don't pre-allocate memory for result columns beforehand when `HashJoin` uses `lazy` output mode. It is suboptimal, especially when the number of matches is low. Moreover, we know the exact amount of matches after joining is done, so we can preallocate more precisely. [#83304](https://github.com/ClickHouse/ClickHouse/pull/83304) ([Nikita Taranov](https://github.com/nickitat)).
+* All `LEFT/INNER` JOINs will be automatically converted to `RightAny` if the right side is functionally determined by the join key columns (all rows have unique join key values). [#84010](https://github.com/ClickHouse/ClickHouse/pull/84010) ([Nikita Taranov](https://github.com/nickitat)).
+* Improved performance of applying patch parts in `Join` mode. [#85040](https://github.com/ClickHouse/ClickHouse/pull/85040) ([Anton Popov](https://github.com/CurtizJ)).
+
+### Distributed query improvements {#distributed-query-improvements}
+
+* Introduced an option to offload (de)compression and (de)serialization of blocks into pipeline threads instead of a single thread associated with a network connection. Controlled by the setting `enable_parallel_blocks_marshalling`. It should speed up distributed queries that transfer significant amounts of data between the initiator and remote nodes. [#78694](https://github.com/ClickHouse/ClickHouse/pull/78694) ([Nikita Taranov](https://github.com/nickitat)).
+* Parallel distributed `INSERT SELECT` is enabled by default in mode where `INSERT SELECT` executed on each shard independently, see `parallel_distributed_insert_select` setting. [#80425](https://github.com/ClickHouse/ClickHouse/pull/80425) ([Igor Nikonov](https://github.com/devcrafter)).
+* Compress logs and profile events in the native protocol. On clusters with 100+ replicas, uncompressed profile events take 1..10 MB/sec, and the progress bar is sluggish on slow Internet connections. This closes [#82533](https://github.com/ClickHouse/ClickHouse/issues/82533). [#82535](https://github.com/ClickHouse/ClickHouse/pull/82535) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Parallel distributed `INSERT SELECT` is enabled by default in mode where INSERT SELECT executed on each shard independently, see `parallel_distributed_insert_select` setting. [#83040](https://github.com/ClickHouse/ClickHouse/pull/83040) ([Igor Nikonov](https://github.com/devcrafter)).
+* Fixed the calculation of the minimal task size for parallel replicas. [#84752](https://github.com/ClickHouse/ClickHouse/pull/84752) ([Nikita Taranov](https://github.com/nickitat)).
+
+### Index improvements {#index-improvements}
+
+* Vector search queries using a vector similarity index complete with lower latency due to reduced storage reads and reduced CPU usage. [#79103](https://github.com/ClickHouse/ClickHouse/pull/79103) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Respect `merge_tree_min_{rows,bytes}_for_seek` in `filterPartsByQueryConditionCache` to align it with other methods filtering by indexes. [#80312](https://github.com/ClickHouse/ClickHouse/pull/80312) ([李扬](https://github.com/taiyang-li)).
+* Process higher granularity min-max indexes first. Closes [#75381](https://github.com/ClickHouse/ClickHouse/issues/75381). [#83798](https://github.com/ClickHouse/ClickHouse/pull/83798) ([Maruth Goyal](https://github.com/maruthgoyal)).
+* The bloom filter index is now used for conditions like `has([c1, c2, ...], column)`, where `column` is not of an `Array` type. This improves performance for such queries, making them as efficient as the `IN` operator. [#83945](https://github.com/ClickHouse/ClickHouse/pull/83945) ([Doron David](https://github.com/dorki)).
+* Processes indexes in increasing order of file size. The net index ordering prioritizes minmax and vector indexes (due to simplicity and selectivity respectively), and small indexes thereafter. Within the minmax/vector indexes smaller indexes are also preferred. [#84094](https://github.com/ClickHouse/ClickHouse/pull/84094) ([Maruth Goyal](https://github.com/maruthgoyal)).
+* Previously, the text index data would be separated into multiple segments (each segment size by default was 256 MiB). This might reduce the memory consumption while building the text index, however this increases the space requirement on the disk and increase the query response time. [#84590](https://github.com/ClickHouse/ClickHouse/pull/84590) ([Elmi Ahmadov](https://github.com/ahmadov)).
+
+### Subquery optimizations {#subquery-optimizations}
+
+* Optimize the generated plan for correlated subqueries by removing redundant `JOIN` operations using equivalence classes. If there are equivalent expressions for all correlated columns, `CROSS JOIN` is not produced if `query_plan_correlated_subqueries_use_substitution` setting is enabled. [#82435](https://github.com/ClickHouse/ClickHouse/pull/82435) ([Dmitry Novik](https://github.com/novikd)).
+* Read only required columns in correlated subquery when it appears to be an argument of function `EXISTS`. [#82443](https://github.com/ClickHouse/ClickHouse/pull/82443) ([Dmitry Novik](https://github.com/novikd)).
+
+### Azure Blob Storage improvements {#azure-blob-storage-improvements}
+
+* [`azureBlobStorage`](/engines/table-engines/integrations/azureBlobStorage) table engine now cachees and reuses managed identity authentication tokens when possible to avoid throttling. [#79860](https://github.com/ClickHouse/ClickHouse/pull/79860) ([Nick Blakely](https://github.com/niblak)).
+* Replace curl HTTP client with poco HTTP client for azure blob storage. Introduced multiple settings for these clients which mirror settings from S3. Introduced aggressive connect timeouts for both Azure and S3. Improved introspection into Azure profile events and metrics. New client is enabled by default, provide much better latencies for cold queries on top of Azure Blob Storage. Old `Curl` client can be returned back by setting `azure_sdk_use_native_client=false`. [#83294](https://github.com/ClickHouse/ClickHouse/pull/83294) ([alesapin](https://github.com/alesapin)).
+
+### Storage engine improvements {#storage-engine-improvements}
+
+* Fix filter by key for Redis and KeeperMap storages. [#81833](https://github.com/ClickHouse/ClickHouse/pull/81833) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* `ATTACH PARTITION` no longer leads to the dropping of all caches. [#82377](https://github.com/ClickHouse/ClickHouse/pull/82377) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Avoid holding the lock while creating storage snapshot data to reduce lock contention with high concurrent load. [#83510](https://github.com/ClickHouse/ClickHouse/pull/83510) ([Duc Canh Le](https://github.com/canhld94)).
+* Removing temporary parts may take a while (especially with S3), and currently we do it while holding a global lock in `MergeTreeBackgroundExecutor`. When we need to restart all tables due to connection loss and we wait for background tasks to finish - tables may even stuck in readonly mode for an hour. But looks like we don't need this lock for calling `cancel`. [#84311](https://github.com/ClickHouse/ClickHouse/pull/84311) ([Alexander Tokmakov](https://github.com/tavplubix)).
+
+### Format improvements {#format-improvements}
+
+* New parquet reader implementation. It's generally faster and supports page-level filter pushdown and `PREWHERE`. Currently experimental. Use setting `input_format_parquet_use_native_reader_v3` to enable. [#82789](https://github.com/ClickHouse/ClickHouse/pull/82789) ([Michael Kolupaev](https://github.com/al13n321)).
+* Improved performance of the ProtobufSingle input format by reusing the serializer when no parsing errors occur. [#83613](https://github.com/ClickHouse/ClickHouse/pull/83613) ([Eduard Karacharov](https://github.com/korowa)).
+
+### Data type and serialization optimizations {#data-type-and-serialization-optimizations}
+
+* Significantly improve performance of `JSON` subcolumns reading from shared data in MergeTree by implementing new serializations for `JSON` shared data in MergeTree. [#83777](https://github.com/ClickHouse/ClickHouse/pull/83777) ([Pavel Kruglov](https://github.com/Avogar)).
+* Optimize string deserialization by simplifying the code. Closes [#38564](https://github.com/ClickHouse/ClickHouse/issues/38564). [#84561](https://github.com/ClickHouse/ClickHouse/pull/84561) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+### Pipeline and execution improvements {#pipeline-and-execution-improvements}
+
+* Minimize memory copy in port headers during pipeline construction. Original [PR](https://github.com/ClickHouse/ClickHouse/pull/70105) by [heymind](https://github.com/heymind). [#83381](https://github.com/ClickHouse/ClickHouse/pull/83381) ([Raúl Marín](https://github.com/Algunenano)).
+* Improve the performance of pipeline building. [#83631](https://github.com/ClickHouse/ClickHouse/pull/83631) ([Raúl Marín](https://github.com/Algunenano)).
+* Optimize MergeTreeReadersChain::getSampleBlock. [#83875](https://github.com/ClickHouse/ClickHouse/pull/83875) ([Raúl Marín](https://github.com/Algunenano)).
+* Optimize the materialization of constants in cases when we do this materialization only to return a single row. [#85071](https://github.com/ClickHouse/ClickHouse/pull/85071) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+### Memory and resource optimizations {#memory-and-resource-optimizations}
+
+* Tweak some jemalloc configs to improve performance. [#81807](https://github.com/ClickHouse/ClickHouse/pull/81807) ([Antonio Andelic](https://github.com/antonio2368)).
+* Add alignment in the Counter of ProfileEvents to reduce false sharing. [#82697](https://github.com/ClickHouse/ClickHouse/pull/82697) ([Jiebin Sun](https://github.com/jiebinn)).
+* Reduce unnecessary memcpy calls in CompressedReadBufferBase::readCompressedData. [#83986](https://github.com/ClickHouse/ClickHouse/pull/83986) ([Raúl Marín](https://github.com/Algunenano)).
+
+### Query planning and analysis {#query-planning-and-analysis}
+
+* Speedup of QueryTreeHash. [#82617](https://github.com/ClickHouse/ClickHouse/pull/82617) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+
+### Logging improvements {#logging-improvements}
+
+* Introduce async logging. [#82516](https://github.com/ClickHouse/ClickHouse/pull/82516) ([Raúl Marín](https://github.com/Algunenano)).
+
+### Function optimizations {#function-optimizations}
+
+* Optimize `largestTriangleThreeBuckets` by removing temporary data. [#84479](https://github.com/ClickHouse/ClickHouse/pull/84479) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Optimized and simplified implementation of many string-handling functions. Corrected incorrect documentation for several functions. Note: The output of `byteSize` for String columns and complex types containing String columns has changed from 9 bytes per empty string to 8 bytes per empty string, which is expected behavior. [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+### Keeper improvements {#keeper-improvements}
+
+* Improve Keeper with rocksdb initial loading. [#83390](https://github.com/ClickHouse/ClickHouse/pull/83390) ([Antonio Andelic](https://github.com/antonio2368)).
+
+### Data lake improvements {#data-lake-improvements}
+
+* Improve parallel files processing with delta-kernel-rs backend. [#85642](https://github.com/ClickHouse/ClickHouse/pull/85642) ([Azat Khuzhin](https://github.com/azat)).
+
+## Improvements {#improvements}
+
+### Access control and security {#access-control-and-security}
+
+* Introduced two new access types: `READ` and `WRITE` for sources and deprecates all previous access types related to sources. Before `GRANT S3 ON *.* TO user`, now: `GRANT READ, WRITE ON S3 TO user`. This also allows to separate `READ` and `WRITE` permissions for sources, e.g.: `GRANT READ ON * TO user`, `GRANT WRITE ON S3 TO user`. The feature is controlled by a setting `access_control_improvements.enable_read_write_grants` and disabled by default. [#73659](https://github.com/ClickHouse/ClickHouse/pull/73659) ([pufit](https://github.com/pufit)).
+* Allow parameters in `CREATE USER` queries for usernames. [#81387](https://github.com/ClickHouse/ClickHouse/pull/81387) ([Diskein](https://github.com/Diskein)).
+* Exclude sensitive data from core dumps. Add two allocators: AWS library compatible `AwsNodumpMemoryManager` and STL compatible `JemallocNodumpSTLAllocator`. Both are wrappers of the Jemalloc allocator. They use Jemalloc's extent hooks and madvise to mark memory pages as "don't dump". Used for S3 credentials, user credentials, and some query data. [#82441](https://github.com/ClickHouse/ClickHouse/pull/82441) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Views, created by ephemeral users, will now store a copy of an actual user and will no longer be invalidated after the ephemeral user is deleted. [#84763](https://github.com/ClickHouse/ClickHouse/pull/84763) ([pufit](https://github.com/pufit)).
+* Match external auth forward_headers in case-insensitive way. [#84737](https://github.com/ClickHouse/ClickHouse/pull/84737) ([ingodwerust](https://github.com/ingodwerust)).
+* Add a `parameter` column to `system.grants` to determine source type for `GRANT READ/WRITE` and the table engine for `GRANT TABLE ENGINE`. [#85643](https://github.com/ClickHouse/ClickHouse/pull/85643) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+
+### Backup and restore {#backup-and-restore}
+
+* Allow backups for PostgreSQL, MySQL & DataLake databases. A backup of such a database would only save the definition and not the data inside of it. [#79982](https://github.com/ClickHouse/ClickHouse/pull/79982) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Set all log messages for writing backup files to TRACE. [#82907](https://github.com/ClickHouse/ClickHouse/pull/82907) ([Hans Krutzer](https://github.com/hkrutzer)).
+* Introduce [`backup_restore_s3_retry_initial_backoff_ms`](/operations/settings/settings#backup_restore_s3_retry_initial_backoff_ms), [`backup_restore_s3_retry_max_backoff_ms`](/operations/settings/settings#backup_restore_s3_retry_max_backoff_ms), [`backup_restore_s3_retry_jitter_factor`](/operations/settings/settings#backup_restore_s3_retry_jitter_factor) to configure the S3 retry backoff strategy used during backup and restore operations. [#84421](https://github.com/ClickHouse/ClickHouse/pull/84421) ([Julia Kartseva](https://github.com/jkartseva)).
+* Introduce a new [`backup_slow_all_threads_after_retryable_s3_error`](/operations/settings/settings#backup_slow_all_threads_after_retryable_s3_error) setting to reduce pressure on S3 during retry storms caused by errors such as `SlowDown`, by slowing down all threads once a single retryable error is observed. [#84854](https://github.com/ClickHouse/ClickHouse/pull/84854) ([Julia Kartseva](https://github.com/jkartseva)).
+
+### Data integrity and validation {#data-integrity-and-validation}
+
+* Verify the part has consistent checksum.txt file right before committing it. [#76625](https://github.com/ClickHouse/ClickHouse/pull/76625) ([Sema Checherinda](https://github.com/CheSema)).
+* Forbid to start `RENAME COLUMN` alter mutation if it will rename some column that right now affected by incomplete data mutation. [#81823](https://github.com/ClickHouse/ClickHouse/pull/81823) ([Mikhail Artemenko](https://github.com/Michicosun)).
+* Now mutations snapshot will be built from the snapshot of visible parts. Mutation counters used in snapshot will also be recalculated from the included mutations. [#82945](https://github.com/ClickHouse/ClickHouse/pull/82945) ([Mikhail Artemenko](https://github.com/Michicosun)).
+* Add ability to parse part's prefix and suffix and also check coverage for non constant columns. [#83377](https://github.com/ClickHouse/ClickHouse/pull/83377) ([Mikhail Artemenko](https://github.com/Michicosun)).
+
+### Iceberg table engine {#iceberg-table-engine}
+
+* Support position deletes for Iceberg table engine. [#80237](https://github.com/ClickHouse/ClickHouse/pull/80237) ([YanghongZhong](https://github.com/yahoNanJing)).
+* Now clickhouse supports compressed `metadata.json` files for Iceberg. Fixes [#70874](https://github.com/ClickHouse/ClickHouse/issues/70874). [#81451](https://github.com/ClickHouse/ClickHouse/pull/81451) ([alesapin](https://github.com/alesapin)).
+* Fix iceberg reading by field ids for complex types. [#84821](https://github.com/ClickHouse/ClickHouse/pull/84821) ([scanhex12](https://github.com/scanhex12)).
+* Support iceberg writes to read from pyiceberg. [#84466](https://github.com/ClickHouse/ClickHouse/pull/84466) ([scanhex12](https://github.com/scanhex12)).
+* Adds snapshot version to data lake table engines. [#84659](https://github.com/ClickHouse/ClickHouse/pull/84659) ([Pete Hampton](https://github.com/pjhampton)).
+* Support writing of a version-hint file with Iceberg. This closes [#85097](https://github.com/ClickHouse/ClickHouse/issues/85097). [#85130](https://github.com/ClickHouse/ClickHouse/pull/85130) ([scanhex12](https://github.com/scanhex12)).
+* Support compressed `.metadata.json` file via [`iceberg_metadata_compression_method`](/operations/settings/settings#iceberg_metadata_compression_method) setting. It supports all clickhouse compression methods. This closes [#84895](https://github.com/ClickHouse/ClickHouse/issues/84895). [#85196](https://github.com/ClickHouse/ClickHouse/pull/85196) ([scanhex12](https://github.com/scanhex12)).
+* Optimized memory usage for Iceberg positional delete files. Instead of loading all delete file data into memory, only the current row-group from Parquet delete files is kept in RAM. This significantly reduces memory consumption when working with large positional delete files. [#85329](https://github.com/ClickHouse/ClickHouse/pull/85329) ([scanhex12](https://github.com/scanhex12)).
+* Allow asynchronously iterating objects from Iceberg table without storing objects for each data file explicitly. [#85369](https://github.com/ClickHouse/ClickHouse/pull/85369) ([Daniil Ivanik](https://github.com/divanik)).
+* Support Iceberg equality deletes. [#85843](https://github.com/ClickHouse/ClickHouse/pull/85843) ([Han Fei](https://github.com/hanfei1991)).
+
+### DeltaLake table engine {#deltalake-table-engine}
+
+* Improve `DeltaLake` table engine: delta-kernel-rs has `ExpressionVisitor` API which is implemented in this PR and is applied to partition column expressions transform (it will replace an old deprecated within the delta-kernel-rs way, which was used before in our code). In the future this `ExpressionVisitor` will also allow to implement statistics based pruning and some delta-lake proprietary features. Additionally the purpose of this change is to support partition pruning in `DeltaLakeCluster` table engine (the result of a parsed expression - ActionsDAG - will be serialized and sent from the initiator along with the data path, because this kind of information, which is needed for pruning, is only available as meta information on data files listing, which is done by initiator only, but it has to be applied to data on each reading server). [#81136](https://github.com/ClickHouse/ClickHouse/pull/81136) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix partition pruning with data lake cluster functions. [#82131](https://github.com/ClickHouse/ClickHouse/pull/82131) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix reading partitioned data in DeltaLakeCluster table function. In this PR cluster functions protocol version is increased, allowing to send extra info from initiator to replicas. This extra info contains delta-kernel transform expression, which is needed to parse partition columns (and some other staff in the future, like generated columns, etc). [#82132](https://github.com/ClickHouse/ClickHouse/pull/82132) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Now database Datalake throw more convenient exception. Fixes [#81211](https://github.com/ClickHouse/ClickHouse/issues/81211). [#82304](https://github.com/ClickHouse/ClickHouse/pull/82304) ([alesapin](https://github.com/alesapin)).
+* Implement internal `delta-kernel-rs` filtering (statistics and partition pruning) in storage `DeltaLake`. [#84006](https://github.com/ClickHouse/ClickHouse/pull/84006) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add a setting [`delta_lake_enable_expression_visitor_logging`](/operations/settings/settings#delta_lake_enable_expression_visitor_logging) to turn off expression visitor logs as they can be too verbose even for test log level when debugging something. [#84315](https://github.com/ClickHouse/ClickHouse/pull/84315) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add setting [`delta_lake_snapshot_version`](/operations/settings/settings#delta_lake_snapshot_version) to allow reading specific snapshot version in table engine `DeltaLake`. [#85295](https://github.com/ClickHouse/ClickHouse/pull/85295) ([Kseniia Sumarokova](https://github.com/kssenii)).
+
+### Data lake integration {#data-lake-integration}
+
+* Speedup tables listing in data catalogs by asynchronous requests. [#81084](https://github.com/ClickHouse/ClickHouse/pull/81084) ([alesapin](https://github.com/alesapin)).
+* Support `TimestampTZ` in Glue catalog. This closes [#81654](https://github.com/ClickHouse/ClickHouse/issues/81654). [#83132](https://github.com/ClickHouse/ClickHouse/pull/83132) ([scanhex12](https://github.com/scanhex12)).
+* Splits FormatParserGroup on two independent structs, the first one is responsible for shared compute and IO resources, the second one is responsible for shared filter resources (filter ActionDag, KeyCondition). This is done for more flexible shared usage of these structures by different threads. [#83997](https://github.com/ClickHouse/ClickHouse/pull/83997) ([Daniil Ivanik](https://github.com/divanik)).
+* Add missing `partition_columns_in_data_file` to azure configuration. [#85373](https://github.com/ClickHouse/ClickHouse/pull/85373) ([Arthur Passos](https://github.com/arthurpassos)).
+* Add show_data_lake_catalogs_in_system_tables flag to manage adding data lake tables in system.tables resolves [#85384](https://github.com/ClickHouse/ClickHouse/issues/85384). [#85411](https://github.com/ClickHouse/ClickHouse/pull/85411) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+
+### S3 and object storage {#s3-and-object-storage}
+
+* Implement methods `moveFile` and `replaceFile` in `s3_plain_rewritable` to support it as a database disk. [#79424](https://github.com/ClickHouse/ClickHouse/pull/79424) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* S3 read and write requests are throttled on the HTTP socket level (instead of whole S3 requests) to avoid issues with `max_remote_read_network_bandwidth_for_server` and `max_remote_write_network_bandwidth_for_server` throttling. [#81837](https://github.com/ClickHouse/ClickHouse/pull/81837) ([Sergei Trifonov](https://github.com/serxa)).
+* This PR introduces jitter to the S3 retry mechanism when the `s3_slow_all_threads_after_network_error` configuration is enabled. [#81849](https://github.com/ClickHouse/ClickHouse/pull/81849) ([zoomxi](https://github.com/zoomxi)).
+* Implement AWS S3 authentication with an explicitly provided IAM role. Implement OAuth for GCS. These features were recently only available in ClickHouse Cloud and are now open-sourced. Synchronize some interfaces such as serialization of the connection parameters for object storages. [#84011](https://github.com/ClickHouse/ClickHouse/pull/84011) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Allow to use any storage policy (i.e. object storage, such as S3) for external aggregation/sorting. [#84734](https://github.com/ClickHouse/ClickHouse/pull/84734) ([Azat Khuzhin](https://github.com/azat)).
+* Collect all removed objects to execute single object storage remove operation. [#85316](https://github.com/ClickHouse/ClickHouse/pull/85316) ([Mikhail Artemenko](https://github.com/Michicosun)).
+
+### S3Queue table engine {#s3queue-table-engine}
+
+* Macros like `{uuid}` can now be used in the `keeper_path` setting of the S3Queue table engine. [#82463](https://github.com/ClickHouse/ClickHouse/pull/82463) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Add a new server setting `s3queue_disable_streaming` which disables streaming in tables with S3Queue table engine. This setting is changeable without server restart. [#82515](https://github.com/ClickHouse/ClickHouse/pull/82515) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add columns `commit_time`, `commit_id` to `system.s3queue_log`. [#83016](https://github.com/ClickHouse/ClickHouse/pull/83016) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add logs for s3queue shutdown process. [#83163](https://github.com/ClickHouse/ClickHouse/pull/83163) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Shutdown S3(Azure/etc)Queue streaming before shutting down any tables on server shutdown. [#83530](https://github.com/ClickHouse/ClickHouse/pull/83530) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Support changing mv insert settings on `S3Queue` table level. Added new `S3Queue` level settings: `min_insert_block_size_rows_for_materialized_views` and `min_insert_block_size_bytes_for_materialized_views`. By default profile level settings will be used and `S3Queue` level settings will override those. [#83971](https://github.com/ClickHouse/ClickHouse/pull/83971) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* S3Queue ordered mode fix: quit earlier if shutdown was called. [#84463](https://github.com/ClickHouse/ClickHouse/pull/84463) ([Kseniia Sumarokova](https://github.com/kssenii)).
+
+### Kafka integration {#kafka-integration}
+
+* Count consumed messages manually to avoid depending on previous committed offset in StorageKafka2. [#81662](https://github.com/ClickHouse/ClickHouse/pull/81662) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Integrate `StorageKafka2` to [`system.kafka_consumers`](/operations/system-tables/kafka_consumers). [#82652](https://github.com/ClickHouse/ClickHouse/pull/82652) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+
+### ClickHouse Keeper improvements {#clickhouse-keeper-improvements}
+
+* Keeper improvement: move changelog files between disk in a background thread. Previously, moving changelog to a different disk would block Keeper globally until the move is finished. This lead to performance degradation if moving is a long operation (e.g. to S3 disk). [#82485](https://github.com/ClickHouse/ClickHouse/pull/82485) ([Antonio Andelic](https://github.com/antonio2368)).
+* Keeper improvement: add new config `keeper_server.cleanup_old_and_ignore_new_acl`. If enabled, all nodes will have their ACLs cleared while ACL for new requests will be ignored. If the goal is to completely remove ACL from nodes, it's important to leave the config enabled until a new snapshot is created. [#82496](https://github.com/ClickHouse/ClickHouse/pull/82496) ([Antonio Andelic](https://github.com/antonio2368)).
+* Keeper improvement: support specific permissions for world:anyone ACL. [#82755](https://github.com/ClickHouse/ClickHouse/pull/82755) ([Antonio Andelic](https://github.com/antonio2368)).
+* Add support for specifying extra Keeper ACL for paths in config. If you want to add extra ACL for a specific path you define it in the config under `zookeeper.path_acls`. [#82898](https://github.com/ClickHouse/ClickHouse/pull/82898) ([Antonio Andelic](https://github.com/antonio2368)).
+* Adds ProfileEvent when Keeper rejects a write due to soft memory limit. [#82963](https://github.com/ClickHouse/ClickHouse/pull/82963) ([Xander Garbett](https://github.com/Garbett1)).
+* Enable `create_if_not_exists`, `check_not_exists`, `remove_recursive` feature flags in Keeper by default which enable new types of requests. [#83488](https://github.com/ClickHouse/ClickHouse/pull/83488) ([Antonio Andelic](https://github.com/antonio2368)).
+* Add support for applying extra ACL on specific Keeper nodes using `apply_to_children` config. [#84137](https://github.com/ClickHouse/ClickHouse/pull/84137) ([Antonio Andelic](https://github.com/antonio2368)).
+* Add `get_acl` command to KeeperClient. [#84641](https://github.com/ClickHouse/ClickHouse/pull/84641) ([Antonio Andelic](https://github.com/antonio2368)).
+* Add 4LW in Keeper, `lgrq`, for toggling request logging of received requests. [#84719](https://github.com/ClickHouse/ClickHouse/pull/84719) ([Antonio Andelic](https://github.com/antonio2368)).
+* Reduce contention on storage lock in Keeper. [#84732](https://github.com/ClickHouse/ClickHouse/pull/84732) ([Antonio Andelic](https://github.com/antonio2368)).
+* The `encrypt_decrypt` tool now supports encrypted ZooKeeper connections. [#84764](https://github.com/ClickHouse/ClickHouse/pull/84764) ([Roman Vasin](https://github.com/rvasin)).
+* Limit Keeper log entry cache size by number of entries using `keeper_server.coordination_settings.latest_logs_cache_entry_count_threshold` and `keeper_server.coordination_settings.commit_logs_cache_entry_count_threshold`. [#84877](https://github.com/ClickHouse/ClickHouse/pull/84877) ([Antonio Andelic](https://github.com/antonio2368)).
+
+### JSON and Dynamic types {#json-and-dynamic-types}
+
+* Add `columns_substreams.txt` file to Wide part to track all substreams stored in the part. It helps to track dynamic streams in JSON and Dynamic types and so avoid reading sample of these columns to get the list of dynamic streams (for example for columns sizes calculation). Also now all dynamic streams are reflected in `system.parts_columns`. [#81091](https://github.com/ClickHouse/ClickHouse/pull/81091) ([Pavel Kruglov](https://github.com/Avogar)).
+* Allow `ALTER UPDATE` in JSON and Dynamic columns. [#82419](https://github.com/ClickHouse/ClickHouse/pull/82419) ([Pavel Kruglov](https://github.com/Avogar)).
+* Users can now use `Time` and `Time64` types inside the JSON type. [#83784](https://github.com/ClickHouse/ClickHouse/pull/83784) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Add a setting `json_type_escape_dots_in_keys` to escape dots in JSON keys during JSON type parsing. The setting is disabled by default. [#84207](https://github.com/ClickHouse/ClickHouse/pull/84207) ([Pavel Kruglov](https://github.com/Avogar)).
+
+### Parquet and ORC formats {#parquet-and-orc-formats}
+
+* Introduce settings to set ORC compression block size, and update its default value from 64KB to 256KB to keep consistent with spark or hive. [#80602](https://github.com/ClickHouse/ClickHouse/pull/80602) ([李扬](https://github.com/taiyang-li)).
+* Support writing parquet enum as byte array as the [spec](https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#enum) dictates. I'll write more info later. [#81090](https://github.com/ClickHouse/ClickHouse/pull/81090) ([Arthur Passos](https://github.com/arthurpassos)).
+* Support writing geoparquets as output format. [#81784](https://github.com/ClickHouse/ClickHouse/pull/81784) ([scanhex12](https://github.com/scanhex12)).
+
+### Distributed queries and parallel replicas {#distributed-queries-and-parallel-replicas}
+
+* A new setting, enable_add_distinct_to_in_subqueries, has been introduced. When enabled, ClickHouse will automatically add DISTINCT to subqueries in IN clauses for distributed queries. This can significantly reduce the size of temporary tables transferred between shards and improve network efficiency. Note: This is a trade-off—while network transfer is reduced, additional merging (deduplication) work is required on each node. Enable this setting when network transfer is a bottleneck and the merging cost is acceptable. [#81908](https://github.com/ClickHouse/ClickHouse/pull/81908) ([fhw12345](https://github.com/fhw12345)).
+* Add support of `remote-()` table functions with parallel replicas if cluster is provided in `address_expression` argument. Also, fixes [#73295](https://github.com/ClickHouse/ClickHouse/issues/73295). [#82904](https://github.com/ClickHouse/ClickHouse/pull/82904) ([Igor Nikonov](https://github.com/devcrafter)).
+* Joins with parallel replicas now use the join logical step. In case of any issues with join queries using parallel replicas, try `SET query_plan_use_new_logical_join_step=0` and report an issue. [#83801](https://github.com/ClickHouse/ClickHouse/pull/83801) ([Vladimir Cherkasov](https://github.com/vdimir)).
+
+### Settings and configuration {#settings-and-configuration}
+
+* Mark setting `allow_experimental_join_condition` as obsolete. [#80566](https://github.com/ClickHouse/ClickHouse/pull/80566) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* The total and per-user network throttlers are never reset, which ensures that `max_network_bandwidth_for_all_users` and `max_network_bandwidth_for_all_users` limits are never exceeded. [#81729](https://github.com/ClickHouse/ClickHouse/pull/81729) ([Sergei Trifonov](https://github.com/serxa)).
+* Introduce the `optimize_rewrite_regexp_functions` setting (enabled by default), which allows the optimizer to rewrite certain `replaceRegexpAll`, `replaceRegexpOne`, and `extract` calls into simpler and more efficient forms when specific regular expression patterns are detected. (issue [#81981](https://github.com/ClickHouse/ClickHouse/issues/81981)). [#81992](https://github.com/ClickHouse/ClickHouse/pull/81992) ([Amos Bird](https://github.com/amosbird)).
+* Tune TCP servers queue (64 by default) based on listen_backlog (4096 by default). [#82045](https://github.com/ClickHouse/ClickHouse/pull/82045) ([Azat Khuzhin](https://github.com/azat)).
+* Add ability to reload `max_local_read_bandwidth_for_server` and `max_local_write_bandwidth_for_server` on fly without restart server. [#82083](https://github.com/ClickHouse/ClickHouse/pull/82083) ([Kai Zhu](https://github.com/nauu)).
+* Introduce setting `enable_vector_similarity_index` which must be enabled to use the vector similarity index. The existing setting `allow_experimental_vector_similarity_index` is now obsolete. It still works in case someone needs it. [#83459](https://github.com/ClickHouse/ClickHouse/pull/83459) ([Robert Schulze](https://github.com/rschu1ze)).
+* Add [`max_joined_block_size_bytes`](/operations/settings/settings#max_joined_block_size_bytes) in addition to `max_joined_block_size_rows` to limit the memory usage of JOINs with heavy columns. [#83869](https://github.com/ClickHouse/ClickHouse/pull/83869) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix compatibility for cluster_function_process_archive_on_multiple_nodes. [#83968](https://github.com/ClickHouse/ClickHouse/pull/83968) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Enable correlated subqueries support by default. [#85107](https://github.com/ClickHouse/ClickHouse/pull/85107) ([Dmitry Novik](https://github.com/novikd)).
+* Add `database_replicated` settings defining the default values of DatabaseReplicatedSettings. If the setting is not present in the Replicated DB create query, the value from this setting is used. [#85127](https://github.com/ClickHouse/ClickHouse/pull/85127) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Allow key value arguments in `s3` or `s3Cluster` table engine/function, e.g. for example `s3('url', CSV, structure = 'a Int32', compression_method = 'gzip')`. [#85134](https://github.com/ClickHouse/ClickHouse/pull/85134) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Execute non-correlated `EXISTS` as a scalar subquery. This allows using a scalar subquery cache and constant-folding the result, which is helpful for indexes. For compatibility, the new setting `execute_exists_as_scalar_subquery=1` is added. [#85481](https://github.com/ClickHouse/ClickHouse/pull/85481) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Support resolution of more cases for compound identifiers. Particularly, it improves the compatibility of `ARRAY JOIN` with the old analyzer. Introduce a new setting `analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested` to keep the old behaviour. [#85492](https://github.com/ClickHouse/ClickHouse/pull/85492) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+
+### System tables and observability {#system-tables-and-observability}
+
+* Add pressure metrics to ClickHouse async metrics. [#80779](https://github.com/ClickHouse/ClickHouse/pull/80779) ([Xander Garbett](https://github.com/Garbett1)).
+* Add metrics `MarkCacheEvictedBytes`, `MarkCacheEvictedMarks`, `MarkCacheEvictedFiles` for tracking evictions from the mark cache. (issue [#60989](https://github.com/ClickHouse/ClickHouse/issues/60989)). [#80799](https://github.com/ClickHouse/ClickHouse/pull/80799) ([Shivji Kumar Jha](https://github.com/shiv4289)).
+* The `system.formats` table now contains extended information about formats, such as HTTP content type, the capabilities of schema inference, etc. [#81505](https://github.com/ClickHouse/ClickHouse/pull/81505) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Add support for clearing all warnings from the `system.warnings` table using `TRUNCATE TABLE system.warnings`. [#82087](https://github.com/ClickHouse/ClickHouse/pull/82087) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* List the licenses of rust crates in `system.licenses`. [#82440](https://github.com/ClickHouse/ClickHouse/pull/82440) ([Raúl Marín](https://github.com/Algunenano)).
+* Estimate complex cnf/dnf, for example, `(a < 1 and a > 0) or b = 3`, by statistics. [#82663](https://github.com/ClickHouse/ClickHouse/pull/82663) ([Han Fei](https://github.com/hanfei1991)).
+* In some cases, we need to have multiple dimensions to our metrics. For example, counting failed merges or mutations by error codes rather than having a single counter. [#83030](https://github.com/ClickHouse/ClickHouse/pull/83030) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Add process resource metrics (such as `UserTimeMicroseconds`, `SystemTimeMicroseconds`, `RealTimeMicroseconds`) to part_log profile events for `MergeParts` entries. [#83460](https://github.com/ClickHouse/ClickHouse/pull/83460) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Cgroup-level and system-wide metrics are reported now altogether. Cgroup-level metrics have names `CGroup` and OS-level metrics (collected from procfs) have names `OS`. [#84317](https://github.com/ClickHouse/ClickHouse/pull/84317) ([Nikita Taranov](https://github.com/nickitat)).
+* Add dimensional metrics to monitor the size of concurrent bounded queues, labeled by queue type and instance ID for better observability. [#84675](https://github.com/ClickHouse/ClickHouse/pull/84675) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* The [`system.columns`](/operations/system-tables/columns) table now provides `column` as an alias for the existing `name` column. [#84695](https://github.com/ClickHouse/ClickHouse/pull/84695) ([Yunchi Pang](https://github.com/yunchipang)).
+* Add format string column to `system.errors`. This column is needed to group by the same error type in alerting rules. [#84776](https://github.com/ClickHouse/ClickHouse/pull/84776) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Make limits tunable for Async Log and add introspection. [#85105](https://github.com/ClickHouse/ClickHouse/pull/85105) ([Raúl Marín](https://github.com/Algunenano)).
+* Ignore `UNKNOWN_DATABASE` while obtaining table columns sizes for system.columns. [#85632](https://github.com/ClickHouse/ClickHouse/pull/85632) ([Azat Khuzhin](https://github.com/azat)).
+
+### Database engines {#database-engines}
+
+### System and internal improvements {#system-and-internal-improvements}
+
+* Fix attaching databases with read-only remote disks by manually adding table UUIDs to the DatabaseCatalog. [#82670](https://github.com/ClickHouse/ClickHouse/pull/82670) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Improve DDL task handling when `distributed_ddl_output_mode='*_only_active'` by not waiting for new or recovered replicas that have replication lag exceeding `max_replication_lag_to_enqueue`. This helps avoid `DDL task is not finished on some hosts` errors when a new replica becomes active after initialization or recovery but has accumulated a large replication log. Also implemented `SYSTEM SYNC DATABASE REPLICA STRICT` query that waits for the replication log to fall below `max_replication_lag_to_enqueue`. [#83302](https://github.com/ClickHouse/ClickHouse/pull/83302) ([Alexander Tokmakov](https://github.com/tavplubix)).
+* Chang SystemLogs shutdown order to occur after ordinary tables (and before system tables, instead of before ordinary tables). [#83134](https://github.com/ClickHouse/ClickHouse/pull/83134) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add server setting `logs_to_keep` for replicated database settings, allowing configuration of the default `logs_to_keep` parameter for replicated databases. Lower values reduce the number of ZooKeeper nodes (especially beneficial when there are many databases), while higher values allow missing replicas to catch up after longer periods of downtime. [#84183](https://github.com/ClickHouse/ClickHouse/pull/84183) ([Alexey Khatskevich](https://github.com/Khatskevich)).
+* Change the default value of the Replicated database setting `max_retries_before_automatic_recovery` to 10, enabling faster recovery in some cases. [#84369](https://github.com/ClickHouse/ClickHouse/pull/84369) ([Alexander Tokmakov](https://github.com/tavplubix)).
+* Optimize non-append Refreshable Materialized View DDL operations in Replicated databases by skipping creation and renaming of old temporary tables. [#84858](https://github.com/ClickHouse/ClickHouse/pull/84858) ([Tuan Pham Anh](https://github.com/tuanpach)).
+
+### Replication and synchronization {#replication-and-synchronization}
+
+### SystemAndInternalImprovements {#systemandinternalimprovements}
+
+* Improve `SYSTEM RESTART REPLICA` to retry table creation when ZooKeeper connection issues occur, preventing tables from being forgotten. [#82616](https://github.com/ClickHouse/ClickHouse/pull/82616) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Add UUID validation in `ReplicatedMergeTree::executeMetadataAlter` to prevent incorrect table definitions when tables are exchanged between getting the StorageID and calling `IDatabase::alterTable`. [#82666](https://github.com/ClickHouse/ClickHouse/pull/82666) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Remove experimental `send_metadata` logic related to experimental zero-copy replication. This code was never used, unsupported, and likely broken, with no tests to verify its functionality. [#82508](https://github.com/ClickHouse/ClickHouse/pull/82508) ([alesapin](https://github.com/alesapin)).
+* Add support for macro expansion in `remote_fs_zero_copy_zookeeper_path`. [#85437](https://github.com/ClickHouse/ClickHouse/pull/85437) ([Mikhail Koviazin](https://github.com/mkmkme)).
+
+### Functions and expressions {#functions-and-expressions}
+
+* Function `addressToSymbol` and `system.symbols` table will use file offsets instead of virtual memory addresses. [#81896](https://github.com/ClickHouse/ClickHouse/pull/81896) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Try to preserve element names when deriving supertypes for named tuples. [#81345](https://github.com/ClickHouse/ClickHouse/pull/81345) ([lgbo](https://github.com/lgbo-ustc)).
+* Allow to mix different collations for the same column in different windows. [#82877](https://github.com/ClickHouse/ClickHouse/pull/82877) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
+* Add function to write types into wkb format. [#82935](https://github.com/ClickHouse/ClickHouse/pull/82935) ([scanhex12](https://github.com/scanhex12)).
+* Add ability to parse `Time` and `Time64` as MM:SS, M:SS, SS, or S. [#83299](https://github.com/ClickHouse/ClickHouse/pull/83299) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Function `reinterpret()` now supports conversion to `Array(T)` where `T` is a fixed-size data type (issue [#82621](https://github.com/ClickHouse/ClickHouse/issues/82621)). [#83399](https://github.com/ClickHouse/ClickHouse/pull/83399) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Fix `structureToProtobufSchema` and `structureToCapnProtoSchema` functions to correctly add a zero-terminating byte instead of using a newline, preventing missing newlines in output and potential buffer overflows in functions that depend on the zero byte (such as `logTrace`, `demangle`, `extractURLParameter`, `toStringCutToZero`, and `encrypt`/`decrypt`). Closes [#85062](https://github.com/ClickHouse/ClickHouse/issues/85062). [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix the `regexp_tree` dictionary layout to support processing strings with zero bytes. [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix the `formatRowNoNewline` function which was erroneously cutting the last character of output when called with `Values` format or any format without a newline at the end of rows. [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix an exception-safety error in the `stem` function that could lead to memory leaks in rare scenarios. [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix the `initcap` function for `FixedString` arguments to correctly recognize the start of words at the beginning of strings when the previous string in a block ended with a word character. [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix a security vulnerability in the Apache `ORC` format that could lead to exposure of uninitialized memory. [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Changed behavior of `replaceRegexpAll` and its alias `REGEXP_REPLACE` to allow empty matches at the end of strings even when the previous match processed the entire string (e.g., `^a*|a*$` or `^|.*`), aligning with JavaScript, Perl, Python, PHP, and Ruby semantics but differing from PostgreSQL. [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Optimize and simplify the implementation of many string-handling functions. Corrected incorrect documentation for several functions. Note: The output of `byteSize` for String columns and complex types containing String columns has changed from 9 bytes per empty string to 8 bytes per empty string, which is the expected behavior. [#85063](https://github.com/ClickHouse/ClickHouse/pull/85063) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Allow zero step in functions `timeSeries*ToGrid()` This is part `#3` of https://github.com/ClickHouse/ClickHouse/pull/75036. [#85390](https://github.com/ClickHouse/ClickHouse/pull/85390) ([Vitaly Baranov](https://github.com/vitlibar)).
+* Support inner arrays for the function `nested`. [#85719](https://github.com/ClickHouse/ClickHouse/pull/85719) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+
+### MergeTree improvements {#mergetree-improvements}
+
+* Disable skipping indexes that depend on columns updated on the fly or by patch parts more granularly. Now, skipping indexes are not used only in parts affected by on-the-fly mutations or patch parts; previously, those indexes were disabled for all parts. [#84241](https://github.com/ClickHouse/ClickHouse/pull/84241) ([Anton Popov](https://github.com/CurtizJ)).
+* Add MergeTree setting `search_orphaned_parts_drives` to limit scope to look for parts e.g. by disks with local metadata. [#84710](https://github.com/ClickHouse/ClickHouse/pull/84710) ([Ilya Golshtein](https://github.com/ilejn)).
+* Add missing support of `read_in_order_use_virtual_row` for `WHERE`. It allows to skip reading more parts for queries with filters that were not fully pushed to `PREWHERE`. [#84835](https://github.com/ClickHouse/ClickHouse/pull/84835) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix usage of "compact" Variant discriminators serialization in MergeTree. Perviously it wasn't used in some cases when it could be used. [#84141](https://github.com/ClickHouse/ClickHouse/pull/84141) ([Pavel Kruglov](https://github.com/Avogar)).
+* Add limit (table setting [`max_uncompressed_bytes_in_patches`](/operations/settings/merge-tree-settings#max_uncompressed_bytes_in_patches)) for total uncompressed bytes in patch parts. It prevents significant slowdowns of `SELECT` queries after lightweight updates and prevents possible misuse of lightweight updates. [#85641](https://github.com/ClickHouse/ClickHouse/pull/85641) ([Anton Popov](https://github.com/CurtizJ)).
+
+### Cache and memory management {#cache-and-memory-management}
+
+* Fix logical error in filesystem cache: "Having zero bytes but range is not finished". [#81868](https://github.com/ClickHouse/ClickHouse/pull/81868) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Add rendezvous hashing to improve cache locality. [#82511](https://github.com/ClickHouse/ClickHouse/pull/82511) ([Anton Ivashkin](https://github.com/ianton-ru)).
+* Refactor dynamic resize feature of filesystem cache. Added more logs for introspection. [#82556](https://github.com/ClickHouse/ClickHouse/pull/82556) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Reduce query memory tracking overhead for executable user-defined functions. [#83929](https://github.com/ClickHouse/ClickHouse/pull/83929) ([Eduard Karacharov](https://github.com/korowa)).
+* All the allocations done by external libraries are now visible to ClickHouse's memory tracker and accounted properly. This may result in "increased" reported memory usage for certain queries or failures with `MEMORY_LIMIT_EXCEEDED`. [#84082](https://github.com/ClickHouse/ClickHouse/pull/84082) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Allocate the minimum amount of memory needed for encrypted_buffer for encrypted named collections. [#84432](https://github.com/ClickHouse/ClickHouse/pull/84432) ([Pablo Marcos](https://github.com/pamarcos)).
+
+### Vector similarity index {#vector-similarity-index}
+
+* Prevent user from using `nan` and `inf` with `NumericIndexedVector`. Fixes [#82239](https://github.com/ClickHouse/ClickHouse/issues/82239) and a little more. [#82681](https://github.com/ClickHouse/ClickHouse/pull/82681) ([Raufs Dunamalijevs](https://github.com/rienath)).
+* The vector similarity index now supports binary quantization. Binary quantization significantly reduces the memory consumption and speeds up the process of building a vector index (due to faster distance calculation). Also, the existing setting `vector_search_postfilter_multiplier `was made obsolete and replaced by a more general setting : `vector_search_index_fetch_multiplier`. [#85024](https://github.com/ClickHouse/ClickHouse/pull/85024) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Approximate vector search with vector similarity indexes is now GA. [#85888](https://github.com/ClickHouse/ClickHouse/pull/85888) ([Robert Schulze](https://github.com/rschu1ze)).
+
+### Error handling and messages {#error-handling-and-messages}
+
+* Header Connection is sent at the end of headers. When we know is the connection should be preserved. [#81951](https://github.com/ClickHouse/ClickHouse/pull/81951) ([Sema Checherinda](https://github.com/CheSema)).
+* In previous versions, multiplication of the aggregate function state with IPv4 produced a logical error instead of a proper error code. Closes [#82817](https://github.com/ClickHouse/ClickHouse/issues/82817). [#82818](https://github.com/ClickHouse/ClickHouse/pull/82818) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Better error handling in `AsynchronousMetrics`. If the `/sys/block` directory exists but is not accessible, the server will start without monitoring the block devices. Closes [#79229](https://github.com/ClickHouse/ClickHouse/issues/79229). [#83115](https://github.com/ClickHouse/ClickHouse/pull/83115) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* There was an incorrect dependency check for the `INSERT` with materialized views that have malformed selects and the user might have received an obscure `std::exception` instead of a meaningful error with a clear explanation. This is now fixed. This fixes: [#82889](https://github.com/ClickHouse/ClickHouse/issues/82889). [#83190](https://github.com/ClickHouse/ClickHouse/pull/83190) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Do not output very long descriptions of expression actions in exception messages. Closes [#83164](https://github.com/ClickHouse/ClickHouse/issues/83164). [#83350](https://github.com/ClickHouse/ClickHouse/pull/83350) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* When the storage is shutting down, `getStatus` throws an `ErrorCodes::ABORTED` exception. Previously, this would fail the select query. Now we catch the `ErrorCodes::ABORTED` exceptions and intentionally ignore them instead. [#83435](https://github.com/ClickHouse/ClickHouse/pull/83435) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Make exception messages for certain situations for loading and adding projections easier to read. [#83728](https://github.com/ClickHouse/ClickHouse/pull/83728) ([Robert Schulze](https://github.com/rschu1ze)).
+* Check if connection is cancelled before checking for EOF to prevent reading from closed connection. Fixes [#83893](https://github.com/ClickHouse/ClickHouse/issues/83893). [#84227](https://github.com/ClickHouse/ClickHouse/pull/84227) ([Raufs Dunamalijevs](https://github.com/rienath)).
+* Improved server shutdown handling for client connections by simplifying internal checks. [#84312](https://github.com/ClickHouse/ClickHouse/pull/84312) ([Raufs Dunamalijevs](https://github.com/rienath)).
+* Low-level errors during UDF execution now fail with error code `UDF_EXECUTION_FAILED`, whereas previously different error codes could be returned. [#84547](https://github.com/ClickHouse/ClickHouse/pull/84547) ([Xu Jia](https://github.com/XuJia0210)).
+
+### SQL formatting improvements {#sql-formatting-improvements}
+
+* Fix inconsistent formatting of `CREATE DICTIONARY`. Closes [#82105](https://github.com/ClickHouse/ClickHouse/issues/82105). [#82829](https://github.com/ClickHouse/ClickHouse/pull/82829) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix inconsistent formatting of `TTL` when it contains a `materialize` function. Closes [#82828](https://github.com/ClickHouse/ClickHouse/issues/82828). [#82831](https://github.com/ClickHouse/ClickHouse/pull/82831) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix inconsistent formatting of `EXPLAIN AST` in a subquery when it contains output options such as INTO OUTFILE. Closes [#82826](https://github.com/ClickHouse/ClickHouse/issues/82826). [#82840](https://github.com/ClickHouse/ClickHouse/pull/82840) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix inconsistent formatting of parenthesized expressions with aliases in the context when no aliases are allowed. Closes [#82836](https://github.com/ClickHouse/ClickHouse/issues/82836). Closes [#82837](https://github.com/ClickHouse/ClickHouse/issues/82837). [#82867](https://github.com/ClickHouse/ClickHouse/pull/82867) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix formatting of CREATE USER with query parameters (i.e. `CREATE USER {username:Identifier} IDENTIFIED WITH no_password`). [#84376](https://github.com/ClickHouse/ClickHouse/pull/84376) ([Azat Khuzhin](https://github.com/azat)).
+* Fix parsing of a trailing comma in columns of the CREATE DICTIONARY query after a column with parameters, for example, Decimal(8). Closes [#85586](https://github.com/ClickHouse/ClickHouse/issues/85586). [#85653](https://github.com/ClickHouse/ClickHouse/pull/85653) ([Nikolay Degterinsky](https://github.com/evillique)).
+
+### External integrations {#external-integrations}
+
+* Unify parameter names in ODBC and JDBC when using named collections. [#83410](https://github.com/ClickHouse/ClickHouse/pull/83410) ([Andrey Zvonov](https://github.com/zvonand)).
+* MongoDB: Implicit parsing of strings to numeric types. Previously, if a string value was received from a MongoDB source for a numeric column in a ClickHouse table, an exception was thrown. Now, the engine attempts to parse the numeric value from the string automatically. Closes [#81167](https://github.com/ClickHouse/ClickHouse/issues/81167). [#84069](https://github.com/ClickHouse/ClickHouse/pull/84069) ([Kirill Nikiforov](https://github.com/allmazz)).
+* Allow `simdjson` on unsupported architectures (previously leads to `CANNOT_ALLOCATE_MEMORY` errors). [#84966](https://github.com/ClickHouse/ClickHouse/pull/84966) ([Azat Khuzhin](https://github.com/azat)).
+
+### Miscellaneous improvements {#miscellaneous-improvements}
+
+* Add Ytsaurus table engine and table function. [#77606](https://github.com/ClickHouse/ClickHouse/pull/77606) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+* Improve HashJoin::needUsedFlagsForPerRightTableRow, returns false for cross join. [#82379](https://github.com/ClickHouse/ClickHouse/pull/82379) ([lgbo](https://github.com/lgbo-ustc)).
+* Allow write/read map columns as array of tuples. [#82408](https://github.com/ClickHouse/ClickHouse/pull/82408) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+* This PR was reverted. [#82884](https://github.com/ClickHouse/ClickHouse/pull/82884) ([Mithun p](https://github.com/mithunputhusseri)).
+* Async logs: Limit the max number of entries that are hold in the queue. [#83214](https://github.com/ClickHouse/ClickHouse/pull/83214) ([Raúl Marín](https://github.com/Algunenano)).
+* Enable Date/Date32 as integers in JSON input formats. [#83597](https://github.com/ClickHouse/ClickHouse/pull/83597) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+* Improved support for bloom filter indexes (regular, ngram, and token) to be utilized when the first argument is a constant array (the set) and the second is the indexed column (the subset), enabling more efficient query execution. [#84700](https://github.com/ClickHouse/ClickHouse/pull/84700) ([Doron David](https://github.com/dorki)).
+* Allow set values type casting when pushing down `IN` / `GLOBAL IN` filters over KeyValue storage primary keys (e.g., EmbeddedRocksDB, KeeperMap). [#84515](https://github.com/ClickHouse/ClickHouse/pull/84515) ([Eduard Karacharov](https://github.com/korowa)).
+* Eliminated full scans for the cases when index analysis results in empty ranges for parallel replicas reading. [#84971](https://github.com/ClickHouse/ClickHouse/pull/84971) ([Eduard Karacharov](https://github.com/korowa)).
+* Fix a list of problems that can occur when trying to run integration tests on a local host. [#82135](https://github.com/ClickHouse/ClickHouse/pull/82135) ([Oleg Doronin](https://github.com/dorooleg)).
+* Enable trace_log.symbolize for old deployments by default. [#85456](https://github.com/ClickHouse/ClickHouse/pull/85456) ([Azat Khuzhin](https://github.com/azat)).
+
+#### Bug fixes (user-visible misbehavior in an official stable release) {#bug-fixes}
+
+### Performance optimizations {#performance-optimizations}
+
+* Fix performance degradation in SummingMergeTree that was intorduced in 25.5 in https://github.com/ClickHouse/ClickHouse/pull/79051. [#82130](https://github.com/ClickHouse/ClickHouse/pull/82130) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix performance degradation with the enabled analyzer when secondary queries always read all columns from the VIEWs. Fixes [#81718](https://github.com/ClickHouse/ClickHouse/issues/81718). [#83036](https://github.com/ClickHouse/ClickHouse/pull/83036) ([Dmitry Novik](https://github.com/novikd)).
+* Do not check for cyclic dependencies on create table with no dependencies. It fixes performance degradation of the use cases with creation of thousands of tables that was introduced in https://github.com/ClickHouse/ClickHouse/pull/65405. [#83077](https://github.com/ClickHouse/ClickHouse/pull/83077) ([Pavel Kruglov](https://github.com/Avogar)).
+* Make `DISTINCT` window aggregates run in linear time and fix a bug in `sumDistinct`. Closes [#79792](https://github.com/ClickHouse/ClickHouse/issues/79792). Closes [#52253](https://github.com/ClickHouse/ClickHouse/issues/52253). [#79859](https://github.com/ClickHouse/ClickHouse/pull/79859) ([Nihal Z. Miaji](https://github.com/nihalzp)).
+
+### Query execution fixes {#query-execution-fixes}
+
+* For queries with combination of `ORDER BY ... LIMIT BY ... LIMIT N`, when ORDER BY is executed as a PartialSorting, the counter `rows_before_limit_at_least` now reflects the number of rows consumed by LIMIT clause instead of number of rows consumed by sorting transform. [#78999](https://github.com/ClickHouse/ClickHouse/pull/78999) ([Eduard Karacharov](https://github.com/korowa)).
+* Fix logical error with `<=>` operator and Join storage, now query returns proper error code. [#80165](https://github.com/ClickHouse/ClickHouse/pull/80165) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fix a crash in the `loop` function when used with the `remote` function family. Ensure the LIMIT clause is respected in `loop(remote(...))`. [#80299](https://github.com/ClickHouse/ClickHouse/pull/80299) ([Julia Kartseva](https://github.com/jkartseva)).
+* Fix incorrect behavior of `to_utc_timestamp` and `from_utc_timestamp` functions when handling dates before Unix epoch (1970-01-01) and after maximum date (2106-02-07 06:28:15). Now these functions properly clamp values to epoch start and maximum date respectively. [#80498](https://github.com/ClickHouse/ClickHouse/pull/80498) ([Surya Kant Ranjan](https://github.com/iit2009046)).
+* Fix `IN` execution with `transform_null_in=1` with null in the left argument and non-nullable subquery result. [#81584](https://github.com/ClickHouse/ClickHouse/pull/81584) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix the issue where required columns are not read during scalar correlated subquery processing. Fixes [#81716](https://github.com/ClickHouse/ClickHouse/issues/81716). [#81805](https://github.com/ClickHouse/ClickHouse/pull/81805) ([Dmitry Novik](https://github.com/novikd)).
+* Fix filter analysis when only a constant alias column is used in the query. Fixes [#79448](https://github.com/ClickHouse/ClickHouse/issues/79448). [#82037](https://github.com/ClickHouse/ClickHouse/pull/82037) ([Dmitry Novik](https://github.com/novikd)).
+* Fix the `Not found column` error for queries with `arrayJoin` under `WHERE` condition and `IndexSet`. [#82113](https://github.com/ClickHouse/ClickHouse/pull/82113) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix `TOO_DEEP_SUBQUERIES` exception when CTE definition references another table expression with the same name. [#83413](https://github.com/ClickHouse/ClickHouse/pull/83413) ([Dmitry Novik](https://github.com/novikd)).
+* Fix incorrect result of queries with `WHERE ... IN ()` clause and enabled query condition cache (setting `use_query_condition_cache`). [#83445](https://github.com/ClickHouse/ClickHouse/pull/83445) ([LB7666](https://github.com/acking-you)).
+* `INSERT SELECT` with `UNION ALL` could lead to a null pointer dereference in a corner case. This closes [#83618](https://github.com/ClickHouse/ClickHouse/issues/83618). [#83643](https://github.com/ClickHouse/ClickHouse/pull/83643) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix `LOGICAL_ERROR` during row policy expression analysis for correlated columns. [#82618](https://github.com/ClickHouse/ClickHouse/pull/82618) ([Dmitry Novik](https://github.com/novikd)).
+* Fixed wrong results when the query condition cache is used in conjunction with recursive CTEs (issue [#81506](https://github.com/ClickHouse/ClickHouse/issues/81506)). [#84026](https://github.com/ClickHouse/ClickHouse/pull/84026) ([zhongyuankai](https://github.com/zhongyuankai)).
+* Fix infinite recursive analysis of invalid `WINDOW` definitions. Fixes [#83131](https://github.com/ClickHouse/ClickHouse/issues/83131). [#84242](https://github.com/ClickHouse/ClickHouse/pull/84242) ([Dmitry Novik](https://github.com/novikd)).
+* Fix `Not-ready Set` for `IN (subquery)` inside `additional_table_filters expression` setting. [#85210](https://github.com/ClickHouse/ClickHouse/pull/85210) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix logical error with duplicate subqueries when `optimize_syntax_fuse_functions` is enabled, close [#75511](https://github.com/ClickHouse/ClickHouse/issues/75511). [#83300](https://github.com/ClickHouse/ClickHouse/pull/83300) ([Vladimir Cherkasov](https://github.com/vdimir)).
+
+### Iceberg and DataLake fixes {#iceberg-and-datalake-fixes}
+
+* Fix the metadata resolution when querying iceberg tables through rest catalog. ... [#80562](https://github.com/ClickHouse/ClickHouse/pull/80562) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
+* Fix data races in Iceberg. [#82088](https://github.com/ClickHouse/ClickHouse/pull/82088) ([Azat Khuzhin](https://github.com/azat)).
+* Fix "Context has expired" for Iceberg. [#82146](https://github.com/ClickHouse/ClickHouse/pull/82146) ([Azat Khuzhin](https://github.com/azat)).
+* Now ClickHouse can read iceberg tables from Glue catalog after schema evolution. Fixes [#81272](https://github.com/ClickHouse/ClickHouse/issues/81272). [#82301](https://github.com/ClickHouse/ClickHouse/pull/82301) ([alesapin](https://github.com/alesapin)).
+* Fix data races in Iceberg. [#82841](https://github.com/ClickHouse/ClickHouse/pull/82841) ([Azat Khuzhin](https://github.com/azat)).
+* Disable bounds-based file pruning for iceberg array element and iceberg map values, including all their nested subfields. [#83520](https://github.com/ClickHouse/ClickHouse/pull/83520) ([Daniil Ivanik](https://github.com/divanik)).
+* Fix iceberg writes for complex types. [#85330](https://github.com/ClickHouse/ClickHouse/pull/85330) ([scanhex12](https://github.com/scanhex12)).
+* Writing lower and upper bounds are not supported for complex types. [#85332](https://github.com/ClickHouse/ClickHouse/pull/85332) ([scanhex12](https://github.com/scanhex12)).
+* Fix nullability of fields in iceberg. [#85977](https://github.com/ClickHouse/ClickHouse/pull/85977) ([scanhex12](https://github.com/scanhex12)).
+* No longer create empty iceberg delete file. [#86061](https://github.com/ClickHouse/ClickHouse/pull/86061) ([scanhex12](https://github.com/scanhex12)).
+* Update metadata timestamp in iceberg writes. [#85711](https://github.com/ClickHouse/ClickHouse/pull/85711) ([scanhex12](https://github.com/scanhex12)).
+* Spark can't read position delete files. [#85762](https://github.com/ClickHouse/ClickHouse/pull/85762) ([scanhex12](https://github.com/scanhex12)).
+* Stops taking schema from manifest files but stores relevant schemas for each snapshot independently. Infer relevant schema for each data file from its corresponding snapshot. Previous behaviour violated Iceberg specification for manifest files entries with existing status. [#84588](https://github.com/ClickHouse/ClickHouse/pull/84588) ([Daniil Ivanik](https://github.com/divanik)).
+* Now Iceberg doesn't try to cache relevant snapshot version between select queries and always try to resolve snapshot honestly. Earlier attempt to cache iceberg snapshot led to problems with usage of Iceberg table with time travel. [#85038](https://github.com/ClickHouse/ClickHouse/pull/85038) ([Daniil Ivanik](https://github.com/divanik)).
+* Fix the metadata resolution when querying iceberg tables through rest catalog. ... [#85531](https://github.com/ClickHouse/ClickHouse/pull/85531) ([Saurabh Kumar Ojha](https://github.com/saurabhojha)).
+* Fix secrets masking in icebergS3Cluster and icebergAzureCluster table functions. [#85658](https://github.com/ClickHouse/ClickHouse/pull/85658) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
+
+### DeltaLake fixes {#deltalake-fixes}
+
+* Fix column pruning with delta-kernel in storage `DeltaLake`. Closes [#84543](https://github.com/ClickHouse/ClickHouse/issues/84543). [#84745](https://github.com/ClickHouse/ClickHouse/pull/84745) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Refresh credentials in delta-kernel in storage DeltaLake. [#84751](https://github.com/ClickHouse/ClickHouse/pull/84751) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix segfault in delta-kernel implementation. [#85160](https://github.com/ClickHouse/ClickHouse/pull/85160) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix race in `DeltaLake` engine delta-kernel implementation. [#85221](https://github.com/ClickHouse/ClickHouse/pull/85221) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix reading partitioned data with disabled delta-kernel in `DeltaLake` engine. It was broken in 25.7 (https://github.com/ClickHouse/ClickHouse/pull/81136). [#85223](https://github.com/ClickHouse/ClickHouse/pull/85223) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Change pre-25.5 value of `allow_experimental_delta_kernel_rs` to `false` for compatibility. [#84587](https://github.com/ClickHouse/ClickHouse/pull/84587) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix reading count from cache for delta lake. [#85704](https://github.com/ClickHouse/ClickHouse/pull/85704) ([Kseniia Sumarokova](https://github.com/kssenii)).
+
+### TTL and MergeTree fixes {#ttl-and-mergetree-fixes}
+
+* Recalculate the min-max index when TTL reduces rows to ensure the correctness of algorithms relying on it, such as `minmax_count_projection`. This resolves [#77091](https://github.com/ClickHouse/ClickHouse/issues/77091). [#77166](https://github.com/ClickHouse/ClickHouse/pull/77166) ([Amos Bird](https://github.com/amosbird)).
+* Fix incorrent TTL recalculation in TTL GROUP BY when updating TTL. [#81222](https://github.com/ClickHouse/ClickHouse/pull/81222) ([Evgeniy Ulasik](https://github.com/H0uston)).
+* Fix "Context has expired" during merges when dict used in TTL expression. [#81690](https://github.com/ClickHouse/ClickHouse/pull/81690) ([Azat Khuzhin](https://github.com/azat)).
+* Fix LOGICAL_ERROR and following crash when using the same column in the TTL for GROUP BY and SET. [#82054](https://github.com/ClickHouse/ClickHouse/pull/82054) ([Pablo Marcos](https://github.com/pamarcos)).
+* MergeTree now does nothing related to TTL if all TTL are removed from the table. [#84441](https://github.com/ClickHouse/ClickHouse/pull/84441) ([alesapin](https://github.com/alesapin)).
+* Fix `ALTER MODIFY ORDER BY` not validating TTL columns in sorting keys. TTL columns are now properly rejected when used in `ORDER BY` clauses during `ALTER` operations, preventing potential table corruption. [#84536](https://github.com/ClickHouse/ClickHouse/pull/84536) ([xiaohuanlin](https://github.com/xiaohuanlin)).
+
+### Projection fixes {#projection-fixes}
+
+* Fix logical error during materialize projection when column type was changed to Nullable. [#80741](https://github.com/ClickHouse/ClickHouse/pull/80741) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix incorrect usage of parent metadata in `mergeTreeProjection` table function when `enable_shared_storage_snapshot_in_query = 1`. This is for [#82634](https://github.com/ClickHouse/ClickHouse/issues/82634). [#82638](https://github.com/ClickHouse/ClickHouse/pull/82638) ([Amos Bird](https://github.com/amosbird)).
+* Fix rare clickhouse crash when table has projection, `lightweight_mutation_projection_mode = 'rebuild'` and user execute lighweight delete which deletes ALL rows from any block in table. [#84158](https://github.com/ClickHouse/ClickHouse/pull/84158) ([alesapin](https://github.com/alesapin)).
+* Fix backup of parts with broken projections. [#85362](https://github.com/ClickHouse/ClickHouse/pull/85362) ([Antonio Andelic](https://github.com/antonio2368)).
+* Forbid using `_part_offset` column in projection in releases until it is stabilized. [#85372](https://github.com/ClickHouse/ClickHouse/pull/85372) ([Sema Checherinda](https://github.com/CheSema)).
+
+### Parallel replicas fixes {#parallel-replicas-fixes}
+
+* For some queries executed with parallel replicas, reading in order optimization(s) could be applied on an initiator but not on remote nodes. THis led to different reading modes used by parallel replicas coordinator (on initiator) and on remoted nodes, which is a logical error. [#80652](https://github.com/ClickHouse/ClickHouse/pull/80652) ([Igor Nikonov](https://github.com/devcrafter)).
+* Disable parallel replicas when a subquery contains `FINAL` [#81401](https://github.com/ClickHouse/ClickHouse/issues/81401) by . [#83455](https://github.com/ClickHouse/ClickHouse/pull/83455) ([zoomxi](https://github.com/zoomxi)).
+* Fix `LOGICAL_ERROR` for queries with parallel replicas and multiple INNER joins followed by RIGHT join. Do not use parallel replicas for such queries. [#84299](https://github.com/ClickHouse/ClickHouse/pull/84299) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Queries with parallel replicas which uses reading reverse in order optimization can produce incorrect result. [#85406](https://github.com/ClickHouse/ClickHouse/pull/85406) ([Igor Nikonov](https://github.com/devcrafter)).
+
+### Authentication and security {#authentication-and-security}
+
+* Fix hiding named collection values in logs/query_log. Closes [#82405](https://github.com/ClickHouse/ClickHouse/issues/82405). [#82510](https://github.com/ClickHouse/ClickHouse/pull/82510) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Set salt for auth data when parsing from AST with type SCRAM_SHA256_PASSWORD. [#82888](https://github.com/ClickHouse/ClickHouse/pull/82888) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Mask Avro schema registry authentication details to be not visible to user or in logs. [#83713](https://github.com/ClickHouse/ClickHouse/pull/83713) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Fix incorrect behavior when executing `REVOKE S3 ON system.*` revokes S3 permissions for `*.*`. This fixes [#83417](https://github.com/ClickHouse/ClickHouse/issues/83417). [#83420](https://github.com/ClickHouse/ClickHouse/pull/83420) ([pufit](https://github.com/pufit)).
+* Fix server crash when a user created with `no_password` attempts to login after the server setting `allow_no_password` was changed to 0. [#84426](https://github.com/ClickHouse/ClickHouse/pull/84426) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Improve error message on attempt to create user identified with JWT. [#85072](https://github.com/ClickHouse/ClickHouse/pull/85072) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Mask credentials for `deltaLakeAzure`, `deltaLakeCluster`, `icebergS3Cluster` and `icebergAzureCluster`. [#85889](https://github.com/ClickHouse/ClickHouse/pull/85889) ([Julian Maicher](https://github.com/jmaicher)).
+* Fix a bug introduced in [#79963](https://github.com/ClickHouse/ClickHouse/pull/79963). When inserting into a materialized view with a definer, the permission check should use the definer's grants. Fixes [#79951](https://github.com/ClickHouse/ClickHouse/issues/79951). [#83502](https://github.com/ClickHouse/ClickHouse/pull/83502) ([pufit](https://github.com/pufit)).
+
+### Backup and restore fixes {#backup-and-restore-fixes}
+
+* Fix backup of an empty `Memory` table, causing the backup restore to fail with with `BACKUP_ENTRY_NOT_FOUND` error. [#82791](https://github.com/ClickHouse/ClickHouse/pull/82791) ([Julia Kartseva](https://github.com/jkartseva)).
+* Fix misleading error message when restoring a backup on a read-only disk. [#83051](https://github.com/ClickHouse/ClickHouse/pull/83051) ([Julia Kartseva](https://github.com/jkartseva)).
+* Fix starting superfluous internal backups after connection problems. [#84755](https://github.com/ClickHouse/ClickHouse/pull/84755) ([Vitaly Baranov](https://github.com/vitlibar)).
+
+### Window and aggregate functions {#window-and-aggregate-functions}
+
+* Fix possible crash in `Aggregator` in case of exception during merge. [#81450](https://github.com/ClickHouse/ClickHouse/pull/81450) ([Nikita Taranov](https://github.com/nickitat)).
+* Fix possible crash in `Aggregator` in case of exception during merge. [#82022](https://github.com/ClickHouse/ClickHouse/pull/82022) ([Nikita Taranov](https://github.com/nickitat)).
+* Fixing copy-paste error in arraySimilarity, disallowing the use of UInt32 and Int32 weights. Update tests and docs. [#82103](https://github.com/ClickHouse/ClickHouse/pull/82103) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
+* Fix overflow in `numericIndexedVectorPointwiseAdd`, `numericIndexedVectorPointwiseSubtract`, `numericIndexedVectorPointwiseMultiply`, `numericIndexedVectorPointwiseDivide` functions that happened when we applied them to large numbers. [#82165](https://github.com/ClickHouse/ClickHouse/pull/82165) ([Raufs Dunamalijevs](https://github.com/rienath)).
+
+### Parquet and file format fixes {#parquet-and-file-format-fixes}
+
+* Fix Parquet bloom filter incorrectly applying condition like `WHERE function(key) IN (...)` as if it were `WHERE key IN (...)`. [#81255](https://github.com/ClickHouse/ClickHouse/pull/81255) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix parquet writer outputting incorrect statistics (min/max) for Decimal types. [#83754](https://github.com/ClickHouse/ClickHouse/pull/83754) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix deserialization of `groupArraySample`/`groupArrayLast` in case of empty elements (deserialization could skip part of the binary if the input was empty, this can lead to corruption during data read and UNKNOWN_PACKET_FROM_SERVER in TCP protocol). This does not affect numbers and date time types. [#82763](https://github.com/ClickHouse/ClickHouse/pull/82763) ([Pedro Ferreira](https://github.com/PedroTadim)).
+* Fix writing JSON paths with NULL values in RowBinary format. [#83923](https://github.com/ClickHouse/ClickHouse/pull/83923) ([Pavel Kruglov](https://github.com/Avogar)).
+
+### Join fixes {#join-fixes}
+
+* Fix filter modification for queries with a JOIN expression with a table with storage `Merge`. Fixes [#82092](https://github.com/ClickHouse/ClickHouse/issues/82092). [#82950](https://github.com/ClickHouse/ClickHouse/pull/82950) ([Dmitry Novik](https://github.com/novikd)).
+* Fix the crash if key-value storage is joined with a type-casted key. [#82497](https://github.com/ClickHouse/ClickHouse/pull/82497) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Fix logical error when resolving matcher in query with multiple JOINs, close [#81969](https://github.com/ClickHouse/ClickHouse/issues/81969). [#82421](https://github.com/ClickHouse/ClickHouse/pull/82421) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fix filter merging into JOIN condition in cases when equality operands have different types or they reference constants. Fixes [#83432](https://github.com/ClickHouse/ClickHouse/issues/83432). [#84145](https://github.com/ClickHouse/ClickHouse/pull/84145) ([Dmitry Novik](https://github.com/novikd)).
+* Fix the logical error `Expected single dictionary argument for function` while doing JOIN on an inequality condition when one of the columns is `LowCardinality` and the other is a constant. Closes [#81779](https://github.com/ClickHouse/ClickHouse/issues/81779). [#84019](https://github.com/ClickHouse/ClickHouse/pull/84019) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+
+### Replicated database fixes {#replicated-database-fixes}
+
+* Fix markReplicasActive in DDLWorker and DatabaseReplicatedDDLWorker. [#81395](https://github.com/ClickHouse/ClickHouse/pull/81395) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Fix `DatabaseReplicated::getClusterImpl`. If the first element (or elements) of `hosts` has `id == DROPPED_MARK` and there are no other elements for the same shard, the first element of `shards` will be an empty vector, leading to `std::out_of_range`. [#82093](https://github.com/ClickHouse/ClickHouse/pull/82093) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
+* Keep track of the number of async tables loading jobs. If there are some running jobs, do not update `tail_ptr` in `TransactionLog::removeOldEntries`. [#82824](https://github.com/ClickHouse/ClickHouse/pull/82824) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Fix the issue where, if a MergeTree table is created with `add_minmax_index_for_numeric_columns=1` or `add_minmax_index_for_string_columns=1`, the index is later materialized during an ALTER operation, and it prevents the Replicated database from initializing correctly on a new replica. [#83751](https://github.com/ClickHouse/ClickHouse/pull/83751) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Fix the creation of RMV on a new replica of the Replicated database if DEFINER is dropped. [#85327](https://github.com/ClickHouse/ClickHouse/pull/85327) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Fix recovering replicated databases when moving the metadata file takes a long time. [#85177](https://github.com/ClickHouse/ClickHouse/pull/85177) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Recover the Replicated Database forcefully after restoring the database metadata in Keeper. [#85960](https://github.com/ClickHouse/ClickHouse/pull/85960) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Fix a bug in `Replicated` database recovery: if a table name contains the `%` symbol, it could re-create the table with a different name during recovery. [#85987](https://github.com/ClickHouse/ClickHouse/pull/85987) ([Alexander Tokmakov](https://github.com/tavplubix)).
+* Now DDL worker cleanup outdated hosts from replicas set. It will reduce amount of stored metadata in ZooKeeper. [#88154](https://github.com/ClickHouse/ClickHouse/pull/88154) ([alesapin](https://github.com/alesapin)).
+
+### Lightweight updates fixes {#lightweight-updates-fixes}
+
+* Fix lightweight updates for tables with `ReplacingMergeTree` and `CollapsingMergeTree` engines. [#84851](https://github.com/ClickHouse/ClickHouse/pull/84851) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix a logical error in lightweight updates that update all columns in the table. [#84380](https://github.com/ClickHouse/ClickHouse/pull/84380) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix lightweight updates for tables with `ReplicatedMergeTree` engine created on servers with a version lower than 25.7. [#84933](https://github.com/ClickHouse/ClickHouse/pull/84933) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix lightweight updates for tables with non-replicated `MergeTree` engine after running a `ALTER TABLE ... REPLACE PARTITION` query. [#84941](https://github.com/ClickHouse/ClickHouse/pull/84941) ([Anton Popov](https://github.com/CurtizJ)).
+* Fix cleanup of patch parts in `ReplicatedMergeTree`. Previously, the result of a lightweight update may temporarily not be visible on the replica until the merged or mutated part that materializes the patch parts is downloaded from another replica. [#85121](https://github.com/ClickHouse/ClickHouse/pull/85121) ([Anton Popov](https://github.com/CurtizJ)).
+
+### S3 and object storage fixes {#s3-and-object-storage-fixes}
+
+* Fix S3 table function argument validation in secret masking, preventing possible `LOGICAL_ERROR`, close [#80620](https://github.com/ClickHouse/ClickHouse/issues/80620). [#82056](https://github.com/ClickHouse/ClickHouse/pull/82056) ([Vladimir Cherkasov](https://github.com/vdimir)).
+* Fix possible deadlock for remote queries when server is under memory pressure. [#82160](https://github.com/ClickHouse/ClickHouse/pull/82160) ([Kirill](https://github.com/kirillgarbar)).
+* Add expiration to AWS ECS token so it can be reloaded. [#82422](https://github.com/ClickHouse/ClickHouse/pull/82422) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Fix disabling boundary alignment for cached buffer in external table engines. It was broken in https://github.com/ClickHouse/ClickHouse/pull/81868. [#82493](https://github.com/ClickHouse/ClickHouse/pull/82493) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix `no_sign_request` for S3 client. It can be used to explicitly avoid signing S3 requests. It can also be defined for specific endpoints using endpoint-based settings. [#83379](https://github.com/ClickHouse/ClickHouse/pull/83379) ([Antonio Andelic](https://github.com/antonio2368)).
+* Skip unavailable nodes during INSERT SELECT from s3Cluster() into replicated MergeTree. [#83676](https://github.com/ClickHouse/ClickHouse/pull/83676) ([Igor Nikonov](https://github.com/devcrafter)).
+* Fix early return condition for S3 request rate slowdown: require either s3_slow_all_threads_after_network_error or backup_slow_all_threads_after_retryable_s3_error to be true to enable slowdown behavior when all threads are paused due to a retryable error, instead of requiring both. [#85505](https://github.com/ClickHouse/ClickHouse/pull/85505) ([Julia Kartseva](https://github.com/jkartseva)).
+* Fix logical error while reading from object storage functions through Distributed table or remote table function. Fixes: [#84658](https://github.com/ClickHouse/ClickHouse/issues/84658), Fixes [#85173](https://github.com/ClickHouse/ClickHouse/issues/85173), Fixes [#52022](https://github.com/ClickHouse/ClickHouse/issues/52022). [#85359](https://github.com/ClickHouse/ClickHouse/pull/85359) ([alesapin](https://github.com/alesapin)).
+* Fix logical error from S3Queue "Table is already registered". Closes [#84433](https://github.com/ClickHouse/ClickHouse/issues/84433). Broken after https://github.com/ClickHouse/ClickHouse/pull/83530. [#84677](https://github.com/ClickHouse/ClickHouse/pull/84677) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix large setting values breaking S3Queue tables and replica restart. [#86074](https://github.com/ClickHouse/ClickHouse/pull/86074) ([Nikolay Degterinsky](https://github.com/evillique)).
+
+### DynamicAndVariantTypeFixes {#dynamicandvarianttypefixes}
+* Fix rollback of Dynamic column on parsing failure. [#82169](https://github.com/ClickHouse/ClickHouse/pull/82169) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix possible crash in Variant type in UNION. [#83295](https://github.com/ClickHouse/ClickHouse/pull/83295) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix reading Variant column with lazy materialization. [#84400](https://github.com/ClickHouse/ClickHouse/pull/84400) ([Pavel Kruglov](https://github.com/Avogar)).
+* Don't validate experimental/suspicious types in default/materialize expression execution during reading from existing table. [#81618](https://github.com/ClickHouse/ClickHouse/pull/81618) ([Pavel Kruglov](https://github.com/Avogar)).
+
+### Keeper fixes {#keeper-fixes}
+
+* Keeper fix: update total watch count correctly when ephemeral nodes are deleted on session close. [#83583](https://github.com/ClickHouse/ClickHouse/pull/83583) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix out-of-order writes to Keeper changelog. Previously, we could have in-flight writes to changelog, but rollback could cause concurrent change of the destination file. This would lead to inconsistent logs, and possible data loss. [#84434](https://github.com/ClickHouse/ClickHouse/pull/84434) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix leaks for keeper with rocksdb storage (iterators was not destroyed). [#84523](https://github.com/ClickHouse/ClickHouse/pull/84523) ([Azat Khuzhin](https://github.com/azat)).
+* Fix issue where Keeper setting `rotate_log_storage_interval = 0` would cause ClickHouse to crash. (issue [#83975](https://github.com/ClickHouse/ClickHouse/issues/83975)). [#84637](https://github.com/ClickHouse/ClickHouse/pull/84637) ([George Larionov](https://github.com/george-larionov)).
+* Fix total watches count returned by Keeper. [#84890](https://github.com/ClickHouse/ClickHouse/pull/84890) ([Antonio Andelic](https://github.com/antonio2368)).
+* Lock 'mutex' when getting zookeeper from 'view' in RefreshTask. [#84699](https://github.com/ClickHouse/ClickHouse/pull/84699) ([Tuan Pham Anh](https://github.com/tuanpach)).
+
+### Indexing fixes {#indexing-fixes}
+
+* Fix excessive granule skipping for filtering over token/ngram indexes with regexp which contains alternation and non-literal first alternative. [#79373](https://github.com/ClickHouse/ClickHouse/pull/79373) ([Eduard Karacharov](https://github.com/korowa)).
+* Setting `use_skip_indexes_if_final_exact_mode` implementation (introduced in 25.6) could fail to select a relevant candidate range depending upon `MergeTree` engine settings / data distribution. That has been resolved now. [#82667](https://github.com/ClickHouse/ClickHouse/pull/82667) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Setting `use_skip_indexes_if_final_exact_mode` optimization (introduced in 25.6) could fail to select a relevant candidate range depending upon `MergeTree` engine settings / data distribution. That has been resolved now. [#82879](https://github.com/ClickHouse/ClickHouse/pull/82879) ([Shankar Iyer](https://github.com/shankar-iyer)).
+* Previously, `set` indexes didn't consider `Nullable` columns while checking if granules passed the filter (issue [#75485](https://github.com/ClickHouse/ClickHouse/issues/75485)). [#84305](https://github.com/ClickHouse/ClickHouse/pull/84305) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* The comparison against nan value was not using the correct ranges during `MinMax` index evaluation. [#84386](https://github.com/ClickHouse/ClickHouse/pull/84386) ([Elmi Ahmadov](https://github.com/ahmadov)).
+* The `ngram` and `no_op` tokenizers no longer crash the (experimental) text index for empty input tokens. [#84849](https://github.com/ClickHouse/ClickHouse/pull/84849) ([Robert Schulze](https://github.com/rschu1ze)).
+
+### Materialized view fixes {#materialized-view-fixes}
+
+* Fix a bug in table dependencies causing Materialized Views to miss INSERT queries. [#82222](https://github.com/ClickHouse/ClickHouse/pull/82222) ([Nikolay Degterinsky](https://github.com/evillique)).
+* After https://github.com/ClickHouse/ClickHouse/pull/79963 the usage of subcolumns in Materialized Views got broken and user might have received an error `Not found column X in block`. This behaviour is fixed. This fixes: [#82784](https://github.com/ClickHouse/ClickHouse/issues/82784). [#83221](https://github.com/ClickHouse/ClickHouse/pull/83221) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
+* Fixing illegal_type_of_argument in mv when types are different. [#85135](https://github.com/ClickHouse/ClickHouse/pull/85135) ([Sema Checherinda](https://github.com/CheSema)).
+
+### Azure and cloud storage fixes {#azure-and-cloud-storage-fixes}
+
+* In AzureBlobStorage, for native copy we compare authentication methods, during which if we get an exception, updated the code to fallback to read and copy (i.e. non native copy). [#82693](https://github.com/ClickHouse/ClickHouse/pull/82693) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
+* Fix double-free in `AzureIteratorAsync`. [#85064](https://github.com/ClickHouse/ClickHouse/pull/85064) ([Nikita Taranov](https://github.com/nickitat)).
+
+### Crash and stability fixes {#crash-and-stability-fixes}
+
+* Fix a possible crash in logging while terminating a session as the user_id might sometimes be empty. [#82513](https://github.com/ClickHouse/ClickHouse/pull/82513) ([Bharat Nallan](https://github.com/bharatnc)).
+* Fix crash in client due to connection left in disconnected state after bad `INSERT`. [#83253](https://github.com/ClickHouse/ClickHouse/pull/83253) ([Azat Khuzhin](https://github.com/azat)).
+* Fix crash when calculating the size of a block with empty columns. [#83271](https://github.com/ClickHouse/ClickHouse/pull/83271) ([Raúl Marín](https://github.com/Algunenano)).
+* Fix a crash that may happen for a query with a setting 'max_threads=1' when executed under load with CPU scheduling enabled. [#83387](https://github.com/ClickHouse/ClickHouse/pull/83387) ([Fan Ziqi](https://github.com/f2quantum)).
+* Make `zoutofmemory` hardware error, otherwise it will throw logical error. see https://github.com/clickhouse/clickhouse-core-incidents/issues/877. [#84420](https://github.com/ClickHouse/ClickHouse/pull/84420) ([Han Fei](https://github.com/hanfei1991)).
+* Fix possible abort (due to joining threads from the task) and hopefully hangs (in unit tests) during `BackgroundSchedulePool` shutdown. [#83769](https://github.com/ClickHouse/ClickHouse/pull/83769) ([Azat Khuzhin](https://github.com/azat)).
+* Fix deadlock caused by background cancellation checker thread. [#84203](https://github.com/ClickHouse/ClickHouse/pull/84203) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix deadlock on shutdown due to recursive context locking during library bridge cleanup. [#83824](https://github.com/ClickHouse/ClickHouse/pull/83824) ([Azat Khuzhin](https://github.com/azat)).
+* Fix crash in client due to connection left in disconnected state after bad `INSERT`. [#83842](https://github.com/ClickHouse/ClickHouse/pull/83842) ([Azat Khuzhin](https://github.com/azat)).
+* Fix possible UB (crashes) in case of `MEMORY_LIMIT_EXCEEDED` during String deserialization. [#85440](https://github.com/ClickHouse/ClickHouse/pull/85440) ([Azat Khuzhin](https://github.com/azat)).
+* Fix rare crash in asynchronous inserts that change settings `log_comment` or `insert_deduplication_token`. [#85540](https://github.com/ClickHouse/ClickHouse/pull/85540) ([Anton Popov](https://github.com/CurtizJ)).
+
+### Glue and catalog fixes {#glue-and-catalog-fixes}
+
+* Fix bug in glue catalog integration. Now clickhouse can read tables with nested data types where some of subcolumns contain decimals, for example: `map`. Fixes [#81301](https://github.com/ClickHouse/ClickHouse/issues/81301). [#82114](https://github.com/ClickHouse/ClickHouse/pull/82114) ([alesapin](https://github.com/alesapin)).
+* ClickHouse now reads tables from Glue Catalog where table type specified in lower case. [#84316](https://github.com/ClickHouse/ClickHouse/pull/84316) ([alesapin](https://github.com/alesapin)).
+* Unity catalog now ignores schemas with weird data types in case of non-delta tables. Fixes [#85699](https://github.com/ClickHouse/ClickHouse/issues/85699). [#85950](https://github.com/ClickHouse/ClickHouse/pull/85950) ([alesapin](https://github.com/alesapin)).
+
+### Function fixes {#function-fixes}
+
+* Functions `trim{Left,Right,Both}` now support input strings of type "FixedString(N)". For example, `SELECT trimBoth(toFixedString('abc', 3), 'ac')` now works. [#82691](https://github.com/ClickHouse/ClickHouse/pull/82691) ([Robert Schulze](https://github.com/rschu1ze)).
+* If function `trim` called with all-constant inputs now produces a constant output string. (Bug [#78796](https://github.com/ClickHouse/ClickHouse/issues/78796)). [#82900](https://github.com/ClickHouse/ClickHouse/pull/82900) ([Robert Schulze](https://github.com/rschu1ze)).
+* Fix incorrect output of function `formatDateTime` when formatter `%f` is used together with variable-size formatters (e.g. `%M`). [#83020](https://github.com/ClickHouse/ClickHouse/pull/83020) ([Robert Schulze](https://github.com/rschu1ze)).
+* Fix a bug for `NULL` arguments in `CASE` function. [#82436](https://github.com/ClickHouse/ClickHouse/pull/82436) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Do not use unrelated parts of a shared dictionary in the `lowCardinalityKeys` function. [#83118](https://github.com/ClickHouse/ClickHouse/pull/83118) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix colorSRGBToOKLCH/colorOKLCHToSRGB for mix of const and non-const args. [#83906](https://github.com/ClickHouse/ClickHouse/pull/83906) ([Azat Khuzhin](https://github.com/azat)).
+* Fix incorrect construction of empty tuples in the `array()` function. This fixes [#84202](https://github.com/ClickHouse/ClickHouse/issues/84202). [#84297](https://github.com/ClickHouse/ClickHouse/pull/84297) ([Amos Bird](https://github.com/amosbird)).
+* Fix a bug that was causing incorrect Bech32 Encoding and Decoding. The bug wasn't caught originally due to an online implementation of the algorithm used for testing having the same issue. [#84257](https://github.com/ClickHouse/ClickHouse/pull/84257) ([George Larionov](https://github.com/george-larionov)).
+
+### Distributed query fixes {#distributed-query-fixes}
+
+* Parallel distributed `INSERT SELECT` with `LIMIT` was allowed which is not correct, it leads to data duplication in target table. [#84477](https://github.com/ClickHouse/ClickHouse/pull/84477) ([Igor Nikonov](https://github.com/devcrafter)).
+* Do not try to substitute table functions to its cluster alternative in presence of a `JOIN` or subquery. [#84335](https://github.com/ClickHouse/ClickHouse/pull/84335) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Add a check if a correlated subquery is used in a distributed context to avoid a crash. Fixes [#82205](https://github.com/ClickHouse/ClickHouse/issues/82205). [#85030](https://github.com/ClickHouse/ClickHouse/pull/85030) ([Dmitry Novik](https://github.com/novikd)).
+* Using `distributed_depth` as an indicator of `*Cluster` function was incorrect and may lead to data duplication; use `client_info.collaborate_with_initiator` instead. [#85734](https://github.com/ClickHouse/ClickHouse/pull/85734) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Support global constants from `WITH` statement for the parallel distributed `INSERT SELECT` with the `Distributed` destination table. Before, the query could throw an `Unknown expression identifier` error. [#85811](https://github.com/ClickHouse/ClickHouse/pull/85811) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
+* Fix logical error on attempt to `CREATE ... AS (SELECT * FROM s3Cluster(...))` with `DatabaseReplicated`. [#85904](https://github.com/ClickHouse/ClickHouse/pull/85904) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Add checks for sharding_key during ALTER of the Distributed table. Previously incorrect ALTER would break the table definition and server restart. [#86015](https://github.com/ClickHouse/ClickHouse/pull/86015) ([Nikolay Degterinsky](https://github.com/evillique)).
+
+### Metrics and monitoring fixes {#metrics-and-monitoring-fixes}
+
+* Fix the validation of async metrics settings `asynchronous_metrics_update_period_s` and `asynchronous_heavy_metrics_update_period_s`. [#82310](https://github.com/ClickHouse/ClickHouse/pull/82310) ([Bharat Nallan](https://github.com/bharatnc)).
+* Fix `IndexUncompressedCacheBytes`/`IndexUncompressedCacheCells`/`IndexMarkCacheBytes`/`IndexMarkCacheFiles` metrics (previously they were included into metric w/o `Cache` prefix). [#83730](https://github.com/ClickHouse/ClickHouse/pull/83730) ([Azat Khuzhin](https://github.com/azat)).
+* Fix `LOGICAL_ERROR` in QueryMetricLog: Mutex cannot be `NULL`. [#82979](https://github.com/ClickHouse/ClickHouse/pull/82979) ([Pablo Marcos](https://github.com/pamarcos)).
+* Fix incorrect metrics KafkaAssignedPartitions and KafkaConsumersWithAssignment. [#85494](https://github.com/ClickHouse/ClickHouse/pull/85494) ([Ilya Golshtein](https://github.com/ilejn)).
+* Fix processed bytes stat being underestimated when `PREWHERE` (explicit or automatic) is used. [#85495](https://github.com/ClickHouse/ClickHouse/pull/85495) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix memory tracking drift from background schedule pool and executor. [#84946](https://github.com/ClickHouse/ClickHouse/pull/84946) ([Azat Khuzhin](https://github.com/azat)).
+
+### Data type and conversion fixes {#data-type-and-conversion-fixes}
+
+* Fix cases where parsing of Time could cause msan issues. This fixes: [#82477](https://github.com/ClickHouse/ClickHouse/issues/82477). [#82514](https://github.com/ClickHouse/ClickHouse/pull/82514) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix sort of NaN values in `LowCardinality(Float32|Float64|BFloat16)` type. [#83786](https://github.com/ClickHouse/ClickHouse/pull/83786) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
+* Overflow large values (\>2106-02-07) when casting from `Date` to `DateTime64` is fixed. [#83982](https://github.com/ClickHouse/ClickHouse/pull/83982) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Fix issue with implicit reading of negative Time values into the table and make the docs not confusing. [#83091](https://github.com/ClickHouse/ClickHouse/pull/83091) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
+* Codec `DoubleDelta` codec can now only be applied to columns of numeric type. In particular `FixedString` columns can no longer be compressed using `DoubleDelta`. (fixes [#80220](https://github.com/ClickHouse/ClickHouse/issues/80220)). [#84383](https://github.com/ClickHouse/ClickHouse/pull/84383) ([Jimmy Aguilar Mena](https://github.com/Ergus)).
+* Fix precision loss in `JSONExtract` when converting JSON numbers to Decimal types. Now numeric JSON values preserve their exact decimal representation, avoiding floating-point rounding errors. [#85665](https://github.com/ClickHouse/ClickHouse/pull/85665) ([ssive7b](https://github.com/ssive7b)).
+
+### Memory and resource management {#memory-and-resource-management}
+
+* Fix incorrect memory around `max_untracked_memory`. [#83607](https://github.com/ClickHouse/ClickHouse/pull/83607) ([Azat Khuzhin](https://github.com/azat)).
+* Do not share `async_read_counters` between queries. [#83423](https://github.com/ClickHouse/ClickHouse/pull/83423) ([Azat Khuzhin](https://github.com/azat)).
+* Fix possible file cache not initialized errors when it's used as a temporary data storage. [#83539](https://github.com/ClickHouse/ClickHouse/pull/83539) ([Bharat Nallan](https://github.com/bharatnc)).
+* Always apply `filesystem_prefetches_limit` (not only from `MergeTreePrefetchedReadPool`). [#83999](https://github.com/ClickHouse/ClickHouse/pull/83999) ([Azat Khuzhin](https://github.com/azat)).
+
+### Configuration and settings fixes {#configuration-and-settings-fixes}
+
+* When passing settings over URI the last value is considered. [#82137](https://github.com/ClickHouse/ClickHouse/pull/82137) ([Sema Checherinda](https://github.com/CheSema)).
+* Fix data-races in client (by not using global context) and `session_timezone` overrides (previously in case of `session_timezone` was set in i.e. `users.xml`/client options to non empty and in query context to empty, then, value from `users.xml` was used, while this is wrong, now query context will always have a priority over global context). [#82444](https://github.com/ClickHouse/ClickHouse/pull/82444) ([Azat Khuzhin](https://github.com/azat)).
+* Disallow setting `threadpool_writer_pool_size` to zero to ensure that server operations don't get stuck. [#82532](https://github.com/ClickHouse/ClickHouse/pull/82532) ([Bharat Nallan](https://github.com/bharatnc)).
+* Resolve minor integer overflow in configuration of setting `role_cache_expiration_time_seconds` (issue [#83374](https://github.com/ClickHouse/ClickHouse/issues/83374)). [#83461](https://github.com/ClickHouse/ClickHouse/pull/83461) ([wushap](https://github.com/wushap)).
+* Disallow zero value for max_insert_block_size as it could cause logical error. [#83688](https://github.com/ClickHouse/ClickHouse/pull/83688) ([Bharat Nallan](https://github.com/bharatnc)).
+* Fix endless loop in `estimateCompressionRatio()` with block_size_bytes=0. [#83704](https://github.com/ClickHouse/ClickHouse/pull/83704) ([Azat Khuzhin](https://github.com/azat)).
+* Parameters like `date_time_input_format` have been just ignored when http with multipart. [#85570](https://github.com/ClickHouse/ClickHouse/pull/85570) ([Sema Checherinda](https://github.com/CheSema)).
+
+### MongoDB fixes {#mongodb-fixes}
+
+* Previously, `MongoDB` table engine definitions could include a path component in the `host:port` argument which was silently ignored. The mongodb integration refuses to load such tables. With this fix *we allow loading such tables and ignore path component* if `MongoDB` engine has five arguments, using the database name from arguments. *Note:* The fix is not applied for newly created tables or queries with `mongo` table function, as well as for dictionary sources and named collections. [#81942](https://github.com/ClickHouse/ClickHouse/pull/81942) ([Vladimir Cherkasov](https://github.com/vdimir)).
+
+### Miscellaneous fixes {#miscellaneous-fixes}
+
+* In previous versions, the server returned excessive content for requests to `/js`. This closes [#61890](https://github.com/ClickHouse/ClickHouse/issues/61890). [#81895](https://github.com/ClickHouse/ClickHouse/pull/81895) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* Fix `InterpreterInsertQuery::extendQueryLogElemImpl` to add backquotes to database and table names when needed (f.g., when names contain special characters like `-`). [#81528](https://github.com/ClickHouse/ClickHouse/pull/81528) ([Ilia Shvyrialkin](https://github.com/Harzu)).
+* Fix possible data-race between suggestion thread and main client thread. [#82233](https://github.com/ClickHouse/ClickHouse/pull/82233) ([Azat Khuzhin](https://github.com/azat)).
+* Fix exception safety in union/intersect/except_default_mode rewrite. Closes [#82664](https://github.com/ClickHouse/ClickHouse/issues/82664). [#82820](https://github.com/ClickHouse/ClickHouse/pull/82820) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
+* When using a non-caching Database implementation, the metadata of the corresponding table is deleted after the columns are returned and the reference is invalidated. [#82939](https://github.com/ClickHouse/ClickHouse/pull/82939) ([buyval01](https://github.com/buyval01)).
+* Onprogress call in JSONEachRowWithProgress is synchronized with finalization. [#83879](https://github.com/ClickHouse/ClickHouse/pull/83879) ([Sema Checherinda](https://github.com/CheSema)).
+* Fix rare bug when `MATERIALIZE COLUMN` query could lead to unexpected files in `checksums.txt` and eventually detached data parts. [#84007](https://github.com/ClickHouse/ClickHouse/pull/84007) ([alesapin](https://github.com/alesapin)).
+* Handle exceptions properly in periodic parts refresh. [#84083](https://github.com/ClickHouse/ClickHouse/pull/84083) ([Azat Khuzhin](https://github.com/azat)).
+* Fix column name generation for boolean literals to use "true"/"false" instead of "1"/"0", preventing column name conflicts between boolean and integer literals in queries. [#84945](https://github.com/ClickHouse/ClickHouse/pull/84945) ([xiaohuanlin](https://github.com/xiaohuanlin)).
+* Fix potential inaccurate sorting issues in the Merge table engine. [#85025](https://github.com/ClickHouse/ClickHouse/pull/85025) ([Xiaozhe Yu](https://github.com/wudidapaopao)).
+* Implement missing APIs for DiskEncrypted. [#85028](https://github.com/ClickHouse/ClickHouse/pull/85028) ([Azat Khuzhin](https://github.com/azat)).
+* Introduce backward compatibility setting to allow new analyzer to reference outer alias in the `WITH` clause in the case of name clashes. Fixes [#82700](https://github.com/ClickHouse/ClickHouse/issues/82700). [#83797](https://github.com/ClickHouse/ClickHouse/pull/83797) ([Dmitry Novik](https://github.com/novikd)).
+* Allow referencing any table in `view(...)` argument of `remote` table function with enabled analyzer. Fixes [#78717](https://github.com/ClickHouse/ClickHouse/issues/78717). Fixes [#79377](https://github.com/ClickHouse/ClickHouse/issues/79377). [#83844](https://github.com/ClickHouse/ClickHouse/pull/83844) ([Dmitry Novik](https://github.com/novikd)).
+* Fix write with append (in MergeTree used for experimental transactions) with `plain_rewritable`/`plain` metadata types, previously they were simply ignored. [#83695](https://github.com/ClickHouse/ClickHouse/pull/83695) ([Tuan Pham Anh](https://github.com/tuanpach)).
+* Fix logger usage in `IAccessStorage`. [#84365](https://github.com/ClickHouse/ClickHouse/pull/84365) ([Konstantin Bogdanov](https://github.com/thevar1able)).
+* Fix pruning files by virtual column in data lakes. [#84520](https://github.com/ClickHouse/ClickHouse/pull/84520) ([Kseniia Sumarokova](https://github.com/kssenii)).
+* Fix issue where querying a delayed remote source could result in vector out of bounds. [#84820](https://github.com/ClickHouse/ClickHouse/pull/84820) ([George Larionov](https://github.com/george-larionov)).
+* Correctly store all settings in table metadata for object queue engine. [#84860](https://github.com/ClickHouse/ClickHouse/pull/84860) ([Antonio Andelic](https://github.com/antonio2368)).
+* Fix the `CORRUPTED_DATA` error when lazy columns are used with external sort. [#84738](https://github.com/ClickHouse/ClickHouse/pull/84738) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
+* Get rid of unnecessary `getStatus()` calls during `SYSTEM DROP REPLICA` queries. Fixes the case when a table is dropped in the background, and the `Shutdown for storage is called` exception is thrown. [#85220](https://github.com/ClickHouse/ClickHouse/pull/85220) ([Nikolay Degterinsky](https://github.com/evillique)).
+* Add missing table name length checks in `CREATE OR REPLACE` and `RENAME` queries. [#85326](https://github.com/ClickHouse/ClickHouse/pull/85326) ([Michael Kolupaev](https://github.com/al13n321)).
+* Fix crash and data corruption during `ALTER UPDATE` for JSON. [#85383](https://github.com/ClickHouse/ClickHouse/pull/85383) ([Pavel Kruglov](https://github.com/Avogar)).
+* Fix coalescing merge tree segfault for large strings. This closes [#84582](https://github.com/ClickHouse/ClickHouse/issues/84582). [#85709](https://github.com/ClickHouse/ClickHouse/pull/85709) ([scanhex12](https://github.com/scanhex12)).
+* Fix send_logs_source_regexp (after async logging refactoring in [#85105](https://github.com/ClickHouse/ClickHouse/issues/85105)). [#85797](https://github.com/ClickHouse/ClickHouse/pull/85797) ([Azat Khuzhin](https://github.com/azat)).
+* Fix possible inconsistency for dictionaries with update_field on `MEMORY_LIMIT_EXCEEDED` errors. [#85807](https://github.com/ClickHouse/ClickHouse/pull/85807) ([Azat Khuzhin](https://github.com/azat)).
+* Fix HTTP requests made by the `url()` table function to properly include port numbers in the Host header when accessing non-standard ports. This resolves authentication failures when using presigned URLs with S3-compatible services like MinIO running on custom ports, which is common in development environments. (Fixes [#85898](https://github.com/ClickHouse/ClickHouse/issues/85898)). [#85921](https://github.com/ClickHouse/ClickHouse/pull/85921) ([Tom Quist](https://github.com/tomquist)).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/_category_.json
new file mode 100644
index 00000000000..4eeae460788
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/_category_.json
@@ -0,0 +1,6 @@
+{
+ "label": "Release notes",
+ "collapsible": true,
+ "collapsed": true,
+ "link": { "type": "doc", "id": "cloud/reference/changelog/release_notes/index" }
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/index.md
new file mode 100644
index 00000000000..fe9875b1b41
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/02_release_notes/index.md
@@ -0,0 +1,27 @@
+---
+slug: /cloud/reference/changelogs/release-notes
+title: 'Cloud Release Notes'
+description: 'Landing page for Cloud release notes'
+doc_type: 'changelog'
+keywords: ['changelog', 'release notes', 'updates', 'new features', 'cloud changes']
+---
+
+
+
+
+| Page | Description |
+|-----|-----|
+| [v25.8 Changelog for Cloud](/changelogs/25.8) | Fast release changelog for v25.8 |
+| [v25.6 Changelog for Cloud](/changelogs/25.6) | Fast release changelog for v25.6 |
+| [v25.4 Changelog for Cloud](/changelogs/25.4) | Fast release changelog for v25.4 |
+| [v24.12 Changelog for Cloud](/changelogs/24.12) | Fast release changelog for v24.12 |
+| [v24.10 Changelog for Cloud](/changelogs/24.10) | Fast release changelog for v24.10 |
+| [v24.8 Changelog for Cloud](/changelogs/24.8) | Fast release changelog for v24.8 |
+| [v24.6 Changelog for Cloud](/changelogs/24.6) | Fast release changelog for v24.6 |
+| [v24.5 Changelog for Cloud](/changelogs/24.5) | Fast release changelog for v24.5 |
+| [v24.2 Changelog](/whats-new/changelog/24.2-fast-release) | Fast release changelog for v24.2 |
+| [Cloud Changelog](/whats-new/cloud) | ClickHouse Cloud changelog providing descriptions of what is new in each ClickHouse Cloud release |
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/_category_.json
new file mode 100644
index 00000000000..60a9e95ee7e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/_category_.json
@@ -0,0 +1,6 @@
+{
+ "label": "Change logs",
+ "collapsible": true,
+ "collapsed": true,
+ "link": { "type": "doc", "id": "cloud/reference/changelog/index" }
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/index.md
new file mode 100644
index 00000000000..a98a6c7767d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/01_changelog/index.md
@@ -0,0 +1,12 @@
+---
+slug: /cloud/reference/changelogs
+title: 'Changelogs'
+description: 'Landing page for Cloud changelogs'
+doc_type: 'landing-page'
+keywords: ['ClickHouse Cloud changelog', 'Cloud release notes', 'cloud updates', 'version history']
+---
+
+| Page | Description |
+|---------------------------------------------------------------|-------------------------------------------------|
+| [Cloud Changelog](/whats-new/cloud) | Changelog for ClickHouse Cloud |
+| [Release Notes](/cloud/reference/changelogs/release-notes) | Release notes for all ClickHouse Cloud releases |
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/02_architecture.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/02_architecture.md
new file mode 100644
index 00000000000..f3febabfd63
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/02_architecture.md
@@ -0,0 +1,60 @@
+---
+'sidebar_label': '아키텍처'
+'slug': '/cloud/reference/architecture'
+'title': 'ClickHouse Cloud 아키텍처'
+'description': '이 페이지는 ClickHouse Cloud의 아키텍처를 설명합니다.'
+'keywords':
+- 'ClickHouse Cloud'
+- 'cloud architecture'
+- 'separation of storage and compute'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import Architecture from '@site/static/images/cloud/reference/architecture.png';
+
+
+# ClickHouse Cloud 아키텍처
+
+
+
+## 객체 저장소 기반 스토리지 {#storage-backed-by-object-store}
+- 사실상 무제한 스토리지
+- 데이터를 수동으로 공유할 필요 없음
+- 특히 자주 액세스되지 않는 데이터를 저장하는 경우 주요 가격 인하
+
+## 컴퓨트 {#compute}
+- 자동 스케일링 및 유휴 상태: 처음부터 크기를 정할 필요가 없고, 피크 사용을 위해 과도하게 할당할 필요 없음
+- 자동 유휴 및 재개: 아무도 사용하지 않을 때 사용하지 않는 컴퓨트를 실행할 필요 없음
+- 기본적으로 안전하고 고가용성 확보
+
+## 관리 {#administration}
+- 설정, 모니터링, 백업 및 청구가 자동으로 수행됨.
+- 비용 제어가 기본적으로 활성화되며, Cloud 콘솔을 통해 조정 가능.
+
+## 서비스 격리 {#service-isolation}
+
+### 네트워크 격리 {#network-isolation}
+
+모든 서비스는 네트워크 계층에서 격리되어 있음.
+
+### 컴퓨트 격리 {#compute-isolation}
+
+모든 서비스는 각각의 Kubernetes 공간에 별도의 파드로 배포되며, 네트워크 수준에서 격리되어 있음.
+
+### 스토리지 격리 {#storage-isolation}
+
+모든 서비스는 공유 버킷 (AWS, GCP) 또는 저장소 컨테이너 (Azure)의 별도의 하위 경로를 사용함.
+
+AWS의 경우, 스토리지 접근은 AWS IAM을 통해 제어되며, 각 IAM 역할은 서비스마다 고유함. 엔터프라이즈 서비스의 경우, [CMEK](/cloud/security/cmek)를 활성화하여 저장 시 고급 데이터 격리를 제공할 수 있음. CMEK는 현재 AWS 서비스에 대해서만 지원됨.
+
+GCP 및 Azure의 경우, 서비스는 객체 스토리지 격리 기능을 가지고 있음 (모든 서비스는 자체 버킷 또는 저장소 컨테이너 보유).
+
+## 컴퓨트-컴퓨트 분리 {#compute-compute-separation}
+[컴퓨트-컴퓨트 분리](/cloud/reference/warehouses)를 통해 사용자는 각자 서비스 URL을 가진 여러 컴퓨트 노드 그룹을 생성할 수 있으며, 모든 그룹은 동일한 공유 객체 스토리지를 사용함. 이는 동일한 데이터를 공유하면서 쓰기에서 읽기에 대한 다양한 사용 사례의 컴퓨트 격리를 가능하게 함. 또한, 필요한 만큼 컴퓨트 그룹의 독립적인 스케일링을 허용하여 자원 활용을 보다 효율적으로 만듦.
+
+## 동시성 한도 {#concurrency-limits}
+
+귀하의 ClickHouse Cloud 서비스에서 초당 쿼리 수(QPS)의 제한은 없음. 그러나 복제본 당 1000개의 동시 쿼리 한도가 존재함. QPS는 궁극적으로 평균 쿼리 실행 시간과 귀하의 서비스 내 복제본 수의 함수임.
+
+자체 관리 ClickHouse 인스턴스나 다른 데이터베이스/데이터 웨어하우스와 비교할 때 ClickHouse Cloud의 주요 장점은 [복제본 추가 (수평 스케일링)](/manage/scaling#manual-horizontal-scaling)을 통해 동시성을 쉽게 증가시킬 수 있다는 점임.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/02_architecture.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/02_architecture.md.hash
new file mode 100644
index 00000000000..d20cf50f99c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/02_architecture.md.hash
@@ -0,0 +1 @@
+efeb47d38dd7dd13
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/01_billing_overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/01_billing_overview.md
new file mode 100644
index 00000000000..f21ae8d3c7f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/01_billing_overview.md
@@ -0,0 +1,396 @@
+---
+'sidebar_label': '개요'
+'slug': '/cloud/manage/billing/overview'
+'title': '가격 책정'
+'description': 'ClickHouse Cloud 가격 책정에 대한 개요 페이지'
+'doc_type': 'reference'
+'keywords':
+- 'ClickHouse Cloud'
+- 'pricing'
+- 'billing'
+- 'cloud costs'
+- 'compute pricing'
+---
+
+For pricing information, see the [ClickHouse Cloud Pricing](https://clickhouse.com/pricing#pricing-calculator) page.
+ClickHouse Cloud bills based on the usage of compute, storage, [data transfer](/cloud/manage/network-data-transfer) (egress over the internet and cross-region), and [ClickPipes](/integrations/clickpipes).
+To understand what can affect your bill, and ways that you can manage your spend, keep reading.
+
+## Amazon Web Services (AWS) example {#amazon-web-services-aws-example}
+
+:::note
+- Prices reflect AWS us-east-1 pricing.
+- Explore applicable data transfer and ClickPipes charges [here](/cloud/manage/network-data-transfer).
+:::
+
+### Basic: from $66.52 per month {#basic-from-6652-per-month}
+
+Best for: Departmental use cases with smaller data volumes that do not have hard reliability guarantees.
+
+**Basic tier service**
+- 1 복제본 x 8 GiB RAM, 2 vCPU
+- 500 GB의 압축 데이터
+- 500 GB의 데이터 백업
+- 10 GB의 공용 인터넷 이gress 데이터 전송
+- 5 GB의 크로스 리전 데이터 전송
+
+Pricing breakdown for this example:
+
+
+
+
+
Active 6 hours a day
+
Active 12 hours a day
+
Active 24 hours a day
+
+
+
+
Compute
+
\$39.91
+
\$79.83
+
\$159.66
+
+
+
Storage
+
\$25.30
+
\$25.30
+
\$25.30
+
+
+
Public internet egress data transfer
+
\$1.15
+
\$1.15
+
\$1.15
+
+
+
Cross-region data transfer
+
\$0.16
+
\$0.16
+
\$0.16
+
+
+
Total
+
\$66.52
+
\$106.44
+
\$186.27
+
+
+
+
+### Scale (always-on, auto-scaling): from $499.38 per month {#scale-always-on-auto-scaling-from-49938-per-month}
+
+Best for: workloads requiring enhanced SLAs (2+ 복제본 서비스), scalability, and advanced security.
+
+**Scale tier service**
+- Active workload ~100% time
+- Auto-scaling maximum configurable to prevent runaway bills
+- 100 GB의 공용 인터넷 이gress 데이터 전송
+- 10 GB의 크로스 리전 데이터 전송
+
+Pricing breakdown for this example:
+
+
+
+
+
Example 1
+
Example 2
+
Example 3
+
+
+
+
Compute
+
2 복제본 x 8 GiB RAM, 2 vCPU \$436.95
+
2 복제본 x 16 GiB RAM, 4 vCPU \$873.89
+
3 복제본 x 16 GiB RAM, 4 vCPU \$1,310.84
+
+
+
Storage
+
1 TB의 데이터 + 1 백업 \$50.60
+
2 TB의 데이터 + 1 백업 \$101.20
+
3 TB의 데이터 + 1 백업 \$151.80
+
+
+
Public internet egress data transfer
+
\$11.52
+
\$11.52
+
\$11.52
+
+
+
Cross-region data transfer
+
\$0.31
+
\$0.31
+
\$0.31
+
+
+
Total
+
\$499.38
+
\$986.92
+
\$1,474.47
+
+
+
+
+### Enterprise: Starting prices vary {#enterprise-starting-prices-vary}
+
+Best for: large scale, mission critical deployments that have stringent security and compliance needs
+
+**Enterprise tier service**
+- Active workload ~100% time
+- 1 TB의 공용 인터넷 이gress 데이터 전송
+- 500 GB의 크로스 리전 데이터 전송
+
+
+
+
+
Example 1
+
Example 2
+
Example 3
+
+
+
+
Compute
+
2 복제본 x 32 GiB RAM, 8 vCPU \$2,285.60
+
2 복제본 x 64 GiB RAM, 16 vCPU \$4,571.19
+
2 x 120 GiB RAM, 30 vCPU \$8,570.99
+
+
+
Storage
+
5 TB + 1 backup \$253.00
+
10 TB + 1 backup \$506.00
+
20 TB + 1 backup \$1,012.00
+
+
+
Public internet egress data transfer
+
\$115.20
+
\$115.20
+
\$115.20
+
+
+
Cross-region data transfer
+
\$15.60
+
\$15.60
+
\$15.60
+
+
+
Total
+
\$2,669.40
+
\$5,207.99
+
\$9,713.79
+
+
+
+
+## Frequently asked questions {#faqs}
+
+### What is a ClickHouse Credit (CHC)? {#what-is-chc}
+
+A ClickHouse Credit is a unit of credit toward Customer's usage of ClickHouse Cloud equal to one (1) US dollar, to be applied based on ClickHouse's then-current published price list.
+
+:::note
+If you are being billed through Stripe then you will see that 1 CHC is equal to \$0.01 USD on your Stripe invoice. This is to allow accurate billing on Stripe due to their limitation on not being able to bill fractional quantities of our standard SKU of 1 CHC = \$1 USD.
+:::
+
+### Where can I find legacy pricing? {#find-legacy-pricing}
+
+Legacy pricing information can be found [here](https://clickhouse.com/pricing?legacy=true).
+
+### How is compute metered? {#how-is-compute-metered}
+
+ClickHouse Cloud meters compute on a per-minute basis, in 8G RAM increments.
+Compute costs will vary by tier, region, and cloud service provider.
+
+### How is storage on disk calculated? {#how-is-storage-on-disk-calculated}
+
+ClickHouse Cloud uses cloud object storage and usage is metered on the compressed size of data stored in ClickHouse tables.
+Storage costs are the same across tiers and vary by region and cloud service provider.
+
+### Do backups count toward total storage? {#do-backups-count-toward-total-storage}
+
+Storage and backups are counted towards storage costs and billed separately.
+All services will default to one backup, retained for a day.
+Users who need additional backups can do so by configuring additional [backups](/cloud/manage/backups/overview) under the settings tab of the Cloud console.
+
+### How do I estimate compression? {#how-do-i-estimate-compression}
+
+Compression can vary from dataset to dataset.
+How much it varies is dependent on how compressible the data is in the first place (number of high vs. low cardinality fields),
+and how the user sets up the schema (using optional codecs or not, for instance).
+It can be on the order of 10x for common types of analytical data, but it can be significantly lower or higher as well.
+See the [optimizing documentation](/optimize/asynchronous-inserts) for guidance and this [Uber blog](https://www.uber.com/blog/logging/) for a detailed logging use case example.
+The only practical way to know exactly is to ingest your dataset into ClickHouse and compare the size of the dataset with the size stored in ClickHouse.
+
+You can use the query:
+
+```sql title="Estimating compression"
+SELECT formatReadableSize(total_bytes)
+FROM system.tables
+WHERE name =
+```
+
+### What tools does ClickHouse offer to estimate the cost of running a service in the cloud if I have a self-managed deployment? {#what-tools-does-clickhouse-offer-to-estimate-the-cost-of-running-a-service-in-the-cloud-if-i-have-a-self-managed-deployment}
+
+The ClickHouse query log captures [key metrics](/operations/system-tables/query_log) that can be used to estimate the cost of running a workload in ClickHouse Cloud.
+For details on migrating from self-managed to ClickHouse Cloud please refer to the [migration documentation](/cloud/migration/clickhouse-to-cloud), and contact [ClickHouse Cloud support](https://console.clickhouse.cloud/support) if you have further questions.
+
+### What billing options are available for ClickHouse Cloud? {#what-billing-options-are-available-for-clickhouse-cloud}
+
+ClickHouse Cloud supports the following billing options:
+
+- Self-service monthly (in USD, via credit card).
+- Direct-sales annual / multi-year (through pre-paid "ClickHouse Credits", in USD, with additional payment options).
+- Through the AWS, GCP, and Azure marketplaces (either pay-as-you-go (PAYG) or commit to a contract with ClickHouse Cloud through the marketplace).
+
+:::note
+ClickHouse Cloud credits for PAYG are invoiced in \$0.01 units, allowing us to charge customers for partial ClickHouse credits based on their usage. This differs from committed spend ClickHouse credits, which are purchased in advance in whole \$1 units.
+:::
+
+### Can I delete my credit card? {#can-i-delete-my-credit-card}
+You can’t remove a credit card in the Billing UI, but you can update it anytime. This helps ensure your organization always has a valid payment method. If you need to remove your credit card, please contact [ClickHouse Cloud support](https://console.clickhouse.cloud/support) for help.
+
+### How long is the billing cycle? {#how-long-is-the-billing-cycle}
+
+Billing follows a monthly billing cycle and the start date is tracked as the date when the ClickHouse Cloud organization was created.
+
+### If I have an active PAYG marketplace subscription and then sign a committed contract, will my committed credits be consumed first? {#committed-credits-consumed-first-with-active-payg-subscription}
+
+Yes. Usage is consumed with the following payment methods in this order:
+- Committed (prepaid) credits
+- Marketplace subscription (PAYG)
+- Credit card
+
+### What controls does ClickHouse Cloud offer to manage costs for Scale and Enterprise services? {#what-controls-does-clickhouse-cloud-offer-to-manage-costs-for-scale-and-enterprise-services}
+
+- Trial and Annual Commit customers are notified automatically by email when their consumption hits certain thresholds: `50%`, `75%`, and `90%`. This allows users to proactively manage their usage.
+- ClickHouse Cloud allows users to set a maximum auto-scaling limit on their compute via [Advanced scaling control](/manage/scaling), a significant cost factor for analytical workloads.
+- The [Advanced scaling control](/manage/scaling) lets you set memory limits with an option to control the behavior of pausing/idling during inactivity.
+
+### What controls does ClickHouse Cloud offer to manage costs for Basic services? {#what-controls-does-clickhouse-cloud-offer-to-manage-costs-for-basic-services}
+
+- The [Advanced scaling control](/manage/scaling) lets you control the behavior of pausing/idling during inactivity. Adjusting memory allocation is not supported for Basic services.
+- Note that the default setting pauses the service after a period of inactivity.
+
+### If I have multiple services, do I get an invoice per service or a consolidated invoice? {#if-i-have-multiple-services-do-i-get-an-invoice-per-service-or-a-consolidated-invoice}
+
+A consolidated invoice is generated for all services in a given organization for a billing period.
+
+### If I add my credit card and upgrade before my trial period and credits expire, will I be charged? {#if-i-add-my-credit-card-and-upgrade-before-my-trial-period-and-credits-expire-will-i-be-charged}
+
+When a user converts from trial to paid before the 30-day trial period ends, but with credits remaining from the trial credit allowance,
+we continue to draw down from the trial credits during the initial 30-day trial period, and then charge the credit card.
+
+### How can I keep track of my spending? {#how-can-i-keep-track-of-my-spending}
+
+The ClickHouse Cloud console provides a Usage display that details usage per service. This breakdown, organized by usage dimensions, helps you understand the cost associated with each metered unit.
+
+### How do I access my invoices for my subscription to the ClickHouse Cloud service? {#how-do-i-access-my-invoice-for-my-subscription-to-the-clickhouse-cloud-service}
+
+For direct subscriptions using a credit card:
+
+To view your invoices, select your organization from the left-hand navigation bar in the ClickHouse Cloud UI, then go to Billing. All of your invoices will be listed under the Invoices section.
+
+For subscriptions through a cloud marketplace:
+
+All marketplace subscriptions are billed and invoiced by the marketplace. You can view your invoice through the respective cloud provider marketplace directly.
+
+### Why do the dates on the Usage statements not match my Marketplace Invoice? {#why-do-the-dates-on-the-usage-statements-not-match-my-marketplace-invoice}
+
+AWS Marketplace billing follows the calendar month cycle.
+For example, for usage between dates 01-Dec-2024 and 01-Jan-2025,
+an invoice is generated between 3-Jan and 5-Jan-2025.
+
+ClickHouse Cloud usage statements follow a different billing cycle where usage is metered
+and reported over 30 days starting from the day of sign up.
+
+The usage and invoice dates will differ if these dates are not the same. Since usage statements track usage by day for a given service, users can rely on statements to see the breakdown of costs.
+
+### Are there any restrictions around the usage of prepaid credits? {#are-there-any-restrictions-around-the-usage-of-prepaid-credits}
+
+ClickHouse Cloud prepaid credits (whether direct through ClickHouse, or via a cloud provider's marketplace)
+can only be leveraged for the terms of the contract.
+This means they can be applied on the acceptance date, or a future date, and not for any prior periods.
+Any overages not covered by prepaid credits must be covered by a credit card payment or marketplace monthly billing.
+
+### Is there a difference in ClickHouse Cloud pricing, whether paying through the cloud provider marketplace or directly to ClickHouse? {#is-there-a-difference-in-clickhouse-cloud-pricing-whether-paying-through-the-cloud-provider-marketplace-or-directly-to-clickhouse}
+
+There is no difference in pricing between marketplace billing and signing up directly with ClickHouse.
+In either case, your usage of ClickHouse Cloud is tracked in terms of ClickHouse Cloud Credits (CHCs),
+which are metered in the same way and billed accordingly.
+
+### How is compute-compute separation billed? {#how-is-compute-compute-separation-billed}
+
+When creating a service in addition to an existing service,
+you can choose if this new service should share the same data with the existing one.
+If yes, these two services now form a [warehouse](/cloud/reference/warehouses).
+A warehouse has the data stored in it with multiple compute services accessing this data.
+
+As the data is stored only once, you only pay for one copy of data, though multiple services are accessing it.
+You pay for compute as usual — there are no additional fees for compute-compute separation / warehouses.
+By leveraging shared storage in this deployment, users benefit from cost savings on both storage and backups.
+
+Compute-compute separation can save you a significant amount of ClickHouse Credits in some cases.
+A good example is the following setup:
+
+1. You have ETL jobs that are running 24/7 and ingesting data into the service. These ETL jobs do not require a lot of memory so they can run on a small instance with, for example, 32 GiB of RAM.
+
+2. A data scientist on the same team that has ad hoc reporting requirements, says they need to run a 쿼리 that requires a significant amount of memory - 236 GiB, however does not need high availability and can wait and rerun 쿼리 if the first run fails.
+
+In this example you, as an administrator for the database, can do the following:
+
+1. Create a small service with two 복제본 16 GiB each - this will satisfy the ETL jobs and provide high availability.
+
+2. For the data scientist, you can create a second service in the same warehouse with only one 복제본 with 236 GiB. You can enable idling for this service so you will not be paying for this service when the data scientist is not using it.
+
+Cost estimation (per month) for this example on the **Scale Tier**:
+- Parent service active 24 hours day: 2 복제본 x 16 GiB 4 vCPU per 복제본
+- Child service: 1 복제본 x 236 GiB 59 vCPU per 복제본
+- 3 TB of compressed data + 1 backup
+- 100 GB of public internet egress data transfer
+- 50 GB of cross-region data transfer
+
+
+
+
+
Child service active 1 hour/day
+
Child service active 2 hours/day
+
Child service active 4 hours/day
+
+
+
+
Compute
+
\$1,142.43
+
\$1,410.97
+
\$1,948.05
+
+
+
Storage
+
\$151.80
+
\$151.80
+
\$151.80
+
+
+
Public internet egress data transfer
+
\$11.52
+
\$11.52
+
\$11.52
+
+
+
Cross-region data transfer
+
\$1.56
+
\$1.56
+
\$1.56
+
+
+
Total
+
\$1,307.31
+
\$1,575.85
+
\$2,112.93
+
+
+
+
+Without warehouses, you would have to pay for the amount of memory that the data engineer needs for his 쿼리.
+However, combining two services in a warehouse and idling one of them helps you save money.
+
+## ClickPipes pricing {#clickpipes-pricing}
+
+For information on ClickPipes billing, please see the dedicated ["ClickPipes billing" section](/cloud/reference/billing/clickpipes).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/01_billing_overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/01_billing_overview.md.hash
new file mode 100644
index 00000000000..8a089be249b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/01_billing_overview.md.hash
@@ -0,0 +1 @@
+917056dceeababc6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-committed.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-committed.md
new file mode 100644
index 00000000000..f13cee39582
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-committed.md
@@ -0,0 +1,102 @@
+---
+'slug': '/cloud/billing/marketplace/aws-marketplace-committed-contract'
+'title': 'AWS Marketplace Committed Contract'
+'description': 'AWS Marketplace (Committed Contract)을 통해 ClickHouse Cloud에 가입하기'
+'keywords':
+- 'aws'
+- 'amazon'
+- 'marketplace'
+- 'billing'
+- 'committed'
+- 'committed contract'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import mp_committed_spend_1 from '@site/static/images/cloud/reference/mp_committed_spend_1.png'
+import mp_committed_spend_2 from '@site/static/images/cloud/reference/mp_committed_spend_2.png'
+import mp_committed_spend_3 from '@site/static/images/cloud/reference/mp_committed_spend_3.png'
+import mp_committed_spend_4 from '@site/static/images/cloud/reference/mp_committed_spend_4.png'
+import mp_committed_spend_5 from '@site/static/images/cloud/reference/mp_committed_spend_5.png'
+import mp_committed_spend_6 from '@site/static/images/cloud/reference/mp_committed_spend_6.png'
+import mp_committed_spend_7 from '@site/static/images/cloud/reference/mp_committed_spend_7.png'
+
+Get started with ClickHouse Cloud on the [AWS Marketplace](https://aws.amazon.com/marketplace) via a committed contract.
+A committed contract, also known as a Private Offer, allows customers to commit to spending a certain amount on ClickHouse Cloud over a period of time.
+
+## Prerequisites {#prerequisites}
+
+- ClickHouse의 특정 계약 조건에 따른 Private Offer.
+- ClickHouse 조직을 귀하의 약정 지출 오퍼에 연결하려면 해당 조직의 관리자여야 합니다.
+
+:::note
+하나의 AWS 계정은 단 한 개의 “ClickHouse Cloud - Committed Contract” 개인 오퍼에만 구독할 수 있으며, 이는 하나의 ClickHouse 조직에만 연결될 수 있습니다.
+:::
+
+AWS에서 약정 계약을 보고 수락하는 데 필요한 권한:
+
+- AWS 관리 정책을 사용하는 경우, 다음 권한이 필요합니다:
+ - `AWSMarketplaceRead-only`, `AWSMarketplaceManageSubscriptions`
+ - 또는 `AWSMarketplaceFullAccess`
+- AWS 관리 정책을 사용하지 않는 경우, 다음 권한이 필요합니다:
+ - IAM 작업 `aws-marketplace:ListPrivateListings` 및 `aws-marketplace:ViewSubscriptions`
+
+## Steps to sign up {#steps-to-sign-up}
+
+
+
+### Accept your private offer {#private-offer-accept}
+
+귀하는 개인 오퍼를 검토하고 수락할 수 있는 링크가 포함된 이메일을 받았어야 합니다.
+
+
+
+### Review offer link {#review-offer-link}
+
+이메일의 Review Offer 링크를 클릭하세요.
+이 링크는 귀하의 AWS Marketplace 페이지로 이동하게 하며, 개인 오퍼 세부정보가 표시됩니다.
+
+### Set up your account {#setup-your-account}
+
+AWS 포털에서 구독하는 단계를 완료하고 **"Set up your account"**를 클릭하세요.
+이 시점에서 ClickHouse Cloud로 리다이렉트되어야 하며, 새 계정을 등록하거나 기존 계정으로 로그인해야 합니다.
+이 단계를 완료하지 않으면 AWS Marketplace 계약을 ClickHouse Cloud에 연결할 수 없습니다.
+
+
+
+### Login to Cloud {#login-cloud}
+
+ClickHouse Cloud로 리다이렉트된 후, 기존 계정으로 로그인하거나 새 계정으로 등록할 수 있습니다.
+이 단계는 ClickHouse Cloud 조직을 AWS Marketplace 청구에 바인딩하기 위해 필요합니다.
+
+
+
+### Register if new {#register}
+
+새로운 ClickHouse Cloud 사용자라면, 페이지 하단의 "Register"를 클릭하세요.
+새 사용자 정보를 생성하고 이메일을 확인하라는 메시지가 표시됩니다.
+이메일을 확인한 후 ClickHouse Cloud 로그인 페이지를 떠나 [https://console.clickhouse.cloud](https://console.clickhouse.cloud)에서 새 사용자 이름으로 로그인할 수 있습니다.
+
+새 사용자일 경우, 비즈니스에 대한 기본 정보를 제공해야 한다는 점에 유의하세요.
+아래 스크린샷을 참고하세요.
+
+
+
+
+
+기존 ClickHouse Cloud 사용자라면, 자격 증명을 사용하여 로그인하면 됩니다.
+
+### Create or select organization to bill {#create-select-org-to-bill}
+
+로그인에 성공한 후, 이 마켓플레이스 계약에 청구할 새 조직을 생성할지 또는 이 계약에 청구할 기존 조직을 선택할지를 결정할 수 있습니다.
+
+
+
+이 단계를 완료하면 귀하의 조직이 AWS 약정 지출 계약에 연결되며 모든 사용량이 귀하의 AWS 계정을 통해 청구됩니다.
+ClickHouse UI의 조직 청구 페이지에서 청구가 실제로 AWS 마켓플레이스에 연결되었음을 확인할 수 있습니다.
+
+
+
+문제가 발생하면 주저하지 말고 [support team](https://clickhouse.com/support/program)에게 문의해 주십시오.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-committed.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-committed.md.hash
new file mode 100644
index 00000000000..20e91aba49a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-committed.md.hash
@@ -0,0 +1 @@
+61b9611077d9b0a7
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-payg.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-payg.md
new file mode 100644
index 00000000000..9e20d1ede99
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-payg.md
@@ -0,0 +1,109 @@
+---
+'slug': '/cloud/billing/marketplace/aws-marketplace-payg'
+'title': 'AWS Marketplace PAYG'
+'description': 'AWS Marketplace (PAYG)을 통해 ClickHouse Cloud에 구독하세요.'
+'keywords':
+- 'aws'
+- 'marketplace'
+- 'billing'
+- 'PAYG'
+'doc_type': 'guide'
+---
+
+import aws_marketplace_payg_1 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-1.png';
+import aws_marketplace_payg_2 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-2.png';
+import aws_marketplace_payg_3 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-3.png';
+import aws_marketplace_payg_4 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-4.png';
+import aws_marketplace_payg_5 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-5.png';
+import aws_marketplace_payg_6 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-6.png';
+import aws_marketplace_payg_7 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-7.png';
+import aws_marketplace_payg_8 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-8.png';
+import aws_marketplace_payg_9 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-9.png';
+import Image from '@theme/IdealImage';
+
+Get started with ClickHouse Cloud on the [AWS Marketplace](https://aws.amazon.com/marketplace) via a PAYG (Pay-as-you-go) Public Offer.
+
+## Prerequisites {#prerequisites}
+
+- 구매 권한이 있는 청구 관리자에 의해 활성화된 AWS 계정.
+- 구매하려면 이 계정으로 AWS 마켓플레이스에 로그인해야 합니다.
+- ClickHouse 조직을 구독에 연결하려면 해당 조직의 관리자가 되어야 합니다.
+
+:::note
+하나의 AWS 계정은 “ClickHouse Cloud - Pay As You Go” 구독에만 가입할 수 있으며, 이는 하나의 ClickHouse 조직에만 연결될 수 있습니다.
+:::
+
+## Steps to sign up {#steps-to-sign-up}
+
+
+
+### Search for Clickhouse Cloud - Pay As You Go {#search-payg}
+
+Go to the [AWS Marketplace](https://aws.amazon.com/marketplace) and search for “ClickHouse Cloud - Pay As You Go”.
+
+
+
+### View purchase options {#purchase-options}
+
+Click on the [listing](https://aws.amazon.com/marketplace/pp/prodview-p4gwofrqpkltu) and then on **View purchase options**.
+
+
+
+### Subscribe {#subscribe}
+
+On the next screen, click subscribe.
+
+:::note
+**구매 주문 (PO) 번호**는 선택 사항이며 무시할 수 있습니다.
+:::
+
+
+
+### Set up your account {#set-up-your-account}
+
+Note that at this point, the setup is not complete and your ClickHouse Cloud organization is not being billed through the marketplace yet. You will now need to click on Set up your account on your marketplace subscription to redirect to ClickHouse Cloud to finish setup.
+
+
+
+Once you redirect to ClickHouse Cloud, you can either login with an existing account, or register with a new account. This step is very important so we can bind your ClickHouse Cloud organization to your AWS Marketplace billing.
+
+:::note[New Clickhouse Cloud Users]
+If you are a new ClickHouse Cloud user, follow the steps below.
+:::
+
+
+Steps for new users
+
+If you are a new ClickHouse Cloud user, click Register at the bottom of the page. You will be prompted to create a new user and verify the email. After verifying your email, you can leave the ClickHouse Cloud login page and login using the new username at the https://console.clickhouse.cloud.
+
+
+
+:::note[New users]
+You will also need to provide some basic information about your business. See the screenshots below.
+:::
+
+
+
+
+
+
+
+If you are an existing ClickHouse Cloud user, simply log in using your credentials.
+
+### Add the Marketplace Subscription to an Organization {#add-marketplace-subscription}
+
+After successfully logging in, you can decide whether to create a new organization to bill to this marketplace subscription or choose an existing organization to bill to this subscription.
+
+
+
+After completing this step your organization will be connected to this AWS subscription and all usage will be billed via your AWS account.
+
+You can confirm from the organization's billing page in the ClickHouse UI that billing is indeed now linked to the AWS marketplace.
+
+
+
+
+
+## Support {#support}
+
+If you run into any issues, please do not hesitate to contact [our support team](https://clickhouse.com/support/program).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-payg.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-payg.md.hash
new file mode 100644
index 00000000000..9e2825a27b9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/aws-marketplace-payg.md.hash
@@ -0,0 +1 @@
+be457b0cfd855fc5
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-committed.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-committed.md
new file mode 100644
index 00000000000..48a5b676f0b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-committed.md
@@ -0,0 +1,144 @@
+---
+'slug': '/cloud/billing/marketplace/azure-marketplace-committed-contract'
+'title': 'Azure Marketplace 의무 계약'
+'description': 'Azure Marketplace (의무 계약)를 통해 ClickHouse Cloud에 가입하세요.'
+'keywords':
+- 'Microsoft'
+- 'Azure'
+- 'marketplace'
+- 'billing'
+- 'committed'
+- 'committed contract'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import azure_marketplace_committed_1 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-1.png';
+import azure_marketplace_committed_2 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-2.png';
+import azure_marketplace_committed_3 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-3.png';
+import azure_marketplace_committed_4 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-4.png';
+import azure_marketplace_committed_5 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-5.png';
+import azure_marketplace_committed_6 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-6.png';
+import azure_marketplace_committed_7 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-7.png';
+import azure_marketplace_committed_8 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-8.png';
+import azure_marketplace_committed_9 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-committed-9.png';
+import aws_marketplace_payg_8 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-8.png';
+import aws_marketplace_payg_9 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-9.png';
+import azure_marketplace_payg_11 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-11.png';
+import azure_marketplace_payg_12 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-12.png';
+
+Get started with ClickHouse Cloud on the [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps) via a committed contract. A committed contract, also known as a a Private Offer, allows customers to commit to spending a certain amount on ClickHouse Cloud over a period of time.
+
+## Prerequisites {#prerequisites}
+
+- 특정 계약 조건을 기반으로 ClickHouse에서 제공하는 Private Offer.
+
+## Steps to sign up {#steps-to-sign-up}
+
+1. 개인 제안을 검토하고 수락하는 링크가 포함된 이메일을 받았어야 합니다.
+
+
+
+
+
+
+
+2. 이메일의 **Review Private Offer** 링크를 클릭하십시오. 이렇게 하면 개인 제안 세부 정보가 포함된 Azure Marketplace 페이지로 이동합니다.
+
+
+
+
+
+
+
+3. 제안을 수락하면 **Private Offer Management** 화면으로 이동합니다. Azure는 구매를 위한 제안을 준비하는 데 시간이 걸릴 수 있습니다.
+
+
+
+
+
+
+
+
+
+
+
+4. 몇 분 후 페이지를 새로 고치십시오. 제안이 **Purchase**에 대해 준비되어 있어야 합니다.
+
+
+
+
+
+
+
+5. **Purchase**를 클릭하십시오. 플라이아웃이 열리게 됩니다. 다음을 완료하십시오:
+
+
+
+- 구독 및 리소스 그룹
+- SaaS 구독에 대한 이름 제공
+- 개인 제안에 대한 청구 계획 선택. 개인 제안이 생성된 기간(예: 1년)만 금액이 나타납니다. 다른 청구 기간 옵션은 $0 금액이 표시됩니다.
+- 반복 청구 여부 선택. 반복 청구가 선택되지 않으면 계약이 청구 기간 종료 시 종료되며 리소스가 비활성화됩니다.
+- **Review + subscribe**를 클릭하십시오.
+
+
+
+
+
+
+
+6. 다음 화면에서 모든 세부 정보를 검토하고 **Subscribe**를 클릭하십시오.
+
+
+
+
+
+
+
+7. 다음 화면에서 **Your SaaS subscription in progress**를 확인할 수 있습니다.
+
+
+
+
+
+
+
+8. 준비가 되면 **Configure account now**를 클릭할 수 있습니다. 이는 Azure 구독을 ClickHouse Cloud 조직에 연결하는 중요한 단계입니다. 이 단계를 수행하지 않으면 마켓플레이스 구독이 완료되지 않습니다.
+
+
+
+
+
+
+
+9. ClickHouse Cloud 가입 또는 로그인 페이지로 리디렉션됩니다. 새 계정을 사용하여 가입하거나 기존 계정으로 로그인할 수 있습니다. 로그인하면 사용 및 Azure Marketplace를 통해 청구할 준비가 된 새로운 조직이 생성됩니다.
+
+10. 진행하기 전에 몇 가지 질문(주소 및 회사 세부정보)에 답변해야 합니다.
+
+
+
+
+
+
+
+
+
+
+
+11. **Complete sign up**를 클릭하면 ClickHouse Cloud 내의 조직으로 이동하여 Azure Marketplace를 통해 청구되는지 확인할 수 있는 청구 화면을 볼 수 있으며, 서비스를 생성할 수 있습니다.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+문제가 발생하면 주저하지 말고 [우리 지원 팀](https://clickhouse.com/support/program) 에 문의하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-committed.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-committed.md.hash
new file mode 100644
index 00000000000..3a064c6cfd0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-committed.md.hash
@@ -0,0 +1 @@
+6df35a8b4dfc835c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-payg.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-payg.md
new file mode 100644
index 00000000000..47e6e22dfac
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-payg.md
@@ -0,0 +1,152 @@
+---
+'slug': '/cloud/billing/marketplace/azure-marketplace-payg'
+'title': 'Azure Marketplace PAYG'
+'description': 'Azure Marketplace (PAYG)을 통해 ClickHouse Cloud에 구독하세요.'
+'keywords':
+- 'azure'
+- 'marketplace'
+- 'billing'
+- 'PAYG'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import azure_marketplace_payg_1 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-1.png';
+import azure_marketplace_payg_2 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-2.png';
+import azure_marketplace_payg_3 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-3.png';
+import azure_marketplace_payg_4 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-4.png';
+import azure_marketplace_payg_5 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-5.png';
+import azure_marketplace_payg_6 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-6.png';
+import azure_marketplace_payg_7 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-7.png';
+import azure_marketplace_payg_8 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-8.png';
+import azure_marketplace_payg_9 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-9.png';
+import azure_marketplace_payg_10 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-10.png';
+import aws_marketplace_payg_8 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-8.png';
+import aws_marketplace_payg_9 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-9.png';
+import azure_marketplace_payg_11 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-11.png';
+import azure_marketplace_payg_12 from '@site/static/images/cloud/manage/billing/marketplace/azure-marketplace-payg-12.png';
+
+Get started with ClickHouse Cloud on the [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps) via a PAYG (Pay-as-you-go) Public Offer.
+
+## Prerequisites {#prerequisites}
+
+- 귀하의 청구 관리자에 의해 구매 권한이 활성화된 Azure 프로젝트.
+- Azure Marketplace에서 ClickHouse Cloud를 구독하려면 구매 권한이 있는 계정으로 로그인하고 적절한 프로젝트를 선택해야 합니다.
+
+1. [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps)로 이동하여 ClickHouse Cloud를 검색합니다. 마켓플레이스에서 제공을 구매할 수 있도록 로그인되어 있는지 확인하십시오.
+
+
+
+
+
+
+
+2. 제품 목록 페이지에서 **지금 받기**를 클릭합니다.
+
+
+
+
+
+
+
+3. 다음 화면에서 이름, 이메일 및 위치 정보를 제공해야 합니다.
+
+
+
+
+
+
+
+4. 다음 화면에서 **구독**을 클릭합니다.
+
+
+
+
+
+
+
+5. 다음 화면에서 구독, 리소스 그룹 및 리소스 그룹 위치를 선택합니다. 리소스 그룹 위치는 ClickHouse Cloud에서 서비스 시작하려는 위치와 동일할 필요는 없습니다.
+
+
+
+
+
+
+
+6. 구독 이름을 제공하고 사용 가능한 옵션에서 청구 조건을 선택해야 합니다. **정기 청구**를 켜거나 끌 수 있습니다. "끄기"로 설정하면 청구 기간이 끝난 후 계약이 종료되고 리소스가 사용 중지됩니다.
+
+
+
+
+
+
+
+7. **"검토 + 구독"**을 클릭합니다.
+
+8. 다음 화면에서 모든 항목이 올바른지 확인하고 **구독**을 클릭합니다.
+
+
+
+
+
+
+
+9. 이 시점에서 ClickHouse Cloud의 Azure 구독에 가입했지만 ClickHouse Cloud에서 계정을 설정하지 않았음을 유의하십시오. 다음 단계는 ClickHouse Cloud가 Azure 구독에 연결할 수 있도록 하는 데 필요하며, Azure 마켓플레이스를 통해 청구가 올바르게 이루어지도록 합니다.
+
+
+
+
+
+
+
+10. Azure 설정이 완료되면 **지금 계정 구성** 버튼이 활성화됩니다.
+
+
+
+
+
+
+
+11. **지금 계정 구성**을 클릭합니다.
+
+
+
+계정 구성에 대한 세부정보와 함께 아래와 같은 이메일을 받게 됩니다:
+
+
+
+
+
+
+
+12. ClickHouse Cloud 가입 또는 로그인 페이지로 리디렉션됩니다. ClickHouse Cloud로 리디렉션되면 기존 계정으로 로그인하거나 새 계정으로 등록할 수 있습니다. 이 단계는 ClickHouse Cloud 조직을 Azure Marketplace 청구에 묶는 데 매우 중요합니다.
+
+13. 새로운 사용자라면 비즈니스에 대한 기본 정보를 제공해야 합니다. 아래 스크린샷을 참조하십시오.
+
+
+
+
+
+
+
+
+
+
+
+**가입 완료**를 클릭하면 ClickHouse Cloud 내에서 조직으로 이동하게 되며, Azure Marketplace를 통해 청구가 이루어지는지 확인하고 서비스를 생성할 수 있는 청구 화면을 볼 수 있습니다.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+14. 문제가 발생하면 주저하지 말고 [지원 팀에 문의하십시오](https://clickhouse.com/support/program).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-payg.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-payg.md.hash
new file mode 100644
index 00000000000..0a9b5e469f8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/azure-marketplace-payg.md.hash
@@ -0,0 +1 @@
+bafa258cd860ffb6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-committed.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-committed.md
new file mode 100644
index 00000000000..1313891b97a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-committed.md
@@ -0,0 +1,146 @@
+---
+'slug': '/cloud/billing/marketplace/gcp-marketplace-committed-contract'
+'title': 'GCP Marketplace 약정 계약'
+'description': 'GCP Marketplace를 통해 ClickHouse Cloud에 구독하세요 (약정 계약)'
+'keywords':
+- 'gcp'
+- 'google'
+- 'marketplace'
+- 'billing'
+- 'committed'
+- 'committed contract'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import gcp_marketplace_committed_1 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-committed-1.png';
+import gcp_marketplace_committed_2 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-committed-2.png';
+import gcp_marketplace_committed_3 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-committed-3.png';
+import gcp_marketplace_committed_4 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-committed-4.png';
+import gcp_marketplace_committed_5 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-committed-5.png';
+import gcp_marketplace_committed_6 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-committed-6.png';
+import gcp_marketplace_committed_7 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-committed-7.png';
+import aws_marketplace_payg_6 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-6.png';
+import aws_marketplace_payg_7 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-7.png';
+import aws_marketplace_payg_8 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-8.png';
+import aws_marketplace_payg_9 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-9.png';
+import gcp_marketplace_payg_5 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-payg-5.png';
+import aws_marketplace_payg_11 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-11.png';
+import gcp_marketplace_payg_6 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-payg-6.png';
+
+ClickHouse Cloud를 [GCP Marketplace](https://console.cloud.google.com/marketplace)에서 커미트 계약을 통해 시작하세요. 커미트 계약은 또한 개인 제안으로 알려져 있으며, 고객이 특정 기간 동안 ClickHouse Cloud에 대해 일정 금액을 지출하는 것에 동의할 수 있도록 합니다.
+
+## 전제 조건 {#prerequisites}
+
+- 특정 계약 조건에 따른 ClickHouse의 개인 제안.
+
+## 가입 단계 {#steps-to-sign-up}
+
+1. 개인 제안을 검토하고 수락할 수 있는 링크가 포함된 이메일을 받으셨을 것입니다.
+
+
+
+
+
+
+
+2. 이메일의 **제안 검토** 링크를 클릭하세요. 그러면 개인 제안 세부정보가 포함된 GCP Marketplace 페이지로 이동됩니다.
+
+
+
+
+
+
+
+
+
+
+
+3. 개인 제안 세부정보를 검토하고 모든 것이 올바르면 **수락**을 클릭하세요.
+
+
+
+
+
+
+
+4. **제품 페이지로 이동**을 클릭하세요.
+
+
+
+
+
+
+
+5. **제공업체에서 관리**를 클릭하세요.
+
+
+
+
+
+
+
+이 시점에서 ClickHouse Cloud로 리디렉션되고 가입 또는 로그인을 해야 합니다. 이 단계를 완료하지 않으면 GCP Marketplace 구독을 ClickHouse Cloud에 연결할 수 없습니다.
+
+
+
+
+
+
+
+6. ClickHouse Cloud로 리디렉션되면 기존 계정으로 로그인하거나 새 계정으로 등록할 수 있습니다.
+
+
+
+
+
+
+
+새로운 ClickHouse Cloud 사용자라면 페이지 하단의 **등록**을 클릭하세요. 새 사용자를 생성하고 이메일을 확인하라는 메시지가 표시됩니다. 이메일을 확인한 후 ClickHouse Cloud 로그인 페이지를 떠나 [https://console.clickhouse.cloud](https://console.clickhouse.cloud)에서 새 사용자 이름으로 로그인할 수 있습니다.
+
+
+
+
+
+
+
+새 사용자라면 비즈니스에 대한 기본 정보를 제공해야 한다는 점에 유의하세요. 아래 스크린샷을 참조하세요.
+
+
+
+
+
+
+
+
+
+
+
+기존 ClickHouse Cloud 사용자라면 자격 증명을 사용하여 로그인하면 됩니다.
+
+7. 로그인에 성공하면 새로운 ClickHouse Cloud 조직이 생성됩니다. 이 조직은 귀하의 GCP 청구 계정에 연결되며 모든 사용량은 귀하의 GCP 계정을 통해 청구됩니다.
+
+8. 로그인 후, 귀하의 청구가 실제로 GCP Marketplace에 연결되어 있는지 확인하고 ClickHouse Cloud 리소스를 설정하기 시작할 수 있습니다.
+
+
+
+
+
+
+
+
+
+
+
+9. 가입 확인 이메일을 받아야 합니다:
+
+
+
+
+
+
+
+
+
+
+문제가 발생하면 주저하지 말고 [지원 팀에 문의](https://clickhouse.com/support/program)하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-committed.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-committed.md.hash
new file mode 100644
index 00000000000..6c13a076a03
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-committed.md.hash
@@ -0,0 +1 @@
+8584e3b68535dab6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-payg.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-payg.md
new file mode 100644
index 00000000000..31f2e199374
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-payg.md
@@ -0,0 +1,121 @@
+---
+'slug': '/cloud/billing/marketplace/gcp-marketplace-payg'
+'title': 'GCP Marketplace PAYG'
+'description': 'GCP Marketplace (PAYG)를 통해 ClickHouse Cloud에 구독하십시오.'
+'keywords':
+- 'gcp'
+- 'marketplace'
+- 'billing'
+- 'PAYG'
+'doc_type': 'guide'
+---
+
+import gcp_marketplace_payg_1 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-payg-1.png';
+import gcp_marketplace_payg_2 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-payg-2.png';
+import gcp_marketplace_payg_3 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-payg-3.png';
+import gcp_marketplace_payg_4 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-payg-4.png';
+import aws_marketplace_payg_6 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-6.png';
+import aws_marketplace_payg_7 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-7.png';
+import aws_marketplace_payg_8 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-8.png';
+import aws_marketplace_payg_9 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-9.png';
+import gcp_marketplace_payg_5 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-payg-5.png';
+import aws_marketplace_payg_11 from '@site/static/images/cloud/manage/billing/marketplace/aws-marketplace-payg-11.png';
+import gcp_marketplace_payg_6 from '@site/static/images/cloud/manage/billing/marketplace/gcp-marketplace-payg-6.png';
+import Image from '@theme/IdealImage';
+
+Get started with ClickHouse Cloud on the [GCP Marketplace](https://console.cloud.google.com/marketplace) via a PAYG (Pay-as-you-go) Public Offer.
+
+## Prerequisites {#prerequisites}
+
+- 구매 권한이 있는 청구 관리자에 의해 활성화된 GCP 프로젝트.
+- GCP Marketplace에서 ClickHouse Cloud에 가입하기 위해서는 구매 권한이 있는 계정으로 로그인하고 적절한 프로젝트를 선택해야 합니다.
+
+## Steps to sign up {#steps-to-sign-up}
+
+1. [GCP Marketplace](https://cloud.google.com/marketplace)로 이동하여 ClickHouse Cloud를 검색합니다. 올바른 프로젝트가 선택되었는지 확인하세요.
+
+
+
+2. [리스트](https://console.cloud.google.com/marketplace/product/clickhouse-public/clickhouse-cloud)를 클릭한 다음 **구독**을 클릭합니다.
+
+
+
+3. 다음 화면에서 구독을 구성합니다:
+
+- 요금제는 기본적으로 "ClickHouse Cloud"로 설정됩니다.
+- 구독 기간은 "월간"입니다.
+- 적절한 청구 계정을 선택합니다.
+- 약관에 동의하고 **구독**을 클릭합니다.
+
+
+
+
+
+
+
+4. **구독**을 클릭하면 **ClickHouse에 가입** 모달이 표시됩니다.
+
+
+
+
+
+
+
+5. 이 시점에서 설정이 아직 완료되지 않았음을 유의하세요. **계정을 설정**을 클릭하여 ClickHouse Cloud로 리디렉션하고 ClickHouse Cloud에 가입해야 합니다.
+
+6. ClickHouse Cloud로 리디렉션된 후, 기존 계정으로 로그인하거나 새 계정으로 등록할 수 있습니다. 이 단계는 ClickHouse Cloud 조직을 GCP Marketplace 청구와 연결하기 위해 매우 중요합니다.
+
+
+
+
+
+
+
+신규 ClickHouse Cloud 사용자라면 페이지 하단에서 **등록**을 클릭합니다. 새 사용자를 생성하고 이메일을 확인하라는 메시지가 표시됩니다. 이메일을 확인한 후 ClickHouse Cloud 로그인 페이지를 종료하고 [https://console.clickhouse.cloud](https://console.clickhouse.cloud)에서 새 사용자 이름으로 로그인할 수 있습니다.
+
+
+
+
+
+
+
+신규 사용자라면 비즈니스에 대한 기본 정보를 제공해야 함을 유의하세요. 아래 스크린샷을 참조하세요.
+
+
+
+
+
+
+
+
+
+
+
+기존 ClickHouse Cloud 사용자라면 자격 증명을 사용하여 간단히 로그인하면 됩니다.
+
+7. 로그인에 성공하면 새로운 ClickHouse Cloud 조직이 생성됩니다. 이 조직은 귀하의 GCP 청구 계정에 연결되어 모든 사용량이 귀하의 GCP 계정을 통해 청구됩니다.
+
+8. 로그인 후 청구가 실제로 GCP Marketplace에 연결되어 있는지 확인하고 ClickHouse Cloud 리소스를 설정하기 시작할 수 있습니다.
+
+
+
+
+
+
+
+
+
+
+
+9. 가입 확인 이메일을 받게 됩니다:
+
+
+
+
+
+
+
+
+
+
+문제가 발생하면 주저하지 말고 [저희 지원팀](https://clickhouse.com/support/program)에 문의하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-payg.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-payg.md.hash
new file mode 100644
index 00000000000..d8df07fa811
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/gcp-marketplace-payg.md.hash
@@ -0,0 +1 @@
+c040806d07d5de0c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/index.md
new file mode 100644
index 00000000000..00bcaf06a67
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/index.md
@@ -0,0 +1,22 @@
+---
+'slug': '/cloud/manage/marketplace/'
+'title': 'Marketplace'
+'description': 'Marketplace 목차 페이지'
+'keywords':
+- 'Marketplace Billing'
+- 'AWS'
+- 'GCP'
+'doc_type': 'landing-page'
+---
+
+이 섹션은 마켓플레이스와 관련된 청구 주제를 자세히 설명합니다.
+
+| 페이지 | 설명 |
+|---------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [Marketplace Billing](/cloud/marketplace/marketplace-billing) | 마켓플레이스 청구에 대한 FAQ입니다. |
+| [AWS Marketplace PAYG](/cloud/billing/marketplace/aws-marketplace-payg) | PAYG(사용한 만큼 지불) 공개 제안을 통해 AWS 마켓플레이스에서 ClickHouse Cloud를 시작하세요. |
+| [AWS Marketplace Committed Contract](/cloud/billing/marketplace/aws-marketplace-committed-contract) | 약정 계약을 통해 AWS 마켓플레이스에서 ClickHouse Cloud를 시작하세요. 약정 계약은 프라이빗 오퍼라고도 하며, 고객이 일정 기간 동안 ClickHouse Cloud에 특정 금액을 지출하기로 약속할 수 있도록 합니다. |
+| [GCP Marketplace PAYG](/cloud/billing/marketplace/gcp-marketplace-payg) | PAYG(사용한 만큼 지불) 공개 제안을 통해 GCP 마켓플레이스에서 ClickHouse Cloud를 시작하세요. |
+| [GCP Marketplace Committed Contract](/cloud/billing/marketplace/gcp-marketplace-committed-contract) | 약정 계약을 통해 GCP 마켓플레이스에서 ClickHouse Cloud를 시작하세요. 약정 계약은 프라이빗 오퍼라고도 하며, 고객이 일정 기간 동안 ClickHouse Cloud에 특정 금액을 지출하기로 약속할 수 있도록 합니다. |
+| [Azure Marketplace PAYG](/cloud/billing/marketplace/azure-marketplace-payg) | PAYG(사용한 만큼 지불) 공개 제안을 통해 Azure 마켓플레이스에서 ClickHouse Cloud를 시작하세요. |
+| [Azure Marketplace Committed Contract](/cloud/billing/marketplace/azure-marketplace-committed-contract) | 약정 계약을 통해 Azure 마켓플레이스에서 ClickHouse Cloud를 시작하세요. 약정 계약은 프라이빗 오퍼라고도 하며, 고객이 일정 기간 동안 ClickHouse Cloud에 특정 금액을 지출하기로 약속할 수 있도록 합니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/index.md.hash
new file mode 100644
index 00000000000..cfcc8dba60a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/index.md.hash
@@ -0,0 +1 @@
+cb725e616ac3b655
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/migrate-marketplace-payg-committed.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/migrate-marketplace-payg-committed.md
new file mode 100644
index 00000000000..24357054947
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/migrate-marketplace-payg-committed.md
@@ -0,0 +1,88 @@
+---
+'slug': '/cloud/billing/marketplace/migrate'
+'title': '클라우드 마켓플레이스에서 사용량 기반(PAYG) 청구를 약정 지출 계약으로 마이그레이션'
+'description': '사용량 기반에서 약정 지출 계약으로 마이그레이션.'
+'keywords':
+- 'marketplace'
+- 'billing'
+- 'PAYG'
+- 'pay-as-you-go'
+- 'committed spend contract'
+'doc_type': 'guide'
+---
+
+
+# 청구를 종량제(pay-as-you-go, PAYG)에서 클라우드 마켓플레이스의 약정 계약으로 이전하기 {#migrate-payg-to-committed}
+
+현재 ClickHouse 조직이 활성 클라우드 마켓플레이스의 종량제(PAYG) 구독(또는 주문)을 통해 청구되고 있으며, 동일한 클라우드 마켓플레이스를 통한 약정 계약으로 청구로 이전하려는 경우, 새로운 제안을 수락한 후 아래의 단계에 따라 클라우드 서비스 제공업체에 맞게 진행해 주시기 바랍니다.
+
+## 중요 메모 {#important-notes}
+
+마켓플레이스 PAYG 구독을 취소하더라도 ClickHouse Cloud 계정이 삭제되지 않음을 유의하시기 바랍니다. 마켓플레이스를 통한 청구 관계만 삭제됩니다. 취소 후에는 시스템이 마켓플레이스를 통해 ClickHouse Cloud 서비스에 대한 청구를 중단합니다. (참고: 이 과정은 즉시 이루어지지 않으며 완료되는 데 몇 분이 걸릴 수 있습니다.)
+
+마켓플레이스 구독이 취소된 후 ClickHouse 조직에 신용 카드가 등록되어 있으면 청구 주기 종료 시 해당 카드로 요금이 청구됩니다. 단, 그 이전에 새로운 마켓플레이스 구독이 연결되어 있지 않은 경우에 해당합니다.
+
+취소 후 신용 카드가 등록되지 않으면, 유효한 신용 카드나 새로운 클라우드 마켓플레이스 구독을 조직에 추가할 수 있는 기간은 14일입니다. 이 기간 내에 결제 방법이 구성되지 않으면 서비스가 일시 중지되며 조직은 [청구 준수](/manage/clickhouse-cloud-billing-compliance)를 벗어난 것으로 간주됩니다.
+
+구독이 취소된 후 발생한 모든 사용량은 다음에 구성된 유효한 결제 방법(선불 신용 카드, 마켓플레이스 구독 또는 신용 카드 순)으로 청구됩니다.
+
+새로운 마켓플레이스 구독 구성을 위한 질문이나 지원이 필요하면 ClickHouse [지원](https://clickhouse.com/support/program) 팀에 도움을 요청하시기 바랍니다.
+
+## AWS 마켓플레이스 {#aws-marketplace}
+
+PAYG 구독을 약정 계약으로 이전하기 위해 동일한 AWS 계정 ID를 사용하려는 경우, 추천 방법은 [영업팀에 연락](https://clickhouse.com/company/contact)하여 이 변경을 요청하는 것입니다. 이렇게 하면 추가 단계가 필요하지 않으며 ClickHouse 조직이나 서비스에 중단이 발생하지 않습니다.
+
+ClickHouse 조직을 PAYG 구독에서 약정 계약으로 이전하기 위해 다른 AWS 계정 ID를 사용하려면 다음 단계를 따라 주시기 바랍니다.
+
+### AWS PAYG 구독 취소 단계 {#cancel-aws-payg}
+
+1. **[AWS 마켓플레이스](https://us-east-1.console.aws.amazon.com/marketplace)로 가기**
+2. **"구독 관리" 버튼 클릭**
+3. **"귀하의 구독"으로 이동:**
+ - "구독 관리" 클릭
+4. **목록에서 ClickHouse Cloud 찾기:**
+ - "귀하의 구독" 아래에서 ClickHouse Cloud를 찾아 클릭
+5. **구독 취소하기:**
+ - ClickHouse Cloud 목록 옆의 "동의"에서 "작업" 드롭다운 또는 버튼 클릭
+ - "구독 취소" 선택
+
+> **참고:** 구독 취소 버튼이 이용 불가능한 경우 구독을 취소하는 데 도움이 필요하면 [AWS 지원](https://support.console.aws.amazon.com/support/home#/)에 문의하시기 바랍니다.
+
+다음으로 ClickHouse 조직을 수락한 새로운 AWS 약정 계약으로 구성하기 위해 이 [단계](/cloud/billing/marketplace/aws-marketplace-committed-contract)를 따라 주시기 바랍니다.
+
+## GCP 마켓플레이스 {#gcp-marketplace}
+
+### GCP PAYG 주문 취소 단계 {#cancel-gcp-payg}
+
+1. **[Google Cloud Marketplace Console](https://console.cloud.google.com/marketplace)로 가기:**
+ - 올바른 GCP 계정으로 로그인하고 적절한 프로젝트를 선택했는지 확인
+2. **ClickHouse 주문 찾기:**
+ - 왼쪽 메뉴에서 "귀하의 주문" 클릭
+ - 활성 주문 목록에서 올바른 ClickHouse 주문 찾기
+3. **주문 취소하기:**
+ - 주문 오른쪽의 세 점 메뉴를 찾아 ClickHouse 주문을 취소하는 방법에 대한 지침 따르기
+
+> **참고:** 이 주문을 취소하는 데 도움이 필요하면 [GCP 지원](https://cloud.google.com/support/docs/get-billing-support) 팀에 문의하시기 바랍니다.
+
+다음으로 ClickHouse 조직을 새로운 GCP 약정 계약으로 구성하기 위해 이 [단계](/cloud/billing/marketplace/gcp-marketplace-committed-contract)를 따라 주시기 바랍니다.
+
+## Azure 마켓플레이스 {#azure-marketplace}
+
+### Azure PAYG 구독 취소 단계 {#cancel-azure-payg}
+
+1. **[Microsoft Azure 포털](http://portal.azure.com)로 가기**
+2. **"구독"으로 이동**
+3. **취소하려는 활성 ClickHouse 구독 찾기**
+4. **구독 취소하기:**
+ - ClickHouse Cloud 구독을 클릭하여 구독 세부정보 열기
+ - "구독 취소" 버튼 선택
+
+> **참고:** 이 주문을 취소하는 데 도움이 필요하면 Azure 포털에서 지원 요청 티켓을 열어 주시기 바랍니다.
+
+다음으로 ClickHouse 조직을 새로운 Azure 약정 계약으로 구성하기 위해 이 [단계](/cloud/billing/marketplace/azure-marketplace-committed-contract)를 따라 주시기 바랍니다.
+
+## 약정 계약에 연결하기 위한 요구 사항 {#linking-requirements}
+
+> **참고:** 조직을 마켓플레이스 약정 계약에 연결하려면:
+> - 단계를 따르는 사용자가 구독을 연결할 ClickHouse 조직의 관리자 사용자여야 합니다.
+> - 조직의 모든 미지급 청구서는 결제되어야 합니다(질문이 있는 경우 ClickHouse [지원](https://clickhouse.com/support/program) 팀에 문의하시기 바랍니다).
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/migrate-marketplace-payg-committed.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/migrate-marketplace-payg-committed.md.hash
new file mode 100644
index 00000000000..8006ab17214
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/migrate-marketplace-payg-committed.md.hash
@@ -0,0 +1 @@
+a42ef907c5a6f902
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/overview.md
new file mode 100644
index 00000000000..040b7c0b7a7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/overview.md
@@ -0,0 +1,99 @@
+---
+'slug': '/cloud/marketplace/marketplace-billing'
+'title': '마켓플레이스 청구'
+'description': 'AWS, GCP 및 Azure 마켓플레이스를 통해 ClickHouse Cloud에 구독하세요.'
+'keywords':
+- 'aws'
+- 'azure'
+- 'gcp'
+- 'google cloud'
+- 'marketplace'
+- 'billing'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import marketplace_signup_and_org_linking from '@site/static/images/cloud/manage/billing/marketplace/marketplace_signup_and_org_linking.png'
+
+You can subscribe to ClickHouse Cloud through the AWS, GCP, and Azure marketplaces. This allows you to pay for ClickHouse Cloud through your existing cloud provider billing.
+
+You can either use pay-as-you-go (PAYG) or commit to a contract with ClickHouse Cloud through the marketplace. The billing will be handled by the cloud provider, and you will receive a single invoice for all your cloud services.
+
+- [AWS Marketplace PAYG](/cloud/billing/marketplace/aws-marketplace-payg)
+- [AWS Marketplace Committed Contract](/cloud/billing/marketplace/aws-marketplace-committed-contract)
+- [GCP Marketplace PAYG](/cloud/billing/marketplace/gcp-marketplace-payg)
+- [GCP Marketplace Committed Contract](/cloud/billing/marketplace/gcp-marketplace-committed-contract)
+- [Azure Marketplace PAYG](/cloud/billing/marketplace/azure-marketplace-payg)
+- [Azure Marketplace Committed Contract](/cloud/billing/marketplace/azure-marketplace-committed-contract)
+
+## FAQs {#faqs}
+
+### How can I verify that my organization is connected to marketplace billing? {#how-can-i-verify-that-my-organization-is-connected-to-marketplace-billing}
+
+In the ClickHouse Cloud console, navigate to **Billing**. You should see the name of the marketplace and the link in the **Payment details** section.
+
+### I am an existing ClickHouse Cloud user. What happens when I subscribe to ClickHouse Cloud via AWS / GCP / Azure marketplace? {#i-am-an-existing-clickhouse-cloud-user-what-happens-when-i-subscribe-to-clickhouse-cloud-via-aws--gcp--azure-marketplace}
+
+Signing up for ClickHouse Cloud from the cloud provider marketplace is a two step process:
+1. You first "subscribe" to ClickHouse Cloud on the cloud providers' marketplace portal. After you have finished subscribing, you click on "Pay Now" or "Manage on Provider" (depending on the marketplace). This redirects you to ClickHouse Cloud.
+2. On ClickHouse Cloud you either register for a new account, or sign in with an existing account. Either way, a new ClickHouse Cloud organization will be created for you which is tied to your marketplace billing.
+
+NOTE: Your existing services and organizations from any prior ClickHouse Cloud signups will remain and they will not be connected to the marketplace billing. ClickHouse Cloud allows you to use the same account to manage multiple organization, each with different billing.
+
+You can switch between organizations from the bottom left menu of the ClickHouse Cloud console.
+
+### I am an existing ClickHouse Cloud user. What should I do if I want my existing services to be billed via marketplace? {#i-am-an-existing-clickhouse-cloud-user-what-should-i-do-if-i-want-my-existing-services-to-be-billed-via-marketplace}
+
+You will need to subscribe to ClickHouse Cloud via the cloud provider marketplace. Once you finish subscribing on the marketplace, and redirect to ClickHouse Cloud you will have the option of linking an existing ClickHouse Cloud organization to marketplace billing. From that point on, your existing resources will now get billed via the marketplace.
+
+
+
+You can confirm from the organization's billing page that billing is indeed now linked to the marketplace. Please contact [ClickHouse Cloud support](https://clickhouse.com/support/program) if you run into any issues.
+
+:::note
+Your existing services and organizations from any prior ClickHouse Cloud signups will remain and not be connected to the marketplace billing.
+:::
+
+### I subscribed to ClickHouse Cloud as a marketplace user. How can I unsubscribe? {#i-subscribed-to-clickhouse-cloud-as-a-marketplace-user-how-can-i-unsubscribe}
+
+Note that you can simply stop using ClickHouse Cloud and delete all existing ClickHouse Cloud services. Even though the subscription will still be active, you will not be paying anything as ClickHouse Cloud doesn't have any recurring fees.
+
+If you want to unsubscribe, please navigate to the Cloud Provider console and cancel the subscription renewal there. Once the subscription ends, all existing services will be stopped and you will be prompted to add a credit card. If no card was added, after two weeks all existing services will be deleted.
+
+### I subscribed to ClickHouse Cloud as a marketplace user, and then unsubscribed. Now I want to subscribe back, what is the process? {#i-subscribed-to-clickhouse-cloud-as-a-marketplace-user-and-then-unsubscribed-now-i-want-to-subscribe-back-what-is-the-process}
+
+In that case please subscribe to the ClickHouse Cloud as usual (see sections on subscribing to ClickHouse Cloud via the marketplace).
+
+- For AWS marketplace a new ClickHouse Cloud organization will be created and connected to the marketplace.
+- For the GCP marketplace your old organization will be reactivated.
+
+If you have any trouble with reactivating your marketplace org, please contact [ClickHouse Cloud Support](https://clickhouse.com/support/program).
+
+### How do I access my invoice for my marketplace subscription to the ClickHouse Cloud service? {#how-do-i-access-my-invoice-for-my-marketplace-subscription-to-the-clickhouse-cloud-service}
+
+- [AWS billing Console](https://us-east-1.console.aws.amazon.com/billing/home)
+- [GCP Marketplace orders](https://console.cloud.google.com/marketplace/orders) (select the billing account that you used for subscription)
+
+### Why do the dates on the Usage statements not match my Marketplace Invoice? {#why-do-the-dates-on-the-usage-statements-not-match-my-marketplace-invoice}
+
+Marketplace billing follows the calendar month cycle. For example, for usage between December 1st and January 1st, an invoice will be generated between January 3rd and January 5th.
+
+ClickHouse Cloud usage statements follow a different billing cycle where usage is metered and reported over 30 days starting from the day of sign up.
+
+The usage and invoice dates will differ if these dates are not the same. Since usage statements track usage by day for a given service, users can rely on statements to see the breakdown of costs.
+
+### Where can I find general billing information? {#where-can-i-find-general-billing-information}
+
+Please see the [Billing overview page](/cloud/manage/billing).
+
+### Is there a difference in ClickHouse Cloud pricing, whether paying through the cloud provider marketplace or directly to ClickHouse? {#is-there-a-difference-in-clickhouse-cloud-pricing-whether-paying-through-the-cloud-provider-marketplace-or-directly-to-clickhouse}
+
+There is no difference in pricing between marketplace billing and signing up directly with ClickHouse. In either case, your usage of ClickHouse Cloud is tracked in terms of ClickHouse Cloud Credits (CHCs), which are metered in the same way and billed accordingly.
+
+### Can I set up multiple ClickHouse Organizations to bill to a single cloud marketplace billing account or sub account (AWS, GCP, or Azure)? {#multiple-organizations-to-bill-to-single-cloud-marketplace-account}
+
+A single ClickHouse organization can only be configured to bill to a single Cloud marketplace billing account or sub account.
+
+### If my ClickHouse Organization is billed through a cloud marketplace committed spend agreement will I automatically move to PAYG billing when I run out of credits? {#automatically-move-to-PAYG-when-running-out-of-credit}
+
+If your marketplace committed spend contract is active and you run out of credits we will automatically move your organization to PAYG billing. However, when your existing contract expires, you will need to link a new marketplace contract to your organization or move your organization to direct billing via credit card.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/overview.md.hash
new file mode 100644
index 00000000000..90a70f79a97
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/02_marketplace/overview.md.hash
@@ -0,0 +1 @@
+4c6110e02b52f2cf
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_cdc.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_cdc.md
new file mode 100644
index 00000000000..10d4d048f6e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_cdc.md
@@ -0,0 +1,152 @@
+---
+'sidebar_label': 'PostgreSQL CDC'
+'slug': '/cloud/reference/billing/clickpipes/postgres-cdc'
+'title': 'ClickPipes for PostgreSQL CDC'
+'description': 'PostgreSQL CDC ClickPipes에 대한 청구 개요'
+'doc_type': 'reference'
+'keywords':
+- 'billing'
+- 'clickpipes'
+- 'cdc pricing'
+- 'costs'
+- 'pricing'
+---
+
+
+# ClickPipes for PostgreSQL CDC {#clickpipes-for-postgresql-cdc}
+
+이 섹션에서는 ClickPipes에서 Postgres Change Data Capture (CDC) 커넥터에 대한 가격 모델을 설명합니다. 이 모델을 설계하는 데 목표는 가격을 매우 경쟁력 있게 유지하면서도 우리의 핵심 비전을 유지하는 것이었습니다:
+
+> Postgres에서 ClickHouse로 데이터를 원활하고 저렴하게 이동하여
+실시간 분석을 수행할 수 있도록 합니다.
+
+커넥터는 외부 ETL 도구 및 다른 데이터베이스 플랫폼에서 유사한 기능보다 **5배 이상 비용 효율적**입니다.
+
+:::note
+Postgres CDC ClickPipes를 사용하는 모든 고객(기존 고객 및 새로운 고객)을 위해 가격이 **2025년 9월 1일부터** 월별 청구서에서 측정되기 시작했습니다.
+:::
+
+## 가격 차원 {#pricing-dimensions}
+
+가격에는 두 가지 주요 차원이 있습니다:
+
+1. **소비된 데이터**: Postgres에서 ClickHouse로 수집되는 압축되지 않은 원시 바이트입니다.
+2. **계산**: 서비스를 위해 프로비저닝된 계산 단위로, 여러 Postgres CDC ClickPipes를 관리하며 ClickHouse Cloud 서비스에서 사용되는 계산 단위와는 별개입니다. 이 추가 계산은 전적으로 Postgres CDC ClickPipes에 전용됩니다. 계산은 개별 파이프가 아니라 서비스 수준에서 청구됩니다. 각 계산 단위에는 2 vCPUs와 8 GB의 RAM이 포함됩니다.
+
+### 소비된 데이터 {#ingested-data}
+
+Postgres CDC 커넥터는 두 가지 주요 단계에서 작동합니다:
+
+- **초기 로드 / 재동기화**: 이는 Postgres 테이블의 전체 스냅샷을 캡처하며 파이프가 처음 생성되거나 재동기화될 때 발생합니다.
+- **지속적인 복제 (CDC)**: Postgres에서 ClickHouse로의 변경 사항(삽입, 업데이트, 삭제 및 스키마 변경)의 지속적인 복제입니다.
+
+대부분의 사용 사례에서 지속적인 복제는 ClickPipe 생애 주기의 90% 이상을 차지합니다. 초기 로드는 대량의 데이터를 한 번에 전송하는 것을 포함하므로 해당 단계에 대해 더 낮은 요금을 제공합니다.
+
+| 단계 | 비용 |
+|----------------------------------|---------------|
+| **초기 로드 / 재동기화** | GB당 $0.10 |
+| **지속적인 복제 (CDC)** | GB당 $0.20 |
+
+### 계산 {#compute}
+
+이 차원은 Postgres ClickPipes 전용으로 서비스당 프로비저닝된 계산 단위를 포함합니다. 계산은 서비스 내의 모든 Postgres 파이프에서 공유됩니다. **첫 번째 Postgres 파이프가 생성될 때 프로비저닝되고, 더 이상 Postgres CDC 파이프가 없을 때 해제됩니다**. 프로비저닝된 계산의 양은 조직의 계층에 따라 다릅니다.
+
+| 계층 | 비용 |
+|------------------------------|----------------------------------------------|
+| **기본 계층** | 서비스당 0.5 계산 단위 — 시간당 $0.10 |
+| **스케일 또는 엔터프라이즈 계층** | 서비스당 1 계산 단위 — 시간당 $0.20 |
+
+### 예시 {#example}
+
+당신의 서비스가 스케일 계층에 있고 다음과 같은 설정을 가지고 있다고 가정해 보겠습니다:
+
+- 2개의 Postgres ClickPipes가 지속적인 복제를 실행 중
+- 각 파이프가 월간 500 GB의 데이터 변경 사항(CDC)을 수집 중
+- 첫 번째 파이프가 시작될 때, 서비스는 Postgres CDC에 대해 **스케일 계층에서 1 계산 단위**를 프로비저닝합니다.
+
+#### 월별 비용 내역 {#cost-breakdown}
+
+**소비된 데이터 (CDC)**:
+
+$$ 2 \text{ 파이프} \times 500 \text{ GB} = 1,000 \text{ GB per month} $$
+
+$$ 1,000 \text{ GB} \times \$0.20/\text{GB} = \$200 $$
+
+**계산**:
+
+$$1 \text{ 계산 단위} \times \$0.20/\text{hr} \times 730 \text{ 시간 (대략적인 월)} = \$146$$
+
+:::note
+계산은 두 개의 파이프에서 공유됩니다.
+:::
+
+**총 월별 비용**:
+
+$$\$200 \text{ (수집)} + \$146 \text{ (계산)} = \$346$$
+
+## Postgres CDC ClickPipes에 대한 FAQ {#faq-postgres-cdc-clickpipe}
+
+
+
+소비된 데이터는 압축된 크기와 압축되지 않은 크기 중 어떤 기반으로 측정되나요?
+
+소비된 데이터는 Postgres에서 오는 _압축되지 않은 데이터_로 측정됩니다—초기 로드 및 CDC(복제 슬롯을 통해) 모두에서. Postgres는 기본적으로 전송 중 데이터를 압축하지 않으며 ClickPipe는 원시, 압축되지 않은 바이트를 처리합니다.
+
+
+
+
+
+Postgres CDC 가격은 언제 내 청구서에 나타나기 시작하나요?
+
+Postgres CDC ClickPipes 가격은 **2025년 9월 1일부터** 모든 고객(기존 고객 및 새로운 고객)에게 월별 청구서에 나타나기 시작했습니다.
+
+
+
+
+
+파이프를 일시 중지하면 요금이 부과되나요?
+
+파이프가 일시 중지되어 있는 동안 데이터 수집 요금은 부과되지 않습니다. 데이터가 이동하지 않기 때문입니다. 그러나 0.5 또는 1 계산 단위에 따라 계산 요금은 여전히 적용됩니다—조직의 계층에 따라 다릅니다. 이는 고정 서비스 수준 비용으로 해당 서비스 내의 모든 파이프에 적용됩니다.
+
+
+
+
+
+내 가격을 어떻게 추정할 수 있나요?
+
+ClickPipes의 개요 페이지는 초기 로드/재동기화 및 CDC 데이터 볼륨에 대한 메트릭을 제공합니다. 이러한 메트릭과 ClickPipes 가격을 결합하여 Postgres CDC 비용을 추정할 수 있습니다.
+
+
+
+
+
+내 서비스에서 Postgres CDC에 할당된 계산을 확장할 수 있나요?
+
+기본적으로 계산 확장은 사용자 구성 가능하지 않습니다. 프로비저닝된 리소스는 대부분의 고객 워크로드를 최적화하여 처리하도록 설계되었습니다. 사용 사례가 더 많은 또는 적은 계산을 필요로 하는 경우, 요청을 평가할 수 있도록 지원 티켓을 열어 주시기 바랍니다.
+
+
+
+
+
+가격의 세분화 수준은 무엇인가요?
+
+- **계산**: 시간당 청구됩니다. 부분 시간은 다음 시간으로 반올림됩니다.
+- **소비된 데이터**: 압축되지 않은 데이터의 기가바이트(GB)로 측정되고 청구됩니다.
+
+
+
+
+
+ClickPipes를 통한 Postgres CDC에 ClickHouse Cloud 크레딧을 사용할 수 있나요?
+
+예. ClickPipes 가격은 통합된 ClickHouse Cloud 가격의 일부입니다. 보유하고 있는 플랫폼 크레딧은 ClickPipes 사용에도 자동으로 적용됩니다.
+
+
+
+
+
+내 기존 월별 ClickHouse Cloud 지출에서 Postgres CDC ClickPipes로 인해 추가 비용이 얼마나 예상되나요?
+
+비용은 사용 사례, 데이터 볼륨 및 조직 계층에 따라 다릅니다. 일반적으로 기존 고객은 평가판 후 기존 월별 ClickHouse Cloud 지출에 **0–15%** 증가를 경험합니다. 실제 비용은 워크로드에 따라 다를 수 있습니다—일부 워크로드는 처리량이 적은 높은 데이터 볼륨을 포함하고, 다른 워크로드는 데이터가 적은 처리량을 요구합니다.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_cdc.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_cdc.md.hash
new file mode 100644
index 00000000000..7780895a468
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_cdc.md.hash
@@ -0,0 +1 @@
+182b77426e6be363
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_streaming_and_object_storage.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_streaming_and_object_storage.md
new file mode 100644
index 00000000000..52df78688be
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_streaming_and_object_storage.md
@@ -0,0 +1,91 @@
+---
+'sidebar_label': '스트리밍 및 객체 저장소'
+'slug': '/cloud/reference/billing/clickpipes/streaming-and-object-storage'
+'title': 'ClickPipes를 위한 스트리밍 및 객체 저장소'
+'description': '스트리밍 및 객체 저장소 ClickPipes의 청구 개요'
+'doc_type': 'reference'
+'keywords':
+- 'billing'
+- 'clickpipes'
+- 'streaming pricing'
+- 'costs'
+- 'pricing'
+---
+
+import ClickPipesFAQ from '../../../_snippets/_clickpipes_faq.md'
+
+
+# ClickPipes for streaming and object storage {#clickpipes-for-streaming-object-storage}
+
+이 섹션에서는 스트리밍 및 객체 저장소에 대한 ClickPipes의 가격 모델을 설명합니다.
+
+## ClickPipes 가격 구조는 어떻게 생겼나요? {#what-does-the-clickpipes-pricing-structure-look-like}
+
+이는 두 가지 차원으로 구성됩니다:
+
+- **Compute**: 시간당 **단위당 가격**.
+ Compute는 ClickPipes 복제본 파드가 데이터 수집을 적극적으로 하든 하지 않든 관계없이 실행하는 데 드는 비용을 나타냅니다.
+ 모든 ClickPipes 유형에 적용됩니다.
+- **Ingested data**: **GB당 가격**.
+ 수집된 데이터 요금은 모든 스트리밍 ClickPipes에 적용됩니다
+ (Kafka, Confluent, Amazon MSK, Amazon Kinesis, Redpanda, WarpStream, Azure Event Hubs)
+ 복제본 파드를 통해 전송된 데이터에 대해. 수집된 데이터 크기(GB)는 소스에서 수신된 바이트 수에 따라 청구됩니다(압축 또는 비압축).
+
+## ClickPipes 복제본이란 무엇인가요? {#what-are-clickpipes-replicas}
+
+ClickPipes는 ClickHouse Cloud 서비스와 독립적으로 실행되고 확장되는 전용 인프라를 통해 원격 데이터 소스에서 데이터를 수집합니다.
+이런 이유로 전용 컴퓨트 복제본을 사용합니다.
+
+## 기본 복제본 수와 크기는 어떻게 되나요? {#what-is-the-default-number-of-replicas-and-their-size}
+
+각 ClickPipe는 기본적으로 512 MiB의 RAM과 0.125 vCPU(XS)가 제공되는 1개의 복제본을 갖습니다.
+이는 **0.0625** ClickHouse 컴퓨트 단위에 해당합니다(1 단위 = 8 GiB RAM, 2 vCPUs).
+
+## ClickPipes의 공개 가격은 무엇인가요? {#what-are-the-clickpipes-public-prices}
+
+- Compute: 시간당 \$0.20(기본 복제본 크기에 대해 시간당 \$0.0125)
+- Ingested data: GB당 \$0.04
+
+Compute 차원의 가격은 ClickPipe의 복제본 수와 크기에 따라 달라집니다. 기본 복제본 크기는 수직 확장을 통해 조정할 수 있으며, 각 복제본 크기는 다음과 같이 가격이 책정됩니다:
+
+| 복제본 크기 | 컴퓨트 단위 | RAM | vCPU | 시간당 가격 |
+|----------------------------|---------------|---------|--------|----------------|
+| Extra Small (XS) (기본) | 0.0625 | 512 MiB | 0.125 | $0.0125 |
+| Small (S) | 0.125 | 1 GiB | 0.25 | $0.025 |
+| Medium (M) | 0.25 | 2 GiB | 0.5 | $0.05 |
+| Large (L) | 0.5 | 4 GiB | 1.0 | $0.10 |
+| Extra Large (XL) | 1.0 | 8 GiB | 2.0 | $0.20 |
+
+## 설명 예시는 어떤 모습인가요? {#how-does-it-look-in-an-illustrative-example}
+
+다음 예시는 명시적으로 언급되지 않는 한 단일 M 크기의 복제본을 가정합니다.
+
+
+
+
+
24시간 동안 100 GB
+
24시간 동안 1 TB
+
24시간 동안 10 TB
+
+
+
+
스트리밍 ClickPipe
+
(0.25 x 0.20 x 24) + (0.04 x 100) = \$5.20
+
(0.25 x 0.20 x 24) + (0.04 x 1000) = \$41.20
+
복제본 4개와 함께: (0.25 x 0.20 x 24 x 4) + (0.04 x 10000) = \$404.80
+
+
+
객체 저장소 ClickPipe $^*$
+
(0.25 x 0.20 x 24) = \$1.20
+
(0.25 x 0.20 x 24) = \$1.20
+
(0.25 x 0.20 x 24) = \$1.20
+
+
+
+
+$^1$ _단지 ClickPipes 컴퓨트만으로 오케스트레이션을 위한 것으로,
+효율적인 데이터 전송은 기본 Clickhouse 서비스에 의해 가정됩니다._
+
+## 스트리밍 및 객체 저장소 ClickPipes에 대한 FAQ {#faq-streaming-and-object-storage}
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_streaming_and_object_storage.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_streaming_and_object_storage.md.hash
new file mode 100644
index 00000000000..b69035a57ce
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/clickpipes_for_streaming_and_object_storage.md.hash
@@ -0,0 +1 @@
+59f912e4f57d391a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/index.md
new file mode 100644
index 00000000000..052d7904fb4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/index.md
@@ -0,0 +1,19 @@
+---
+'slug': '/cloud/reference/billing/clickpipes'
+'title': 'ClickPipes'
+'description': 'ClickPipes 청구'
+'keywords':
+- 'ClickPipes Billing'
+'doc_type': 'reference'
+---
+
+:::note
+MySQL 및 MongoDB CDC ClickPipes의 사용은 일반 제공(GA)에 도달하기 전까지 무료입니다. 고객은 GA 출시 전에 ClickPipes 사용을 검토하고 최적화할 수 있도록 미리 통지받게 됩니다.
+:::
+
+[ClickPipes](/integrations/clickpipes) 요금은 **컴퓨트 사용량** 및 **수집된 데이터**를 기준으로 합니다. 각 카테고리의 가격 모델에 대한 자세한 내용은 전용 요금 페이지를 참조하세요:
+
+| 페이지 | 설명 |
+|-------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [Postgres CDC용 ClickPipes](/cloud/reference/billing/clickpipes/postgres-cdc) | PostgreSQL CDC ClickPipes의 가격. |
+| [스트리밍 및 객체 저장소용 ClickPipes](/cloud/reference/billing/clickpipes/streaming-and-object-storage) | 스트리밍 및 객체 저장소 ClickPipes의 가격. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/index.md.hash
new file mode 100644
index 00000000000..1d7a55b7bdd
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/03_clickpipes/index.md.hash
@@ -0,0 +1 @@
+5facb108629b3cf7
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/04_network-data-transfer.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/04_network-data-transfer.mdx
new file mode 100644
index 00000000000..a82c327eb5c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/04_network-data-transfer.mdx
@@ -0,0 +1,43 @@
+---
+'sidebar_label': '데이터 전송'
+'slug': '/cloud/manage/network-data-transfer'
+'title': '데이터 전송'
+'description': 'ClickHouse Cloud가 수신 및 송신 데이터 전송을 측정하는 방법을 이해하세요.'
+'doc_type': 'guide'
+'keywords':
+- 'billing'
+- 'network transfer'
+- 'data egress'
+- 'costs'
+- 'pricing'
+---
+
+import NetworkPricing from '@site/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_snippets/_network_transfer_rates.md';
+
+ClickHouse Cloud는 전송된 데이터의 수신 및 송신을 측정합니다. 여기에는 ClickHouse Cloud의 모든 데이터뿐만 아니라 지역 내 및 지역 간 데이터 전송도 포함됩니다. 이 사용량은 서비스 수준에서 추적됩니다. 이 사용량에 따라 고객은 데이터 전송 요금을 부담하며, 이는 후에 월 청구서에 추가됩니다.
+
+ClickHouse Cloud는 다음에 대해 요금을 청구합니다:
+- ClickHouse Cloud에서 공용 인터넷으로의 데이터 송신, 다른 클라우드 제공자의 다른 지역 포함.
+- 동일 클라우드 제공자의 다른 지역으로의 데이터 송신.
+
+지역 내 데이터 전송 또는 Private Link/Private Service Connect 사용 및 데이터 전송에 대한 요금은 부과되지 않습니다. 그러나 사용 패턴이 고객에게 적절하게 요금을 부과할 능력에 영향을 미치는 경우, 추가 데이터 전송 요금 차원을 설정할 권리를 보유합니다.
+
+참고: Private Link/Private Service Connect 사용에 대한 Cloud Service Provider (CSP) 요금이 적용됩니다. 가장 최신 정보는 CSP의 요금 페이지를 참조하시기 바랍니다.
+
+데이터 전송 요금은 Cloud Service Provider (CSP)와 지역에 따라 다릅니다. 공용 인터넷 송신 요금은 출발 지역에만 기반합니다. 지역 간(또는 교차 지역) 요금은 출발 및 도착 지역 모두에 따라 달라집니다.
+
+**데이터 전송 비용 최소화를 위한 모범 사례**
+
+데이터 수신 및 송신 시 데이터 전송 비용을 최소화하기 위해 염두에 두어야 할 몇 가지 패턴이 있습니다.
+
+1. Clickhouse Cloud에서 데이터를 수신하거나 송신할 때, 가능한 경우 압축을 사용하여 전송되는 데이터 양과 관련된 비용을 최소화하세요.
+
+2. 비인라인 값을 사용하여 네이티브 프로토콜을 통해 INSERT를 수행할 때 (예: `INSERT INTO [TABLE] FROM INFILE [FILE] FORMAT NATIVE`), ClickHouse 클라이언트가 메타데이터를 서버에서 가져와 데이터를 패킹한다는 점을 인지하세요. 메타데이터가 `INSERT` 페이로드보다 클 경우, 서버 관점에서 수신보다 송신이 더 많아지는 기이한 현상이 발생할 수 있습니다. 이것이 용납할 수 없는 경우, `VALUES` 구문으로 데이터를 인라인하거나 HTTP 프로토콜을 사용하는 것을 고려하세요.
+
+아래 표는 공용 인터넷 또는 지역 간 데이터 전송에 대한 송신 요금이 클라우드 제공자 및 지역에 따라 어떻게 달라지는지를 보여줍니다.
+
+:::note
+ClickHouse Cloud는 출발 지역과 도착 지역에 따라 Tier 1에서 Tier 4까지의 계층으로 지역 간 사용량을 측정합니다. 아래 표는 지역 간 데이터 전송의 각 조합에 대한 계층을 보여줍니다. ClickHouse Cloud의 청구 사용 화면에서는 계층별로 구분된 데이터 전송 사용량을 확인할 수 있습니다.
+:::
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/04_network-data-transfer.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/04_network-data-transfer.mdx.hash
new file mode 100644
index 00000000000..026bc3b7fb7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/04_network-data-transfer.mdx.hash
@@ -0,0 +1 @@
+980bb7ee1608d27e
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/05_payment-thresholds.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/05_payment-thresholds.md
new file mode 100644
index 00000000000..4753f6e4777
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/05_payment-thresholds.md
@@ -0,0 +1,25 @@
+---
+'sidebar_label': '지불 기준선'
+'slug': '/cloud/billing/payment-thresholds'
+'title': '지불 기준선'
+'description': '지불 기준선과 ClickHouse Cloud에 대한 자동 송장 발행.'
+'keywords':
+- 'billing'
+- 'payment thresholds'
+- 'automatic invoicing'
+- 'invoice'
+'doc_type': 'guide'
+---
+
+
+# 결제 한도
+
+ClickHouse Cloud의 청구 기간 동안 청구 금액이 $10,000 USD 또는 이에 상응하는 금액에 도달하면 귀하의 결제 방법이 자동으로 청구됩니다. 청구 실패 시 유예 기간 후 귀하의 서비스가 중단되거나 종료될 수 있습니다.
+
+:::note
+이 결제 한도는 약정 지출 계약이나 ClickHouse와의 기타 협상된 계약을 체결한 고객에게는 적용되지 않습니다.
+:::
+
+조직에서 결제 한도의 90%에 도달하고 청구 기간 중 한도를 초과할 가능성이 있는 경우, 해당 조직과 연결된 청구 이메일 주소로 이메일 알림이 전송됩니다. 결제 한도를 초과하면 이메일 알림 및 청구서도 수신하게 됩니다.
+
+이 결제 한도는 고객의 요청이나 ClickHouse 재무팀에 의해 $10,000 이하로 조정될 수 있습니다. 궁금한 점이 있으시면 support@clickhouse.com으로 문의해 주시기 바랍니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/05_payment-thresholds.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/05_payment-thresholds.md.hash
new file mode 100644
index 00000000000..95fa0f1c81a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/05_payment-thresholds.md.hash
@@ -0,0 +1 @@
+820df877a9386941
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/06_billing_compliance.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/06_billing_compliance.md
new file mode 100644
index 00000000000..8dc8ce382ef
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/06_billing_compliance.md
@@ -0,0 +1,92 @@
+---
+'sidebar_label': 'ClickHouse Cloud 청구 준수'
+'slug': '/manage/clickhouse-cloud-billing-compliance'
+'title': 'ClickHouse Cloud 청구 준수'
+'description': 'ClickHouse Cloud 청구 준수에 대한 페이지 설명'
+'keywords':
+- 'billing compliance'
+- 'pay-as-you-go'
+'doc_type': 'guide'
+---
+
+import billing_compliance from '@site/static/images/cloud/manage/billing_compliance.png';
+import Image from '@theme/IdealImage';
+
+
+
+# ClickHouse Cloud 청구 준수
+
+## 청구 준수 {#billing-compliance}
+
+ClickHouse Cloud를 사용하려면 조직에 활성화된 유효한 청구 방법이 설정되어 있어야 합니다. 30일 무료 체험이 종료되거나 체험 크레딧이 소진될 경우, 먼저 발생하는 경우에 ClickHouse Cloud를 계속 사용하기 위해 다음의 청구 옵션이 있습니다:
+
+| 청구 옵션 | 설명 |
+|------------------------------------------------------|-------------------------------------------------------------------------------------------|
+| [직접 PAYG](#direct-payg) | Pay-As-You-Go를 위해 조직에 유효한 신용 카드를 추가하세요. |
+| [마켓플레이스 PAYG](#cloud-marketplace-payg) | 지원되는 클라우드 마켓플레이스 제공자를 통해 Pay-As-You-Go 구독을 설정하세요. |
+| [약정 지출 계약](#committed-spend-contract) | 지원되는 클라우드 마켓플레이스를 통해 직접 또는 간접적으로 약정 지출 계약을 체결하세요. |
+
+체험이 종료되고 조직에 대해 청구 옵션이 설정되지 않은 경우, 모든 서비스가 중지됩니다. 두 주 후에도 여전히 청구 방법이 설정되지 않으면 모든 데이터가 삭제됩니다.
+
+ClickHouse는 조직 수준에서 서비스에 대해 요금을 청구합니다. 현재 청구 방법으로 결제가 처리되지 않는 경우, 서비스 중단을 피하기 위해 위의 세 가지 옵션 중 하나로 갱신해야 합니다. 선택한 청구 방법에 따른 결제 준수에 대한 자세한 내용은 아래를 참조하세요.
+
+### 신용 카드로 Pay-as-you-go 청구하기 {#direct-payg}
+
+신용 카드를 사용하여 ClickHouse Cloud 사용료를 월 단위로 후불 결제할 수 있습니다. 신용 카드를 추가하려면 [이 지침](#add-credit-card)을 따르세요.
+
+ClickHouse의 월별 청구 주기는 조직 수준(기본, 확장 또는 기업) 선택일과 조직 내에서 첫 번째 서비스가 생성된 날부터 시작됩니다.
+
+등록된 신용 카드에는 일반적으로 월별 청구 주기 종료 시에 요금이 청구되지만, 인트라 사이클 금액이 $10,000 USD에 도달하면 결제 요금이 가속화됩니다 (결제 한도에 대한 추가 정보는 [여기](../billing/payment-thresholds)를 참조하세요).
+
+파일에 등록된 신용 카드는 유효해야 하며, 만료되지 않아야 하며 송장 총액을 충당할 수 있는 충분한 신용이 있어야 합니다. 어떤 이유로든 전체 금액을 청구할 수 없는 경우, 다음의 미결 송장 제한이 즉시 적용됩니다:
+
+* 복제본당 최대 120 GiB까지 확장할 수 있습니다.
+* 서비스가 중지된 경우 시작할 수 없습니다.
+* 새 서비스를 시작하거나 생성할 수 없습니다.
+
+우리는 조직에 설정된 청구 방법을 사용하여 최대 30일간 결제를 처리하려고 합니다. 14일이 지나도록 결제가 성공하지 않으면 조직 내 모든 서비스가 중지됩니다. 이 30일 기간이 끝난 후에도 여전히 결제가 이루어지지 않으며 연장이 허용되지 않은 경우, 귀하의 조직과 관련된 모든 데이터와 서비스가 삭제됩니다.
+
+### 클라우드 마켓플레이스 Pay-as-you-go 청구하기 {#cloud-marketplace-payg}
+
+Pay-As-You-Go 청구는 지원되는 클라우드 마켓플레이스 중 하나 (AWS, GCP 또는 Azure)를 통해 조직에 청구되도록 설정할 수도 있습니다. 마켓플레이스 PAYG 청구에 가입하려면 [이 지침](#marketplace-payg)을 따르세요.
+
+직접 PAYG를 통한 청구와 유사하게, 마켓플레이스 PAYG를 통해 ClickHouse의 월별 청구 주기는 조직 수준(기본, 확장 또는 기업) 선택일과 조직 내에서 첫 번째 서비스가 생성된 날부터 시작됩니다.
+
+그러나 마켓플레이스의 요구 사항 때문에 사용한 Pay-As-You-Go 요금이 시간 단위로 보고됩니다. 그 마켓플레이스와의 계약 조건에 따라 송장이 발행되므로 일반적으로 캘린더 월 청구 주기를 따릅니다.
+
+예를 들어, 1월 18일에 첫 번째 조직 서비스가 생성되면 ClickHouse Cloud의 첫 번째 청구 사용 주기는 1월 18일부터 2월 17일 종료일까지입니다. 그러나 클라우드 마켓플레이스에서 첫 송장을 2월 초에 받을 수 있습니다.
+
+만약 PAYG 마켓플레이스 구독이 취소되거나 자동 갱신에 실패하면, 조직의 등록된 신용 카드로 청구됩니다. 신용 카드를 추가하려면 도움을 받기 위해 [지원팀에 문의](/about-us/support)하시기 바랍니다. 유효한 신용 카드가 제공되지 않으면, [직접 PAYG](#direct-payg)에 대해 설명한 미결 송장 제한이 적용됩니다 - 이에는 서비스 중단 및 데이터 삭제가 포함됩니다.
+
+### 약정 계약 청구 {#committed-spend-contract}
+
+약정 계약을 통해 조직을 위한 크레딧을 구매할 수 있습니다:
+
+1. ACH 또는 wire transfer를 포함한 결제 옵션으로 직접 크레딧을 구매하기 위해 영업팀에 문의하세요. 결제 조건은 적용 가능한 주문서에 명시됩니다.
+2. 지원되는 클라우드 마켓플레이스 중 하나 (AWS, GCP 또는 Azure)에서 구독을 통해 크레딧을 구매하기 위해 영업팀에 문의하세요. 요금은 비공식 제안을 수락하면 해당 마켓플레이스에 보고되며, 그 이후에는 제안 조건에 따라 보고되지만, 마켓플레이스와의 계약 조건에 따라 송장이 발행됩니다. 마켓플레이스를 통해 결제하려면 [이 지침](#marketplace-payg)을 따르세요.
+
+조직에 적용된 크레딧 (예: 약정 계약 또는 환불을 통해)은 주문서 또는 수락된 비공식 제안에서 지정된 기간 동안 사용 가능합니다.
+크레딧은 청구 기간이 시작된 날부터 소모가 시작되며, 이는 첫 번째 조직 수준(기본, 확장 또는 기업)을 선택한 날짜를 기준으로 합니다.
+
+조직이 **클라우드 마켓플레이스 약정 계약에 없다면** 크레딧이 소진되거나 만료되면 조직은 자동으로 Pay-As-You-Go (PAYG) 청구로 전환됩니다. 이 경우, 조직에 등록된 신용 카드를 사용하여 결제를 시도할 것입니다.
+
+조직이 **클라우드 마켓플레이스 약정 계약이 있다면** 크레딧이 소진되면, 같은 마켓플레이스를 통해 구독의 나머지 기간 동안 자동으로 PAYG 청구로 전환됩니다. 다만, 구독이 갱신되지 않고 만료되면, 등록된 신용 카드를 사용하여 결제를 시도할 것입니다.
+
+어느 경우든지 간에, 설정된 신용 카드로 청구할 수 없는 경우, 신용 카드로 Pay-as-you-go (PAYG) 청구와 관련하여 위에서 설명한 미결 송장 제한이 적용됩니다 - 여기에는 서비스 간섭이 포함됩니다. 약정 계약에서 PAYG 청구로 전환하는 더 많은 정보는 우리의 [이용약관](https://clickhouse.com/legal/agreements/terms-of-service)에서 “과도 소비” 섹션을 참고해 주시기 바랍니다. 그러나 약정 계약 고객의 경우, 데이터 삭제를 시작하기 전에 미결 송장에 대해 연락을 드릴 것입니다. 데이터는 시간이 지나도 자동으로 삭제되지 않습니다.
+
+기존의 크레딧이 만료되거나 소진되기 전에 추가 크레딧을 추가하고자 하시면, [저희에게 문의](https://clickhouse.com/company/contact)해 주시기 바랍니다.
+
+### 신용 카드로 결제하는 방법 {#add-credit-card}
+
+ClickHouse Cloud UI의 청구 섹션으로 가서 '신용 카드 추가' 버튼(아래에 표시됨)을 클릭하여 설정을 완료하세요. 질문이 있는 경우, 도움을 받기 위해 [지원팀에 문의](/about-us/support)하시기 바랍니다.
+
+
+
+## 마켓플레이스를 통한 결제 방법 {#marketplace-payg}
+
+지원되는 마켓플레이스 (AWS, GCP 또는 Azure) 중 하나를 통해 결제하고자 하신다면, [여기](/cloud/marketplace/marketplace-billing)의 단계를 따르세요. 클라우드 마켓플레이스 청구와 관련된 특정 질문이 있는 경우, 클라우드 서비스 제공자에게 직접 문의하시기 바랍니다.
+
+마켓플레이스 청구 문제를 해결하기 위한 유용한 링크:
+* [AWS 청구 FAQ](https://aws.amazon.com/aws-cost-management/aws-billing/faqs/)
+* [GCP 청구 FAQ](https://cloud.google.com/compute/docs/billing-questions)
+* [Azure 청구 FAQ](https://learn.microsoft.com/en-us/azure/cost-management-billing/cost-management-billing-faq)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/06_billing_compliance.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/06_billing_compliance.md.hash
new file mode 100644
index 00000000000..1db86927c05
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/06_billing_compliance.md.hash
@@ -0,0 +1 @@
+9fd32185e7c4c8f0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/index.md
new file mode 100644
index 00000000000..989651eb74b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/index.md
@@ -0,0 +1,22 @@
+---
+'slug': '/cloud/manage/billing'
+'title': '청구'
+'description': '청구를 위한 목차 페이지.'
+'keywords':
+- 'billing'
+- 'payment thresholds'
+- 'trouble shooting'
+- 'marketplace'
+'doc_type': 'landing-page'
+---
+
+이 문서의 이 섹션에서는 청구와 관련된 주제를 다루며, 다음 페이지가 포함되어 있습니다:
+
+| 페이지 | 설명 |
+|---------------------------------------|----------------------------------------------------------------------|
+| [개요](/cloud/manage/billing/overview) | 청구에 대한 가격 예시 및 FAQ. |
+| [지불 한도](/cloud/billing/payment-thresholds) | 지불 한도가 어떻게 작동하는지 및 조정하는 방법에 대해 알아보세요. |
+| [청구 문제 해결](/manage/clickhouse-cloud-billing-compliance) | 일반적인 청구 문제를 해결하세요. |
+| [마켓플레이스](/cloud/manage/marketplace/) | 기타 마켓플레이스 관련 주제의 랜딩 페이지. |
+
+https://clickhouse.com/docs/cloud/
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/index.md.hash
new file mode 100644
index 00000000000..52ad714b10b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/03_billing/index.md.hash
@@ -0,0 +1 @@
+62006ea61fa2d3a0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/05_supported-regions.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/05_supported-regions.md
new file mode 100644
index 00000000000..94ed55392f6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/05_supported-regions.md
@@ -0,0 +1,118 @@
+---
+'title': '지원되는 클라우드 지역'
+'sidebar_label': '지원되는 클라우드 지역'
+'keywords':
+- 'aws'
+- 'gcp'
+- 'google cloud'
+- 'azure'
+- 'cloud'
+- 'regions'
+'description': 'ClickHouse Cloud를 위한 지원되는 지역'
+'slug': '/cloud/reference/supported-regions'
+'doc_type': 'reference'
+---
+
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge'
+
+
+# 지원되는 클라우드 지역
+
+## AWS 지역 {#aws-regions}
+
+- ap-northeast-1 (도쿄)
+- ap-northeast-2 (대한민국, 서울)
+- ap-south-1 (뭄바이)
+- ap-southeast-1 (싱가포르)
+- ap-southeast-2 (시드니)
+- eu-central-1 (프랑크푸르트)
+- eu-west-1 (아일랜드)
+- eu-west-2 (런던)
+- me-central-1 (UAE)
+- us-east-1 (노스 버지니아)
+- us-east-2 (오하이오)
+- us-west-2 (오리건)
+
+**프라이빗 지역:**
+- ca-central-1 (캐나다)
+- af-south-1 (남아프리카)
+- eu-north-1 (스톡홀름)
+- sa-east-1 (남아메리카)
+
+## Google Cloud 지역 {#google-cloud-regions}
+
+- asia-southeast1 (싱가포르)
+- asia-northeast1 (도쿄)
+- europe-west4 (네덜란드)
+- us-central1 (아이오와)
+- us-east1 (사우스캐롤라이나)
+
+**프라이빗 지역:**
+
+- us-west1 (오리건)
+- australia-southeast1 (시드니)
+- europe-west3 (프랑크푸르트)
+- europe-west6 (취리히)
+- northamerica-northeast1 (몬트리올)
+
+## Azure 지역 {#azure-regions}
+
+- West US 3 (애리조나)
+- East US 2 (버지니아)
+- Germany West Central (프랑크푸르트)
+
+**프라이빗 지역:**
+
+- JapanEast
+
+:::note
+현재 목록에 없는 지역에 배포해야 합니까? [요청하기](https://clickhouse.com/pricing?modal=open).
+:::
+
+## 프라이빗 지역 {#private-regions}
+
+
+
+우리는 엔터프라이즈 계층 서비스에 대해 프라이빗 지역을 제공합니다. 프라이빗 지역 요청은 [연락해 주세요](https://clickhouse.com/company/contact).
+
+프라이빗 지역에 대한 핵심 고려 사항:
+- 서비스는 자동 확장되지 않으며, 수동 수직 및 수평 확장이 지원됩니다.
+- 서비스는 유휴 상태가 될 수 없습니다.
+- 프라이빗 지역에 대한 상태 페이지는 제공되지 않습니다.
+
+HIPAA 준수를 위한 추가 요구 사항이 적용될 수 있습니다(BAA 서명 포함). HIPAA는 현재 엔터프라이즈 계층 서비스에서만 사용할 수 있습니다.
+
+## HIPAA 준수 지역 {#hipaa-compliant-regions}
+
+
+
+고객은 HIPAA 준수 지역에 서비스를 설정하기 위해 사업 파트너 계약(Business Associate Agreement, BAA)에 서명하고 영업 또는 지원을 통해 온boarding 요청을 해야 합니다. 다음 지역은 HIPAA 준수를 지원합니다:
+- AWS af-south-1 (남아프리카) **프라이빗 지역**
+- AWS ca-central-1 (캐나다) **프라이빗 지역**
+- AWS eu-central-1 (프랑크푸르트)
+- AWS eu-north-1 (스톡홀름) **프라이빗 지역**
+- AWS eu-west-1 (아일랜드)
+- AWS eu-west-2 (런던)
+- AWS sa-east-1 (남아메리카) **프라이빗 지역**
+- AWS us-east-1 (노스 버지니아)
+- AWS us-east-2 (오하이오)
+- AWS us-west-2 (오리건)
+- GCP europe-west4 (네덜란드)
+- GCP us-central1 (아이오와)
+- GCP us-east1 (사우스캐롤라이나)
+
+## PCI 준수 지역 {#pci-compliant-regions}
+
+
+
+고객은 PCI 준수 지역에 서비스를 설정하기 위해 영업 또는 지원을 통해 온boarding 요청을 해야 합니다. 다음 지역은 PCI 준수를 지원합니다:
+- AWS af-south-1 (남아프리카) **프라이빗 지역**
+- AWS ca-central-1 (캐나다) **프라이빗 지역**
+- AWS eu-central-1 (프랑크푸르트)
+- AWS eu-north-1 (스톡홀름) **프라이빗 지역**
+- AWS eu-west-1 (아일랜드)
+- AWS eu-west-2 (런던)
+- AWS sa-east-1 (남아메리카) **프라이빗 지역**
+- AWS us-east-1 (노스 버지니아)
+- AWS us-east-2 (오하이오)
+- AWS us-west-2 (오리건)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/05_supported-regions.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/05_supported-regions.md.hash
new file mode 100644
index 00000000000..64fc89d13b7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/05_supported-regions.md.hash
@@ -0,0 +1 @@
+a3854f8225b9cc23
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/06_service-uptime.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/06_service-uptime.md
new file mode 100644
index 00000000000..422f91e18ce
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/06_service-uptime.md
@@ -0,0 +1,21 @@
+---
+'sidebar_label': '서비스 가용성 및 SLA'
+'slug': '/cloud/manage/service-uptime'
+'title': '서비스 가용성'
+'description': '사용자는 이제 상태 페이지에서 지역별 가용성을 확인하고 서비스 중단에 대한 알림을 구독할 수 있습니다.'
+'keywords':
+- 'ClickHouse Cloud'
+- 'service uptime'
+- 'SLA'
+- 'cloud reliability'
+- 'status monitoring'
+'doc_type': 'reference'
+---
+
+## Uptime alerts {#uptime-alerts}
+
+사용자는 이제 [상태 페이지](https://status.clickhouse.com/)에서 지역별 가동 시간을 확인하고 서비스 중단에 대한 알림을 구독할 수 있습니다.
+
+## SLA {#sla}
+
+우리는 또한 특정 약정 지출 계약에 대한 서비스 수준 계약(SLA)을 제공합니다. SLA 정책에 대해 더 알아보려면 [sales@clickhouse.com](mailto:sales@clickhouse.com)으로 문의하시기 바랍니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/06_service-uptime.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/06_service-uptime.md.hash
new file mode 100644
index 00000000000..42877ba6a5a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/06_service-uptime.md.hash
@@ -0,0 +1 @@
+9be1223902dd08b6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/08_settings.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/08_settings.md
new file mode 100644
index 00000000000..00b99dd2c3b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/08_settings.md
@@ -0,0 +1,27 @@
+---
+'sidebar_label': '설정 구성하기'
+'slug': '/manage/settings'
+'title': '설정 구성하기'
+'description': '특정 사용자 또는 역할을 위한 ClickHouse Cloud 서비스의 설정을 구성하는 방법'
+'keywords':
+- 'ClickHouse Cloud'
+- 'settings configuration'
+- 'cloud settings'
+- 'user settings'
+- 'role settings'
+'doc_type': 'guide'
+---
+
+import Image from '@theme/IdealImage';
+import cloud_settings_sidebar from '@site/static/images/cloud/manage/cloud-settings-sidebar.png';
+
+
+# 설정 구성
+
+특정 [사용자](/operations/access-rights#user-account-management) 또는 [역할](/operations/access-rights#role-management)에 대한 ClickHouse Cloud 서비스의 설정을 지정하려면 [SQL 기반 설정 프로파일](/operations/access-rights#settings-profiles-management)을 사용해야 합니다. 설정 프로파일을 적용하면 서비스를 중단하거나 유휴 상태가 되거나 업그레이드할 때에도 구성한 설정이 유지됩니다. 설정 프로파일에 대한 자세한 내용은 [이 페이지](/operations/settings/settings-profiles.md)를 참조하십시오.
+
+현재 ClickHouse Cloud에서는 XML 기반 설정 프로파일과 [구성 파일](/operations/configuration-files.md)을 지원하지 않는다는 점에 유의하십시오.
+
+ClickHouse Cloud 서비스에 대해 지정할 수 있는 설정에 대한 자세한 내용은 [우리 문서](/operations/settings)에서 카테고리별로 가능한 모든 설정을 확인하십시오.
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/08_settings.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/08_settings.md.hash
new file mode 100644
index 00000000000..afa675c500a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/08_settings.md.hash
@@ -0,0 +1 @@
+4e5448e892f50136
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/01_console-roles.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/01_console-roles.md
new file mode 100644
index 00000000000..949ef0626b9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/01_console-roles.md
@@ -0,0 +1,43 @@
+---
+'sidebar_label': '콘솔 역할 및 권한'
+'slug': '/cloud/security/console-roles'
+'title': '콘솔 역할 및 권한'
+'description': '이 페이지는 ClickHouse Cloud 콘솔의 표준 역할 및 관련 권한을 설명합니다.'
+'doc_type': 'reference'
+'keywords':
+- 'console roles'
+- 'permissions'
+- 'access control'
+- 'security'
+- 'rbac'
+---
+
+## Organization roles {#organization-roles}
+[클라우드 사용자 관리하기](/cloud/security/manage-cloud-users)를 참조하여 조직 역할을 할당하는 방법에 대한 지침을 확인하세요.
+
+ClickHouse에는 사용자 관리를 위한 네 가지 조직 수준 역할이 있습니다. admin 역할만 기본 서비스 접근 권한이 있으며, 다른 모든 역할은 서비스와 상호작용하기 위해 서비스 수준 역할과 결합해야 합니다.
+
+| 역할 | 설명 |
+|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Admin | 조직의 모든 관리 활동을 수행하고 모든 설정을 제어합니다. 이 역할은 기본적으로 조직의 첫 번째 사용자에게 할당되며 모든 서비스에서 Service Admin 권한을 자동으로 가집니다. |
+| Developer | 조직에 대한 조회 접근 권한과 동일한 권한 또는 낮은 권한으로 API 키를 생성할 수 있는 능력이 있습니다. |
+| Billing | 사용량 및 청구서를 조회하고 결제 방법을 관리합니다. |
+| Member | 개인 프로필 설정 관리 기능이 있는 로그인만 가능하며, 기본적으로 SAML SSO 사용자에게 할당됩니다. |
+
+## Service roles {#service-roles}
+[클라우드 사용자 관리하기](/cloud/security/manage-cloud-users)를 참조하여 서비스 역할을 할당하는 방법에 대한 지침을 확인하세요.
+
+서비스 권한은 admin이 아닌 기타 역할의 사용자에게 명시적으로 부여되어야 합니다. Service Admin은 SQL 콘솔 관리자 접근 권한으로 사전 구성되어 있지만, 권한을 줄이거나 제거하기 위해 수정할 수 있습니다.
+
+| 역할 | 설명 |
+|-------------------|---------------------|
+| Service read only | 서비스 및 설정을 조회합니다. |
+| Service admin | 서비스 설정을 관리합니다. |
+
+## SQL console roles {#sql-console-roles}
+[SQL 콘솔 역할 할당 관리하기](/cloud/guides/sql-console/manage-sql-console-role-assignments)를 참조하여 SQL 콘솔 역할을 할당하는 방법에 대한 지침을 확인하세요.
+
+| 역할 | 설명 |
+|-----------------------|-----------------------------------------------------------------------------------------|
+| SQL console read only | 서비스 내 데이터베이스에 대한 읽기 전용 접근 권한입니다. |
+| SQL console admin | 기본 데이터베이스 역할에 해당하는 서비스 내 데이터베이스에 대한 관리 접근 권한입니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/01_console-roles.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/01_console-roles.md.hash
new file mode 100644
index 00000000000..303a08cbc69
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/01_console-roles.md.hash
@@ -0,0 +1 @@
+b1570dae00c2e162
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/02_audit-logging.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/02_audit-logging.md
new file mode 100644
index 00000000000..ac2c3ba829a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/02_audit-logging.md
@@ -0,0 +1,44 @@
+---
+'sidebar_label': '콘솔 감사 로그 이벤트'
+'slug': '/cloud/security/audit-logging'
+'title': '콘솔 감사 로그 이벤트'
+'description': '이 페이지는 콘솔 감사 로그에 기록되는 이벤트를 설명합니다.'
+'doc_type': 'reference'
+'keywords':
+- 'audit logging'
+- 'security'
+- 'compliance'
+- 'logs'
+- 'monitoring'
+---
+
+## Console audit log events {#console-audit-log-events}
+
+조직에 대해 기록되는 다양한 유형의 이벤트는 **조직**, **서비스** 및 **사용자**의 3가지 범주로 그룹화됩니다. 감사 로그에 대한 더 많은 정보와 API 통합을 내보내거나 추가하는 방법에 대해서는 위의 가이드 섹션에서 [console audit log](/cloud/security/audit-logging/console-audit-log) 문서를 참조하십시오.
+
+감사 로그에 기록되는 이벤트는 다음과 같습니다.
+
+### Organization {#organization}
+
+- 조직이 생성되었습니다.
+- 조직이 삭제되었습니다.
+- 조직 이름이 변경되었습니다.
+
+### Service {#service}
+
+- 서비스가 생성되었습니다.
+- 서비스가 삭제되었습니다.
+- 서비스가 중지되었습니다.
+- 서비스가 시작되었습니다.
+- 서비스 이름이 변경되었습니다.
+- 서비스 IP 접근 목록이 변경되었습니다.
+- 서비스 비밀번호가 재설정되었습니다.
+
+### User {#user}
+
+- 사용자 역할이 변경되었습니다.
+- 사용자가 조직에서 삭제되었습니다.
+- 사용자에게 조직 초대가 전송되었습니다.
+- 사용자가 조직에 가입하였습니다.
+- 사용자 초대가 삭제되었습니다.
+- 사용자가 조직을 떠났습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/02_audit-logging.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/02_audit-logging.md.hash
new file mode 100644
index 00000000000..3d98108359b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/02_audit-logging.md.hash
@@ -0,0 +1 @@
+be5df374f130bef4
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/03_compliance-overview.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/03_compliance-overview.md
new file mode 100644
index 00000000000..6d241141218
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/03_compliance-overview.md
@@ -0,0 +1,57 @@
+---
+'title': '준수 개요'
+'slug': '/cloud/security/compliance-overview'
+'description': 'ClickHouse Cloud 보안 및 준수 인증 개요, SOC 2, ISO 27001, U.S. DPF, 및 HIPAA
+ 포함'
+'doc_type': 'reference'
+'keywords':
+- 'ClickHouse Cloud'
+- 'SOC 2 Type II'
+- 'ISO 27001'
+- 'HIPAA'
+- 'U.S. DPF'
+- 'PCI'
+---
+
+import BetaBadge from '@theme/badges/BetaBadge';
+import EnterprisePlanFeatureBadge from '@theme/badges/EnterprisePlanFeatureBadge';
+
+
+# 보안 및 컴플라이언스 보고서
+ClickHouse는 고객의 보안 및 컴플라이언스 요구 사항을 평가하고 있으며, 추가 보고서 요청에 따라 프로그램을 지속적으로 확장하고 있습니다. 추가 정보 또는 보고서를 다운로드하려면 [신뢰 센터](https://trust.clickhouse.com)를 방문하십시오.
+
+## SOC 2 Type II (2022년부터) {#soc-2-type-ii-since-2022}
+
+시스템 및 조직 제어(SOC) 2는 보안, 가용성, 기밀성, 처리 무결성 및 개인 정보 보호 기준에 초점을 맞춘 보고서로, 신뢰 서비스 기준(TSC)에 적용되는 조직의 시스템을 기준으로 하며, 이러한 제어에 대한 보증을 의존하는 당사자(우리 고객)에게 제공하기 위해 설계되었습니다. ClickHouse는 독립적인 외부 감사인과 협력하여 보안, 가용성 및 시스템의 처리 무결성, 그리고 우리 시스템에서 처리되는 데이터의 기밀성과 개인 정보 보호를 다루는 감사를 매년 최소 한 번 수행합니다. 이 보고서는 우리의 ClickHouse Cloud와 Bring Your Own Cloud (BYOC) 제공 모두를 다룹니다.
+
+## ISO 27001 (2023년부터) {#iso-27001-since-2023}
+
+국제 표준화 기구(ISO) 27001은 정보 보안에 대한 국제 표준입니다. 이 표준은 기업이 위험 관리, 정책 수립 및 커뮤니케이션, 보안 제어 구현, 및 구성 요소가 관련성을 유지하고 효과적임을 보장하기 위한 모니터링을 포함하는 정보 보안 관리 시스템(ISMS)을 구현할 것을 요구합니다. ClickHouse는 내부 감사를 수행하고 독립적인 외부 감사인과 협력하여 인증서 발급 간의 2년간 감사 및 중간 검사를 수행합니다.
+
+## 미국 데이터 개인 정보 보호 프레임워크 (2024년부터) {#us-dpf-since-2024}
+
+미국 데이터 개인 정보 보호 프레임워크는 유럽 연합/유럽 경제 지역, 영국 및 스위스에서 미국으로의 개인 데이터 전송을 위한 신뢰할 수 있는 메커니즘을 제공하기 위해 개발되었습니다. 이는 EU, UK 및 스위스 법률과 일치합니다 (https://dataprivacyframework.gov/Program-Overview). ClickHouse는 프레임워크에 대해 자가 인증을 수행하였으며 [데이터 개인 정보 보호 프레임워크 목록](https://dataprivacyframework.gov/list)에 등재되었습니다.
+
+## HIPAA (2024년부터) {#hipaa-since-2024}
+
+
+
+1996년의 건강 보험 이동성 및 책임 법(HIPAA)은 보호된 건강 정보(PHI) 관리에 중점을 둔 미국 기반의 개인 정보 보호 법률입니다. HIPAA에는 전자 개인 건강 정보(ePHI)를 보호하는 데 중점을 두는 [보안 규칙](https://www.hhs.gov/hipaa/for-professionals/security/index.html) 등 여러 요구 사항이 있습니다. ClickHouse는 지정 서비스에 저장된 ePHI의 기밀성, 무결성 및 보안을 보장하기 위해 관리적, 물리적 및 기술적 안전 장치를 구현하였습니다. 이러한 활동은 우리 [신뢰 센터](https://trust.clickhouse.com)에서 다운로드할 수 있는 SOC 2 Type II 보고서에 포함되어 있습니다.
+
+비즈니스 제휴 계약(Business Associate Agreement, BAA)을 완료하고 HIPAA 준수 서비스를 배포하는 단계에 대한 정보는 [HIPAA 온보딩](//cloud/security/compliance/hipaa-onboarding)을 참조하십시오.
+
+## PCI 서비스 제공자 (2025년부터) {#pci-service-provider-since-2025}
+
+
+
+[결제 카드 산업 데이터 보안 표준(PCI DSS)](https://www.pcisecuritystandards.org/standards/pci-dss/)은 신용 카드 결제 데이터를 보호하기 위해 PCI 보안 표준 협의회가 만든 일련의 규칙입니다. ClickHouse는 신용 카드 데이터를 저장하는 것과 관련하여 PCI 기준에 대한 준수 보고서(Report on Compliance, ROC)가 통과된 자격 있는 보안 평가자(QSA)와의 외부 감사를 수행하였습니다. 우리의 준수 확인서(Attestation on Compliance, AOC) 및 PCI 책임 개요를 다운로드하려면 [신뢰 센터](https://trust.clickhouse.com)를 방문하십시오.
+
+PCI 준수 서비스를 배포하기 위한 단계에 대한 정보는 [PCI 온보딩](//cloud/security/compliance/pci-onboarding)을 참조하십시오.
+
+## 개인정보 보호 컴플라이언스 {#privacy-compliance}
+
+위 항목 외에도 ClickHouse는 일반 데이터 보호 규정(GDPR), 캘리포니아 소비자 개인정보 보호법(CCPA) 및 기타 관련 개인정보 보호 프레임워크를 다루는 내부 컴플라이언스 프로그램을 유지하고 있습니다.
+
+## 결제 컴플라이언스 {#payment-compliance}
+
+ClickHouse는 [PCI SAQ A v4.0](https://www.pcisecuritystandards.org/document_library/)에 준수하는 신용 카드 결제 방법을 제공하니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/03_compliance-overview.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/03_compliance-overview.md.hash
new file mode 100644
index 00000000000..82a076aa550
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/03_compliance-overview.md.hash
@@ -0,0 +1 @@
+2143b5f79110f9ee
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/_category_.json b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/_category_.json
new file mode 100644
index 00000000000..aed26fa7f7a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/09_security/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Security",
+ "collapsible": true,
+ "collapsed": true,
+}
\ No newline at end of file
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/10_personal-data-access.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/10_personal-data-access.md
new file mode 100644
index 00000000000..76daeb9e39e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/10_personal-data-access.md
@@ -0,0 +1,70 @@
+---
+'sidebar_label': '개인 데이터 접근'
+'slug': '/cloud/manage/personal-data-access'
+'title': '개인 데이터 접근'
+'description': '등록된 사용자로서, ClickHouse는 연락처 정보를 포함한 개인 계정 데이터를 보고 관리할 수 있도록 허용합니다.'
+'doc_type': 'reference'
+'keywords':
+- 'ClickHouse Cloud'
+- 'personal data'
+- 'DSAR'
+- 'data subject access request'
+- 'privacy policy'
+- 'GDPR'
+---
+
+import Image from '@theme/IdealImage';
+import support_case_form from '@site/static/images/cloud/security/support-case-form.png';
+
+## Intro {#intro}
+
+등록된 사용자로서, ClickHouse는 연락처 정보를 포함한 개인 계정 데이터를 보고 관리할 수 있도록 허용합니다. 귀하의 역할에 따라, 이는 귀하 조직의 다른 사용자의 연락처 정보, API 키 세부정보 및 기타 관련 정보에 대한 접근을 포함할 수 있습니다. 이러한 세부정보는 ClickHouse 콘솔을 통해 자가 서비스 방식으로 직접 관리할 수 있습니다.
+
+**데이터 주체 접근 요청 (DSAR)이란 무엇인가요?**
+
+귀하가 위치한 곳에 따라, 해당 법률은 ClickHouse가 귀하에 대해 보유하고 있는 개인 데이터에 대한 추가 권리를 제공할 수 있습니다 (데이터 주체 권리), 이는 ClickHouse 개인정보 보호 정책에 설명되어 있습니다. 데이터 주체 권리를 행사하는 과정은 데이터 주체 접근 요청 (DSAR)으로 알려져 있습니다.
+
+**개인 데이터의 범위**
+
+ClickHouse가 수집하는 개인 데이터와 이를 어떻게 사용할 수 있는지에 대한 자세한 내용은 ClickHouse 개인정보 보호 정책을 검토하시기 바랍니다.
+
+## Self service {#self-service}
+
+기본적으로, ClickHouse는 사용자가 ClickHouse 콘솔에서 직접 자신의 개인 데이터를 볼 수 있도록 권한을 부여합니다.
+
+아래는 ClickHouse가 계정 설정 및 서비스 사용 중 수집하는 데이터 요약과 ClickHouse 콘솔에서 특정 개인 데이터를 볼 수 있는 위치에 대한 정보입니다.
+
+| Location/URL | Description | Personal Data |
+|-------------|----------------|-----------------------------------------|
+| https://auth.clickhouse.cloud/u/signup/ | 계정 등록 | 이메일, 비밀번호 |
+| https://console.clickhouse.cloud/profile | 일반 사용자 프로필 세부정보 | 이름, 이메일 |
+| https://console.clickhouse.cloud/organizations/OrgID/members | 조직의 사용자 목록 | 이름, 이메일 |
+| https://console.clickhouse.cloud/organizations/OrgID/keys | API 키 목록과 누가 생성했는지 | 이메일 |
+| https://console.clickhouse.cloud/organizations/OrgID/audit | 개별 사용자의 작업을 나열하는 활동 로그 | 이메일 |
+| https://console.clickhouse.cloud/organizations/OrgID/billing | 청구 정보 및 송장 | 청구 주소, 이메일 |
+| https://console.clickhouse.cloud/support | ClickHouse 지원과의 상호작용 | 이름, 이메일 |
+
+참고: `OrgID`가 포함된 URL은 귀하의 특정 계정에 대한 `OrgID`를 반영하도록 업데이트해야 합니다.
+
+### Current customers {#current-customers}
+
+계정이 있는 경우, 자가 서비스 옵션으로 개인 데이터 문제가 해결되지 않으면 개인정보 보호 정책에 따라 데이터 주체 접근 요청을 제출할 수 있습니다. 그렇게 하려면 ClickHouse 계정에 로그인하고 [지원 사례](https://console.clickhouse.cloud/support)를 열어 주세요. 이는 귀하의 신원을 확인하고 요청을 처리하는 과정을 간소화하는 데 도움이 됩니다.
+
+지원 사례에 다음 세부정보를 포함하는 것을 잊지 마세요:
+
+| Field | Text to include in your request |
+|-------------|---------------------------------------------------|
+| Subject | 데이터 주체 접근 요청 (DSAR) |
+| Description | ClickHouse가 찾고, 수집하고, 제공할 정보를 자세히 설명하는 내용입니다. |
+
+
+
+### Individuals without an account {#individuals-without-an-account}
+
+계정이 없고, 위의 자가 서비스 옵션으로 개인 데이터 문제가 해결되지 않았으며, 개인정보 보호 정책에 따라 데이터 주체 접근 요청을 하고 싶다면, [privacy@clickhouse.com](mailto:privacy@clickhouse.com)으로 이메일을 통해 이러한 요청을 제출할 수 있습니다.
+
+## Identity verification {#identity-verification}
+
+이메일을 통해 데이터 주체 접근 요청을 제출할 경우, 귀하의 신원을 확인하고 요청을 처리하는 데 필요한 특정 정보를 요청할 수 있습니다. 해당 법률은 귀하의 요청을 거절할 수 있게 요구하거나 허용할 수 있습니다. 요청을 거절할 경우, 법적 제한에 따라 그 이유를 알려드릴 것입니다.
+
+더 많은 정보는 [ClickHouse 개인정보 보호 정책](https://clickhouse.com/legal/privacy-policy)을 검토하시기 바랍니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/10_personal-data-access.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/10_personal-data-access.md.hash
new file mode 100644
index 00000000000..6068d9207d1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/10_personal-data-access.md.hash
@@ -0,0 +1 @@
+be0d0243950112c6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/11_account-close.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/11_account-close.md
new file mode 100644
index 00000000000..c1bf53ce58a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/11_account-close.md
@@ -0,0 +1,59 @@
+---
+'sidebar_label': '계정 종료'
+'slug': '/cloud/manage/close_account'
+'title': '계정 종료 및 삭제'
+'description': '우리는 때때로 계정 종료가 필요로 하는 상황이 있다는 것을 알고 있습니다. 이 가이드는 프로세스를 통해 도와줄 것입니다.'
+'keywords':
+- 'ClickHouse Cloud'
+- 'account closure'
+- 'delete account'
+- 'cloud account management'
+- 'account deletion'
+'doc_type': 'guide'
+---
+
+## 계정 종료 및 삭제 {#account-close--deletion}
+
+우리의 목표는 여러분이 프로젝트에서 성공할 수 있도록 돕는 것입니다. 이 사이트에서 답변되지 않은 질문이 있거나 고유한 사용 사례를 평가하는 데 도움이 필요하면 [support@clickhouse.com](mailto:support@clickhouse.com)으로 연락해 주세요.
+
+우리는 때때로 계정을 종료해야 하는 상황이 있다는 것을 알고 있습니다. 이 가이드는 귀하가 이 과정을 수행하는 데 도움을 드릴 것입니다.
+
+## 계정 종료와 삭제의 차이 {#close-vs-delete}
+고객은 종료된 계정에 다시 로그인하여 사용량, 청구 및 계정 수준의 활동 로그를 볼 수 있습니다. 이는 사용 사례를 문서화하거나 세금 목적을 위해 연말에 송장을 다운로드하는 등 여러 용도로 유용한 세부정보에 쉽게 접근할 수 있게 해줍니다. 또한, 귀하는 제품 업데이트를 계속 받아 귀하가 기다려왔던 기능이 이제 사용할 수 있는지 알 수 있습니다. 더불어, 종료된 계정은 언제든지 재개될 수 있어 새로운 서비스를 시작할 수 있습니다.
+
+개인 데이터 삭제를 요청하는 고객은 이 과정이 되돌릴 수 없는 것임을 알아야 합니다. 계정 및 관련 정보는 더 이상 사용할 수 없게 됩니다. 제품 업데이트를 받지 못하며 계정을 재개할 수 없습니다. 이는 뉴스레터 구독에 영향을 미치지 않습니다.
+
+뉴스레터 구독자는 계정을 종료하거나 정보를 삭제하지 않고도 뉴스레터 이메일 하단의 구독 취소 링크를 사용하여 언제든지 구독을 취소할 수 있습니다.
+
+## 종료 준비 {#preparing-for-closure}
+
+계정 종료를 요청하기 전에 다음 단계를 따라 계정을 준비해 주세요.
+1. 보관해야 할 서비스의 데이터를 내보냅니다.
+2. 서비스를 중지하고 삭제합니다. 이로 인해 귀하의 계정에 추가 요금이 발생하지 않게 됩니다.
+3. 종료를 요청할 관리자를 제외한 모든 사용자를 제거합니다. 이는 프로세스가 완료되는 동안 새로운 서비스가 생성되지 않도록 하는 데 도움이 됩니다.
+4. 제어판의 '사용량' 및 '청구' 탭을 검토하여 모든 요금이 지불되었는지 확인합니다. 미지급 잔액이 있는 계정은 종료할 수 없습니다.
+
+## 계정 종료 요청 {#request-account-closure}
+
+우리는 종료 및 삭제 요청을 인증할 필요가 있습니다. 귀하의 요청이 신속하게 처리될 수 있도록 아래의 단계에 따라 주세요.
+1. 클릭하우스 클라우드 계정에 로그인합니다.
+2. 위의 _종료 준비_ 섹션에서 남은 단계를 완료합니다.
+3. 도움 요청 버튼(화면 오른쪽 상단 모서리의 물음표)을 클릭합니다.
+4. '지원'에서 '사례 생성'을 클릭합니다.
+5. '새 사례 생성' 화면에서 다음 정보를 입력합니다:
+
+```text
+Priority: Severity 3
+Subject: Please close my ClickHouse account
+Description: We would appreciate it if you would share a brief note about why you are cancelling.
+```
+
+5. '새 사례 생성'을 클릭합니다.
+6. 귀하의 계정을 종료하고 완료되면 알림 이메일을 발송하겠습니다.
+
+## 개인 데이터 삭제 요청 {#request-personal-data-deletion}
+계정 관리자만 ClickHouse에 개인 데이터 삭제를 요청할 수 있습니다. 귀하가 계정 관리자가 아닌 경우 ClickHouse 계정 관리자에게 연락하여 계정에서 제거해 달라고 요청하세요.
+
+데이터 삭제를 요청하려면 위의 '계정 종료 요청' 단계를 따릅니다. 사례 정보를 입력할 때 제목을 '제 계정과 개인 데이터를 삭제해 주세요.'로 변경합니다.
+
+우리는 개인 데이터 삭제 요청을 30일 이내에 완료할 것입니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/11_account-close.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/11_account-close.md.hash
new file mode 100644
index 00000000000..ae694687037
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/11_account-close.md.hash
@@ -0,0 +1 @@
+824b502ffb6a766f
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_category_.yml b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_category_.yml
new file mode 100644
index 00000000000..79520c71142
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_category_.yml
@@ -0,0 +1,7 @@
+label: 'Cloud Reference'
+position: 1
+collapsible: true
+collapsed: true
+link:
+ type: generated-index
+ title: Cloud Reference
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_snippets/_network_transfer_rates.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_snippets/_network_transfer_rates.md
new file mode 100644
index 00000000000..601f5993027
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_snippets/_network_transfer_rates.md
@@ -0,0 +1,207 @@
+아래 표는 클라우드 공급자 및 지역에 따라 퍼블릭 인터넷 또는 크로스 리전을 통한 데이터 전송 요금이 어떻게 달라지는지를 보여줍니다.
+
+**AWS**
+
+
+
+
+
클라우드 공급자
+
지역
+
퍼블릭 인터넷 이그레스
+
동일 지역
+
크로스 리전 (모든 티어 1)
+
+
+
+
+
`AWS`
+
`ap-northeast-1`
+
`$0.1440`
+
`$0.0000`
+
`$0.1152`
+
+
+
`AWS`
+
`ap-south-1`
+
`$0.1384`
+
`$0.0000`
+
`$0.1104`
+
+
+
`AWS`
+
`ap-southeast-1`
+
`$0.1512`
+
`$0.0000`
+
`$0.1152`
+
+
+
`AWS`
+
`ap-southeast-2`
+
`$0.1440`
+
`$0.0000`
+
`$0.1248`
+
+
+
`AWS`
+
`eu-central-1`
+
`$0.1152`
+
`$0.0000`
+
`$0.0312`
+
+
+
`AWS`
+
`eu-west-1`
+
`$0.1152`
+
`$0.0000`
+
`$0.0312`
+
+
+
`AWS`
+
`eu-west-2`
+
`$0.1152`
+
`$0.0000`
+
`$0.0312`
+
+
+
`AWS`
+
`us-east-1`
+
`$0.1152`
+
`$0.0000`
+
`$0.0312`
+
+
+
`AWS`
+
`us-east-2`
+
`$0.1152`
+
`$0.0000`
+
`$0.0312`
+
+
+
`AWS`
+
`us-west-2`
+
`$0.1152`
+
`$0.0000`
+
`$0.0312`
+
+
+
+
+$^*$ 데이터 전송 요금은 전송된 데이터 1GB당 $ 기준입니다.
+
+**GCP**
+
+
+
+
+
클라우드 공급자
+
원본 지역
+
퍼블릭 인터넷 이그레스
+
목적지 지역
+
+
+
동일 지역
+
북미
+
유럽
+
아시아, 오세아니아
+
중동, 남미, 아프리카
+
+
+
+
+
`GCP`
+
`us-central1`
+
`$0.1140`
+
`$0.0000`
+
`$0.0360` (티어 1)
+
`$0.0720` (티어 2)
+
`$0.1200` (티어 3)
+
`$0.1620` (티어 4)
+
+
+
`GCP`
+
`us-east1`
+
`$0.1140`
+
`$0.0000`
+
`$0.0360` (티어 1)
+
`$0.0720` (티어 2)
+
`$0.1200` (티어 3)
+
`$0.1620` (티어 4)
+
+
+
`GCP`
+
`europe-west4`
+
`$0.1140`
+
`$0.0000`
+
`$0.0720` (티어 2)
+
`$0.0360` (티어 1)
+
`$0.1200` (티어 3)
+
`$0.1620` (티어 4)
+
+
+
`GCP`
+
`asia-southeast1`
+
`$0.1440`
+
`$0.0000`
+
`$0.1200` (티어 3)
+
`$0.1200` (티어 3)
+
`$0.1200` (티어 3)
+
`$0.1620` (티어 4)
+
+
+
+
+$^*$ 데이터 전송 요금은 전송된 데이터 1GB당 $ 기준입니다.
+
+**Azure**
+
+
+
+
+
클라우드 공급자
+
원본 지역
+
퍼블릭 인터넷 이그레스
+
목적지 지역
+
+
+
동일 지역
+
북미
+
유럽
+
아시아, 오세아니아
+
중동, 남미, 아프리카
+
+
+
+
+
`Azure`
+
`eastus2`
+
`$0.1020`
+
`$0.0000`
+
`$0.0300` (티어 1)
+
`$0.0660` (티어 2)
+
`$0.0660` (티어 2)
+
`$0.0660` (티어 2)
+
+
+
`Azure`
+
`westus3`
+
`$0.1020`
+
`$0.0000`
+
`$0.0300` (티어 1)
+
`$0.0660` (티어 2)
+
`$0.0660` (티어 2)
+
`$0.0660` (티어 2)
+
+
+
`Azure`
+
`germanywestcentral`
+
`$0.1020`
+
`$0.0000`
+
`$0.0660` (티어 2)
+
`$0.0300` (티어 1)
+
`$0.0660` (티어 2)
+
`$0.0660` (티어 2)
+
+
+
+
+$^*$ 데이터 전송 요금은 전송된 데이터 1GB당 $ 기준입니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_snippets/_network_transfer_rates.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_snippets/_network_transfer_rates.md.hash
new file mode 100644
index 00000000000..36e4c74cb7f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/_snippets/_network_transfer_rates.md.hash
@@ -0,0 +1 @@
+d8777672a8f919c9
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/data-resiliency.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/data-resiliency.md
new file mode 100644
index 00000000000..f9e0e6bde3c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/data-resiliency.md
@@ -0,0 +1,123 @@
+---
+'slug': '/cloud/data-resiliency'
+'sidebar_label': '데이터 복원력'
+'title': '재해 복구'
+'description': '이 가이드는 재해 복구에 대한 개요를 제공합니다.'
+'doc_type': 'reference'
+'keywords':
+- 'ClickHouse Cloud'
+- 'data resiliency'
+- 'disaster recovery'
+---
+
+import Image from '@theme/IdealImage';
+import restore_backup from '@site/static/images/cloud/guides/restore_backup.png';
+
+
+# 데이터 복원력 {#clickhouse-cloud-data-resiliency}
+
+이 페이지에서는 ClickHouse Cloud의 재난 복구 권장 사항과 고객이 장애에서 복구하는 방법에 대한 지침을 다룹니다. ClickHouse Cloud는 현재 자동 장애 조치 또는 여러 지리적 지역 간의 자동 동기화를 지원하지 않습니다.
+
+:::tip
+고객은 자신의 서비스 크기 및 구성에 대한 특정 RTO를 이해하기 위해 주기적인 백업 복원 테스트를 수행해야 합니다.
+:::
+
+## 정의 {#definitions}
+
+먼저 몇 가지 정의를 다루는 것이 도움이 됩니다.
+
+**RPO (복구 지점 목표)**: 파괴적인 사건 발생 후 최대 허용 데이터 손실을 시간으로 측정한 것입니다. 예: 30분의 RPO는 실패가 발생할 경우 DB가 30분 이상 된 데이터로 복원할 수 있다는 의미입니다. 이는 물론 백업이 얼마나 자주 이루어지는지에 따라 달라집니다.
+
+**RTO (복구 시간 목표)**: 사고 발생 후 정상 운영이 재개되기 전까지 허용 가능한 최대 다운타임입니다. 예: 30분의 RTO는 실패가 발생할 경우 팀이 데이터와 애플리케이션을 복원하여 30분 이내에 정상 운영을 시작할 수 있다는 의미입니다.
+
+**데이터베이스 백업 및 스냅샷**: 백업은 데이터의 별도 복사본을 포함한 내구성 있는 장기 저장 솔루션을 제공합니다. 스냅샷은 데이터의 추가 복사본을 생성하지 않으며, 일반적으로 더 빠르고 더 나은 RPO를 제공합니다.
+
+## 데이터베이스 백업 {#database-backups}
+
+주 서비스의 백업을 보유하는 것은 주 서비스가 다운될 경우 백업을 활용하고 복원하는 효과적인 방법입니다. ClickHouse Cloud는 다음과 같은 백업 기능을 지원합니다.
+
+1. **기본 백업**
+
+기본적으로 ClickHouse Cloud는 귀하의 서비스에 대해 24시간마다 [백업](/cloud/manage/backups)을 수행합니다. 이러한 백업은 서비스와 동일한 지역에서 이루어지며, ClickHouse CSP (클라우드 서비스 제공업체) 스토리지 버킷에서 발생합니다. 주 서비스의 데이터가 손상될 경우, 백업을 사용하여 새로운 서비스로 복원할 수 있습니다.
+
+2. **외부 백업 (고객의 저장소 버킷 내)**
+
+Enterprise Tier 고객은 [백업을 내 클라우드 계정으로 내보내기](/cloud/manage/backups/export-backups-to-own-cloud-account)를 통해 자신의 계정에 있는 객체 저장소로 내보낼 수 있으며, 동일한 지역 또는 다른 지역에 저장할 수 있습니다. 크로스 클라우드 백업 내보내기 지원이 곧 제공될 예정입니다. 지역 간 및 클라우드 간 백업에는 관련 데이터 전송 요금이 적용됩니다.
+
+:::note
+이 기능은 현재 PCI/HIPAA 서비스에서 사용할 수 없습니다.
+:::
+
+3. **구성 가능한 백업**
+
+고객은 [백업 구성하기](/cloud/manage/backups/configurable-backups)를 통해 RPO를 개선하기 위해 6시간마다 한 번의 빈도로 더 높은 빈도로 백업을 수행하도록 설정할 수 있습니다. 고객은 긴 보존 기간으로도 구성할 수 있습니다.
+
+서비스에 현재 사용할 수 있는 백업은 ClickHouse Cloud 콘솔의 “백업” 페이지에 나열되어 있습니다. 이 섹션은 각 백업의 성공/실패 상태도 제공합니다.
+
+## 백업에서 복원하기 {#restoring-from-a-backup}
+
+1. ClickHouse Cloud 버킷의 기본 백업은 동일한 지역의 새로운 서비스로 복원될 수 있습니다.
+2. 외부 백업 (고객 객체 저장소 내)은 동일한 지역 또는 다른 지역의 새로운 서비스로 복원될 수 있습니다.
+
+## 백업 및 복원 기간 지침 {#backup-and-restore-duration-guidance}
+
+백업 및 복원 기간은 데이터베이스의 크기, 스키마 및 데이터베이스 내 테이블 수와 같은 여러 요인에 따라 달라집니다.
+
+테스트에서 확인한 바에 따르면, 작은 백업 약 1 TB의 경우 백업 소요 시간이 최대 10-15분 또는 그 이상 걸렸습니다. 20 TB 미만의 백업은 보통 한 시간 이내에 완료되며, 약 50 TB의 데이터를 백업하는 데는 2-3 시간이 소요됩니다. 더 큰 크기에서 백업은 규모의 경제를 얻으며, 일부 내부 서비스에서는 최대 1 PB의 백업이 10시간 이내에 완료된 바 있습니다.
+
+보다 나은 추정치를 얻기 위해 자신의 데이터베이스나 샘플 데이터를 사용하여 테스트할 것을 권장합니다. 실제 기간은 위에서 정리한 여러 요인에 따라 달라집니다.
+
+복원 기간은 유사한 크기의 백업 시 백업 소요 시간과 유사합니다. 위에서 언급한 바와 같이, 백업 복원에 걸리는 시간을 확인하기 위해 자신의 데이터베이스로 테스트할 것을 권장합니다.
+
+:::note
+현재 두 개의 ClickHouse Cloud 인스턴스 간에 자동 장애 조치가 지원되지 않습니다. 동일한 지역 또는 다른 지역 간의 데이터 자동 동기도 현재 지원되지 않습니다. 즉, Active-Active 복제는 지원되지 않음.
+:::
+
+## 복구 프로세스 {#recovery-process}
+
+이 섹션에서는 다양한 복구 옵션과 각 경우에 따라 따를 수 있는 프로세스를 설명합니다.
+
+### 주 서비스 데이터 손상 {#primary-service-data-corruption}
+
+이 경우, 데이터는 [백업에서 복원할 수 있습니다](/cloud/manage/backups/overview#restore-a-backup) 같은 지역의 다른 서비스로. 기본 백업 정책을 사용하는 경우 최대 24시간이 경과한 백업 또는 6시간 빈도의 구성 가능한 백업을 사용하는 경우 최대 6시간이 지났을 수 있습니다.
+
+#### 복원 단계 {#restoration-steps}
+
+기존 백업에서 복원하려면
+
+
+
+1. ClickHouse Cloud 콘솔의 “백업” 섹션으로 이동합니다.
+2. 복원하려는 특정 백업의 “작업” 아래에서 세 개의 점을 클릭합니다.
+3. 새로운 서비스에 특정 이름을 부여하고 이 백업에서 복원합니다.
+
+
+
+
+
+### 기본 지역 다운타임 {#primary-region-downtime}
+
+Enterprise Tier 고객은 자신의 클라우드 제공업체 버킷으로 [백업을 내보낼 수 있습니다](/cloud/manage/backups/export-backups-to-own-cloud-account). 지역 장애를 염려하는 경우 다른 지역으로 백업을 내보낼 것을 권장합니다. 크로스 지역 데이터 전송 요금이 적용될 수 있음을 유념하시기 바랍니다.
+
+기본 지역이 다운될 경우, 다른 지역에 있는 백업을 새로운 서비스로 복원할 수 있습니다.
+
+백업이 다른 서비스로 복원된 후, 모든 DNS, 로드 밸런서 또는 연결 문자열 구성이 새로운 서비스로 가리키도록 업데이트되어야 합니다. 이 과정에는 다음 사항이 포함될 수 있습니다.
+
+- 환경 변수 또는 비밀 업데이트
+- 새로운 연결을 설정하기 위해 애플리케이션 서비스를 재시작
+
+:::note
+외부 버킷으로의 백업/복원은 현재 [투명 데이터 암호화 (TDE)](/cloud/security/cmek#transparent-data-encryption-tde)를 활용하는 서비스에서는 지원되지 않습니다.
+:::
+
+## 추가 옵션 {#additional-options}
+
+고려할 몇 가지 추가 옵션이 있습니다.
+
+1. **별도의 클러스터에 이중 쓰기**
+
+이 옵션에서는 다른 지역에 2개의 별도 클러스터를 설정하고 두 클러스터 모두에 이중 쓰기를 수행할 수 있습니다. 이 옵션은 여러 서비스를 운영하는 것이기 때문에 본질적으로 더 높은 비용이 수반되지만, 한 지역이 사용 불가능해질 경우 더 높은 가용성을 제공합니다.
+
+2. **CSP 복제 활용하기**
+
+이 옵션에서는 클라우드 서비스 제공업체의 기본 객체 저장소 복제를 활용하여 데이터를 복사할 수 있습니다. 예를 들어, BYOB를 사용하면 백업을 기본 지역의 귀하 소속 버킷으로 내보내고 [AWS 크로스 지역 복제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)를 사용하여 다른 지역으로 복제할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/data-resiliency.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/data-resiliency.md.hash
new file mode 100644
index 00000000000..4d89594a22f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/data-resiliency.md.hash
@@ -0,0 +1 @@
+54f1d51df286ecb5
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/index.md
new file mode 100644
index 00000000000..65e4a482d15
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/index.md
@@ -0,0 +1,32 @@
+---
+'slug': '/cloud/reference'
+'keywords':
+- 'Cloud'
+- 'reference'
+- 'architecture'
+- 'SharedMergeTree'
+- 'Compute-compute Separation'
+- 'Bring Your Own Cloud'
+- 'Changelogs'
+- 'Supported Cloud Regions'
+- 'Cloud Compatibility'
+'title': '개요'
+'hide_title': true
+'description': '클라우드 참조 섹션의 랜딩 페이지'
+'doc_type': 'landing-page'
+---
+
+
+# 클라우드 참조
+
+이 섹션은 ClickHouse Cloud의보다 기술적인 세부 사항에 대한 참조 가이드 역할을 하며 다음 페이지를 포함합니다:
+
+| 페이지 | 설명 |
+|-----------------------------------|-----------------------------------------------------------------------------------------------------------|
+| [Architecture](/cloud/reference/architecture) | ClickHouse Cloud의 아키텍처에 대한 논의, 저장소, 컴퓨팅, 관리 및 보안을 포함합니다. |
+| [SharedMergeTree](/cloud/reference/shared-merge-tree) | ReplicatedMergeTree와 유사한 클라우드 네이티브 대체인 SharedMergeTree에 대한 설명입니다. |
+| [Warehouses](/cloud/reference/warehouses) | ClickHouse Cloud에서 Warehouses와 컴퓨팅-컴퓨팅 분리가 무엇인지에 대한 설명입니다. |
+| [BYOC (Bring Your Own Cloud)](/cloud/reference/byoc/overview)| ClickHouse Cloud와 함께 제공되는 Bring Your Own Cloud (BYOC) 서비스에 대한 설명입니다. |
+| [Changelogs](/cloud/reference/changelogs) | 클라우드 변경 로그 및 릴리스 노트입니다. |
+| [Cloud Compatibility](/whats-new/cloud-compatibility) | ClickHouse Cloud에서 기능적으로 및 운영적으로 기대할 수 있는 것에 대한 가이드입니다. |
+| [Supported Cloud Regions](/cloud/reference/supported-regions) | AWS, Google 및 Azure에 대한 지원되는 클라우드 지역 목록입니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/index.md.hash
new file mode 100644
index 00000000000..d27a70c6b0d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/cloud/reference/index.md.hash
@@ -0,0 +1 @@
+f2c924900c03bb25
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/concepts/glossary.md b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/glossary.md
new file mode 100644
index 00000000000..965c8dfe604
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/glossary.md
@@ -0,0 +1,114 @@
+---
+'sidebar_label': '용어집'
+'description': '이 페이지에는 ClickHouse에 관한 일반적으로 사용되는 단어와 구문 목록과 그 정의가 포함되어 있습니다.'
+'title': '용어집'
+'slug': '/concepts/glossary'
+'keywords':
+- 'glossary'
+- 'definitions'
+- 'terminology'
+'doc_type': 'reference'
+---
+
+
+# 용어집
+
+## Atomicity {#atomicity}
+
+Atomicity는 트랜잭션(일련의 데이터베이스 작업)이 단일하고 분리할 수 없는 단위로 처리됨을 보장합니다. 이는 트랜잭션 내의 모든 작업이 발생하거나 전혀 발생하지 않아야 함을 의미합니다. 원자 트랜잭션의 예로는 한 은행 계좌에서 다른 계좌로의 돈 이체가 있습니다. 이체의 어느 단계라도 실패하면 트랜잭션은 실패하며 돈은 첫 번째 계좌에 남습니다. Atomicity는 돈이 잃거나 생성되지 않도록 보장합니다.
+
+## Block {#block}
+
+Block은 데이터 처리 및 저장을 조직하기 위한 논리적 단위입니다. 각 블록은 쿼리 실행 중 성능을 향상시키기 위해 함께 처리되는 컬럼형 데이터를 포함합니다. 데이터를 블록 단위로 처리함으로써 ClickHouse는 캐시 미스를 최소화하고 벡터화된 실행을 촉진하여 CPU 코어를 효율적으로 사용합니다. ClickHouse는 LZ4, ZSTD 및 Delta와 같은 다양한 압축 알고리즘을 사용하여 블록의 데이터를 압축합니다.
+
+## Cluster {#cluster}
+
+데이터를 저장하고 처리하기 위해 함께 작동하는 노드(서버)의 모음입니다.
+
+## CMEK {#cmek}
+
+고객 관리 암호화 키(CMEK)를 사용하면 고객이 자신의 키 관리 서비스(KMS) 키로 ClickHouse 디스크 데이터 키를 암호화하고 정적으로 데이터를 보호할 수 있습니다.
+
+## Dictionary {#dictionary}
+
+딕셔너리는 여러 유형의 참조 목록에 유용한 키-값 쌍의 매핑입니다. 이는 쿼리에서 딕셔너리를 효율적으로 사용할 수 있는 강력한 기능으로, 참조 테이블과의 `JOIN`보다 더 효율적일 수 있습니다.
+
+## Distributed table {#distributed-table}
+
+ClickHouse의 분산 테이블은 데이터를 직접 저장하지 않고 클러스터 내 여러 서버에서의 분산 쿼리 처리를 위한 통합 뷰를 제공하는 특별한 유형의 테이블입니다.
+
+## Granule {#granule}
+
+Granule은 압축되지 않은 블록의 행 배치입니다. 데이터를 읽을 때 ClickHouse는 개별 행이 아닌 granule에 접근하여 분석 작업에서 더 빠른 데이터 처리를 가능하게 합니다. 기본적으로 granule은 8192개의 행을 포함합니다. 기본 인덱스는 granule당 하나의 항목을 포함합니다.
+
+## Incremental materialized view {#incremental-materialized-view}
+
+ClickHouse의 증분 물리화된 뷰는 삽입 시간에 데이터를 처리하고 집계하는 유형의 물리화된 뷰입니다. 소스 테이블에 새로운 데이터가 삽입되면 물리화된 뷰는 새로 삽입된 블록에 대해 미리 정의된 SQL 집계 쿼리를 실행하고 집계된 결과를 대상으로 한 테이블에 기록합니다.
+
+## Lightweight update {#lightweight-update}
+
+ClickHouse의 경량 업데이트는 표준 SQL UPDATE 구문을 사용하여 테이블의 행을 업데이트할 수 있게 해주는 실험적 기능입니다. 그러나 전체 컬럼이나 데이터 파트를 재작성하는 대신(전통적인 변형과 같이) 업데이트된 컬럼과 행만 포함하는 "패치 파트"를 생성합니다. 이러한 업데이트는 패치 적용을 통해 SELECT 쿼리에서 즉시 볼 수 있지만 물리적 데이터는 이후 병합 중에만 업데이트됩니다.
+
+## Materialized view {#materialized-view}
+
+ClickHouse의 물리화된 뷰는 데이터가 소스 테이블에 삽입될 때 자동으로 쿼리를 실행하여 변환된 또는 집계된 결과를 별도의 대상 테이블에 저장하여 쿼리를 빠르게 수행할 수 있도록 하는 메커니즘입니다.
+
+## MergeTree {#mergetree}
+
+ClickHouse의 MergeTree는 높은 데이터 수집률과 대량의 데이터 볼륨을 위해 설계된 테이블 엔진입니다. 이는 ClickHouse의 핵심 저장 엔진으로, 컬럼형 저장, 사용자 정의 파티셔닝, 스파스 기본 인덱스 및 배경 데이터 병합을 지원하는 기능을 제공합니다.
+
+## Mutation {#mutation}
+
+ClickHouse에서 변형(mutation)은 ALTER TABLE ... UPDATE 또는 ALTER TABLE ... DELETE와 같은 명령어를 사용하여 테이블 내 기존 데이터를 수정하거나 삭제하는 작업을 말합니다. 변형은 변경의 영향을 받는 전체 데이터 파트를 재작성하는 비동기 배경 프로세스로 구현됩니다.
+
+## On-the-fly mutation {#on-the-fly-mutation}
+
+ClickHouse의 즉시 변형(on-the-fly mutation)은 변형이 제출된 후 즉시 다음 SELECT 쿼리에서 업데이트 또는 삭제가 보이도록 하는 메커니즘입니다. 백그라운드 변형 프로세스가 완료될 때까지 기다릴 필요가 없습니다.
+
+## Parts {#parts}
+
+테이블의 데이터의 일부를 저장하는 물리적 파일입니다. 이는 파티션과는 다르며, 파티션은 파티션 키를 사용하여 생성된 테이블 데이터의 논리적 분할입니다.
+
+## Partitioning key {#partitioning-key}
+
+ClickHouse에서 파티션 키는 테이블 생성 시 PARTITION BY 절에 정의된 SQL 표현식입니다. 이는 데이터가 디스크에서 파티션으로 논리적으로 그룹화되는 방식을 결정합니다. 각 파티션 키의 고유한 값은 고유한 물리적 파티션을 형성하여 전체 파티션을 삭제, 이동 또는 보관하는 효율적인 데이터 관리 작업을 가능하게 합니다.
+
+## Primary key {#primary-key}
+
+ClickHouse에서 기본 키는 데이터가 디스크에 저장되는 순서를 결정하며 쿼리 필터링 속도를 높이는 스파스 인덱스를 구축하는 데 사용됩니다. 전통적인 데이터베이스와는 달리 ClickHouse의 기본 키는 유일성을 강제하지 않으며 여러 행이 동일한 기본 키 값을 가질 수 있습니다.
+
+## Projection {#projection}
+
+ClickHouse의 프로젝션은 데이터를 다르게 정렬하거나 미리 계산된 집계를 저장하여 쿼리 속도를 높이는 숨겨진 자동 유지 관리되는 테이블입니다. 주로 기본 기본 키에 포함되지 않은 컬럼을 필터링할 때 유용합니다.
+
+## Refreshable materialized view {#refreshable-materialized-view}
+
+Refreshable materialized view는 주기적으로 전체 데이터 세트에 대해 쿼리를 다시 실행하고 결과를 대상 테이블에 저장하는 유형의 물리화된 뷰입니다. 증분 물리화된 뷰와 달리, refreshable materialized view는 일정을 기반으로 업데이트되며, JOIN 및 UNION을 포함한 복잡한 쿼리를 제한 없이 지원할 수 있습니다.
+
+## Replica {#replica}
+
+ClickHouse 데이터베이스에 저장된 데이터의 복사본입니다. 중복성과 신뢰성을 위해 동일한 데이터의 복제본을 여러 개 가질 수 있습니다. 복제본은 ReplicatedMergeTree 테이블 엔진과 함께 사용되며, 이를 통해 ClickHouse는 서로 다른 서버 간에 데이터의 여러 복사본을 동기화할 수 있습니다.
+
+## Shard {#shard}
+
+데이터의 하위 집합입니다. ClickHouse는 항상 데이터에 대해 최소 한 개의 샤드를 갖습니다. 데이터가 여러 서버에 분산되지 않으면 데이터는 하나의 샤드에 저장됩니다. 단일 서버의 용량을 초과할 경우 여러 서버에 데이터를 샤딩하여 부하를 분산할 수 있습니다.
+
+## Skipping index {#skipping-index}
+
+Skipping index는 여러 개의 연속된 granule 수준에서 소량의 메타데이터를 저장하는 데 사용되며, ClickHouse가 관련 없는 행을 스캔하지 않도록 합니다. Skipping index는 프로젝션에 대한 경량 대안을 제공합니다.
+
+## Sorting key {#sorting-key}
+
+ClickHouse에서 정렬 키는 디스크의 행의 물리적 순서를 정의합니다. 기본 키를 지정하지 않으면 ClickHouse는 정렬 키를 기본 키로 사용합니다. 둘 다 지정하면 기본 키는 정렬 키의 접두어여야 합니다.
+
+## Sparse index {#sparse-index}
+
+기본 인덱스가 단일 행이 아니라 행 그룹에 대해 하나의 항목을 포함하는 인덱싱의 유형입니다. 행 그룹에 해당하는 항목을 마크(mark)라고 합니다. 스파스 인덱스를 사용하면 ClickHouse가 먼저 쿼리와 일치할 가능성이 있는 행 그룹을 식별한 다음 이를 별도로 처리하여 일치를 찾습니다. 이로 인해 기본 인덱스는 메모리에 로드할 수 있을 만큼 작습니다.
+
+## Table engine {#table-engine}
+
+ClickHouse의 테이블 엔진은 데이터가 작성되고 저장되며 접근되는 방식을 결정합니다. MergeTree는 가장 일반적인 테이블 엔진이며, 대량의 데이터의 빠른 삽입을 허용하여 백그라운드에서 처리됩니다.
+
+## TTL {#ttl}
+
+Time To Live (TTL)은 ClickHouse 기능으로, 특정 기간 이후에 컬럼 또는 행을 자동으로 이동, 삭제 또는 집계합니다. 이를 통해 자주 액세스할 필요가 없는 데이터를 삭제, 이동 또는 보관할 수 있어 저장소를 보다 효율적으로 관리할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/concepts/glossary.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/glossary.md.hash
new file mode 100644
index 00000000000..1ed5a817c2a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/glossary.md.hash
@@ -0,0 +1 @@
+0f53a15c3443466e
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md
new file mode 100644
index 00000000000..f26d3a54ad1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md
@@ -0,0 +1,22 @@
+---
+'title': '개념'
+'slug': '/concepts'
+'description': '개념에 대한 랜딩 페이지'
+'pagination_next': null
+'pagination_prev': null
+'keywords':
+- 'concepts'
+- 'OLAP'
+- 'fast'
+'doc_type': 'landing-page'
+---
+
+이 섹션에서는 ClickHouse가 빠르고 효율적인 이유에 대한 개념을 다룰 것입니다.
+
+| 페이지 | 설명 |
+|-------------------------------------------------------------------|----------------------------------------------------------------------------------------|
+| [ClickHouse가 이렇게 빠른 이유는?](./why-clickhouse-is-so-fast.mdx) | ClickHouse가 이렇게 빠른 이유를 알아보세요. |
+| [OLAP란 무엇인가?](./olap.md) | 온라인 분석 처리(OLAP)가 무엇인지 알아보세요. |
+| [ClickHouse의 독특한 점은?](../about-us/distinctive-features.md) | ClickHouse가 독특한 이유를 알아보세요. |
+| [용어집](./glossary.md) | 이 페이지에는 문서 전반에서 자주 접하게 될 용어의 용어집이 포함되어 있습니다. |
+| [자주 묻는 질문](../faq/index.md) | ClickHouse에 대해 가장 자주 묻는 질문의 모음입니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md.hash
new file mode 100644
index 00000000000..813f81d06fb
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md.hash
@@ -0,0 +1 @@
+e7e9dd0b8988db2b
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/concepts/olap.md b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/olap.md
new file mode 100644
index 00000000000..c9faeef760d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/olap.md
@@ -0,0 +1,43 @@
+---
+'sidebar_position': 2
+'sidebar_label': 'OLAP이란 무엇인가?'
+'description': 'OLAP는 Online Analytical Processing의 약어입니다. 이는 기술적 관점과 비즈니스 관점 두 가지
+ 측면에서 살펴볼 수 있는 폭넓은 용어입니다.'
+'title': 'OLAP이란 무엇인가?'
+'slug': '/concepts/olap'
+'keywords':
+- 'OLAP'
+'doc_type': 'reference'
+---
+
+
+# OLAP란 무엇인가?
+
+[OLAP](https://en.wikipedia.org/wiki/Online_analytical_processing)는 온라인 분석 처리(Online Analytical Processing)의 약자입니다. 이는 기술적 관점과 비즈니스 관점의 두 가지 측면에서 살펴볼 수 있는 폭넓은 용어입니다. 가장 높은 수준에서는 이러한 단어들을 거꾸로 읽어볼 수 있습니다:
+
+**처리** — 일부 원본 데이터가 처리됩니다…
+
+**분석적** — …일부 분석 보고서와 인사이트를 생성하기 위해…
+
+**온라인** — …실시간으로.
+
+## 비즈니스 관점에서의 OLAP {#olap-from-the-business-perspective}
+
+최근 몇 년 동안 비즈니스 사용자들은 데이터의 가치를 인식하기 시작했습니다. 맹목적으로 의사결정을 내리는 회사들은 경쟁력을 유지하지 못하는 경우가 많습니다. 성공적인 기업의 데이터 기반 접근 방식은 그들이 비즈니스 결정을 위해 원격으로 유용할 수 있는 모든 데이터를 수집하도록 강요하며, 이 데이터를 적시에 분석할 수 있는 메커니즘의 필요성을 부과합니다. 여기서 OLAP 데이터베이스 관리 시스템(DBMS)이 등장합니다.
+
+비즈니스 측면에서 OLAP은 기업이 운영 활동을 지속적으로 계획하고 분석하며 보고할 수 있게 하여 효율성을 극대화하고 비용을 절감하며 궁극적으로 시장 점유율을 정복할 수 있게 합니다. 이는 내부 시스템에서 수행할 수 있거나, 웹/모바일 분석 서비스, CRM 서비스 등과 같은 SaaS 제공업체에 아웃소싱될 수 있습니다. OLAP은 많은 BI(비즈니스 인텔리전스) 애플리케이션의 기술적 토대입니다.
+
+ClickHouse는 도메인별 데이터를 분석하기 위한 이러한 SaaS 솔루션의 백엔드로 자주 사용되는 OLAP 데이터베이스 관리 시스템입니다. 그러나 일부 기업은 여전히 제3자 제공업체와 데이터를 공유하는 데 주저하고 있으므로 내부 데이터 웨어하우스 시나리오 또한 가능합니다.
+
+## 기술적 관점에서의 OLAP {#olap-from-the-technical-perspective}
+
+모든 데이터베이스 관리 시스템은 두 가지 그룹으로 분류될 수 있습니다: OLAP (온라인 **분석적** 처리)과 OLTP (온라인 **거래** 처리)입니다. 전자는 큰 규모의 역사적 데이터 기반으로 각 보고서를 작성하는 데 초점을 맞추지만 그 빈도는 낮습니다. 후자는 데이터의 현재 상태를 지속적으로 수정하는 연속적인 거래 스트림을 처리합니다.
+
+실제로 OLAP과 OLTP는 이진 범주로 간주되지 않으며, 오히려 스펙트럼에 더 가깝습니다. 대부분의 실제 시스템은 이 중 하나에 초점을 두지만 반대 유형의 작업량이 필요할 때 일부 솔루션이나 변수를 제공합니다. 이러한 상황은 종종 기업이 통합된 여러 저장 시스템을 운영하도록 강요합니다. 이처럼 시스템이 많아지는 것은 큰 문제가 아닐 수 있지만, 더 많은 시스템을 가지고 있으면 유지 관리 비용이 증가하므로 최근 몇 년 간의 추세는 단일 데이터베이스 관리 시스템이 두 종류의 작업량을 모두 잘 처리할 수 있도록 하는 HTAP (**하이브리드 거래/분석 처리**) 방향으로 나아가고 있습니다.
+
+DBMS가 순수 OLAP 또는 순수 OLTP로 시작하더라도 경쟁력을 유지하기 위해 HTAP 방향으로 나아가야 합니다. ClickHouse도 예외는 아닙니다. 처음에는 [가능한 한 빠른 OLAP 시스템](https://clickhouse.com/engineering-resources/what-is-columnar-database)으로 설계되었으며 여전히 본격적인 거래 지원은 없지만, 데이터 업데이트/삭제를 위한 일관된 읽기/쓰기 및 변동과 같은 일부 기능이 추가되었습니다.
+
+OLAP와 OLTP 시스템 간의 근본적인 트레이드오프는 여전히 존재합니다:
+
+- 분석 보고서를 효율적으로 구축하려면 컬럼을 개별적으로 읽을 수 있는 것이 중요하므로, 대부분의 OLAP 데이터베이스는 [컬럼형](https://clickhouse.com/engineering-resources/what-is-columnar-database)입니다;
+- 컬럼을 별도로 저장하면 행에 대한 조작(예: 추가 또는 제자리 수정)의 비용이 증가하는데, 이는 시스템이 모든 이벤트의 세부 정보를 수집하려 할 때 열의 수에 비례하여 증가할 수 있습니다. 따라서 대부분의 OLTP 시스템은 데이터를 행별로 저장합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/concepts/olap.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/olap.md.hash
new file mode 100644
index 00000000000..f835867da4c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/olap.md.hash
@@ -0,0 +1 @@
+6528f1d8769f82c9
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/concepts/why-clickhouse-is-so-fast.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/why-clickhouse-is-so-fast.mdx
new file mode 100644
index 00000000000..cf5da6cb10a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/why-clickhouse-is-so-fast.mdx
@@ -0,0 +1,145 @@
+---
+'sidebar_position': 1
+'sidebar_label': 'ClickHouse가 이렇게 빠른 이유는 무엇인가?'
+'description': '빠르도록 설계되었습니다. 쿼리 실행 성능은 개발 과정에서 항상 최우선 사항이었지만, ClickHouse가 실제 프로덕션
+ 시스템이 될 수 있도록 사용자 친화성, 확장성, 보안과 같은 다른 중요한 특성도 고려되었습니다.'
+'title': 'ClickHouse가 이렇게 빠른 이유는 무엇인가?'
+'slug': '/concepts/why-clickhouse-is-so-fast'
+'keywords':
+- 'Architecture'
+- 'VLDB'
+- 'Performance'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+
+
+# ClickHouse는 왜 이렇게 빠른가? {#why-clickhouse-is-so-fast}
+
+데이터베이스 성능에 기여하는 여러 가지 요소가 있으며, 그 중 [데이터 방향성](/intro#row-oriented-vs-column-oriented-storage)도 포함됩니다. 다음에서는 ClickHouse가 특히 다른 컬럼 지향 데이터베이스와 비교했을 때 왜 그렇게 빠른지를 자세히 설명하겠습니다.
+
+건축적 관점에서 데이터베이스는 (최소한) 저장 계층과 쿼리 처리 계층으로 구성됩니다. 저장 계층은 테이블 데이터를 저장하고 로드하며 유지 관리하는 역할을 하며, 쿼리 처리 계층은 사용자 쿼리를 실행합니다. 다른 데이터베이스와 비교할 때 ClickHouse는 두 계층 모두에서 매우 빠른 INSERT와 SELECT 쿼리를 가능하게 하는 혁신을 제공합니다.
+
+## 저장 계층: 동시 INSERT는 서로 격리됨 {#storage-layer-concurrent-inserts-are-isolated-from-each-other}
+
+
+
+ClickHouse에서 각 테이블은 여러 개의 "테이블 파트"로 구성됩니다. 사용자가 테이블에 데이터를 삽입할 때마다 (INSERT 문) [파트](/parts)가 생성됩니다. 쿼리는 항상 쿼리가 시작될 때 존재하는 모든 테이블 파트에 대해 실행됩니다.
+
+너무 많은 파트가 축적되는 것을 방지하기 위해 ClickHouse는 여러 개의 작은 파트를 하나의 큰 파트로 지속적으로 결합하는 [병합](/merges) 작업을 백그라운드에서 실행합니다.
+
+이 접근 방식에는 여러 가지 장점이 있습니다. 모든 데이터 처리는 [백그라운드 파트 병합](/concepts/why-clickhouse-is-so-fast#storage-layer-merge-time-computation)에 오프로드될 수 있어 데이터 쓰기를 경량화하고 매우 효율적으로 유지합니다. 개별 삽입은 "로컬"로, 즉 전역(즉, 테이블별) 데이터 구조를 업데이트할 필요가 없습니다. 결과적으로 여러 개의 동시 삽입은 상호 동기화나 기존 테이블 데이터와의 동기화가 필요 없으며, 따라서 삽입은 디스크 I/O 속도에 거의 근접하게 수행될 수 있습니다.
+
+🤿 자세한 내용은 VLDB 2024 논문의 [On-Disk Format](/docs/academic_overview#3-1-on-disk-format) 섹션에서 확인하십시오.
+
+## 저장 계층: 동시 INSERT와 SELECT는 격리됨 {#storage-layer-concurrent-inserts-and-selects-are-isolated}
+
+
+
+INSERT는 SELECT 쿼리와 완전히 격리되어 있으며, 삽입된 데이터 파트의 병합은 동시 쿼리에 영향을 주지 않고 백그라운드에서 진행됩니다.
+
+🤿 자세한 내용은 VLDB 2024 논문의 [Storage Layer](/docs/academic_overview#3-storage-layer) 섹션에서 확인하십시오.
+
+## 저장 계층: 병합 시간 계산 {#storage-layer-merge-time-computation}
+
+
+
+다른 데이터베이스와 달리 ClickHouse는 모든 추가 데이터 변환을 [병합](/merges) 백그라운드 프로세스 중에 수행하여 데이터 쓰기를 경량화하고 효율적으로 유지합니다. 이의 예로는 다음과 같은 것들이 있습니다:
+
+- **교체 병합**은 입력 파트에서 행의 가장 최근 버전만 유지하고 나머지 버전은 폐기합니다. 교체 병합은 병합 시간 청소 작업으로 생각할 수 있습니다.
+
+- **집계 병합**은 입력 파트의 중간 집계 상태를 새로운 집계 상태로 결합합니다. 이해하기 어려워 보일 수 있지만, 실제로는 점진적 집계를 구현하는 것뿐입니다.
+
+- **TTL (time-to-live) 병합**은 특정 시간 기반 규칙에 따라 행을 압축, 이동 또는 삭제하는 작업입니다.
+
+이러한 변환의 핵심은 사용자 쿼리가 실행될 때의 작업(계산)을 병합 시간으로 이동시키는 것입니다. 이것이 중요한 두 가지 이유는 다음과 같습니다:
+
+한편으로, 사용자 쿼리는 "변환된" 데이터, 예를 들어 미리 집계된 데이터를 활용할 수 있다면 속도가 1000배 또는 그 이상 빨라질 수 있습니다.
+
+다른 한편으로, 병합의 대부분 실행 시간은 입력 파트를 로드하고 출력 파트를 저장하는 데 소비됩니다. 병합 중에 데이터를 변환하는 추가 노력은 일반적으로 병합의 실행 시간에 큰 영향을 미치지 않습니다. 이 모든 마법은 완전히 투명하며 쿼리의 결과(성능 제외)에 영향을 미치지 않습니다.
+
+🤿 자세한 내용은 VLDB 2024 논문의 [Merge-time Data Transformation](/docs/academic_overview#3-3-merge-time-data-transformation) 섹션에서 확인하십시오.
+
+## 저장 계층: 데이터 가지치기 {#storage-layer-data-pruning}
+
+
+
+실제로 많은 쿼리는 반복적이며, 즉 그대로 실행되거나 약간 수정된 채로(예: 다른 매개변수 값) 주기적으로 수행됩니다. 동일하거나 유사한 쿼리를 계속해서 실행하면 인덱스를 추가하거나 데이터를 재구성하여 자주 사용하는 쿼리가 더 빨리 접근할 수 있게 됩니다. 이 접근 방식은 "데이터 가지치기"라고도 하며, ClickHouse는 이를 위한 세 가지 기술을 제공합니다:
+
+1. [기본 키 인덱스](/guides/best-practices/sparse-primary-indexes#clickhouse-index-design)는 테이블 데이터의 정렬 순서를 정의합니다. 잘 선택된 기본 키는 위의 쿼리에서와 같은 필터(예: WHERE 절)를 빠른 이진 검색으로 평가할 수 있도록 합니다. 더 기술적인 용어로는, 스캔의 실행 시간은 데이터 크기 대신 로그적(logarithmic)으로 변하게 됩니다.
+
+2. [테이블 프로젝션](/sql-reference/statements/alter/projection)은 테이블의 대안적인 내부 버전으로, 같은 데이터를 저장하지만 다른 기본 키에 따라 정렬된 것입니다. 프로젝션은 여러 개의 자주 사용하는 필터 조건이 있을 때 유용할 수 있습니다.
+
+3. [스킵 인덱스](/optimize/skipping-indexes)는 추가 데이터 통계를 컬럼에 임베드하며, 예를 들어 최소 및 최대 컬럼 값, 고유 값 집합 등을 포함합니다. 스킵 인덱스는 기본 키 및 테이블 프로젝션과는 독립적이며, 컬럼의 데이터 분포에 따라 필터 평가를 크게 가속화할 수 있습니다.
+
+이 세 가지 기술은 전체 컬럼 읽기 중 가능한 많은 행을 건너뛰는 것을 목표로 하고 있습니다. 데이터 읽기의 가장 빠른 방법은 아예 읽지 않는 것입니다.
+
+🤿 자세한 내용은 VLDB 2024 논문의 [Data Pruning](/docs/academic_overview#3-2-data-pruning) 섹션에서 확인하십시오.
+
+## 저장 계층: 데이터 압축 {#storage-layer-data-compression}
+
+
+
+또한 ClickHouse의 저장 계층은 다양한 코덱을 사용하여 원시 테이블 데이터를 추가적으로 (선택적으로) 압축합니다.
+
+컬럼 저장소는 동일한 유형과 데이터 분포를 갖는 값들이 함께 위치하므로 이러한 압축에 특히 잘 적합합니다.
+
+사용자는 [지정할 수 있습니다](https://clickhouse.com/blog/optimize-clickhouse-codecs-compression-schema) 컬럼이 다양한 일반 압축 알고리즘(예: ZSTD) 또는 전문 코덱, 예를 들어 부동 소수점 값에 대해 Gorilla 및 FPC, 정수 값에 대해 Delta 및 GCD, 또는 AES와 같은 암호화 코덱으로 압축되도록 할 수 있습니다.
+
+데이터 압축은 데이터베이스 테이블의 저장 크기를 줄여줄 뿐만 아니라, 많은 경우 쿼리 성능도 향상시킵니다. 이는 로컬 디스크 및 네트워크 I/O가 종종 낮은 처리량에 의해 제한되기 때문입니다.
+
+🤿 자세한 내용은 VLDB 2024 논문의 [On-Disk Format](/docs/academic_overview#3-1-on-disk-format) 섹션에서 확인하십시오.
+
+## 최첨단 쿼리 처리 계층 {#state-of-the-art-query-processing-layer}
+
+
+
+마지막으로 ClickHouse는 가능한 한 많은 리소스를 활용하여 최대 속도와 효율성을 위해 쿼리 실행을 병렬화하는 벡터화된 쿼리 처리 계층을 사용합니다.
+
+"벡터화"는 쿼리 계획 연산자가 단일 행이 아닌 배치로 중간 결과 행을 전달하는 것을 의미합니다. 이는 CPU 캐시의 활용도를 향상시키고 연산자가 여러 값을 동시에 처리하는 SIMD 명령어를 적용할 수 있게 합니다. 실제로 많은 연산자는 SIMD 명령어 세트 세대마다 하나씩 여러 버전이 존재합니다. ClickHouse는 실행되는 하드웨어의 기능에 따라 가장 최신의 빠른 버전을 자동으로 선택합니다.
+
+현대 시스템에는 수십 개의 CPU 코어가 있습니다. 모든 코어를 활용하기 위해 ClickHouse는 쿼리 계획을 여러 레인으로 펼치며, 일반적으로 하나의 코어마다 하나씩 배치합니다. 각 레인은 테이블 데이터의 불연속적인 범위를 처리합니다. 이렇게 하면 데이터베이스 성능이 사용 가능한 코어 수에 따라 "수직적으로" 확장됩니다.
+
+단일 노드가 테이블 데이터를 보유하기에 너무 작아지면 추가 노드를 추가하여 클러스터를 형성할 수 있습니다. 테이블은 "샤딩"되어 노드 전체에 분산될 수 있습니다. ClickHouse는 테이블 데이터를 저장하는 모든 노드에서 쿼리를 실행하여 사용 가능한 노드 수에 따라 "수평적으로" 확장됩니다.
+
+🤿 자세한 내용은 VLDB 2024 논문의 [Query Processing Layer](/academic_overview#4-query-processing-layer) 섹션에서 확인하십시오.
+
+## 세심한 최적화 {#meticulous-attention-to-detail}
+
+
+
+> **"ClickHouse는 기이한 시스템입니다 - 여러분은 해시 테이블의 20가지 버전을 가지고 있죠. 여러분은 대다수 시스템이 하나의 해시 테이블을 갖고 있는 반면... ClickHouse는 모든 이러한 전문적 요소들 덕분에 놀라운 성능을 발휘합니다."** [앤디 파블로, CMU 데이터베이스 교수](https://www.youtube.com/watch?v=Vy2t_wZx4Is&t=3579s)
+
+ClickHouse를 [둘러싼](https://www.youtube.com/watch?v=CAS2otEoerM) 차별성은 낮은 수준의 최적화에 대한 세심한 주의입니다. 단순히 작동하는 데이터베이스를 구축하는 것은 한 가지 일이지만, 다양한 쿼리 유형, 데이터 구조, 분포 및 인덱스 구성을 통해 속도를 제공하도록 설계하는 것은 "[기이한 시스템](https://youtu.be/Vy2t_wZx4Is?si=K7MyzsBBxgmGcuGU&t=3579)"의 예술성이 빛나는 부분입니다.
+
+**해시 테이블.** 해시 테이블을 예로 들어 보겠습니다. 해시 테이블은 조인 및 집계에 사용되는 중심 데이터 구조입니다. 프로그래머는 이러한 설계 결정을 고려해야 합니다:
+
+* 선택할 해시 함수,
+* 충돌 해결: [오픈 어드레싱](https://en.wikipedia.org/wiki/Open_addressing) 또는 [체이닝](https://en.wikipedia.org/wiki/Hash_table#Separate_chaining),
+* 메모리 레이아웃: 키와 값을 위한 하나의 배열 또는 별도의 배열?
+* 채우기 비율: 언제 및 어떻게 크기를 조정해야 하는가? 크기 조정 시 값을 이동하는 방법은?
+* 삭제: 해시 테이블이 항목을 제거하도록 허용할 것인가?
+
+타사 라이브러리에서 제공하는 표준 해시 테이블은 기능적으로 작동하지만, 빠르지는 않을 것입니다. 뛰어난 성능을 위해서는 세심한 벤치마킹 및 실험이 필요합니다.
+
+[ClickHouse의 해시 테이블 구현](https://clickhouse.com/blog/hash-tables-in-clickhouse-and-zero-cost-abstractions)은 쿼리의 세부 사항에 따라 **30개 이상의 미리 컴파일된 해시 테이블 변형 중 하나를 선택합니다**.
+
+**알고리즘.** 알고리즘 역시 마찬가지입니다. 예를 들어 정렬에서는 고려해야 할 요소가 있습니다:
+
+* 무엇을 정렬할 것인가: 숫자, 튜플, 문자열 또는 구조체?
+* 데이터가 RAM에 있는가?
+* 정렬이 안정성이 요구되는가?
+* 모든 데이터를 정렬해야 하는가, 아니면 부분 정렬로 충분한가?
+
+데이터 특성에 의존하는 알고리즘이 일반적인 알고리즘보다 효과적으로 수행되는 경우가 많습니다. 데이터 특성이 미리 알려지지 않는 경우, 시스템은 여러 구현을 시도하고 실행 중 가장 잘 작동하는 것을 선택할 수 있습니다. 예를 들어 [ClickHouse에서 LZ4 압축 해제가 어떻게 구현되었는지에 대한 기사](https://habr.com/en/company/yandex/blog/457612/)를 확인하십시오.
+
+🤿 자세한 내용은 VLDB 2024 논문의 [Holistic Performance Optimization](/academic_overview#4-4-holistic-performance-optimization) 섹션에서 확인하십시오.
+
+## VLDB 2024 논문 {#vldb-2024-paper}
+
+2024년 8월, 우리는 첫 연구 논문을 VLDB에서 수락 및 발표하였습니다. VLDB는 매우 대규모 데이터베이스에 관한 국제 회의이며, 데이터 관리 분야에서 가장 저명한 회의 중 하나로 널리 알려져 있습니다. 수백 건의 제출 중에서 VLDB는 일반적으로 약 20%의 수락률을 보입니다.
+
+논문의 [PDF 버전](https://www.vldb.org/pvldb/vol17/p3731-schulze.pdf) 또는 ClickHouse의 가장 흥미로운 아키텍처 및 시스템 설계 구성 요소를 간결하게 설명하는 [웹 버전](/docs/academic_overview)을 읽어보십시오.
+
+Alexey Milovidov, 우리의 CTO이자 ClickHouse의 창립자는 이 논문을 발표하였으며(슬라이드는 [여기](https://raw.githubusercontent.com/ClickHouse/clickhouse-presentations/master/2024-vldb/VLDB_2024_presentation.pdf)), 뒤이어 Q&A가 이어졌습니다(시간이 금방 지나갔습니다!). 녹화된 발표는 [여기에서](https://www.youtube.com/embed/7QXKBKDOkJE?si=5uFerjqPSXQWqDkF) 시청하실 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/concepts/why-clickhouse-is-so-fast.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/why-clickhouse-is-so-fast.mdx.hash
new file mode 100644
index 00000000000..8534397f000
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/concepts/why-clickhouse-is-so-fast.mdx.hash
@@ -0,0 +1 @@
+ff05a81b2c6c7703
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-in-clickhouse.md b/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-in-clickhouse.md
new file mode 100644
index 00000000000..688a888b4f6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-in-clickhouse.md
@@ -0,0 +1,299 @@
+---
+'slug': '/data-compression/compression-in-clickhouse'
+'title': 'ClickHouse에서 압축'
+'description': 'ClickHouse 압축 알고리즘 선택하기'
+'keywords':
+- 'compression'
+- 'codec'
+- 'encoding'
+'doc_type': 'reference'
+---
+
+One of the secrets to ClickHouse query performance is compression.
+
+Less data on disk means less I/O and faster 쿼리 and inserts. The overhead of any compression algorithm with respect to CPU is in most cases outweighed by the reduction in I/O. Improving the compression of the data should therefore be the first focus when working on ensuring ClickHouse 쿼리 are fast.
+
+> For why ClickHouse compresses data so well, we recommended [this article](https://clickhouse.com/blog/optimize-clickhouse-codecs-compression-schema). In summary, as a column-oriented database, values will be written in column order. If these values are sorted, the same values will be adjacent to each other. Compression algorithms exploit contiguous patterns of data. On top of this, ClickHouse has codecs and granular data types which allow users to tune the compression techniques further.
+
+Compression in ClickHouse will be impacted by 3 principal factors:
+- The ordering key
+- The data types
+- Which codecs are used
+
+All of these are configured through the schema.
+
+## Choose the right data type to optimize compression {#choose-the-right-data-type-to-optimize-compression}
+
+Let's use the Stack Overflow dataset as an example. Let's compare compression statistics for the following schemas for the `posts` table:
+
+- `posts` - A non type optimized schema with no ordering key.
+- `posts_v3` - A type optimized schema with the appropriate type and bit size for each column with ordering key `(PostTypeId, toDate(CreationDate), CommentCount)`.
+
+Using the following 쿼리, we can measure the current compressed and uncompressed size of each 컬럼. Let's examine the size of the initial optimized schema `posts` with no ordering key.
+
+```sql
+SELECT name,
+ formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,
+ formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,
+ round(sum(data_uncompressed_bytes) / sum(data_compressed_bytes), 2) AS ratio
+FROM system.columns
+WHERE table = 'posts'
+GROUP BY name
+
+┌─name──────────────────┬─compressed_size─┬─uncompressed_size─┬───ratio────┐
+│ Body │ 46.14 GiB │ 127.31 GiB │ 2.76 │
+│ Title │ 1.20 GiB │ 2.63 GiB │ 2.19 │
+│ Score │ 84.77 MiB │ 736.45 MiB │ 8.69 │
+│ Tags │ 475.56 MiB │ 1.40 GiB │ 3.02 │
+│ ParentId │ 210.91 MiB │ 696.20 MiB │ 3.3 │
+│ Id │ 111.17 MiB │ 736.45 MiB │ 6.62 │
+│ AcceptedAnswerId │ 81.55 MiB │ 736.45 MiB │ 9.03 │
+│ ClosedDate │ 13.99 MiB │ 517.82 MiB │ 37.02 │
+│ LastActivityDate │ 489.84 MiB │ 964.64 MiB │ 1.97 │
+│ CommentCount │ 37.62 MiB │ 565.30 MiB │ 15.03 │
+│ OwnerUserId │ 368.98 MiB │ 736.45 MiB │ 2 │
+│ AnswerCount │ 21.82 MiB │ 622.35 MiB │ 28.53 │
+│ FavoriteCount │ 280.95 KiB │ 508.40 MiB │ 1853.02 │
+│ ViewCount │ 95.77 MiB │ 736.45 MiB │ 7.69 │
+│ LastEditorUserId │ 179.47 MiB │ 736.45 MiB │ 4.1 │
+│ ContentLicense │ 5.45 MiB │ 847.92 MiB │ 155.5 │
+│ OwnerDisplayName │ 14.30 MiB │ 142.58 MiB │ 9.97 │
+│ PostTypeId │ 20.93 MiB │ 565.30 MiB │ 27 │
+│ CreationDate │ 314.17 MiB │ 964.64 MiB │ 3.07 │
+│ LastEditDate │ 346.32 MiB │ 964.64 MiB │ 2.79 │
+│ LastEditorDisplayName │ 5.46 MiB │ 124.25 MiB │ 22.75 │
+│ CommunityOwnedDate │ 2.21 MiB │ 509.60 MiB │ 230.94 │
+└───────────────────────┴─────────────────┴───────────────────┴────────────┘
+```
+
+
+
+A note on compact versus wide parts
+
+If you are seeing `compressed_size` or `uncompressed_size` values equal to `0`, this could be because the type of the
+parts are `compact` and not `wide` (see description for `part_type` in [`system.parts`](/operations/system-tables/parts)).
+The part format is controlled by settings [`min_bytes_for_wide_part`](/operations/settings/merge-tree-settings#min_bytes_for_wide_part)
+and [`min_rows_for_wide_part`](/operations/settings/merge-tree-settings#min_rows_for_wide_part) meaning that if the inserted
+data results in a part which does not exceed the values of the aforementioned settings, the part will be compact rather
+than wide and you will not see the values for `compressed_size` or `uncompressed_size`.
+
+To demonstrate:
+
+```sql title="Query"
+-- Create a table with compact parts
+CREATE TABLE compact (
+ number UInt32
+)
+ENGINE = MergeTree()
+ORDER BY number
+AS SELECT * FROM numbers(100000); -- Not big enough to exceed default of min_bytes_for_wide_part = 10485760
+
+-- Check the type of the parts
+SELECT table, name, part_type from system.parts where table = 'compact';
+
+-- Get the compressed and uncompressed column sizes for the compact table
+SELECT name,
+ formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,
+ formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,
+ round(sum(data_uncompressed_bytes) / sum(data_compressed_bytes), 2) AS ratio
+FROM system.columns
+WHERE table = 'compact'
+GROUP BY name;
+
+-- Create a table with wide parts
+CREATE TABLE wide (
+ number UInt32
+)
+ENGINE = MergeTree()
+ORDER BY number
+SETTINGS min_bytes_for_wide_part=0
+AS SELECT * FROM numbers(100000);
+
+-- Check the type of the parts
+SELECT table, name, part_type from system.parts where table = 'wide';
+
+-- Get the compressed and uncompressed sizes for the wide table
+SELECT name,
+ formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,
+ formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,
+ round(sum(data_uncompressed_bytes) / sum(data_compressed_bytes), 2) AS ratio
+FROM system.columns
+WHERE table = 'wide'
+GROUP BY name;
+```
+
+```response title="Response"
+ ┌─table───┬─name──────┬─part_type─┐
+1. │ compact │ all_1_1_0 │ Compact │
+ └─────────┴───────────┴───────────┘
+ ┌─name───┬─compressed_size─┬─uncompressed_size─┬─ratio─┐
+1. │ number │ 0.00 B │ 0.00 B │ nan │
+ └────────┴─────────────────┴───────────────────┴───────┘
+ ┌─table─┬─name──────┬─part_type─┐
+1. │ wide │ all_1_1_0 │ Wide │
+ └───────┴───────────┴───────────┘
+ ┌─name───┬─compressed_size─┬─uncompressed_size─┬─ratio─┐
+1. │ number │ 392.31 KiB │ 390.63 KiB │ 1 │
+ └────────┴─────────────────┴───────────────────┴───────┘
+```
+
+
+
+We show both a compressed and uncompressed size here. Both are important. The compressed size equates to what we will need to read off disk - something we want to minimize for 쿼리 performance (and storage cost). This data will need to be decompressed prior to reading. The size of this uncompressed size will be dependent on the data type used in this case. Minimizing this size will reduce memory overhead of 쿼리 and the amount of data which has to be processed by the 쿼리, improving utilization of caches and ultimately 쿼리 times.
+
+> The above 쿼리 relies on the table `columns` in the system database. This database is managed by ClickHouse and is a treasure trove of useful information, from 쿼리 performance metrics to background cluster logs. We recommend ["System Tables and a Window into the Internals of ClickHouse"](https://clickhouse.com/blog/clickhouse-debugging-issues-with-system-tables) and accompanying articles[[1]](https://clickhouse.com/blog/monitoring-troubleshooting-insert-queries-clickhouse)[[2]](https://clickhouse.com/blog/monitoring-troubleshooting-select-queries-clickhouse) for the curious reader.
+
+To summarize the total size of the table, we can simplify the above 쿼리:
+
+```sql
+SELECT formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,
+ formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,
+ round(sum(data_uncompressed_bytes) / sum(data_compressed_bytes), 2) AS ratio
+FROM system.columns
+WHERE table = 'posts'
+
+┌─compressed_size─┬─uncompressed_size─┬─ratio─┐
+│ 50.16 GiB │ 143.47 GiB │ 2.86 │
+└─────────────────┴───────────────────┴───────┘
+```
+
+Repeating this 쿼리 for the `posts_v3`, the table with an optimized type and ordering key, we can see a significant reduction in uncompressed and compressed sizes.
+
+```sql
+SELECT
+ formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,
+ formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,
+ round(sum(data_uncompressed_bytes) / sum(data_compressed_bytes), 2) AS ratio
+FROM system.columns
+WHERE `table` = 'posts_v3'
+
+┌─compressed_size─┬─uncompressed_size─┬─ratio─┐
+│ 25.15 GiB │ 68.87 GiB │ 2.74 │
+└─────────────────┴───────────────────┴───────┘
+```
+
+The full 컬럼 breakdown shows considerable savings for the `Body`, `Title`, `Tags` and `CreationDate` 컬럼 achieved by ordering the data prior to compression and using the appropriate types.
+
+```sql
+SELECT
+ name,
+ formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,
+ formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,
+ round(sum(data_uncompressed_bytes) / sum(data_compressed_bytes), 2) AS ratio
+FROM system.columns
+WHERE `table` = 'posts_v3'
+GROUP BY name
+
+┌─name──────────────────┬─compressed_size─┬─uncompressed_size─┬───ratio─┐
+│ Body │ 23.10 GiB │ 63.63 GiB │ 2.75 │
+│ Title │ 614.65 MiB │ 1.28 GiB │ 2.14 │
+│ Score │ 40.28 MiB │ 227.38 MiB │ 5.65 │
+│ Tags │ 234.05 MiB │ 688.49 MiB │ 2.94 │
+│ ParentId │ 107.78 MiB │ 321.33 MiB │ 2.98 │
+│ Id │ 159.70 MiB │ 227.38 MiB │ 1.42 │
+│ AcceptedAnswerId │ 40.34 MiB │ 227.38 MiB │ 5.64 │
+│ ClosedDate │ 5.93 MiB │ 9.49 MiB │ 1.6 │
+│ LastActivityDate │ 246.55 MiB │ 454.76 MiB │ 1.84 │
+│ CommentCount │ 635.78 KiB │ 56.84 MiB │ 91.55 │
+│ OwnerUserId │ 183.86 MiB │ 227.38 MiB │ 1.24 │
+│ AnswerCount │ 9.67 MiB │ 113.69 MiB │ 11.76 │
+│ FavoriteCount │ 19.77 KiB │ 147.32 KiB │ 7.45 │
+│ ViewCount │ 45.04 MiB │ 227.38 MiB │ 5.05 │
+│ LastEditorUserId │ 86.25 MiB │ 227.38 MiB │ 2.64 │
+│ ContentLicense │ 2.17 MiB │ 57.10 MiB │ 26.37 │
+│ OwnerDisplayName │ 5.95 MiB │ 16.19 MiB │ 2.72 │
+│ PostTypeId │ 39.49 KiB │ 56.84 MiB │ 1474.01 │
+│ CreationDate │ 181.23 MiB │ 454.76 MiB │ 2.51 │
+│ LastEditDate │ 134.07 MiB │ 454.76 MiB │ 3.39 │
+│ LastEditorDisplayName │ 2.15 MiB │ 6.25 MiB │ 2.91 │
+│ CommunityOwnedDate │ 824.60 KiB │ 1.34 MiB │ 1.66 │
+└───────────────────────┴─────────────────┴───────────────────┴─────────┘
+```
+
+## Choosing the right column compression codec {#choosing-the-right-column-compression-codec}
+
+With 컬럼 compression codecs, we can change the algorithm (and its settings) used to encode and compress each 컬럼.
+
+Encodings and compression work slightly differently with the same objective: to reduce our data size. Encodings apply a mapping to our data, transforming the values based on a function by exploiting properties of the data type. Conversely, compression uses a generic algorithm to compress data at a byte level.
+
+Typically, encodings are applied first before compression is used. Since different encodings and compression algorithms are effective on different value distributions, we must understand our data.
+
+ClickHouse supports a large number of codecs and compression algorithms. The following are some recommendations in order of importance:
+
+Recommendation | Reasoning
+--- | ---
+**`ZSTD` all the way** | `ZSTD` compression offers the best rates of compression. `ZSTD(1)` should be the default for most common types. Higher rates of compression can be tried by modifying the numeric value. We rarely see sufficient benefits on values higher than 3 for the increased cost of compression (slower insertion).
+**`Delta` for date and integer sequences** | `Delta`-based codecs work well whenever you have monotonic sequences or small deltas in consecutive values. More specifically, the Delta codec works well, provided the derivatives yield small numbers. If not, `DoubleDelta` is worth trying (this typically adds little if the first-level derivative from `Delta` is already very small). Sequences where the monotonic increment is uniform, will compress even better e.g. DateTime fields.
+**`Delta` improves `ZSTD`** | `ZSTD` is an effective codec on delta data - conversely, delta encoding can improve `ZSTD` compression. In the presence of `ZSTD`, other codecs rarely offer further improvement.
+**`LZ4` over `ZSTD` if possible** | if you get comparable compression between `LZ4` and `ZSTD`, favor the former since it offers faster decompression and needs less CPU. However, `ZSTD` will outperform `LZ4` by a significant margin in most cases. Some of these codecs may work faster in combination with `LZ4` while providing similar compression compared to `ZSTD` without a codec. This will be data specific, however, and requires testing.
+**`T64` for sparse or small ranges** | `T64` can be effective on sparse data or when the range in a block is small. Avoid `T64` for random numbers.
+**`Gorilla` and `T64` for unknown patterns?** | If the data has an unknown pattern, it may be worth trying `Gorilla` and `T64`.
+**`Gorilla` for gauge data** | `Gorilla` can be effective on floating point data, specifically that which represents gauge readings, i.e. random spikes.
+
+See [here](/sql-reference/statements/create/table#column_compression_codec) for further options.
+
+Below we specify the `Delta` codec for the `Id`, `ViewCount` and `AnswerCount`, hypothesizing these will be linearly correlated with the ordering key and thus should benefit from Delta encoding.
+
+```sql
+CREATE TABLE posts_v4
+(
+ `Id` Int32 CODEC(Delta, ZSTD),
+ `PostTypeId` Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime64(3, 'UTC'),
+ `Score` Int32,
+ `ViewCount` UInt32 CODEC(Delta, ZSTD),
+ `Body` String,
+ `OwnerUserId` Int32,
+ `OwnerDisplayName` String,
+ `LastEditorUserId` Int32,
+ `LastEditorDisplayName` String,
+ `LastEditDate` DateTime64(3, 'UTC'),
+ `LastActivityDate` DateTime64(3, 'UTC'),
+ `Title` String,
+ `Tags` String,
+ `AnswerCount` UInt16 CODEC(Delta, ZSTD),
+ `CommentCount` UInt8,
+ `FavoriteCount` UInt8,
+ `ContentLicense` LowCardinality(String),
+ `ParentId` String,
+ `CommunityOwnedDate` DateTime64(3, 'UTC'),
+ `ClosedDate` DateTime64(3, 'UTC')
+)
+ENGINE = MergeTree
+ORDER BY (PostTypeId, toDate(CreationDate), CommentCount)
+```
+
+The compression improvements for these 컬럼 is shown below:
+
+```sql
+SELECT
+ `table`,
+ name,
+ formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,
+ formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,
+ round(sum(data_uncompressed_bytes) / sum(data_compressed_bytes), 2) AS ratio
+FROM system.columns
+WHERE (name IN ('Id', 'ViewCount', 'AnswerCount')) AND (`table` IN ('posts_v3', 'posts_v4'))
+GROUP BY
+ `table`,
+ name
+ORDER BY
+ name ASC,
+ `table` ASC
+
+┌─table────┬─name────────┬─compressed_size─┬─uncompressed_size─┬─ratio─┐
+│ posts_v3 │ AnswerCount │ 9.67 MiB │ 113.69 MiB │ 11.76 │
+│ posts_v4 │ AnswerCount │ 10.39 MiB │ 111.31 MiB │ 10.71 │
+│ posts_v3 │ Id │ 159.70 MiB │ 227.38 MiB │ 1.42 │
+│ posts_v4 │ Id │ 64.91 MiB │ 222.63 MiB │ 3.43 │
+│ posts_v3 │ ViewCount │ 45.04 MiB │ 227.38 MiB │ 5.05 │
+│ posts_v4 │ ViewCount │ 52.72 MiB │ 222.63 MiB │ 4.22 │
+└──────────┴─────────────┴─────────────────┴───────────────────┴───────┘
+
+6 rows in set. Elapsed: 0.008 sec
+```
+
+### Compression in ClickHouse Cloud {#compression-in-clickhouse-cloud}
+
+In ClickHouse Cloud, we utilize the `ZSTD` compression algorithm (with a default value of 1) by default. While compression speeds can vary for this algorithm, depending on the compression level (higher = slower), it has the advantage of being consistently fast on decompression (around 20% variance) and also benefiting from the ability to be parallelized. Our historical tests also suggest that this algorithm is often sufficiently effective and can even outperform `LZ4` combined with a codec. It is effective on most 데이터 타입 and information distributions, and is thus a sensible general-purpose default and why our initial earlier compression is already excellent even without optimization.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-in-clickhouse.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-in-clickhouse.md.hash
new file mode 100644
index 00000000000..8bd72432f09
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-in-clickhouse.md.hash
@@ -0,0 +1 @@
+58e660f8e691fde0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-modes.md b/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-modes.md
new file mode 100644
index 00000000000..53b8e6eb6ae
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-modes.md
@@ -0,0 +1,59 @@
+---
+'slug': '/data-compression/compression-modes'
+'sidebar_position': 6
+'title': '압축 모드'
+'description': 'ClickHouse 컬럼 압축 모드'
+'keywords':
+- 'compression'
+- 'codec'
+- 'encoding'
+- 'modes'
+'doc_type': 'reference'
+---
+
+import CompressionBlock from '@site/static/images/data-compression/ch_compression_block.png';
+import Image from '@theme/IdealImage';
+
+
+# 압축 모드
+
+ClickHouse 프로토콜은 **데이터 블록**의 압축과 체크섬을 지원합니다. 어떤 모드를 선택해야 할지 확실치 않다면 `LZ4`를 사용하세요.
+
+:::tip
+사용 가능한 [컬럼 압축 코덱](../../sql-reference/statements/create/table#column_compression_codec)에 대해 더 알아보고, 테이블을 생성할 때 또는 그 후에 지정하세요.
+:::
+
+## 모드 {#modes}
+
+| 값 | 이름 | 설명 |
+|-------|---------------------|---------------------------------------------|
+| `0x02` | [없음](#none-mode) | 압축 없음, 오직 체크섬만 |
+| `0x82` | LZ4 | 매우 빠르고, 좋은 압축 성능 |
+| `0x90` | ZSTD | Zstandard, 꽤 빠르고, 최고의 압축 성능 |
+
+LZ4와 ZSTD는 동일한 저자에 의해 만들어졌지만, 각기 다른 트레이드오프를 가지고 있습니다. [Facebook 벤치마크](https://facebook.github.io/zstd/#benchmarks)에서:
+
+| 이름 | 비율 | 인코딩 | 디코딩 |
+|---------------------|-------|----------|-----------|
+| **zstd** 1.4.5 -1 | 2.8 | 500 MB/s | 1660 MB/s |
+| **lz4** 1.9.2 | 2.1 | 740 MB/s | 4530 MB/s |
+
+## 블록 {#block}
+
+| 필드 | 타입 | 설명 |
+|-------------------|-----------|-------------------------------------------------------|
+| 체크섬 | uint128 | (헤더 + 압축 데이터)의 [해시](../native-protocol/hash.md) |
+| 원본 크기 | uint32 | 헤더를 제외한 원본 크기 |
+| 데이터 크기 | uint32 | 압축되지 않은 데이터 크기 |
+| 모드 | byte | 압축 모드 |
+| 압축 데이터 | binary | 압축된 데이터 블록 |
+
+
+
+헤더는 (원본 크기 + 데이터 크기 + 모드)로 구성되며, 원본 크기는 len(헤더 + 압축 데이터)로 구성됩니다.
+
+체크섬은 `hash(헤더 + 압축 데이터)`이며, [ClickHouse CityHash](../native-protocol/hash.md)를 사용합니다.
+
+## 없음 모드 {#none-mode}
+
+*없음* 모드가 사용되면 `압축 데이터`는 원래 데이터와 동일합니다. 압축 모드가 없으면 체크섬을 통해 추가적인 데이터 무결성을 보장하는 데 유용한데, 해싱 오버헤드는 무시할 수 있을 정도로 작기 때문입니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-modes.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-modes.md.hash
new file mode 100644
index 00000000000..a0011e95b52
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-compression/compression-modes.md.hash
@@ -0,0 +1 @@
+fc096799a0689d03
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/backfilling.md b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/backfilling.md
new file mode 100644
index 00000000000..226bb99554f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/backfilling.md
@@ -0,0 +1,626 @@
+---
+'slug': '/data-modeling/backfilling'
+'title': '데이터 보충'
+'description': 'ClickHouse에서 대규모 데이터 세트를 보충하는 방법'
+'keywords':
+- 'materialized views'
+- 'backfilling'
+- 'inserting data'
+- 'resilient data load'
+'doc_type': 'guide'
+---
+
+import nullTableMV from '@site/static/images/data-modeling/null_table_mv.png';
+import Image from '@theme/IdealImage';
+
+
+# 데이터 백필
+
+ClickHouse를 처음 사용하는 경우든 기존 배포의 책임이 있든, 사용자는 역사적 데이터를 사용하여 테이블을 백필해야 할 필요가 있을 것입니다. 어떤 경우에는 이것이 비교적 간단하지만, 물리화된 뷰를 채워야 할 때 더 복잡해질 수 있습니다. 이 가이드는 사용자가 자신의 사용 사례에 적용할 수 있는 이 작업을 위한 몇 가지 프로세스를 문서화합니다.
+
+:::note
+이 가이드는 사용자가 [점진적 물리화된 뷰](/materialized-view/incremental-materialized-view) 및 [s3 및 gcs와 같은 테이블 함수 사용을 통한 데이터 로딩](/integrations/s3) 개념에 이미 익숙하다고 가정합니다. 또한 사용자가 [객체 스토리지에서의 삽입 성능 최적화](/integrations/s3/performance)에 대한 가이드를 읽어보기를 권장하며, 이 조언은 이 가이드 전반에 걸쳐 삽입에 적용할 수 있습니다.
+:::
+
+## 예제 데이터셋 {#example-dataset}
+
+이 가이드에서는 PyPI 데이터셋을 사용합니다. 이 데이터셋의 각 행은 `pip`와 같은 도구를 사용하여 Python 패키지를 다운로드한 것을 나타냅니다.
+
+예를 들어, 하위 집합은 단일 일인 `2024-12-17`을 포함하며 `https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/`에서 공개적으로 사용할 수 있습니다. 사용자는 다음과 같이 쿼리할 수 있습니다:
+
+```sql
+SELECT count()
+FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/*.parquet')
+
+┌────count()─┐
+│ 2039988137 │ -- 2.04 billion
+└────────────┘
+
+1 row in set. Elapsed: 32.726 sec. Processed 2.04 billion rows, 170.05 KB (62.34 million rows/s., 5.20 KB/s.)
+Peak memory usage: 239.50 MiB.
+```
+
+이 버킷의 전체 데이터셋에는 320GB 이상의 Parquet 파일이 포함되어 있습니다. 아래 예제에서는 glob 패턴을 사용하여 의도적으로 하위 집합을 목표로 설정합니다.
+
+우리는 사용자가 Kafka 또는 객체 스토리지와 같은 스트림을 소비하고 있다고 가정하며, 이 날짜 이후의 데이터를 처리합니다. 이 데이터의 스키마는 아래에 표시됩니다:
+
+```sql
+DESCRIBE TABLE s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/*.parquet')
+FORMAT PrettyCompactNoEscapesMonoBlock
+SETTINGS describe_compact_output = 1
+
+┌─name───────────────┬─type────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+│ timestamp │ Nullable(DateTime64(6)) │
+│ country_code │ Nullable(String) │
+│ url │ Nullable(String) │
+│ project │ Nullable(String) │
+│ file │ Tuple(filename Nullable(String), project Nullable(String), version Nullable(String), type Nullable(String)) │
+│ installer │ Tuple(name Nullable(String), version Nullable(String)) │
+│ python │ Nullable(String) │
+│ implementation │ Tuple(name Nullable(String), version Nullable(String)) │
+│ distro │ Tuple(name Nullable(String), version Nullable(String), id Nullable(String), libc Tuple(lib Nullable(String), version Nullable(String))) │
+│ system │ Tuple(name Nullable(String), release Nullable(String)) │
+│ cpu │ Nullable(String) │
+│ openssl_version │ Nullable(String) │
+│ setuptools_version │ Nullable(String) │
+│ rustc_version │ Nullable(String) │
+│ tls_protocol │ Nullable(String) │
+│ tls_cipher │ Nullable(String) │
+└────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+```
+
+:::note
+1조 개 이상의 행으로 구성된 전체 PyPI 데이터셋은 우리의 공개 데모 환경 [clickpy.clickhouse.com](https://clickpy.clickhouse.com)에서 사용할 수 있습니다. 이 데이터셋에 대한 추가 세부정보는 성능을 위한 물리화된 뷰 사용 및 데이터가 매일 어떻게 채워지는지에 대한 내용을 [여기](https://github.com/ClickHouse/clickpy)에서 확인할 수 있습니다.
+:::
+
+## 백필 시나리오 {#backfilling-scenarios}
+
+백필은 일반적으로 특정 시점에서 데이터 스트림을 소비할 때 필요합니다. 이 데이터는 [점진적 물리화된 뷰](/materialized-view/incremental-materialized-view)와 함께 ClickHouse 테이블에 삽입되며, 데이터가 삽입될 때 블록이 트리거됩니다. 이러한 뷰는 삽입 전에 데이터 변환 또는 집계를 수행하여 결과를 다운스트림 애플리케이션에서 나중에 사용할 수 있는 대상 테이블로 보냅니다.
+
+우리는 다음 시나리오를 다룰 것입니다:
+
+1. **기존 데이터 수집으로 백필 수행하기** - 새로운 데이터가 로드되고, 역사적 데이터를 백필해야 합니다. 이 역사적 데이터는 이미 식별되었습니다.
+2. **기존 테이블에 물리화된 뷰 추가** - 역사적 데이터가 채워진 설정에 새 물리화된 뷰를 추가해야 하며 데이터가 이미 스트리밍되고 있습니다.
+
+데이터는 객체 스토리지에서 백필될 것이라고 가정합니다. 모든 경우에 우리는 데이터 삽입의 중단을 피하는 것을 목표로 합니다.
+
+우리는 객체 스토리지에서 역사적 데이터를 백필하는 것을 권장합니다. 데이터는 가능한 경우 Parquet로 내보내져 최적의 읽기 성능과 압축(네트워크 전송 감소)을 위해 사용되어야 합니다. 일반적으로 150MB 크기의 파일이 선호되지만 ClickHouse는 [70개 이상의 파일 형식](/interfaces/formats)을 지원하며 모든 크기의 파일을 처리할 수 있습니다.
+
+## 중복 테이블 및 뷰 사용 {#using-duplicate-tables-and-views}
+
+모든 시나리오에서 우리는 "중복 테이블과 뷰"의 개념에 의존합니다. 이러한 테이블과 뷰는 실시간 스트리밍 데이터에 사용되는 복사본을 나타내며 실패가 발생할 경우 복구를 쉽게 수행할 수 있도록 백필을 고립 상태에서 수행할 수 있게 해줍니다. 예를 들어, 우리는 다음과 같은 주요 `pypi` 테이블과 Python 프로젝트별 다운로드 수를 계산하는 물리화된 뷰를 가지고 있습니다:
+
+```sql
+CREATE TABLE pypi
+(
+ `timestamp` DateTime,
+ `country_code` LowCardinality(String),
+ `project` String,
+ `type` LowCardinality(String),
+ `installer` LowCardinality(String),
+ `python_minor` LowCardinality(String),
+ `system` LowCardinality(String),
+ `on` String
+)
+ENGINE = MergeTree
+ORDER BY (project, timestamp)
+
+CREATE TABLE pypi_downloads
+(
+ `project` String,
+ `count` Int64
+)
+ENGINE = SummingMergeTree
+ORDER BY project
+
+CREATE MATERIALIZED VIEW pypi_downloads_mv TO pypi_downloads
+AS SELECT
+ project,
+ count() AS count
+FROM pypi
+GROUP BY project
+```
+
+우리는 주요 테이블과 관련된 뷰를 데이터의 하위 집합으로 채웁니다:
+
+```sql
+INSERT INTO pypi SELECT *
+FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/1734393600-000000000{000..100}.parquet')
+
+0 rows in set. Elapsed: 15.702 sec. Processed 41.23 million rows, 3.94 GB (2.63 million rows/s., 251.01 MB/s.)
+Peak memory usage: 977.49 MiB.
+
+SELECT count() FROM pypi
+
+┌──count()─┐
+│ 20612750 │ -- 20.61 million
+└──────────┘
+
+1 row in set. Elapsed: 0.004 sec.
+
+SELECT sum(count)
+FROM pypi_downloads
+
+┌─sum(count)─┐
+│ 20612750 │ -- 20.61 million
+└────────────┘
+
+1 row in set. Elapsed: 0.006 sec. Processed 96.15 thousand rows, 769.23 KB (16.53 million rows/s., 132.26 MB/s.)
+Peak memory usage: 682.38 KiB.
+```
+
+다른 하위 집합 `{101..200}`을 로드하려고 한다고 가정해 봅시다. `pypi`에 직접 삽입할 수 있지만, 중복 테이블을 생성함으로써 이 백필 작업을 고립 상태에서 수행할 수 있습니다.
+
+백필에 실패하면, 주요 테이블에 영향을 미치지 않으며 중복 테이블을 [truncate](/managing-data/truncate)하고 반복할 수 있습니다.
+
+이러한 뷰의 새 복사본을 생성하기 위해 `CREATE TABLE AS` 절을 사용하여 `_v2` 접미사를 추가할 수 있습니다:
+
+```sql
+CREATE TABLE pypi_v2 AS pypi
+
+CREATE TABLE pypi_downloads_v2 AS pypi_downloads
+
+CREATE MATERIALIZED VIEW pypi_downloads_mv_v2 TO pypi_downloads_v2
+AS SELECT
+ project,
+ count() AS count
+FROM pypi_v2
+GROUP BY project
+```
+
+이로 인해 두 번째 하위 집합의 약간의 크기로 채워지고 성공적으로 로드되었음을 확인합니다.
+
+```sql
+INSERT INTO pypi_v2 SELECT *
+FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/1734393600-000000000{101..200}.parquet')
+
+0 rows in set. Elapsed: 17.545 sec. Processed 40.80 million rows, 3.90 GB (2.33 million rows/s., 222.29 MB/s.)
+Peak memory usage: 991.50 MiB.
+
+SELECT count()
+FROM pypi_v2
+
+┌──count()─┐
+│ 20400020 │ -- 20.40 million
+└──────────┘
+
+1 row in set. Elapsed: 0.004 sec.
+
+SELECT sum(count)
+FROM pypi_downloads_v2
+
+┌─sum(count)─┐
+│ 20400020 │ -- 20.40 million
+└────────────┘
+
+1 row in set. Elapsed: 0.006 sec. Processed 95.49 thousand rows, 763.90 KB (14.81 million rows/s., 118.45 MB/s.)
+Peak memory usage: 688.77 KiB.
+```
+
+이 두 번째 로드 과정에서 어떤 실패를 경험하면, `pypi_v2` 및 `pypi_downloads_v2`를 간단히 [truncate](/managing-data/truncate)하고 데이터 로드를 반복할 수 있습니다.
+
+데이터 로드가 완료되면, [`ALTER TABLE MOVE PARTITION`](/sql-reference/statements/alter/partition#move-partition-to-table) 절을 사용하여 중복 테이블에서 주요 테이블로 데이터를 이동할 수 있습니다.
+
+```sql
+ALTER TABLE pypi_v2 MOVE PARTITION () TO pypi
+
+0 rows in set. Elapsed: 1.401 sec.
+
+ALTER TABLE pypi_downloads_v2 MOVE PARTITION () TO pypi_downloads
+
+0 rows in set. Elapsed: 0.389 sec.
+```
+
+:::note 파티션 이름
+위의 `MOVE PARTITION` 호출은 파티션 이름 `()`를 사용합니다. 이는 이 테이블의 단일 파티션을 나타냅니다(파티셔닝되지 않음). 파티션이 있는 테이블의 경우, 사용자는 각 파티션에 대해 여러 `MOVE PARTITION` 호출을 수행해야 합니다. 현재 파티션의 이름은 [`system.parts`](/operations/system-tables/parts) 테이블에서 확인할 수 있습니다. 예: `SELECT DISTINCT partition FROM system.parts WHERE (table = 'pypi_v2')`.
+:::
+
+이제 `pypi` 및 `pypi_downloads`가 완전한 데이터를 포함하고 있음을 확인할 수 있습니다. `pypi_downloads_v2` 및 `pypi_v2`는 안전하게 삭제할 수 있습니다.
+
+```sql
+SELECT count()
+FROM pypi
+
+┌──count()─┐
+│ 41012770 │ -- 41.01 million
+└──────────┘
+
+1 row in set. Elapsed: 0.003 sec.
+
+SELECT sum(count)
+FROM pypi_downloads
+
+┌─sum(count)─┐
+│ 41012770 │ -- 41.01 million
+└────────────┘
+
+1 row in set. Elapsed: 0.007 sec. Processed 191.64 thousand rows, 1.53 MB (27.34 million rows/s., 218.74 MB/s.)
+
+SELECT count()
+FROM pypi_v2
+```
+
+중요하게도, `MOVE PARTITION` 작업은 가벼우며(하드 링크를 활용) 원자적입니다. 즉, 실패하거나 성공하며 중간 상태가 없습니다.
+
+우리는 다음의 백필 시나리오에서 이 프로세스를 많이 활용합니다.
+
+이 프로세스가 사용자가 각 삽입 작업의 크기를 선택해야 함을 요구한다는 점에 주목하십시오.
+
+더 큰 삽입, 즉 더 많은 행은 더 적은 `MOVE PARTITION` 작업이 필요하게 됩니다. 그러나 이는 삽입 실패(예: 네트워크 중단) 시 회복 비용과 균형을 맞춰야 합니다. 사용자는 이 과정에 배치 파일을 추가하여 위험을 줄일 수 있습니다. 이는 범위 쿼리(예: `WHERE timestamp BETWEEN 2024-12-17 09:00:00 AND 2024-12-17 10:00:00`) 또는 glob 패턴을 사용하여 수행할 수 있습니다. 예를 들어,
+
+```sql
+INSERT INTO pypi_v2 SELECT *
+FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/1734393600-000000000{101..200}.parquet')
+INSERT INTO pypi_v2 SELECT *
+FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/1734393600-000000000{201..300}.parquet')
+INSERT INTO pypi_v2 SELECT *
+FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/1734393600-000000000{301..400}.parquet')
+--continued to all files loaded OR MOVE PARTITION call is performed
+```
+
+:::note
+ClickPipes는 객체 스토리지에서 데이터를 로드할 때 이 접근 방식을 사용하며, 대상 테이블과 그 물리화된 뷰의 중복을 자동으로 생성하고 사용자가 위 단계를 수행할 필요가 없도록 합니다. 또한 서로 다른 하위 집합(글로브 패턴을 통해)과 각자의 중복 테이블을 처리하는 여러 작업 스레드를 사용하여 데이터를 빠르게 적재하며 정확히 한 번씩의 의미론을 유지합니다. 관심 있는 분들은 [이 블로그](https://clickhouse.com/blog/supercharge-your-clickhouse-data-loads-part3)를 참조하실 수 있습니다.
+:::
+
+## 시나리오 1: 기존 데이터 수집으로 백필 {#scenario-1-backfilling-data-with-existing-data-ingestion}
+
+이 시나리오에서는 백필해야 하는 데이터가 격리된 버킷에 없고 필터링이 필요하다고 가정합니다. 데이터가 이미 삽입되고 있으며, 역사적 데이터를 백필해야 하는 타임스탬프 또는 단조롭게 증가하는 컬럼 값을 식별할 수 있습니다.
+
+이 과정은 다음 단계를 따릅니다:
+
+1. 체크포인트를 식별합니다 - 역사적 데이터를 복원해야 하는 타임스탬프 또는 컬럼 값을 식별합니다.
+2. 주요 테이블과 물리화된 뷰의 대상 테이블의 중복본을 생성합니다.
+3. (2)에서 생성된 대상 테이블을 가리키는 모든 물리화된 뷰의 복사본을 만듭니다.
+4. (2)에서 생성된 우리의 중복 주요 테이블에 삽입합니다.
+5. 중복 테이블에서 모든 파티션을 원래 버전으로 이동합니다. 중복 테이블을 삭제합니다.
+
+예를 들어, PyPI 데이터에서 데이터가 로드된 상태라고 가정해 보겠습니다. 최소 타임스탬프를 식별하고, 따라서 체크포인트를 확인할 수 있습니다.
+
+```sql
+SELECT min(timestamp)
+FROM pypi
+
+┌──────min(timestamp)─┐
+│ 2024-12-17 09:00:00 │
+└─────────────────────┘
+
+1 row in set. Elapsed: 0.163 sec. Processed 1.34 billion rows, 5.37 GB (8.24 billion rows/s., 32.96 GB/s.)
+Peak memory usage: 227.84 MiB.
+```
+
+위의 내용에서 `2024-12-17 09:00:00` 이전의 데이터를 로드해야 함을 알 수 있습니다. 이전 프로세스를 사용하여 중복 테이블과 뷰를 생성하고, 타임스탬프에 대한 필터를 사용하여 하위 집합을 로드합니다.
+
+```sql
+CREATE TABLE pypi_v2 AS pypi
+
+CREATE TABLE pypi_downloads_v2 AS pypi_downloads
+
+CREATE MATERIALIZED VIEW pypi_downloads_mv_v2 TO pypi_downloads_v2
+AS SELECT project, count() AS count
+FROM pypi_v2
+GROUP BY project
+
+INSERT INTO pypi_v2 SELECT *
+FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/pypi/2024-12-17/1734393600-*.parquet')
+WHERE timestamp < '2024-12-17 09:00:00'
+
+0 rows in set. Elapsed: 500.152 sec. Processed 2.74 billion rows, 364.40 GB (5.47 million rows/s., 728.59 MB/s.)
+```
+:::note
+Parquet에서 타임스탬프 컬럼에 대한 필터링은 매우 효율적일 수 있습니다. ClickHouse는 전체 데이터 범위를 식별하기 위해 타임스탬프 컬럼만 읽으므로 네트워크 트래픽이 최소화됩니다. ClickHouse 쿼리 엔진은 min-max와 같은 Parquet 인덱스도 활용할 수 있습니다.
+:::
+
+이 삽입이 완료되면 관련 파티션을 이동할 수 있습니다.
+
+```sql
+ALTER TABLE pypi_v2 MOVE PARTITION () TO pypi
+
+ALTER TABLE pypi_downloads_v2 MOVE PARTITION () TO pypi_downloads
+```
+
+역사적 데이터가 격리된 버킷에 있는 경우 위의 시간 필터가 필요하지 않습니다. 시간 또는 단조롭게 증가하는 컬럼을 사용할 수 없는 경우, 역사적 데이터를 격리하세요.
+
+:::note ClickHouse Cloud에서 ClickPipes 사용
+ClickHouse Cloud 사용자는 데이터를 고립된 버킷에 복원할 수 있는 경우 ClickPipes를 사용해야 합니다(필터가 필요하지 않음). 여러 작업자를 통해 로드를 병렬화하여 로드 시간을 단축할 수 있으며, ClickPipes는 위의 프로세스를 자동화하여 주요 테이블과 물리화된 뷰 모두에 대한 중복 테이블을 생성합니다.
+:::
+
+## 시나리오 2: 기존 테이블에 물리화된 뷰 추가 {#scenario-2-adding-materialized-views-to-existing-tables}
+
+중요한 데이터가 채워진 설정에 새 물리화된 뷰를 추가할 필요가 있는 경우는 드뭅니다. 타임스탬프 또는 단조롭게 증가하는 컬럼을 사용하여 스트림의 지점을 식별하는 것은 여기서 유용하며, 데이터 삽입 중단을 피할 수 있습니다. 아래 예제에서는 두 가지 경우를 가정하며, 삽입 시 중단을 피하는 접근 방식을 선호합니다.
+
+:::note POPULATE 피하기
+`POPULATE`(/sql-reference/statements/create/view#materialized-view) 명령을 사용하여 물리화된 뷰를 백필하는 것은 삽입이 중단된 소규모 데이터 집합을 제외하고는 권장하지 않습니다. 이 연산자는 소스 테이블에 삽입된 행을 놓칠 수 있으며, 물리화된 뷰는 populate 해시가 완료된 후에 생성될 수 있습니다. 또한 이 populate는 모든 데이터를 대상으로 실행되며, 대규모 데이터셋에서 중단이나 메모리 제한에 취약합니다.
+:::
+
+### 타임스탬프 또는 단조롭게 증가하는 컬럼 사용 가능 {#timestamp-or-monotonically-increasing-column-available}
+
+이 경우, 새 물리화된 뷰에 임의의 미래의 시간보다 큰 행만 고려하는 필터를 포함하도록 권장합니다. 이 물리화된 뷰는 이후 이 날짜를 기준으로 주요 테이블의 역사적 데이터를 사용하여 백필할 수 있습니다. 백필 접근 방식은 데이터 크기와 관련 쿼리의 복잡성에 따라 달라집니다.
+
+가장 간단한 접근 방식은 다음 단계를 따릅니다:
+
+1. 임의의 가까운 미래의 시간보다 큰 행만 고려하는 필터와 함께 물리화된 뷰를 생성합니다.
+2. 소스 테이블에서 뷰의 집계 쿼리를 읽어 물리화된 뷰의 대상 테이블에 삽입하는 `INSERT INTO SELECT` 쿼리를 실행합니다.
+
+이는 (2)단계에서 데이터의 하위 집합을 목표로 하거나 물리화된 뷰에 대한 중복 대상 테이블을 사용할 수 있도록 향상될 수 있습니다(삽입 완료 후 원본에 파티션을 연결).
+
+다음 물리화된 뷰를 고려합니다. 이 뷰는 시간당 가장 인기 있는 프로젝트를 계산합니다.
+
+```sql
+CREATE TABLE pypi_downloads_per_day
+(
+ `hour` DateTime,
+ `project` String,
+ `count` Int64
+)
+ENGINE = SummingMergeTree
+ORDER BY (project, hour)
+
+CREATE MATERIALIZED VIEW pypi_downloads_per_day_mv TO pypi_downloads_per_day
+AS SELECT
+ toStartOfHour(timestamp) as hour,
+ project,
+ count() AS count
+FROM pypi
+GROUP BY
+ hour,
+ project
+```
+
+대상 테이블을 추가할 수 있지만, 물리화된 뷰를 추가하기 전에 `SELECT` 절을 수정하여 임의의 가까운 미래의 시간보다 큰 행만 고려하도록 필터를 추가합니다. 이 경우 `2024-12-17 09:00:00`이 몇 분 후의 시간이라고 가정합니다.
+
+```sql
+CREATE MATERIALIZED VIEW pypi_downloads_per_day_mv TO pypi_downloads_per_day
+AS SELECT
+ toStartOfHour(timestamp) AS hour,
+ project, count() AS count
+FROM pypi WHERE timestamp >= '2024-12-17 09:00:00'
+GROUP BY hour, project
+```
+
+이 뷰가 추가된 후, 이 데이터 이전의 모든 데이터를 물리화된 뷰에 대해 백필할 수 있습니다.
+
+이 작업을 수행하는 가장 간단한 방법은 주요 테이블에서 타임스탬프가 최근에 추가된 데이터를 무시하는 필터가 있는 쿼리를 실행하고 결과를 우리의 뷰의 대상 테이블에 분산 삽입하는 것입니다. 예를 들어, 위의 뷰의 경우:
+
+```sql
+INSERT INTO pypi_downloads_per_day SELECT
+ toStartOfHour(timestamp) AS hour,
+ project,
+ count() AS count
+FROM pypi
+WHERE timestamp < '2024-12-17 09:00:00'
+GROUP BY
+ hour,
+ project
+
+Ok.
+
+0 rows in set. Elapsed: 2.830 sec. Processed 798.89 million rows, 17.40 GB (282.28 million rows/s., 6.15 GB/s.)
+Peak memory usage: 543.71 MiB.
+```
+
+:::note
+위의 예에서 우리의 대상 테이블은 [SummingMergeTree](/engines/table-engines/mergetree-family/summingmergetree)입니다. 이 경우, 원래 집계 쿼리를 간단히 사용할 수 있습니다. [AggregatingMergeTree](/engines/table-engines/mergetree-family/aggregatingmergetree)를 활용하는 더 복잡한 사용 사례의 경우, 사용자는 집계에 대해 `-State` 함수를 사용해야 합니다. 이의 예시는 [여기](/integrations/s3/performance#be-aware-of-merges)에서 확인할 수 있습니다.
+:::
+
+우리의 경우, 이는 비교적 경량 집계로 3초 이내에 완료되며 600MiB 미만의 메모리를 사용합니다. 더 복잡한 집계나 긴 실행 시간을 요구하는 경우, 사용자는 이전 중복 테이블 접근 방식을 사용하여 이 프로세스를 더욱 탄력 있게 만들 수 있습니다. 즉, 그림자 대상 테이블을 생성하고(`pypi_downloads_per_day_v2`와 같은) 이 테이블에 삽입하고 그 결과 파티션을 `pypi_downloads_per_day`에 연결하는 것입니다.
+
+종종 물리화된 뷰의 쿼리는 더 복잡할 수 있으며(사용자가 뷰를 사용하지 않을 이유가 없다면 드물지 않음) 리소스를 소모할 수 있습니다. 드물게는 쿼리를 수행하는 데 필요한 리소스가 서버의 능력을 초과할 수 있습니다. 이는 ClickHouse 물리화된 뷰의 장점 중 하나를 강조합니다. 즉, 점진적이며 한 번에 전체 데이터셋을 처리하지 않습니다!
+
+이 경우, 사용자는 여러 옵션을 가집니다:
+
+1. 쿼리를 수정하여 범위를 백필합니다. 예: `WHERE timestamp BETWEEN 2024-12-17 08:00:00 AND 2024-12-17 09:00:00`, `WHERE timestamp BETWEEN 2024-12-17 07:00:00 AND 2024-12-17 08:00:00` 등.
+2. [Null 테이블 엔진](/engines/table-engines/special/null)을 사용하여 물리화된 뷰를 채웁니다. 이렇게 하면 일반적인 물리화된 뷰의 점진적 채우기를 복제하며, 블록 단위로 쿼리를 실행합니다(구성 가능한 크기).
+
+(1)은 가장 간단한 접근 방식으로 종종 충분합니다. 간결함을 위해 예제를 포함하지 않습니다.
+
+(2)를 아래에서 더 탐색합니다.
+
+#### 물리화된 뷰를 채우기 위해 Null 테이블 엔진 사용 {#using-a-null-table-engine-for-filling-materialized-views}
+
+[Null 테이블 엔진](/engines/table-engines/special/null)은 데이터를 지속하지 않는 스토리지 엔진을 제공합니다(테이블 엔진 세계의 `/dev/null`로 생각할 수 있습니다). 이것은 모순처럼 보이지만, 물리화된 뷰는 여전히 이 테이블 엔진에 삽입된 데이터에 대해 실행됩니다. 이를 통해 원래 데이터를 지속하지 않고 물리화된 뷰를 구축할 수 있으며, I/O 및 관련 스토리지를 피할 수 있습니다.
+
+중요하게도, 테이블 엔진에 연결된 모든 물리화된 뷰는 삽입되는 블록 단위로 실행되며, 그 결과를 대상 테이블로 전송합니다. 이러한 블록은 구성 가능 크기입니다. 더 큰 블록은 효율성을 높일 수 있지만(더 빠른 처리) 더 많은 리소스(주로 메모리)가 소모됩니다. 이 테이블 엔진을 사용하면 물리화된 뷰를 점진적으로 구축할 수 있습니다. 즉, 블록 단위로 진행하며 전체 집계를 메모리에 유지할 필요가 없습니다.
+
+
+
+
+
+다음 예를 고려합니다:
+
+```sql
+CREATE TABLE pypi_v2
+(
+ `timestamp` DateTime,
+ `project` String
+)
+ENGINE = Null
+
+CREATE MATERIALIZED VIEW pypi_downloads_per_day_mv_v2 TO pypi_downloads_per_day
+AS SELECT
+ toStartOfHour(timestamp) as hour,
+ project,
+ count() AS count
+FROM pypi_v2
+GROUP BY
+ hour,
+ project
+```
+
+여기서 우리는 물리화된 뷰를 구축하는 데 사용될 행을 수신할 `pypi_v2`라는 Null 테이블을 생성합니다. 필요한 열만 포함하도록 스키마를 제한하는 방법에 주목하십시오. 우리의 물리화된 뷰는 이 테이블에 삽입된 행에 대해 집계를 수행하며(한 번에 한 블록씩), 그 결과를 우리의 대상 테이블인 `pypi_downloads_per_day`로 전송합니다.
+
+:::note
+여기서 우리는 `pypi_downloads_per_day`을 대상 테이블로 사용했습니다. 추가적인 복원력을 위해, 사용자는 이전 예제에서 보여준 것처럼 중복 테이블 `pypi_downloads_per_day_v2`를 생성하고 이를 뷰의 대상 테이블로 사용할 수 있습니다. 삽입이 완료되면 `pypi_downloads_per_day_v2`의 파티션은 `pypi_downloads_per_day`로 이동될 수 있습니다. 이는 삽입이 메모리 문제나 서버 중단으로 인해 실패하는 경우 복구를 가능하게 합니다. 즉, 우리는 단순히 `pypi_downloads_per_day_v2`를 truncate하고, 설정을 조정하고, 재시도하면 됩니다.
+:::
+
+이 물리화된 뷰를 채우기 위해, 우리는 `pypi`에서 `pypi_v2`로 백필할 관련 데이터를 간단히 삽입합니다.
+
+```sql
+INSERT INTO pypi_v2 SELECT timestamp, project FROM pypi WHERE timestamp < '2024-12-17 09:00:00'
+
+0 rows in set. Elapsed: 27.325 sec. Processed 1.50 billion rows, 33.48 GB (54.73 million rows/s., 1.23 GB/s.)
+Peak memory usage: 639.47 MiB.
+```
+
+여기에서 우리의 메모리 사용량이 `639.47 MiB`임을 확인하세요.
+
+##### 성능 및 리소스 조정 {#tuning-performance--resources}
+
+위 시나리오에서 성능과 리소스의 여러 요인이 결정됩니다. 조정을 시도하기 전에, 우리는 독자들이 [S3 삽입 및 읽기 성능 최적화 가이드](/integrations/s3/performance)에서 문서화된 삽입 메커니즘을 이해할 것을 권장합니다. 요약하면:
+
+- **읽기 병렬성** - 읽는 데 사용되는 스레드 수입니다. [`max_threads`](/operations/settings/settings#max_threads)를 통해 제어됩니다. ClickHouse Cloud에서는 인스턴스 크기에 따라 결정되며 기본값은 vCPU 수입니다. 이 값을 늘리면 메모리 사용량이 증가하는 대신 읽기 성능이 향상될 수 있습니다.
+- **삽입 병렬성** - 삽입에 사용되는 삽입 스레드 수입니다. [`max_insert_threads`](/operations/settings/settings#max_insert_threads)를 통해 제어됩니다. ClickHouse Cloud에서는 인스턴스 크기에 따라 결정되며(2~4 사이) OSS에서는 1로 설정됩니다. 이 값을 늘리면 메모리 사용량이 증가하는 대가로 성능이 향상될 수 있습니다.
+- **삽입 블록 크기** - 데이터는 블록을 메모리 삽입 블록에 따라 끌어와서 구문 분석하고 형성하는 루프에서 처리됩니다. 이러한 블록은 정렬되어 최적화되고 압축되며 새 [데이터 파트](/parts)로 스토리지에 기록됩니다. 삽입 블록의 크기는 [`min_insert_block_size_rows`](/operations/settings/settings#min_insert_block_size_rows)와 [`min_insert_block_size_bytes`](/operations/settings/settings#min_insert_block_size_bytes)(압축되지 않음) 설정에 의해 제어되며 메모리 사용량과 디스크 I/O에 영향을 미칩니다. 더 큰 블록은 더 많은 메모리를 사용하지만 더 적은 파트를 생성하여 I/O 및 백그라운드 병합을 줄입니다. 이러한 설정은 최소 임계값을 나타내며(먼저 도달하는 것이 플러시를 트리거함).
+- **물리화된 뷰 블록 크기** - 주요 삽입을 위한 위의 메커니즘 외에도, 물리화된 뷰에 삽입하기 전에 블록이 압축되어 더 효율적으로 처리됩니다. 이러한 블록의 크기는 [`min_insert_block_size_bytes_for_materialized_views`](/operations/settings/settings#min_insert_block_size_bytes_for_materialized_views)와 [`min_insert_block_size_rows_for_materialized_views`](/operations/settings/settings#min_insert_block_size_rows_for_materialized_views) 설정에 의해 결정됩니다. 더 큰 블록은 더 많은 메모리 사용량을 감수하더라도 더 효율적인 처리를 가능하게 합니다. 기본적으로 이러한 설정은 원본 테이블 설정값인 [`min_insert_block_size_rows`](/operations/settings/settings#min_insert_block_size_rows)와 [`min_insert_block_size_bytes`](/operations/settings/settings#min_insert_block_size_bytes)로 되돌아갑니다.
+
+성능 향상을 위해, 사용자는 [삽입의 스레드 및 블록 크기 조정](/integrations/s3/performance#tuning-threads-and-block-size-for-inserts) 섹션에 설명된 가이드를 따를 수 있습니다. 대부분의 경우 성능 향상을 위해 `min_insert_block_size_bytes_for_materialized_views` 및 `min_insert_block_size_rows_for_materialized_views`를 수정할 필요는 없습니다. 이를 수정한다면, `min_insert_block_size_rows` 및 `min_insert_block_size_bytes`에 대해 논의된 동일한 모범 사례를 사용하십시오.
+
+메모리를 최소화하려면 사용자는 이러한 설정을 실험해 볼 수 있습니다. 이는 불가피하게 성능을 낮출 것입니다. 앞의 쿼리를 사용하여 아래에 예를 보여줍니다.
+
+`max_insert_threads`를 1로 낮추면 메모리 오버헤드를 줄일 수 있습니다.
+
+```sql
+INSERT INTO pypi_v2
+SELECT
+ timestamp,
+ project
+FROM pypi
+WHERE timestamp < '2024-12-17 09:00:00'
+SETTINGS max_insert_threads = 1
+
+0 rows in set. Elapsed: 27.752 sec. Processed 1.50 billion rows, 33.48 GB (53.89 million rows/s., 1.21 GB/s.)
+Peak memory usage: 506.78 MiB.
+```
+
+`max_threads` 설정을 1로 낮추면 메모리를 추가로 줄일 수 있습니다.
+
+```sql
+INSERT INTO pypi_v2
+SELECT timestamp, project
+FROM pypi
+WHERE timestamp < '2024-12-17 09:00:00'
+SETTINGS max_insert_threads = 1, max_threads = 1
+
+Ok.
+
+0 rows in set. Elapsed: 43.907 sec. Processed 1.50 billion rows, 33.48 GB (34.06 million rows/s., 762.54 MB/s.)
+Peak memory usage: 272.53 MiB.
+```
+
+마지막으로, `min_insert_block_size_rows`를 0으로 설정(블록 크기에 대한 결정 요소 비활성화)하고 `min_insert_block_size_bytes`를 10485760(10MiB)으로 설정하면 메모리를 추가로 줄일 수 있습니다.
+
+```sql
+INSERT INTO pypi_v2
+SELECT
+ timestamp,
+ project
+FROM pypi
+WHERE timestamp < '2024-12-17 09:00:00'
+SETTINGS max_insert_threads = 1, max_threads = 1, min_insert_block_size_rows = 0, min_insert_block_size_bytes = 10485760
+
+0 rows in set. Elapsed: 43.293 sec. Processed 1.50 billion rows, 33.48 GB (34.54 million rows/s., 773.36 MB/s.)
+Peak memory usage: 218.64 MiB.
+```
+
+마지막으로, 블록 크기를 낮추면 더 많은 파트가 생성되고 더 큰 병합 압력이 발생한다는 점에 유의해야 합니다. 위에서 논의된 바와 같이 [여기](https://integrations/s3/performance#be-aware-of-merges)에서 이러한 설정은 신중히 변경해야 합니다.
+
+### 타임스탬프 또는 단조롭게 증가하는 컬럼 없음 {#no-timestamp-or-monotonically-increasing-column}
+
+위의 프로세스는 사용자가 타임스탬프 또는 단조롭게 증가하는 컬럼을 보유하고 있어야 합니다. 어떤 경우에는 이는 단순히 제공되지 않습니다. 이 경우, 우리는 다음 프로세스를 권장합니다. 이는 앞서 설명한 많은 단계를 활용하지만 사용자가 삽입을 일시 중지해야 합니다.
+
+1. 주요 테이블에 대한 삽입을 일시 중지합니다.
+2. `CREATE AS` 구문을 사용하여 주요 대상 테이블의 중복본을 생성합니다.
+3. [`ALTER TABLE ATTACH`](/sql-reference/statements/alter/partition#attach-partitionpart)를 사용하여 원래 대상 테이블의 파티션을 중복본에 연결합니다. **참고:** 이 attach 작업은 이전에 사용된 이동과 다릅니다. 하드 링크에 의존하지만, 원래 테이블의 데이터는 보존됩니다.
+4. 새 물리화된 뷰를 생성합니다.
+5. 삽입을 다시 시작합니다. **참고:** 삽입은 대상 테이블만 업데이트하며, 중복본은 원래 데이터만 참조하게 됩니다.
+6. 위에서 사용한 타임스탬프가 있는 데이터에 대해 사용한 것과 동일한 방식으로 물리화된 뷰를 백필합니다. 중복 테이블을 소스로 사용합니다.
+
+PyPI와 이전의 새로운 물리화된 뷰 `pypi_downloads_per_day`를 사용한 다음 예제를 고려합니다(타임스탬프를 사용할 수 없다고 가정함):
+
+```sql
+SELECT count() FROM pypi
+
+┌────count()─┐
+│ 2039988137 │ -- 2.04 billion
+└────────────┘
+
+1 row in set. Elapsed: 0.003 sec.
+
+-- (1) Pause inserts
+-- (2) Create a duplicate of our target table
+
+CREATE TABLE pypi_v2 AS pypi
+
+SELECT count() FROM pypi_v2
+
+┌────count()─┐
+│ 2039988137 │ -- 2.04 billion
+└────────────┘
+
+1 row in set. Elapsed: 0.004 sec.
+
+-- (3) Attach partitions from the original target table to the duplicate.
+
+ALTER TABLE pypi_v2
+ (ATTACH PARTITION tuple() FROM pypi)
+
+-- (4) Create our new materialized views
+
+CREATE TABLE pypi_downloads_per_day
+(
+ `hour` DateTime,
+ `project` String,
+ `count` Int64
+)
+ENGINE = SummingMergeTree
+ORDER BY (project, hour)
+
+CREATE MATERIALIZED VIEW pypi_downloads_per_day_mv TO pypi_downloads_per_day
+AS SELECT
+ toStartOfHour(timestamp) as hour,
+ project,
+ count() AS count
+FROM pypi
+GROUP BY
+ hour,
+ project
+
+-- (4) Restart inserts. We replicate here by inserting a single row.
+
+INSERT INTO pypi SELECT *
+FROM pypi
+LIMIT 1
+
+SELECT count() FROM pypi
+
+┌────count()─┐
+│ 2039988138 │ -- 2.04 billion
+└────────────┘
+
+1 row in set. Elapsed: 0.003 sec.
+
+-- notice how pypi_v2 contains same number of rows as before
+
+SELECT count() FROM pypi_v2
+┌────count()─┐
+│ 2039988137 │ -- 2.04 billion
+└────────────┘
+
+-- (5) Backfill the view using the backup pypi_v2
+
+INSERT INTO pypi_downloads_per_day SELECT
+ toStartOfHour(timestamp) as hour,
+ project,
+ count() AS count
+FROM pypi_v2
+GROUP BY
+ hour,
+ project
+
+0 rows in set. Elapsed: 3.719 sec. Processed 2.04 billion rows, 47.15 GB (548.57 million rows/s., 12.68 GB/s.)
+
+DROP TABLE pypi_v2;
+```
+
+결전적인 단계에서 우리는 이전에 설명한 간단한 `INSERT INTO SELECT` 접근 방식을 사용하여 `pypi_downloads_per_day`를 백필합니다. 이는 위에서 문서화된 Null 테이블 접근 방식을 활용하여 중복 테이블에 대한 사용을 선택적으로 포함시킬 수 있습니다.
+
+이 작업을 수행하려면 삽입을 일시 중지해야 하지만, 중간 작업은 일반적으로 빠르게 완료될 수 있습니다. 데이터 중단을 최소화하여 진행할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/backfilling.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/backfilling.md.hash
new file mode 100644
index 00000000000..9e42d88ae50
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/backfilling.md.hash
@@ -0,0 +1 @@
+c2c821e1ba38bd0a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/denormalization.md b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/denormalization.md
new file mode 100644
index 00000000000..0a57a0f1a03
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/denormalization.md
@@ -0,0 +1,378 @@
+---
+'slug': '/data-modeling/denormalization'
+'title': '비정규화 데이터'
+'description': '비정규화를 사용하여 쿼리 성능을 향상시키는 방법'
+'keywords':
+- 'data denormalization'
+- 'denormalize'
+- 'query optimization'
+'doc_type': 'guide'
+---
+
+import denormalizationDiagram from '@site/static/images/data-modeling/denormalization-diagram.png';
+import denormalizationSchema from '@site/static/images/data-modeling/denormalization-schema.png';
+import Image from '@theme/IdealImage';
+
+
+# 데이터 비정규화
+
+데이터 비정규화는 ClickHouse에서 쿼리 대기 시간을 최소화하기 위해 조인을 피하는 평면 테이블을 사용하는 기술입니다.
+
+## 정규화된 스키마와 비정규화된 스키마 비교 {#comparing-normalized-vs-denormalized-schemas}
+
+데이터 비정규화는 특정 쿼리 패턴에 대해 데이터베이스 성능을 최적화하기 위해 정규화 과정을 의도적으로 반전시키는 과정을 포함합니다. 정규화된 데이터베이스에서는 데이터가 중복을 최소화하고 데이터 무결성을 보장하기 위해 여러 관련 테이블로 분할됩니다. 비정규화는 테이블을 결합하고 데이터를 복제하며 계산된 필드를 단일 테이블이나 적은 수의 테이블에 포함시켜 중복을 다시 도입합니다. 이는 쿼리에서 삽입 시간으로 조인을 이동시키는 효과를 가져옵니다.
+
+이 과정은 쿼리 시간에 복잡한 조인의 필요성을 줄이고 읽기 작업을 상당히 가속화할 수 있어, 무거운 읽기 요구 사항과 복잡한 쿼리를 가진 애플리케이션에 이상적입니다. 그러나 이는 쓰기 작업 및 유지 관리의 복잡성을 증가시킬 수 있으며, 복제된 데이터에 대한 모든 변경 사항은 일관성을 유지하기 위해 모든 인스턴스에 전파되어야 합니다.
+
+
+
+
+
+`JOIN` 지원이 없는 경우 비정규화된 데이터는 부모 행에 모든 통계 또는 관련 행을 컬럼과 중첩된 객체로 저장하는 것을 의미하는 일반적인 기술입니다. 예를 들어, 블로그의 예시 스키마에서는 해당 게시물에 대한 모든 `Comments`를 객체의 `Array`로 저장할 수 있습니다.
+
+## 비정규화를 사용할 때 {#when-to-use-denormalization}
+
+일반적으로 다음의 경우에 비정규화를 권장합니다:
+
+- 데이터가 자주 변경되지 않거나 분석 쿼리에서 데이터가 제공되기까지의 지연을 감내할 수 있는 테이블에서 비정규화합니다. 즉, 데이터를 배치로 완전히 다시 로드할 수 있어야 합니다.
+- 다대다 관계의 비정규화를 피합니다. 이 경우 단일 소스 행이 변경될 때 많은 행을 업데이트해야 할 수 있습니다.
+- 높은 카디널리티 관계의 비정규화를 피합니다. 테이블의 각 행에 다른 테이블의 수천 개 관련 항목이 있을 경우, 이는 원시 유형 또는 튜플의 `Array`로 표현되어야 합니다. 일반적으로 1000개 이상의 튜플을 가진 배열은 비추천됩니다.
+- 모든 컬럼을 중첩 객체로 비정규화하기 보다는, 물리화된 뷰를 사용하여 통계만 비정규화하는 것을 고려합니다(자세한 내용은 아래 참조).
+
+모든 정보가 비정규화될 필요는 없습니다 - 자주 액세스해야 하는 핵심 정보만 비정규화하면 됩니다.
+
+비정규화 작업은 ClickHouse 또는 업스트림에서 처리할 수 있으며, 예를 들어 Apache Flink를 사용할 수 있습니다.
+
+## 자주 업데이트되는 데이터에 대한 비정규화를 피합니다 {#avoid-denormalization-on-frequently-updated-data}
+
+ClickHouse의 경우 비정규화는 사용자가 쿼리 성능을 최적화하기 위해 사용할 수 있는 몇 가지 옵션 중 하나지만 신중하게 사용해야 합니다. 데이터가 자주 업데이트되고 거의 실시간으로 업데이트해야 하는 경우, 이 접근 방식은 피해야 합니다. 주요 테이블이 주로 추가만 가능하거나 주기적으로 배치로 새로 고쳐질 수 있다면 사용하세요. 예를 들어, 일일 단위로.
+
+이 접근법은 단 하나의 주요 과제 - 쓰기 성능 및 데이터 업데이트로 어려움을 겪습니다. 더 구체적으로, 비정규화는 데이터 조인의 책임을 쿼리 시간에서 수집 시간으로 전환합니다. 이는 쿼리 성능을 크게 향상시킬 수 있지만, 수집을 복잡하게 만들고 데이터 파이프라인이 해당 구성 요소를 변경할 경우 ClickHouse에 행을 다시 삽입해야 함을 의미합니다. 이는 한 소스 행의 변경이 ClickHouse에 있는 많은 행을 업데이트해야 할 수 있음을 뜻합니다. 복잡한 조인으로 구성된 행이 있는 복잡한 스키마에서는 조인의 중첩 구성 요소에서 단일 행의 변경이 수백만 개의 행을 업데이트해야 할 수 있는 상황이 발생할 수 있습니다.
+
+실시간으로 이를 달성하는 것은 종종 비현실적이며, 두 가지 과제 때문에 상당한 엔지니어링이 필요합니다:
+
+1. 테이블 행이 변경될 때 올바른 조인 문을 트리거합니다. 이상적으로는 조인을 위해 모든 객체가 업데이트되는 것을 피해야 하며, 영향을 받은 객체만 수정해야 합니다. 높은 처리량에서 올바른 행으로 필터링하기 위해 조인을 수정하는 것은 추가 도구나 엔지니어링이 필요합니다.
+2. ClickHouse에서 행 업데이트는 신중하게 관리되어야 하며, 추가적인 복잡성을 도입합니다.
+
+
+
+따라서 모든 비정규화된 객체를 주기적으로 다시 로드하는 배치 업데이트 프로세스가 더 일반적입니다.
+
+## 비정규화에 대한 실제 사례 {#practical-cases-for-denormalization}
+
+비정규화가 합리적일 수 있는 몇 가지 실제 예와 대안적 접근법이 더 바람직한 사례를 고려해 봅시다.
+
+`Posts` 테이블이 이미 `AnswerCount` 및 `CommentCount`와 같은 통계로 비정규화되어 있다고 가정해 보겠습니다. 원본 데이터가 이러한 형식으로 제공됩니다. 실제로 이 정보는 자주 변경될 가능성이 높기 때문에 정규화하는 것이 좋습니다. 이 열의 많은 데이터는 다른 테이블을 통해 사용할 수 있습니다. 예를 들어 게시물에 대한 댓글은 `PostId` 열과 `Comments` 테이블을 통해 사용 가능합니다. 예시의 목적을 위해, 우리는 게시물이 배치 프로세스를 통해 다시 로드된다고 가정합니다.
+
+우리는 또한 `Posts`를 대상으로 다른 테이블을 비정규화하는 것만 고려합니다. 우리가 이를 분석을 위한 주요 테이블로 간주하기 때문입니다. 반대 방향으로 비정규화하는 것도 일부 쿼리에는 적합하며, 동일한 고려 사항이 적용됩니다.
+
+*다음 예시 각각에 대해 두 테이블이 조인에 사용되어야 함을 가정합니다.*
+
+### 게시물과 투표 {#posts-and-votes}
+
+게시물에 대한 투표는 별도의 테이블로 표현됩니다. 최적화된 스키마는 아래에 표시되며, 데이터를 로드하기 위한 삽입 명령도 포함되어 있습니다:
+
+```sql
+CREATE TABLE votes
+(
+ `Id` UInt32,
+ `PostId` Int32,
+ `VoteTypeId` UInt8,
+ `CreationDate` DateTime64(3, 'UTC'),
+ `UserId` Int32,
+ `BountyAmount` UInt8
+)
+ENGINE = MergeTree
+ORDER BY (VoteTypeId, CreationDate, PostId)
+
+INSERT INTO votes SELECT * FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/votes/*.parquet')
+
+0 rows in set. Elapsed: 26.272 sec. Processed 238.98 million rows, 2.13 GB (9.10 million rows/s., 80.97 MB/s.)
+```
+
+첫눈에 이들은 게시물 테이블에서 비정규화할 후보가 될 수 있습니다. 그러나 이 접근 방식에는 몇 가지 도전과제가 있습니다.
+
+게시물에 투표가 자주 추가됩니다. 시간이 지남에 따라 게시물당 수가 줄어들 수 있지만, 다음 쿼리는 30,000개의 게시물에 대해 시간당 약 40,000개의 투표가 있다는 것을 보여줍니다.
+
+```sql
+SELECT round(avg(c)) AS avg_votes_per_hr, round(avg(posts)) AS avg_posts_per_hr
+FROM
+(
+ SELECT
+ toStartOfHour(CreationDate) AS hr,
+ count() AS c,
+ uniq(PostId) AS posts
+ FROM votes
+ GROUP BY hr
+)
+
+┌─avg_votes_per_hr─┬─avg_posts_per_hr─┐
+│ 41759 │ 33322 │
+└──────────────────┴──────────────────┘
+```
+
+지연을 감내할 수 있다면 배치로 해결할 수 있지만, 여전히 모든 게시물을 주기적으로 다시 로드하지 않는 한 업데이트를 처리해야 합니다(바람직하다고 보기 어려움).
+
+더 문제가 되는 것은 일부 게시물이 매우 많은 수의 투표를 가지고 있다는 것입니다:
+
+```sql
+SELECT PostId, concat('https://stackoverflow.com/questions/', PostId) AS url, count() AS c
+FROM votes
+GROUP BY PostId
+ORDER BY c DESC
+LIMIT 5
+
+┌───PostId─┬─url──────────────────────────────────────────┬─────c─┐
+│ 11227902 │ https://stackoverflow.com/questions/11227902 │ 35123 │
+│ 927386 │ https://stackoverflow.com/questions/927386 │ 29090 │
+│ 11227809 │ https://stackoverflow.com/questions/11227809 │ 27475 │
+│ 927358 │ https://stackoverflow.com/questions/927358 │ 26409 │
+│ 2003515 │ https://stackoverflow.com/questions/2003515 │ 25899 │
+└──────────┴──────────────────────────────────────────────┴───────┘
+```
+
+여기서의 주요 관찰은 각 게시물에 대한 집계된 투표 통계가 대부분의 분석에 충분하다는 것입니다. 우리는 모든 투표정보를 비정규화할 필요가 없습니다. 예를 들어, 현재 `Score` 열은 총 업투표 수에서 다운투표 수를 뺀 통계입니다. 이상적으로는 쿼리 시간에 이 통계를 간단한 조회로 가져와야 합니다(자세한 내용은 [딕셔너리](/dictionary) 참조).
+
+### 사용자와 배지 {#users-and-badges}
+
+이제 `Users`와 `Badges`를 고려해 봅시다:
+
+
+
+
+다음 명령어로 데이터를 삽입합니다:
+
+
+```sql
+CREATE TABLE users
+(
+ `Id` Int32,
+ `Reputation` LowCardinality(String),
+ `CreationDate` DateTime64(3, 'UTC') CODEC(Delta(8), ZSTD(1)),
+ `DisplayName` String,
+ `LastAccessDate` DateTime64(3, 'UTC'),
+ `AboutMe` String,
+ `Views` UInt32,
+ `UpVotes` UInt32,
+ `DownVotes` UInt32,
+ `WebsiteUrl` String,
+ `Location` LowCardinality(String),
+ `AccountId` Int32
+)
+ENGINE = MergeTree
+ORDER BY (Id, CreationDate)
+```
+
+```sql
+CREATE TABLE badges
+(
+ `Id` UInt32,
+ `UserId` Int32,
+ `Name` LowCardinality(String),
+ `Date` DateTime64(3, 'UTC'),
+ `Class` Enum8('Gold' = 1, 'Silver' = 2, 'Bronze' = 3),
+ `TagBased` Bool
+)
+ENGINE = MergeTree
+ORDER BY UserId
+
+INSERT INTO users SELECT * FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/users.parquet')
+
+0 rows in set. Elapsed: 26.229 sec. Processed 22.48 million rows, 1.36 GB (857.21 thousand rows/s., 51.99 MB/s.)
+
+INSERT INTO badges SELECT * FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/badges.parquet')
+
+0 rows in set. Elapsed: 18.126 sec. Processed 51.29 million rows, 797.05 MB (2.83 million rows/s., 43.97 MB/s.)
+```
+
+사용자는 배지를 자주 획득할 수 있지만, 이는 일일 단위로 업데이트해야 할 데이터셋이 아닐 가능성이 높습니다. 배지와 사용자 간의 관계는 일대다입니다. 배지를 사용자에게 튜플 리스트로 간단히 비정규화할 수 있을까요? 가능하지만, 사용자당 최대 배지 수를 확인한 결과 이는 이상적이지 않다는 것을 시사합니다:
+
+```sql
+SELECT UserId, count() AS c FROM badges GROUP BY UserId ORDER BY c DESC LIMIT 5
+
+┌─UserId─┬─────c─┐
+│ 22656 │ 19334 │
+│ 6309 │ 10516 │
+│ 100297 │ 7848 │
+│ 157882 │ 7574 │
+│ 29407 │ 6512 │
+└────────┴───────┘
+```
+
+19,000개의 객체를 단일 행으로 비정규화하는 것은 현실적으로 어려울 것입니다. 이 관계는 별도의 테이블로 두거나 통계를 추가하는 것이 가장 좋을 수 있습니다.
+
+> 우리는 배지로부터 통계 정보를 사용자에게 비정규화할 수도 있습니다. 예를 들어, 배지 수와 같은 경우입니다. 우리는 삽입 시간에 이 데이터셋을 사용하여 딕셔너리를 사용하는 예를 고려합니다.
+
+### 게시물과 포스트링크 {#posts-and-postlinks}
+
+`PostLinks`는 사용자가 관련되거나 중복된 것으로 간주하는 `Posts`를 연결합니다. 다음 쿼리는 스키마와 로드 명령을 보여줍니다:
+
+```sql
+CREATE TABLE postlinks
+(
+ `Id` UInt64,
+ `CreationDate` DateTime64(3, 'UTC'),
+ `PostId` Int32,
+ `RelatedPostId` Int32,
+ `LinkTypeId` Enum('Linked' = 1, 'Duplicate' = 3)
+)
+ENGINE = MergeTree
+ORDER BY (PostId, RelatedPostId)
+
+INSERT INTO postlinks SELECT * FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/postlinks.parquet')
+
+0 rows in set. Elapsed: 4.726 sec. Processed 6.55 million rows, 129.70 MB (1.39 million rows/s., 27.44 MB/s.)
+```
+
+비정규화를 방지하는 과도한 링크를 가진 게시물이 없음을 확인할 수 있습니다:
+
+```sql
+SELECT PostId, count() AS c
+FROM postlinks
+GROUP BY PostId
+ORDER BY c DESC LIMIT 5
+
+┌───PostId─┬───c─┐
+│ 22937618 │ 125 │
+│ 9549780 │ 120 │
+│ 3737139 │ 109 │
+│ 18050071 │ 103 │
+│ 25889234 │ 82 │
+└──────────┴─────┘
+```
+
+마찬가지로 이러한 링크는 지나치게 빈번하게 발생하는 이벤트가 아닙니다:
+
+```sql
+SELECT
+ round(avg(c)) AS avg_votes_per_hr,
+ round(avg(posts)) AS avg_posts_per_hr
+FROM
+(
+ SELECT
+ toStartOfHour(CreationDate) AS hr,
+ count() AS c,
+ uniq(PostId) AS posts
+ FROM postlinks
+ GROUP BY hr
+)
+
+┌─avg_votes_per_hr─┬─avg_posts_per_hr─┐
+│ 54 │ 44 │
+└──────────────────┴──────────────────┘
+```
+
+우리는 다음 비정규화 예제로 이 내용을 사용합니다.
+
+### 간단한 통계 예제 {#simple-statistic-example}
+
+대부분의 경우, 비정규화는 부모 행에 단일 컬럼이나 통계를 추가하는 것을 요구합니다. 예를 들어, 중복 게시물의 수를 추가하여 게시물을 풍부하게 만들고 싶다면 단순히 컬럼을 추가하기만 하면 됩니다.
+
+```sql
+CREATE TABLE posts_with_duplicate_count
+(
+ `Id` Int32 CODEC(Delta(4), ZSTD(1)),
+ ... -other columns
+ `DuplicatePosts` UInt16
+) ENGINE = MergeTree
+ORDER BY (PostTypeId, toDate(CreationDate), CommentCount)
+```
+
+이 테이블을 채우기 위해, 우리는 중복 통계를 게시물과 조인하는 `INSERT INTO SELECT`를 사용합니다.
+
+```sql
+INSERT INTO posts_with_duplicate_count SELECT
+ posts.*,
+ DuplicatePosts
+FROM posts AS posts
+LEFT JOIN
+(
+ SELECT PostId, countIf(LinkTypeId = 'Duplicate') AS DuplicatePosts
+ FROM postlinks
+ GROUP BY PostId
+) AS postlinks ON posts.Id = postlinks.PostId
+```
+
+### 일대다 관계에 대한 복합 유형 활용 {#exploiting-complex-types-for-one-to-many-relationships}
+
+비정규화를 수행하기 위해서는 종종 복합 유형을 활용해야 합니다. 일대일 관계를 비정규화하는 경우, 열 수가 적으면 사용자가 원래 유형으로 행을 추가하는 것이 가능합니다. 그러나 이는 대형 객체의 경우가 많아 원하지 않으며 일대다 관계에서는 불가능합니다.
+
+복합 객체나 일대다 관계의 경우 사용자는 다음을 사용할 수 있습니다:
+
+- 명명된 튜플 - 이는 관련 구조를 열 집합으로 표현할 수 있게 해줍니다.
+- Array(Tuple) 또는 Nested - 객체를 각각 나타내는 명명된 튜플의 배열로, 일대다 관계에 적용 가능합니다.
+
+예를 들어, 아래에서 `PostLinks`를 `Posts`로 비정규화하는 것을 보여줍니다.
+
+각 게시물은 `PostLinks` 스키마에서 보여준 것처럼 다른 게시물에 대한 링크 수를 포함할 수 있습니다. 중첩형으로 이 연결된 게시물과 중복 게시물을 다음과 같이 표현할 수 있습니다:
+
+```sql
+SET flatten_nested=0
+CREATE TABLE posts_with_links
+(
+ `Id` Int32 CODEC(Delta(4), ZSTD(1)),
+ ... -other columns
+ `LinkedPosts` Nested(CreationDate DateTime64(3, 'UTC'), PostId Int32),
+ `DuplicatePosts` Nested(CreationDate DateTime64(3, 'UTC'), PostId Int32),
+) ENGINE = MergeTree
+ORDER BY (PostTypeId, toDate(CreationDate), CommentCount)
+```
+
+> `flatten_nested=0` 설정을 사용하는 것에 유의하십시오. 중첩 데이터를 평면화하지 않는 것이 좋습니다.
+
+`OUTER JOIN` 쿼리를 사용하여 `INSERT INTO SELECT`를 통해 이 비정규화를 수행할 수 있습니다:
+
+```sql
+INSERT INTO posts_with_links
+SELECT
+ posts.*,
+ arrayMap(p -> (p.1, p.2), arrayFilter(p -> p.3 = 'Linked' AND p.2 != 0, Related)) AS LinkedPosts,
+ arrayMap(p -> (p.1, p.2), arrayFilter(p -> p.3 = 'Duplicate' AND p.2 != 0, Related)) AS DuplicatePosts
+FROM posts
+LEFT JOIN (
+ SELECT
+ PostId,
+ groupArray((CreationDate, RelatedPostId, LinkTypeId)) AS Related
+ FROM postlinks
+ GROUP BY PostId
+) AS postlinks ON posts.Id = postlinks.PostId
+
+0 rows in set. Elapsed: 155.372 sec. Processed 66.37 million rows, 76.33 GB (427.18 thousand rows/s., 491.25 MB/s.)
+Peak memory usage: 6.98 GiB.
+```
+
+> 여기서의 타이밍에 유의하십시오. 우리는 약 2분 안에 6600만 행을 비정규화하는 데 성공했습니다. 이후에 보겠지만, 이는 우리가 스케줄할 수 있는 작업입니다.
+
+`PostLinks`를 `PostId`별로 각 배열로 축소하기 위해 `groupArray` 함수를 사용하는 것에 유의하십시오. 이 배열은 두 개의 하위 목록인 `LinkedPosts`와 `DuplicatePosts`로 필터링되며, 외부 조인에서 빈 결과를 제외합니다.
+
+새로운 비정규화된 구조를 보기 위해 몇 개의 행을 선택할 수 있습니다:
+
+```sql
+SELECT LinkedPosts, DuplicatePosts
+FROM posts_with_links
+WHERE (length(LinkedPosts) > 2) AND (length(DuplicatePosts) > 0)
+LIMIT 1
+FORMAT Vertical
+
+Row 1:
+──────
+LinkedPosts: [('2017-04-11 11:53:09.583',3404508),('2017-04-11 11:49:07.680',3922739),('2017-04-11 11:48:33.353',33058004)]
+DuplicatePosts: [('2017-04-11 12:18:37.260',3922739),('2017-04-11 12:18:37.260',33058004)]
+```
+
+## 비정규화 조정 및 스케줄링 {#orchestrating-and-scheduling-denormalization}
+
+### 배치 {#batch}
+
+비정규화를 활용하려면 변환 프로세스가 필요하며, 이 프로세스를 수행하고 조정할 수 있어야 합니다.
+
+우리는 ClickHouse를 사용하여 데이터가 `INSERT INTO SELECT`를 통해 로드된 후 이 변환을 수행하는 방법을 보여주었습니다. 이는 주기적인 배치 변환에 적합합니다.
+
+사용자는 정기적인 배치 로드 프로세스가 허용된다면 ClickHouse에서 이를 조정할 여러 가지 옵션이 있습니다:
+
+- **[갱신 가능한 물리화된 뷰](/materialized-view/refreshable-materialized-view)** - 갱신 가능한 물리화된 뷰를 사용하여 주기적으로 쿼리를 예약하고 그 결과를 대상 테이블로 보낼 수 있습니다. 쿼리 실행 시 뷰는 대상 테이블이 원자적으로 업데이트되도록 보장합니다. 이는 ClickHouse에서 이 작업을 스케줄링하는 자연스러운 수단입니다.
+- **외부 도구** - [dbt](https://www.getdbt.com/) 및 [Airflow](https://airflow.apache.org/)와 같은 도구를 활용하여 주기적으로 변환을 스케줄합니다. [dbt에 대한 ClickHouse 통합](/integrations/dbt)은 이는 원자적으로 수행되며, 새로운 버전의 대상 테이블이 생성되어 쿼리를 수신하는 버전과 원자적으로 교환됩니다( [EXCHANGE](/sql-reference/statements/exchange) 명령을 통해).
+
+### 스트리밍 {#streaming}
+
+사용자는 대체로 ClickHouse 외부에서 사전 삽입 중에 이러한 작업을 수행하거나 [Apache Flink](https://flink.apache.org/)와 같은 스트리밍 기술을 사용할 수 있습니다. 또는 데이터가 삽입되는 동안 이 프로세스를 수행하기 위해 점진적인 [물리화된 뷰](/guides/developer/cascading-materialized-views)를 사용할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/denormalization.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/denormalization.md.hash
new file mode 100644
index 00000000000..72434d2bc2f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/denormalization.md.hash
@@ -0,0 +1 @@
+788705f1ba8d2f76
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/index.md
new file mode 100644
index 00000000000..351e9935921
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/index.md
@@ -0,0 +1,27 @@
+---
+'slug': '/data-modeling/overview'
+'title': '데이터 모델링 개요'
+'description': '데이터 모델링 개요'
+'keywords':
+- 'data modelling'
+- 'schema design'
+- 'dictionary'
+- 'materialized view'
+- 'data compression'
+- 'denormalizing data'
+'doc_type': 'landing-page'
+---
+
+
+# 데이터 모델링
+
+이 섹션은 ClickHouse의 데이터 모델링에 관한 내용으로 다음 주제를 포함합니다:
+
+| 페이지 | 설명 |
+|----------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [스키마 설계](/data-modeling/schema-design) | 쿼리, 데이터 업데이트, 지연 및 볼륨과 같은 요소를 고려하여 최적의 성능을 위한 ClickHouse 스키마 설계에 대해 논의합니다. |
+| [딕셔너리](/dictionary) | 쿼리 성능을 개선하고 데이터를 풍부하게 만들기 위해 딕셔너리를 정의하고 사용하는 방법에 대한 설명입니다. |
+| [물리화된 뷰](/materialized-views) | ClickHouse에서 물리화된 뷰와 새로 고침 가능한 물리화된 뷰에 대한 정보입니다. |
+| [프로젝션](/data-modeling/projections)| ClickHouse의 프로젝션에 대한 정보입니다.|
+| [데이터 압축](/data-compression/compression-in-clickhouse) | ClickHouse의 다양한 압축 모드와 특정 데이터 유형 및 작업 부하에 맞는 압축 방법을 선택하여 데이터 저장 및 쿼리 성능을 최적화하는 방법에 대해 논의합니다. |
+| [데이터 비정규화](/data-modeling/denormalization) | 관련 데이터를 단일 테이블에 저장하여 쿼리 성능을 개선하는 것을 목표로 하는 ClickHouse의 비정규화 접근 방식에 대해 논의합니다. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/index.md.hash
new file mode 100644
index 00000000000..391c60e2a2d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/index.md.hash
@@ -0,0 +1 @@
+a9d2cb36d4fbe724
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/1_projections.md b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/1_projections.md
new file mode 100644
index 00000000000..76dee391ec8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/1_projections.md
@@ -0,0 +1,569 @@
+---
+'slug': '/data-modeling/projections'
+'title': '프로젝션'
+'description': '페이지는 프로젝션이 무엇인지, 쿼리 성능을 개선하기 위해 어떻게 사용할 수 있는지, 물리화된 뷰와 어떻게 다른지 설명합니다.'
+'keywords':
+- 'projection'
+- 'projections'
+- 'query optimization'
+'sidebar_order': 1
+'doc_type': 'guide'
+---
+
+import projections_1 from '@site/static/images/data-modeling/projections_1.png';
+import projections_2 from '@site/static/images/data-modeling/projections_2.png';
+import Image from '@theme/IdealImage';
+
+
+
+# 프로젝션
+
+## 소개 {#introduction}
+
+ClickHouse는 대량의 데이터에 대한 분석 쿼리를 실시간 시나리오에서 가속화하기 위한 다양한 메커니즘을 제공합니다. 쿼리 속도를 높이기 위한 이러한 메커니즘 중 하나는 _프로젝션_의 사용입니다. 프로젝션은 관심 속성별로 데이터의 재정렬을 통해 쿼리를 최적화하는 데 도움을 줍니다. 이는 다음과 같을 수 있습니다:
+
+1. 완전한 재정렬
+2. 다른 순서의 원본 테이블의 하위 집합
+3. 집계에 맞춘 정렬이 포함된 미리 계산된 집계 (물리화된 뷰와 유사)
+
+
+
+
+## 프로젝션은 어떻게 작동하나요? {#how-do-projections-work}
+
+실질적으로, 프로젝션은 원본 테이블에 대한 추가적인 숨겨진 테이블로 생각할 수 있습니다. 프로젝션은 다른 행 순서를 가질 수 있으며, 따라서 원본 테이블과는 다른 기본 인덱스를 가질 수 있으며, 자동으로 점진적으로 집계 값을 미리 계산할 수 있습니다. 그 결과, 프로젝션을 사용하는 것은 쿼리 실행 속도를 높이기 위한 두 가지 "조정 나사"를 제공합니다:
+
+- **기본 인덱스를 적절히 사용하기**
+- **집계를 미리 계산하기**
+
+프로젝션은 여러 행 순서를 가질 수 있고 삽입 시 집계를 미리 계산할 수 있는 [물리화된 뷰](/materialized-views)와 몇 가지 면에서 유사합니다. 프로젝션은 자동으로 업데이트되며 원본 테이블과 동기화되며, 이는 물리화된 뷰가 명시적으로 업데이트되는 것과는 다릅니다. 쿼리가 원본 테이블을 대상으로 할 때, ClickHouse는 자동으로 기본 키를 샘플링하고 동일한 정확한 결과를 생성할 수 있는 테이블을 선택하지만 읽어야 하는 데이터 양이 가장 적도록 합니다. 아래 그림과 같이:
+
+
+
+### `_part_offset`으로 더 스마트한 저장 {#smarter_storage_with_part_offset}
+
+버전 25.5부터, ClickHouse는 프로젝션에서 가상의 컬럼 `_part_offset`을 지원하여 프로젝션을 정의하는 새로운 방법을 제공합니다.
+
+프로젝션을 정의하는 방법에는 이제 두 가지가 있습니다:
+
+- **전체 컬럼 저장 (원본 동작)**: 프로젝션은 전체 데이터를 포함하며 직접 읽을 수 있어, 필터가 프로젝션의 정렬 순서와 일치할 때 더 빠른 성능을 제공합니다.
+
+- **정렬 키 + `_part_offset`만 저장**: 프로젝션은 인덱스처럼 작동합니다. ClickHouse는 프로젝션의 기본 인덱스를 사용하여 일치하는 행을 찾지만, 실제 데이터는 기본 테이블에서 읽습니다. 이는 쿼리 시간에 약간 더 많은 I/O 비용을 발생시키는 대신 저장 오버헤드를 줄입니다.
+
+위의 접근 방식은 혼합되어 일부 컬럼은 프로젝션에 저장하고 다른 컬럼은 `_part_offset`을 통해 간접적으로 저장할 수도 있습니다.
+
+## 프로젝션을 언제 사용하나요? {#when-to-use-projections}
+
+프로젝션은 데이터가 삽입될 때 자동으로 유지보수되기 때문에 새로운 사용자에게 매력적인 기능입니다. 게다가, 쿼리는 응답 시간을 줄이기 위해 가능한 한 프로젝션이 활용되는 단일 테이블로 전송될 수 있습니다.
+
+이는 사용자가 적절한 최적화된 대상 테이블을 선택하거나 필터에 따라 쿼리를 재작성해야 하는 물리화된 뷰와 대조됩니다. 이는 사용자 애플리케이션에 더 큰 비중을 두며 클라이언트 측 복잡성을 증가시킵니다.
+
+이러한 장점에도 불구하고 프로젝션에는 사용자가 알아야 할 몇 가지 고유한 제한 사항이 있으며, 따라서 신중하게 배포해야 합니다.
+
+- 프로젝션은 소스 테이블과 (숨겨진) 대상 테이블에 대해 서로 다른 TTL을 사용할 수 없습니다. 물리화된 뷰는 서로 다른 TTL을 허용합니다.
+- 프로젝션이 있는 테이블에 대해서는 경량 업데이트 및 삭제가 지원되지 않습니다.
+- 물리화된 뷰는 체인할 수 있습니다: 하나의 물리화된 뷰의 대상 테이블이 다른 물리화된 뷰의 소스 테이블이 될 수 있습니다. 이는 프로젝션으로는 불가능합니다.
+- 프로젝션은 조인을 지원하지 않지만 물리화된 뷰는 지원합니다.
+- 프로젝션은 필터(`WHERE` 절)를 지원하지 않지만 물리화된 뷰는 지원합니다.
+
+다음의 경우 프로젝션을 사용하는 것이 좋습니다:
+
+- 데이터의 완전한 재정렬이 필요한 경우. 프로젝션의 표현식은 이론적으로 `GROUP BY`를 사용할 수 있지만, 집계를 유지하는 데 물리화된 뷰가 더 효과적입니다. 쿼리 최적화기는 간단한 재정렬을 사용하는 프로젝션을 활용할 가능성이 더 높습니다, 즉 `SELECT * ORDER BY x`. 사용자들은 이 표현식에서 컬럼의 하위 집합을 선택하여 저장소 발자국을 줄일 수 있습니다.
+- 사용자가 잠재적으로 저장소 발자국 증가와 데이터를 두 번 쓰는 것에 대한 오버헤드에 대해 편안한 경우. 삽입 속도에 미치는 영향을 테스트하고 [저장소 오버헤드 평가하기](/data-compression/compression-in-clickhouse).
+
+## 예제 {#examples}
+
+### 기본 키에 없는 컬럼 필터링 {#filtering-without-using-primary-keys}
+
+이번 예제에서는 테이블에 프로젝션을 추가하는 방법을 보여드리겠습니다. 또한 기본 키에 없는 컬럼에 대한 필터링 쿼리를 가속화하는 데 프로젝션이 어떻게 사용될 수 있는지도 살펴보겠습니다.
+
+이번 예제에서는 `pickup_datetime`으로 정렬된 New York Taxi Data 데이터세트를 사용할 것입니다. 데이터는 [sql.clickhouse.com](https://sql.clickhouse.com/)에서 사용할 수 있습니다.
+
+승객이 기사에게 $200보다 더 많은 팁을 준 모든 여행 ID를 찾기 위해 간단한 쿼리를 작성해 보겠습니다:
+
+```sql runnable
+SELECT
+ tip_amount,
+ trip_id,
+ dateDiff('minutes', pickup_datetime, dropoff_datetime) AS trip_duration_min
+FROM nyc_taxi.trips WHERE tip_amount > 200 AND trip_duration_min > 0
+ORDER BY tip_amount, trip_id ASC
+```
+
+`ORDER BY`에 포함되지 않은 `tip_amount`에 필터링을 하기 때문에 ClickHouse는 전체 테이블 스캔을 수행해야 했다는 것을 유의하세요. 이 쿼리를 가속화해 보겠습니다.
+
+원본 테이블과 결과를 보존하기 위해 새로운 테이블을 만들고 `INSERT INTO SELECT`를 사용하여 데이터를 복사하겠습니다:
+
+```sql
+CREATE TABLE nyc_taxi.trips_with_projection AS nyc_taxi.trips;
+INSERT INTO nyc_taxi.trips_with_projection SELECT * FROM nyc_taxi.trips;
+```
+
+프로젝션을 추가하려면 `ALTER TABLE` 문과 함께 `ADD PROJECTION` 문을 사용합니다:
+
+```sql
+ALTER TABLE nyc_taxi.trips_with_projection
+ADD PROJECTION prj_tip_amount
+(
+ SELECT *
+ ORDER BY tip_amount, dateDiff('minutes', pickup_datetime, dropoff_datetime)
+)
+```
+
+프로젝션을 추가한 후에는 `MATERIALIZE PROJECTION` 문을 사용하여 위에서 지정한 쿼리에 따라 데이터를 물리적으로 정렬하고 다시 작성해야 합니다:
+
+```sql
+ALTER TABLE nyc.trips_with_projection MATERIALIZE PROJECTION prj_tip_amount
+```
+
+프로젝션을 추가한 후에 쿼리를 다시 실행해 보겠습니다:
+
+```sql runnable
+SELECT
+ tip_amount,
+ trip_id,
+ dateDiff('minutes', pickup_datetime, dropoff_datetime) AS trip_duration_min
+FROM nyc_taxi.trips_with_projection WHERE tip_amount > 200 AND trip_duration_min > 0
+ORDER BY tip_amount, trip_id ASC
+```
+
+쿼리 시간을 상당히 줄일 수 있었고 스캔한 행 수가 감소한 것을 확인하세요.
+
+위의 쿼리가 실제로 우리가 만든 프로젝션을 사용했음을 확인하기 위해 `system.query_log` 테이블을 조회해 보겠습니다:
+
+```sql
+SELECT query, projections
+FROM system.query_log
+WHERE query_id=''
+```
+
+```response
+┌─query─────────────────────────────────────────────────────────────────────────┬─projections──────────────────────┐
+│ SELECT ↴│ ['default.trips.prj_tip_amount'] │
+│↳ tip_amount, ↴│ │
+│↳ trip_id, ↴│ │
+│↳ dateDiff('minutes', pickup_datetime, dropoff_datetime) AS trip_duration_min↴│ │
+│↳FROM trips WHERE tip_amount > 200 AND trip_duration_min > 0 │ │
+└───────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────┘
+```
+
+### 프로젝션을 사용하여 영국 가격 쿼리 가속화 {#using-projections-to-speed-up-UK-price-paid}
+
+프로젝션이 쿼리 성능을 가속화하는 데 어떻게 사용될 수 있는지 보여주기 위해, 실제 데이터세트를 사용하는 예제를 살펴보겠습니다. 이번 예제에서는 30.03백만 행을 가진 [영국 부동산 가격 데이터](https://clickhouse.com/docs/getting-started/example-datasets/uk-price-paid) 테이블을 사용할 것입니다. 이 데이터세트는 [sql.clickhouse.com](https://sql.clickhouse.com/?query_id=6IDMHK3OMR1C97J6M9EUQS) 환경에서도 사용할 수 있습니다.
+
+테이블이 어떻게 생성되었고 데이터가 삽입되었는지 보려면 ["영국 부동산 가격 데이터셋"](/getting-started/example-datasets/uk-price-paid) 페이지를 참조하세요.
+
+이 데이터세트에서 두 개의 간단한 쿼리를 실행할 수 있습니다. 첫 번째 쿼리는 런던에서 가장 높은 가격이 지불된 카운티를 나열하고, 두 번째 쿼리는 카운티의 평균 가격을 계산합니다:
+
+```sql runnable
+SELECT
+ county,
+ price
+FROM uk.uk_price_paid
+WHERE town = 'LONDON'
+ORDER BY price DESC
+LIMIT 3
+```
+
+```sql runnable
+SELECT
+ county,
+ avg(price)
+FROM uk.uk_price_paid
+GROUP BY county
+ORDER BY avg(price) DESC
+LIMIT 3
+```
+
+모든 30.03백만 행에 대한 전체 테이블 스캔이 발생한 것을 주의하세요. 이는 `town`이나 `price`가 테이블을 생성할 때 `ORDER BY` 문에 포함되지 않았기 때문입니다:
+
+```sql
+CREATE TABLE uk.uk_price_paid
+(
+ ...
+)
+ENGINE = MergeTree
+--highlight-next-line
+ORDER BY (postcode1, postcode2, addr1, addr2);
+```
+
+프로젝션을 사용하여 이 쿼리를 가속화할 수 있는지 봅시다.
+
+원본 테이블과 결과를 보존하기 위해 새로운 테이블을 만들고 `INSERT INTO SELECT`를 사용하여 데이터를 복사하겠습니다:
+
+```sql
+CREATE TABLE uk.uk_price_paid_with_projections AS uk_price_paid;
+INSERT INTO uk.uk_price_paid_with_projections SELECT * FROM uk.uk_price_paid;
+```
+
+우리는 `town` 및 `price`별로 정렬된 추가 (숨겨진) 테이블을 생성하고 채우는 프로젝션 `prj_oby_town_price`를 만듭니다. 이는 특정 도시에서 가장 높은 가격이 지불된 카운티를 나열하는 쿼리를 최적화합니다:
+
+```sql
+ALTER TABLE uk.uk_price_paid_with_projections
+ (ADD PROJECTION prj_obj_town_price
+ (
+ SELECT *
+ ORDER BY
+ town,
+ price
+ ))
+```
+
+```sql
+ALTER TABLE uk.uk_price_paid_with_projections
+ (MATERIALIZE PROJECTION prj_obj_town_price)
+SETTINGS mutations_sync = 1
+```
+
+[`mutations_sync`](/operations/settings/settings#mutations_sync) 설정은 동기 실행을 강제하는 데 사용됩니다.
+
+기존 130개의 영국 카운티에 대해 avg(price) 집계 값을 점진적으로 미리 계산하는 추가 (숨겨진) 테이블 `prj_gby_county`를 생성하고 채웁니다:
+
+```sql
+ALTER TABLE uk.uk_price_paid_with_projections
+ (ADD PROJECTION prj_gby_county
+ (
+ SELECT
+ county,
+ avg(price)
+ GROUP BY county
+ ))
+```
+```sql
+ALTER TABLE uk.uk_price_paid_with_projections
+ (MATERIALIZE PROJECTION prj_gby_county)
+SETTINGS mutations_sync = 1
+```
+
+:::note
+프로젝션에서 `GROUP BY` 절을 사용하는 경우, 즉 `prj_gby_county` 프로젝션에서 하위 테이블의 스토리지 엔진이 `AggregatingMergeTree`로 변경되며, 모든 집계 함수는 `AggregateFunction`으로 변환됩니다. 이것은 적절한 점진적 데이터 집계를 보장합니다.
+:::
+
+아래 그림은 메인 테이블 `uk_price_paid_with_projections`와 그 두 프로젝션의 시각화입니다:
+
+
+
+이제 런던에서 세 가지 가장 높은 가격이 지불된 카운티를 나열하는 쿼리를 다시 실행하면 쿼리 성능이 향상된 것을 볼 수 있습니다:
+
+```sql runnable
+SELECT
+ county,
+ price
+FROM uk.uk_price_paid_with_projections
+WHERE town = 'LONDON'
+ORDER BY price DESC
+LIMIT 3
+```
+
+마찬가지로, 세 가지 평균 지불 가격이 가장 높은 영국 카운티를 나열하는 쿼리에 대해서도:
+
+```sql runnable
+SELECT
+ county,
+ avg(price)
+FROM uk.uk_price_paid_with_projections
+GROUP BY county
+ORDER BY avg(price) DESC
+LIMIT 3
+```
+
+두 쿼리 모두 원래 테이블을 대상으로 하며, 테이블을 생성하기 전에는 두 쿼리 모두 전체 테이블 스캔을 수행했다는 점에 주목하세요 (모든 30.03백만 행이 디스크에서 스트리밍되었습니다).
+
+또한, 런던에서 가장 높은 가격이 지불된 카운티를 나열하는 쿼리가 2.17백만 행을 스트리밍하고 있다는 점을 언급해야 합니다. 이 쿼리 최적화를 위해 직접 사용한 두 번째 테이블로 인해서 오직 81.92천 행만이 디스크에서 스트리밍되었습니다.
+
+그 차이의 이유는 현재 위에서 언급한 `optimize_read_in_order` 최적화가 프로젝션에 대해 지원되지 않기 때문입니다.
+
+`system.query_log` 테이블을 조사하여 ClickHouse가 위의 두 쿼리에 대해 두 개의 프로젝션을 자동으로 사용했음을 확인할 수 있습니다 (아래의 프로젝션 열을 참조하세요):
+
+```sql
+SELECT
+ tables,
+ query,
+ query_duration_ms::String || ' ms' AS query_duration,
+ formatReadableQuantity(read_rows) AS read_rows,
+ projections
+FROM clusterAllReplicas(default, system.query_log)
+WHERE (type = 'QueryFinish') AND (tables = ['default.uk_price_paid_with_projections'])
+ORDER BY initial_query_start_time DESC
+ LIMIT 2
+FORMAT Vertical
+```
+
+```response
+Row 1:
+──────
+tables: ['uk.uk_price_paid_with_projections']
+query: SELECT
+ county,
+ avg(price)
+FROM uk_price_paid_with_projections
+GROUP BY county
+ORDER BY avg(price) DESC
+LIMIT 3
+query_duration: 5 ms
+read_rows: 132.00
+projections: ['uk.uk_price_paid_with_projections.prj_gby_county']
+
+Row 2:
+──────
+tables: ['uk.uk_price_paid_with_projections']
+query: SELECT
+ county,
+ price
+FROM uk_price_paid_with_projections
+WHERE town = 'LONDON'
+ORDER BY price DESC
+LIMIT 3
+SETTINGS log_queries=1
+query_duration: 11 ms
+read_rows: 2.29 million
+projections: ['uk.uk_price_paid_with_projections.prj_obj_town_price']
+
+2 rows in set. Elapsed: 0.006 sec.
+```
+
+### 추가 예제 {#further-examples}
+
+다음 예제는 동일한 영국 가격 데이터 세트를 사용하여 프로젝션이 있는 쿼리와 프로젝션이 없는 쿼리를 대조합니다.
+
+원래 테이블(및 성능)을 보존하기 위해 이전과 같이 `CREATE AS` 및 `INSERT INTO SELECT`를 사용하여 테이블의 복사본을 다시 생성합니다.
+
+```sql
+CREATE TABLE uk.uk_price_paid_with_projections_v2 AS uk.uk_price_paid;
+INSERT INTO uk.uk_price_paid_with_projections_v2 SELECT * FROM uk.uk_price_paid;
+```
+
+#### 프로젝션 생성 {#build-projection}
+
+`toYear(date)`, `district`, `town` 치수를 기준으로 집계 프로젝션을 만듭니다:
+
+```sql
+ALTER TABLE uk.uk_price_paid_with_projections_v2
+ ADD PROJECTION projection_by_year_district_town
+ (
+ SELECT
+ toYear(date),
+ district,
+ town,
+ avg(price),
+ sum(price),
+ count()
+ GROUP BY
+ toYear(date),
+ district,
+ town
+ )
+```
+
+기존 데이터에 대해 프로젝션을 채웁니다. (물리화하지 않으면 프로젝션은 새로 삽입된 데이터에 대해서만 생성됩니다):
+
+```sql
+ALTER TABLE uk.uk_price_paid_with_projections_v2
+ MATERIALIZE PROJECTION projection_by_year_district_town
+SETTINGS mutations_sync = 1
+```
+
+다음 쿼리는 프로젝션이 있는 경우와 없는 경우의 성능을 대조합니다. 프로젝션 사용을 비활성화하려면 [`optimize_use_projections`](/operations/settings/settings#optimize_use_projections) 설정을 사용하여 기본적으로 활성화되어 있습니다.
+
+#### 쿼리 1. 연도별 평균 가격 {#average-price-projections}
+
+```sql runnable
+SELECT
+ toYear(date) AS year,
+ round(avg(price)) AS price,
+ bar(price, 0, 1000000, 80)
+FROM uk.uk_price_paid_with_projections_v2
+GROUP BY year
+ORDER BY year ASC
+SETTINGS optimize_use_projections=0
+```
+
+```sql runnable
+SELECT
+ toYear(date) AS year,
+ round(avg(price)) AS price,
+ bar(price, 0, 1000000, 80)
+FROM uk.uk_price_paid_with_projections_v2
+GROUP BY year
+ORDER BY year ASC
+
+```
+결과는 동일해야 하지만, 후자의 예제에서 성능이 더 좋습니다!
+
+#### 쿼리 2. 런던의 연도별 평균 가격 {#average-price-london-projections}
+
+```sql runnable
+SELECT
+ toYear(date) AS year,
+ round(avg(price)) AS price,
+ bar(price, 0, 2000000, 100)
+FROM uk.uk_price_paid_with_projections_v2
+WHERE town = 'LONDON'
+GROUP BY year
+ORDER BY year ASC
+SETTINGS optimize_use_projections=0
+```
+
+```sql runnable
+SELECT
+ toYear(date) AS year,
+ round(avg(price)) AS price,
+ bar(price, 0, 2000000, 100)
+FROM uk.uk_price_paid_with_projections_v2
+WHERE town = 'LONDON'
+GROUP BY year
+ORDER BY year ASC
+```
+
+#### 쿼리 3. 가장 비싼 동네 {#most-expensive-neighborhoods-projections}
+
+조건 (date >= '2020-01-01')을 프로젝션 차원 (`toYear(date) >= 2020`)에 맞도록 수정해야 합니다:
+
+```sql runnable
+SELECT
+ town,
+ district,
+ count() AS c,
+ round(avg(price)) AS price,
+ bar(price, 0, 5000000, 100)
+FROM uk.uk_price_paid_with_projections_v2
+WHERE toYear(date) >= 2020
+GROUP BY
+ town,
+ district
+HAVING c >= 100
+ORDER BY price DESC
+LIMIT 100
+SETTINGS optimize_use_projections=0
+```
+
+```sql runnable
+SELECT
+ town,
+ district,
+ count() AS c,
+ round(avg(price)) AS price,
+ bar(price, 0, 5000000, 100)
+FROM uk.uk_price_paid_with_projections_v2
+WHERE toYear(date) >= 2020
+GROUP BY
+ town,
+ district
+HAVING c >= 100
+ORDER BY price DESC
+LIMIT 100
+```
+
+다시 한번 결과는 동일하지만, 두 번째 쿼리의 쿼리 성능 개선에 유의하세요.
+
+### 하나의 쿼리에서 프로젝션 결합 {#combining-projections}
+
+버전 25.6부터, 이전 버전에서 도입된 `_part_offset` 지원을 기반으로 ClickHouse는 이제 여러 프로젝션을 사용하여 여러 필터를 가진 단일 쿼리를 가속화할 수 있습니다.
+
+중요하게도, ClickHouse는 여전히 데이터는 단 하나의 프로젝션(또는 기본 테이블)에서만 읽지만, 불필요한 파트를 읽기 전에 다른 프로젝션의 기본 인덱스를 사용하여 억제할 수 있습니다. 이는 여러 열에 대해 필터링되는 쿼리에서 특히 유용하며, 각 열이 서로 다른 프로젝션과 잠재적으로 일치할 수 있습니다.
+
+> 현재 이 메커니즘은 전체 파트만 억제합니다. 그라뉼 수준의 억제는 아직 지원되지 않습니다.
+
+이것을 demonstration하기 위해, 우리는 테이블 (프로젝션을 사용하는 `_part_offset` 열 포함)을 정의하고 위의 다이어그램에 맞는 다섯 개의 예제 행을 삽입합니다.
+
+```sql
+CREATE TABLE page_views
+(
+ id UInt64,
+ event_date Date,
+ user_id UInt32,
+ url String,
+ region String,
+ PROJECTION region_proj
+ (
+ SELECT _part_offset ORDER BY region
+ ),
+ PROJECTION user_id_proj
+ (
+ SELECT _part_offset ORDER BY user_id
+ )
+)
+ENGINE = MergeTree
+ORDER BY (event_date, id)
+SETTINGS
+ index_granularity = 1, -- one row per granule
+ max_bytes_to_merge_at_max_space_in_pool = 1; -- disable merge
+```
+
+그런 다음 테이블에 데이터를 삽입합니다:
+
+```sql
+INSERT INTO page_views VALUES (
+1, '2025-07-01', 101, 'https://example.com/page1', 'europe');
+INSERT INTO page_views VALUES (
+2, '2025-07-01', 102, 'https://example.com/page2', 'us_west');
+INSERT INTO page_views VALUES (
+3, '2025-07-02', 106, 'https://example.com/page3', 'us_west');
+INSERT INTO page_views VALUES (
+4, '2025-07-02', 107, 'https://example.com/page4', 'us_west');
+INSERT INTO page_views VALUES (
+5, '2025-07-03', 104, 'https://example.com/page5', 'asia');
+```
+
+:::note
+참고: 이 테이블은 설명을 위해 사용자 정의 설정을 사용하며, 레코드 단위의 그라뉼 및 파트 병합이 비활성화되어 있습니다. 이는 프로덕션 사용에 권장되지 않습니다.
+:::
+
+이 설정은 다음과 같은 결과를 생성합니다:
+- 다섯 개의 개별 파트 (삽입된 행당 하나씩)
+- 각 행당 하나의 기본 인덱스 항목 (기본 테이블 및 각 프로젝션)
+- 각 파트는 정확히 하나의 행을 포함합니다.
+
+이 설정으로 우리는 `region`과 `user_id` 모두에 대한 필터링 쿼리를 실행합니다. 기본 테이블의 기본 인덱스가 `event_date` 및 `id`에서 구축되기 때문에 여기에서는 유용하지 않으며, ClickHouse는 따라서 다음을 사용합니다:
+
+- `region_proj`를 사용하여 지역별로 파트를 억제합니다.
+- `user_id_proj`를 사용하여 `user_id`로 추가 억제를 실시합니다.
+
+이러한 동작은 `EXPLAIN projections = 1`을 사용하여 ClickHouse가 프로젝션을 선택하고 적용하는 방법을 보여줍니다.
+
+```sql
+EXPLAIN projections=1
+SELECT * FROM page_views WHERE region = 'us_west' AND user_id = 107;
+```
+
+```response
+ ┌─explain────────────────────────────────────────────────────────────────────────────────┐
+ 1. │ Expression ((Project names + Projection)) │
+ 2. │ Expression │
+ 3. │ ReadFromMergeTree (default.page_views) │
+ 4. │ Projections: │
+ 5. │ Name: region_proj │
+ 6. │ Description: Projection has been analyzed and is used for part-level filtering │
+ 7. │ Condition: (region in ['us_west', 'us_west']) │
+ 8. │ Search Algorithm: binary search │
+ 9. │ Parts: 3 │
+10. │ Marks: 3 │
+11. │ Ranges: 3 │
+12. │ Rows: 3 │
+13. │ Filtered Parts: 2 │
+14. │ Name: user_id_proj │
+15. │ Description: Projection has been analyzed and is used for part-level filtering │
+16. │ Condition: (user_id in [107, 107]) │
+17. │ Search Algorithm: binary search │
+18. │ Parts: 1 │
+19. │ Marks: 1 │
+20. │ Ranges: 1 │
+21. │ Rows: 1 │
+22. │ Filtered Parts: 2 │
+ └────────────────────────────────────────────────────────────────────────────────────────┘
+```
+
+`EXPLAIN` 출력(위에 표시됨)은 논리적 쿼리 계획을 위에서 아래로 보여줍니다:
+
+| 행 번호 | 설명 |
+|----------|---------------------------------------------------------------------------------------------------|
+| 3 | `page_views` 기본 테이블에서 읽을 계획 |
+| 5-13 | `region_proj`를 사용하여 지역 = 'us_west'인 3개의 파트를 찾아 5개의 파트 중 2개를 억제합니다 |
+| 14-22 | `user_id_proj`를 사용하여 `user_id = 107`인 1개의 파트를 찾아 3개의 남은 파트 중 2개를 추가로 억제합니다 |
+
+결국, 기본 테이블에서 **5개 중 1개 파트**만 읽힙니다. 여러 프로젝션의 인덱스 분석을 결합하여 ClickHouse는 스캔되는 데이터 양을 크게 줄이고 성능을 개선하면서 저장소 오버헤드를 낮춥니다.
+
+## 관련 콘텐츠 {#related-content}
+- [ClickHouse의 기본 인덱스에 대한 실용적인 소개](/guides/best-practices/sparse-primary-indexes#option-3-projections)
+- [물리화된 뷰](/docs/materialized-views)
+- [ALTER PROJECTION](/sql-reference/statements/alter/projection)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/1_projections.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/1_projections.md.hash
new file mode 100644
index 00000000000..66ed75b3a84
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/1_projections.md.hash
@@ -0,0 +1 @@
+69e0bdb1e54cc95e
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/2_materialized-views-versus-projections.md b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/2_materialized-views-versus-projections.md
new file mode 100644
index 00000000000..7aee22d7d1a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/2_materialized-views-versus-projections.md
@@ -0,0 +1,79 @@
+---
+'slug': '/managing-data/materialized-views-versus-projections'
+'sidebar_label': '물리화된 뷰 대 프로젝션'
+'title': '물리화된 뷰 대 프로젝션'
+'hide_title': false
+'description': 'ClickHouse에서 물리화된 뷰와 프로젝션을 비교하는 기사로, 사용 사례, 성능 및 제한 사항을 포함합니다.'
+'doc_type': 'reference'
+'keywords':
+- 'materialized views'
+- 'projections'
+- 'differences'
+---
+
+> 사용자로부터 자주 받는 질문은 물리화된 뷰와 프로젝션을 언제 사용해야 하는가입니다. 이 기사에서는 두 가지의 주요 차이점과 특정 시나리오에서 하나를 선택하고자 하는 이유를 탐구합니다.
+
+## 주요 차이점 요약 {#key-differences}
+
+아래 표는 물리화된 뷰와 프로젝션 간의 주요 차이점을 여러 고려 사항에 대해 요약하고 있습니다.
+
+| Aspect | Materialized views | Projections |
+|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 데이터 저장 및 위치 | 결과를 **별도의 명시적 대상 테이블**에 저장하며, 소스 테이블에 삽입할 때 삽입 트리거 역할을 합니다. | 프로젝션은 최적화된 데이터 레이아웃을 생성하며, 물리적으로 **주 테이블 데이터와 나란히 저장**되고 사용자에게는 보이지 않습니다. |
+| 업데이트 메커니즘 | 소스 테이블에 대한 `INSERT`에 대해 **동기식**으로 작동합니다(증분 물리화된 뷰의 경우). 참고: 새로 고칠 수 있는 물리화된 뷰를 사용하여 **일정화**할 수도 있습니다. | 주요 테이블에 대한 `INSERT` 시 백그라운드에서 **비동기식**으로 업데이트됩니다. |
+| 쿼리 상호작용 | 물리화된 뷰와 작업하려면 **대상 테이블을 직접 쿼리**해야 하며, 사용자는 쿼리를 작성할 때 물리화된 뷰의 존재를 인식해야 합니다. | 프로젝션은 ClickHouse의 쿼리 최적화기가 **자동으로 선택**하며, 사용자가 물리화된 데이터가 포함된 테이블의 쿼리를 수정할 필요가 없도록 투명합니다. 버전 25.6부터는 두 개 이상의 프로젝션으로 필터링하는 것도 가능해졌습니다. |
+| `UPDATE` / `DELETE` 처리 | **소스 테이블에 대한 `UPDATE` 또는 `DELETE` 작업**에 자동으로 반응하지 않으며, 물리화된 뷰는 소스 테이블에 대한 지식이 없고 오직 소스 테이블에 대한 삽입 트리거 역할만 합니다. 이로 인해 소스 테이블과 대상 테이블 간의 데이터 노후화가 발생할 수 있으며, 해결 방법이나 주기적 전체 새로 고침이 필요합니다(새로 고칠 수 있는 물리화된 뷰를 통해). | 기본적으로 `DELETED` 행과 **호환되지 않습니다**(특히 경량 삭제). `lightweight_mutation_projection_mode` (v24.7+)를 사용하면 호환성을 활성화할 수 있습니다. |
+| `JOIN` 지원 | 예. 새로 고칠 수 있는 물리화된 뷰는 복잡한 비정규화를 위해 사용할 수 있습니다. 증분 물리화된 뷰는 가장 왼쪽 테이블 삽입에서만 트리거됩니다. | 아니요. 물리화된 데이터를 필터링하기 위한 프로젝션 정의 내에서 `JOIN` 작업은 지원되지 않습니다. |
+| 정의에서의 `WHERE` 절 | 예. 물리화 전에 데이터를 필터링하기 위해 `WHERE` 절을 포함할 수 있습니다. | 아니요. 물리화된 데이터를 필터링하기 위한 프로젝션 정의 내에서 `WHERE` 절은 지원되지 않습니다. |
+| 체인 가능성 | 예, 하나의 물리화된 뷰의 대상 테이블은 다른 물리화된 뷰를 위한 소스가 될 수 있어 다단계 파이프라인을 가능하게 합니다. | 아니요. 프로젝션은 체인할 수 없습니다. |
+| 적용 가능한 테이블 엔진 | 다양한 소스 테이블 엔진과 함께 사용할 수 있지만, 대상 테이블은 대부분 `MergeTree` 계열입니다. | **오직 `MergeTree` 계열 테이블 엔진**에서만 사용 가능합니다. |
+| 오류 처리 | 데이터 삽입 중 오류가 발생하면 대상 테이블의 데이터가 손실되어 일관성 문제로 이어질 수 있습니다. | 오류는 백그라운드에서 **조용하게** 처리됩니다. 쿼리는 물리화된 부분과 비물리화된 부분을 원활하게 혼합할 수 있습니다. |
+| 운영 오버헤드 | 명시적 대상 테이블 생성을 요구하며 종종 수동으로 다시 채워야 합니다. `UPDATE`/`DELETE`와의 일관성을 관리하는 것은 복잡성을 증가시킵니다. | 프로젝션은 자동으로 유지되고 동기화되며 일반적으로 더 낮은 운영 부담을 가집니다. |
+| `FINAL` 쿼리 호환성 | 일반적으로 호환되지만 대상 테이블에서 `GROUP BY`가 자주 필요합니다. | **`FINAL` 쿼리**와는 작동하지 않습니다. |
+| 지연 물리화 | 예. | 물리화 기능을 사용할 때 프로젝션 호환성 문제를 모니터링하세요. `query_plan_optimize_lazy_materialization = false`로 설정해야 할 수도 있습니다. |
+| 병렬 복제본 | 예. | 아니요. |
+| [`optimize_read_in_order`](/operations/settings/settings#optimize_read_in_order) | 예. | 예. |
+| 경량 업데이트 및 삭제 | 예. | 아니요. |
+
+## 물리화된 뷰와 프로젝션 비교 {#choose-between}
+
+### 물리화된 뷰 선택 시기 {#choosing-materialized-views}
+
+다음과 같은 경우 물리화된 뷰 사용을 고려해야 합니다:
+
+- **실시간 ETL 및 다단계 데이터 파이프라인** 작업 시: 복잡한 변환, 집계 또는 데이터 도착 시 라우팅을 수행해야 하며, 여러 단계에 걸쳐 뷰를 체인할 가능성이 있습니다.
+- **복잡한 비정규화**가 필요한 경우: 여러 소스(테이블, 서브쿼리 또는 딕셔너리)의 데이터를 사전 조인하여 단일 쿼리 최적화 테이블을 생성해야 하며, 특히 새로 고칠 수 있는 물리화된 뷰를 사용하여 주기적으로 전체 새로 고침이 허용되는 경우.
+- **명시적 스키마 제어**를 원할 경우: 사전 계산된 결과에 대한 별도의 고유한 대상 테이블이 필요하며, 더 큰 유연성을 제공하는 스키마와 엔진을 원할 경우.
+- **수집 시 필터링**을 원할 경우: 데이터를 물리화되기 _전에_ 필터링해야 하며, 대상 테이블에 기록되는 데이터 양을 줄여야 합니다.
+
+### 물리화된 뷰 사용을 피해야 할 때 {#avoid-materialized-views}
+
+다음과 같은 경우 물리화된 뷰 사용을 피해야 합니다:
+
+- **소스 데이터가 자주 업데이트되거나 삭제되는 경우**: 소스 테이블과 대상 테이블 간의 일관성을 처리하기 위한 추가 전략 없이 증분 물리화된 뷰가 노후화되고 불일치해질 수 있습니다.
+- **단순성과 자동 최적화가 선호되는 경우**: 별도의 대상 테이블 관리를 피하고자 한다면.
+
+### 프로젝션 선택 시기 {#choosing-projections}
+
+다음과 같은 경우 프로젝션 사용을 고려해야 합니다:
+
+- **단일 테이블의 쿼리 최적화**: 기본 목표는 단일 기본 테이블에 대한 쿼리를 가속화하는 것으로, 대체 정렬 순서를 제공하거나 기본 키의 일부가 아닌 컬럼에 대한 필터를 최적화하거나 단일 테이블에 대한 집계를 사전 계산합니다.
+- **쿼리 투명성**을 원할 경우: 쿼리가 수정 없이 원본 테이블을 대상으로 하며, ClickHouse가 주어진 쿼리에 대한 최상의 데이터 레이아웃을 선택하도록 합니다.
+
+### 프로젝션 사용을 피해야 할 때 {#avoid-projections}
+
+다음과 같은 경우 프로젝션 사용을 피해야 합니다:
+
+- **복잡한 데이터 변환 또는 다단계 ETL이 필요한 경우**: 프로젝션은 정의 내에서 `JOIN` 작업을 지원하지 않으며, 다단계 파이프라인을 구축하거나 윈도우 함수 또는 복잡한 `CASE` 문과 같은 일부 SQL 기능을 처리할 수 없습니다. 따라서 복잡한 데이터 변환에는 적합하지 않습니다.
+- **물리화된 데이터의 명시적 필터링이 필요한 경우**: 프로젝션 정의 내에서 데이터가 물리화되는 것을 필터링하기 위한 `WHERE` 절을 지원하지 않으므로.
+- **비-MergeTree 테이블 엔진을 사용하는 경우**: 프로젝션은 오직 `MergeTree` 계열 엔진에서만 사용할 수 있습니다.
+- `FINAL` 쿼리가 필수인 경우: 프로젝션은 때때로 중복 제거에 사용되는 `FINAL` 쿼리와 작동하지 않습니다.
+- [병렬 복제본](/deployment-guides/parallel-replicas)이 필요한 경우: 이는 프로젝션과 호환되지 않습니다.
+
+## 요약 {#summary}
+
+물리화된 뷰와 프로젝션은 쿼리를 최적화하고 데이터를 변환하는 강력한 도구이며, 일반적으로 두 가지 중 하나를 사용하는 것을 고려하지 않는 것이 좋습니다. 대신, 쿼리를 최대한 활용하기 위해 상호 보완적으로 사용할 수 있습니다. 따라서 ClickHouse에서 물리화된 뷰와 프로젝션 중 어떤 것을 선택할지는 귀하의 특정 사용 사례와 접근 패턴에 달려 있습니다.
+
+일반적인 경험칙으로, 소스 테이블 하나 이상에서 데이터를 집계하거나 대규모로 복잡한 변환을 수행할 필요가 있을 때 물리화된 뷰를 사용하는 것을 고려해야 합니다. 물리화된 뷰는 비싼 집계 작업을 쿼리 시간에서 삽입 시간으로 이동하는 데 탁월합니다. 일일 또는 월간 롤업, 실시간 대시보드 또는 데이터 요약에 훌륭한 선택입니다.
+
+반면, 테이블의 기본 키와 다르게 필터링하는 쿼리를 최적화해야 할 때는 프로젝션을 사용해야 합니다. 이 키는 디스크에서 데이터의 물리적 정렬을 결정합니다. 기본 키를 변경할 수 없거나 접근 패턴이 기본 키가 수용할 수 있는 것보다 더 다양할 때 특히 유용합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/2_materialized-views-versus-projections.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/2_materialized-views-versus-projections.md.hash
new file mode 100644
index 00000000000..525551857c5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/projections/2_materialized-views-versus-projections.md.hash
@@ -0,0 +1 @@
+a31a81c644390001
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/schema-design.md b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/schema-design.md
new file mode 100644
index 00000000000..2dad4a6811b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/schema-design.md
@@ -0,0 +1,350 @@
+---
+'slug': '/data-modeling/schema-design'
+'title': '스키마 설계'
+'description': '쿼리 성능을 위한 ClickHouse 스키마 최적화'
+'keywords':
+- 'schema'
+- 'schema design'
+- 'query optimization'
+'doc_type': 'guide'
+---
+
+import stackOverflowSchema from '@site/static/images/data-modeling/stackoverflow-schema.png';
+import schemaDesignIndices from '@site/static/images/data-modeling/schema-design-indices.png';
+import Image from '@theme/IdealImage';
+
+이해하기 쉬운 스키마 설계는 ClickHouse 성능 최적화의 핵심 요소이며, 이는 종종 상충하는 선택을 포함합니다. 최적의 접근 방식은 제공되는 쿼리와 데이터 업데이트 빈도, 지연 요구 사항, 데이터 양과 같은 요인에 따라 달라집니다. 이 가이드는 ClickHouse 성능 최적화를 위한 스키마 설계 모범 사례 및 데이터 모델링 기술에 대한 개요를 제공합니다.
+
+## Stack Overflow 데이터셋 {#stack-overflow-dataset}
+
+이 가이드의 예제에서는 Stack Overflow 데이터셋의 하위 집합을 사용합니다. 이는 2008년부터 2024년 4월까지 Stack Overflow에서 발생한 모든 게시물, 투표, 사용자, 댓글 및 배지를 포함합니다. 이 데이터는 아래의 스키마를 사용하여 Parquet 형식으로 `s3://datasets-documentation/stackoverflow/parquet/` S3 버킷에 있습니다:
+
+> 표시된 기본 키 및 관계는 제약 조건을 통해 집행되지 않으며 (Parquet는 테이블이 아닌 파일 형식입니다), 순수하게 데이터 간의 관계 및 그것이 가진 유일한 키를 나타냅니다.
+
+
+
+
+
+Stack Overflow 데이터셋은 여러 개의 관련 테이블을 포함하고 있습니다. 데이터 모델링 작업에서 사용자는 먼저 기본 테이블을 로드하는 데 집중하는 것이 좋습니다. 이 테이블은 반드시 가장 큰 테이블일 필요는 없지만, 대부분의 분석 쿼리를 받을 것으로 예상되는 테이블이어야 합니다. 이렇게 하면 주된 ClickHouse 개념과 유형에 익숙해지는 데 도움이 되며, 주로 OLTP 배경에서 오는 경우 특히 중요합니다. 이 테이블은 ClickHouse 기능을 최대한 활용하고 최적 성능을 얻기 위해 추가 테이블이 추가됨에 따라 다시 모델링이 필요할 수 있습니다.
+
+위 스키마는 이 가이드의 목적을 위해 의도적으로 최적화되지 않았습니다.
+
+## 초기 스키마 설정 {#establish-initial-schema}
+
+`posts` 테이블이 대부분의 분석 쿼리의 대상이 될 것이므로 이 테이블의 스키마 설정에 집중합니다. 이 데이터는 연도별로 파일 하나씩 있는 공개 S3 버킷 `s3://datasets-documentation/stackoverflow/parquet/posts/*.parquet`에서 사용 가능합니다.
+
+> Parquet 형식의 S3에서 데이터 로드는 ClickHouse에 데이터를 로드하는 가장 일반적이고 선호되는 방법입니다. ClickHouse는 Parquet 처리를 최적화하였으며, S3에서 초당 수천만 행을 읽고 삽입할 수 있습니다.
+
+ClickHouse는 데이터셋의 유형을 자동으로 식별할 수 있는 스키마 추론 기능을 제공합니다. 이는 Parquet을 포함한 모든 데이터 형식에 대해 지원됩니다. 우리는 s3 테이블 함수 및 [`DESCRIBE`](/sql-reference/statements/describe-table) 명령을 통해 데이터에 대한 ClickHouse 유형을 식별하기 위해 이 기능을 활용할 수 있습니다. 아래에서는 glob 패턴 `*.parquet`를 사용하여 `stackoverflow/parquet/posts` 폴더의 모든 파일을 읽습니다.
+
+```sql
+DESCRIBE TABLE s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/posts/*.parquet')
+SETTINGS describe_compact_output = 1
+
+┌─name──────────────────┬─type───────────────────────────┐
+│ Id │ Nullable(Int64) │
+│ PostTypeId │ Nullable(Int64) │
+│ AcceptedAnswerId │ Nullable(Int64) │
+│ CreationDate │ Nullable(DateTime64(3, 'UTC')) │
+│ Score │ Nullable(Int64) │
+│ ViewCount │ Nullable(Int64) │
+│ Body │ Nullable(String) │
+│ OwnerUserId │ Nullable(Int64) │
+│ OwnerDisplayName │ Nullable(String) │
+│ LastEditorUserId │ Nullable(Int64) │
+│ LastEditorDisplayName │ Nullable(String) │
+│ LastEditDate │ Nullable(DateTime64(3, 'UTC')) │
+│ LastActivityDate │ Nullable(DateTime64(3, 'UTC')) │
+│ Title │ Nullable(String) │
+│ Tags │ Nullable(String) │
+│ AnswerCount │ Nullable(Int64) │
+│ CommentCount │ Nullable(Int64) │
+│ FavoriteCount │ Nullable(Int64) │
+│ ContentLicense │ Nullable(String) │
+│ ParentId │ Nullable(String) │
+│ CommunityOwnedDate │ Nullable(DateTime64(3, 'UTC')) │
+│ ClosedDate │ Nullable(DateTime64(3, 'UTC')) │
+└───────────────────────┴────────────────────────────────┘
+```
+
+> [s3 테이블 함수](/sql-reference/table-functions/s3)는 ClickHouse에서 S3의 데이터를 직접 쿼리할 수 있도록 합니다. 이 기능은 ClickHouse가 지원하는 모든 파일 형식과 호환됩니다.
+
+이로 인해 초기 비최적화된 스키마가 생성됩니다. 기본적으로 ClickHouse는 이러한 타입을 해당하는 Nullable 타입으로 매핑합니다. 우리는 이 타입들을 사용하여 간단한 `CREATE EMPTY AS SELECT` 명령으로 ClickHouse 테이블을 만들 수 있습니다.
+
+```sql
+CREATE TABLE posts
+ENGINE = MergeTree
+ORDER BY () EMPTY AS
+SELECT * FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/posts/*.parquet')
+```
+
+몇 가지 중요한 점:
+
+- 이 명령을 실행한 후 우리의 posts 테이블은 비어 있습니다. 데이터가 로드되지 않았습니다.
+- 우리는 MergeTree를 우리의 테이블 엔진으로 지정했습니다. MergeTree는 대부분 사용자가 사용할 가장 일반적인 ClickHouse 테이블 엔진입니다. 이것은 PB 규모의 데이터를 처리할 수 있는 ClickHouse의 멀티 툴이며, 대부분의 분석 사용 사례에 적합합니다. 효율적인 업데이트를 지원해야 하는 CDC와 같은 다른 테이블 엔진도 존재합니다.
+
+`ORDER BY ()` 절은 우리가 인덱스가 없으며, 더 구체적으로 데이터에 순서가 없음을 의미합니다. 이는 나중에 더 자세히 설명합니다. 현재는 모든 쿼리가 선형 스캔을 요구할 것임을 아는 것으로 충분합니다.
+
+테이블이 생성되었음을 확인하려면:
+
+```sql
+SHOW CREATE TABLE posts
+
+CREATE TABLE posts
+(
+ `Id` Nullable(Int64),
+ `PostTypeId` Nullable(Int64),
+ `AcceptedAnswerId` Nullable(Int64),
+ `CreationDate` Nullable(DateTime64(3, 'UTC')),
+ `Score` Nullable(Int64),
+ `ViewCount` Nullable(Int64),
+ `Body` Nullable(String),
+ `OwnerUserId` Nullable(Int64),
+ `OwnerDisplayName` Nullable(String),
+ `LastEditorUserId` Nullable(Int64),
+ `LastEditorDisplayName` Nullable(String),
+ `LastEditDate` Nullable(DateTime64(3, 'UTC')),
+ `LastActivityDate` Nullable(DateTime64(3, 'UTC')),
+ `Title` Nullable(String),
+ `Tags` Nullable(String),
+ `AnswerCount` Nullable(Int64),
+ `CommentCount` Nullable(Int64),
+ `FavoriteCount` Nullable(Int64),
+ `ContentLicense` Nullable(String),
+ `ParentId` Nullable(String),
+ `CommunityOwnedDate` Nullable(DateTime64(3, 'UTC')),
+ `ClosedDate` Nullable(DateTime64(3, 'UTC'))
+)
+ENGINE = MergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}')
+ORDER BY tuple()
+```
+
+초기 스키마가 정의되었으므로, s3 테이블 함수를 사용하여 데이터를 읽고 `INSERT INTO SELECT`를 사용하여 데이터를 채울 수 있습니다. 다음 코드는 8코어 ClickHouse Cloud 인스턴스에서 약 2분 만에 `posts` 데이터를 로드합니다.
+
+```sql
+INSERT INTO posts SELECT * FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/posts/*.parquet')
+
+0 rows in set. Elapsed: 148.140 sec. Processed 59.82 million rows, 38.07 GB (403.80 thousand rows/s., 257.00 MB/s.)
+```
+
+> 위 쿼리는 60m 행을 로드합니다. ClickHouse에서는 작지만, 느린 인터넷 연결을 가진 사용자들은 로드할 데이터의 하위 집합을 로드하고 싶을 것입니다. 이는 glob 패턴을 통해 연도별로 로드할 항목을 지정함으로써 쉽게 할 수 있습니다. 예를 들어, `https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/posts/2008.parquet` 또는 `https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/posts/{2008, 2009}.parquet`와 같은 방법입니다. glob 패턴을 사용하여 파일의 하위 집합을 대상으로 하는 방법은 [여기](/sql-reference/table-functions/file#globs-in-path)에서 확인하세요.
+
+## 최적화된 타입 {#optimizing-types}
+
+ClickHouse 쿼리 성능의 비밀 중 하나는 압축입니다.
+
+디스크에서 데이터의 양이 적으면 적은 I/O로 인해 쿼리와 삽입이 더 빨라집니다. 어떤 압축 알고리즘의 CPU에 대한 오버헤드는 대개 IO 감소에 의해 상쇄됩니다. 따라서 ClickHouse 쿼리가 빠르게 실행되도록 보장하는 데 있어서 데이터의 압축을 개선하는 것이 가장 먼저 집중해야 할 사항입니다.
+
+> ClickHouse가 데이터를 이렇게 잘 압축하는 이유에 대한 자세한 설명은 [이 기사](https://clickhouse.com/blog/optimize-clickhouse-codecs-compression-schema)를 추천합니다. 요약하자면, 열 지향 데이터베이스로서 값이 열 순서로 기록됩니다. 이러한 값이 정렬되면 동일한 값이 서로 인접하게 됩니다. 압축 알고리즘은 데이터의 연속 패턴을 활용합니다. 이 외에도 ClickHouse는 사용자가 압축 기술을 추가로 조정할 수 있도록 하는 코덱 및 세분화된 데이터 유형을 제공합니다.
+
+ClickHouse의 압축은 세 가지 주요 요인의 영향을 받습니다: 정렬 키, 데이터 유형 및 사용되는 코덱. 이러한 모든 항목은 스키마를 통해 구성됩니다.
+
+압축 및 쿼리 성능을 초기 상태에서 가장 많이 개선할 수 있는 방법은 타입 최적화의 간단한 프로세스로 얻을 수 있습니다. 스키마를 최적화하기 위해 적용할 수 있는 몇 가지 간단한 규칙은 다음과 같습니다:
+
+- **엄격한 유형 사용** - 우리의 초기 스키마는 Clearly numeric인 많은 컬럼에 Strings를 사용했습니다. 올바른 유형 사용은 필터링 및 집계 시 예상하는 의미론을 보장합니다. 날짜 유형도 포함되어 있으며, Parquet 파일에서 올바르게 제공되고 있습니다.
+- **Nullable 컬럼 피하기** - 기본적으로 위 컬럼은 Null로 가정되고 있습니다. Nullable 타입을 사용하면 쿼리가 빈 값과 Null 값의 차이를 구분할 수 있도록 합니다. 이는 UInt8 타입의 별도 컬럼을 생성합니다. 이 추가 컬럼은 사용자가 nullable 컬럼으로 작업할 때마다 처리해야 하며, 이는 추가 저장 공간 사용을 초래하고 거의 항상 쿼리 성능에 부정적인 영향을 미칩니다. 기본형의 빈 값과 Null 사이에 차이가 있는 경우에만 Nullable을 사용하세요. 예를 들어, `ViewCount` 컬럼에서 빈 값에 대해 0이라는 값이 대부분의 쿼리에서 충분하며 결과에 영향을 미치지 않습니다. 빈 값이 다르게 처리되어야 한다면 필터로도 종종 쿼리에서 제외할 수 있습니다.
+- **숫자 타입 최소 정밀도 사용하기** - ClickHouse는 다양한 숫자 범위 및 정확도를 위해 설계된 여러 숫자 유형이 있습니다. 컬럼을 나타내는 데 필요한 비트 수를 최소화하는 것을 목표로 하세요. Int16과 같은 다양한 크기의 정수 외에도 ClickHouse는 최소 값이 0인 부호 없는 변수를 제공합니다. 이 변수는 컬럼에 대해 적은 비트를 사용할 수 있게 하며, 예를 들어 UInt16의 최대 값은 65535로, Int16의 두 배입니다. 가능한 한 이러한 유형을 선호하세요.
+- **날짜 유형에 대한 최소 정밀도 사용하기** - ClickHouse는 여러 날짜 및 날짜 시간 유형을 지원합니다. Date 및 Date32는 순수 날짜를 저장하는 데 사용할 수 있으며, 후자는 더 많은 비트의 대가로 더 넓은 날짜 범위를 지원합니다. DateTime 및 DateTime64는 날짜 시간에 대한 지원을 제공합니다. DateTime은 초 단위로 제한되어 있으며 32비트를 사용합니다. DateTime64는 이름이 암시하는 바와 같이 64비트를 사용하지만 나노초 단위의 지원을 제공합니다. 항상 쿼리에 대해 수용 가능한 더 거친 버전을 선택하고 필요한 비트 수를 최소화하세요.
+- **LowCardinality 사용하기** - 고유 값의 수가 적은 정수, 문자열, Date 또는 DateTime 컬럼은 LowCardinality 타입을 사용하여 인코딩할 수 있습니다. 이 딕셔너리는 값을 인코딩하여 디스크 크기를 줄입니다. 고유 값이 1만 개 이하인 컬럼에 대해 고려하세요.
+- **특수 경우에 FixedString 사용하기** - 고정 길이를 가진 문자열은 FixedString 타입으로 인코딩할 수 있습니다. 예를 들어, 언어 및 통화 코드가 해당됩니다. 데이터가 정확히 N 바이트의 길이를 가질 때 효율적입니다. 다른 경우에는 효율성을 줄일 수 있으며 LowCardinality를 선호하는 것이 좋습니다.
+- **데이터 유효성을 위한 Enum 사용하기** - Enum 타입은 열거형 타입을 효율적으로 인코딩하는 데 사용할 수 있습니다. Enum은 저장해야 하는 고유 값의 수에 따라 8 또는 16비트일 수 있습니다. 삽입 시 연관된 유효성을 필요로 하거나 Enum 값에서 자연스러운 순서를 활용하는 쿼리를 수행하고 싶다면 이를 사용하는 것을 고려하세요. 예를 들어, 사용자 응답이 포함된 피드백 컬럼을 `Enum(':(' = 1, ':|' = 2, ':)' = 3)`으로 사용할 수 있습니다.
+
+> 팁: 모든 컬럼의 범위와 고유 값 수를 찾으려면 사용자는 간단한 쿼리 `SELECT * APPLY min, * APPLY max, * APPLY uniq FROM table FORMAT Vertical`을 사용할 수 있습니다. 이 쿼리는 비용이 높을 수 있으므로 작은 데이터의 하위 집합에서 수행하는 것이 좋습니다. 이 쿼리는 정밀한 결과를 얻기 위해 숫자가 최소한 정의되어 있어야 합니다. 즉, 문자열이 아니어야 합니다.
+
+위의 간단한 규칙을 posts 테이블에 적용하여 각 컬럼의 최적 유형을 식별할 수 있습니다:
+
+| Column | Is Numeric | Min, Max | Unique Values | Nulls | Comment | Optimized Type |
+|------------------------|------------|------------------------------------------------------------------------|----------------|--------|----------------------------------------------------------------------------------------------|------------------------------------------|
+| `PostTypeId` | Yes | 1, 8 | 8 | No | | `Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8)` |
+| `AcceptedAnswerId` | Yes | 0, 78285170 | 12282094 | Yes | Null과 0 값을 구별 | UInt32 |
+| `CreationDate` | No | 2008-07-31 21:42:52.667000000, 2024-03-31 23:59:17.697000000 | - | No | 밀리초 정밀도가 필요 없으므로 DateTime 사용 | DateTime |
+| `Score` | Yes | -217, 34970 | 3236 | No | | Int32 |
+| `ViewCount` | Yes | 2, 13962748 | 170867 | No | | UInt32 |
+| `Body` | No | - | - | No | | String |
+| `OwnerUserId` | Yes | -1, 4056915 | 6256237 | Yes | | Int32 |
+| `OwnerDisplayName` | No | - | 181251 | Yes | Null을 빈 문자열로 간주 | String |
+| `LastEditorUserId` | Yes | -1, 9999993 | 1104694 | Yes | 0은 Null에 사용될 수 있는 미사용 값 | Int32 |
+| `LastEditorDisplayName` | No | - | 70952 | Yes | Null을 빈 문자열로 간주하며 LowCardinality 테스트에서 이점을 보지 못했습니다 | String |
+| `LastEditDate` | No | 2008-08-01 13:24:35.051000000, 2024-04-06 21:01:22.697000000 | - | No | 밀리초 정밀도가 필요 없으므로 DateTime 사용 | DateTime |
+| `LastActivityDate` | No | 2008-08-01 12:19:17.417000000, 2024-04-06 21:01:22.697000000 | - | No | 밀리초 정밀도가 필요 없으므로 DateTime 사용 | DateTime |
+| `Title` | No | - | - | No | Null을 빈 문자열로 간주 | String |
+| `Tags` | No | - | - | No | Null을 빈 문자열로 간주 | String |
+| `AnswerCount` | Yes | 0, 518 | 216 | No | Null과 0을 동일하게 간주 | UInt16 |
+| `CommentCount` | Yes | 0, 135 | 100 | No | Null과 0을 동일하게 간주 | UInt8 |
+| `FavoriteCount` | Yes | 0, 225 | 6 | Yes | Null과 0을 동일하게 간주 | UInt8 |
+| `ContentLicense` | No | - | 3 | No | LowCardinality가 FixedString보다 우수합니다 | LowCardinality(String) |
+| `ParentId` | No | - | 20696028 | Yes | Null을 빈 문자열로 간주 | String |
+| `CommunityOwnedDate` | No | 2008-08-12 04:59:35.017000000, 2024-04-01 05:36:41.380000000 | - | Yes | Null에 대한 기본값 1970-01-01을 고려합니다. 밀리초 정밀도는 필요 없으며 DateTime 사용합니다 | DateTime |
+| `ClosedDate` | No | 2008-09-04 20:56:44, 2024-04-06 18:49:25.393000000 | - | Yes | Null에 대한 기본값 1970-01-01을 고려합니다. 밀리초 정밀도는 필요 없으며 DateTime 사용합니다 | DateTime |
+
+
+
+위의 내용은 다음과 같은 스키마를 제공합니다:
+
+```sql
+CREATE TABLE posts_v2
+(
+ `Id` Int32,
+ `PostTypeId` Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime,
+ `Score` Int32,
+ `ViewCount` UInt32,
+ `Body` String,
+ `OwnerUserId` Int32,
+ `OwnerDisplayName` String,
+ `LastEditorUserId` Int32,
+ `LastEditorDisplayName` String,
+ `LastEditDate` DateTime,
+ `LastActivityDate` DateTime,
+ `Title` String,
+ `Tags` String,
+ `AnswerCount` UInt16,
+ `CommentCount` UInt8,
+ `FavoriteCount` UInt8,
+ `ContentLicense`LowCardinality(String),
+ `ParentId` String,
+ `CommunityOwnedDate` DateTime,
+ `ClosedDate` DateTime
+)
+ENGINE = MergeTree
+ORDER BY tuple()
+COMMENT 'Optimized types'
+```
+
+이 스키마에 대해 이전 테이블에서 데이터를 읽고 이를 삽입하여 간단한 `INSERT INTO SELECT`로 채울 수 있습니다:
+
+```sql
+INSERT INTO posts_v2 SELECT * FROM posts
+
+0 rows in set. Elapsed: 146.471 sec. Processed 59.82 million rows, 83.82 GB (408.40 thousand rows/s., 572.25 MB/s.)
+```
+
+우리의 새로운 스키마에서는 Null을 유지하지 않습니다. 위의 삽입은 이들을 해당 유형의 기본값으로 암시적으로 변환합니다 - 정수의 경우 0, 문자열의 경우 빈 값입니다. ClickHouse는 또한 자동으로 모든 숫자를 목표 정밀도로 변환합니다.
+ClickHouse에서의 기본 키(정렬 키)
+OLTP 데이터베이스에서 오는 사용자는 ClickHouse에서 동등한 개념을 찾고자 합니다.
+
+## 정렬 키 선택하기 {#choosing-an-ordering-key}
+
+ClickHouse가 자주 사용되는 규모에서는 메모리 및 디스크 효율성이 매우 중요합니다. 데이터는 파트라는 청크로 ClickHouse 테이블에 기록되며, 백그라운드에서 파트를 병합하는 규칙이 적용됩니다. ClickHouse에서 각 파트는 고유한 기본 인덱스를 가지고 있습니다. 파트가 병합될 때 병합된 파트의 기본 인덱스도 병합됩니다. 파트의 기본 인덱스는 행 그룹당 하나의 인덱스 항목을 가지고 있으며, 이 기술을 스파스 인덱싱이라고 합니다.
+
+
+
+ClickHouse에서 선택한 키는 인덱스뿐 아니라 디스크에 데이터가 기록되는 순서를 결정합니다. 그로 인해 압축 수준에 크게 영향을 줄 수 있으며, 이는 쿼리 성능에 영향을 미칠 수 있습니다. 대다수 컬럼의 값이 인접한 순서로 기록되는 정렬 키는 선택된 압축 알고리즘(및 코덱)이 데이터를 더 효과적으로 압축할 수 있게 해줍니다.
+
+> 테이블의 모든 컬럼은 지정된 정렬 키의 값에 따라 정렬됩니다. 이들 컬럼이 정렬 키에 포함되어 있는지 여부와는 상관 없습니다. 예를 들어, `CreationDate`가 키로 사용된다면 다른 모든 컬럼의 값 순서는 `CreationDate` 컬럼의 값 순서를 나타냅니다. 여러 개의 정렬 키를 지정할 수 있으며 - 이는 `SELECT` 쿼리의 `ORDER BY` 절과 같은 의미로 정렬됩니다.
+
+정렬 키를 선택하는 데 도움이 되는 몇 가지 간단한 규칙을 적용할 수 있습니다. 다음 규칙들은 때때로 상충할 수 있으므로 순서대로 고려하시기 바랍니다. 사용자는 이 과정을 통해 여러 키를 식별할 수 있으며, 일반적으로 4-5개가 충분합니다:
+
+- 일반 필터와 일치하는 컬럼 선택하기. 컬럼이 `WHERE` 절에서 자주 사용된다면, 이들을 정렬 키에 포함하는 것이 덜 자주 사용되는 컬럼보다 우선시해야 합니다.
+- 필터링할 때 전체 행의 큰 비율을 제외하는 데 도움이 되는 컬럼을 선호하세요. 이렇게 하면 읽어야 할 데이터 양이 줄어듭니다.
+- 테이블 내의 다른 컬럼과 높은 상관 관계가 있을 가능성이 있는 컬럼을 선호합니다. 이는 이러한 값들이 연속적으로 저장되게 하여 압축을 개선하는 데 도움이 됩니다.
+- 정렬 키에 있는 컬럼에 대한 `GROUP BY` 및 `ORDER BY` 작업은 메모리 효율을 높일 수 있습니다.
+
+정렬 키에 대한 컬럼의 하위 집합을 식별할 때는 컬럼을 특정 순서로 선언하세요. 이 순서는 쿼리에서 보조 키 컬럼의 필터링 효율성과 테이블 데이터 파일의 압축 비율 모두에 상당한 영향을 미칠 수 있습니다. 일반적으로, 카디널리티의 오름차순으로 키를 정렬하는 것이 가장 좋습니다. 이는 정렬 키에 나중에 나타나는 컬럼의 필터링이 더 이와 반대인 경우보다 효율적이지 않게 된다는 사실과 균형을 이루어야 합니다. 이러한 동작을 균형 있게 조율하고 액세스 패턴을 고려하세요 (가장 중요한 것은 변형을 테스트하는 것입니다).
+
+### 예제 {#example}
+
+위의 가이드라인을 posts 테이블에 적용한다고 가정해 봅시다. 사용자가 날짜 및 게시물 유형별로 필터링하는 분석을 수행하려고 합니다. 예를 들어, "지난 3개월 동안 가장 댓글이 많은 질문은 무엇인가요?"라는 것입니다.
+
+이 질문에 대한 쿼리는 최적화된 타입이지만 정렬 키가 없는 이전 `posts_v2` 테이블을 사용하는 것입니다:
+
+```sql
+SELECT
+ Id,
+ Title,
+ CommentCount
+FROM posts_v2
+WHERE (CreationDate >= '2024-01-01') AND (PostTypeId = 'Question')
+ORDER BY CommentCount DESC
+LIMIT 3
+
+┌───────Id─┬─Title─────────────────────────────────────────────────────────────┬─CommentCount─┐
+│ 78203063 │ How to avoid default initialization of objects in std::vector? │ 74 │
+│ 78183948 │ About memory barrier │ 52 │
+│ 77900279 │ Speed Test for Buffer Alignment: IBM's PowerPC results vs. my CPU │ 49 │
+└──────────┴───────────────────────────────────────────────────────────────────┴──────────────
+
+10 rows in set. Elapsed: 0.070 sec. Processed 59.82 million rows, 569.21 MB (852.55 million rows/s., 8.11 GB/s.)
+Peak memory usage: 429.38 MiB.
+```
+
+> 이 쿼리는 모든 60m 행이 선형 스캔되었음에도 불구하고 매우 빠릅니다 - ClickHouse는 그저 빠릅니다 :) TB 및 PB 규모에서는 정렬 키가 정말 중요하다는 것을 아셔야 합니다!
+
+`PostTypeId` 및 `CreationDate`를 우리의 정렬 키로 선택합시다.
+
+그런데, 사용자들이 항상 `PostTypeId`로 필터링할 것으로 예상되므로, 이는 8의 카디널리티를 갖고 있으며 정렬 키의 첫 번째 항목으로 논리적인 선택이 됩니다. 날짜 정밀도 필터링이 충분할 가능성을 인식하며 (날짜 시간 필터에도 여전히 이점을 줄 것입니다) `toDate(CreationDate)`를 우리의 키의 두 번째 구성으로 사용합니다. 그렇게 하면 날짜가 16로 표현될 수 있으며, 필터링 속도를 높입니다. 최종 키 항목은 가장 댓글이 많은 게시물을 찾는 데 도움이 되는 `CommentCount`입니다 (최종 정렬을 위하여).
+
+```sql
+CREATE TABLE posts_v3
+(
+ `Id` Int32,
+ `PostTypeId` Enum('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ `AcceptedAnswerId` UInt32,
+ `CreationDate` DateTime,
+ `Score` Int32,
+ `ViewCount` UInt32,
+ `Body` String,
+ `OwnerUserId` Int32,
+ `OwnerDisplayName` String,
+ `LastEditorUserId` Int32,
+ `LastEditorDisplayName` String,
+ `LastEditDate` DateTime,
+ `LastActivityDate` DateTime,
+ `Title` String,
+ `Tags` String,
+ `AnswerCount` UInt16,
+ `CommentCount` UInt8,
+ `FavoriteCount` UInt8,
+ `ContentLicense` LowCardinality(String),
+ `ParentId` String,
+ `CommunityOwnedDate` DateTime,
+ `ClosedDate` DateTime
+)
+ENGINE = MergeTree
+ORDER BY (PostTypeId, toDate(CreationDate), CommentCount)
+COMMENT 'Ordering Key'
+
+--populate table from existing table
+
+INSERT INTO posts_v3 SELECT * FROM posts_v2
+
+0 rows in set. Elapsed: 158.074 sec. Processed 59.82 million rows, 76.21 GB (378.42 thousand rows/s., 482.14 MB/s.)
+Peak memory usage: 6.41 GiB.
+
+Our previous query improves the query response time by over 3x:
+
+SELECT
+ Id,
+ Title,
+ CommentCount
+FROM posts_v3
+WHERE (CreationDate >= '2024-01-01') AND (PostTypeId = 'Question')
+ORDER BY CommentCount DESC
+LIMIT 3
+
+10 rows in set. Elapsed: 0.020 sec. Processed 290.09 thousand rows, 21.03 MB (14.65 million rows/s., 1.06 GB/s.)
+```
+
+특정 타입 사용 및 적절한 정렬 키 사용으로 얻은 압축 개선에 관심이 있는 사용자들은 [ClickHouse에서의 압축](/data-compression/compression-in-clickhouse)을 확인하세요. 압축을 더 향상시키고 싶은 사용자는 [적절한 열 압축 코덱 선택하기](/data-compression/compression-in-clickhouse#choosing-the-right-column-compression-codec) 섹션도 추천합니다.
+
+## 다음: 데이터 모델링 기술 {#next-data-modeling-techniques}
+
+지금까지 우리는 단일 테이블만 마이그레이션했습니다. 이것은 일부 핵심 ClickHouse 개념을 소개하는 데 도움이 되었지만, 대부분의 스키마는 불행히도 그렇게 간단하지 않습니다.
+
+아래 나열된 다른 가이드에서는 ClickHouse 쿼리를 최적화하기 위해 더 넓은 스키마를 재구성하는 여러 가지 기술을 살펴보겠습니다. 이 과정에서 우리는 `Posts` 테이블이 대부분의 분석 쿼리에서 중심 테이블로 남아 있도록 목표로 합니다. 다른 테이블도 독립적으로 쿼리할 수 있지만, 대부분의 분석이 `posts` 맥락에서 수행되기를 원합니다.
+
+> 이 섹션에서는 다른 테이블의 최적화된 변형을 사용합니다. 이러한 스키마를 제공하지만, 간결함을 위해 내린 결정은 생략합니다. 이러한 결정은 이전에 설명된 규칙을 바탕으로 하며, 독자가 이를 추론하도록 남깁니다.
+
+다음 접근 방식은 모두 읽기를 최적화하고 쿼리 성능을 향상시키기 위해 JOIN의 필요성을 최소화하는 데 목적을 둡니다. JOIN이 ClickHouse에서 완전히 지원되지만, 우리는 최적 성능을 위해 드물게 사용될 것을 권장합니다 (JOIN 쿼리에서 2~3개의 테이블은 괜찮습니다).
+
+> ClickHouse는 외래 키라는 개념이 없습니다. 이는 조인을 금지하지 않지만, 참조 무결성은 사용자가 애플리케이션 수준에서 관리해야 함을 의미합니다. ClickHouse와 같은 OLAP 시스템에서는 데이터 무결성이 일반적으로 애플리케이션 수준에서 관리되거나 데이터 수집 프로세스 중에 처리되며, 데이터베이스에 의해 집행되며 이는 상당한 오버헤드를 발생시킵니다. 이러한 접근 방식은 더 많은 유연성 및 빠른 데이터 삽입을 가능하게 합니다. 이는 ClickHouse의 매우 큰 데이터 세트에서 읽기 및 삽입 쿼리 속도 및 확장성에 중점을 둡니다.
+
+쿼리 시간에 Joins의 사용을 최소화하기 위해 사용자는 여러 도구/접근 방식을 사용할 수 있습니다:
+
+- [**비정규화 데이터**](/data-modeling/denormalization) - 테이블을 결합하고 1:1 관계가 아닌 복잡한 타입을 사용하여 데이터를 비정규화합니다. 이는 종종 쿼리 시간의 조인을 삽입 시간으로 이동하는 것입니다.
+- [**딕셔너리**](/dictionary) - 직접 조인 및 키 값 조회를 처리하기 위해 ClickHouse에서 제공하는 특정 기능입니다.
+- [**증분 물리화된 뷰**](/materialized-view/incremental-materialized-view) - 쿼리 시간의 계산 비용을 삽입 시간으로 전환하고 증분 집계 값을 계산할 수 있는 ClickHouse 기능입니다.
+- [**갱신 가능한 물리화된 뷰**](/materialized-view/refreshable-materialized-view) - 다른 데이터베이스 제품에서 사용되는 물리화된 뷰와 유사하게, 쿼리 결과를 주기적으로 계산하고 결과를 캐시할 수 있게 합니다.
+
+각 가이드에서 각 접근 방식을 설명하고, 각 접근 방식이 언제 적절한지에 대한 예제를 통해 Stack Overflow 데이터셋 문제 해결에 적용하는 방법을 강조합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/schema-design.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/schema-design.md.hash
new file mode 100644
index 00000000000..9a951fcfb05
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/data-modeling/schema-design.md.hash
@@ -0,0 +1 @@
+94f6ffeefab1a4a2
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/index.md
new file mode 100644
index 00000000000..437f415da45
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/index.md
@@ -0,0 +1,24 @@
+---
+'slug': '/deployment-guides/index'
+'title': '배포 가이드 개요'
+'description': '배포 및 확장 섹션의 랜딩 페이지'
+'keywords':
+- 'deployment guides'
+- 'scaling'
+- 'cluster deployment'
+- 'replication'
+- 'fault tolerance'
+'doc_type': 'landing-page'
+---
+
+
+# 배포 및 확장
+
+이 섹션에서는 다음 주제를 다룹니다:
+
+| 주제 |
+|------------------------------------------------------------------|
+| [소개](/architecture/introduction) |
+| [수평 확장](/architecture/horizontal-scaling) |
+| [장애 허용을 위한 복제](/architecture/replication) |
+| [클러스터 배포](/architecture/cluster-deployment) |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/index.md.hash
new file mode 100644
index 00000000000..ae0f258f77c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/index.md.hash
@@ -0,0 +1 @@
+0e2b2a94e0552411
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/parallel-replicas.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/parallel-replicas.mdx
new file mode 100644
index 00000000000..15f3f13be13
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/parallel-replicas.mdx
@@ -0,0 +1,428 @@
+---
+'slug': '/deployment-guides/parallel-replicas'
+'title': '병렬 복제본'
+'keywords':
+- 'parallel replica'
+'description': '이 가이드에서는 먼저 ClickHouse가 분산 테이블을 통해 여러 샤드에 쿼리를 어떻게 분산하는지 논의하고, 그런 다음
+ 쿼리가 실행을 위해 여러 복제본을 어떻게 활용할 수 있는지 설명합니다.'
+'doc_type': 'reference'
+---
+
+import Image from '@theme/IdealImage';
+import BetaBadge from '@theme/badges/BetaBadge';
+import image_1 from '@site/static/images/deployment-guides/parallel-replicas-1.png'
+import image_2 from '@site/static/images/deployment-guides/parallel-replicas-2.png'
+import image_3 from '@site/static/images/deployment-guides/parallel-replicas-3.png'
+import image_4 from '@site/static/images/deployment-guides/parallel-replicas-4.png'
+import image_5 from '@site/static/images/deployment-guides/parallel-replicas-5.png'
+import image_6 from '@site/static/images/deployment-guides/parallel-replicas-6.png'
+import image_7 from '@site/static/images/deployment-guides/parallel-replicas-7.png'
+import image_8 from '@site/static/images/deployment-guides/parallel-replicas-8.png'
+import image_9 from '@site/static/images/deployment-guides/parallel-replicas-9.png'
+
+
+
+## 소개 {#introduction}
+
+ClickHouse는 쿼리를 매우 빠르게 처리하지만, 이러한 쿼리들이 여러 서버에 어떻게 분산되고 병렬화되는 것일까요?
+
+> 이 가이드에서는 먼저 ClickHouse가 분산 테이블을 통해 쿼리를 여러 샤드에 어떻게 분산하는지에 대해 논의하고, 그 다음 쿼리가 실행을 위해 여러 복제본을 활용할 수 있는 방법에 대해 설명합니다.
+
+## 샤딩 아키텍처 {#sharded-architecture}
+
+공유 없는 아키텍처에서는 클러스터가 여러 샤드로 나뉘며, 각 샤드는 전체 데이터의 하위 집합을 포함합니다. 분산 테이블은 이러한 샤드 위에 위치하여 전체 데이터에 대한 통합된 뷰를 제공합니다.
+
+데이터 읽기는 로컬 테이블로 전송될 수 있습니다. 쿼리 실행은 특정 샤드에서만 발생할 수 있으며, 분산 테이블로 전송될 수도 있고, 이 경우에는 각 샤드가 주어진 쿼리를 실행합니다. 분산 테이블이 쿼리된 서버는 데이터를 집계하여 클라이언트에 응답합니다:
+
+
+
+위의 그림은 클라이언트가 분산 테이블을 쿼리할 때 발생하는 일을 시각화합니다:
+
+
+
+ 선택 쿼리는 임의의 노드의 분산 테이블로 전송됩니다
+ (라운드 로빈 전략을 통해 또는 로드 밸런서에 의해 특정 서버로 라우팅된 후). 이 노드는 이제 조정자로 작용합니다.
+
+
+ 노드는 쿼리를 실행해야 할 각 샤드를 찾아내어,
+ 분산 테이블에 지정된 정보에 따라 쿼리가 각 샤드로 전송됩니다.
+
+
+ 각 샤드는 로컬에서 데이터를 읽고, 필터링하고, 집계한 후
+ 병합 가능한 상태를 조정자에게 다시 전송합니다.
+
+
+ 조정 노드는 데이터를 병합한 후 응답을 클라이언트에 전송합니다.
+
+
+
+복제본을 추가하면 절차는 대체로 비슷하지만, 각 샤드에서 단일 복제본만 쿼리를 실행한다는 점만 달라집니다. 이는 더 많은 쿼리를 병렬로 처리할 수 있음을 의미합니다.
+
+## 비샤딩 아키텍처 {#non-sharded-architecture}
+
+ClickHouse Cloud는 위에서 제시한 아키텍처와 매우 다른 아키텍처를 가지고 있습니다. (자세한 내용은 ["ClickHouse Cloud Architecture"](https://clickhouse.com/docs/cloud/reference/architecture)를 참조하세요). 컴퓨트와 스토리지를 분리하고 사실상 무한한 저장 용량을 제공함에 따라, 샤드의 필요성이 덜 중요해집니다.
+
+아래 그림은 ClickHouse Cloud 아키텍처를 보여줍니다:
+
+
+
+이 아키텍처는 우리가 거의 즉시 복제본을 추가 및 제거할 수 있게 하여 매우 높은 클러스터 확장성을 보장합니다. ClickHouse Keeper 클러스터(오른쪽에 표시됨)는 메타데이터의 단일 신뢰 출처를 보장합니다. 복제본은 ClickHouse Keeper 클러스터에서 메타데이터를 가져오고 모두 동일한 데이터를 유지합니다. 데이터 자체는 객체 스토리지에 저장되며 SSD 캐시를 통해 쿼리 속도를 높일 수 있습니다.
+
+그렇다면 이제 여러 서버에 쿼리 실행을 어떻게 분산할 수 있을까요? 샤딩 아키텍처에서는 각 샤드가 실제로 데이터의 하위 집합에서 쿼리를 실행할 수 있기 때문에 아주 명백했습니다. 샤딩이 없을 때는 어떻게 작동할까요?
+
+## 병렬 복제본 소개 {#introducing-parallel-replicas}
+
+여러 서버를 통한 쿼리 실행을 병렬화하려면, 먼저 서버 중 하나를 조정자로 지정할 수 있어야 합니다. 조정자는 실행해야 하는 작업 목록을 작성하고, 모든 작업이 실행되고 집계되어 결과가 클라이언트에게 전송되도록 하여야 합니다. 대부분의 분산 시스템에서 이 역할은 초기 쿼리를 수신한 노드의 역할입니다. 또한 작업 단위를 정의해야 합니다. 샤딩 아키텍처에서는 작업 단위가 샤드, 즉 데이터의 하위 집합입니다. 병렬 복제본을 사용할 때는 테이블의 작은 부분을 작업 단위로 사용합니다, 이를 [그란울](https://clickhouse.com/docs/guides/best-practices/sparse-primary-indexes#data-is-organized-into-granules-for-parallel-data-processing)이라고 합니다.
+
+이제 아래 그림을 통해 실제로 어떻게 작동하는지 살펴보겠습니다:
+
+
+
+병렬 복제본을 사용하여:
+
+
+
+ 클라이언트의 쿼리는 로드 밸런서를 통해 한 노드로 전송됩니다. 이 노드는 이 쿼리의 조정자가 됩니다.
+
+
+ 노드는 각 파트의 인덱스를 분석하고 처리할 올바른 파트와 그란울을 선택합니다.
+
+
+ 조정자는 작업 부하를 여러 복제본에 할당할 수 있는 그란울 집합으로 분할합니다.
+
+
+ 각 그란울 집합은 해당 복제본에 의해 처리되고, 완료되면 조정자에게 병합 가능한 상태가 전송됩니다.
+
+
+ 마지막으로 조정자는 복제본에서 모든 결과를 병합하고 응답을 클라이언트에게 반환합니다.
+
+
+
+위의 단계는 이론적으로 병렬 복제본이 어떻게 작동하는지를 개요합니다.
+하지만 실제로는 이러한 논리가 완벽하게 작동하지 못하는 다양한 요소가 있습니다:
+
+
+
+ 일부 복제본이 사용할 수 없을 수 있습니다.
+
+
+ ClickHouse의 복제는 비동기적이며, 일부 복제본이 같은 파트를 동시에 가지지 않을 수 있습니다.
+
+
+ 복제본 간의 지연(latency) 문제를 처리해야 합니다.
+
+
+ 파일 시스템 캐시는 각 복제본에서의 활동에 따라 달라지므로, 임의의 작업 할당이 캐시 지역성으로 인해 최적의 성능 결과를 제공하지 않을 수 있습니다.
+
+
+
+이러한 요소를 해결하는 방법은 다음 섹션에서 살펴보겠습니다.
+
+### 공지 사항 {#announcements}
+
+위 목록의 (1) 및 (2) 문제를 해결하기 위해 공지 개념을 도입했습니다. 아래 그림을 사용하여 작동 방식을 시각화해 보겠습니다:
+
+
+
+
+
+ 클라이언트의 쿼리는 로드 밸런서를 통해 한 노드로 전송됩니다. 이 노드는 이 쿼리의 조정자가 됩니다.
+
+
+ 조정 노드는 모든 복제본에서 공지를 가져오는 요청을 보냅니다. 복제본은 테이블의 현재 파트 세트에 대해 약간 다른 뷰를 가질 수 있습니다. 결과적으로 잘못된 스케줄링 결정을 피하기 위해 이 정보를 수집해야 합니다.
+
+
+ 조정 노드는 그런 다음 공지를 사용하여 서로 다른 복제본에 할당할 수 있는 그란울 집합을 정의합니다. 예를 들어, 공지에서 파트 3의 그란울이 복제본 2에 할당되지 않았음을 볼 수 있습니다. 이는 이 복제본이 공지에 이 파트를 제공하지 않았기 때문입니다. 또한 복제본 3에 할당된 작업이 없는 이유는 이 복제본이 공지를 제공하지 않았기 때문입니다.
+
+
+ 각 복제본이 자신의 그란울 하위 집합에서 쿼리를 처리하고 병합 가능한 상태가 조정자에게 다시 전송된 후, 조정자는 결과를 병합하고 응답을 클라이언트에게 보냅니다.
+
+
+
+### 동적 조정 {#dynamic-coordination}
+
+지연 문제를 해결하기 위해 동적 조정을 추가했습니다. 이는 모든 그란울이 한 요청에서 복제본으로 전송되지 않고, 각 복제본이 조정자에게 처리할 새로운 작업(그란울 집합)을 요청할 수 있도록 함을 의미합니다. 조정자는 수신한 공지에 따라 복제본에 그란울 집합을 제공합니다.
+
+모든 복제본이 모든 파트를 포함한 공지를 보냈다고 가정해 보겠습니다.
+
+아래 그림은 동적 조정이 어떻게 작동하는지를 시각화합니다:
+
+
+
+
+
+ 복제본은 조정자 노드에게 작업을 처리할 수 있다는 것을 알려주고, 처리할 수 있는 작업의 양을 지정할 수 있습니다.
+
+
+ 조정자는 복제본에 작업을 할당합니다.
+
+
+
+
+
+
+
+ 복제본 1과 2는 작업을 매우 빠르게 완료할 수 있습니다. 그들은 조정자 노드에게 다른 작업을 요청할 것입니다.
+
+
+ 조정자는 복제본 1과 2에 새로운 작업을 할당합니다.
+
+
+
+
+
+
+
+ 모든 복제본이 이제 작업 처리를 완료했습니다. 그들은 더 많은 작업을 요청합니다.
+
+
+ 조정자는 공지를 사용하여 처리할 남은 작업을 확인하지만, 남은 작업이 없습니다.
+
+
+ 조정자는 복제본에게 모든 작업이 처리되었음을 알립니다. 이제 모든 병합 가능한 상태를 병합하고 쿼리에 응답할 것입니다.
+
+
+
+### 캐시 지역성 관리 {#managing-cache-locality}
+
+남은 마지막 잠재적 문제는 캐시 지역성을 처리하는 방법입니다. 쿼리가 여러 번 실행되면, 같은 작업이 같은 복제본으로 라우팅되도록 어떻게 보장할 수 있을까요? 이전 예에서는 다음과 같이 작업이 할당되었습니다:
+
+
+
+
+
+
복제본 1
+
복제본 2
+
복제본 3
+
+
+
+
+
파트 1
+
g1, g6, g7
+
g2, g4, g5
+
g3
+
+
+
파트 2
+
g1
+
g2, g4, g5
+
g3
+
+
+
파트 3
+
g1, g6
+
g2, g4, g5
+
g3
+
+
+
+
+동일한 작업이 동일한 복제본에 할당되고 캐시의 이점을 누릴 수 있도록 하기 위해 두 가지 일이 발생합니다. 파트 + 그란울 집합(작업)의 해시가 계산됩니다. 작업 할당에서 복제본 수에 대한 모드가 적용됩니다.
+
+이론적으로는 좋게 들리지만, 실제로는 한 복제본에 갑작스러운 부하가 걸리거나 네트워크가 약화되면, 특정 작업을 실행하는 데 동일한 복제본을 지속적으로 사용하는 경우 지연이 발생할 수 있습니다. `max_parallel_replicas`가 복제본의 수보다 적으면 쿼리 실행을 위해 임의 선택된 복제본이 사용됩니다.
+
+### 작업 훔치기 {#task-stealing}
+
+어떤 복제본이 다른 복제본보다 작업을 느리게 처리하는 경우, 다른 복제본들은 이론적으로 그 복제본에 속하는 작업을 해시를 통해 '훔쳐' 지연을 줄이려고 시도합니다.
+
+### 한계 {#limitations}
+
+이 기능에는 알려진 한계가 있으며, 주요 한계는 이 섹션에 문서화되어 있습니다.
+
+:::note
+아래에 나열된 한계 중 하나가 아닌 문제가 발견되면, 병렬 복제본이 원인이라고 의심되는 경우, 레이블 `comp-parallel-replicas`를 사용하여 GitHub에 문제를 열어주세요.
+:::
+
+| 한계 | 설명 |
+|------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 복잡한 쿼리 | 현재 병렬 복제본은 간단한 쿼리에 대해서 잘 작동합니다. CTE, 서브쿼리, JOIN, 비평면 쿼리 등과 같은 복잡성 계층은 쿼리 성능에 부정적인 영향을 미칠 수 있습니다. |
+| 작은 쿼리 | 많은 행을 처리하지 않는 쿼리를 실행하는 경우, 여러 복제본에서 실행하면 쿼리 실행 사이의 네트워크 시간이 추가 주기를 초래할 수 있으므로 좋은 성능 시간을 제공하지 못할 수 있습니다. 이러한 문제는 설정: [`parallel_replicas_min_number_of_rows_per_replica`](/docs/operations/settings/settings#parallel_replicas_min_number_of_rows_per_replica)를 사용하여 제한할 수 있습니다. |
+| FINAL 사용 시 병렬 복제본 비활성화 | |
+| 프로젝션은 병렬 복제본과 함께 사용되지 않음 | |
+| 높은 카드inality 데이터 및 복잡한 집계 | 많은 데이터를 전송해야 하는 높은 카드inality 집계는 쿼리를 상당히 느리게 만들 수 있습니다. |
+| 새로운 분석기와의 호환성 | 새로운 분석기는 특정 시나리오에서 쿼리 실행 속도를 크게 느리게 하거나 빠르게 할 수 있습니다. |
+
+## 병렬 복제본 관련 설정 {#settings-related-to-parallel-replicas}
+
+| 설정 | 설명 |
+|-----------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `enable_parallel_replicas` | `0`: 비활성화 `1`: 활성화 `2`: 병렬 복제본 사용 강제, 사용하지 않을 경우 예외 발생. |
+| `cluster_for_parallel_replicas` | 병렬 복제를 위해 사용할 클러스터 이름; ClickHouse Cloud를 사용하는 경우 `default`를 사용합니다. |
+| `max_parallel_replicas` | 다중 복제본에서 쿼리 실행을 위해 사용할 최대 복제본 수. 클러스터의 복제본 수보다 적은 수가 지정된 경우 노드는 임의로 선택됩니다. 이 값은 수평 확장을 고려하여 오버커밋 될 수도 있습니다. |
+| `parallel_replicas_min_number_of_rows_per_replica` | 처리해야 할 행 수에 따라 사용되는 복제본 수를 제한하는 데 도움이 됩니다. 사용되는 복제본 수는 다음과 같이 정의됩니다: `추정된 읽어야 할 행 수` / `min_number_of_rows_per_replica`. |
+| `allow_experimental_analyzer` | `0`: 이전 분석기 사용 `1`: 새로운 분석기 사용.
병렬 복제본의 동작은 사용된 분석기에 따라 변경될 수 있습니다. |
+
+## 병렬 복제본 문제 조사 {#investigating-issues-with-parallel-replicas}
+
+각 쿼리에 대해 사용되고 있는 설정을 [`system.query_log`](/docs/operations/system-tables/query_log) 테이블에서 확인할 수 있습니다. 서버에서 발생한 모든 이벤트를 보려면 [`system.events`](/docs/operations/system-tables/events) 테이블을 참조하고, 모든 복제본의 테이블을 보려면 [`clusterAllReplicas`](/docs/sql-reference/table-functions/cluster) 테이블 함수를 사용할 수 있습니다
+(클라우드 사용자라면 `default`를 사용하세요).
+
+```sql title="Query"
+SELECT
+ hostname(),
+ *
+FROM clusterAllReplicas('default', system.events)
+WHERE event ILIKE '%ParallelReplicas%'
+```
+
+응답
+```response title="Response"
+┌─hostname()───────────────────────┬─event──────────────────────────────────────────┬─value─┬─description──────────────────────────────────────────────────────────────────────────────────────────┐
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasHandleRequestMicroseconds │ 438 │ Time spent processing requests for marks from replicas │
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasHandleAnnouncementMicroseconds │ 558 │ Time spent processing replicas announcements │
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasReadUnassignedMarks │ 240 │ Sum across all replicas of how many unassigned marks were scheduled │
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasReadAssignedForStealingMarks │ 4 │ Sum across all replicas of how many of scheduled marks were assigned for stealing by consistent hash │
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasStealingByHashMicroseconds │ 5 │ Time spent collecting segments meant for stealing by hash │
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasProcessingPartsMicroseconds │ 5 │ Time spent processing data parts │
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasStealingLeftoversMicroseconds │ 3 │ Time spent collecting orphaned segments │
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasUsedCount │ 2 │ Number of replicas used to execute a query with task-based parallel replicas │
+│ c-crimson-vd-86-server-rdhnsx3-0 │ ParallelReplicasAvailableCount │ 6 │ Number of replicas available to execute a query with task-based parallel replicas │
+└──────────────────────────────────┴────────────────────────────────────────────────┴───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────┘
+┌─hostname()───────────────────────┬─event──────────────────────────────────────────┬─value─┬─description──────────────────────────────────────────────────────────────────────────────────────────┐
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasHandleRequestMicroseconds │ 698 │ Time spent processing requests for marks from replicas │
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasHandleAnnouncementMicroseconds │ 644 │ Time spent processing replicas announcements │
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasReadUnassignedMarks │ 190 │ Sum across all replicas of how many unassigned marks were scheduled │
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasReadAssignedForStealingMarks │ 54 │ Sum across all replicas of how many of scheduled marks were assigned for stealing by consistent hash │
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasStealingByHashMicroseconds │ 8 │ Time spent collecting segments meant for stealing by hash │
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasProcessingPartsMicroseconds │ 4 │ Time spent processing data parts │
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasStealingLeftoversMicroseconds │ 2 │ Time spent collecting orphaned segments │
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasUsedCount │ 2 │ Number of replicas used to execute a query with task-based parallel replicas │
+│ c-crimson-vd-86-server-e9kp5f0-0 │ ParallelReplicasAvailableCount │ 6 │ Number of replicas available to execute a query with task-based parallel replicas │
+└──────────────────────────────────┴────────────────────────────────────────────────┴───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────┘
+┌─hostname()───────────────────────┬─event──────────────────────────────────────────┬─value─┬─description──────────────────────────────────────────────────────────────────────────────────────────┐
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasHandleRequestMicroseconds │ 620 │ Time spent processing requests for marks from replicas │
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasHandleAnnouncementMicroseconds │ 656 │ Time spent processing replicas announcements │
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasReadUnassignedMarks │ 1 │ Sum across all replicas of how many unassigned marks were scheduled │
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasReadAssignedForStealingMarks │ 1 │ Sum across all replicas of how many of scheduled marks were assigned for stealing by consistent hash │
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasStealingByHashMicroseconds │ 4 │ Time spent collecting segments meant for stealing by hash │
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasProcessingPartsMicroseconds │ 3 │ Time spent processing data parts │
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasStealingLeftoversMicroseconds │ 1 │ Time spent collecting orphaned segments │
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasUsedCount │ 2 │ Number of replicas used to execute a query with task-based parallel replicas │
+│ c-crimson-vd-86-server-ybtm18n-0 │ ParallelReplicasAvailableCount │ 12 │ Number of replicas available to execute a query with task-based parallel replicas │
+└──────────────────────────────────┴────────────────────────────────────────────────┴───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────┘
+┌─hostname()───────────────────────┬─event──────────────────────────────────────────┬─value─┬─description──────────────────────────────────────────────────────────────────────────────────────────┐
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasHandleRequestMicroseconds │ 696 │ Time spent processing requests for marks from replicas │
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasHandleAnnouncementMicroseconds │ 717 │ Time spent processing replicas announcements │
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasReadUnassignedMarks │ 2 │ Sum across all replicas of how many unassigned marks were scheduled │
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasReadAssignedForStealingMarks │ 2 │ Sum across all replicas of how many of scheduled marks were assigned for stealing by consistent hash │
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasStealingByHashMicroseconds │ 10 │ Time spent collecting segments meant for stealing by hash │
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasProcessingPartsMicroseconds │ 6 │ Time spent processing data parts │
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasStealingLeftoversMicroseconds │ 2 │ Time spent collecting orphaned segments │
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasUsedCount │ 2 │ Number of replicas used to execute a query with task-based parallel replicas │
+│ c-crimson-vd-86-server-16j1ncj-0 │ ParallelReplicasAvailableCount │ 12 │ Number of replicas available to execute a query with task-based parallel replicas │
+└──────────────────────────────────┴────────────────────────────────────────────────┴───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────┘
+```
+
+
+[`system.text_log`](/docs/operations/system-tables/text_log) 테이블은 병렬 복제본을 사용하여 실행된 쿼리에 대한 정보를 포함하고 있습니다:
+
+```sql title="Query"
+SELECT message
+FROM clusterAllReplicas('default', system.text_log)
+WHERE query_id = 'ad40c712-d25d-45c4-b1a1-a28ba8d4019c'
+ORDER BY event_time_microseconds ASC
+```
+
+
+응답
+```response title="Response"
+┌─message────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+│ (from 54.218.178.249:59198) SELECT * FROM session_events WHERE type='type2' LIMIT 10 SETTINGS allow_experimental_parallel_reading_from_replicas=2; (stage: Complete) │
+│ Query SELECT __table1.clientId AS clientId, __table1.sessionId AS sessionId, __table1.pageId AS pageId, __table1.timestamp AS timestamp, __table1.type AS type FROM default.session_events AS __table1 WHERE __table1.type = 'type2' LIMIT _CAST(10, 'UInt64') SETTINGS allow_experimental_parallel_reading_from_replicas = 2 to stage Complete │
+│ Access granted: SELECT(clientId, sessionId, pageId, timestamp, type) ON default.session_events │
+│ Query SELECT __table1.clientId AS clientId, __table1.sessionId AS sessionId, __table1.pageId AS pageId, __table1.timestamp AS timestamp, __table1.type AS type FROM default.session_events AS __table1 WHERE __table1.type = 'type2' LIMIT _CAST(10, 'UInt64') to stage WithMergeableState only analyze │
+│ Access granted: SELECT(clientId, sessionId, pageId, timestamp, type) ON default.session_events │
+│ Query SELECT __table1.clientId AS clientId, __table1.sessionId AS sessionId, __table1.pageId AS pageId, __table1.timestamp AS timestamp, __table1.type AS type FROM default.session_events AS __table1 WHERE __table1.type = 'type2' LIMIT _CAST(10, 'UInt64') from stage FetchColumns to stage WithMergeableState only analyze │
+│ Query SELECT __table1.clientId AS clientId, __table1.sessionId AS sessionId, __table1.pageId AS pageId, __table1.timestamp AS timestamp, __table1.type AS type FROM default.session_events AS __table1 WHERE __table1.type = 'type2' LIMIT _CAST(10, 'UInt64') SETTINGS allow_experimental_parallel_reading_from_replicas = 2 to stage WithMergeableState only analyze │
+│ Access granted: SELECT(clientId, sessionId, pageId, timestamp, type) ON default.session_events │
+│ Query SELECT __table1.clientId AS clientId, __table1.sessionId AS sessionId, __table1.pageId AS pageId, __table1.timestamp AS timestamp, __table1.type AS type FROM default.session_events AS __table1 WHERE __table1.type = 'type2' LIMIT _CAST(10, 'UInt64') SETTINGS allow_experimental_parallel_reading_from_replicas = 2 from stage FetchColumns to stage WithMergeableState only analyze │
+│ Query SELECT __table1.clientId AS clientId, __table1.sessionId AS sessionId, __table1.pageId AS pageId, __table1.timestamp AS timestamp, __table1.type AS type FROM default.session_events AS __table1 WHERE __table1.type = 'type2' LIMIT _CAST(10, 'UInt64') SETTINGS allow_experimental_parallel_reading_from_replicas = 2 from stage WithMergeableState to stage Complete │
+│ The number of replicas requested (100) is bigger than the real number available in the cluster (6). Will use the latter number to execute the query. │
+│ Initial request from replica 4: 2 parts: [part all_0_2_1 with ranges [(0, 182)], part all_3_3_0 with ranges [(0, 62)]]----------
+Received from 4 replica
+ │
+│ Reading state is fully initialized: part all_0_2_1 with ranges [(0, 182)] in replicas [4]; part all_3_3_0 with ranges [(0, 62)] in replicas [4] │
+│ Sent initial requests: 1 Replicas count: 6 │
+│ Initial request from replica 2: 2 parts: [part all_0_2_1 with ranges [(0, 182)], part all_3_3_0 with ranges [(0, 62)]]----------
+Received from 2 replica
+ │
+│ Sent initial requests: 2 Replicas count: 6 │
+│ Handling request from replica 4, minimal marks size is 240 │
+│ Going to respond to replica 4 with 1 parts: [part all_0_2_1 with ranges [(128, 182)]]. Finish: false; mine_marks=0, stolen_by_hash=54, stolen_rest=0 │
+│ Initial request from replica 1: 2 parts: [part all_0_2_1 with ranges [(0, 182)], part all_3_3_0 with ranges [(0, 62)]]----------
+Received from 1 replica
+ │
+│ Sent initial requests: 3 Replicas count: 6 │
+│ Handling request from replica 4, minimal marks size is 240 │
+│ Going to respond to replica 4 with 2 parts: [part all_0_2_1 with ranges [(0, 128)], part all_3_3_0 with ranges [(0, 62)]]. Finish: false; mine_marks=0, stolen_by_hash=0, stolen_rest=190 │
+│ Initial request from replica 0: 2 parts: [part all_0_2_1 with ranges [(0, 182)], part all_3_3_0 with ranges [(0, 62)]]----------
+Received from 0 replica
+ │
+│ Sent initial requests: 4 Replicas count: 6 │
+│ Initial request from replica 5: 2 parts: [part all_0_2_1 with ranges [(0, 182)], part all_3_3_0 with ranges [(0, 62)]]----------
+Received from 5 replica
+ │
+│ Sent initial requests: 5 Replicas count: 6 │
+│ Handling request from replica 2, minimal marks size is 240 │
+│ Going to respond to replica 2 with 0 parts: []. Finish: true; mine_marks=0, stolen_by_hash=0, stolen_rest=0 │
+│ Initial request from replica 3: 2 parts: [part all_0_2_1 with ranges [(0, 182)], part all_3_3_0 with ranges [(0, 62)]]----------
+Received from 3 replica
+ │
+│ Sent initial requests: 6 Replicas count: 6 │
+│ Total rows to read: 2000000 │
+│ Handling request from replica 5, minimal marks size is 240 │
+│ Going to respond to replica 5 with 0 parts: []. Finish: true; mine_marks=0, stolen_by_hash=0, stolen_rest=0 │
+│ Handling request from replica 0, minimal marks size is 240 │
+│ Going to respond to replica 0 with 0 parts: []. Finish: true; mine_marks=0, stolen_by_hash=0, stolen_rest=0 │
+│ Handling request from replica 1, minimal marks size is 240 │
+│ Going to respond to replica 1 with 0 parts: []. Finish: true; mine_marks=0, stolen_by_hash=0, stolen_rest=0 │
+│ Handling request from replica 3, minimal marks size is 240 │
+│ Going to respond to replica 3 with 0 parts: []. Finish: true; mine_marks=0, stolen_by_hash=0, stolen_rest=0 │
+│ (c-crimson-vd-86-server-rdhnsx3-0.c-crimson-vd-86-server-headless.ns-crimson-vd-86.svc.cluster.local:9000) Cancelling query because enough data has been read │
+│ Read 81920 rows, 5.16 MiB in 0.013166 sec., 6222087.194288318 rows/sec., 391.63 MiB/sec. │
+│ Coordination done: Statistics: replica 0 - {requests: 2 marks: 0 assigned_to_me: 0 stolen_by_hash: 0 stolen_unassigned: 0}; replica 1 - {requests: 2 marks: 0 assigned_to_me: 0 stolen_by_hash: 0 stolen_unassigned: 0}; replica 2 - {requests: 2 marks: 0 assigned_to_me: 0 stolen_by_hash: 0 stolen_unassigned: 0}; replica 3 - {requests: 2 marks: 0 assigned_to_me: 0 stolen_by_hash: 0 stolen_unassigned: 0}; replica 4 - {requests: 3 marks: 244 assigned_to_me: 0 stolen_by_hash: 54 stolen_unassigned: 190}; replica 5 - {requests: 2 marks: 0 assigned_to_me: 0 stolen_by_hash: 0 stolen_unassigned: 0} │
+│ Peak memory usage (for query): 1.81 MiB. │
+│ Processed in 0.024095586 sec. │
+└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+```
+
+
+마지막으로 `EXPLAIN PIPELINE`을 사용할 수도 있습니다. 이는 ClickHouse가 쿼리를 실행하는 방법과 쿼리 실행에 사용될 자원을 강조합니다. 예를 들어 다음의 쿼리를 살펴보겠습니다:
+
+```sql
+SELECT count(), uniq(pageId) , min(timestamp), max(timestamp)
+FROM session_events
+WHERE type='type3'
+GROUP BY toYear(timestamp) LIMIT 10
+```
+
+병렬 복제본 없이 쿼리 파이프라인을 보겠습니다:
+
+```sql title="EXPLAIN PIPELINE (without parallel replica)"
+EXPLAIN PIPELINE graph = 1, compact = 0
+SELECT count(), uniq(pageId) , min(timestamp), max(timestamp)
+FROM session_events
+WHERE type='type3'
+GROUP BY toYear(timestamp)
+LIMIT 10
+SETTINGS allow_experimental_parallel_reading_from_replicas=0
+FORMAT TSV;
+```
+
+
+
+이제 병렬 복제본과 함께:
+
+```sql title="EXPLAIN PIPELINE (with parallel replica)"
+EXPLAIN PIPELINE graph = 1, compact = 0
+SELECT count(), uniq(pageId) , min(timestamp), max(timestamp)
+FROM session_events
+WHERE type='type3'
+GROUP BY toYear(timestamp)
+LIMIT 10
+SETTINGS allow_experimental_parallel_reading_from_replicas=2
+FORMAT TSV;
+```
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/parallel-replicas.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/parallel-replicas.mdx.hash
new file mode 100644
index 00000000000..d246a52e876
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/parallel-replicas.mdx.hash
@@ -0,0 +1 @@
+606fe16a52d7b34d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/01_1_shard_2_replicas.md b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/01_1_shard_2_replicas.md
new file mode 100644
index 00000000000..8bab99667a8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/01_1_shard_2_replicas.md
@@ -0,0 +1,782 @@
+---
+'slug': '/architecture/replication'
+'sidebar_label': '복제'
+'sidebar_position': 10
+'title': '데이터 복제'
+'description': '서버 다섯 개가 구성된 예제 아키텍처를 설명하는 페이지입니다. 두 개는 데이터의 복사본을 호스팅하는 데 사용되며 나머지는
+ 데이터 복제를 조정하는 데 사용됩니다.'
+'doc_type': 'guide'
+'keywords':
+- 'replication'
+- 'high availability'
+- 'cluster setup'
+- 'data redundancy'
+- 'fault tolerance'
+---
+
+import Image from '@theme/IdealImage';
+import ReplicationShardingTerminology from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_replication-sharding-terminology.md';
+import ReplicationArchitecture from '@site/static/images/deployment-guides/replication-sharding-examples/replication.png';
+import ConfigFileNote from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_config-files.md';
+import KeeperConfigFileNote from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_keeper-config-files.md';
+import ConfigExplanation from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx';
+import ListenHost from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx';
+import ServerParameterTable from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_server_parameter_table.mdx';
+import KeeperConfig from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx';
+import KeeperConfigExplanation from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx';
+import VerifyKeeperStatus from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx';
+import DedicatedKeeperServers from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx';
+import ExampleFiles from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx';
+import CloudTip from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx';
+
+> 이 예제에서는 데이터를 복제하는 간단한 ClickHouse 클러스터를 설정하는 방법을 배웁니다. 총 다섯 대의 서버가 구성되어 있습니다. 두 대의 서버는 데이터 복사본을 호스팅하는 데 사용되며, 나머지 세 대의 서버는 데이터 복제를 조율하는 데 사용됩니다.
+
+설정할 클러스터의 아키텍처는 아래와 같습니다:
+
+
+
+
+
+## 필수 조건 {#pre-requisites}
+
+- 이전에 [로컬 ClickHouse 서버](/install)를 설정한 적이 있다.
+- ClickHouse의 기본 구성 파일 개념, 예를 들어 [구성 파일](/operations/configuration-files)에 익숙하다.
+- 머신에 Docker가 설치되어 있다.
+
+
+
+## 디렉토리 구조 및 테스트 환경 설정 {#set-up}
+
+
+
+이 튜토리얼에서는 [Docker Compose](https://docs.docker.com/compose/)를 사용하여 ClickHouse 클러스터를 설정합니다. 이 설정은 별도의 로컬 머신, 가상 머신 또는 클라우드 인스턴스에서도 작동하도록 수정될 수 있습니다.
+
+다음 명령어를 실행하여 이 예제의 디렉토리 구조를 설정합니다:
+
+```bash
+mkdir cluster_1S_2R
+cd cluster_1S_2R
+
+
+# Create clickhouse-keeper directories
+for i in {01..03}; do
+ mkdir -p fs/volumes/clickhouse-keeper-${i}/etc/clickhouse-keeper
+done
+
+
+# Create clickhouse-server directories
+for i in {01..02}; do
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server
+done
+```
+
+다음 `docker-compose.yml` 파일을 `cluster_1S_2R` 디렉토리에 추가합니다:
+
+```yaml title="docker-compose.yml"
+version: '3.8'
+services:
+ clickhouse-01:
+ image: "clickhouse/clickhouse-server:latest"
+ user: "101:101"
+ container_name: clickhouse-01
+ hostname: clickhouse-01
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-01/etc/clickhouse-server/config.d/config.xml:/etc/clickhouse-server/config.d/config.xml
+ - ${PWD}/fs/volumes/clickhouse-01/etc/clickhouse-server/users.d/users.xml:/etc/clickhouse-server/users.d/users.xml
+ ports:
+ - "127.0.0.1:8123:8123"
+ - "127.0.0.1:9000:9000"
+ depends_on:
+ - clickhouse-keeper-01
+ - clickhouse-keeper-02
+ - clickhouse-keeper-03
+ clickhouse-02:
+ image: "clickhouse/clickhouse-server:latest"
+ user: "101:101"
+ container_name: clickhouse-02
+ hostname: clickhouse-02
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-02/etc/clickhouse-server/config.d/config.xml:/etc/clickhouse-server/config.d/config.xml
+ - ${PWD}/fs/volumes/clickhouse-02/etc/clickhouse-server/users.d/users.xml:/etc/clickhouse-server/users.d/users.xml
+ ports:
+ - "127.0.0.1:8124:8123"
+ - "127.0.0.1:9001:9000"
+ depends_on:
+ - clickhouse-keeper-01
+ - clickhouse-keeper-02
+ - clickhouse-keeper-03
+ clickhouse-keeper-01:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-01
+ hostname: clickhouse-keeper-01
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9181:9181"
+ clickhouse-keeper-02:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-02
+ hostname: clickhouse-keeper-02
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9182:9181"
+ clickhouse-keeper-03:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-03
+ hostname: clickhouse-keeper-03
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9183:9181"
+```
+
+다음 하위 디렉토리 및 파일을 생성합니다:
+
+```bash
+for i in {01..02}; do
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server/config.d
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server/users.d
+ touch fs/volumes/clickhouse-${i}/etc/clickhouse-server/config.d/config.xml
+ touch fs/volumes/clickhouse-${i}/etc/clickhouse-server/users.d/users.xml
+done
+```
+
+
+
+## ClickHouse 노드 구성 {#configure-clickhouse-servers}
+
+### 서버 설정 {#server-setup}
+
+이제 `fs/volumes/clickhouse-{}/etc/clickhouse-server/config.d`에 위치한 각 빈 구성 파일 `config.xml`을 수정합니다. 아래에 강조된 줄은 각 노드에 맞게 변경해야 합니다:
+
+```xml
+
+
+ debug
+ /var/log/clickhouse-server/clickhouse-server.log
+ /var/log/clickhouse-server/clickhouse-server.err.log
+ 1000M
+ 3
+
+
+ cluster_1S_2R node 1
+ 0.0.0.0
+ 8123
+ 9000
+
+
+ users.xml
+
+
+ /var/lib/clickhouse/access/
+
+
+
+ /clickhouse/task_queue/ddl
+
+
+
+
+ true
+
+ clickhouse-01
+ 9000
+
+
+ clickhouse-02
+ 9000
+
+
+
+
+
+
+ clickhouse-keeper-01
+ 9181
+
+
+ clickhouse-keeper-02
+ 9181
+
+
+ clickhouse-keeper-03
+ 9181
+
+
+
+
+ 01
+ 01
+ cluster_1S_2R
+
+
+
+```
+
+| 디렉토리 | 파일 |
+|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `fs/volumes/clickhouse-01/etc/clickhouse-server/config.d` | [`config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_1S_2R/fs/volumes/clickhouse-01/etc/clickhouse-server/config.d/config.xml) |
+| `fs/volumes/clickhouse-02/etc/clickhouse-server/config.d` | [`config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_1S_2R/fs/volumes/clickhouse-02/etc/clickhouse-server/config.d/config.xml) |
+
+위 구성 파일의 각 섹션은 아래에서 더 자세히 설명됩니다.
+
+#### 네트워킹 및 로깅 {#networking}
+
+
+
+로깅은 `` 블록에 정의됩니다. 이 예제 구성은 1000M에서 세 번 롤오버되는 디버그 로그를 제공합니다:
+
+```xml
+
+ debug
+ /var/log/clickhouse-server/clickhouse-server.log
+ /var/log/clickhouse-server/clickhouse-server.err.log
+ 1000M
+ 3
+
+```
+
+로깅 구성에 대한 자세한 내용은 기본 ClickHouse의 [구성 파일](https://github.com/ClickHouse/ClickHouse/blob/master/programs/server/config.xml)에 포함된 주석을 참조하세요.
+
+#### 클러스터 구성 {#cluster-configuration}
+
+클러스터에 대한 구성은 `` 블록에서 설정됩니다. 여기에서 클러스터 이름 `cluster_1S_2R`이 정의됩니다.
+
+`` 블록은 클러스터의 레이아웃을 정의하며, `` 및 `` 설정을 사용하고, `ON CLUSTER` 절을 사용하여 클러스터 전역에서 실행되는 분산 DDL 쿼리의 템플릿 역할을 합니다. 기본적으로 분산 DDL 쿼리는 허용되지만, `allow_distributed_ddl_queries` 설정으로 꺼둘 수도 있습니다.
+
+`internal_replication`이 true로 설정되어 있어 데이터가 단 하나의 복제본에만 기록됩니다.
+
+```xml
+
+
+
+
+
+
+ true
+
+ clickhouse-01
+ 9000
+
+
+ clickhouse-02
+ 9000
+
+
+
+
+```
+
+
+
+#### 키퍼 구성 {#keeper-config-explanation}
+
+`` 섹션은 ClickHouse가 ClickHouse Keeper (또는 ZooKeeper)가 실행되고 있는 위치를 알려줍니다. ClickHouse Keeper 클러스터를 사용하는 만큼, 클러스터의 각 ``는 호스트 이름과 포트 번호를 `` 및 `` 태그를 사용하여 각각 지정해야 합니다.
+
+ClickHouse Keeper의 설정은 튜토리얼의 다음 단계에서 설명됩니다.
+
+```xml
+
+
+ clickhouse-keeper-01
+ 9181
+
+
+ clickhouse-keeper-02
+ 9181
+
+
+ clickhouse-keeper-03
+ 9181
+
+
+```
+
+:::note
+ClickHouse Keeper를 ClickHouse Server와 동일한 서버에서 실행할 수 있지만,
+생산 환경에서는 ClickHouse Keeper를 전용 호스트에서 실행할 것을 강력히 권장합니다.
+:::
+
+#### 매크로 구성 {#macros-config-explanation}
+
+또한, `` 섹션은 복제 테이블을 위한 매개변수 치환을 정의하는 데 사용됩니다. 이들 매크로는 `system.macros`에 나열되며, 쿼리에서 `{shard}`와 `{replica}`와 같은 치환을 사용할 수 있게 해줍니다.
+
+```xml
+
+ 01
+ 01
+ cluster_1S_2R
+
+```
+
+:::note
+이들은 클러스터의 레이아웃에 따라 고유하게 정의됩니다.
+:::
+
+### 사용자 구성 {#user-config}
+
+이제 `fs/volumes/clickhouse-{}/etc/clickhouse-server/users.d`에 위치한 각 빈 구성 파일 `users.xml`을 다음 내용으로 수정합니다:
+
+```xml title="/users.d/users.xml"
+
+
+
+
+ 10000000000
+ 0
+ in_order
+ 1
+
+
+
+
+ 1
+ default
+
+ ::/0
+
+ default
+ 1
+ 1
+ 1
+ 1
+
+
+
+
+
+ 3600
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+```
+
+| 디렉토리 | 파일 |
+|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `fs/volumes/clickhouse-01/etc/clickhouse-server/users.d` | [`users.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_1S_2R/fs/volumes/clickhouse-01/etc/clickhouse-server/users.d/users.xml) |
+| `fs/volumes/clickhouse-02/etc/clickhouse-server/users.d` | [`users.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_1S_2R/fs/volumes/clickhouse-02/etc/clickhouse-server/users.d/users.xml) |
+
+이 예제에서는 기본 사용자에게 단순함을 위해 비밀번호 없이 구성합니다.
+실제로는 이는 권장되지 않습니다.
+
+:::note
+이 예제에서 각 `users.xml` 파일은 클러스터의 모든 노드에 대해 동일합니다.
+:::
+
+## ClickHouse Keeper 구성 {#configure-clickhouse-keeper-nodes}
+
+### 키퍼 설정 {#configuration-explanation}
+
+
+
+| 디렉토리 | 파일 |
+|---------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_1S_2R/fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper/keeper_config.xml) |
+| `fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_1S_2R/fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper/keeper_config.xml) |
+| `fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_1S_2R/fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper/keeper_config.xml) |
+
+
+
+
+
+## 설정 테스트 {#test-the-setup}
+
+먼저 Docker가 머신에서 실행되고 있는지 확인합니다.
+`cluster_1S_2R` 디렉토리의 루트에서 `docker-compose up` 명령어를 사용하여 클러스터를 시작합니다:
+
+```bash
+docker-compose up -d
+```
+
+ClickHouse 및 Keeper 이미지를 가져오고 컨테이너를 시작하는 것을 확인할 수 있습니다:
+
+```bash
+[+] Running 6/6
+ ✔ Network cluster_1s_2r_default Created
+ ✔ Container clickhouse-keeper-03 Started
+ ✔ Container clickhouse-keeper-02 Started
+ ✔ Container clickhouse-keeper-01 Started
+ ✔ Container clickhouse-01 Started
+ ✔ Container clickhouse-02 Started
+```
+
+클러스터가 실행되고 있는지 확인하려면 `clickhouse-01` 또는 `clickhouse-02`에 연결하고 다음 쿼리를 실행합니다. 첫 번째 노드에 연결하는 명령은 다음과 같습니다:
+
+```bash
+
+# Connect to any node
+docker exec -it clickhouse-01 clickhouse-client
+```
+
+성공하면 ClickHouse 클라이언트 프롬프트가 표시됩니다:
+
+```response
+cluster_1S_2R node 1 :)
+```
+
+다음 쿼리를 실행하여 어떤 호스트에 대해 어떤 클러스터 토폴로지가 정의되어 있는지 확인합니다:
+
+```sql title="Query"
+SELECT
+ cluster,
+ shard_num,
+ replica_num,
+ host_name,
+ port
+FROM system.clusters;
+```
+
+```response title="Response"
+ ┌─cluster───────┬─shard_num─┬─replica_num─┬─host_name─────┬─port─┐
+1. │ cluster_1S_2R │ 1 │ 1 │ clickhouse-01 │ 9000 │
+2. │ cluster_1S_2R │ 1 │ 2 │ clickhouse-02 │ 9000 │
+3. │ default │ 1 │ 1 │ localhost │ 9000 │
+ └───────────────┴───────────┴─────────────┴───────────────┴──────┘
+```
+
+다음 쿼리를 실행하여 ClickHouse Keeper 클러스터의 상태를 확인합니다:
+
+```sql title="Query"
+SELECT *
+FROM system.zookeeper
+WHERE path IN ('/', '/clickhouse')
+```
+
+```response title="Response"
+ ┌─name───────┬─value─┬─path────────┐
+1. │ sessions │ │ /clickhouse │
+2. │ task_queue │ │ /clickhouse │
+3. │ keeper │ │ / │
+4. │ clickhouse │ │ / │
+ └────────────┴───────┴─────────────┘
+```
+
+
+
+이를 통해 단일 샤드 및 두 개의 복제본을 가진 ClickHouse 클러스터를 성공적으로 설정했습니다.
+다음 단계에서는 클러스터에서 테이블을 생성합니다.
+
+## 데이터베이스 생성 {#creating-a-database}
+
+클러스터가 제대로 설정되어 실행되고 있음을 확인한 후,
+[UK property prices](/getting-started/example-datasets/uk-price-paid) 예제 데이터셋 튜토리얼에서 사용된 것과 동일한 테이블을 재구성합니다. 이 데이터셋은 1995년 이후 영국 및 웨일즈의 부동산 가격에 대한 약 3천만 개의 행으로 구성되어 있습니다.
+
+각 호스트의 클라이언트에 연결하려면 다음 명령어를 별도의 터미널 탭 또는 창에서 실행합니다:
+
+```bash
+docker exec -it clickhouse-01 clickhouse-client
+docker exec -it clickhouse-02 clickhouse-client
+```
+
+아래 쿼리를 각 호스트의 ClickHouse 클라이언트에서 실행하여 기본 데이터베이스 외에 생성된 데이터베이스가 없음을 확인합니다:
+
+```sql title="Query"
+SHOW DATABASES;
+```
+
+```response title="Response"
+ ┌─name───────────────┐
+1. │ INFORMATION_SCHEMA │
+2. │ default │
+3. │ information_schema │
+4. │ system │
+ └────────────────────┘
+```
+
+`clickhouse-01` 클라이언트에서 `ON CLUSTER` 절을 사용하여 `uk`라는 새 데이터베이스를 만드는 **분산** DDL 쿼리를 실행합니다:
+
+```sql
+CREATE DATABASE IF NOT EXISTS uk
+-- highlight-next-line
+ON CLUSTER cluster_1S_2R;
+```
+
+이전에 모든 호스트의 클라이언트에서 동일한 쿼리를 다시 실행하여 `clickhouse-01`에서만 쿼리를 실행했음에도 불구하고 클러스터 전체에 데이터베이스가 생성되었음을 확인할 수 있습니다:
+
+```sql
+SHOW DATABASES;
+```
+
+```response
+ ┌─name───────────────┐
+1. │ INFORMATION_SCHEMA │
+2. │ default │
+3. │ information_schema │
+4. │ system │
+#highlight-next-line
+5. │ uk │
+ └────────────────────┘
+```
+
+## 클러스터에서 테이블 생성 {#creating-a-table}
+
+데이터베이스가 생성되었으므로 클러스터에서 테이블을 만듭니다.
+다음 쿼리를 모든 호스트 클라이언트에서 실행합니다:
+
+```sql
+CREATE TABLE IF NOT EXISTS uk.uk_price_paid_local
+--highlight-next-line
+ON CLUSTER cluster_1S_2R
+(
+ price UInt32,
+ date Date,
+ postcode1 LowCardinality(String),
+ postcode2 LowCardinality(String),
+ type Enum8('terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4, 'other' = 0),
+ is_new UInt8,
+ duration Enum8('freehold' = 1, 'leasehold' = 2, 'unknown' = 0),
+ addr1 String,
+ addr2 String,
+ street LowCardinality(String),
+ locality LowCardinality(String),
+ town LowCardinality(String),
+ district LowCardinality(String),
+ county LowCardinality(String)
+)
+--highlight-next-line
+ENGINE = ReplicatedMergeTree
+ORDER BY (postcode1, postcode2, addr1, addr2);
+```
+
+이 쿼리는 원래 `CREATE` 문에서 사용된 쿼리와 동일하며,
+[UK property prices](/getting-started/example-datasets/uk-price-paid) 예제 데이터셋 튜토리얼에서 `ON CLUSTER` 절과 `ReplicatedMergeTree` 엔진 사용을 제외한 것입니다.
+
+`ON CLUSTER` 절은 `CREATE`, `DROP`, `ALTER`, `RENAME`과 같은 DDL (데이터 정의 언어) 쿼리의 분산 실행을 위해 설계되었으며, 이러한 스키마 변경이 클러스터의 모든 노드에 적용되도록 보장합니다.
+
+[`ReplicatedMergeTree`](https://clickhouse.com/docs/engines/table-engines/mergetree-family/replication#converting-from-mergetree-to-replicatedmergetree) 엔진은 일반적인 `MergeTree` 테이블 엔진과 동일하게 작동하지만, 데이터를 복제합니다.
+
+클러스터 전체에 테이블이 생성되었는지 확인하기 위해 `clickhouse-01` 또는 `clickhouse-02` 클라이언트에서 다음 쿼리를 실행할 수 있습니다:
+
+```sql title="Query"
+SHOW TABLES IN uk;
+```
+
+```response title="Response"
+ ┌─name────────────────┐
+1. │ uk_price_paid. │
+ └─────────────────────┘
+```
+
+## 데이터 삽입 {#inserting-data}
+
+데이터셋이 크고 완전히 수집하는 데 몇 분이 걸리므로,
+우리는 처음에 작은 하위 집합만 삽입할 것입니다.
+
+`clickhouse-01`에서 아래 쿼리를 사용하여 더 작은 데이터 하위 집합을 삽입합니다:
+
+```sql
+INSERT INTO uk.uk_price_paid_local
+SELECT
+ toUInt32(price_string) AS price,
+ parseDateTimeBestEffortUS(time) AS date,
+ splitByChar(' ', postcode)[1] AS postcode1,
+ splitByChar(' ', postcode)[2] AS postcode2,
+ transform(a, ['T', 'S', 'D', 'F', 'O'], ['terraced', 'semi-detached', 'detached', 'flat', 'other']) AS type,
+ b = 'Y' AS is_new,
+ transform(c, ['F', 'L', 'U'], ['freehold', 'leasehold', 'unknown']) AS duration,
+ addr1,
+ addr2,
+ street,
+ locality,
+ town,
+ district,
+ county
+FROM url(
+ 'http://prod1.publicdata.landregistry.gov.uk.s3-website-eu-west-1.amazonaws.com/pp-complete.csv',
+ 'CSV',
+ 'uuid_string String,
+ price_string String,
+ time String,
+ postcode String,
+ a String,
+ b String,
+ c String,
+ addr1 String,
+ addr2 String,
+ street String,
+ locality String,
+ town String,
+ district String,
+ county String,
+ d String,
+ e String'
+) LIMIT 10000
+SETTINGS max_http_get_redirects=10;
+```
+
+각 호스트에서 데이터가 완전히 복제되는 것을 알 수 있습니다:
+
+```sql
+-- clickhouse-01
+SELECT count(*)
+FROM uk.uk_price_paid_local
+
+-- ┌─count()─┐
+-- 1.│ 10000 │
+-- └─────────┘
+
+-- clickhouse-02
+SELECT count(*)
+FROM uk.uk_price_paid_local
+
+-- ┌─count()─┐
+-- 1.│ 10000 │
+-- └─────────┘
+```
+
+호스트 중 하나가 다운됐을 때의 상황을 시연하기 위해 간단한 테스트 데이터베이스와 테스트 테이블을 생성합니다:
+
+```sql
+CREATE DATABASE IF NOT EXISTS test ON CLUSTER cluster_1S_2R;
+CREATE TABLE test.test_table ON CLUSTER cluster_1S_2R
+(
+ `id` UInt64,
+ `name` String
+)
+ENGINE = ReplicatedMergeTree
+ORDER BY id;
+```
+
+`uk_price_paid` 테이블과 마찬가지로, 우리는 두 호스트 모두에서 데이터를 삽입할 수 있습니다:
+
+```sql
+INSERT INTO test.test_table (id, name) VALUES (1, 'Clicky McClickface');
+```
+
+하지만 호스트 중 하나가 다운되면 어떻게 될까요? 이를 시뮬레이션하기 위해
+`clickhouse-01`을 중지합니다:
+
+```bash
+docker stop clickhouse-01
+```
+
+다음 명령어를 실행하여 호스트가 다운되었는지 확인합니다:
+
+```bash
+docker-compose ps
+```
+
+```response title="Response"
+NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
+clickhouse-02 clickhouse/clickhouse-server:latest "/entrypoint.sh" clickhouse-02 X minutes ago Up X minutes 127.0.0.1:8124->8123/tcp, 127.0.0.1:9001->9000/tcp
+clickhouse-keeper-01 clickhouse/clickhouse-keeper:latest-alpine "/entrypoint.sh" clickhouse-keeper-01 X minutes ago Up X minutes 127.0.0.1:9181->9181/tcp
+clickhouse-keeper-02 clickhouse/clickhouse-keeper:latest-alpine "/entrypoint.sh" clickhouse-keeper-02 X minutes ago Up X minutes 127.0.0.1:9182->9181/tcp
+clickhouse-keeper-03 clickhouse/clickhouse-keeper:latest-alpine "/entrypoint.sh" clickhouse-keeper-03 X minutes ago Up X minutes 127.0.0.1:9183->9181/tcp
+```
+
+이제 `clickhouse-01`이 다운된 상태에서 테스트 테이블에 또 다른 행의 데이터를 삽입하고 해당 테이블을 쿼리합니다:
+
+```sql
+INSERT INTO test.test_table (id, name) VALUES (2, 'Alexey Milovidov');
+SELECT * FROM test.test_table;
+```
+
+```response title="Response"
+ ┌─id─┬─name───────────────┐
+1. │ 1 │ Clicky McClickface │
+2. │ 2 │ Alexey Milovidov │
+ └────┴────────────────────┘
+```
+
+다음 명령어로 `clickhouse-01`을 다시 시작합니다(확인을 위해 `docker-compose ps`를 다시 실행할 수 있습니다):
+
+```sql
+docker start clickhouse-01
+```
+
+`docker exec -it clickhouse-01 clickhouse-client` 명령어를 실행한 후 다시 `clickhouse-01`에서 테스트 테이블을 쿼리합니다:
+
+```sql title="Query"
+SELECT * FROM test.test_table
+```
+
+```response title="Response"
+ ┌─id─┬─name───────────────┐
+1. │ 1 │ Clicky McClickface │
+2. │ 2 │ Alexey Milovidov │
+ └────┴────────────────────┘
+```
+
+이 시점에서 전체 UK 부동산 가격 데이터셋을 수집하고 싶다면,
+다음 쿼리를 실행하여 그렇게 할 수 있습니다:
+
+```sql
+TRUNCATE TABLE uk.uk_price_paid_local ON CLUSTER cluster_1S_2R;
+INSERT INTO uk.uk_price_paid_local
+SELECT
+ toUInt32(price_string) AS price,
+ parseDateTimeBestEffortUS(time) AS date,
+ splitByChar(' ', postcode)[1] AS postcode1,
+ splitByChar(' ', postcode)[2] AS postcode2,
+ transform(a, ['T', 'S', 'D', 'F', 'O'], ['terraced', 'semi-detached', 'detached', 'flat', 'other']) AS type,
+ b = 'Y' AS is_new,
+ transform(c, ['F', 'L', 'U'], ['freehold', 'leasehold', 'unknown']) AS duration,
+ addr1,
+ addr2,
+ street,
+ locality,
+ town,
+ district,
+ county
+FROM url(
+ 'http://prod1.publicdata.landregistry.gov.uk.s3-website-eu-west-1.amazonaws.com/pp-complete.csv',
+ 'CSV',
+ 'uuid_string String,
+ price_string String,
+ time String,
+ postcode String,
+ a String,
+ b String,
+ c String,
+ addr1 String,
+ addr2 String,
+ street String,
+ locality String,
+ town String,
+ district String,
+ county String,
+ d String,
+ e String'
+ ) SETTINGS max_http_get_redirects=10;
+```
+
+`clickhouse-02` 또는 `clickhouse-01`에서 테이블을 쿼리합니다:
+
+```sql title="Query"
+SELECT count(*) FROM uk.uk_price_paid_local;
+```
+
+```response title="Response"
+ ┌──count()─┐
+1. │ 30212555 │ -- 30.21 million
+ └──────────┘
+```
+
+
+
+## 결론 {#conclusion}
+
+이 클러스터 토폴로지의 장점은 두 개의 복제본이
+두 개의 별도 호스트에 데이터가 존재한다는 것입니다. 하나의 호스트가 실패하면 다른 복제본이 데이터 제공을 계속하여 손실이 없습니다. 이는 저장소 수준에서 단일 실패 지점을 제거합니다.
+
+하나의 호스트가 다운되면 남은 복제본은 다음을 수행할 수 있습니다:
+- 중단 없이 읽기 쿼리 처리
+- 새로운 쓰기 수락 (일관성 설정에 따라 다름)
+- 애플리케이션을 위한 서비스 가용성 유지
+
+장애가 발생한 호스트가 다시 온라인에 복구되면 다음을 실행할 수 있습니다:
+- 건강한 복제본에서 누락된 데이터 자동 동기화
+- 수동 개입 없이 정상 운영 재개
+- 빠른 복원 전체 중복성
+
+다음 예제에서는 두 개의 샤드를 갖지만 단 하나의 복제본으로 클러스터를 설정하는 방법을 살펴보겠습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/01_1_shard_2_replicas.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/01_1_shard_2_replicas.md.hash
new file mode 100644
index 00000000000..fcfc33d0c33
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/01_1_shard_2_replicas.md.hash
@@ -0,0 +1 @@
+877c6d3f13388ce7
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/02_2_shards_1_replica.md b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/02_2_shards_1_replica.md
new file mode 100644
index 00000000000..35fdf026b01
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/02_2_shards_1_replica.md
@@ -0,0 +1,786 @@
+---
+'slug': '/architecture/horizontal-scaling'
+'sidebar_label': '확장성'
+'sidebar_position': 10
+'title': '확장성'
+'description': '확장성을 제공하기 위해 설계된 예시 아키텍처를 설명하는 페이지'
+'doc_type': 'guide'
+'keywords':
+- 'sharding'
+- 'horizontal scaling'
+- 'distributed data'
+- 'cluster setup'
+- 'data distribution'
+---
+
+import Image from '@theme/IdealImage';
+import ReplicationShardingTerminology from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_replication-sharding-terminology.md';
+import ShardingArchitecture from '@site/static/images/deployment-guides/replication-sharding-examples/sharding.png';
+import ConfigFileNote from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_config-files.md';
+import KeeperConfigFileNote from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_keeper-config-files.md';
+import ConfigExplanation from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx';
+import ListenHost from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx';
+import ServerParameterTable from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_server_parameter_table.mdx';
+import KeeperConfig from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx';
+import KeeperConfigExplanation from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx';
+import VerifyKeeperStatus from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx';
+import DedicatedKeeperServers from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx';
+import ExampleFiles from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx';
+import CloudTip from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx';
+
+> 이 예제에서는 확장 가능한 간단한 ClickHouse 클러스터를 설정하는 방법을 배웁니다. 구성된 서버는 총 다섯 대입니다. 두 대는 데이터를 샤딩하는 데 사용됩니다. 나머지 세 대는 조정용으로 사용됩니다.
+>
+> 설정할 클러스터의 아키텍처는 아래에 나와 있습니다:
+>
+>
+>
+>
+
+## 사전 요구 사항 {#pre-requisites}
+
+- 이전에 [로컬 ClickHouse 서버](/install)를 설정한 적이 있습니다.
+- [구성 파일](/operations/configuration-files)과 같은 ClickHouse의 기본 구성 개념에 익숙합니다.
+- 머신에 docker가 설치되어 있습니다.
+
+
+
+## 디렉토리 구조 및 테스트 환경 설정 {#set-up}
+
+
+
+이 튜토리얼에서는 [Docker compose](https://docs.docker.com/compose/)를 사용하여 ClickHouse 클러스터를 설정합니다. 이 설정은 별도의 로컬 머신, 가상 머신 또는 클라우드 인스턴스에서 작동하도록 수정할 수 있습니다.
+
+다음 명령을 실행하여 이 예제에 대한 디렉토리 구조를 설정합니다:
+
+```bash
+mkdir cluster_2S_1R
+cd cluster_2S_1R
+
+
+# Create clickhouse-keeper directories
+for i in {01..03}; do
+ mkdir -p fs/volumes/clickhouse-keeper-${i}/etc/clickhouse-keeper
+done
+
+
+# Create clickhouse-server directories
+for i in {01..02}; do
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server
+done
+```
+
+다음 `docker-compose.yml` 파일을 `clickhouse-cluster` 디렉토리에 추가합니다:
+
+```yaml title="docker-compose.yml"
+version: '3.8'
+services:
+ clickhouse-01:
+ image: "clickhouse/clickhouse-server:latest"
+ user: "101:101"
+ container_name: clickhouse-01
+ hostname: clickhouse-01
+ networks:
+ cluster_2S_1R:
+ ipv4_address: 192.168.7.1
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-01/etc/clickhouse-server/config.d/config.xml:/etc/clickhouse-server/config.d/config.xml
+ - ${PWD}/fs/volumes/clickhouse-01/etc/clickhouse-server/users.d/users.xml:/etc/clickhouse-server/users.d/users.xml
+ ports:
+ - "127.0.0.1:8123:8123"
+ - "127.0.0.1:9000:9000"
+ depends_on:
+ - clickhouse-keeper-01
+ - clickhouse-keeper-02
+ - clickhouse-keeper-03
+ clickhouse-02:
+ image: "clickhouse/clickhouse-server:latest"
+ user: "101:101"
+ container_name: clickhouse-02
+ hostname: clickhouse-02
+ networks:
+ cluster_2S_1R:
+ ipv4_address: 192.168.7.2
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-02/etc/clickhouse-server/config.d/config.xml:/etc/clickhouse-server/config.d/config.xml
+ - ${PWD}/fs/volumes/clickhouse-02/etc/clickhouse-server/users.d/users.xml:/etc/clickhouse-server/users.d/users.xml
+ ports:
+ - "127.0.0.1:8124:8123"
+ - "127.0.0.1:9001:9000"
+ depends_on:
+ - clickhouse-keeper-01
+ - clickhouse-keeper-02
+ - clickhouse-keeper-03
+ clickhouse-keeper-01:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-01
+ hostname: clickhouse-keeper-01
+ networks:
+ cluster_2S_1R:
+ ipv4_address: 192.168.7.5
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9181:9181"
+ clickhouse-keeper-02:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-02
+ hostname: clickhouse-keeper-02
+ networks:
+ cluster_2S_1R:
+ ipv4_address: 192.168.7.6
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9182:9181"
+ clickhouse-keeper-03:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-03
+ hostname: clickhouse-keeper-03
+ networks:
+ cluster_2S_1R:
+ ipv4_address: 192.168.7.7
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9183:9181"
+networks:
+ cluster_2S_1R:
+ driver: bridge
+ ipam:
+ config:
+ - subnet: 192.168.7.0/24
+ gateway: 192.168.7.254
+```
+
+다음과 같은 하위 디렉토리 및 파일을 생성합니다:
+
+```bash
+for i in {01..02}; do
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server/config.d
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server/users.d
+ touch fs/volumes/clickhouse-${i}/etc/clickhouse-server/config.d/config.xml
+ touch fs/volumes/clickhouse-${i}/etc/clickhouse-server/users.d/users.xml
+done
+```
+
+
+
+## ClickHouse 노드 구성 {#configure-clickhouse-servers}
+
+### 서버 설정 {#server-setup}
+
+이제 `fs/volumes/clickhouse-{}/etc/clickhouse-server/config.d`에 위치한 각 빈 구성 파일 `config.xml`을 수정합니다. 아래에서 강조 표시된 줄은 각 노드에 맞게 변경해야 합니다:
+
+```xml
+
+
+ debug
+ /var/log/clickhouse-server/clickhouse-server.log
+ /var/log/clickhouse-server/clickhouse-server.err.log
+ 1000M
+ 3
+
+
+ cluster_2S_1R node 1
+ 0.0.0.0
+ 8123
+ 9000
+
+
+ users.xml
+
+
+ /var/lib/clickhouse/access/
+
+
+
+ /clickhouse/task_queue/ddl
+
+
+
+
+
+ clickhouse-01
+ 9000
+
+
+
+
+ clickhouse-02
+ 9000
+
+
+
+
+
+
+ clickhouse-keeper-01
+ 9181
+
+
+ clickhouse-keeper-02
+ 9181
+
+
+ clickhouse-keeper-03
+ 9181
+
+
+
+
+ 01
+ 01
+
+
+
+```
+
+| 디렉토리 | 파일 |
+|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `fs/volumes/clickhouse-01/etc/clickhouse-server/config.d` | [`config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_1R/fs/volumes/clickhouse-01/etc/clickhouse-server/config.d/config.xml) |
+| `fs/volumes/clickhouse-02/etc/clickhouse-server/config.d` | [`config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_1R/fs/volumes/clickhouse-02/etc/clickhouse-server/config.d/config.xml) |
+
+위 구성 파일의 각 섹션은 다음에서 더 자세히 설명됩니다.
+
+#### 네트워킹 및 로깅 {#networking}
+
+
+
+로깅은 `` 블록에 정의됩니다. 이 예제 구성은 1000M에서 세 번 롤오버되는 디버그 로그를 제공합니다:
+
+```xml
+
+ debug
+ /var/log/clickhouse-server/clickhouse-server.log
+ /var/log/clickhouse-server/clickhouse-server.err.log
+ 1000M
+ 3
+
+```
+
+로깅 구성에 대한 자세한 내용은 기본 ClickHouse [구성 파일](https://github.com/ClickHouse/ClickHouse/blob/master/programs/server/config.xml)에 포함된 주석을 참조하십시오.
+
+#### 클러스터 구성 {#cluster-configuration}
+
+클러스터에 대한 구성은 `` 블록에서 설정됩니다. 여기에서 클러스터 이름 `cluster_2S_1R`가 정의됩니다.
+
+`` 블록은 클러스터의 레이아웃을 정의하며,
+`` 및 `` 설정을 사용하고, `ON CLUSTER` 절을 사용하여 클러스터 전역에서 실행되는 DDL 쿼리를 위한 템플릿 역할을 합니다. 기본적으로 분산 DDL 쿼리는 허용되지만 `allow_distributed_ddl_queries` 설정을 통해 끌 수 있습니다.
+
+`internal_replication`은 샤드당 하나의 복제본만 있으므로 기본값으로 false로 설정되어 있습니다.
+
+```xml
+
+
+
+
+ clickhouse-01
+ 9000
+
+
+
+
+ clickhouse-02
+ 9000
+
+
+
+
+```
+
+
+
+#### 키퍼 구성 {#keeper-config-explanation}
+
+`` 섹션은 ClickHouse에게 ClickHouse Keeper (또는 ZooKeeper)가 실행 중인 위치를 알려줍니다. ClickHouse Keeper 클러스터를 사용하고 있으므로 클러스터의 각 ``는 각각의 호스트 이름과 포트 번호를 `` 및 `` 태그를 사용하여 명시해야 합니다.
+
+ClickHouse Keeper의 설정은 튜토리얼의 다음 단계에서 설명됩니다.
+
+```xml
+
+
+ clickhouse-keeper-01
+ 9181
+
+
+ clickhouse-keeper-02
+ 9181
+
+
+ clickhouse-keeper-03
+ 9181
+
+
+```
+
+:::note
+ClickHouse Keeper를 ClickHouse 서버와 같은 서버에서 실행하는 것이 가능하지만, 프로덕션 환경에서는 ClickHouse Keeper를 전용 호스트에서 실행할 것을 강력히 권장합니다.
+:::
+
+#### 매크로 구성 {#macros-config-explanation}
+
+추가로, `` 섹션은 복제된 테이블에 대해 파라미터 치환을 정의하는 데 사용됩니다. 이는 `system.macros`에 나열되며 쿼리에서 `{shard}` 및 `{replica}`와 같은 치환을 사용할 수 있습니다.
+
+```xml
+
+ 01
+ 01
+
+```
+
+:::note
+이들은 클러스터의 레이아웃에 따라 고유하게 정의됩니다.
+:::
+
+### 사용자 구성 {#user-config}
+
+이제 `fs/volumes/clickhouse-{}/etc/clickhouse-server/users.d`에 위치한 각 빈 구성 파일 `users.xml`을 다음으로 수정합니다:
+
+```xml title="/users.d/users.xml"
+
+
+
+
+ 10000000000
+ 0
+ in_order
+ 1
+
+
+
+
+ 1
+ default
+
+ ::/0
+
+ default
+ 1
+ 1
+ 1
+ 1
+
+
+
+
+
+ 3600
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+```
+
+| 디렉토리 | 파일 |
+|-----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `fs/volumes/clickhouse-01/etc/clickhouse-server/users.d` | [`users.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_1R/fs/volumes/clickhouse-01/etc/clickhouse-server/users.d/users.xml) |
+| `fs/volumes/clickhouse-02/etc/clickhouse-server/users.d` | [`users.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_1R/fs/volumes/clickhouse-02/etc/clickhouse-server/users.d/users.xml) |
+
+이 예제에서는 기본 사용자가 단순함을 위해 비밀번호 없이 구성되었습니다. 실제로는 권장되지 않습니다.
+
+:::note
+이 예제에서는 각 `users.xml` 파일이 클러스터의 모든 노드에서 동일합니다.
+:::
+
+## ClickHouse Keeper 구성 {#configure-clickhouse-keeper-nodes}
+
+### 키퍼 설정 {#configuration-explanation}
+
+
+
+| 디렉토리 | 파일 |
+|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_1R/fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper/keeper_config.xml) |
+| `fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_1R/fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper/keeper_config.xml) |
+| `fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_1R/fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper/keeper_config.xml) |
+
+
+
+
+
+## 설정 테스트 {#test-the-setup}
+
+머신에서 docker가 실행되고 있는지 확인합니다.
+`cluster_2S_1R` 디렉토리의 루트에서 `docker-compose up` 명령을 사용하여 클러스터를 시작합니다:
+
+```bash
+docker-compose up -d
+```
+
+ClickHouse와 Keeper 이미지를 가져오고 컨테이너를 시작하는 모습을 볼 수 있어야 합니다:
+
+```bash
+[+] Running 6/6
+ ✔ Network cluster_2s_1r_default Created
+ ✔ Container clickhouse-keeper-03 Started
+ ✔ Container clickhouse-keeper-02 Started
+ ✔ Container clickhouse-keeper-01 Started
+ ✔ Container clickhouse-01 Started
+ ✔ Container clickhouse-02 Started
+```
+
+클러스터가 실행 중인지 확인하려면 `clickhouse-01` 또는 `clickhouse-02`에 연결하여 다음 쿼리를 실행합니다. 최초 노드에 연결하는 명령이 표시됩니다:
+
+```bash
+
+# Connect to any node
+docker exec -it clickhouse-01 clickhouse-client
+```
+
+성공하면 ClickHouse 클라이언트 프롬프트를 볼 수 있습니다:
+
+```response
+cluster_2S_1R node 1 :)
+```
+
+다음 쿼리를 실행하여 어떤 호스트에 대한 클러스터 토폴로지가 정의되어 있는지 확인합니다:
+
+```sql title="Query"
+SELECT
+ cluster,
+ shard_num,
+ replica_num,
+ host_name,
+ port
+FROM system.clusters;
+```
+
+```response title="Response"
+ ┌─cluster───────┬─shard_num─┬─replica_num─┬─host_name─────┬─port─┐
+1. │ cluster_2S_1R │ 1 │ 1 │ clickhouse-01 │ 9000 │
+2. │ cluster_2S_1R │ 2 │ 1 │ clickhouse-02 │ 9000 │
+3. │ default │ 1 │ 1 │ localhost │ 9000 │
+ └───────────────┴───────────┴─────────────┴───────────────┴──────┘
+```
+
+다음 쿼리를 실행하여 ClickHouse Keeper 클러스터의 상태를 확인합니다:
+
+```sql title="Query"
+SELECT *
+FROM system.zookeeper
+WHERE path IN ('/', '/clickhouse')
+```
+
+```response title="Response"
+ ┌─name───────┬─value─┬─path────────┐
+1. │ task_queue │ │ /clickhouse │
+2. │ sessions │ │ /clickhouse │
+3. │ clickhouse │ │ / │
+4. │ keeper │ │ / │
+ └────────────┴───────┴─────────────┘
+```
+
+
+
+이로써 단일 샤드와 두 개의 복제본을 가진 ClickHouse 클러스터를 성공적으로 설정했습니다.
+다음 단계에서는 클러스터에 테이블을 생성합니다.
+
+## 데이터베이스 생성 {#creating-a-database}
+
+클러스터가 올바르게 설정되고 실행 중임을 확인한 후, [영국 부동산 가격](/getting-started/example-datasets/uk-price-paid) 예제 데이터 세트 튜토리얼에서 사용된 것과 동일한 테이블을 다시 생성합니다. 이는 1995년 이후 영국과 웨일스의 부동산에 대해 지불된 가격의 약 3000만 행으로 구성됩니다.
+
+각 호스트의 클라이언트에 연결하려면 아래 명령을 별도의 터미널 탭이나 창에서 실행합니다:
+
+```bash
+docker exec -it clickhouse-01 clickhouse-client
+docker exec -it clickhouse-02 clickhouse-client
+```
+
+다음 쿼리를 각 호스트의 clickhouse-client에서 실행하여 아직 생성된 데이터베이스가 없는지 확인할 수 있습니다. 기본 데이터베이스를 제외하고:
+
+```sql title="Query"
+SHOW DATABASES;
+```
+
+```response title="Response"
+ ┌─name───────────────┐
+1. │ INFORMATION_SCHEMA │
+2. │ default │
+3. │ information_schema │
+4. │ system │
+ └────────────────────┘
+```
+
+`clickhouse-01` 클라이언트에서 다음 **분산** DDL 쿼리를 실행하여 `uk`라는 새 데이터베이스를 생성합니다. `ON CLUSTER` 절을 사용합니다:
+
+```sql
+CREATE DATABASE IF NOT EXISTS uk
+-- highlight-next-line
+ON CLUSTER cluster_2S_1R;
+```
+
+다시 한 번 각 호스트의 클라이언트에서 동일한 쿼리를 실행하여 쿼리를 `clickhouse-01`에서만 실행했음에도 불구하고 데이터베이스가 클러스터 전체에 생성되었음을 확인할 수 있습니다:
+
+```sql
+SHOW DATABASES;
+```
+
+```response
+ ┌─name───────────────┐
+1. │ INFORMATION_SCHEMA │
+2. │ default │
+3. │ information_schema │
+4. │ system │
+#highlight-next-line
+5. │ uk │
+ └────────────────────┘
+```
+
+## 클러스터에 테이블 생성 {#creating-a-table}
+
+이제 데이터베이스가 생성되었으므로 테이블을 생성합니다.
+아래 쿼리를 임의의 호스트 클라이언트에서 실행합니다:
+
+```sql
+CREATE TABLE IF NOT EXISTS uk.uk_price_paid_local
+--highlight-next-line
+ON CLUSTER cluster_2S_1R
+(
+ price UInt32,
+ date Date,
+ postcode1 LowCardinality(String),
+ postcode2 LowCardinality(String),
+ type Enum8('terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4, 'other' = 0),
+ is_new UInt8,
+ duration Enum8('freehold' = 1, 'leasehold' = 2, 'unknown' = 0),
+ addr1 String,
+ addr2 String,
+ street LowCardinality(String),
+ locality LowCardinality(String),
+ town LowCardinality(String),
+ district LowCardinality(String),
+ county LowCardinality(String)
+)
+ENGINE = MergeTree
+ORDER BY (postcode1, postcode2, addr1, addr2);
+```
+
+이 쿼리는 [영국 부동산 가격](/getting-started/example-datasets/uk-price-paid) 예제 데이터 세트 튜토리얼의 원래 `CREATE` 문에서 사용된 쿼리와 동일하지만, `ON CLUSTER` 절을 제외하고 다릅니다.
+
+`ON CLUSTER` 절은 `CREATE`, `DROP`, `ALTER`, 및 `RENAME`과 같은 DDL (데이터 정의 언어) 쿼리의 분산 실행을 위해 설계되어 있습니다. 이러한 스키마 변경이 클러스터의 모든 노드에서 적용되도록 보장합니다.
+
+아래 쿼리를 각 호스트의 클라이언트에서 실행하여 테이블이 클러스터 전체에 생성되었음을 확인할 수 있습니다:
+
+```sql title="Query"
+SHOW TABLES IN uk;
+```
+
+```response title="Response"
+ ┌─name────────────────┐
+1. │ uk_price_paid_local │
+ └─────────────────────┘
+```
+
+영국 가격 데이터 삽입 전에, 아무 호스트에서 일반 테이블에 데이터를 삽입할 때 무슨 일이 발생하는지 빠른 실험을 해봅시다.
+
+아무 호스트에서 다음 쿼리를 실행하여 테스트 데이터베이스와 테이블을 생성합니다:
+
+```sql
+CREATE DATABASE IF NOT EXISTS test ON CLUSTER cluster_2S_1R;
+CREATE TABLE test.test_table ON CLUSTER cluster_2S_1R
+(
+ `id` UInt64,
+ `name` String
+)
+ENGINE = MergeTree()
+ORDER BY id;
+```
+
+이제 `clickhouse-01`에서 다음 `INSERT` 쿼리를 실행합니다:
+
+```sql
+INSERT INTO test.test_table (id, name) VALUES (1, 'Clicky McClickface');
+```
+
+`clickhouse-02`로 전환하여 다음 `INSERT` 쿼리를 실행합니다:
+
+```sql title="Query"
+INSERT INTO test.test_table (id, name) VALUES (1, 'Alexey Milovidov');
+```
+
+이제 `clickhouse-01` 또는 `clickhouse-02`에서 다음 쿼리를 실행합니다:
+
+```sql
+-- from clickhouse-01
+SELECT * FROM test.test_table;
+-- ┌─id─┬─name───────────────┐
+-- 1.│ 1 │ Clicky McClickface │
+-- └────┴────────────────────┘
+
+--from clickhouse-02
+SELECT * FROM test.test_table;
+-- ┌─id─┬─name───────────────┐
+-- 1.│ 1 │ Alexey Milovidov │
+-- └────┴────────────────────┘
+```
+
+`ReplicatedMergeTree` 테이블과 달리, 특정 호스트의 테이블에 삽입된 행만 반환되고 두 행 모두가 반환되지 않음을 확인할 수 있습니다.
+
+두 샤드에서 데이터를 읽으려면 모든 샤드에서 쿼리를 처리할 수 있는 인터페이스가 필요합니다. 이는 선택 쿼리를 실행할 때 두 샤드의 데이터를 결합하거나 삽입 쿼리를 실행할 때 두 샤드에 데이터를 삽입하는 역할을 합니다.
+
+ClickHouse에서 이 인터페이스는 **분산 테이블**이라고 하며, [`Distributed`](/engines/table-engines/special/distributed) 테이블 엔진을 사용하여 생성합니다. 어떻게 작동하는지 살펴보겠습니다.
+
+## 분산 테이블 생성 {#create-distributed-table}
+
+아래 쿼리를 사용하여 분산 테이블을 생성합니다:
+
+```sql
+CREATE TABLE test.test_table_dist ON CLUSTER cluster_2S_1R AS test.test_table
+ENGINE = Distributed('cluster_2S_1R', 'test', 'test_table', rand())
+```
+
+이 예제에서 `rand()` 함수가 샤딩 키로 선택되어 삽입이 샤드 간에 무작위로 분배되도록 합니다.
+
+이제 아무 호스트에서 분산 테이블을 쿼리하면 이전 예제와 달리 두 호스트에서 삽입된 두 행이 모두 반환됩니다:
+
+```sql
+SELECT * FROM test.test_table_dist;
+```
+
+```sql
+ ┌─id─┬─name───────────────┐
+1. │ 1 │ Alexey Milovidov │
+2. │ 1 │ Clicky McClickface │
+ └────┴────────────────────┘
+```
+
+영국 부동산 가격 데이터에 대해서도 같은 작업을 수행하겠습니다. 어떤 호스트 클라이언트에서든 아래 쿼리를 실행하여 이전에 `ON CLUSTER`로 생성한 기존 테이블을 사용하여 분산 테이블을 생성합니다:
+
+```sql
+CREATE TABLE IF NOT EXISTS uk.uk_price_paid_distributed
+ON CLUSTER cluster_2S_1R
+ENGINE = Distributed('cluster_2S_1R', 'uk', 'uk_price_paid_local', rand());
+```
+
+## 분산 테이블에 데이터 삽입 {#inserting-data-into-distributed-table}
+
+이제 아무 호스트에 연결하고 데이터를 삽입합니다:
+
+```sql
+INSERT INTO uk.uk_price_paid_distributed
+SELECT
+ toUInt32(price_string) AS price,
+ parseDateTimeBestEffortUS(time) AS date,
+ splitByChar(' ', postcode)[1] AS postcode1,
+ splitByChar(' ', postcode)[2] AS postcode2,
+ transform(a, ['T', 'S', 'D', 'F', 'O'], ['terraced', 'semi-detached', 'detached', 'flat', 'other']) AS type,
+ b = 'Y' AS is_new,
+ transform(c, ['F', 'L', 'U'], ['freehold', 'leasehold', 'unknown']) AS duration,
+ addr1,
+ addr2,
+ street,
+ locality,
+ town,
+ district,
+ county
+FROM url(
+ 'http://prod1.publicdata.landregistry.gov.uk.s3-website-eu-west-1.amazonaws.com/pp-complete.csv',
+ 'CSV',
+ 'uuid_string String,
+ price_string String,
+ time String,
+ postcode String,
+ a String,
+ b String,
+ c String,
+ addr1 String,
+ addr2 String,
+ street String,
+ locality String,
+ town String,
+ district String,
+ county String,
+ d String,
+ e String'
+) SETTINGS max_http_get_redirects=10;
+```
+
+데이터가 삽입된 후 분산 테이블을 사용하여 행 수를 확인할 수 있습니다:
+
+```sql title="Query"
+SELECT count(*)
+FROM uk.uk_price_paid_distributed
+```
+
+```response title="Response"
+ ┌──count()─┐
+1. │ 30212555 │ -- 30.21 million
+ └──────────┘
+```
+
+아무 호스트에서 아래 쿼리를 실행하면 데이터가 샤드 간에 거의 고르게 분산되었음을 알 수 있습니다 (어떤 샤드에 삽입할지를 결정하는 데 `rand()`가 사용되므로 결과가 다를 수 있습니다):
+
+```sql
+-- from clickhouse-01
+SELECT count(*)
+FROM uk.uk_price_paid_local
+-- ┌──count()─┐
+-- 1. │ 15107353 │ -- 15.11 million
+-- └──────────┘
+
+--from clickhouse-02
+SELECT count(*)
+FROM uk.uk_price_paid_local
+-- ┌──count()─┐
+-- 1. │ 15105202 │ -- 15.11 million
+-- └──────────┘
+```
+
+어떤 호스트가 실패하면 어떻게 될까요? `clickhouse-01`을 종료하여 이를 시뮬레이션해 보겠습니다:
+
+```bash
+docker stop clickhouse-01
+```
+
+작동이 중지되었는지 확인하려면 다음을 실행합니다:
+
+```bash
+docker-compose ps
+```
+
+```response title="Response"
+NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
+clickhouse-02 clickhouse/clickhouse-server:latest "/entrypoint.sh" clickhouse-02 X minutes ago Up X minutes 127.0.0.1:8124->8123/tcp, 127.0.0.1:9001->9000/tcp
+clickhouse-keeper-01 clickhouse/clickhouse-keeper:latest-alpine "/entrypoint.sh" clickhouse-keeper-01 X minutes ago Up X minutes 127.0.0.1:9181->9181/tcp
+clickhouse-keeper-02 clickhouse/clickhouse-keeper:latest-alpine "/entrypoint.sh" clickhouse-keeper-02 X minutes ago Up X minutes 127.0.0.1:9182->9181/tcp
+clickhouse-keeper-03 clickhouse/clickhouse-keeper:latest-alpine "/entrypoint.sh" clickhouse-keeper-03 X minutes ago Up X minutes 127.0.0.1:9183->9181/tcp
+```
+
+이제 `clickhouse-02`에서 이전에 분산 테이블에서 실행한 동일한 선택 쿼리를 실행합니다:
+
+```sql
+SELECT count(*)
+FROM uk.uk_price_paid_distributed
+```
+
+```response title="Response"
+Received exception from server (version 25.5.2):
+Code: 279. DB::Exception: Received from localhost:9000. DB::Exception: All connection tries failed. Log:
+
+Code: 32. DB::Exception: Attempt to read after eof. (ATTEMPT_TO_READ_AFTER_EOF) (version 25.5.2.47 (official build))
+Code: 209. DB::NetException: Timeout: connect timed out: 192.168.7.1:9000 (clickhouse-01:9000, 192.168.7.1, local address: 192.168.7.2:37484, connection timeout 1000 ms). (SOCKET_TIMEOUT) (version 25.5.2.47 (official build))
+#highlight-next-line
+Code: 198. DB::NetException: Not found address of host: clickhouse-01: (clickhouse-01:9000, 192.168.7.1, local address: 192.168.7.2:37484). (DNS_ERROR) (version 25.5.2.47 (official build))
+
+: While executing Remote. (ALL_CONNECTION_TRIES_FAILED)
+```
+
+안타깝게도 우리의 클러스터는 내결함성이 없습니다. 한 호스트가 실패하면 클러스터는 건강하지 않다고 간주되며 쿼리가 실패합니다. 이는 [이전 예제](/architecture/replication)에서 본 복제 테이블과 비교할 때, 그 경우에는 한 호스트가 실패하더라도 데이터를 삽입할 수 있었습니다.
+
+
+
+## 결론 {#conclusion}
+
+이 클러스터 토폴로지의 장점은 데이터가 별도의 호스트에 분배되어 각 노드당 저장 공간을 절반으로 줄일 수 있다는 점입니다. 더 중요한 것은 쿼리가 두 개의 샤드에 걸쳐 처리되므로 메모리 활용 측면에서 더 효율적이며 각 호스트의 I/O를 줄인다는 점입니다.
+
+이 클러스터 토폴로지의 주요 단점은 물론 호스트 중 하나를 잃으면 쿼리를 제공할 수 없다는 것입니다.
+
+[다음 예제](/architecture/cluster-deployment)에서는 확장성과 내결함성을 제공하는 두 개의 샤드 및 두 개의 복제본으로 클러스터를 설정하는 방법을 살펴보겠습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/02_2_shards_1_replica.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/02_2_shards_1_replica.md.hash
new file mode 100644
index 00000000000..f1e9bac748e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/02_2_shards_1_replica.md.hash
@@ -0,0 +1 @@
+19033555895e80ee
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/03_2_shards_2_replicas.md b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/03_2_shards_2_replicas.md
new file mode 100644
index 00000000000..7ee7eac2db0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/03_2_shards_2_replicas.md
@@ -0,0 +1,717 @@
+---
+'slug': '/architecture/cluster-deployment'
+'sidebar_label': '복제 + 스케일링'
+'sidebar_position': 100
+'title': '복제 + 스케일링'
+'description': '이 튜토리얼을 통해 간단한 ClickHouse 클러스터를 설정하는 방법을 배울 수 있습니다.'
+'doc_type': 'guide'
+'keywords':
+- 'cluster deployment'
+- 'replication'
+- 'sharding'
+- 'high availability'
+- 'scalability'
+---
+
+import Image from '@theme/IdealImage';
+import SharedReplicatedArchitecture from '@site/static/images/deployment-guides/replication-sharding-examples/both.png';
+import ConfigExplanation from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx';
+import ListenHost from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx';
+import KeeperConfig from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx';
+import KeeperConfigExplanation from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx';
+import VerifyKeeperStatus from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx';
+import DedicatedKeeperServers from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx';
+import ExampleFiles from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx';
+import CloudTip from '@site/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx';
+
+> 이 예제에서는 복제 및 확장이 모두 가능한 간단한 ClickHouse 클러스터를 설정하는 방법을 배웁니다. 이는 두 개의 샤드와 두 개의 복제본으로 구성되며, 클러스터의 조정을 관리하고 정족수를 유지하기 위한 3노드 ClickHouse Keeper 클러스터가 포함됩니다.
+
+설정할 클러스터의 아키텍처는 아래와 같습니다:
+
+
+
+
+
+## 필수 조건 {#prerequisites}
+
+- 이전에 [로컬 ClickHouse 서버](/install)를 설정한 적이 있습니다.
+- ClickHouse의 기본 구성 개념, 예를 들어 [configuration files](/operations/configuration-files)에 익숙합니다.
+- 머신에 Docker가 설치되어 있습니다.
+
+
+
+## 디렉토리 구조 및 테스트 환경 설정 {#set-up}
+
+
+
+이 튜토리얼에서는 [Docker compose](https://docs.docker.com/compose/)를 사용하여 ClickHouse 클러스터를 설정할 것입니다. 이 설정은 별도의 로컬 머신, 가상 머신 또는 클라우드 인스턴스에서 작동하도록 수정할 수 있습니다.
+
+다음 명령어를 실행하여 이 예제의 디렉토리 구조를 설정합니다:
+
+```bash
+mkdir cluster_2S_2R
+cd cluster_2S_2R
+
+
+# Create clickhouse-keeper directories
+for i in {01..03}; do
+ mkdir -p fs/volumes/clickhouse-keeper-${i}/etc/clickhouse-keeper
+done
+
+
+# Create clickhouse-server directories
+for i in {01..04}; do
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server
+done
+```
+
+다음 `docker-compose.yml` 파일을 `clickhouse-cluster` 디렉토리에 추가하세요:
+
+```yaml title="docker-compose.yml"
+version: '3.8'
+services:
+ clickhouse-01:
+ image: "clickhouse/clickhouse-server:latest"
+ user: "101:101"
+ container_name: clickhouse-01
+ hostname: clickhouse-01
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-01/etc/clickhouse-server/config.d/config.xml:/etc/clickhouse-server/config.d/config.xml
+ - ${PWD}/fs/volumes/clickhouse-01/etc/clickhouse-server/users.d/users.xml:/etc/clickhouse-server/users.d/users.xml
+ ports:
+ - "127.0.0.1:8123:8123"
+ - "127.0.0.1:9000:9000"
+ depends_on:
+ - clickhouse-keeper-01
+ - clickhouse-keeper-02
+ - clickhouse-keeper-03
+ clickhouse-02:
+ image: "clickhouse/clickhouse-server:latest"
+ user: "101:101"
+ container_name: clickhouse-02
+ hostname: clickhouse-02
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-02/etc/clickhouse-server/config.d/config.xml:/etc/clickhouse-server/config.d/config.xml
+ - ${PWD}/fs/volumes/clickhouse-02/etc/clickhouse-server/users.d/users.xml:/etc/clickhouse-server/users.d/users.xml
+ ports:
+ - "127.0.0.1:8124:8123"
+ - "127.0.0.1:9001:9000"
+ depends_on:
+ - clickhouse-keeper-01
+ - clickhouse-keeper-02
+ - clickhouse-keeper-03
+ clickhouse-03:
+ image: "clickhouse/clickhouse-server:latest"
+ user: "101:101"
+ container_name: clickhouse-03
+ hostname: clickhouse-03
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-03/etc/clickhouse-server/config.d/config.xml:/etc/clickhouse-server/config.d/config.xml
+ - ${PWD}/fs/volumes/clickhouse-03/etc/clickhouse-server/users.d/users.xml:/etc/clickhouse-server/users.d/users.xml
+ ports:
+ - "127.0.0.1:8125:8123"
+ - "127.0.0.1:9002:9000"
+ depends_on:
+ - clickhouse-keeper-01
+ - clickhouse-keeper-02
+ - clickhouse-keeper-03
+ clickhouse-04:
+ image: "clickhouse/clickhouse-server:latest"
+ user: "101:101"
+ container_name: clickhouse-04
+ hostname: clickhouse-04
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-04/etc/clickhouse-server/config.d/config.xml:/etc/clickhouse-server/config.d/config.xml
+ - ${PWD}/fs/volumes/clickhouse-04/etc/clickhouse-server/users.d/users.xml:/etc/clickhouse-server/users.d/users.xml
+ ports:
+ - "127.0.0.1:8126:8123"
+ - "127.0.0.1:9003:9000"
+ depends_on:
+ - clickhouse-keeper-01
+ - clickhouse-keeper-02
+ - clickhouse-keeper-03
+ clickhouse-keeper-01:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-01
+ hostname: clickhouse-keeper-01
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9181:9181"
+ clickhouse-keeper-02:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-02
+ hostname: clickhouse-keeper-02
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9182:9181"
+ clickhouse-keeper-03:
+ image: "clickhouse/clickhouse-keeper:latest-alpine"
+ user: "101:101"
+ container_name: clickhouse-keeper-03
+ hostname: clickhouse-keeper-03
+ volumes:
+ - ${PWD}/fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper/keeper_config.xml:/etc/clickhouse-keeper/keeper_config.xml
+ ports:
+ - "127.0.0.1:9183:9181"
+```
+
+다음 하위 디렉토리 및 파일을 생성하세요:
+
+```bash
+for i in {01..04}; do
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server/config.d
+ mkdir -p fs/volumes/clickhouse-${i}/etc/clickhouse-server/users.d
+ touch fs/volumes/clickhouse-${i}/etc/clickhouse-server/config.d/config.xml
+ touch fs/volumes/clickhouse-${i}/etc/clickhouse-server/users.d/users.xml
+done
+```
+
+
+
+## ClickHouse 노드 구성 {#configure-clickhouse-servers}
+
+### 서버 설정 {#server-setup}
+
+이제 `fs/volumes/clickhouse-{}/etc/clickhouse-server/config.d`에 위치한 각 빈 구성 파일 `config.xml`을 수정합니다. 아래 강조된 줄은 각 노드에 대해 구체적으로 변경해야 합니다:
+
+```xml
+
+
+ debug
+ /var/log/clickhouse-server/clickhouse-server.log
+ /var/log/clickhouse-server/clickhouse-server.err.log
+ 1000M
+ 3
+
+
+ cluster_2S_2R node 1
+ 0.0.0.0
+ 8123
+ 9000
+
+
+ users.xml
+
+
+ /var/lib/clickhouse/access/
+
+
+
+ /clickhouse/task_queue/ddl
+
+
+
+
+ true
+
+ clickhouse-01
+ 9000
+
+
+ clickhouse-03
+ 9000
+
+
+
+ true
+
+ clickhouse-02
+ 9000
+
+
+ clickhouse-04
+ 9000
+
+
+
+
+
+
+ clickhouse-keeper-01
+ 9181
+
+
+ clickhouse-keeper-02
+ 9181
+
+
+ clickhouse-keeper-03
+ 9181
+
+
+
+
+ 01
+ 01
+
+
+
+```
+
+| 디렉토리 | 파일 |
+|-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `fs/volumes/clickhouse-01/etc/clickhouse-server/config.d` | [`config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_2R/fs/volumes/clickhouse-01/etc/clickhouse-server/config.d/config.xml) |
+| `fs/volumes/clickhouse-02/etc/clickhouse-server/config.d` | [`config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_2R/fs/volumes/clickhouse-02/etc/clickhouse-server/config.d/config.xml) |
+| `fs/volumes/clickhouse-03/etc/clickhouse-server/config.d` | [`config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_2R/fs/volumes/clickhouse-03/etc/clickhouse-server/config.d/config.xml) |
+| `fs/volumes/clickhouse-04/etc/clickhouse-server/config.d` | [`config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_2R/fs/volumes/clickhouse-04/etc/clickhouse-server/config.d/config.xml) |
+
+위 구성 파일의 각 섹션은 아래에서 좀 더 자세히 설명됩니다.
+
+#### 네트워킹 및 로깅 {#networking}
+
+
+
+로깅 구성은 `` 블록에서 정의됩니다. 이 예제 구성은 1000M에서 세 번 롤오버되는 디버그 로그를 제공합니다:
+
+```xml
+
+ debug
+ /var/log/clickhouse-server/clickhouse-server.log
+ /var/log/clickhouse-server/clickhouse-server.err.log
+ 1000M
+ 3
+
+```
+
+로깅 구성에 대한 더 많은 정보는 기본 ClickHouse [구성 파일](https://github.com/ClickHouse/ClickHouse/blob/master/programs/server/config.xml)에 포함된 주석을 참조하세요.
+
+#### 클러스터 구성 {#cluster-config}
+
+클러스터에 대한 구성은 `` 블록에서 설정됩니다. 여기서 클러스터 이름 `cluster_2S_2R`이 정의됩니다.
+
+`` 블록은 클러스터의 레이아웃을 정의하며, `` 및 `` 설정을 사용하여 분산 DDL 쿼리를 위한 템플릿 역할을 합니다. 기본적으로 분산 DDL 쿼리는 허용되지만, `allow_distributed_ddl_queries` 설정을 통해 끌 수 있습니다.
+
+`internal_replication`는 데이터가 하나의 복제본에만 기록되도록 true로 설정됩니다.
+
+```xml
+
+
+
+
+
+
+ true
+
+ clickhouse-01
+ 9000
+
+
+ clickhouse-03
+ 9000
+
+
+
+ true
+
+ clickhouse-02
+ 9000
+
+
+ clickhouse-04
+ 9000
+
+
+
+
+```
+
+`` 섹션은 클러스터의 레이아웃을 정의하고, `ON CLUSTER` 절을 사용하여 클러스터 전체에서 실행되는 쿼리를 위한 템플릿 역할을 합니다.
+
+#### Keeper 구성 {#keeper-config-explanation}
+
+`` 섹션은 ClickHouse가 ClickHouse Keeper(또는 ZooKeeper)가 어디에서 실행되고 있는지를 알려줍니다. ClickHouse Keeper 클러스터를 사용하고 있으므로, 클러스터의 각 ``를 지정해야 하며, 이때 각각의 호스트 이름과 포트 번호를 `` 및 `` 태그를 사용하여 설정해야 합니다.
+
+ClickHouse Keeper의 설정은 튜토리얼의 다음 단계에서 설명됩니다.
+
+```xml
+
+
+ clickhouse-keeper-01
+ 9181
+
+
+ clickhouse-keeper-02
+ 9181
+
+
+ clickhouse-keeper-03
+ 9181
+
+
+```
+
+:::note
+ClickHouse Keeper를 ClickHouse 서버와 동일한 서버에서 실행하는 것이 가능하지만, 생산 환경에서는 ClickHouse Keeper가 전용 호스트에서 실행되기를 강력히 권장합니다.
+:::
+
+#### 매크로 구성 {#macros-config-explanation}
+
+또한 `` 섹션은 복제 테이블에 대한 매개변수 치환을 정의하는 데 사용됩니다. 이는 `system.macros`에 나열되어 있으며, 쿼리에서 `{shard}` 및 `{replica}`와 같은 치환을 사용할 수 있게 합니다.
+
+```xml
+
+ 01
+ 01
+
+```
+
+### 사용자 구성 {#cluster-configuration}
+
+이제 `fs/volumes/clickhouse-{}/etc/clickhouse-server/users.d`에 위치한 각 빈 구성 파일 `users.xml`을 다음과 같이 수정합니다:
+
+```xml title="/users.d/users.xml"
+
+
+
+
+ 10000000000
+ 0
+ in_order
+ 1
+
+
+
+
+ 1
+ default
+
+ ::/0
+
+ default
+ 1
+ 1
+ 1
+ 1
+
+
+
+
+
+ 3600
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+```
+
+이번 예제에서는 기본 사용자가 단순성을 위해 비밀번호 없이 구성되어 있습니다. 실제로는 이를 권장하지 않습니다.
+
+:::note
+이번 예제에서는 모든 클러스터 노드의 `users.xml` 파일이 동일합니다.
+:::
+
+## ClickHouse Keeper 구성 {#configure-clickhouse-keeper-nodes}
+
+다음으로 조정을 위한 ClickHouse Keeper를 구성할 것입니다.
+
+### Keeper 설정 {#configuration-explanation}
+
+
+
+| 디렉토리 | 파일 |
+|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_2R/fs/volumes/clickhouse-keeper-01/etc/clickhouse-keeper/keeper_config.xml) |
+| `fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_2R/fs/volumes/clickhouse-keeper-02/etc/clickhouse-keeper/keeper_config.xml) |
+| `fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper` | [`keeper_config.xml`](https://github.com/ClickHouse/examples/blob/main/docker-compose-recipes/recipes/cluster_2S_2R/fs/volumes/clickhouse-keeper-03/etc/clickhouse-keeper/keeper_config.xml) |
+
+
+
+
+
+## 설정 테스트 {#test-the-setup}
+
+당신의 머신에서 docker가 실행되고 있는지 확인하세요. `cluster_2S_2R` 디렉토리의 루트에서 `docker-compose up` 명령어를 사용하여 클러스터를 시작하세요:
+
+```bash
+docker-compose up -d
+```
+
+ClickHouse 및 Keeper 이미지를 당기기 시작하고, 그 다음 컨테이너를 시작하는 것을 볼 수 있습니다:
+
+```bash
+[+] Running 8/8
+ ✔ Network cluster_2s_2r_default Created
+ ✔ Container clickhouse-keeper-03 Started
+ ✔ Container clickhouse-keeper-02 Started
+ ✔ Container clickhouse-keeper-01 Started
+ ✔ Container clickhouse-01 Started
+ ✔ Container clickhouse-02 Started
+ ✔ Container clickhouse-04 Started
+ ✔ Container clickhouse-03 Started
+```
+
+클러스터가 실행 중인지 확인하기 위해, 노드 중 하나에 연결하여 다음 쿼리를 실행합니다. 첫 번째 노드에 연결하는 명령은 다음과 같습니다:
+
+```bash
+
+# Connect to any node
+docker exec -it clickhouse-01 clickhouse-client
+```
+
+성공적으로 연결되면 ClickHouse 클라이언트 프롬프트가 표시됩니다:
+
+```response
+cluster_2S_2R node 1 :)
+```
+
+어느 클러스터 토폴로지가 어떤 호스트에 정의되어 있는지 확인하기 위해 다음 쿼리를 실행하세요:
+
+```sql title="Query"
+SELECT
+ cluster,
+ shard_num,
+ replica_num,
+ host_name,
+ port
+FROM system.clusters;
+```
+
+```response title="Response"
+ ┌─cluster───────┬─shard_num─┬─replica_num─┬─host_name─────┬─port─┐
+1. │ cluster_2S_2R │ 1 │ 1 │ clickhouse-01 │ 9000 │
+2. │ cluster_2S_2R │ 1 │ 2 │ clickhouse-03 │ 9000 │
+3. │ cluster_2S_2R │ 2 │ 1 │ clickhouse-02 │ 9000 │
+4. │ cluster_2S_2R │ 2 │ 2 │ clickhouse-04 │ 9000 │
+5. │ default │ 1 │ 1 │ localhost │ 9000 │
+ └───────────────┴───────────┴─────────────┴───────────────┴──────┘
+```
+
+ClickHouse Keeper 클러스터의 상태를 확인하기 위해 다음 쿼리를 실행하세요:
+
+```sql title="Query"
+SELECT *
+FROM system.zookeeper
+WHERE path IN ('/', '/clickhouse')
+```
+
+```response title="Response"
+ ┌─name───────┬─value─┬─path────────┐
+1. │ task_queue │ │ /clickhouse │
+2. │ sessions │ │ /clickhouse │
+3. │ keeper │ │ / │
+4. │ clickhouse │ │ / │
+ └────────────┴───────┴─────────────┘
+```
+
+
+
+이로써, 두 개의 샤드와 두 개의 복제본을 가진 ClickHouse 클러스터를 성공적으로 설정했습니다. 다음 단계에서는 클러스터에 테이블을 생성할 것입니다.
+
+## 데이터베이스 생성 {#creating-a-database}
+
+클러스터가 올바르게 설정되고 실행되고 있음을 확인했으므로, [영국 부동산 가격](/getting-started/example-datasets/uk-price-paid) 예제 데이터 세트 튜토리얼에서 사용된 것과 동일한 테이블을 재구성할 것입니다. 이는 1995년 이후 잉글랜드와 웨일스에서 부동산 자산에 대해 지불된 가격 약 3000만 행으로 구성됩니다.
+
+각 호스트의 클라이언트에 접속하려면 다음 명령어를 각각의 터미널 탭이나 창에서 실행하세요:
+
+```bash
+docker exec -it clickhouse-01 clickhouse-client
+docker exec -it clickhouse-02 clickhouse-client
+docker exec -it clickhouse-03 clickhouse-client
+docker exec -it clickhouse-04 clickhouse-client
+```
+
+아래 쿼리를 각 호스트의 clickhouse-client에서 실행하여 현재 생성된 데이터베이스가 기본 데이터베이스를 제외하고는 없음을 확인할 수 있습니다:
+
+```sql title="Query"
+SHOW DATABASES;
+```
+
+```response title="Response"
+ ┌─name───────────────┐
+1. │ INFORMATION_SCHEMA │
+2. │ default │
+3. │ information_schema │
+4. │ system │
+ └────────────────────┘
+```
+
+`clickhouse-01` 클라이언트에서 다음 **분산된** DDL 쿼리를 실행하여 `uk`라는 새 데이터베이스를 생성합니다:
+
+```sql
+CREATE DATABASE IF NOT EXISTS uk
+-- highlight-next-line
+ON CLUSTER cluster_2S_2R;
+```
+
+앞서와 동일한 쿼리를 각 호스트의 클라이언트에서 다시 실행하여 데이터베이스가 `clickhouse-01`에서만 쿼리를 실행했음에도 클러스터 전체에서 생성되었음을 확인할 수 있습니다:
+
+```sql
+SHOW DATABASES;
+```
+
+```response
+ ┌─name───────────────┐
+1. │ INFORMATION_SCHEMA │
+2. │ default │
+3. │ information_schema │
+4. │ system │
+#highlight-next-line
+5. │ uk │
+ └────────────────────┘
+```
+
+## 클러스터에 테이블 생성 {#creating-a-table}
+
+이제 데이터베이스가 생성되었으므로, 다음으로 복제 기능이 있는 테이블을 생성할 것입니다.
+
+호스트 클라이언트 중 하나에서 다음 쿼리를 실행하세요:
+
+```sql
+CREATE TABLE IF NOT EXISTS uk.uk_price_paid_local
+--highlight-next-line
+ON CLUSTER cluster_2S_2R
+(
+ price UInt32,
+ date Date,
+ postcode1 LowCardinality(String),
+ postcode2 LowCardinality(String),
+ type Enum8('terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4, 'other' = 0),
+ is_new UInt8,
+ duration Enum8('freehold' = 1, 'leasehold' = 2, 'unknown' = 0),
+ addr1 String,
+ addr2 String,
+ street LowCardinality(String),
+ locality LowCardinality(String),
+ town LowCardinality(String),
+ district LowCardinality(String),
+ county LowCardinality(String)
+)
+--highlight-next-line
+ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}')
+ORDER BY (postcode1, postcode2, addr1, addr2);
+```
+
+이 쿼리는 [영국 부동산 가격](/getting-started/example-datasets/uk-price-paid) 예제 데이터 세트 튜토리얼의 원래 `CREATE` 문과 동일하지만, `ON CLUSTER` 절 및 `ReplicatedMergeTree` 엔진 사용을 제외하고는 동일합니다.
+
+`ON CLUSTER` 절은 DDL(데이터 정의 언어) 쿼리인 `CREATE`, `DROP`, `ALTER` 및 `RENAME`의 분산 실행을 위해 설계되어 있으며, 이러한 스키마 변경 사항이 클러스터의 모든 노드에 적용되도록 합니다.
+
+[`ReplicatedMergeTree`](https://clickhouse.com/docs/engines/table-engines/mergetree-family/replication#converting-from-mergetree-to-replicatedmergetree) 엔진은 일반적인 `MergeTree` 테이블 엔진과 똑같이 작동하지만, 데이터 복제도 수행합니다. 두 가지 매개변수를 지정해야 합니다:
+
+- `zoo_path`: 테이블 메타데이터에 대한 Keeper/ZooKeeper 경로입니다.
+- `replica_name`: 테이블의 복제본 이름입니다.
+
+
+
+`zoo_path` 매개변수는 사용자가 선택하는 어떤 값으로 설정할 수 있지만, 접두사를 사용하는 관례를 따르는 것이 좋습니다.
+
+```text
+/clickhouse/tables/{shard}/{database}/{table}
+```
+
+여기서:
+- `{database}` 및 `{table}`는 자동으로 교체됩니다.
+- `{shard}` 및 `{replica}`는 이전에 `config.xml` 파일에서 정의된 매크로입니다.
+
+각 호스트의 클라이언트에서 다음 쿼리를 실행하여 테이블이 클러스터 전체에 생성되었음을 확인할 수 있습니다:
+
+```sql title="Query"
+SHOW TABLES IN uk;
+```
+
+```response title="Response"
+ ┌─name────────────────┐
+1. │ uk_price_paid_local │
+ └─────────────────────┘
+```
+
+## 분산 테이블에 데이터 삽입 {#inserting-data-using-distributed}
+
+테이블에 데이터를 삽입하기 위해서는 `ON CLUSTER`를 사용할 수 없습니다. DML(데이터 조작 언어) 쿼리인 `INSERT`, `UPDATE` 및 `DELETE`에 적용되지 않기 때문입니다. 데이터를 삽입하려면, [`Distributed`](/engines/table-engines/special/distributed) 테이블 엔진을 사용해야 합니다.
+2개의 샤드와 1개의 복제본으로 클러스터를 설정하는 방법에 대한 [가이드](/architecture/horizontal-scaling)에서 배운 대로, 분산 테이블은 서로 다른 호스트에 위치한 샤드에 대한 액세스를 가진 테이블이며, `Distributed` 테이블 엔진을 사용하여 정의됩니다.
+분산 테이블은 클러스터의 모든 샤드 간의 인터페이스 역할을 합니다.
+
+호스트 클라이언트 중 하나에서 기존의 복제된 테이블을 이용하여 분산 테이블을 생성하는 다음 쿼리를 실행하세요:
+
+```sql
+CREATE TABLE IF NOT EXISTS uk.uk_price_paid_distributed
+ON CLUSTER cluster_2S_2R
+ENGINE = Distributed('cluster_2S_2R', 'uk', 'uk_price_paid_local', rand());
+```
+
+이제 각 호스트에서 `uk` 데이터베이스에 다음 테이블이 표시됩니다:
+
+```sql
+ ┌─name──────────────────────┐
+1. │ uk_price_paid_distributed │
+2. │ uk_price_paid_local │
+ └───────────────────────────┘
+```
+
+다음 쿼리를 사용하여 호스트 클라이언트에서 `uk_price_paid_distributed` 테이블에 데이터가 삽입될 수 있습니다:
+
+```sql
+INSERT INTO uk.uk_price_paid_distributed
+SELECT
+ toUInt32(price_string) AS price,
+ parseDateTimeBestEffortUS(time) AS date,
+ splitByChar(' ', postcode)[1] AS postcode1,
+ splitByChar(' ', postcode)[2] AS postcode2,
+ transform(a, ['T', 'S', 'D', 'F', 'O'], ['terraced', 'semi-detached', 'detached', 'flat', 'other']) AS type,
+ b = 'Y' AS is_new,
+ transform(c, ['F', 'L', 'U'], ['freehold', 'leasehold', 'unknown']) AS duration,
+ addr1,
+ addr2,
+ street,
+ locality,
+ town,
+ district,
+ county
+FROM url(
+ 'http://prod1.publicdata.landregistry.gov.uk.s3-website-eu-west-1.amazonaws.com/pp-complete.csv',
+ 'CSV',
+ 'uuid_string String,
+ price_string String,
+ time String,
+ postcode String,
+ a String,
+ b String,
+ c String,
+ addr1 String,
+ addr2 String,
+ street String,
+ locality String,
+ town String,
+ district String,
+ county String,
+ d String,
+ e String'
+) SETTINGS max_http_get_redirects=10;
+```
+
+클러스터의 노드에 데이터가 고르게 분산되었는지 확인하기 위해 다음 쿼리를 실행하세요:
+
+```sql
+SELECT count(*)
+FROM uk.uk_price_paid_distributed;
+
+SELECT count(*) FROM uk.uk_price_paid_local;
+```
+
+```response
+ ┌──count()─┐
+1. │ 30212555 │ -- 30.21 million
+ └──────────┘
+
+ ┌──count()─┐
+1. │ 15105983 │ -- 15.11 million
+ └──────────┘
+```
+
+
+
+## 결론 {#conclusion}
+
+이 클러스터 토폴로지의 장점은 2개의 샤드와 2개의 복제본이 존재하여 확장성과 장애 내성을 제공한다는 것입니다. 데이터가 별도의 호스트에 분산되어 저장 공간 및 각 노드의 I/O 요구 사항이 줄어들며, 쿼리는 두 개의 샤드를 통해 병렬로 처리되어 성능 및 메모리 효율성이 향상됩니다. 중요한 것은, 클러스터가 하나의 노드를 잃는 것을 견딜 수 있으며 중단 없이 쿼리를 계속 제공할 수 있다는 점입니다. 각 샤드는 다른 노드에서 사용할 수 있는 백업 복제본을 가지고 있습니다.
+
+이러한 클러스터 토폴로지의 주요 단점은 증가된 저장 오버헤드입니다. 이는 복제본 없이 구성에 비해 두 배의 저장 용량이 필요합니다. 또한 클러스터는 단일 노드 실패에는 견딜 수 있지만, 두 개의 노드를 동시에 잃으면 샤드가 어떤 노드에 분배되어 있는지에 따라 클러스터가 비활성화될 수 있습니다. 이 토폴로지는 가용성과 비용 간의 균형을 이루어, 높은 복제 인자를 요구하지 않으면서 어느 정도의 장애 내성이 필요한 생산 환경에 적합합니다.
+
+ClickHouse Cloud가 쿼리를 처리하는 방식, 확장성과 장애 내성을 제공하는 방식에 대해서는 ["병렬 복제본"](/deployment-guides/parallel-replicas) 섹션을 참조하세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/03_2_shards_2_replicas.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/03_2_shards_2_replicas.md.hash
new file mode 100644
index 00000000000..f443cd69e3a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/03_2_shards_2_replicas.md.hash
@@ -0,0 +1 @@
+8096e434a80e3b83
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx
new file mode 100644
index 00000000000..23cbc81c7ad
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx
@@ -0,0 +1,6 @@
+:::tip ClickHouse Cloud 관리 간소화
+[ClickHouse Cloud](/cloud/overview)
+는 샤드와 복제본 관리와 관련된 운영 부담을 제거합니다. 이 플랫폼은 고가용성, 복제 및 스케일링 결정을 자동으로 처리합니다. 컴퓨팅과 스토리지는 분리되어 있으며 수요에 따라 스케일되며 수동 구성이나 지속적인 유지 관리가 필요하지 않습니다.
+
+[더 읽기](/manage/scaling)
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx.hash
new file mode 100644
index 00000000000..1232e360c99
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_cloud_tip.mdx.hash
@@ -0,0 +1 @@
+cdc766401c597c75
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx
new file mode 100644
index 00000000000..a51efb3217f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx
@@ -0,0 +1,14 @@
+- `config.d` 디렉토리는 ClickHouse 서버 구성 파일인 `config.xml`을 포함하고 있으며, 이 파일에서 각 ClickHouse 노드에 대한 사용자 정의 구성이 정의됩니다. 이 구성은 모든 ClickHouse 설치에 포함된 기본 `config.xml` ClickHouse 구성 파일과 결합됩니다.
+- `users.d` 디렉토리는 사용자 구성 파일인 `users.xml`을 포함하고 있으며, 이 파일에서 사용자에 대한 사용자 정의 구성이 정의됩니다. 이 구성은 모든 ClickHouse 설치에 포함된 기본 ClickHouse `users.xml` 구성 파일과 결합됩니다.
+
+:::tip 사용자 정의 구성 디렉토리
+자체 구성을 작성할 때, `/etc/clickhouse-server/config.xml` 및 `etc/clickhouse-server/users.xml`의 기본 구성을 직접 수정하기보다는 `config.d`와 `users.d` 디렉토리를 활용하는 것이 모범 사례입니다.
+
+이 줄은
+
+```xml
+
+```
+
+`config.d` 및 `users.d` 디렉토리에 정의된 구성 섹션이 기본 `config.xml` 및 `users.xml` 파일에서 정의된 기본 구성 섹션을 재정의하도록 보장합니다.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx.hash
new file mode 100644
index 00000000000..77c0cf9a957
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_config_explanation.mdx.hash
@@ -0,0 +1 @@
+2fd7898ae64e38f4
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx
new file mode 100644
index 00000000000..4371d7ef1d2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx
@@ -0,0 +1,8 @@
+:::note
+ClickHouse 서버와 ClickHouse Keeper를 동일한 서버에서 실행하는 것이 가능하지만,
+생산 환경에서 ClickHouse Keeper를 위해 *전용* 호스트를 사용하는 것을 강력히 권장합니다.
+이것은 이 예제에서 보여드릴 접근 방식입니다.
+
+Keeper 서버는 더 작을 수 있으며, 각 Keeper 서버에는 일반적으로 4GB RAM이면 충분합니다.
+단, ClickHouse 서버가 커질 때까지입니다.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx.hash
new file mode 100644
index 00000000000..c47b8aedbf2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_dedicated_keeper_servers.mdx.hash
@@ -0,0 +1 @@
+9be182b2037abc8c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx
new file mode 100644
index 00000000000..3ca305e142c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx
@@ -0,0 +1,57 @@
+ClickHouse 복제를 작동시키기 위해서는 ClickHouse Keeper 클러스터를 설정하고 구성해야 합니다. ClickHouse Keeper는 데이터 복제를 위한 조정 시스템을 제공하며, 또한 사용할 수 있는 Zookeeper의 대체 역할을 합니다. 그러나 ClickHouse Keeper를 사용하는 것이 권장되는데, 이는 더 나은 보증과 신뢰성을 제공하며 ZooKeeper보다 적은 자원을 사용하기 때문입니다. 고가용성을 위해서는 최소한 세 개의 ClickHouse Keeper 노드를 실행하는 것이 권장됩니다.
+
+:::note
+ClickHouse Keeper는 ClickHouse와 함께 클러스터의 어떤 노드에서도 실행될 수 있지만, 데이터베이스 클러스터와 독립적으로 ClickHouse Keeper 클러스터를 스케일링하고 관리할 수 있도록 전용 노드에서 실행하는 것이 권장됩니다.
+:::
+
+다음 명령어를 사용하여 각 ClickHouse Keeper 노드에 대한 `keeper_config.xml` 파일을 생성합니다. 명령어는 예제 폴더의 루트에서 실행해야 합니다:
+
+```bash
+for i in {01..03}; do
+ touch fs/volumes/clickhouse-keeper-${i}/etc/clickhouse-keeper/keeper_config.xml
+done
+```
+
+각 노드 디렉터리 `fs/volumes/clickhouse-keeper-{}/etc/clickhouse-keeper`에 생성된 빈 구성 파일을 수정합니다. 아래 강조된 줄은 각 노드에 맞게 변경해야 합니다:
+
+```xml title="/clickhouse-keeper/keeper_config.xml"
+
+
+ information
+ /var/log/clickhouse-keeper/clickhouse-keeper.log
+ /var/log/clickhouse-keeper/clickhouse-keeper.err.log
+ 1000M
+ 3
+
+ 0.0.0.0
+
+ 9181
+
+ 1
+ /var/lib/clickhouse/coordination/log
+ /var/lib/clickhouse/coordination/snapshots
+
+ 10000
+ 30000
+ information
+
+
+
+ 1
+ clickhouse-keeper-01
+ 9234
+
+
+ 2
+ clickhouse-keeper-02
+ 9234
+
+
+ 3
+ clickhouse-keeper-03
+ 9234
+
+
+
+
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx.hash
new file mode 100644
index 00000000000..dc49bf18895
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_config.mdx.hash
@@ -0,0 +1 @@
+aeb7b057bfc3f88a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx
new file mode 100644
index 00000000000..c89deb6f96d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx
@@ -0,0 +1,32 @@
+각 구성 파일은 다음과 같은 고유 구성을 포함합니다 (아래에 표시됨).
+사용되는 `server_id`는 해당 ClickHouse Keeper 노드에 대해 고유해야 하며, `` 섹션에 정의된 서버 ``와 일치해야 합니다.
+`tcp_port`는 ClickHouse Keeper의 _클라이언트_가 사용하는 포트입니다.
+
+```xml
+9181
+{id}
+```
+
+다음 섹션은 [raft 합의 알고리즘](https://en.wikipedia.org/wiki/Raft_(algorithm))에 참여하는 서버를 구성하는 데 사용됩니다:
+
+```xml
+
+
+ 1
+ clickhouse-keeper-01
+
+
+ 9234
+
+
+ 2
+ clickhouse-keeper-02
+ 9234
+
+
+ 3
+ clickhouse-keeper-03
+ 9234
+
+
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx.hash
new file mode 100644
index 00000000000..61728596e8c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_keeper_explanation.mdx.hash
@@ -0,0 +1 @@
+beab695596574d47
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx
new file mode 100644
index 00000000000..fbc751045c5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx
@@ -0,0 +1,17 @@
+외부 통신은 listen host 설정을 활성화하여 네트워크 인터페이스에 대해 활성화됩니다. 이렇게 하면 ClickHouse 서버 호스트가 다른 호스트에서 접근 가능하게 됩니다:
+
+```xml
+0.0.0.0
+```
+
+HTTP API의 포트는 `8123`으로 설정됩니다:
+
+```xml
+8123
+```
+
+clickhouse-client와 다른 네이티브 ClickHouse 도구, 그리고 clickhouse-server와 다른 clickhouse-servers 간의 ClickHouse의 네이티브 프로토콜을 통한 상호작용을 위한 TCP 포트는 `9000`으로 설정됩니다:
+
+```xml
+9000
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx.hash
new file mode 100644
index 00000000000..250edb979ee
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_listen_host.mdx.hash
@@ -0,0 +1 @@
+770167eec0c0cc9d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_server_parameter_table.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_server_parameter_table.mdx
new file mode 100644
index 00000000000..fa61c66553f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_server_parameter_table.mdx
@@ -0,0 +1,6 @@
+각 서버에 대해 다음 매개변수가 지정됩니다:
+
+| 매개변수 | 설명 | 기본 값 |
+|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|
+| `host` | 원격 서버의 주소입니다. 도메인 또는 IPv4 또는 IPv6 주소를 사용할 수 있습니다. 도메인을 지정하면 서버가 시작할 때 DNS 요청을 수행하며, 결과는 서버가 실행되는 동안 저장됩니다. DNS 요청이 실패하면 서버가 시작되지 않습니다. DNS 레코드를 변경하면 서버를 재시작해야 합니다. | - |
+| `port` | 메신저 활동을 위한 TCP 포트(`config`의 `tcp_port`, 일반적으로 9000으로 설정됨). `http_port`와 혼동하지 마십시오. | - |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_server_parameter_table.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_server_parameter_table.mdx.hash
new file mode 100644
index 00000000000..1c4e6ba6021
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_server_parameter_table.mdx.hash
@@ -0,0 +1 @@
+a3e320e842195437
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx
new file mode 100644
index 00000000000..2388b732735
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx
@@ -0,0 +1,67 @@
+`mntr` 명령은 ClickHouse Keeper가 실행 중인지 확인하고 세 개의 Keeper 노드 간의 관계에 대한 상태 정보를 얻는데 일반적으로 사용됩니다. 이 예제에서 사용된 구성에서는 세 개의 노드가 함께 작업하고 있습니다. 노드는 리더를 선출하고 나머지 노드는 팔로워가 됩니다.
+
+`mntr` 명령은 성능 관련 정보와 특정 노드가 팔로워인지 리더인지를 제공합니다.
+
+:::tip
+`mntr` 명령을 Keeper에 보내기 위해 `netcat`을 설치해야 할 수도 있습니다. 다운로드 정보는 [nmap.org](https://nmap.org/ncat/) 페이지를 참조하시기 바랍니다.
+:::
+
+`clickhouse-keeper-01`, `clickhouse-keeper-02`, 및 `clickhouse-keeper-03`에서 셸을 통해 아래 명령을 실행하여 각 Keeper 노드의 상태를 확인하십시오. `clickhouse-keeper-01`에 대한 명령은 아래와 같이 표시됩니다:
+
+```bash
+docker exec -it clickhouse-keeper-01 /bin/sh -c 'echo mntr | nc 127.0.0.1 9181'
+```
+
+아래 응답은 팔로워 노드의 예시 응답을 보여줍니다:
+
+```response title="Response"
+zk_version v23.3.1.2823-testing-46e85357ce2da2a99f56ee83a079e892d7ec3726
+zk_avg_latency 0
+zk_max_latency 0
+zk_min_latency 0
+zk_packets_received 0
+zk_packets_sent 0
+zk_num_alive_connections 0
+zk_outstanding_requests 0
+
+# highlight-next-line
+zk_server_state follower
+zk_znode_count 6
+zk_watch_count 0
+zk_ephemerals_count 0
+zk_approximate_data_size 1271
+zk_key_arena_size 4096
+zk_latest_snapshot_size 0
+zk_open_file_descriptor_count 46
+zk_max_file_descriptor_count 18446744073709551615
+```
+
+아래 응답은 리더 노드의 예시 응답을 보여줍니다:
+
+```response title="Response"
+zk_version v23.3.1.2823-testing-46e85357ce2da2a99f56ee83a079e892d7ec3726
+zk_avg_latency 0
+zk_max_latency 0
+zk_min_latency 0
+zk_packets_received 0
+zk_packets_sent 0
+zk_num_alive_connections 0
+zk_outstanding_requests 0
+
+# highlight-next-line
+zk_server_state leader
+zk_znode_count 6
+zk_watch_count 0
+zk_ephemerals_count 0
+zk_approximate_data_size 1271
+zk_key_arena_size 4096
+zk_latest_snapshot_size 0
+zk_open_file_descriptor_count 48
+zk_max_file_descriptor_count 18446744073709551615
+
+# highlight-start
+zk_followers 2
+zk_synced_followers 2
+
+# highlight-end
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx.hash
new file mode 100644
index 00000000000..5a079f1f926
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_verify_keeper_using_mntr.mdx.hash
@@ -0,0 +1 @@
+ab3011bd8978f500
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx
new file mode 100644
index 00000000000..8e6eddaab4e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx
@@ -0,0 +1,4 @@
+
+:::tip 예제 파일
+다음 단계에서는 처음부터 클러스터를 설정하는 방법을 안내합니다. 이러한 단계를 건너뛰고 클러스터 실행으로 바로 이동하고 싶다면, 예제 파일을 예제 리포지토리의 ['docker-compose-recipes' 디렉토리](https://github.com/ClickHouse/examples/tree/main/docker-compose-recipes/recipes)에서 다운로드할 수 있습니다.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx.hash
new file mode 100644
index 00000000000..b98831f1e5d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/replication-sharding-examples/_snippets/_working_example.mdx.hash
@@ -0,0 +1 @@
+aca8b7e0f2b397dd
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/terminology.md b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/terminology.md
new file mode 100644
index 00000000000..3c3a6dfa827
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/terminology.md
@@ -0,0 +1,35 @@
+---
+'slug': '/architecture/introduction'
+'sidebar_label': '소개'
+'title': '소개'
+'sidebar_position': 1
+'description': 'ClickHouse Support and Services 조직에서 ClickHouse 사용자에게 제공한 조언에 기반한
+ 배포 예제가 포함된 페이지'
+'doc_type': 'guide'
+'keywords':
+- 'deployment'
+- 'architecture'
+- 'replication'
+- 'sharding'
+- 'cluster setup'
+---
+
+import ReplicationShardingTerminology from '@site/i18n/ko/docusaurus-plugin-content-docs/current/_snippets/_replication-sharding-terminology.md';
+
+이 섹션의 배포 예제는 ClickHouse 지원 및 서비스 조직에서 ClickHouse 사용자에게 제공한 조언을 기반으로 합니다. 이들은 실제 작동하는 예제로, 여러분이 이를 시도해보고 필요에 따라 조정하는 것을 권장합니다. 이곳에서 여러분의 요구 사항에 정확히 맞는 예제를 찾을 수 있을 것입니다.
+
+우리는 [예제 저장소](https://github.com/ClickHouse/examples/tree/main/docker-compose-recipes/recipes)에서 다양한 토폴로지의 '레시피'를 제공하며, 이 섹션의 예제가 여러분의 요구에 정확히 맞지 않는 경우 이들을 살펴보는 것을 추천합니다.
+
+
+
+
+
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/terminology.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/terminology.md.hash
new file mode 100644
index 00000000000..a409f241415
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-guides/terminology.md.hash
@@ -0,0 +1 @@
+867aebdedb9b9390
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-modes.md b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-modes.md
new file mode 100644
index 00000000000..169b8e50fbc
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-modes.md
@@ -0,0 +1,79 @@
+---
+'slug': '/deployment-modes'
+'sidebar_label': '배포 모드'
+'description': 'ClickHouse는 모두 동일한 강력한 DATABASE 엔진을 사용하는 네 가지 배포 옵션을 제공합니다. 단지 특정
+ 요구에 맞게 다르게 패키징되어 있습니다.'
+'title': '배포 모드'
+'keywords':
+- 'Deployment Modes'
+- 'chDB'
+'show_related_blogs': true
+'doc_type': 'guide'
+---
+
+import chServer from '@site/static/images/deployment-modes/ch-server.png';
+import chCloud from '@site/static/images/deployment-modes/ch-cloud.png';
+import chLocal from '@site/static/images/deployment-modes/ch-local.png';
+import chDB from '@site/static/images/deployment-modes/chdb.png';
+import Image from '@theme/IdealImage';
+
+ClickHouse는 필요에 따라 여러 가지 방식으로 배포할 수 있는 다목적 데이터베이스 시스템입니다. 핵심적으로 모든 배포 옵션은 **강력한 ClickHouse 데이터베이스 엔진을 사용하며** 차별화되는 점은 어떻게 상호작용하고 어디에서 실행되는가입니다.
+
+대규모 분석을 실시하는 경우, 로컬 데이터 분석을 수행하는 경우 또는 애플리케이션을 구축하는 경우, 사용 사례에 맞춤화된 배포 옵션이 준비되어 있습니다. 기본 엔진의 일관성 덕분에 모든 배포 모드에서 동일한 높은 성능과 SQL 호환성을 유지할 수 있습니다. 이 가이드는 ClickHouse를 배포하고 사용하는 주요 네 가지 방법을 탐색합니다:
+
+* 전통적인 클라이언트/서버 배포를 위한 ClickHouse Server
+* 완전 관리형 데이터베이스 운영을 위한 ClickHouse Cloud
+* 명령줄 데이터 처리용 clickhouse-local
+* 애플리케이션에 ClickHouse를 직접 내장하는 chDB
+
+각 배포 모드는 자체 강점과 이상적인 사용 사례를 갖고 있으며, 아래에서 자세히 살펴보겠습니다.
+
+
+
+## ClickHouse Server {#clickhouse-server}
+
+ClickHouse Server는 전통적인 클라이언트/서버 아키텍처를 나타내며 생산 배포에 적합합니다. 이 배포 모드는 ClickHouse가 자랑하는 높은 처리량과 낮은 지연 시간 쿼리 기능을 갖춘 전체 OLAP 데이터베이스 기능을 제공합니다.
+
+
+
+
+
+배포 유연성 측면에서 ClickHouse Server는 개발 또는 테스트를 위해 로컬 머신에 설치할 수 있으며, AWS, GCP 또는 Azure와 같은 주요 클라우드 제공업체에 배포하거나 자체 온프레미스 하드웨어에 설정할 수 있습니다. 대규모 작업의 경우, 증가된 부하를 처리하고 높은 가용성을 제공하기 위해 분산 클러스터로 구성할 수 있습니다.
+
+이 배포 모드는 신뢰성, 성능 및 전체 기능 접근이 중요한 생산 환경에 가장 적합한 선택입니다.
+
+## ClickHouse Cloud {#clickhouse-cloud}
+
+[ClickHouse Cloud](/cloud/overview)는 자체 배포를 운영할 필요 없이 운영 오버헤드를 제거한 완전 관리형 ClickHouse 버전입니다. 모든 핵심 기능을 유지하면서 개발 및 운영을 간소화하기 위한 추가 기능으로 사용자 경험을 향상시킵니다.
+
+
+
+ClickHouse Cloud의 주요 장점 중 하나는 통합 도구입니다. [ClickPipes](/getting-started/quick-start/cloud/#clickpipes)는 복잡한 ETL 파이프라인을 관리하지 않고도 다양한 출처에서 데이터를 쉽게 연결하고 스트리밍할 수 있는 강력한 데이터 수집 프레임워크를 제공합니다. 이 플랫폼은 전용 [쿼리 API](/cloud/get-started/query-endpoints)를 제공하여 애플리케이션을 간단하게 구축할 수 있게 해줍니다.
+
+ClickHouse Cloud의 SQL 콘솔에는 쿼리를 인터랙티브한 시각화로 변환할 수 있는 강력한 [대시보드](/cloud/manage/dashboards) 기능이 포함되어 있습니다. 저장된 쿼리로 작성된 대시보드를 만들고 공유할 수 있으며, 쿼리 매개변수를 통해 인터랙티브한 요소를 추가할 수 있습니다. 이러한 대시보드는 글로벌 필터를 사용하여 동적으로 만들 수 있어 사용자가 사용자 정의 보기를 통해 데이터를 탐색할 수 있습니다. 다만, 시각화를 보기 위해서는 사용자가 기본적으로 저장된 쿼리에 대해 최소한 읽기 액세스 권한이 필요합니다.
+
+모니터링 및 최적화를 위해 ClickHouse Cloud에는 내장된 차트와 [쿼리 인사이트](/cloud/get-started/query-insights)가 포함되어 있습니다. 이러한 도구는 클러스터 성능에 대한 깊은 가시성을 제공하여 쿼리 패턴, 자원 사용 및 잠재적인 최적화 기회를 이해하는 데 도움을 줍니다. 이러한 관찰 가능성의 수준은 인프라 관리에 자원을 할당하지 않고도 고성능 분석 작업을 유지해야 하는 팀에게 특히 유용합니다.
+
+서비스의 관리된 성격 덕분에 업데이트, 백업, 확장 또는 보안 패치에 대해 걱정할 필요가 없습니다. 이 모든 작업은 자동으로 처리됩니다. 따라서 데이터와 애플리케이션에 집중하고 싶은 조직에 적합한 선택입니다.
+
+## clickhouse-local {#clickhouse-local}
+
+[clickhouse-local](/operations/utilities/clickhouse-local)은 스탠드얼론 실행 파일로 ClickHouse의 전체 기능을 제공하는 강력한 명령줄 도구입니다. 본질적으로 ClickHouse Server와 동일한 데이터베이스이지만, 서버 인스턴스를 실행하지 않고도 명령줄에서 ClickHouse의 모든 기능을 직접 활용할 수 있도록 패키징되어 있습니다.
+
+
+
+이 도구는 특히 로컬 파일 또는 클라우드 스토리지 서비스에 저장된 데이터와 작업할 때 즉석 데이터 분석에 뛰어납니다. ClickHouse의 SQL 방언을 사용하여 다양한 형식(CSV, JSON, Parquet 등)의 파일을 직접 쿼리할 수 있어 빠른 데이터 탐색이나 일회성 분석 작업에 대한 훌륭한 선택이 됩니다.
+
+clickhouse-local은 ClickHouse의 모든 기능을 포함하므로 데이터 변환, 형식 변환 또는 일반적으로 ClickHouse Server로 수행하는 기타 데이터베이스 작업에 사용할 수 있습니다. 주로 임시 작업에 사용되지만 필요할 경우 ClickHouse Server와 동일한 저장 엔진을 사용하여 데이터를 지속할 수도 있습니다.
+
+원격 테이블 함수와 로컬 파일 시스템 액세스의 조합 덕분에 clickhouse-local은 ClickHouse Server와 로컬 머신의 파일 간에 데이터를 조인해야 할 때 특히 유용합니다. 이는 민감하거나 임시적인 로컬 데이터를 서버에 업로드하지 않으려는 경우에 매우 가치가 있습니다.
+
+## chDB {#chdb}
+
+[chDB](/chdb)는 프로세스 내 데이터베이스 엔진으로 ClickHouse를 내장한 것으로, 주요 구현은 Python이며 Go, Rust, NodeJS, Bun에서도 사용할 수 있습니다. 이 배포 옵션은 ClickHouse의 강력한 OLAP 기능을 애플리케이션의 프로세스 내로 직접 가져오므로 별도의 데이터베이스 설치가 필요하지 않습니다.
+
+
+
+chDB는 애플리케이션의 생태계와 원활하게 통합됩니다. 예를 들어 Python에서는 Pandas와 Arrow와 같은 일반 데이터 과학 도구와 효율적으로 작업할 수 있도록 최적화되어 있으며, Python memoryview를 통해 데이터 복사 오버헤드를 최소화합니다. 이는 ClickHouse의 쿼리 성능을 기존 작업 흐름 내에서 활용하고자 하는 데이터 과학자와 분석가에게 특히 유용합니다.
+
+chDB는 clickhouse-local로 생성된 데이터베이스에 연결할 수도 있어 데이터 작업 방식에 유연성을 제공합니다. 이는 로컬 개발, Python에서의 데이터 탐색 및 보다 영구적인 저장 솔루션 간에 데이터 접근 패턴을 변경하지 않고 원활하게 전환할 수 있음을 의미합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/deployment-modes.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-modes.md.hash
new file mode 100644
index 00000000000..08ee86ad8b7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/deployment-modes.md.hash
@@ -0,0 +1 @@
+b8c93ee6366e8b32
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/_category_.yml b/i18n/ko/docusaurus-plugin-content-docs/current/development/_category_.yml
new file mode 100644
index 00000000000..be88c4014c7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/_category_.yml
@@ -0,0 +1,8 @@
+position: 101
+label: 'Building ClickHouse'
+collapsible: true
+collapsed: true
+link:
+ type: generated-index
+ title: Building ClickHouse
+ slug: /development
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/architecture.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/architecture.md
new file mode 100644
index 00000000000..3d63e36f83e
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/architecture.md
@@ -0,0 +1,152 @@
+---
+'description': 'ClickHouse 아키텍처와 그 컬럼형 디자인에 대한 포괄적인 개요'
+'sidebar_label': '아키텍처 개요'
+'sidebar_position': 50
+'slug': '/development/architecture'
+'title': '아키텍처 개요'
+'doc_type': 'reference'
+---
+
+
+# 아키텍처 개요
+
+ClickHouse는 진정한 컬럼 지향 DBMS입니다. 데이터는 컬럼별로 저장되며, 배열(컬럼 벡터 또는 청크)의 실행 중에 처리됩니다. 가능한 경우, 작업은 개별 값이 아닌 배열에서 파생되어 수행됩니다. 이를 "벡터화된 쿼리 실행"이라고 하며, 실제 데이터 처리의 비용을 낮추는 데 도움을 줍니다.
+
+이 아이디어는 새롭지 않습니다. 이는 `APL`(A programming language, 1957)과 그 후손인 `A +`(APL 방언), `J`(1990), `K`(1993) 및 `Q`(Kx Systems의 프로그래밍 언어, 2003)로 거슬러 올라갑니다. 배열 프로그래밍은 과학 데이터 처리에 사용됩니다. 관계형 데이터베이스에서도 이 아이디어는 낯선 것이 아닙니다. 예를 들어, `VectorWise` 시스템(Actian Corporation의 Actian Vector Analytic Database라고도 알려짐)에서 사용됩니다.
+
+쿼리 처리를 가속화하는 두 가지 접근 방식이 있습니다: 벡터화된 쿼리 실행과 런타임 코드 생성. 후자는 모든 간접 참조와 동적 배치를 제거합니다. 이 두 접근 방식 중 어느 하나가 다른 것보다 우수하다고 할 수는 없습니다. 런타임 코드 생성은 많은 작업을 융합하여 CPU 실행 장치와 파이프라인을 완전히 활용할 수 있을 때 더 나은 경우가 있습니다. 벡터화된 쿼리 실행은 일시적인 벡터가 캐시에 쓰여지고 다시 읽혀야 하므로 덜 실용적일 수 있습니다. 만약 임시 데이터가 L2 캐시에 맞지 않으면 문제가 발생합니다. 그러나 벡터화된 쿼리 실행은 CPU의 SIMD 기능을 더 쉽게 활용합니다. 우리 친구들이 쓴 [연구 논문](http://15721.courses.cs.cmu.edu/spring2016/papers/p5-sompolski.pdf)은 두 접근 방식을 결합하는 것이 더 낫다는 것을 보여줍니다. ClickHouse는 벡터화된 쿼리 실행을 사용하며 런타임 코드 생성을 위한 초기 지원이 제한적입니다.
+
+## 컬럼 {#columns}
+
+`IColumn` 인터페이스는 메모리 내 컬럼(사실상 컬럼 청크)을 나타내는 데 사용됩니다. 이 인터페이스는 다양한 관계형 연산자의 구현을 위한 도우미 메서드를 제공합니다. 거의 모든 작업은 불변입니다: 원래 컬럼을 수정하는 것이 아니라 수정된 새로운 컬럼을 생성합니다. 예를 들어 `IColumn :: filter` 메서드는 필터 바이트 마스크를 수용합니다. 이는 `WHERE` 및 `HAVING` 관계형 연산자에 사용됩니다. 추가 예로는 `ORDER BY`를 지원하기 위한 `IColumn :: permute` 메서드와 `LIMIT`을 지원하기 위한 `IColumn :: cut` 메서드가 있습니다.
+
+다양한 `IColumn` 구현(`ColumnUInt8`, `ColumnString` 등)은 컬럼의 메모리 레이아웃을 담당합니다. 메모리 레이아웃은 보통 연속 배열입니다. 정수형 타입의 컬럼에 대해서는 `std :: vector`와 같은 하나의 연속 배열입니다. `String` 및 `Array` 컬럼의 경우, 모든 배열 요소를 연속적으로 배치한 하나의 벡터와 각 배열의 시작에 대한 오프셋을 위한 두 번째 벡터로 구성됩니다. 또한 단 하나의 값을 메모리에 저장하지만 컬럼처럼 보이는 `ColumnConst`도 있습니다.
+
+## 필드 {#field}
+
+그럼에도 불구하고 개별 값으로 작업하는 것도 가능합니다. 개별 값을 나타내기 위해 `Field`가 사용됩니다. `Field`는 `UInt64`, `Int64`, `Float64`, `String` 및 `Array`의 차별화된 합집합입니다. `IColumn`은 n번째 값을 `Field`로 가져오기 위한 `operator []` 메서드와 `Field`를 컬럼 끝에 추가하기 위한 `insert` 메서드를 가지고 있습니다. 이러한 메서드는 개별 값을 나타내는 임시 `Field` 객체를 처리해야 하므로 매우 효율적이지 않습니다. 더 효율적인 방법으로는 `insertFrom`, `insertRangeFrom` 등이 있습니다.
+
+`Field`는 특정 데이터 타입에 대한 충분한 정보를 저장하지 않습니다. 예를 들어, `UInt8`, `UInt16`, `UInt32`, `UInt64`는 모두 `Field`에서 `UInt64`로 표현됩니다.
+
+## 누수 추상화 {#leaky-abstractions}
+
+`IColumn`은 데이터에 대한 공통적인 관계형 변환을 위한 메서드를 가지고 있지만, 모든 요구를 충족하지는 않습니다. 예를 들어, `ColumnUInt64`는 두 컬럼의 합을 계산하는 메서드를 가지지 않으며, `ColumnString`은 부분 문자열 검색을 실행하는 메서드를 가지지 않습니다. 이러한 수많은 루틴은 `IColumn` 외부에서 구현됩니다.
+
+컬럼에 대한 다양한 함수는 `IColumn` 메서드를 사용하여 `Field` 값을 추출하거나, 특정 `IColumn` 구현에서 데이터를 내부 메모리 레이아웃을 알고 전문화된 방법으로 구현할 수 있습니다. 이는 특정 `IColumn` 타입으로 캐스팅된 함수에 의해 구현되며, 내부 표현과 직접적으로 상호작용합니다. 예를 들어 `ColumnUInt64`에는 내부 배열에 대한 참조를 반환하는 `getData` 메서드가 있으며, 이후 별도의 루틴이 그 배열을 직접 읽거나 채웁니다. 우리는 다양한 루틴의 효율적인 특화를 허용하는 "누수 추상화"가 있습니다.
+
+## 데이터 타입 {#data_types}
+
+`IDataType`는 직렬화 및 역직렬화에 책임이 있습니다: 이진 또는 텍스트 형태로 컬럼 청크 또는 개별 값을 읽고 쓰기 위해. `IDataType`는 테이블의 데이터 타입과 직접적으로 대응합니다. 예를 들어, `DataTypeUInt32`, `DataTypeDateTime`, `DataTypeString` 등이 있습니다.
+
+`IDataType`와 `IColumn`은 서로 느슨하게 연관되어 있습니다. 서로 다른 데이터 타입은 동일한 `IColumn` 구현에 의해 메모리에서 표현될 수 있습니다. 예를 들어 `DataTypeUInt32`와 `DataTypeDateTime`은 모두 `ColumnUInt32` 또는 `ColumnConstUInt32`로 표현됩니다. 게다가, 동일한 데이터 타입은 서로 다른 `IColumn` 구현으로 표현될 수 있습니다. 예를 들어 `DataTypeUInt8`는 `ColumnUInt8` 또는 `ColumnConstUInt8`로 표현될 수 있습니다.
+
+`IDataType`는 메타데이터만 저장합니다. 예를 들어 `DataTypeUInt8`는 아무것도 저장하지 않으며(가상 포인터 `vptr` 제외), `DataTypeFixedString`은 고정 크기 문자열의 크기인 `N`만 저장합니다.
+
+`IDataType`는 다양한 데이터 형식에 대한 도우미 메서드를 가지고 있습니다. 예를 들어, 쿼팅이 가능한 값 직렬화, JSON 형식으로 값 직렬화 및 XML 형식의 일부로 값 직렬화하는 메서드가 있습니다. 데이터 형식과의 직접적인 대응은 없습니다. 예를 들어, 서로 다른 데이터 형식인 `Pretty`와 `TabSeparated`는 `IDataType` 인터페이스의 `serializeTextEscaped` 도우미 메서드를 사용할 수 있습니다.
+
+## 블록 {#block}
+
+`Block`은 메모리 내 테이블의 부분 집합(청크)을 나타내는 컨테이너입니다. 이는 단순히 `(IColumn, IDataType, 컬럼 이름)`의 세트입니다. 쿼리 실행 중 데이터는 `Block`을 통해 처리됩니다. `Block`이 있으면, 데이터가 있으며(`IColumn` 객체에서), 해당 컬럼을 처리하는 방법을 나타내는 타입 정보가 있습니다(`IDataType` 내) 및 우리가 가진 컬럼 이름이 있습니다. 이는 테이블의 원래 컬럼 이름일 수도 있고, 계산의 임시 결과를 얻기 위해 할당된 인위적인 이름일 수도 있습니다.
+
+우리가 블록 내의 컬럼에 대한 함수 일부를 계산할 때, 그 결과와 함께 블록에 다른 컬럼을 추가하며, 함수의 인수를 위한 컬럼은 수정되지 않기 때문에 작업은 불변적입니다. 나중에 불필요한 컬럼은 블록에서 제거될 수 있지만 수정되지는 않습니다. 이는 공통 하위 표현식을 제거하는 데 편리합니다.
+
+블록은 처리된 데이터 청크마다 생성됩니다. 동일한 계산 유형에 대해 다른 블록에 대한 컬럼 이름 및 타입은 동일하게 유지되며, 단지 컬럼 데이터만 변경됩니다. 블록의 데이터는 블록 헤더와 분리하는 것이 좋습니다. 작은 블록 크기는 shared_ptrs 및 컬럼 이름을 복사하기 위해 임시 문자열의 높은 오버헤드를 발생시킵니다.
+
+## 프로세서 {#processors}
+
+[https://github.com/ClickHouse/ClickHouse/blob/master/src/Processors/IProcessor.h](https://github.com/ClickHouse/ClickHouse/blob/master/src/Processors/IProcessor.h)에서 설명을 참조하십시오.
+
+## 형식 {#formats}
+
+데이터 형식은 프로세서로 구현됩니다.
+
+## I/O {#io}
+
+바이트 지향 입력/출력을 위해 `ReadBuffer` 및 `WriteBuffer` 추상 클래스가 있습니다. 이들은 C++ `iostream` 대신 사용됩니다. 걱정 마세요: 모든 성숙한 C++ 프로젝트는 좋은 이유로 `iostream`이 아닌 다른 무언가를 사용하고 있습니다.
+
+`ReadBuffer` 및 `WriteBuffer`는 연속 버퍼와 그 버퍼 내의 위치를 가리키는 커서입니다. 구현은 버퍼에 대한 메모리를 소유하거나 소유하지 않을 수 있습니다. 다음 데이터를 버퍼로 채우거나(`ReadBuffer`의 경우) 버퍼를 어딘가로 비우는(WriteBuffer의 경우) 가상 메서드가 있습니다. 이 가상 메서드는 거의 호출되지 않습니다.
+
+`ReadBuffer`/`WriteBuffer`의 구현은 파일, 파일 디스크립터 및 네트워크 소켓과 작업하는 데 사용되며, 압축을 구현하기 위해(`CompressedWriteBuffer`는 다른 WriteBuffer로 초기화되며 데이터 작성을 수행하기 전에 압축을 수행함), 기타 목적을 위해 사용됩니다 – `ConcatReadBuffer`, `LimitReadBuffer`, `HashingWriteBuffer`라는 이름은 그 자체로 충분합니다.
+
+Read/WriteBuffers는 바이트만 처리합니다. 입력/출력을 포맷팅하는 데 도움이 되는 `ReadHelpers` 및 `WriteHelpers` 헤더 파일의 함수가 있습니다. 예를 들어, 10진수 형식으로 숫자를 작성하는 도우미가 있습니다.
+
+이제 `JSON` 형식으로 결과 집합을 stdout에 작성하려고 할 때 발생하는 일을 살펴보겠습니다.
+당신은 풀링 `QueryPipeline`에서 가져올 준비가 된 결과 집합이 있습니다.
+먼저, `WriteBufferFromFileDescriptor(STDOUT_FILENO)`를 생성하여 stdout에 바이트를 작성합니다.
+다음으로, 그 `WriteBuffer`로 초기화된 `JSONRowOutputFormat`에 쿼리 파이프라인의 결과를 연결하여 JSON 형식으로 stdout에 행을 작성합니다.
+이는 `complete` 메서드를 통해 수행될 수 있으며, 이를 통해 풀링 `QueryPipeline`이 완료된 `QueryPipeline`으로 전환됩니다.
+내부적으로 `JSONRowOutputFormat`는 여러 JSON 구분자를 작성하고 `IDataType::serializeTextJSON` 메서드를 `IColumn`에 대한 참조 및 행 번호를 인수로 호출합니다. 결과적으로, `IDataType::serializeTextJSON`은 `WriteHelpers.h`의 메서드를 호출합니다: 예를 들어 숫자 유형에 대해서는 `writeText`, `DataTypeString`에 대해서는 `writeJSONString`을 호출합니다.
+
+## 테이블 {#tables}
+
+`IStorage` 인터페이스는 테이블을 나타냅니다. 해당 인터페이스의 다른 구현은 다양한 테이블 엔진입니다. 예를 들어 `StorageMergeTree`, `StorageMemory` 등이 있습니다. 이러한 클래스의 인스턴스는 단순히 테이블입니다.
+
+`IStorage`의 핵심 메서드는 `read` 및 `write`이며, `alter`, `rename`, `drop` 등의 메서드도 있습니다. `read` 메서드는 다음 인수를 수용합니다: 테이블에서 읽을 컬럼 집합, 고려할 `AST` 쿼리 및 원하는 스트림 수. 이는 `Pipe`를 반환합니다.
+
+대부분의 경우, 읽기 메서드는 지정된 컬럼을 테이블에서 읽는 것만 책임지며, 다른 데이터 처리는 더 이상 처리하지 않습니다.
+모든 후속 데이터 처리는 파이프라인의 다른 부분에서 처리됩니다.
+
+하지만 주목할 만한 예외가 있습니다:
+
+- AST 쿼리는 `read` 메서드에 전달되며, 테이블 엔진은 이를 사용하여 인덱스 사용을 유도하고 테이블에서 적은 데이터를 읽을 수 있습니다.
+- 때때로 테이블 엔진은 특정 단계까지 데이터를 처리할 수 있습니다. 예를 들어 `StorageDistributed`는 원격 서버에 쿼리를 보내고, 그 서버들로부터 받은 데이터를 병합할 수 있는 단계까지 데이터 처리를 요청한 후, 그 전처리된 데이터를 반환할 수 있습니다. 쿼리 해석기는 이후 데이터 처리를 완료합니다.
+
+테이블의 `read` 메서드는 여러 `Processors`로 구성된 `Pipe`를 반환할 수 있습니다. 이러한 `Processors`는 테이블에서 병렬로 읽을 수 있습니다.
+이후 다양한 다른 변환(예: 표현식 평가 또는 필터링)과 연결할 수 있으며, 이들은 독립적으로 계산될 수 있습니다.
+그리고 그 위에 `QueryPipeline`을 만들어 실행할 수 있습니다.
+
+또한 `TableFunction`이 있습니다. 이는 쿼리의 `FROM` 절에서 사용하기 위해 임시 `IStorage` 객체를 반환하는 함수입니다.
+
+자신의 테이블 엔진을 구현하는 방법을 빠르게 이해하려면, `StorageMemory`나 `StorageTinyLog`와 같은 간단한 것을 참고하십시오.
+
+> `read` 메서드의 결과로 `IStorage`는 `QueryProcessingStage`를 반환합니다 – 저장소 내에서 이미 계산된 쿼리 부분에 대한 정보입니다.
+
+## 파서 {#parsers}
+
+수작업으로 작성된 재귀적 하강 파서는 쿼리를 분석합니다. 예를 들어, `ParserSelectQuery`는 단순히 쿼리의 다양한 부분에 대한 기본 파서를 재귀적으로 호출합니다. 파서는 `AST`를 생성합니다. `AST`는 `IAST`의 인스턴스인 노드를 통해 표현됩니다.
+
+> 역사적인 이유로 파서 생성기는 사용되지 않습니다.
+
+## 인터프리터 {#interpreters}
+
+인터프리터는 AST로부터 쿼리 실행 파이프라인을 생성하는 역할을 합니다. `InterpreterExistsQuery`, `InterpreterDropQuery`와 같은 간단한 인터프리터와 더 정교한 `InterpreterSelectQuery`가 있습니다.
+
+쿼리 실행 파이프라인은 청크(특정 타입의 컬럼 집합)를 소비하고 생성할 수 있는 프로세서의 조합입니다.
+프로세서는 포트를 통해 통신하며, 여러 입력 포트와 여러 출력 포트를 가질 수 있습니다.
+더 자세한 설명은 [src/Processors/IProcessor.h](https://github.com/ClickHouse/ClickHouse/blob/master/src/Processors/IProcessor.h)에서 확인할 수 있습니다.
+
+예를 들어 `SELECT` 쿼리를 해석한 결과는 결과 집합을 읽기 위한 특별한 출력 포트를 가진 "풀링" `QueryPipeline`입니다.
+`INSERT` 쿼리의 결과는 데이터를 삽입하기 위해 작성하는 입력 포트를 가진 "푸시" `QueryPipeline`입니다.
+그리고 `INSERT SELECT` 쿼리를 해석한 결과는 입력 및 출력이 없는 "완료된" `QueryPipeline`입니다.
+
+## Merge tree {#merge-tree}
+
+`MergeTree`는 기본 키로 인덱싱을 지원하는 스토리지 엔진 패밀리입니다. 기본 키는 임의의 컬럼 또는 표현의 튜플일 수 있습니다. `MergeTree` 테이블의 데이터는 "파트"에 저장됩니다. 각 파트는 기본 키 순서로 데이터를 저장하며, 따라서 데이터는 기본 키 튜플에 따라 사전식으로 정렬됩니다. 모든 테이블 컬럼은 이러한 파트의 별도의 `column.bin` 파일에 저장됩니다. 파일은 압축된 블록으로 구성됩니다. 각 블록은 평균 값 크기에 따라 보통 64 KB에서 1 MB의 압축되지 않은 데이터로 구성됩니다. 블록은 컬럼 값이 서로 붙어 있는 상태로 배치됩니다. 각각의 컬럼에 대해 컬럼 값은 동일한 순서로 존재하므로 (기본 키가 순서를 정의), 여러 컬럼을 반복하면 해당 행에 대한 값을 얻을 수 있습니다.
+
+기본 키 자체는 "스파스"입니다. 모든 단일 행을 다루는 것이 아니라 일부 데이터 범위만 다룹니다. 별도의 `primary.idx` 파일에는 N 번째 행마다 기본 키의 값이 저장되어 있으며, 여기서 N은 `index_granularity`로 호출됩니다 (보통, N = 8192). 또한 각 컬럼에 대해 `column.mrk` 파일이 있으며, 여기에는 데이터 파일의 각 N 번째 행에 대한 오프셋인 "마크"가 포함됩니다. 각 마크는 압축 블록의 시작으로의 파일 내 오프셋과 압축 해제된 블록의 데이터 시작으로의 오프셋을 포함하는 쌍입니다. 보통, 압축 블록은 마크에 의해 정렬되며, 압축 해제된 블록의 오프셋은 0입니다. `primary.idx`의 데이터는 항상 메모리에 존재하며, `column.mrk` 파일의 데이터는 캐시됩니다.
+
+`MergeTree`에서 파트의 내용을 읽으려고 할 때, 우리는 `primary.idx` 데이터를 보고 요청된 데이터가 포함될 수 있는 범위를 찾은 다음 `column.mrk` 데이터를 살펴보며 해당 범위를 읽기 시작할 위치의 오프셋을 계산합니다. 스파스성 때문에 불필요한 데이터가 읽힐 수 있습니다. ClickHouse는 단순한 포인트 쿼리에 높은 부하가 적합하지 않으며, 각 키마다 `index_granularity` 행의 전체 범위를 읽어야 하고 각 컬럼마다 전체 압축 블록을 압축 해제해야 합니다. 우리는 인덱스에 대해 눈에 띄는 메모리 소모 없이 단일 서버당 수조 개의 행을 유지할 수 있어야 하므로 인덱스를 스파스로 만들었습니다. 또한, 기본 키가 스파스하기 때문에 유일하지 않습니다: INSERT 시점에 테이블에서 키의 존재를 확인할 수 없습니다. 테이블에 동일한 키를 가진 여러 행이 있을 수 있습니다.
+
+`MergeTree`에 데이터 묶음을 `INSERT`하면, 해당 묶음은 기본 키 순서에 따라 정렬되어 새로운 파트를 형성합니다. 주기적으로 일부 파트를 선택하여 단일 정렬된 파트로 병합하는 백그라운드 스레드가 있습니다. 그래서 이것을 `MergeTree`라고 부릅니다. 물론 병합은 "쓰기 증폭"으로 이어집니다. 모든 파트는 불변입니다: 생성되거나 삭제될 뿐 수정되지 않습니다. SELECT가 실행될 때, 테이블의 스냅샷(파트 집합)을 보유합니다. 병합 후, 실패 복구를 쉽게 하기 위해 일정 시간 동안 이전 파트를 유지하므로, 병합된 파트가 손상된 것으로 보일 경우 원본 파트로 교체할 수 있습니다.
+
+`MergeTree`는 LSM 트리가 아닙니다. 왜냐하면 MEMTABLE과 LOG가 포함되어 있지 않기 때문입니다: 삽입된 데이터는 파일 시스템에 직접 기록됩니다. 이 동작 때문에 MergeTree는 배치로 데이터를 삽입하는 데 훨씬 더 적합합니다. 따라서 소량의 행을 자주 삽입하는 것은 MergeTree에 이상적이지 않습니다. 예를 들어, 초당 몇 개의 행 삽입은 괜찮지만, 초당 1000번 하는 것은 MergeTree에 최적이 아닙니다. 그러나 이 제한을 극복하기 위해 소량 삽입을 위한 비동기 삽입 모드가 있습니다. 우리는 간단함을 위해 이 방식을 채택했으며, 이미 우리 애플리케이션에서 배치로 데이터를 삽입하고 있기 때문입니다.
+
+백그라운드 병합 중 추가 작업을 수행하는 MergeTree 엔진도 있습니다. 예로는 `CollapsingMergeTree`와 `AggregatingMergeTree`가 있습니다. 이는 업데이트에 대한 특별한 지원으로 간주될 수 있습니다. 이러한 것은 실제 업데이트가 아닙니다. 왜냐하면 사용자가 보통 백그라운드 병합이 실행되는 시간을 제어할 수 없고, `MergeTree` 테이블의 데이터는 거의 항상 여러 파트에 저장되기 때문입니다.
+
+## Replication {#replication}
+
+ClickHouse의 복제는 테이블별로 구성할 수 있습니다. 같은 서버에서 일부 테이블은 복제되고 일부는 복제되지 않을 수 있습니다. 또한, 두 개의 팩터 복제 및 세 개의 팩터 복제로 복제되는 서로 다른 방식의 테이블을 가질 수 있습니다.
+
+복제는 `ReplicatedMergeTree` 스토리지 엔진에서 구현됩니다. `ZooKeeper`의 경로는 스토리지 엔진의 매개변수로 지정됩니다. `ZooKeeper`에서 동일한 경로를 가진 모든 테이블은 서로의 복제본이 되어 데이터를 동기화하고 일관성을 유지합니다. 복제본은 테이블을 생성하거나 삭제하여 동적으로 추가 및 제거할 수 있습니다.
+
+복제는 비동기 다중 마스터 방식으로 구현됩니다. `ZooKeeper`와 세션이 있는 모든 복제본에 데이터를 삽입할 수 있으며, 데이터는 비동기적으로 모든 다른 복제본에 복제됩니다. ClickHouse는 UPDATE를 지원하지 않으므로 복제는 충돌이 없습니다. 기본적으로 삽입에 대한 쿼럼 인지는 없으므로 한 노드가 실패할 경우 방금 삽입된 데이터가 손실될 수 있습니다. `insert_quorum` 설정을 사용하여 삽입 쿼럼을 활성화할 수 있습니다.
+
+복제를 위한 메타데이터는 ZooKeeper에 저장됩니다. 어떤 작업을 수행할지 나열하는 복제 로그가 있습니다. 작업은: 파트 가져오기; 파트 병합; 파티션 삭제 등입니다. 각 복제본은 복제 로그를 자신의 대기열에 복사한 후 대기열에서 작업을 실행합니다. 예를 들어, 삽입 시 "파트 가져오기" 작업이 로그에 생성되고, 모든 복제본이 해당 파트를 다운로드합니다. 병합은 바이트 동일한 결과를 얻기 위해 복제본 간에 조정됩니다. 모든 파트는 모든 복제본에서 동일한 방식으로 병합됩니다. 리더 중 하나가 먼저 새 병합을 시작하고 "부품 병합" 작업을 로그에 기록합니다. 여러 복제본(또는 모두)이 동시에 리더가 될 수 있습니다. 복제본이 리더가 되는 것을 방지하려면 `merge_tree` 설정 `replicated_can_become_leader`를 사용할 수 있습니다. 리더는 백그라운드 병합 일정을 계획하는 책임이 있습니다.
+
+복제는 물리적입니다: 쿼리가 아닌 압축된 파트만 노드 간에 전송됩니다. 대다수의 경우 병합은 각 복제본에서 독립적으로 처리되어 네트워크 증폭을 피함으로써 네트워크 비용을 줄입니다. 대규모 병합된 파트는 의미 있는 복제 지연이 있는 경우에만 네트워크를 통해 전송됩니다.
+
+또한, 각 복제본은 ZooKeeper에 파트 집합과 그 체크섬으로 자신의 상태를 저장합니다. 로컬 파일 시스템의 상태가 ZooKeeper의 참조 상태와 다를 경우, 복제본은 다른 복제본에서 누락되거나 손상된 파트를 다운로드하여 일관성을 복원합니다. 로컬 파일 시스템에 예기치 않은 데이터나 손상된 데이터가 있을 경우, ClickHouse는 이를 제거하지 않고 별도의 디렉토리로 이동하여 잊어버립니다.
+
+:::note
+ClickHouse 클러스터는 독립적인 샤드로 구성되며, 각 샤드는 복제본으로 구성됩니다. 클러스터는 **탄력적이지 않으므로**, 새 샤드를 추가한 후 데이터가 자동으로 샤드 간에 재조정되지 않습니다. 대신 클러스터의 부하는 고르게 조정되지 않는 것으로 설정됩니다. 이 구현은 더 많은 제어를 제공하며, 몇 개의 노드와 같은 상대적으로 작은 클러스터에서는 괜찮습니다. 그러나 우리가 프로덕션에서 사용하는 수백 개의 노드가 있는 클러스터에는 이 접근 방식이 심각한 단점이 됩니다. 우리는 클러스터 전역에 걸쳐 동적으로 복제된 영역으로 자동으로 분할 및 균형을 맞출 수 있는 테이블 엔진을 구현해야 합니다.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/architecture.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/architecture.md.hash
new file mode 100644
index 00000000000..2814e5ed6a8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/architecture.md.hash
@@ -0,0 +1 @@
+976eae1ff244ab0a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-arm.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-arm.md
new file mode 100644
index 00000000000..f1e807b37ad
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-arm.md
@@ -0,0 +1,15 @@
+---
+'description': 'AARCH64 아키텍처를 위한 소스에서 ClickHouse를 빌드하는 가이드'
+'sidebar_label': 'AARCH64를 위한 Linux에서 빌드'
+'sidebar_position': 25
+'slug': '/development/build-cross-arm'
+'title': 'AARCH64 아키텍처를 위한 ClickHouse를 Linux에서 빌드하는 방법'
+'doc_type': 'guide'
+---
+
+
+# AARCH64 용 ClickHouse를 Linux에서 빌드하는 방법
+
+Aarch64 머신에서 Aarch64 용 ClickHouse를 빌드하는 데 특별한 단계는 필요하지 않습니다.
+
+x86 Linux 머신에서 AArch64 용 ClickHouse를 크로스 컴파일하려면 다음 플래그를 `cmake`에 전달하세요: `-DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-aarch64.cmake`
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-arm.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-arm.md.hash
new file mode 100644
index 00000000000..e1a12f88ae4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-arm.md.hash
@@ -0,0 +1 @@
+cc21151245d59a5b
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-loongarch.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-loongarch.md
new file mode 100644
index 00000000000..4797d1cfe95
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-loongarch.md
@@ -0,0 +1,26 @@
+---
+'description': 'LoongArch64 아키텍처용으로 소스에서 ClickHouse를 빌드하는 가이드'
+'sidebar_label': 'Linux에서 LoongArch64용 빌드하기'
+'sidebar_position': 35
+'slug': '/development/build-cross-loongarch'
+'title': 'Linux에서 LoongArch64용 빌드하기'
+'doc_type': 'guide'
+---
+
+
+# Linux에서 LoongArch64용 빌드
+
+ClickHouse는 LoongArch64에 대한 실험적 지원을 제공합니다.
+
+## ClickHouse 빌드 {#build-clickhouse}
+
+빌드를 위해 필요한 llvm 버전은 19.1.0 이상이어야 합니다.
+
+```bash
+cd ClickHouse
+mkdir build-loongarch64
+CC=clang-19 CXX=clang++-19 cmake . -Bbuild-loongarch64 -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-loongarch64.cmake
+ninja -C build-loongarch64
+```
+
+생성된 바이너리는 LoongArch64 CPU 아키텍처를 사용하는 Linux에서만 실행됩니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-loongarch.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-loongarch.md.hash
new file mode 100644
index 00000000000..72baeb39367
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-loongarch.md.hash
@@ -0,0 +1 @@
+b7514c6c229e156c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-osx.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-osx.md
new file mode 100644
index 00000000000..336d917e846
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-osx.md
@@ -0,0 +1,59 @@
+---
+'description': 'Linux에서 macOS 시스템을 위한 ClickHouse의 크로스 컴파일 가이드'
+'sidebar_label': 'macOS를 위한 Linux에서 빌드하기'
+'sidebar_position': 20
+'slug': '/development/build-cross-osx'
+'title': 'macOS를 위한 Linux에서 빌드하기'
+'doc_type': 'guide'
+---
+
+
+# How to Build ClickHouse on Linux for macOS
+
+이 문서는 Linux 머신을 보유하고 있으며 OS X에서 실행될 `clickhouse` 바이너리를 빌드하는 데 사용하고자 할 때의 내용을 다룹니다. 주요 사용 사례는 Linux 머신에서 실행되는 지속적인 통합 점검입니다. macOS에서 ClickHouse를 직접 빌드하고자 한다면, [네이티브 빌드 지침](../development/build-osx.md)을 진행하세요.
+
+macOS를 위한 크로스 빌드는 [빌드 지침](../development/build.md)을 기반으로 하며, 먼저 이를 따르십시오.
+
+다음 섹션에서는 `x86_64` macOS를 위한 ClickHouse 빌드 과정을 안내합니다. ARM 아키텍처를 타겟으로 하는 경우, 모든 `x86_64`의 발생을 `aarch64`로 대체하면 됩니다. 예를 들어, 모든 단계에서 `x86_64-apple-darwin`을 `aarch64-apple-darwin`으로 교체하십시오.
+
+## Install cross-compilation toolset {#install-cross-compilation-toolset}
+
+필요한 경우 `cctools`를 설치하는 경로를 `${CCTOOLS}`로 기억해 둡시다.
+
+```bash
+mkdir ~/cctools
+export CCTOOLS=$(cd ~/cctools && pwd)
+cd ${CCTOOLS}
+
+git clone https://github.com/tpoechtrager/apple-libtapi.git
+cd apple-libtapi
+git checkout 15dfc2a8c9a2a89d06ff227560a69f5265b692f9
+INSTALLPREFIX=${CCTOOLS} ./build.sh
+./install.sh
+cd ..
+
+git clone https://github.com/tpoechtrager/cctools-port.git
+cd cctools-port/cctools
+git checkout 2a3e1c2a6ff54a30f898b70cfb9ba1692a55fad7
+./configure --prefix=$(readlink -f ${CCTOOLS}) --with-libtapi=$(readlink -f ${CCTOOLS}) --target=x86_64-apple-darwin
+make install
+```
+
+또한, 작업 트리에 macOS X SDK를 다운로드해야 합니다.
+
+```bash
+cd ClickHouse/cmake/toolchain/darwin-x86_64
+curl -L 'https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.0.sdk.tar.xz' | tar xJ --strip-components=1
+```
+
+## Build ClickHouse {#build-clickhouse}
+
+```bash
+cd ClickHouse
+mkdir build-darwin
+cd build-darwin
+CC=clang-19 CXX=clang++-19 cmake -DCMAKE_AR:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ar -DCMAKE_INSTALL_NAME_TOOL=${CCTOOLS}/bin/x86_64-apple-darwin-install_name_tool -DCMAKE_RANLIB:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ranlib -DLINKER_NAME=${CCTOOLS}/bin/x86_64-apple-darwin-ld -DCMAKE_TOOLCHAIN_FILE=cmake/darwin/toolchain-x86_64.cmake ..
+ninja
+```
+
+결과 바이너리는 Mach-O 실행 파일 형식을 가지며 Linux에서 실행할 수 없습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-osx.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-osx.md.hash
new file mode 100644
index 00000000000..521e3d40559
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-osx.md.hash
@@ -0,0 +1 @@
+d82c8432d36ad182
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-riscv.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-riscv.md
new file mode 100644
index 00000000000..3302a865284
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-riscv.md
@@ -0,0 +1,26 @@
+---
+'description': 'RISC-V 64 아키텍처를 위한 소스에서 ClickHouse를 빌드하기 위한 가이드'
+'sidebar_label': 'RISC-V 64에 대한 Linux에서 빌드'
+'sidebar_position': 30
+'slug': '/development/build-cross-riscv'
+'title': 'RISC-V 64 아키텍처에 대한 Linux에서 ClickHouse 빌드하는 방법'
+'doc_type': 'guide'
+---
+
+
+# How to Build ClickHouse on Linux for RISC-V 64
+
+ClickHouse는 RISC-V에 대한 실험적 지원을 제공합니다. 모든 기능을 활성화할 수는 없습니다.
+
+## Build ClickHouse {#build-clickhouse}
+
+비-RISC-V 머신에서 RISC-V용으로 크로스 컴파일하려면:
+
+```bash
+cd ClickHouse
+mkdir build-riscv64
+CC=clang-19 CXX=clang++-19 cmake . -Bbuild-riscv64 -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-riscv64.cmake -DGLIBC_COMPATIBILITY=OFF -DENABLE_LDAP=OFF -DOPENSSL_NO_ASM=ON -DENABLE_JEMALLOC=ON -DENABLE_PARQUET=OFF -DENABLE_GRPC=OFF -DENABLE_HDFS=OFF -DENABLE_MYSQL=OFF
+ninja -C build-riscv64
+```
+
+결과 바이너리는 RISC-V 64 CPU 아키텍처가 있는 Linux에서만 실행됩니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-riscv.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-riscv.md.hash
new file mode 100644
index 00000000000..23ce56a2dc3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-riscv.md.hash
@@ -0,0 +1 @@
+6189f6223eca964a
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-s390x.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-s390x.md
new file mode 100644
index 00000000000..f8709fc31f8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-s390x.md
@@ -0,0 +1,212 @@
+---
+'description': 's390x 아키텍처를 위한 ClickHouse 소스 빌드 가이드'
+'sidebar_label': 's390x (zLinux) 용 Linux에서 빌드'
+'sidebar_position': 30
+'slug': '/development/build-cross-s390x'
+'title': 's390x (zLinux) 용 Linux에서 빌드'
+'doc_type': 'guide'
+---
+
+
+# Linux에서 s390x (zLinux)에 대한 빌드
+
+ClickHouse는 s390x에 대한 실험적 지원을 제공합니다.
+
+## s390x를 위한 ClickHouse 빌드 {#building-clickhouse-for-s390x}
+
+s390x에는 두 가지 OpenSSL 관련 빌드 옵션이 있습니다:
+- 기본적으로, OpenSSL은 s390x에서 공유 라이브러리로 빌드됩니다. 이는 모든 다른 플랫폼과 다르며, 다른 플랫폼에서는 OpenSSL이 정적 라이브러리로 빌드됩니다.
+- OpenSSL을 정적 라이브러리로 빌드하려면 CMake에 `-DENABLE_OPENSSL_DYNAMIC=0`을 전달하십시오.
+
+이 지침은 호스트 머신이 x86_64이며 [빌드 지침](../development/build.md)을 기반으로 네이티브로 빌드하는 데 필요한 모든 도구가 설치되어 있다고 가정합니다. 또한 호스트가 Ubuntu 22.04라고 가정하지만 다음 지침은 Ubuntu 20.04에서도 작동해야 합니다.
+
+네이티브로 빌드하는 데 사용되는 도구 외에 다음 추가 패키지를 설치해야 합니다:
+
+```bash
+apt-get install binutils-s390x-linux-gnu libc6-dev-s390x-cross gcc-s390x-linux-gnu binfmt-support qemu-user-static
+```
+
+rust 코드를 크로스 컴파일하려면 s390x용 rust 크로스 컴파일 대상을 설치하십시오:
+
+```bash
+rustup target add s390x-unknown-linux-gnu
+```
+
+s390x 빌드는 mold 링커를 사용합니다. https://github.com/rui314/mold/releases/download/v2.0.0/mold-2.0.0-x86_64-linux.tar.gz 에서 다운로드하여 `$PATH`에 포함시키십시오.
+
+s390x에 대한 빌드를 하려면:
+
+```bash
+cmake -DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-s390x.cmake ..
+ninja
+```
+
+## 실행 {#running}
+
+빌드가 완료되면 다음과 같이 이진 파일을 실행할 수 있습니다:
+
+```bash
+qemu-s390x-static -L /usr/s390x-linux-gnu ./clickhouse
+```
+
+## 디버깅 {#debugging}
+
+LLDB를 설치하십시오:
+
+```bash
+apt-get install lldb-15
+```
+
+s390x 실행 파일을 디버깅하려면, QEMU에서 디버그 모드로 clickhouse를 실행하십시오:
+
+```bash
+qemu-s390x-static -g 31338 -L /usr/s390x-linux-gnu ./clickhouse
+```
+
+다른 셸에서 LLDB를 실행하고 연결합니다. `` 및 ``를 환경에 해당하는 값으로 교체하십시오.
+
+```bash
+lldb-15
+(lldb) target create ./clickhouse
+Current executable set to '//ClickHouse//programs/clickhouse' (s390x).
+(lldb) settings set target.source-map //ClickHouse
+(lldb) gdb-remote 31338
+Process 1 stopped
+* thread #1, stop reason = signal SIGTRAP
+ frame #0: 0x0000004020e74cd0
+-> 0x4020e74cd0: lgr %r2, %r15
+ 0x4020e74cd4: aghi %r15, -160
+ 0x4020e74cd8: xc 0(8,%r15), 0(%r15)
+ 0x4020e74cde: brasl %r14, 275429939040
+(lldb) b main
+Breakpoint 1: 9 locations.
+(lldb) c
+Process 1 resuming
+Process 1 stopped
+* thread #1, stop reason = breakpoint 1.1
+ frame #0: 0x0000004005cd9fc0 clickhouse`main(argc_=1, argv_=0x0000004020e594a8) at main.cpp:450:17
+ 447 #if !defined(FUZZING_MODE)
+ 448 int main(int argc_, char ** argv_)
+ 449 {
+-> 450 inside_main = true;
+ 451 SCOPE_EXIT({ inside_main = false; });
+ 452
+ 453 /// PHDR cache is required for query profiler to work reliably
+```
+
+## Visual Studio Code 통합 {#visual-studio-code-integration}
+
+- 비주얼 디버깅을 위한 [CodeLLDB](https://github.com/vadimcn/vscode-lldb) 확장이 필요합니다.
+- [Command Variable](https://github.com/rioj7/command-variable) 확장은 [CMake Variants](https://github.com/microsoft/vscode-cmake-tools/blob/main/docs/variants.md)를 사용할 경우 동적 실행에 도움이 될 수 있습니다.
+- 백엔드가 LLVM 설치 위치로 설정되었는지 확인하십시오. 예: `"lldb.library": "/usr/lib/x86_64-linux-gnu/liblldb-15.so"`
+- 실행하기 전에 clickhouse 실행 파일이 디버그 모드로 실행되었는지 확인하십시오. (이 작업을 자동화하는 `preLaunchTask`를 만드는 것도 가능합니다)
+
+### 예시 구성 {#example-configurations}
+#### cmake-variants.yaml {#cmake-variantsyaml}
+```yaml
+buildType:
+ default: relwithdebinfo
+ choices:
+ debug:
+ short: Debug
+ long: Emit debug information
+ buildType: Debug
+ release:
+ short: Release
+ long: Optimize generated code
+ buildType: Release
+ relwithdebinfo:
+ short: RelWithDebInfo
+ long: Release with Debug Info
+ buildType: RelWithDebInfo
+ tsan:
+ short: MinSizeRel
+ long: Minimum Size Release
+ buildType: MinSizeRel
+
+toolchain:
+ default: default
+ description: Select toolchain
+ choices:
+ default:
+ short: x86_64
+ long: x86_64
+ s390x:
+ short: s390x
+ long: s390x
+ settings:
+ CMAKE_TOOLCHAIN_FILE: cmake/linux/toolchain-s390x.cmake
+```
+
+#### launch.json {#launchjson}
+```json
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "lldb",
+ "request": "custom",
+ "name": "(lldb) Launch s390x with qemu",
+ "targetCreateCommands": ["target create ${command:cmake.launchTargetPath}"],
+ "processCreateCommands": ["gdb-remote 2159"],
+ "preLaunchTask": "Run ClickHouse"
+ }
+ ]
+}
+```
+
+#### settings.json {#settingsjson}
+이것은 또한 서로 다른 빌드를 `build` 폴더의 서로 다른 하위 폴더에 배치합니다.
+```json
+{
+ "cmake.buildDirectory": "${workspaceFolder}/build/${buildKitVendor}-${buildKitVersion}-${variant:toolchain}-${variant:buildType}",
+ "lldb.library": "/usr/lib/x86_64-linux-gnu/liblldb-15.so"
+}
+```
+
+#### run-debug.sh {#run-debugsh}
+```sh
+#! /bin/sh
+echo 'Starting debugger session'
+cd $1
+qemu-s390x-static -g 2159 -L /usr/s390x-linux-gnu $2 $3 $4
+```
+
+#### tasks.json {#tasksjson}
+`programs/server/config.xml` 아래의 구성으로 바이너리 옆의 `tmp` 폴더에서 `server` 모드로 컴파일된 실행 파일을 실행하는 작업을 정의합니다.
+```json
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Run ClickHouse",
+ "type": "shell",
+ "isBackground": true,
+ "command": "${workspaceFolder}/.vscode/run-debug.sh",
+ "args": [
+ "${command:cmake.launchTargetDirectory}/tmp",
+ "${command:cmake.launchTargetPath}",
+ "server",
+ "--config-file=${workspaceFolder}/programs/server/config.xml"
+ ],
+ "problemMatcher": [
+ {
+ "pattern": [
+ {
+ "regexp": ".",
+ "file": 1,
+ "location": 2,
+ "message": 3
+ }
+ ],
+ "background": {
+ "activeOnStart": true,
+ "beginsPattern": "^Starting debugger session",
+ "endsPattern": ".*"
+ }
+ }
+ ]
+ }
+ ]
+}
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-s390x.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-s390x.md.hash
new file mode 100644
index 00000000000..4533b840a21
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-cross-s390x.md.hash
@@ -0,0 +1 @@
+9e03c0e6c98b767d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-osx.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-osx.md
new file mode 100644
index 00000000000..ef73bac36f6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-osx.md
@@ -0,0 +1,113 @@
+---
+'description': 'macOS 시스템에서 ClickHouse를 소스에서 빌드하는 가이드'
+'sidebar_label': 'macOS에서 macOS용 빌드하기'
+'sidebar_position': 15
+'slug': '/development/build-osx'
+'title': 'macOS에서 macOS용 빌드하기'
+'keywords':
+- 'MacOS'
+- 'Mac'
+- 'build'
+'doc_type': 'guide'
+---
+
+
+# macOS에서 ClickHouse 빌드하는 방법
+
+:::info ClickHouse를 직접 빌드할 필요가 없습니다!
+[빠른 시작](https://clickhouse.com/#quick-start)에서 설명하는 대로 미리 빌드된 ClickHouse를 설치할 수 있습니다.
+:::
+
+ClickHouse는 macOS 10.15 (Catalina) 이상에서 macOS x86_64 (Intel) 및 arm64 (Apple Silicon)에서 컴파일할 수 있습니다.
+
+컴파일러로는 homebrew에서 제공하는 Clang만 지원됩니다.
+
+## 필수 조건 설치 {#install-prerequisites}
+
+먼저, 일반적인 [필수 조건 문서](developer-instruction.md)를 참조하십시오.
+
+다음으로, [Homebrew](https://brew.sh/)를 설치하고 실행합니다.
+
+그 후 다음을 실행합니다:
+
+```bash
+brew update
+brew install ccache cmake ninja libtool gettext llvm lld binutils grep findutils nasm bash rust rustup
+```
+
+:::note
+Apple은 기본적으로 대소문자를 구분하지 않는 파일 시스템을 사용합니다. 이것은 일반적으로 컴파일에 영향을 미치지 않지만 (특히 scratch makes가 작동할 경우) `git mv`와 같은 파일 작업에서 혼란을 줄 수 있습니다.
+macOS에서 본격적인 개발을 하려면 소스 코드가 대소문자를 구분하는 디스크 볼륨에 저장되도록 하십시오. 예를 들어 [이 지침](https://brianboyko.medium.com/a-case-sensitive-src-folder-for-mac-programmers-176cc82a3830)을 참고하십시오.
+:::
+
+## ClickHouse 빌드 {#build-clickhouse}
+
+빌드하려면 Homebrew의 Clang 컴파일러를 사용해야 합니다:
+
+```bash
+cd ClickHouse
+mkdir build
+export PATH=$(brew --prefix llvm)/bin:$PATH
+cmake -S . -B build
+cmake --build build
+
+# The resulting binary will be created at: build/programs/clickhouse
+```
+
+:::note
+링크 중에 `ld: archive member '/' not a mach-o file in ...` 오류가 발생하는 경우, 플래그 `-DCMAKE_AR=/opt/homebrew/opt/llvm/bin/llvm-ar`를 설정하여 llvm-ar를 사용해야 할 수 있습니다.
+:::
+
+## 주의사항 {#caveats}
+
+`clickhouse-server`를 실행할 계획이라면 시스템의 `maxfiles` 변수를 증가시켜야 합니다.
+
+:::note
+sudo를 사용해야 합니다.
+:::
+
+이를 위해 다음 내용을 포함한 `/Library/LaunchDaemons/limit.maxfiles.plist` 파일을 생성하십시오:
+
+```xml
+
+
+
+
+ Label
+ limit.maxfiles
+ ProgramArguments
+
+ launchctl
+ limit
+ maxfiles
+ 524288
+ 524288
+
+ RunAtLoad
+
+ ServiceIPC
+
+
+
+```
+
+파일에 올바른 권한을 부여하십시오:
+
+```bash
+sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
+```
+
+파일이 올바른지 확인하십시오:
+
+```bash
+plutil /Library/LaunchDaemons/limit.maxfiles.plist
+```
+
+파일을 로드하십시오 (또는 재부팅하십시오):
+
+```bash
+sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
+```
+
+작동하는지 확인하려면 `ulimit -n` 또는 `launchctl limit maxfiles` 명령을 사용하십시오.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build-osx.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-osx.md.hash
new file mode 100644
index 00000000000..95b2e357dca
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build-osx.md.hash
@@ -0,0 +1 @@
+af51a4626f544acf
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/build.md
new file mode 100644
index 00000000000..43c1115bde2
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build.md
@@ -0,0 +1,223 @@
+---
+'description': 'Linux 시스템에서 소스에서 ClickHouse를 빌드하는 단계별 가이드'
+'sidebar_label': 'Linux에서 구축'
+'sidebar_position': 10
+'slug': '/development/build'
+'title': 'Linux에서 ClickHouse 구축하는 방법'
+'doc_type': 'guide'
+---
+
+
+# ClickHouse를 Linux에서 빌드하는 방법
+
+:::info ClickHouse를 직접 빌드할 필요는 없습니다!
+미리 빌드된 ClickHouse를 [빠른 시작](https://clickhouse.com/#quick-start)에서 설명된 대로 설치할 수 있습니다.
+:::
+
+ClickHouse는 다음 플랫폼에서 빌드할 수 있습니다:
+
+- x86_64
+- AArch64
+- PowerPC 64 LE (실험적)
+- s390/x (실험적)
+- RISC-V 64 (실험적)
+
+## 가정 {#assumptions}
+
+다음 튜토리얼은 Ubuntu Linux를 기반으로 하지만, 적절한 변경을 통해 다른 Linux 배포판에서도 작동해야 합니다.
+개발을 위한 최소 권장 Ubuntu 버전은 24.04 LTS입니다.
+
+이 튜토리얼은 ClickHouse 리포지토리와 모든 하위 모듈이 로컬에 체크아웃되어 있다고 가정합니다.
+
+## 필수 요소 설치 {#install-prerequisites}
+
+먼저 일반적인 [필수 요소 문서](developer-instruction.md)를 참조하세요.
+
+ClickHouse는 빌드를 위해 CMake 및 Ninja를 사용합니다.
+
+선택적으로, 빌드에서 이미 컴파일된 객체 파일을 재사용하도록 ccache를 설치할 수 있습니다.
+
+```bash
+sudo apt-get update
+sudo apt-get install build-essential git cmake ccache python3 ninja-build nasm yasm gawk lsb-release wget software-properties-common gnupg
+```
+
+## Clang 컴파일러 설치 {#install-the-clang-compiler}
+
+Ubuntu/Debian에 Clang을 설치하려면 [여기](https://apt.llvm.org/)에서 LLVM의 자동 설치 스크립트를 사용하세요.
+
+```bash
+sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
+```
+
+다른 Linux 배포판의 경우, LLVM의 [미리 빌드된 패키지](https://releases.llvm.org/download.html)를 설치할 수 있는지 확인하세요.
+
+2025년 3월 현재, Clang 19 이상이 필요합니다.
+GCC 또는 다른 컴파일러는 지원되지 않습니다.
+
+## Rust 컴파일러 설치 (선택 사항) {#install-the-rust-compiler-optional}
+
+:::note
+Rust는 ClickHouse의 선택적 종속성입니다.
+Rust가 설치되어 있지 않으면 ClickHouse의 일부 기능이 컴파일에서 제외됩니다.
+:::
+
+먼저, 공식 [Rust 문서](https://www.rust-lang.org/tools/install)의 지침에 따라 `rustup`을 설치하세요.
+
+C++ 종속성과 마찬가지로 ClickHouse는 제3자 서비스(예: `crates.io` 레지스트리)에 의존하지 않도록 설치되는 내용을 엄격히 관리하기 위해 벤더링을 사용합니다.
+
+릴리스 모드에서는 어떤 최신 rustup 도구 체인 버전이 이러한 종속성과 잘 작동하지만, sanitizer를 활성화할 계획이라면 CI에서 사용된 것과 정확히 동일한 `std`와 일치하는 버전을 사용해야 합니다 (우리가 벤더링하는 크레이트에 대해):
+
+```bash
+rustup toolchain install nightly-2025-07-07
+rustup default nightly-2025-07-07
+rustup component add rust-src
+```
+## ClickHouse 빌드 {#build-clickhouse}
+
+모든 빌드 산출물이 포함된 별도의 `build` 디렉토리를 `ClickHouse` 내부에 생성할 것을 권장합니다:
+
+```sh
+mkdir build
+cd build
+```
+
+서로 다른 빌드 유형에 대해 여러 개의 다른 디렉토리(예: `build_release`, `build_debug` 등)를 가질 수 있습니다.
+
+선택 사항: 여러 컴파일러 버전이 설치된 경우, 사용할 특정 컴파일러를 지정할 수 있습니다.
+
+```sh
+export CC=clang-19
+export CXX=clang++-19
+```
+
+개발 목적으로는 디버그 빌드가 권장됩니다.
+릴리스 빌드에 비해, 디버그 빌드는 낮은 컴파일러 최적화 수준(`-O`)을 가지고 있어 더 나은 디버깅 경험을 제공합니다.
+또한, `LOGICAL_ERROR` 타입의 내부 예외는 우아하게 실패하는 대신 즉시 충돌합니다.
+
+```sh
+cmake -D CMAKE_BUILD_TYPE=Debug ..
+```
+
+:::note
+gdb와 같은 디버거를 사용하려면, 위의 명령에 `-D DEBUG_O_LEVEL="0"`을 추가하여 모든 컴파일러 최적화를 제거하여 gdb가 변수에 접근하거나 볼 수 있는 능력에 방해가 되지 않도록 하세요.
+:::
+
+빌드를 위해 ninja를 실행하세요:
+
+```sh
+ninja clickhouse
+```
+
+모든 이진 파일(유틸리티 및 테스트)을 빌드하려면 매개변수 없이 ninja를 실행하세요:
+
+```sh
+ninja
+```
+
+병렬 빌드 작업 수를 `-j` 매개변수를 사용하여 제어할 수 있습니다:
+
+```sh
+ninja -j 1 clickhouse-server clickhouse-client
+```
+
+:::tip
+CMake는 위 명령어에 대한 단축키를 제공합니다:
+
+```sh
+cmake -S . -B build # configure build, run from repository top-level directory
+cmake --build build # compile
+```
+:::
+
+## ClickHouse 실행 파일 실행 {#running-the-clickhouse-executable}
+
+빌드가 성공적으로 완료된 후, `ClickHouse//programs/`에서 실행 파일을 찾을 수 있습니다:
+
+ClickHouse 서버는 현재 디렉토리에서 `config.xml` 구성 파일을 찾으려 합니다.
+대신 `-C`를 통해 명령줄에서 구성 파일을 지정할 수 있습니다.
+
+`clickhouse-client`를 사용하여 ClickHouse 서버에 연결하려면, 다른 터미널을 열고 `ClickHouse/build/programs/`로 이동한 다음 `./clickhouse client`를 실행하세요.
+
+macOS 또는 FreeBSD에서 `Connection refused` 메시지가 표시되면 호스트 주소 127.0.0.1을 지정해 보세요:
+
+```bash
+clickhouse client --host 127.0.0.1
+```
+
+## 고급 옵션 {#advanced-options}
+
+### 최소 빌드 {#minimal-build}
+
+타사 라이브러리에서 제공하는 기능이 필요하지 않은 경우, 빌드를 더 빠르게 할 수 있습니다:
+
+```sh
+cmake -DENABLE_LIBRARIES=OFF
+```
+
+문제가 발생할 경우, 스스로 해결해야 합니다...
+
+Rust는 인터넷 연결이 필요합니다. Rust 지원을 비활성화하려면:
+
+```sh
+cmake -DENABLE_RUST=OFF
+```
+
+### ClickHouse 실행 파일 실행 {#running-the-clickhouse-executable-1}
+
+컴파일된 ClickHouse 이진 파일로 시스템에 설치된 ClickHouse의 프로덕션 버전을 교체할 수 있습니다.
+이를 위해 공식 웹사이트의 지침에 따라 시스템에 ClickHouse를 설치하세요.
+다음으로, 실행하세요:
+
+```bash
+sudo service clickhouse-server stop
+sudo cp ClickHouse/build/programs/clickhouse /usr/bin/
+sudo service clickhouse-server start
+```
+
+`clickhouse-client`, `clickhouse-server` 등은 일반적으로 공유되는 `clickhouse` 이진 파일에 대한 심볼릭 링크입니다.
+
+시스템에 설치된 ClickHouse 패키지의 구성 파일을 사용하여 사용자가 직접 빌드한 ClickHouse 이진 파일을 실행할 수도 있습니다:
+
+```bash
+sudo service clickhouse-server stop
+sudo -u clickhouse ClickHouse/build/programs/clickhouse server --config-file /etc/clickhouse-server/config.xml
+```
+
+### 모든 Linux에서 빌드하기 {#building-on-any-linux}
+
+OpenSUSE Tumbleweed에서 필수 요소를 설치하세요:
+
+```bash
+sudo zypper install git cmake ninja clang-c++ python lld nasm yasm gawk
+git clone --recursive https://github.com/ClickHouse/ClickHouse.git
+mkdir build
+cmake -S . -B build
+cmake --build build
+```
+
+Fedora Rawhide에서 필수 요소를 설치하세요:
+
+```bash
+sudo yum update
+sudo yum --nogpg install git cmake make clang python3 ccache lld nasm yasm gawk
+git clone --recursive https://github.com/ClickHouse/ClickHouse.git
+mkdir build
+cmake -S . -B build
+cmake --build build
+```
+
+### 도커에서 빌드하기 {#building-in-docker}
+
+CI와 유사한 환경에서 로컬로 빌드를 실행할 수 있습니다:
+
+```bash
+python -m ci.praktika "BUILD_JOB_NAME"
+```
+여기서 BUILD_JOB_NAME은 CI 리포트에 표시된 작업 이름입니다. 예: "Build (arm_release)", "Build (amd_debug)"
+
+이 명령은 필요한 모든 종속성이 포함된 적합한 Docker 이미지 `clickhouse/binary-builder`를 끌어온 다음, 그 안에서 빌드 스크립트 `./ci/jobs/build_clickhouse.py`를 실행합니다.
+
+빌드 출력은 `./ci/tmp/`에 배치됩니다.
+
+이것은 AMD 및 ARM 아키텍처 모두에서 작동하며, Docker 외에 추가 종속성이 필요하지 않습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/build.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/build.md.hash
new file mode 100644
index 00000000000..ebb0468aa20
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/build.md.hash
@@ -0,0 +1 @@
+f34515bcb78ccd28
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/building_and_benchmarking_deflate_qpl.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/building_and_benchmarking_deflate_qpl.md
new file mode 100644
index 00000000000..0cdded72336
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/building_and_benchmarking_deflate_qpl.md
@@ -0,0 +1,330 @@
+---
+'description': 'DEFLATE_QPL Codec을 사용하여 Clickhouse를 구축하고 벤치마크를 실행하는 방법'
+'sidebar_label': 'DEFLATE_QPL 구축 및 벤치마크'
+'sidebar_position': 73
+'slug': '/development/building_and_benchmarking_deflate_qpl'
+'title': 'DEFLATE_QPL로 Clickhouse 구축하기'
+'doc_type': 'guide'
+---
+
+
+# DEFLATE_QPL로 Clickhouse 빌드하기
+
+- 호스트 머신이 QPL 필수 [전제 조건](https://intel.github.io/qpl/documentation/get_started_docs/installation.html#prerequisites)을 충족하는지 확인하십시오.
+- deflate_qpl은 cmake 빌드 중 기본적으로 활성화되어 있습니다. 실수로 변경된 경우, 빌드 플래그: ENABLE_QPL=1을 다시 확인하십시오.
+
+- 일반적인 요구 사항은 Clickhouse의 일반 [빌드 지침](/development/build.md)을 참조하십시오.
+
+
+# DEFLATE_QPL로 벤치마크 실행하기
+
+## 파일 목록 {#files-list}
+
+폴더 `benchmark_sample` 하의 [qpl-cmake](https://github.com/ClickHouse/ClickHouse/tree/master/contrib/qpl-cmake)는 파이썬 스크립트를 사용하여 벤치마크를 실행하는 예를 제공합니다:
+
+`client_scripts`는 전형적인 벤치마크를 실행하기 위한 파이썬 스크립트를 포함합니다. 예를 들면:
+- `client_stressing_test.py`: [1~4] 서버 인스턴스와의 쿼리 스트레스 테스트를 위한 파이썬 스크립트입니다.
+- `queries_ssb.sql`: [Star Schema Benchmark](/getting-started/example-datasets/star-schema/)에 대한 모든 쿼리 목록 파일입니다.
+- `allin1_ssb.sh`: 이 셸 스크립트는 모든 벤치마크 워크플로우를 자동으로 실행합니다.
+
+`database_files`는 lz4/deflate/zstd 코덱에 따라 데이터베이스 파일을 저장할 것임을 의미합니다.
+
+## 스타 스키마에 대해 자동으로 벤치마크 실행하기: {#run-benchmark-automatically-for-star-schema}
+
+```bash
+$ cd ./benchmark_sample/client_scripts
+$ sh run_ssb.sh
+```
+
+완료 후, 이 폴더에서 모든 결과를 확인하십시오: `./output/`
+
+실패하는 경우, 아래 섹션에 따라 수동으로 벤치마크를 실행하십시오.
+
+## 정의 {#definition}
+
+[CLICKHOUSE_EXE]는 ClickHouse 실행 파일의 경로를 의미합니다.
+
+## 환경 {#environment}
+
+- CPU: Sapphire Rapid
+- OS 요건은 [QPL의 시스템 요구 사항](https://intel.github.io/qpl/documentation/get_started_docs/installation.html#system-requirements)을 참조하십시오.
+- IAA 설정은 [가속기 구성](https://intel.github.io/qpl/documentation/get_started_docs/installation.html#accelerator-configuration)을 참조하십시오.
+- 파이썬 모듈 설치:
+
+```bash
+pip3 install clickhouse_driver numpy
+```
+
+[IAA에 대한 자가 점검]
+
+```bash
+$ accel-config list | grep -P 'iax|state'
+```
+
+예상 출력을 다음과 같이 확인하십시오:
+```bash
+"dev":"iax1",
+"state":"enabled",
+ "state":"enabled",
+```
+
+아무 것도 출력되지 않는 경우, IAA가 작동할 준비가 되지 않았음을 의미합니다. IAA 설정을 다시 확인하십시오.
+
+## 원시 데이터 생성하기 {#generate-raw-data}
+
+```bash
+$ cd ./benchmark_sample
+$ mkdir rawdata_dir && cd rawdata_dir
+```
+
+[`dbgen`](/getting-started/example-datasets/star-schema)를 사용하여 매개변수: -s 20로 1억 행 데이터를 생성합니다.
+
+`*.tbl`과 같은 파일이 `./benchmark_sample/rawdata_dir/ssb-dbgen` 아래에 출력될 것으로 예상됩니다:
+
+## 데이터베이스 설정 {#database-setup}
+
+LZ4 코덱으로 데이터베이스 설정
+
+```bash
+$ cd ./database_dir/lz4
+$ [CLICKHOUSE_EXE] server -C config_lz4.xml >&/dev/null&
+$ [CLICKHOUSE_EXE] client
+```
+
+여기서 콘솔에 `Connected to ClickHouse server` 메시지를 보아야 하며, 이는 클라이언트가 서버와의 연결을 성공적으로 설정했음을 의미합니다.
+
+[Star Schema Benchmark](/getting-started/example-datasets/star-schema)에 명시된 세 가지 단계를 완료하십시오.
+- ClickHouse에서 테이블 생성
+- 데이터 삽입. 여기서 `./benchmark_sample/rawdata_dir/ssb-dbgen/*.tbl`을 입력 데이터로 사용해야 합니다.
+- "스타 스키마"를 비정규화된 "플랫 스키마"로 변환
+
+IAA Deflate 코덱으로 데이터베이스 설정
+
+```bash
+$ cd ./database_dir/deflate
+$ [CLICKHOUSE_EXE] server -C config_deflate.xml >&/dev/null&
+$ [CLICKHOUSE_EXE] client
+```
+위의 lz4와 동일한 세 단계를 완료하십시오.
+
+ZSTD 코덱으로 데이터베이스 설정
+
+```bash
+$ cd ./database_dir/zstd
+$ [CLICKHOUSE_EXE] server -C config_zstd.xml >&/dev/null&
+$ [CLICKHOUSE_EXE] client
+```
+위의 lz4와 동일한 세 단계를 완료하십시오.
+
+[자가 점검]
+각 코덱(lz4/zstd/deflate)에 대해 아래 쿼리를 실행하여 데이터베이스가 성공적으로 생성되었는지 확인하십시오:
+```sql
+SELECT count() FROM lineorder_flat
+```
+다음 출력을 보아야 합니다:
+```sql
+┌───count()─┐
+│ 119994608 │
+└───────────┘
+```
+[IAA Deflate 코덱에 대한 자가 점검]
+
+클라이언트에서 삽입 또는 쿼리를 처음 실행할 때 ClickHouse 서버 콘솔에서 이 로그를 출력할 것으로 예상됩니다:
+```text
+Hardware-assisted DeflateQpl codec is ready!
+```
+이 로그를 찾지 못하고 아래와 같은 다른 로그를 보게 된다면:
+```text
+Initialization of hardware-assisted DeflateQpl codec failed
+```
+이는 IAA 장치가 준비되지 않았음을 의미하므로, IAA 설정을 다시 확인해야 합니다.
+
+## 단일 인스턴스로 벤치마크 실행하기 {#benchmark-with-single-instance}
+
+- 벤치마크를 시작하기 전에, C6를 비활성화하고 CPU 주파수 거버너를 `performance`로 설정하십시오.
+
+```bash
+$ cpupower idle-set -d 3
+$ cpupower frequency-set -g performance
+```
+
+- Cross sockets에서 메모리 바인딩의 영향을 제거하기 위해, `numactl`을 사용하여 서버를 하나의 소켓에 바인딩하고 클라이언트를 다른 소켓에 바인딩합니다.
+- 단일 인스턴스는 단일 서버가 단일 클라이언트와 연결된 것을 의미합니다.
+
+이제 각각 LZ4/Deflate/ZSTD에 대해 벤치마크를 실행하십시오:
+
+LZ4:
+
+```bash
+$ cd ./database_dir/lz4
+$ numactl -m 0 -N 0 [CLICKHOUSE_EXE] server -C config_lz4.xml >&/dev/null&
+$ cd ./client_scripts
+$ numactl -m 1 -N 1 python3 client_stressing_test.py queries_ssb.sql 1 > lz4.log
+```
+
+IAA deflate:
+
+```bash
+$ cd ./database_dir/deflate
+$ numactl -m 0 -N 0 [CLICKHOUSE_EXE] server -C config_deflate.xml >&/dev/null&
+$ cd ./client_scripts
+$ numactl -m 1 -N 1 python3 client_stressing_test.py queries_ssb.sql 1 > deflate.log
+```
+
+ZSTD:
+
+```bash
+$ cd ./database_dir/zstd
+$ numactl -m 0 -N 0 [CLICKHOUSE_EXE] server -C config_zstd.xml >&/dev/null&
+$ cd ./client_scripts
+$ numactl -m 1 -N 1 python3 client_stressing_test.py queries_ssb.sql 1 > zstd.log
+```
+
+이제 세 개의 로그가 예상대로 출력되어야 합니다:
+```text
+lz4.log
+deflate.log
+zstd.log
+```
+
+성능 지표를 확인하는 방법:
+
+우리는 QPS에 주목하며, `QPS_Final`라는 키워드를 검색하여 통계를 수집합니다.
+
+## 다중 인스턴스로 벤치마크 실행하기 {#benchmark-with-multi-instances}
+
+- 너무 많은 스레드에서 메모리 바인딩의 영향을 줄이기 위해, 다중 인스턴스로 벤치마크를 실행하는 것이 좋습니다.
+- 다중 인스턴스는 여러 (2 또는 4) 서버가 각각의 클라이언트와 연결된 것을 의미합니다.
+- 하나의 소켓의 코어는 균등하게 나누어 각 서버에 할당해야 합니다.
+- 다중 인스턴스의 경우 각 코덱에 대해 새 폴더를 생성하고 단일 인스턴스와 유사한 단계에 따라 데이터셋을 삽입해야 합니다.
+
+두 가지 차이점이 있습니다:
+- 클라이언트 측에서는 테이블 생성 및 데이터 삽입 시 할당된 포트로 ClickHouse를 실행해야 합니다.
+- 서버 측에서는 포트가 할당된 특정 xml 구성 파일을 사용하여 ClickHouse를 실행해야 합니다. 다중 인스턴스를 위한 모든 사용자 정의 xml 구성 파일은 ./server_config 아래에 제공됩니다.
+
+여기서는 소켓당 60 코어가 있다고 가정하고 2 인스턴스를 예로 들겠습니다.
+첫 번째 인스턴스에 대해 서버 시작
+LZ4:
+
+```bash
+$ cd ./database_dir/lz4
+$ numactl -C 0-29,120-149 [CLICKHOUSE_EXE] server -C config_lz4.xml >&/dev/null&
+```
+
+ZSTD:
+
+```bash
+$ cd ./database_dir/zstd
+$ numactl -C 0-29,120-149 [CLICKHOUSE_EXE] server -C config_zstd.xml >&/dev/null&
+```
+
+IAA Deflate:
+
+```bash
+$ cd ./database_dir/deflate
+$ numactl -C 0-29,120-149 [CLICKHOUSE_EXE] server -C config_deflate.xml >&/dev/null&
+```
+
+[두 번째 인스턴스에 대해 서버 시작]
+
+LZ4:
+
+```bash
+$ cd ./database_dir && mkdir lz4_s2 && cd lz4_s2
+$ cp ../../server_config/config_lz4_s2.xml ./
+$ numactl -C 30-59,150-179 [CLICKHOUSE_EXE] server -C config_lz4_s2.xml >&/dev/null&
+```
+
+ZSTD:
+
+```bash
+$ cd ./database_dir && mkdir zstd_s2 && cd zstd_s2
+$ cp ../../server_config/config_zstd_s2.xml ./
+$ numactl -C 30-59,150-179 [CLICKHOUSE_EXE] server -C config_zstd_s2.xml >&/dev/null&
+```
+
+IAA Deflate:
+
+```bash
+$ cd ./database_dir && mkdir deflate_s2 && cd deflate_s2
+$ cp ../../server_config/config_deflate_s2.xml ./
+$ numactl -C 30-59,150-179 [CLICKHOUSE_EXE] server -C config_deflate_s2.xml >&/dev/null&
+```
+
+두 번째 인스턴스의 테이블 생성 및 데이터 삽입
+
+테이블 생성:
+
+```bash
+$ [CLICKHOUSE_EXE] client -m --port=9001
+```
+
+데이터 삽입:
+
+```bash
+$ [CLICKHOUSE_EXE] client --query "INSERT INTO [TBL_FILE_NAME] FORMAT CSV" < [TBL_FILE_NAME].tbl --port=9001
+```
+
+- [TBL_FILE_NAME]은 `./benchmark_sample/rawdata_dir/ssb-dbgen` 아래의 *. tbl이라는 정규 표현식으로 명명된 파일의 이름을 나타냅니다.
+- `--port=9001`은 서버 인스턴스의 할당된 포트를 나타내며, 이 포트는 config_lz4_s2.xml/config_zstd_s2.xml/config_deflate_s2.xml에서 정의되어 있습니다. 더 많은 인스턴스의 경우 값: 9002/9003으로 교체해야 하며, 이는 각각 s3/s4 인스턴스를 나타냅니다. 포트를 할당하지 않으면 기본적으로 9000이 사용되며, 이는 첫 번째 인스턴스에서 사용되었습니다.
+
+2 인스턴스로 벤치마크 실행하기
+
+LZ4:
+
+```bash
+$ cd ./database_dir/lz4
+$ numactl -C 0-29,120-149 [CLICKHOUSE_EXE] server -C config_lz4.xml >&/dev/null&
+$ cd ./database_dir/lz4_s2
+$ numactl -C 30-59,150-179 [CLICKHOUSE_EXE] server -C config_lz4_s2.xml >&/dev/null&
+$ cd ./client_scripts
+$ numactl -m 1 -N 1 python3 client_stressing_test.py queries_ssb.sql 2 > lz4_2insts.log
+```
+
+ZSTD:
+
+```bash
+$ cd ./database_dir/zstd
+$ numactl -C 0-29,120-149 [CLICKHOUSE_EXE] server -C config_zstd.xml >&/dev/null&
+$ cd ./database_dir/zstd_s2
+$ numactl -C 30-59,150-179 [CLICKHOUSE_EXE] server -C config_zstd_s2.xml >&/dev/null&
+$ cd ./client_scripts
+$ numactl -m 1 -N 1 python3 client_stressing_test.py queries_ssb.sql 2 > zstd_2insts.log
+```
+
+IAA deflate:
+
+```bash
+$ cd ./database_dir/deflate
+$ numactl -C 0-29,120-149 [CLICKHOUSE_EXE] server -C config_deflate.xml >&/dev/null&
+$ cd ./database_dir/deflate_s2
+$ numactl -C 30-59,150-179 [CLICKHOUSE_EXE] server -C config_deflate_s2.xml >&/dev/null&
+$ cd ./client_scripts
+$ numactl -m 1 -N 1 python3 client_stressing_test.py queries_ssb.sql 2 > deflate_2insts.log
+```
+
+여기서 마지막 인수: `2`는 client_stressing_test.py에서 인스턴스의 수를 나타냅니다. 더 많은 인스턴스의 경우, 이를 3이나 4로 교체해야 합니다. 이 스크립트는 최대 4 인스턴스를 지원합니다.
+
+이제 세 개의 로그가 예상대로 출력되어야 합니다:
+
+```text
+lz4_2insts.log
+deflate_2insts.log
+zstd_2insts.log
+```
+성능 지표를 확인하는 방법:
+
+우리는 QPS에 주목하며, `QPS_Final`라는 키워드를 검색하여 통계를 수집합니다.
+
+4 인스턴스에 대한 벤치마크 설정은 위의 2 인스턴스와 유사합니다.
+최종 보고서 리뷰를 위해 2 인스턴스 벤치마크 데이터를 사용하는 것을 권장합니다.
+
+## 팁 {#tips}
+
+새 ClickHouse 서버를 실행하기 전에 매번 백그라운드 ClickHouse 프로세스가 실행 중이지 않은지 확인하십시오. 이전 프로세스를 확인하고 종료하십시오:
+
+```bash
+$ ps -aux| grep clickhouse
+$ kill -9 [PID]
+```
+./client_scripts/queries_ssb.sql의 쿼리 목록과 공식 [Star Schema Benchmark](/getting-started/example-datasets/star-schema)를 비교해보면, Q1.2/Q1.3/Q3.4라는 3개의 쿼리가 포함되어 있지 않음을 알 수 있습니다. 이는 이러한 쿼리에 대한 CPU 사용률%가 매우 낮은 < 10%이기 때문에 성능 차이를 시연할 수 없음을 의미합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/building_and_benchmarking_deflate_qpl.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/building_and_benchmarking_deflate_qpl.md.hash
new file mode 100644
index 00000000000..0bb50c3f01d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/building_and_benchmarking_deflate_qpl.md.hash
@@ -0,0 +1 @@
+a2a3ced4cd61bc8f
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/continuous-integration.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/continuous-integration.md
new file mode 100644
index 00000000000..d751ab0dcd1
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/continuous-integration.md
@@ -0,0 +1,184 @@
+---
+'description': 'ClickHouse 지속적인 통합 시스템 개요'
+'sidebar_label': '지속적인 통합 (CI)'
+'sidebar_position': 55
+'slug': '/development/continuous-integration'
+'title': '지속적인 통합 (CI)'
+'doc_type': 'reference'
+---
+
+
+# 지속적 통합 (CI)
+
+풀 리퀘스트를 제출하면 ClickHouse [지속적 통합 (CI) 시스템](tests.md#test-automation)에 의해 코드에 대한 자동화된 검사가 실행됩니다. 이는 리포지토리 유지 관리자가 (ClickHouse 팀의 누군가) 당신의 코드를 검토하고 풀 리퀘스트에 `can be tested` 레이블을 추가한 후에 발생합니다. 검사의 결과는 [GitHub 검사 문서](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-status-checks)에서 설명된 대로 GitHub 풀 리퀘스트 페이지에 나열됩니다. 검사가 실패하면 이를 수정해야 할 수도 있습니다. 이 페이지는 마주칠 수 있는 검사에 대한 개요와 이를 수정할 수 있는 방법을 제공합니다.
+
+검사 실패가 당신의 변경 사항과 관련이 없는 것처럼 보이면, 이는 일시적인 실패나 인프라 문제일 수 있습니다. CI 검사를 재시작하기 위해 풀 리퀘스트에 빈 커밋을 푸시하십시오:
+
+```shell
+git reset
+git commit --allow-empty
+git push
+```
+
+무엇을 해야 할지 확실하지 않으면, 유지 관리자에게 도움을 요청하세요.
+
+## 마스터와의 병합 {#merge-with-master}
+
+PR이 마스터에 병합될 수 있는지 확인합니다. 그렇지 않으면 `Cannot fetch mergecommit` 메시지와 함께 실패합니다. 이 검사를 수정하려면 [GitHub 문서](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github)에 설명된 대로 충돌을 해결하거나 `master` 브랜치를 당신의 풀 리퀘스트 브랜치에 병합하십시오.
+
+## 문서 검사 {#docs-check}
+
+ClickHouse 문서 웹사이트를 빌드하려고 시도합니다. 문서에서 무언가를 변경했을 경우 실패할 수 있습니다. 가장 가능성이 높은 이유는 문서의 어떤 교차 링크가 잘못되었기 때문입니다. 검사 보고서로 가서 `ERROR` 및 `WARNING` 메시지를 찾으세요.
+
+## 설명 검사 {#description-check}
+
+풀 리퀘스트의 설명이 [PULL_REQUEST_TEMPLATE.md](https://github.com/ClickHouse/ClickHouse/blob/master/.github/PULL_REQUEST_TEMPLATE.md) 템플릿에 부합하는지 확인합니다. 변경 사항에 대한 변경 로그 카테고리를 지정해야 하며 (예: 버그 수정), [CHANGELOG.md](../whats-new/changelog/index.md)를 위해 변경 사항을 설명하는 사용자 가독성 메시지를 작성해야 합니다.
+
+## Docker 이미지 {#docker-image}
+
+ClickHouse 서버와 키퍼의 Docker 이미지를 빌드하여 올바르게 빌드되는지 확인합니다.
+
+### 공식 도커 라이브러리 테스트 {#official-docker-library-tests}
+
+`clickhouse/clickhouse-server` Docker 이미지가 올바르게 작동하는지 확인하기 위해 [공식 Docker 라이브러리](https://github.com/docker-library/official-images/tree/master/test#alternate-config-files)의 테스트를 실행합니다.
+
+새로운 테스트를 추가하려면 `ci/jobs/scripts/docker_server/tests/$test_name` 디렉토리를 만들고 그곳에 `run.sh` 스크립트를 추가하세요.
+
+테스트에 대한 추가 세부 정보는 [CI 작업 스크립트 문서](https://github.com/ClickHouse/ClickHouse/tree/master/ci/jobs/scripts/docker_server)에서 확인할 수 있습니다.
+
+## 마커 검사 {#marker-check}
+
+이 검사는 CI 시스템이 풀 리퀘스트를 처리하기 시작했음을 의미합니다. 'pending' 상태일 때는 모든 검사가 아직 시작되지 않았음을 의미합니다. 모든 검사가 시작된 후 상태는 'success'로 변경됩니다.
+
+## 스타일 검사 {#style-check}
+
+코드 베이스에 대해 다양한 스타일 검사를 수행합니다.
+
+스타일 검사 작업의 기본 검사:
+
+##### cpp {#cpp}
+[`ci/jobs/scripts/check_style/check_cpp.sh`](https://github.com/ClickHouse/ClickHouse/blob/master/ci/jobs/scripts/check_style/check_cpp.sh) 스크립트를 사용하여 간단한 정규 표현식 기반 코드 스타일 검사를 수행합니다 (로컬에서 실행할 수도 있음).
+실패할 경우 [코드 스타일 가이드](style.md)에 따라 스타일 문제를 수정하십시오.
+
+##### codespell, aspell {#codespell}
+문법 오류 및 오타를 검사합니다.
+
+##### mypy {#mypy}
+Python 코드에 대한 정적 타입 검사를 수행합니다.
+
+### 로컬에서 스타일 검사 작업 실행하기 {#running-style-check-locally}
+
+전체 _스타일 검사_ 작업은 다음과 같이 Docker 컨테이너에서 로컬로 실행할 수 있습니다:
+
+```sh
+python -m ci.praktika run "Style check"
+```
+
+특정 검사를 실행하려면 (예: _cpp_ 검사):
+```sh
+python -m ci.praktika run "Style check" --test cpp
+```
+
+이 명령은 `clickhouse/style-test` Docker 이미지를 당기고 컨테이너화된 환경에서 작업을 실행합니다. Python 3과 Docker 외에 다른 종속성은 필요하지 않습니다.
+
+## 빠른 테스트 {#fast-test}
+
+정상적으로 이는 PR에 대해 실행되는 첫 번째 검사입니다. ClickHouse를 빌드하고 대부분의 [무상태 기능 테스트](tests.md#functional-tests)를 실행하며, 일부는 생략합니다. 실패할 경우 수정될 때까지 추가 검사가 시작되지 않습니다. 보고서를 확인하여 어떤 테스트가 실패하는지 확인한 후, [여기](#running-fast-test-locally)에 설명된 대로 로컬에서 실패를 재현하십시오.
+
+#### 로컬에서 빠른 테스트 실행하기: {#running-fast-test-locally}
+
+```sh
+python -m ci.praktika run "Fast test" [--test some_test_name]
+```
+
+이 명령은 `clickhouse/fast-test` Docker 이미지를 당기고 컨테이너화된 환경에서 작업을 실행합니다. Python 3과 Docker 외에 다른 종속성은 필요하지 않습니다.
+
+## 빌드 검사 {#build-check}
+
+추후 단계에서 사용하기 위해 다양한 구성에서 ClickHouse를 빌드합니다.
+
+### 로컬에서 빌드 실행 {#running-builds-locally}
+
+CI와 유사한 환경에서 빌드를 다음과 같이 실행할 수 있습니다:
+
+```bash
+python -m ci.praktika run ""
+```
+
+Python 3과 Docker 외에 다른 종속성은 필요하지 않습니다.
+
+#### 사용 가능한 빌드 작업 {#available-build-jobs}
+
+빌드 작업 이름은 CI 보고서에 나타나는 것과 정확히 동일합니다:
+
+**AMD64 빌드:**
+- `Build (amd_debug)` - 심볼이 포함된 디버그 빌드
+- `Build (amd_release)` - 최적화된 릴리스 빌드
+- `Build (amd_asan)` - 주소 소독기 빌드
+- `Build (amd_tsan)` - 스레드 소독기 빌드
+- `Build (amd_msan)` - 메모리 소독기 빌드
+- `Build (amd_ubsan)` - 정의되지 않은 동작 소독기 빌드
+- `Build (amd_binary)` - 얇은 LTO 없이 빠른 릴리스 빌드
+- `Build (amd_compat)` - 오래된 시스템을 위한 호환성 빌드
+- `Build (amd_musl)` - musl libc로 빌드
+- `Build (amd_darwin)` - macOS 빌드
+- `Build (amd_freebsd)` - FreeBSD 빌드
+
+**ARM64 빌드:**
+- `Build (arm_release)` - ARM64 최적화된 릴리스 빌드
+- `Build (arm_asan)` - ARM64 주소 소독기 빌드
+- `Build (arm_coverage)` - 커버리지 계측이 포함된 ARM64 빌드
+- `Build (arm_binary)` - ARM64 얇은 LTO 없이 빠른 릴리스 빌드
+- `Build (arm_darwin)` - macOS ARM64 빌드
+- `Build (arm_v80compat)` - ARMv8.0 호환성 빌드
+
+**기타 아키텍처:**
+- `Build (ppc64le)` - PowerPC 64비트 리틀엔디안
+- `Build (riscv64)` - RISC-V 64비트
+- `Build (s390x)` - IBM System/390 64비트
+- `Build (loongarch64)` - LoongArch 64비트
+
+작업이 성공하면 빌드 결과는 `/ci/tmp/build` 디렉토리에서 사용할 수 있습니다.
+
+**참고:** "기타 아키텍처" 카테고리에 없는 빌드(크로스 컴파일을 사용하는 경우)의 경우, 로컬 머신 아키텍처는 `BUILD_JOB_NAME`에 의해 요청된 빌드를 생성하기 위해 빌드 유형과 일치해야 합니다.
+
+#### 예시 {#example-run-local}
+
+로컬 디버그 빌드를 실행하려면:
+
+```bash
+python -m ci.praktika run "Build (amd_debug)"
+```
+
+위의 접근 방식이 작동하지 않으면 빌드 로그에서 cmake 옵션을 사용하고 [일반 빌드 프로세스](../development/build.md)를 따르십시오.
+
+## 무상태 기능 테스트 {#functional-stateless-tests}
+
+다양한 구성으로 빌드된 ClickHouse 이진 파일에 대해 [무상태 기능 테스트](tests.md#functional-tests)를 실행합니다. 보고서를 확인하여 어떤 테스트가 실패하는지 확인한 후, [여기](#functional-stateless-tests)에 설명된 대로 로컬에서 실패를 재현하십시오. 주소 소독기에서 실패할 수 있으므로 올바른 빌드 구성을 사용해야 합니다. [CI 빌드 검사 페이지](/install/advanced)에서 이진파일을 다운로드하거나 로컬에서 빌드하십시오.
+
+## 통합 테스트 {#integration-tests}
+
+[통합 테스트](tests.md#integration-tests)를 실행합니다.
+
+## 버그 수정 검증 체크 {#bugfix-validate-check}
+
+새로운 테스트(기능 또는 통합)가 있거나 마스터 브랜치에서 빌드된 이진 파일에서 실패하는 변경된 테스트가 있는지 확인합니다. 이 검사는 풀 리퀘스트에 "pr-bugfix" 레이블이 있을 때 트리거됩니다.
+
+## 스트레스 테스트 {#stress-test}
+
+여러 클라이언트에서 동시에 무상태 기능 테스트를 실행하여 동시성과 관련된 오류를 감지합니다. 실패할 경우:
+
+* 먼저 모든 다른 테스트 실패를 수정하십시오;
+* 보고서를 확인하여 서버 로그를 찾아 가능한 오류 원인을 확인하십시오.
+
+## 호환성 검증 {#compatibility-check}
+
+`clickhouse` 이진 파일이 오래된 libc 버전이 있는 배포판에서 실행되는지 확인합니다. 실패할 경우 유지 관리자에게 도움을 요청하십시오.
+
+## AST 퍼저 {#ast-fuzzer}
+
+무작위로 생성된 쿼리를 실행하여 프로그램 오류를 잡아냅니다. 실패할 경우 유지 관리자에게 도움을 요청하십시오.
+
+## 성능 테스트 {#performance-tests}
+
+쿼리 성능의 변화를 측정합니다. 이는 실행하는 데 약 6시간이 걸리는 가장 긴 검사입니다. 성능 테스트 보고서는 [여기](https://github.com/ClickHouse/ClickHouse/tree/master/docker/test/performance-comparison#how-to-read-the-report)에서 자세히 설명되어 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/continuous-integration.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/continuous-integration.md.hash
new file mode 100644
index 00000000000..421036d0368
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/continuous-integration.md.hash
@@ -0,0 +1 @@
+c83219c02584ff4e
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/contrib.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/contrib.md
new file mode 100644
index 00000000000..c924d09855f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/contrib.md
@@ -0,0 +1,52 @@
+---
+'description': '페이지는 ClickHouse 서드파티 사용과 서드파티 라이브러리를 추가하고 유지 관리하는 방법을 설명합니다.'
+'sidebar_label': '서드파티 라이브러리'
+'sidebar_position': 60
+'slug': '/development/contrib'
+'title': '서드파티 라이브러리'
+'doc_type': 'reference'
+---
+
+
+# 서드파티 라이브러리
+
+ClickHouse는 다른 데이터베이스에 연결하거나, 디스크에서 데이터를 로드/저장할 때 데이터를 디코딩/인코딩하거나, 특정 특수 SQL 함수를 구현하는 등 다양한 목적으로 서드파티 라이브러리를 활용합니다.
+대상 시스템의 사용 가능한 라이브러리에 의존하지 않기 위해, 각 서드파티 라이브러리는 ClickHouse의 소스 트리에 Git 서브모듈로 가져와지며 ClickHouse와 함께 컴파일 및 연결됩니다.
+서드파티 라이브러리와 그 라이선스 목록은 다음 쿼리를 통해 얻을 수 있습니다:
+
+```sql
+SELECT library_name, license_type, license_path FROM system.licenses ORDER BY library_name COLLATE 'en';
+```
+
+나열된 라이브러리는 ClickHouse 리포지토리의 `contrib/` 디렉터리에 위치한 것들입니다.
+빌드 옵션에 따라 일부 라이브러리는 컴파일되지 않을 수 있으며, 그 결과 런타임에서 해당 기능을 사용할 수 없습니다.
+
+[예시](https://sql.clickhouse.com?query_id=478GCPU7LRTSZJBNY3EJT3)
+
+## 서드파티 라이브러리 추가 및 유지관리 {#adding-and-maintaining-third-party-libraries}
+
+각 서드파티 라이브러리는 ClickHouse 리포지토리의 `contrib/` 디렉터리 아래에 전용 디렉터리에 있어야 합니다.
+라이브러리 디렉터리에 외부 코드를 복사해서 dumping하는 것은 피하십시오.
+대신 외부 업스트림 리포지토리에서 서드파티 코드를 가져오는 Git 서브모듈을 생성하십시오.
+
+ClickHouse에서 사용되는 모든 서브모듈은 `.gitmodule` 파일에 나열됩니다.
+- 라이브러리를 기본적으로 그대로 사용할 수 있는 경우, 업스트림 리포지토리를 직접 참조할 수 있습니다.
+- 라이브러리에 패치가 필요할 경우, [ClickHouse 조직의 GitHub](https://github.com/ClickHouse)에서 업스트림 리포지토리의 포크를 생성하십시오.
+
+후자의 경우, 사용자 정의 패치를 업스트림 커밋으로부터 최대한 격리하는 것을 목표로 합니다.
+이를 위해, 통합하려는 브랜치 또는 태그에서 `ClickHouse/` 접두사가 붙은 브랜치를 생성합니다. 예를 들어 `ClickHouse/2024_2` (브랜치 `2024_2`의 경우) 또는 `ClickHouse/release/vX.Y.Z` (태그 `release/vX.Y.Z`의 경우).
+업스트림 개발 브랜치인 `master`/ `main` / `dev`를 피하십시오 (즉, 포크 리포지토리에서 브랜치 `ClickHouse/master` / `ClickHouse/main` / `ClickHouse/dev`에 접두사를 붙이지 마십시오).
+이러한 브랜치는 이동하는 목표로, 적절한 버전 관리를 어렵게 만듭니다.
+"접두사 브랜치"는 포크 내에서 업스트림 리포지토리로부터의 변경사항이 사용자 정의 `ClickHouse/` 브랜치에 영향을 미치지 않게 합니다.
+`contrib/`의 서브모듈은 포크된 서드파티 리포지토리의 `ClickHouse/` 브랜치만 추적해야 합니다.
+
+패치는 외부 라이브러리의 `ClickHouse/` 브랜치에 대해서만 적용됩니다.
+
+이를 수행하는 방법은 두 가지가 있습니다:
+- 포크 리포지토리의 `ClickHouse/` 접두사가 붙은 브랜치에 대해 새로운 수정을 작성하려는 경우, 예를 들어 sanitizer 수정을 하고자 할 경우입니다. 이 경우, 수정을 `ClickHouse/` 접두사가 붙은 브랜치로 푸시합니다, 예를 들어 `ClickHouse/fix-sanitizer-disaster`. 이후 사용자 정의 추적 브랜치에 대해 새로운 브랜스에서 PR을 만듭니다, 예를 들면 `ClickHouse/2024_2 <-- ClickHouse/fix-sanitizer-disaster` 및 PR을 병합합니다.
+- 서브모듈을 업데이트하고 이전 패치를 다시 적용해야 하는 경우입니다. 이 경우, 이전 PR을 다시 생성하는 것은 과도합니다. 대신, 단순히 이전 커밋을 새로운 `ClickHouse/` 브랜치(새로운 버전과 해당되는)로 체리픽합니다. 여러 커밋을 가진 PR은 커밋을 압축해도 괜찮습니다. 최상의 경우, 사용자 정의 패치를 업스트림에 기여했으며 새로운 버전에서 패치를 생략할 수 있습니다.
+
+서브모듈이 업데이트된 후, ClickHouse의 서브모듈을 업데이트하여 포크의 새로운 해시를 가리키도록 합니다.
+
+서드파티 라이브러리의 패치를 공식 리포지토리를 염두에 두고 작성하며, 패치를 업스트림 리포지토리에 기여하는 것을 고려하십시오.
+이렇게 하면 다른 사람들도 패치의 혜택을 누릴 수 있으며 ClickHouse 팀에게 유지 관리 부담이 되지 않습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/contrib.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/contrib.md.hash
new file mode 100644
index 00000000000..5c30f867271
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/contrib.md.hash
@@ -0,0 +1 @@
+f6fa87108f9d7d69
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/developer-instruction.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/developer-instruction.md
new file mode 100644
index 00000000000..b2f7c37c500
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/developer-instruction.md
@@ -0,0 +1,196 @@
+---
+'description': 'ClickHouse 개발을 위한 전제 조건 및 설정 지침'
+'sidebar_label': '전제 조건'
+'sidebar_position': 5
+'slug': '/development/developer-instruction'
+'title': '개발자 전제 조건'
+'doc_type': 'guide'
+---
+
+
+# 전제 조건
+
+ClickHouse는 Linux, FreeBSD 및 macOS에서 빌드할 수 있습니다. Windows를 사용하는 경우에도 Linux에서 실행되는 가상 머신에서 ClickHouse를 빌드할 수 있습니다. 예를 들어 [VirtualBox](https://www.virtualbox.org/) 를 사용하여 Ubuntu를 실행할 수 있습니다.
+
+## GitHub에 저장소 만들기 {#create-a-repository-on-github}
+
+ClickHouse 개발을 시작하려면 [GitHub](https://www.github.com/) 계정이 필요합니다. 또한 로컬에서 SSH 키를 생성하고(아직 생성하지 않았다면) 공개 키를 GitHub에 업로드하십시오. 이는 패치를 기여하기 위한 전제 조건입니다.
+
+다음으로, 개인 계정에서 오른쪽 상단의 "fork" 버튼을 클릭하여 [ClickHouse 저장소](https://github.com/ClickHouse/ClickHouse/)를 포크합니다.
+
+수정 사항을 기여하려면, 예를 들어 문제 수정이나 기능 추가와 같은 경우, 먼저 포크한 브랜치에 변경 사항을 커밋한 후, 주 저장소에 대해 변경 사항과 함께 "Pull Request"를 생성하십시오.
+
+Git 저장소 작업을 위해 Git을 설치하십시오. 예를 들어, Ubuntu에서 다음을 실행합니다:
+
+```sh
+sudo apt update
+sudo apt install git
+```
+
+Git 치트 시트는 [여기](https://education.github.com/git-cheat-sheet-education.pdf)에서 찾을 수 있습니다. 자세한 Git 매뉴얼은 [여기](https://git-scm.com/book/en/v2)에서 확인하실 수 있습니다.
+
+## 개발 머신에 저장소 복제하기 {#clone-the-repository-to-your-development-machine}
+
+먼저, 작업 머신에 소스 파일을 다운로드합니다. 즉, 저장소를 복제합니다:
+
+```sh
+git clone git@github.com:your_github_username/ClickHouse.git # replace the placeholder with your GitHub user name
+cd ClickHouse
+```
+
+이 명령은 소스 코드, 테스트 및 기타 파일을 포함하는 `ClickHouse/` 디렉토리를 생성합니다. URL 뒤에 체크 아웃할 사용자 지정 디렉토리를 지정할 수 있지만, 이 경로에 공백이 포함되지 않는 것이 중요합니다. 공백이 포함되면 나중에 빌드 오류가 발생할 수 있습니다.
+
+ClickHouse의 Git 저장소는 서브모듈을 사용하여 제3자 라이브러리를 가져옵니다. 서브모듈은 기본적으로 체크 아웃되지 않습니다. 다음 중 하나를 수행할 수 있습니다.
+
+- `--recurse-submodules` 옵션과 함께 `git clone`을 실행합니다.
+
+- `--recurse-submodules` 없이 `git clone`을 실행한 경우, 모든 서브모듈을 명시적으로 체크 아웃하려면 `git submodule update --init --jobs `을 실행합니다. (``은 예를 들어 `12`로 설정하여 다운로드를 병렬화할 수 있습니다.)
+
+- `--recurse-submodules` 없이 `git clone`을 실행하고 [스파스](https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout/)와 [샬로우](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/) 서브모듈 체크 아웃을 사용하여 필요 없는 파일과 서브모듈의 기록을 생략하여 공간을 절약하려면(약 15GB 대신 약 5GB) `./contrib/update-submodules.sh`를 실행합니다. 이 대안은 CI에 의해 사용되지만, 서브모듈 작업이 덜 편리하고 느려지기 때문에 로컬 개발에는 권장되지 않습니다.
+
+Git 서브모듈의 상태를 확인하려면 `git submodule status`를 실행합니다.
+
+다음과 같은 오류 메시지가 표시되면
+
+```bash
+Permission denied (publickey).
+fatal: Could not read from remote repository.
+
+Please make sure you have the correct access rights
+and the repository exists.
+```
+
+GitHub에 연결하기 위한 SSH 키가 누락된 것입니다. 이 키는 일반적으로 `~/.ssh`에 위치합니다. SSH 키가 수락되려면 GitHub의 설정에서 업로드해야 합니다.
+
+HTTPS를 통해 저장소를 복제할 수도 있습니다:
+
+```sh
+git clone https://github.com/ClickHouse/ClickHouse.git
+```
+
+그러나 이렇게 하면 서버에 변경 사항을 전송할 수 없습니다. 임시로 사용하는 것은 가능하지만, 나중에 SSH 키를 추가하고 원격 주소를 `git remote` 명령으로 교체해야 합니다.
+
+또한 원래 ClickHouse 저장소 주소를 로컬 저장소에 추가하여 그곳에서 업데이트를 가져올 수 있습니다:
+
+```sh
+git remote add upstream git@github.com:ClickHouse/ClickHouse.git
+```
+
+이 명령을 성공적으로 실행한 후에는 `git pull upstream master`를 실행하여 ClickHouse의 주요 저장소에서 업데이트를 가져올 수 있습니다.
+
+:::tip
+`git push`를 그대로 사용하지 마세요. 잘못된 원격 및/또는 잘못된 브랜치에 푸시할 수 있습니다. 원격 및 브랜치 이름을 명시적으로 지정하는 것이 좋습니다. 예: `git push origin my_branch_name`.
+:::
+
+## 코드 작성하기 {#writing-code}
+
+다음은 ClickHouse를 위한 코드를 작성할 때 유용할 수 있는 빠른 링크입니다:
+
+- [ClickHouse 아키텍처](/development/architecture/).
+- [코드 스타일 가이드](/development/style/).
+- [제3자 라이브러리](/development/contrib#adding-and-maintaining-third-party-libraries)
+- [테스트 작성하기](/development/tests/)
+- [열린 문제들](https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aopen+is%3Aissue+label%3A%22easy+task%22)
+
+### IDE {#ide}
+
+[Visual Studio Code](https://code.visualstudio.com/)와 [Neovim](https://neovim.io/)은 이전에 ClickHouse 개발에 잘 사용된 두 가지 옵션입니다. VS Code를 사용하는 경우, 성능이 훨씬 더 우수한 [clangd 확장](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd)을 사용하여 IntelliSense를 대체할 것을 권장합니다.
+
+[CLion](https://www.jetbrains.com/clion/)은 또 다른 훌륭한 대안입니다. 그러나 ClickHouse와 같은 대규모 프로젝트에서는 느려질 수 있습니다. CLion을 사용할 때 염두에 두어야 할 몇 가지 사항은 다음과 같습니다:
+
+- CLion은 자동으로 `build` 경로를 생성하며 빌드 유형으로 `debug`를 자동 선택합니다.
+- CLion에 정의된 CMake 버전을 사용하며, 사용자가 설치한 버전이 아닙니다.
+- CLion은 `ninja` 대신 `make`를 사용하여 빌드 작업을 실행합니다(이는 정상적인 동작입니다).
+
+다른 사용할 수 있는 IDE로는 [Sublime Text](https://www.sublimetext.com/), [Qt Creator](https://www.qt.io/product/development-tools), 또는 [Kate](https://kate-editor.org/)가 있습니다.
+
+## Pull Request 만들기 {#create-a-pull-request}
+
+GitHub UI에서 포크한 저장소로 이동합니다. 브랜치에서 개발하고 있는 경우 해당 브랜치를 선택해야 합니다. 화면에는 "Pull request" 버튼이 위치해 있습니다. 본질적으로 이것은 "내 변경 사항을 주 저장소에 수용하기 위한 요청 생성"을 의미합니다.
+
+작업이 아직 완료되지 않았더라도 Pull Request를 생성할 수 있습니다. 이 경우 제목의 시작 부분에 "WIP"(work in progress)라는 단어를 넣어야 하며, 나중에 변경할 수 있습니다. 이는 변경 사항의 공동 검토 및 토론과 모든 테스트를 실행하는 데 유용합니다. 변경 사항에 대한 간단한 설명을 제공하는 것이 중요합니다. 나중에 릴리스 변경 로그 생성을 위해 사용됩니다.
+
+ClickHouse 직원이 PR에 "테스트 가능" 태그를 붙이면 테스트가 시작됩니다. 일부 초기 검사 결과(예: 코드 스타일)는 몇 분 이내에 도착할 것입니다. 빌드 검사 결과는 반 시간 이내에 도착합니다. 주요 테스트 세트는 1시간 이내에 보고됩니다.
+
+시스템은 Pull Request에 대해 ClickHouse 이진 빌드를 개별적으로 준비합니다. 이 빌드를 가져오려면 검사 목록에서 "Builds" 항목 옆의 "Details" 링크를 클릭하십시오. 여기에서 프로덕션 서버에 배포할 수 있는 ClickHouse의 .deb 패키지 빌드에 대한 직접 링크를 찾을 수 있습니다(두려움이 없다면).
+
+## 문서 작성하기 {#write-documentation}
+
+새로운 기능을 추가하는 모든 Pull Request는 적절한 문서와 함께 제공되어야 합니다. 문서 변경 사항을 미리 보려면 로컬에서 문서 페이지를 빌드하는 방법에 대한 지침이 README.md 파일 [여기](https://github.com/ClickHouse/clickhouse-docs)에 있습니다. ClickHouse에 새로운 기능을 추가할 때 아래 템플릿을 가이드로 사용할 수 있습니다:
+
+```markdown
+
+# newFunctionName
+
+A short description of the function goes here. It should describe briefly what it does and a typical usage case.
+
+**Syntax**
+
+\```sql
+newFunctionName(arg1, arg2[, arg3])
+\```
+
+**Arguments**
+
+- `arg1` — Description of the argument. [DataType](../data-types/float.md)
+- `arg2` — Description of the argument. [DataType](../data-types/float.md)
+- `arg3` — Description of optional argument (optional). [DataType](../data-types/float.md)
+
+**Implementation Details**
+
+A description of implementation details if relevant.
+
+**Returned value**
+
+- Returns {insert what the function returns here}. [DataType](../data-types/float.md)
+
+**Example**
+
+Query:
+
+\```sql
+SELECT 'write your example query here';
+\```
+
+Response:
+
+\```response
+┌───────────────────────────────────┐
+│ the result of the query │
+└───────────────────────────────────┘
+\```
+```
+
+## 테스트 데이터 사용하기 {#using-test-data}
+
+ClickHouse 개발은 종종 현실적인 데이터 세트를 로드해야 합니다. 이는 성능 테스트에 특히 중요합니다. 웹 분석의 익명화된 데이터를 특별히 준비했습니다. 추가로 약 3GB의 여유 디스크 공간이 필요합니다.
+
+```sh
+sudo apt install wget xz-utils
+
+wget https://datasets.clickhouse.com/hits/tsv/hits_v1.tsv.xz
+wget https://datasets.clickhouse.com/visits/tsv/visits_v1.tsv.xz
+
+xz -v -d hits_v1.tsv.xz
+xz -v -d visits_v1.tsv.xz
+
+clickhouse-client
+```
+
+clickhouse-client에서:
+
+```sql
+CREATE DATABASE IF NOT EXISTS test;
+
+CREATE TABLE test.hits ( WatchID UInt64, JavaEnable UInt8, Title String, GoodEvent Int16, EventTime DateTime, EventDate Date, CounterID UInt32, ClientIP UInt32, ClientIP6 FixedString(16), RegionID UInt32, UserID UInt64, CounterClass Int8, OS UInt8, UserAgent UInt8, URL String, Referer String, URLDomain String, RefererDomain String, Refresh UInt8, IsRobot UInt8, RefererCategories Array(UInt16), URLCategories Array(UInt16), URLRegions Array(UInt32), RefererRegions Array(UInt32), ResolutionWidth UInt16, ResolutionHeight UInt16, ResolutionDepth UInt8, FlashMajor UInt8, FlashMinor UInt8, FlashMinor2 String, NetMajor UInt8, NetMinor UInt8, UserAgentMajor UInt16, UserAgentMinor FixedString(2), CookieEnable UInt8, JavascriptEnable UInt8, IsMobile UInt8, MobilePhone UInt8, MobilePhoneModel String, Params String, IPNetworkID UInt32, TraficSourceID Int8, SearchEngineID UInt16, SearchPhrase String, AdvEngineID UInt8, IsArtifical UInt8, WindowClientWidth UInt16, WindowClientHeight UInt16, ClientTimeZone Int16, ClientEventTime DateTime, SilverlightVersion1 UInt8, SilverlightVersion2 UInt8, SilverlightVersion3 UInt32, SilverlightVersion4 UInt16, PageCharset String, CodeVersion UInt32, IsLink UInt8, IsDownload UInt8, IsNotBounce UInt8, FUniqID UInt64, HID UInt32, IsOldCounter UInt8, IsEvent UInt8, IsParameter UInt8, DontCountHits UInt8, WithHash UInt8, HitColor FixedString(1), UTCEventTime DateTime, Age UInt8, Sex UInt8, Income UInt8, Interests UInt16, Robotness UInt8, GeneralInterests Array(UInt16), RemoteIP UInt32, RemoteIP6 FixedString(16), WindowName Int32, OpenerName Int32, HistoryLength Int16, BrowserLanguage FixedString(2), BrowserCountry FixedString(2), SocialNetwork String, SocialAction String, HTTPError UInt16, SendTiming Int32, DNSTiming Int32, ConnectTiming Int32, ResponseStartTiming Int32, ResponseEndTiming Int32, FetchTiming Int32, RedirectTiming Int32, DOMInteractiveTiming Int32, DOMContentLoadedTiming Int32, DOMCompleteTiming Int32, LoadEventStartTiming Int32, LoadEventEndTiming Int32, NSToDOMContentLoadedTiming Int32, FirstPaintTiming Int32, RedirectCount Int8, SocialSourceNetworkID UInt8, SocialSourcePage String, ParamPrice Int64, ParamOrderID String, ParamCurrency FixedString(3), ParamCurrencyID UInt16, GoalsReached Array(UInt32), OpenstatServiceName String, OpenstatCampaignID String, OpenstatAdID String, OpenstatSourceID String, UTMSource String, UTMMedium String, UTMCampaign String, UTMContent String, UTMTerm String, FromTag String, HasGCLID UInt8, RefererHash UInt64, URLHash UInt64, CLID UInt32, YCLID UInt64, ShareService String, ShareURL String, ShareTitle String, `ParsedParams.Key1` Array(String), `ParsedParams.Key2` Array(String), `ParsedParams.Key3` Array(String), `ParsedParams.Key4` Array(String), `ParsedParams.Key5` Array(String), `ParsedParams.ValueDouble` Array(Float64), IslandID FixedString(16), RequestNum UInt32, RequestTry UInt8) ENGINE = MergeTree PARTITION BY toYYYYMM(EventDate) SAMPLE BY intHash32(UserID) ORDER BY (CounterID, EventDate, intHash32(UserID), EventTime);
+
+CREATE TABLE test.visits ( CounterID UInt32, StartDate Date, Sign Int8, IsNew UInt8, VisitID UInt64, UserID UInt64, StartTime DateTime, Duration UInt32, UTCStartTime DateTime, PageViews Int32, Hits Int32, IsBounce UInt8, Referer String, StartURL String, RefererDomain String, StartURLDomain String, EndURL String, LinkURL String, IsDownload UInt8, TraficSourceID Int8, SearchEngineID UInt16, SearchPhrase String, AdvEngineID UInt8, PlaceID Int32, RefererCategories Array(UInt16), URLCategories Array(UInt16), URLRegions Array(UInt32), RefererRegions Array(UInt32), IsYandex UInt8, GoalReachesDepth Int32, GoalReachesURL Int32, GoalReachesAny Int32, SocialSourceNetworkID UInt8, SocialSourcePage String, MobilePhoneModel String, ClientEventTime DateTime, RegionID UInt32, ClientIP UInt32, ClientIP6 FixedString(16), RemoteIP UInt32, RemoteIP6 FixedString(16), IPNetworkID UInt32, SilverlightVersion3 UInt32, CodeVersion UInt32, ResolutionWidth UInt16, ResolutionHeight UInt16, UserAgentMajor UInt16, UserAgentMinor UInt16, WindowClientWidth UInt16, WindowClientHeight UInt16, SilverlightVersion2 UInt8, SilverlightVersion4 UInt16, FlashVersion3 UInt16, FlashVersion4 UInt16, ClientTimeZone Int16, OS UInt8, UserAgent UInt8, ResolutionDepth UInt8, FlashMajor UInt8, FlashMinor UInt8, NetMajor UInt8, NetMinor UInt8, MobilePhone UInt8, SilverlightVersion1 UInt8, Age UInt8, Sex UInt8, Income UInt8, JavaEnable UInt8, CookieEnable UInt8, JavascriptEnable UInt8, IsMobile UInt8, BrowserLanguage UInt16, BrowserCountry UInt16, Interests UInt16, Robotness UInt8, GeneralInterests Array(UInt16), Params Array(String), `Goals.ID` Array(UInt32), `Goals.Serial` Array(UInt32), `Goals.EventTime` Array(DateTime), `Goals.Price` Array(Int64), `Goals.OrderID` Array(String), `Goals.CurrencyID` Array(UInt32), WatchIDs Array(UInt64), ParamSumPrice Int64, ParamCurrency FixedString(3), ParamCurrencyID UInt16, ClickLogID UInt64, ClickEventID Int32, ClickGoodEvent Int32, ClickEventTime DateTime, ClickPriorityID Int32, ClickPhraseID Int32, ClickPageID Int32, ClickPlaceID Int32, ClickTypeID Int32, ClickResourceID Int32, ClickCost UInt32, ClickClientIP UInt32, ClickDomainID UInt32, ClickURL String, ClickAttempt UInt8, ClickOrderID UInt32, ClickBannerID UInt32, ClickMarketCategoryID UInt32, ClickMarketPP UInt32, ClickMarketCategoryName String, ClickMarketPPName String, ClickAWAPSCampaignName String, ClickPageName String, ClickTargetType UInt16, ClickTargetPhraseID UInt64, ClickContextType UInt8, ClickSelectType Int8, ClickOptions String, ClickGroupBannerID Int32, OpenstatServiceName String, OpenstatCampaignID String, OpenstatAdID String, OpenstatSourceID String, UTMSource String, UTMMedium String, UTMCampaign String, UTMContent String, UTMTerm String, FromTag String, HasGCLID UInt8, FirstVisit DateTime, PredLastVisit Date, LastVisit Date, TotalVisits UInt32, `TraficSource.ID` Array(Int8), `TraficSource.SearchEngineID` Array(UInt16), `TraficSource.AdvEngineID` Array(UInt8), `TraficSource.PlaceID` Array(UInt16), `TraficSource.SocialSourceNetworkID` Array(UInt8), `TraficSource.Domain` Array(String), `TraficSource.SearchPhrase` Array(String), `TraficSource.SocialSourcePage` Array(String), Attendance FixedString(16), CLID UInt32, YCLID UInt64, NormalizedRefererHash UInt64, SearchPhraseHash UInt64, RefererDomainHash UInt64, NormalizedStartURLHash UInt64, StartURLDomainHash UInt64, NormalizedEndURLHash UInt64, TopLevelDomain UInt64, URLScheme UInt64, OpenstatServiceNameHash UInt64, OpenstatCampaignIDHash UInt64, OpenstatAdIDHash UInt64, OpenstatSourceIDHash UInt64, UTMSourceHash UInt64, UTMMediumHash UInt64, UTMCampaignHash UInt64, UTMContentHash UInt64, UTMTermHash UInt64, FromHash UInt64, WebVisorEnabled UInt8, WebVisorActivity UInt32, `ParsedParams.Key1` Array(String), `ParsedParams.Key2` Array(String), `ParsedParams.Key3` Array(String), `ParsedParams.Key4` Array(String), `ParsedParams.Key5` Array(String), `ParsedParams.ValueDouble` Array(Float64), `Market.Type` Array(UInt8), `Market.GoalID` Array(UInt32), `Market.OrderID` Array(String), `Market.OrderPrice` Array(Int64), `Market.PP` Array(UInt32), `Market.DirectPlaceID` Array(UInt32), `Market.DirectOrderID` Array(UInt32), `Market.DirectBannerID` Array(UInt32), `Market.GoodID` Array(String), `Market.GoodName` Array(String), `Market.GoodQuantity` Array(Int32), `Market.GoodPrice` Array(Int64), IslandID FixedString(16)) ENGINE = CollapsingMergeTree(Sign) PARTITION BY toYYYYMM(StartDate) SAMPLE BY intHash32(UserID) ORDER BY (CounterID, StartDate, intHash32(UserID), VisitID);
+
+```
+
+데이터를 가져옵니다:
+
+```bash
+clickhouse-client --max_insert_block_size 100000 --query "INSERT INTO test.hits FORMAT TSV" < hits_v1.tsv
+clickhouse-client --max_insert_block_size 100000 --query "INSERT INTO test.visits FORMAT TSV" < visits_v1.tsv
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/developer-instruction.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/developer-instruction.md.hash
new file mode 100644
index 00000000000..ddc55da10a0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/developer-instruction.md.hash
@@ -0,0 +1 @@
+8569ad87629adc21
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/images/concurrency.png b/i18n/ko/docusaurus-plugin-content-docs/current/development/images/concurrency.png
new file mode 100644
index 00000000000..ffd344a54fb
Binary files /dev/null and b/i18n/ko/docusaurus-plugin-content-docs/current/development/images/concurrency.png differ
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/images/find-build-artifact.png b/i18n/ko/docusaurus-plugin-content-docs/current/development/images/find-build-artifact.png
new file mode 100644
index 00000000000..dc52e92c319
Binary files /dev/null and b/i18n/ko/docusaurus-plugin-content-docs/current/development/images/find-build-artifact.png differ
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/index.md
new file mode 100644
index 00000000000..d7462408cd0
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/index.md
@@ -0,0 +1,37 @@
+---
+'description': '개발 및 기여를 위한 인덱스 페이지'
+'slug': '/development/'
+'title': '개발 및 기여'
+'doc_type': 'landing-page'
+---
+
+이 섹션에서는 다음 페이지를 찾을 수 있습니다:
+
+
+
+
+| 페이지 | 설명 |
+|-----|-----|
+| [개발자 전제 조건](/development/developer-instruction) | ClickHouse 개발을 위한 전제 조건 및 설정 지침 |
+| [리눅스에서 ClickHouse 빌드하는 방법](/development/build) | 리눅스 시스템에서 소스 코드로 ClickHouse를 빌드하는 단계별 가이드 |
+| [macOS에서 macOS를 위한 빌드](/development/build-osx) | macOS 시스템에서 소스 코드로 ClickHouse를 빌드하는 가이드 |
+| [리눅스에서 macOS를 위한 빌드](/development/build-cross-osx) | 리눅스에서 macOS 시스템을 위해 ClickHouse를 교차 컴파일하는 가이드 |
+| [AARCH64를 위한 리눅스에서 ClickHouse 빌드하는 방법](/development/build-cross-arm) | AARCH64 아키텍처를 위한 소스 코드로 ClickHouse를 빌드하는 가이드 |
+| [RISC-V 64를 위한 리눅스에서 ClickHouse 빌드하는 방법](/development/build-cross-riscv) | RISC-V 64 아키텍처를 위한 소스 코드로 ClickHouse를 빌드하는 가이드 |
+| [s390x(zLinux)를 위한 리눅스에서 빌드](/development/build-cross-s390x) | s390x 아키텍처를 위한 소스 코드로 ClickHouse를 빌드하는 가이드 |
+| [LoongArch64를 위한 리눅스에서 빌드](/development/build-cross-loongarch) | LoongArch64 아키텍처를 위한 소스 코드로 ClickHouse를 빌드하는 가이드 |
+| [ClickHouse 테스트하기](/development/tests) | ClickHouse를 테스트하고 테스트 스위트를 실행하는 가이드 |
+| [아키텍처 개요](/development/architecture) | ClickHouse 아키텍처 및 컬럼 지향 설계에 대한 포괄적인 개요 |
+| [지속적 통합(CI)](/development/continuous-integration) | ClickHouse 지속적 통합 시스템 개요 |
+| [서드파티 라이브러리](/development/contrib) | ClickHouse 서드파티 사용 및 서드파티 라이브러리 추가 및 유지하는 방법에 대한 페이지 |
+| [C++ 스타일 가이드](/development/style) | ClickHouse C++ 개발을 위한 코딩 스타일 지침 |
+| [DEFLATE_QPL로 Clickhouse 빌드하기](/development/building_and_benchmarking_deflate_qpl) | DEFLATE_QPL 코덱으로 Clickhouse를 빌드하고 벤치마크를 실행하는 방법 |
+| [Rust 라이브러리 통합하기](/development/integrating_rust_libraries) | ClickHouse에 Rust 라이브러리를 통합하는 가이드 |
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/index.md.hash
new file mode 100644
index 00000000000..8b2736185b8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/index.md.hash
@@ -0,0 +1 @@
+3f53f983d14cd3f1
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/integrating_rust_libraries.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/integrating_rust_libraries.md
new file mode 100644
index 00000000000..9206431e48a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/integrating_rust_libraries.md
@@ -0,0 +1,86 @@
+---
+'description': 'ClickHouse에 Rust 라이브러리 통합에 대한 가이드'
+'sidebar_label': 'Rust 라이브러리'
+'slug': '/development/integrating_rust_libraries'
+'title': 'Rust 라이브러리 통합'
+'doc_type': 'guide'
+---
+
+
+# Rust 라이브러리
+
+Rust 라이브러리 통합은 BLAKE3 해시 함수 통합을 기반으로 설명됩니다.
+
+통합의 첫 번째 단계는 라이브러리를 /rust 폴더에 추가하는 것입니다. 이를 위해 빈 Rust 프로젝트를 생성하고 요구되는 라이브러리를 Cargo.toml에 포함해야 합니다. Cargo.toml에 `crate-type = ["staticlib"]`를 추가하여 새로운 라이브러리 컴파일을 정적(static)으로 구성하는 것도 필요합니다.
+
+다음 단계는 Corrosion 라이브러리를 사용하여 CMake에 라이브러리를 링크하는 것입니다. 첫 번째 단계는 /rust 폴더 내의 CMakeLists.txt에 라이브러리 폴더를 추가하는 것입니다. 그 후, 라이브러리 디렉토리에 CMakeLists.txt 파일을 추가해야 합니다. 여기에서 Corrosion 가져오기 함수를 호출해야 합니다. 다음은 BLAKE3를 가져오기 위해 사용된 코드입니다:
+
+```CMake
+corrosion_import_crate(MANIFEST_PATH Cargo.toml NO_STD)
+
+target_include_directories(_ch_rust_blake3 INTERFACE include)
+add_library(ch_rust::blake3 ALIAS _ch_rust_blake3)
+```
+
+따라서, 우리는 Corrosion을 사용하여 올바른 CMake 타겟을 생성하고, 이를 더 편리한 이름으로 변경할 것입니다. 이름 `_ch_rust_blake3`는 Cargo.toml에서 프로젝트 이름으로 사용되며 (`name = "_ch_rust_blake3"`), 여기서 유래합니다.
+
+Rust 데이터 타입은 C/C++ 데이터 타입과 호환되지 않기 때문에, 우리는 빈 라이브러리 프로젝트를 사용하여 C/C++에서 받은 데이터 변환을 위한 shim 메서드를 작성하고, 라이브러리 메서드를 호출하고, 출력 데이터에 대한 역변환을 수행할 것입니다. 예를 들어, BLAKE3에 대해 이 메서드가 작성되었습니다:
+
+```rust
+#[no_mangle]
+pub unsafe extern "C" fn blake3_apply_shim(
+ begin: *const c_char,
+ _size: u32,
+ out_char_data: *mut u8,
+```
+```rust
+#[no_mangle]
+pub unsafe extern "C" fn blake3_apply_shim(
+ begin: *const c_char,
+ _size: u32,
+ out_char_data: *mut u8,
+) -> *mut c_char {
+ if begin.is_null() {
+ let err_str = CString::new("input was a null pointer").unwrap();
+ return err_str.into_raw();
+ }
+ let mut hasher = blake3::Hasher::new();
+ let input_bytes = CStr::from_ptr(begin);
+ let input_res = input_bytes.to_bytes();
+ hasher.update(input_res);
+ let mut reader = hasher.finalize_xof();
+ reader.fill(std::slice::from_raw_parts_mut(out_char_data, blake3::OUT_LEN));
+ std::ptr::null_mut()
+}
+```
+
+이 메서드는 C 호환 문자열, 크기 및 출력 문자열 포인터를 입력으로 받습니다. 그런 다음, C 호환 입력을 실제 라이브러리 메서드에서 사용하는 타입으로 변환하고 이를 호출합니다. 그 후, 라이브러리 메서드의 출력을 다시 C 호환 타입으로 변환해야 합니다. 특정 경우에 라이브러리는 fill() 메서드를 통해 포인터에 직접 쓰는 것을 지원하므로 변환이 필요하지 않았습니다. 여기서의 주요 조언은 메서드를 적게 생성하여 각 메서드 호출 시 적은 변환을 수행하고 과부하를 최소화하는 것입니다.
+
+모든 이러한 메서드에 대해 `#[no_mangle]` 속성과 `extern "C"`가 필수적이라는 점은 주목할 가치가 있습니다. 이를 생략하면 올바른 C/C++ 호환 컴파일을 수행할 수 없습니다. 또한, 다음 단계의 통합 작업에도 필요합니다.
+
+shim 메서드의 코드를 작성한 후에는 라이브러리를 위한 헤더 파일을 준비해야 합니다. 이 작업은 수동으로 수행할 수 있지만, cbindgen 라이브러리를 사용하여 자동 생성할 수도 있습니다. cbindgen을 사용할 경우, build.rs 빌드 스크립트를 작성하고 cbindgen을 빌드 종속성으로 포함해야 합니다.
+
+헤더 파일을 자동 생성할 수 있는 빌드 스크립트의 예는 다음과 같습니다:
+
+```rust
+let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
+
+let package_name = env::var("CARGO_PKG_NAME").unwrap();
+let output_file = ("include/".to_owned() + &format!("{}.h", package_name)).to_string();
+
+match cbindgen::generate(&crate_dir) {
+ Ok(header) => {
+ header.write_to_file(&output_file);
+ }
+ Err(err) => {
+ panic!("{}", err)
+ }
+}
+```
+
+또한, 각 C 호환 속성에 대해 #[no_mangle]과 `extern "C"`를 사용해야 합니다. 이를 생략할 경우 라이브러리가 잘못 컴파일될 수 있으며 cbindgen이 헤더 자동 생성을 실행하지 않을 것입니다.
+
+이 모든 단계를 마친 후에는 소규모 프로젝트에서 라이브러리를 테스트하여 호환성이나 헤더 생성과 관련된 모든 문제를 찾아야 합니다. 헤더 생성 중 문제가 발생하는 경우 cbindgen.toml 파일로 구성해 볼 수 있습니다 (템플릿은 여기에서 찾을 수 있습니다: [https://github.com/eqrion/cbindgen/blob/master/template.toml](https://github.com/eqrion/cbindgen/blob/master/template.toml)).
+
+BLAKE3 통합 시 발생한 문제도 주목할 가치가 있습니다:
+MemorySanitizer는 Rust의 일부 변수가 초기화되었는지를 확인할 수 없기 때문에 오탐지를 유발할 수 있습니다. 이는 일부 변수에 대해 더 명시적인 정의가 포함된 메서드를 작성하여 해결했지만, 이 메서드 구현은 느리며 MemorySanitizer 빌드를 수정하기 위해서만 사용됩니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/integrating_rust_libraries.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/integrating_rust_libraries.md.hash
new file mode 100644
index 00000000000..08e1e589d38
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/integrating_rust_libraries.md.hash
@@ -0,0 +1 @@
+4602ecb1020e9a12
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/style.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/style.md
new file mode 100644
index 00000000000..ba397473f63
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/style.md
@@ -0,0 +1,814 @@
+---
+'description': 'ClickHouse C++ 개발을 위한 코딩 스타일 지침'
+'sidebar_label': 'C++ 스타일 가이드'
+'sidebar_position': 70
+'slug': '/development/style'
+'title': 'C++ 스타일 가이드'
+'doc_type': 'guide'
+---
+
+
+# C++ 스타일 가이드
+
+## 일반 권장 사항 {#general-recommendations}
+
+다음은 권장 사항이며, 필수 사항이 아닙니다.
+코드를 수정하는 경우 기존 코드의 형식을 따르는 것이 좋습니다.
+코드 스타일은 일관성을 위해 필요합니다. 일관성은 코드를 읽기 쉽게 만들고, 코드를 검색하기도 쉽게 만듭니다.
+많은 규칙들은 논리적인 이유가 없으며, 확립된 관행에 의해 결정됩니다.
+
+## 포맷팅 {#formatting}
+
+**1.** 대부분의 포맷팅은 자동으로 `clang-format`에 의해 수행됩니다.
+
+**2.** 인덴트는 4칸입니다. 개발 환경을 설정하여 탭이 4칸을 추가하도록 구성하십시오.
+
+**3.** 여는 중괄호와 닫는 중괄호는 별도의 줄에 위치해야 합니다.
+
+```cpp
+inline void readBoolText(bool & x, ReadBuffer & buf)
+{
+ char tmp = '0';
+ readChar(tmp, buf);
+ x = tmp != '0';
+}
+```
+
+**4.** 전체 함수 본체가 단일 `statement`일 경우, 단일 줄에 배치할 수 있습니다. 중괄호 주위에 공백을 두십시오 (줄 끝의 공백 외에는).
+
+```cpp
+inline size_t mask() const { return buf_size() - 1; }
+inline size_t place(HashValue x) const { return x & mask(); }
+```
+
+**5.** 함수의 경우, 괄호 주위에 공백을 두지 마십시오.
+
+```cpp
+void reinsert(const Value & x)
+```
+
+```cpp
+memcpy(&buf[place_value], &x, sizeof(x));
+```
+
+**6.** `if`, `for`, `while` 및 기타 표현식에서는 여는 괄호 앞에 공백을 삽입합니다 (함수 호출과는 반대).
+
+```cpp
+for (size_t i = 0; i < rows; i += storage.index_granularity)
+```
+
+**7.** 이항 연산자(`+`, `-`, `*`, `/`, `%`, ...)와 삼항 연산자 `?:` 주위에 공백을 추가하십시오.
+
+```cpp
+UInt16 year = (s[0] - '0') * 1000 + (s[1] - '0') * 100 + (s[2] - '0') * 10 + (s[3] - '0');
+UInt8 month = (s[5] - '0') * 10 + (s[6] - '0');
+UInt8 day = (s[8] - '0') * 10 + (s[9] - '0');
+```
+
+**8.** 줄 바꿈이 입력될 경우, 연산자를 새로운 줄에 놓고 그 앞의 인덴트를 늘리십시오.
+
+```cpp
+if (elapsed_ns)
+ message << " ("
+ << rows_read_on_server * 1000000000 / elapsed_ns << " rows/s., "
+ << bytes_read_on_server * 1000.0 / elapsed_ns << " MB/s.) ";
+```
+
+**9.** 필요하다면, 한 줄 내에서 정렬을 위해 공백을 사용할 수 있습니다.
+
+```cpp
+dst.ClickLogID = click.LogID;
+dst.ClickEventID = click.EventID;
+dst.ClickGoodEvent = click.GoodEvent;
+```
+
+**10.** 연산자 `.`, `->` 주위에는 공백을 사용하지 마십시오. 필요할 경우, 연산자를 다음 줄로 감쌀 수 있습니다. 이 경우, 그 앞의 오프셋이 증가합니다.
+
+**11.** 단항 연산자(`--`, `++`, `*`, `&`, ...)와 인자 사이에 공백을 사용하지 마십시오.
+
+**12.** 쉼표 뒤에 공백을 넣되, 앞에는 넣지 마십시오. 같은 규칙은 `for` 표현식 내의 세미콜론에도 적용됩니다.
+
+**13.** `[]` 연산자를 구분하기 위해 공백을 사용하지 마십시오.
+
+**14.** `template <...>` 표현식에서 `template`과 `<` 사이에 공백을 사용하고, `<` 뒤나 `>` 앞에는 공백을 사용하지 마십시오.
+
+```cpp
+template
+struct AggregatedStatElement
+{}
+```
+
+**15.** 클래스와 구조체에서는 `public`, `private`, `protected`를 `class/struct`와 같은 수준에 작성하고 나머지 코드는 들여쓰기 하십시오.
+
+```cpp
+template
+class MultiVersion
+{
+public:
+ /// Version of object for usage. shared_ptr manage lifetime of version.
+ using Version = std::shared_ptr;
+ ...
+}
+```
+
+**16.** 파일 전체에서 동일한 `namespace`를 사용하는 경우, `namespace` 내부에서 오프셋이 필요하지 않습니다.
+
+**17.** `if`, `for`, `while` 또는 기타 표현식의 블록이 단일 `statement`로 구성된 경우 중괄호는 선택 사항입니다. 대신 `statement`를 별도의 줄에 위치시키십시오. 이 규칙은 중첩된 `if`, `for`, `while`에도 유효합니다.
+하지만 내부 `statement`가 중괄호나 `else`를 포함하는 경우, 외부 블록은 중괄호로 작성해야 합니다.
+
+```cpp
+/// Finish write.
+for (auto & stream : streams)
+ stream.second->finalize();
+```
+
+**18.** 줄 끝에 공백이 없어야 합니다.
+
+**19.** 소스 파일은 UTF-8로 인코딩됩니다.
+
+**20.** 비 ASCII 문자는 문자열 리터럴에 사용할 수 있습니다.
+
+```cpp
+<< ", " << (timer.elapsed() / chunks_stats.hits) << " μsec/hit.";
+```
+
+**21.** 여러 표현식을 한 줄에 작성하지 마십시오.
+
+**22.** 함수 내부의 코드 섹션을 그룹화하고 한 개의 빈 줄 이하로 구분하십시오.
+
+**23.** 함수, 클래스 등을 하나 또는 두 개의 빈 줄로 구분하십시오.
+
+**24.** `A const` (값과 관련된)는 타입 이름 앞에 작성해야 합니다.
+
+```cpp
+//correct
+const char * pos
+const std::string & s
+//incorrect
+char const * pos
+```
+
+**25.** 포인터나 참조를 선언할 때, `*` 및 `&` 기호는 양쪽에 공백을 두어야 합니다.
+
+```cpp
+//correct
+const char * pos
+//incorrect
+const char* pos
+const char *pos
+```
+
+**26.** 템플릿 타입을 사용할 경우, 가장 간단한 경우를 제외하고는 `using` 키워드를 사용하여 별칭화하십시오.
+즉, 템플릿 매개변수는 `using`에서만 지정되고 코드는 반복되지 않아야 합니다.
+`using`은 함수 내부와 같이 로컬로 선언할 수 있습니다.
+
+```cpp
+//correct
+using FileStreams = std::map>;
+FileStreams streams;
+//incorrect
+std::map> streams;
+```
+
+**27.** 서로 다른 타입의 여러 변수를 한 문에서 선언하지 마십시오.
+
+```cpp
+//incorrect
+int x, *y;
+```
+
+**28.** C 스타일 캐스트를 사용하지 마십시오.
+
+```cpp
+//incorrect
+std::cerr << (int)c <<; std::endl;
+//correct
+std::cerr << static_cast(c) << std::endl;
+```
+
+**29.** 클래스와 구조체 내에서는 각 가시성 범위 내에서 멤버와 함수를 별도로 그룹화하십시오.
+
+**30.** 작은 클래스와 구조체의 경우, 메소드 선언과 구현을 구분할 필요가 없습니다.
+모든 클래스나 구조체의 작은 메소드에서도 마찬가지입니다.
+템플릿 클래스와 구조체의 경우, 메소드 선언과 구현을 구분하지 마십시오 (그렇지 않으면 동일한 번역 단위에서 정의되어야 합니다).
+
+**31.** 140자로 줄을 감싸는 것을 허용하며, 80자는 사용하지 마십시오.
+
+**32.** 필요하지 않은 경우 포스트픽스 증감 연산자 대신 프리픽스 증감 연산자를 항상 사용하십시오.
+
+```cpp
+for (Names::const_iterator it = column_names.begin(); it != column_names.end(); ++it)
+```
+
+## 주석 {#comments}
+
+**1.** 비틀거리는 부분의 코드에는 반드시 주석을 추가하십시오.
+이는 매우 중요합니다. 주석을 작성하는 것은 코드가 필요 없거나 잘못 설계되었음을 깨닫는 데 도움을 줄 수 있습니다.
+
+```cpp
+/** Part of piece of memory, that can be used.
+ * For example, if internal_buffer is 1MB, and there was only 10 bytes loaded to buffer from file for reading,
+ * then working_buffer will have size of only 10 bytes
+ * (working_buffer.end() will point to position right after those 10 bytes available for read).
+ */
+```
+
+**2.** 주석은 필요에 따라 상세하게 작성할 수 있습니다.
+
+**3.** 설명하는 코드 앞에 주석을 배치하십시오. 드물게 주석이 코드 뒤에, 같은 줄에 올 수 있습니다.
+
+```cpp
+/** Parses and executes the query.
+*/
+void executeQuery(
+ ReadBuffer & istr, /// Where to read the query from (and data for INSERT, if applicable)
+ WriteBuffer & ostr, /// Where to write the result
+ Context & context, /// DB, tables, data types, engines, functions, aggregate functions...
+ BlockInputStreamPtr & query_plan, /// Here could be written the description on how query was executed
+ QueryProcessingStage::Enum stage = QueryProcessingStage::Complete /// Up to which stage process the SELECT query
+ )
+```
+
+**4.** 주석은 영어로만 작성해야 합니다.
+
+**5.** 라이브러리를 작성하는 경우, 메인 헤더 파일에 이를 설명하는 자세한 주석을 포함하십시오.
+
+**6.** 추가 정보를 제공하지 않는 주석은 추가하지 마십시오. 특히, 다음과 같은 빈 주석을 남기지 마십시오:
+
+```cpp
+/*
+* Procedure Name:
+* Original procedure name:
+* Author:
+* Date of creation:
+* Dates of modification:
+* Modification authors:
+* Original file name:
+* Purpose:
+* Intent:
+* Designation:
+* Classes used:
+* Constants:
+* Local variables:
+* Parameters:
+* Date of creation:
+* Purpose:
+*/
+```
+
+예시는 리소스 http://home.tamk.fi/~jaalto/course/coding-style/doc/unmaintainable-code/에서 가져왔습니다.
+
+**7.** 각 파일의 시작 부분에 저자, 생성일 등을 나타내는 쓰레기 주석을 작성하지 마십시오.
+
+**8.** 단일 줄 주석은 세 개의 슬래시 `///`로 시작하고, 다중 줄 주석은 `/**`로 시작합니다. 이러한 주석은 "문서화"로 간주됩니다.
+노트: Doxygen을 사용하여 이러한 주석에서 문서를 생성할 수 있습니다. 그러나 Doxygen은 IDE에서 코드를 탐색하는 것이 더 편리하기 때문에 일반적으로 사용되지 않습니다.
+
+**9.** 다중 줄 주석은 시작과 끝에 빈 줄이 없어야 합니다 (다중 줄 주석을 닫는 줄은 제외).
+
+**10.** 코드 주석을 위해서는 기본 주석을 사용하고 "문서화" 주석을 사용하지 마십시오.
+
+**11.** 커밋하기 전에 주석 처리된 코드 부분을 삭제하십시오.
+
+**12.** 주석이나 코드에 절대 욕설을 사용하지 마십시오.
+
+**13.** 대문자를 사용하지 마십시오. 과도한 구두점을 사용하지 마십시오.
+
+```cpp
+/// WHAT THE FAIL???
+```
+
+**14.** 구분자를 만들기 위해 주석을 사용하지 마십시오.
+
+```cpp
+///******************************************************
+```
+
+**15.** 주석에서 논의를 시작하지 마십시오.
+
+```cpp
+/// Why did you do this stuff?
+```
+
+**16.** 블록 끝에 그것에 대해 설명하는 주석을 쓸 필요는 없습니다.
+
+```cpp
+/// for
+```
+
+## 이름 {#names}
+
+**1.** 변수 및 클래스 멤버의 이름은 소문자와 언더스코어를 사용하십시오.
+
+```cpp
+size_t max_block_size;
+```
+
+**2.** 함수(메소드)의 이름은 소문자로 시작하는 카멜 케이스를 사용하십시오.
+
+```cpp
+std::string getName() const override { return "Memory"; }
+```
+
+**3.** 클래스(구조체)의 이름은 대문자로 시작하는 카멜 케이스를 사용하십시오. 인터페이스에는 I 외의 접두사를 사용하지 않습니다.
+
+```cpp
+class StorageMemory : public IStorage
+```
+
+**4.** `using` 이름은 클래스와 같은 방식으로 명명됩니다.
+
+**5.** 템플릿 타입 인수의 이름: 간단한 경우에는 `T`를 사용하고; `T`, `U`; `T1`, `T2`를 사용합니다.
+보다 복잡한 경우에는 클래스 이름 규칙을 따르거나 `T` 접두사를 추가하십시오.
+
+```cpp
+template
+struct AggregatedStatElement
+```
+
+**6.** 템플릿 상수 인수의 이름: 변수 이름 규칙을 따르거나 간단한 경우에는 `N`을 사용하십시오.
+
+```cpp
+template
+struct ExtractDomain
+```
+
+**7.** 추상 클래스(인터페이스)의 경우, `I` 접두사를 추가할 수 있습니다.
+
+```cpp
+class IProcessor
+```
+
+**8.** 변수를 로컬로 사용할 경우, 짧은 이름을 사용할 수 있습니다.
+모든 다른 경우에는 의미를 설명하는 이름을 사용하십시오.
+
+```cpp
+bool info_successfully_loaded = false;
+```
+
+**9.** `define` 및 전역 상수의 이름은 언더스코어가 있는 ALL_CAPS를 사용합니다.
+
+```cpp
+#define MAX_SRC_TABLE_NAMES_TO_STORE 1000
+```
+
+**10.** 파일 이름은 그 내용과 동일한 스타일을 사용해야 합니다.
+파일이 단일 클래스를 포함하는 경우, 파일 이름은 클래스와 동일하게 (CamelCase) 지정합니다.
+파일이 단일 함수를 포함하는 경우, 파일 이름은 함수와 동일하게 (camelCase) 지정합니다.
+
+**11.** 이름에 약어가 포함된 경우:
+
+- 변수 이름의 경우, 약어는 소문자를 사용해야 합니다 `mysql_connection` (아닌 `mySQL_connection`).
+- 클래스와 함수의 이름의 경우, 약어의 대문자는 유지해야 합니다 `MySQLConnection` (아닌 `MySqlConnection`).
+
+**12.** 클래스 멤버를 초기화하는 데만 사용되는 생성자 인수는 클래스 멤버와 동일한 방식으로 명명하되, 끝에 언더스코어를 추가하십시오.
+
+```cpp
+FileQueueProcessor(
+ const std::string & path_,
+ const std::string & prefix_,
+ std::shared_ptr handler_)
+ : path(path_),
+ prefix(prefix_),
+ handler(handler_),
+ log(&Logger::get("FileQueueProcessor"))
+{
+}
+```
+
+인수가 생성자 본체에서 사용되지 않는 경우 언더스코어 접미사는 생략할 수 있습니다.
+
+**13.** 로컬 변수와 클래스 멤버의 이름은 차이가 없습니다 (접두사가 필요하지 않습니다).
+
+```cpp
+timer (not m_timer)
+```
+
+**14.** `enum`의 상수는 대문자로 시작하는 카멜 케이스를 사용합니다. ALL_CAPS도 허용됩니다. `enum`이 비-로컬인 경우, `enum class`를 사용하십시오.
+
+```cpp
+enum class CompressionMethod
+{
+ QuickLZ = 0,
+ LZ4 = 1,
+};
+```
+
+**15.** 모든 이름은 영어로 작성해야 합니다. 히브리어 단어의 음역은 허용되지 않습니다.
+
+ not T_PAAMAYIM_NEKUDOTAYIM
+
+**16.** 약어는 잘 알려진 경우에만 허용됩니다 (약어의 의미를 위키피디아나 검색 엔진에서 쉽게 찾을 수 있는 경우).
+
+ `AST`, `SQL`.
+
+ 허용되지 않는 경우 `NVDH` (임의의 문자들)
+
+불완전한 단어는 일반적으로 사용되는 축약형이 허용됩니다.
+주석에 전체 이름이 함께 포함되어 있으면 약어를 사용해도 됩니다.
+
+**17.** C++ 소스 코드를 포함하는 파일은 `.cpp` 확장자를 가져야 합니다. 헤더 파일은 `.h` 확장자를 가져야 합니다.
+
+## 코드를 쓰는 방법 {#how-to-write-code}
+
+**1.** 메모리 관리.
+
+수동 메모리 해제(`delete`)는 라이브러리 코드에서만 사용될 수 있습니다.
+라이브러리 코드에서 `delete` 연산자는 소멸자에서만 사용될 수 있습니다.
+응용 프로그램 코드에서는 메모리를 소유하는 객체에 의해 해제되어야 합니다.
+예:
+
+- 가장 쉬운 방법은 객체를 스택에 배치하거나 다른 클래스의 멤버로 만드는 것입니다.
+- 많은 수의 작은 객체에 대해서는 컨테이너를 사용하십시오.
+- 힙에 있는 소수의 객체에 대한 자동 해제를 위해서는 `shared_ptr/unique_ptr`를 사용하십시오.
+
+**2.** 자원 관리.
+
+`RAII`를 사용하고 위를 참조하십시오.
+
+**3.** 오류 처리.
+
+예외를 사용하십시오. 대부분의 경우, 예외를 발생시키기만 하면 되며, 이를 포착할 필요는 없습니다 (이 때문에 `RAII` 때문입니다).
+오프라인 데이터 처리 애플리케이션에서는 종종 예외를 포착하지 않는 것이 허용됩니다.
+사용자 요청을 처리하는 서버에서는 일반적으로 연결 처리기의 상위 수준에서 예외를 포착하는 것으로 충분합니다.
+스레드 함수에서는 모든 예외를 포착하고 이를 메인 스레드에서 `join` 후 다시 발생시켜야 합니다.
+
+```cpp
+/// If there weren't any calculations yet, calculate the first block synchronously
+if (!started)
+{
+ calculate();
+ started = true;
+}
+else /// If calculations are already in progress, wait for the result
+ pool.wait();
+
+if (exception)
+ exception->rethrow();
+```
+
+예외를 처리하지 않고 숨기지 마십시오. 예외를 로그에 단순히 기록하지 마십시오.
+
+```cpp
+//Not correct
+catch (...) {}
+```
+
+일부 예외를 무시해야 하는 경우 특정 예외에 대해서만 무시하고 나머지는 다시 발생시켜야 합니다.
+
+```cpp
+catch (const DB::Exception & e)
+{
+ if (e.code() == ErrorCodes::UNKNOWN_AGGREGATE_FUNCTION)
+ return nullptr;
+ else
+ throw;
+}
+```
+
+응답 코드나 `errno`가 있는 함수를 사용할 때 결과를 항상 확인하고 오류가 발생할 경우 예외를 발생시키십시오.
+
+```cpp
+if (0 != close(fd))
+ throw ErrnoException(ErrorCodes::CANNOT_CLOSE_FILE, "Cannot close file {}", file_name);
+```
+
+코드에서 불변성을 확인하기 위해 assert를 사용할 수 있습니다.
+
+**4.** 예외 유형.
+
+응용 프로그램 코드에서 복잡한 예외 계층 구조를 사용할 필요는 없습니다. 예외 텍스트는 시스템 관리자에게 이해할 수 있어야 합니다.
+
+**5.** 소멸자에서 예외 발생.
+
+이것은 권장되지 않지만 허용됩니다.
+다음 옵션을 사용하십시오:
+
+- 예외를 발생시킬 수 있는 모든 작업을 미리 수행하는 함수(`done()` 또는 `finalize()`)를 작성하십시오. 그 함수가 호출되었다면, 소멸자에서는 예외가 발생해서는 안 됩니다.
+- 너무 복잡한 작업(예: 네트워크를 통한 메시지 전송)은 클래스 사용자가 파괴되기 전에 호출해야 할 별도의 메소드에 넣을 수 있습니다.
+- 소멸자에서 예외가 발생하면 숨기기보다는 로그로 남기는 것이 낫습니다 (로거가 가능할 경우).
+- 단순한 애플리케이션에서는 예외를 처리하기 위해 `std::terminate`에 의존하는 것이 허용됩니다 (C++11에서 기본적으로 `noexcept`인 경우에 대한 처리).
+
+**6.** 익명 코드 블록.
+
+특정 변수를 지역으로 만들기 위해 단일 함수 내에 별도의 코드 블록을 생성하여 블록을 벗어나면 소멸자가 호출되도록 할 수 있습니다.
+
+```cpp
+Block block = data.in->read();
+
+{
+ std::lock_guard lock(mutex);
+ data.ready = true;
+ data.block = block;
+}
+
+ready_any.set();
+```
+
+**7.** 멀티스레딩.
+
+오프라인 데이터 처리 프로그램에서:
+
+- 단일 CPU 코어에서 가능한 최고의 성능을 얻으려고 하십시오. 그렇게 한 후 필요할 경우 코드를 병렬화할 수 있습니다.
+
+서버 애플리케이션에서:
+
+- 요청을 처리하기 위해 스레드 풀을 사용하십시오. 현재까지 사용자 공간 컨텍스트 전환이 필요한 작업은 없었습니다.
+
+병렬화에 fork를 사용하지 않습니다.
+
+**8.** 스레드 동기화.
+
+서로 다른 스레드가 서로 다른 메모리 셀 (더 나은 경우는 서로 다른 캐시 라인)을 사용하는 것이 가능하고 아무런 스레드 동기화를 사용하지 않을 수 있습니다 (단 `joinAll` 제외).
+동기화가 필요한 경우, 대부분의 경우 `lock_guard` 아래에서 뮤텍스를 사용하는 것으로 충분합니다.
+다른 경우에는 시스템 동기화 원시 자료를 사용하십시오. 바쁜 대기(wait)를 사용하지 마십시오.
+원자 작업은 가장 단순한 경우에만 사용해야 합니다.
+자신의 주요 전문 분야가 아닌 경우에는 락 프리 데이터 구조를 구현하려고 하지 마십시오.
+
+**9.** 포인터 대 참조.
+
+대부분의 경우에는 참조를 선호하십시오.
+
+**10.** `const`.
+
+상수 참조, 상수 포인터, `const_iterator`, 그리고 `const` 메서드를 사용하십시오.
+`const`를 기본으로 고려하고, 필요한 경우에만 비-`const`를 사용하십시오.
+변수를 값으로 전달할 때, `const`를 사용하는 것은 일반적으로 의미가 없습니다.
+
+**11.** unsigned.
+
+필요하면 `unsigned`를 사용하십시오.
+
+**12.** 숫자 유형.
+
+타입 `UInt8`, `UInt16`, `UInt32`, `UInt64`, `Int8`, `Int16`, `Int32`, `Int64` 및 `size_t`, `ssize_t`, `ptrdiff_t`를 사용하십시오.
+다음 숫자용 타입은 사용하지 마십시오: `signed/unsigned long`, `long long`, `short`, `signed/unsigned char`, `char`.
+
+**13.** 인수 전달.
+
+복잡한 값을 이동할 것이면 값을 기준으로 전달하고, 값 업데이트를 원할 경우 참조로 전달하십시오.
+힙에서 생성된 개체의 소유권을 함수가 캡처하는 경우, 인수 타입을 `shared_ptr` 또는 `unique_ptr`으로 만드십시오.
+
+**14.** 반환 값.
+
+대부분의 경우, 단순히 `return`을 사용하십시오. `return std::move(res)`를 작성하지 마십시오.
+함수가 힙에 개체를 할당하고 그것을 반환할 경우 `shared_ptr` 또는 `unique_ptr`을 사용하십시오.
+드물게 (루프에서 값을 업데이트하는 경우) 인수를 통해 값을 반환해야 할 경우, 인수는 참조이어야 합니다.
+
+```cpp
+using AggregateFunctionPtr = std::shared_ptr;
+
+/** Allows creating an aggregate function by its name.
+ */
+class AggregateFunctionFactory
+{
+public:
+ AggregateFunctionFactory();
+ AggregateFunctionPtr get(const String & name, const DataTypes & argument_types) const;
+```
+
+**15.** `namespace`.
+
+응용 프로그램 코드에 대해 별도의 `namespace`를 사용할 필요는 없습니다.
+작은 라이브러리도 필요하지 않습니다.
+중간에서 큰 라이브러리의 경우, 모든 것을 `namespace`에 넣으십시오.
+라이브러리의 `.h` 파일에서는 애플리케이션 코드에 필요하지 않은 구현 세부사항을 숨기기 위해 `namespace detail`를 사용할 수 있습니다.
+`.cpp` 파일에서는 기호를 숨기기 위해 `static` 또는 익명 `namespace`를 사용할 수 있습니다.
+또한 `namespace`는 관련 이름들이 외부 `namespace`로 떨어지는 것을 방지하기 위해 `enum`에 사용할 수 있습니다 (그러나 `enum class`를 사용하는 것이 좋습니다).
+
+**16.** 지연 초기화.
+
+초기화에 필요한 인수가 있을 경우, 기본 생성자는 작성하지 않는 것이 일반적입니다.
+나중에 초기화를 지연해야 한다면, 잘못된 개체를 생성할 기본 생성자를 추가할 수 있습니다. 또는 소수의 개체의 경우 `shared_ptr/unique_ptr`를 사용할 수 있습니다.
+
+```cpp
+Loader(DB::Connection * connection_, const std::string & query, size_t max_block_size_);
+
+/// For deferred initialization
+Loader() {}
+```
+
+**17.** 가상 함수.
+
+클래스가 다형식 사용을 목적으로 하지 않는 경우, 함수를 가상으로 만들 필요는 없습니다. 이는 소멸자에도 적용됩니다.
+
+**18.** 인코딩.
+
+어디에서나 UTF-8을 사용하십시오. `std::string` 및 `char *`를 사용하십시오.
+`std::wstring` 및 `wchar_t`는 사용하지 마십시오.
+
+**19.** 로깅.
+
+코드 전반에 걸쳐 예제를 참조하십시오.
+커밋하기 전, 모든 의미 없는 디버그 로깅 및 기타 유형의 디버그 출력을 삭제하십시오.
+주기 내의 로깅은 피해야 하며, 트레이스 수준에서도 마찬가지입니다.
+로그는 어떤 로깅 수준에서도 읽을 수 있어야 합니다.
+로깅은 주로 응용 프로그램 코드에서만 사용되어야 합니다.
+로그 메시지는 영어로 작성되어야 합니다.
+로그는 시스템 관리자가 이해할 수 있도록 작성되어야 합니다.
+로그에서 욕설을 사용하지 마십시오.
+로그에서 UTF-8 인코딩을 사용하십시오. 드물게 로그에서 비 ASCII 문자를 사용할 수 있습니다.
+
+**20.** 입력-출력.
+
+응용 프로그램 성능에 중요할 내부 루프에서 `iostreams`를 사용하지 마십시오 (그리고 `stringstream`은 결코 사용하지 마십시오).
+대신 `DB/IO` 라이브러리를 사용하십시오.
+
+**21.** 날짜와 시간.
+
+`DateLUT` 라이브러리를 참조하십시오.
+
+**22.** include.
+
+항상 include 가드 대신 `#pragma once`를 사용하십시오.
+
+**23.** using.
+
+`using namespace`는 사용하지 않습니다. 특정한 것에 대해 `using`을 사용할 수 있지만, 클래스나 함수 내에서 로컬로 유지하십시오.
+
+**24.** 필요하지 않은 경우 함수에 대해 `trailing return type`을 사용하지 마십시오.
+
+```cpp
+auto f() -> void
+```
+
+**25.** 변수의 선언 및 초기화.
+
+```cpp
+//right way
+std::string s = "Hello";
+std::string s{"Hello"};
+
+//wrong way
+auto s = std::string{"Hello"};
+```
+
+**26.** 가상 함수의 경우, 기본 클래스에서는 `virtual`이라고 쓰고, 후속 클래스에서는 `virtual` 대신 `override`를 작성하십시오.
+
+## 사용하지 않는 C++ 기능 {#unused-features-of-c}
+
+**1.** 가상 상속은 사용되지 않습니다.
+
+**2.** 현대 C++에서 편리한 문법 설탕을 가진 구성 요소들, 예를 들어,
+
+```cpp
+// Traditional way without syntactic sugar
+template ::value, void>> // SFINAE via std::enable_if, usage of ::value
+std::pair func(const E & e) // explicitly specified return type
+{
+ if (elements.count(e)) // .count() membership test
+ {
+ // ...
+ }
+
+ elements.erase(
+ std::remove_if(
+ elements.begin(), elements.end(),
+ [&](const auto x){
+ return x == 1;
+ }),
+ elements.end()); // remove-erase idiom
+
+ return std::make_pair(1, 2); // create pair via make_pair()
+}
+
+// With syntactic sugar (C++14/17/20)
+template
+requires std::same_v // SFINAE via C++20 concept, usage of C++14 template alias
+auto func(const E & e) // auto return type (C++14)
+{
+ if (elements.contains(e)) // C++20 .contains membership test
+ {
+ // ...
+ }
+
+ elements.erase_if(
+ elements,
+ [&](const auto x){
+ return x == 1;
+ }); // C++20 std::erase_if
+
+ return {1, 2}; // or: return std::pair(1, 2); // create pair via initialization list or value initialization (C++17)
+}
+```
+
+## 플랫폼 {#platform}
+
+**1.** 특정 플랫폼을 위해 코드를 작성합니다.
+그러나 다른 조건들이 동일할 경우, 크로스 플랫폼 또는 포터블 코드가 선호됩니다.
+
+**2.** 언어: C++20 (사용 가능한 [C++20 기능](https://en.cppreference.com/w/cpp/compiler_support#C.2B.2B20_features) 목록 참조).
+
+**3.** 컴파일러: `clang`. 작성 시점에서 (2025년 3월), 코드가 clang 버전 >= 19에서 컴파일됩니다.
+표준 라이브러리가 사용됩니다(`libc++`).
+
+**4.** 운영 체제: 리눅스 우분투, Precise보다 오래되지 않음.
+
+**5.** 코드는 x86_64 CPU 아키텍처를 위해 작성됩니다.
+CPU 명령어 집합은 당사 서버에서 지원되는 최소 집합입니다. 현재 SSE 4.2입니다.
+
+**6.** 몇 가지 예외를 제외하고 `-Wall -Wextra -Werror -Weverything` 컴파일 플래그를 사용하십시오.
+
+**7.** 정적 링크를 모든 라이브러리에 사용하되, 정적으로 연결하기 어려운 경우를 제외하십시오 ( `ldd` 명령의 출력을 참조).
+
+**8.** 코드는 릴리스 설정으로 개발되고 디버그됩니다.
+
+## 도구 {#tools}
+
+**1.** KDevelop는 좋은 IDE입니다.
+
+**2.** 디버깅을 위해서는 `gdb`, `valgrind` (`memcheck`), `strace`, `-fsanitize=...`, 또는 `tcmalloc_minimal_debug`를 사용합니다.
+
+**3.** 프로파일링을 위해서는 `Linux Perf`, `valgrind` (`callgrind`), 또는 `strace -cf`를 사용합니다.
+
+**4.** 소스는 Git에 있습니다.
+
+**5.** 어셈블리는 `CMake`를 사용합니다.
+
+**6.** 프로그램은 `deb` 패키지를 사용하여 릴리즈됩니다.
+
+**7.** master에 대한 커밋은 빌드를 중단시켜서는 안 됩니다.
+오직 선택된 리비전만 작업 가능하다고 판단됩니다.
+
+**8.** 코드가 부분적으로 준비된 경우에도 가능한 한 자주 커밋하십시오.
+이 목적을 위해 브랜치를 사용하십시오.
+`master` 브랜치에서 코드가 아직 빌드 가능하지 않다면 `push` 전 빌드에서 제외하십시오. 코드 작성을 완료하거나 며칠 내에 제거해야 합니다.
+
+**9.** 비트리비얼한 변경의 경우, 브랜치를 사용하고 서버에 게시하십시오.
+
+**10.** 사용하지 않는 코드는 저장소에서 제거됩니다.
+
+## 라이브러리 {#libraries}
+
+**1.** C++20 표준 라이브러리와 `boost`, `Poco` 프레임워크를 사용합니다.
+
+**2.** 운영 체제 패키지에서 라이브러리를 사용하는 것은 허용되지 않습니다. 사전 설치된 라이브러리 사용도 허용되지 않습니다. 모든 라이브러리는 `contrib` 디렉터리에 소스 코드 형태로 배치되어 ClickHouse로 빌드되어야 합니다. [새로운 서드파티 라이브러리 추가 지침](/development/contrib#adding-and-maintaining-third-party-libraries)을 참조하십시오.
+
+**3.** 이미 사용중인 라이브러리에 항상 우선권이 주어집니다.
+
+## 일반 권장 사항 {#general-recommendations-1}
+
+**1.** 가능한 한 적은 코드를 작성하십시오.
+
+**2.** 가장 간단한 솔루션을 시도하십시오.
+
+**3.** 코드가 어떻게 작동할지, 내부 루프가 어떻게 기능할지 알 때까지 코드를 작성하지 마십시오.
+
+**4.** 가장 간단한 경우에는 클래스를 또는 구조체 아래에 `using`을 사용하십시오.
+
+**5.** 가능하다면 복사 생성자, 대입 연산자, 소멸자 (가상 함수가 하나라도 포함된 경우에는 다른 것), 이동 생성자 또는 이동 대입 연산자를 작성하지 마십시오.
+다시 말해, 컴파일러에서 생성된 함수가 올바르게 작동해야 합니다. `default`를 사용할 수 있습니다.
+
+**6.** 코드 단순화를 장려합니다. 코드의 크기를 가능한 한 줄이십시오.
+
+## 추가 권장 사항 {#additional-recommendations}
+
+**1.** `stddef.h`에서 타입에 대해 `std::`를 명시적으로 지정하는 것은 권장되지 않습니다.
+다시 말해, `size_t`를 `std::size_t` 대신 작성하는 것을 권장합니다. 왜냐하면 짧기 때문입니다.
+`std::`를 추가하는 것은 허용됩니다.
+
+**2.** 표준 C 라이브러리의 함수에 대해 `std::`를 명시적으로 지정하는 것은 권장되지 않습니다.
+다시 말해, `std::memcpy` 대신 `memcpy`를 작성합니다.
+그 이유는 `memmem`과 같은 유사한 비표준 함수가 있기 때문입니다. 이 함수들은 가끔 사용됩니다. 이 함수들은 `namespace std`에 존재하지 않습니다.
+모든 곳에서 `std::memcpy` 대신 `memcpy`를 작성한다면, `std::` 없이 `memmem`는 이상하게 보일 것입니다.
+그럼에도 불구하고, 원하시면 `std::`를 사용할 수 있습니다.
+
+**3.** 표준 C++ 라이브러리에 동일한 함수가 있을 때 C의 함수를 사용하는 것은 허용됩니다.
+이것은 더 효율적인 경우에 허용됩니다.
+예를 들어, 커다란 메모리 덩어리를 복사하는 경우에는 `std::copy` 대신 `memcpy`를 사용하십시오.
+
+**4.** 다중 줄 함수 인수.
+
+다음과 같은 모든 래핑 스타일이 허용됩니다:
+
+```cpp
+function(
+ T1 x1,
+ T2 x2)
+```
+
+```cpp
+function(
+ size_t left, size_t right,
+ const & RangesInDataParts ranges,
+ size_t limit)
+```
+
+```cpp
+function(size_t left, size_t right,
+ const & RangesInDataParts ranges,
+ size_t limit)
+```
+
+```cpp
+function(size_t left, size_t right,
+ const & RangesInDataParts ranges,
+ size_t limit)
+```
+
+```cpp
+function(
+ size_t left,
+ size_t right,
+ const & RangesInDataParts ranges,
+ size_t limit)
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/style.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/style.md.hash
new file mode 100644
index 00000000000..80d5eb7c9ad
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/style.md.hash
@@ -0,0 +1 @@
+f9ef4baf7bd3bfc7
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/tests.md b/i18n/ko/docusaurus-plugin-content-docs/current/development/tests.md
new file mode 100644
index 00000000000..42806ae025f
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/tests.md
@@ -0,0 +1,504 @@
+---
+'description': 'ClickHouse 테스트 및 테스트 스위트 실행에 대한 가이드'
+'sidebar_label': '테스트'
+'sidebar_position': 40
+'slug': '/development/tests'
+'title': 'Testing ClickHouse'
+'doc_type': 'guide'
+---
+
+
+# Testing ClickHouse
+
+## Functional tests {#functional-tests}
+
+기능 테스트는 가장 간단하고 편리하게 사용할 수 있습니다.
+대부분의 ClickHouse 기능은 기능 테스트로 검증할 수 있으며, ClickHouse 코드의 모든 변경 사항은 이러한 방식으로 테스트해야 합니다.
+
+각 기능 테스트는 실행 중인 ClickHouse 서버에 하나 이상의 쿼리를 전송하고 결과를 참조와 비교합니다.
+
+테스트는 `./tests/queries` 디렉토리에 위치합니다.
+
+각 테스트는 두 가지 유형 중 하나일 수 있습니다: `.sql`과 `.sh`.
+- `.sql` 테스트는 `clickhouse-client`에 파이프 처리되는 간단한 SQL 스크립트입니다.
+- `.sh` 테스트는 스스로 실행되는 스크립트입니다.
+
+일반적으로 SQL 테스트가 `.sh` 테스트보다 선호됩니다.
+순수 SQL에서 테스트할 수 없는 기능을 테스트해야 할 때만 `.sh` 테스트를 사용해야 합니다. 예를 들어, 입력 데이터를 `clickhouse-client`로 파이프 처리하거나 `clickhouse-local`을 테스트할 때입니다.
+
+:::note
+`DateTime` 및 `DateTime64` 데이터 유형을 테스트할 때의 일반적인 실수는 서버가 특정 시간대를 사용한다고 가정하는 것입니다 (예: "UTC"). 이는 사실이 아니며, CI 테스트 실행 시 시간대는 의도적으로 무작위화됩니다. 테스트 값을 명시적으로 시간대를 지정하는 가장 쉬운 해결 방법은 `toDateTime64(val, 3, 'Europe/Amsterdam')`와 같은 방법입니다.
+:::
+
+### Running a test locally {#running-a-test-locally}
+
+ClickHouse 서버를 로컬로 시작하고 기본 포트(9000)를 청취하게 합니다.
+예를 들어, `01428_hash_set_nan_key` 테스트를 실행하려면 저장소 폴더로 이동한 후 다음 명령을 실행합니다:
+
+```sh
+PATH=:$PATH tests/clickhouse-test 01428_hash_set_nan_key
+```
+
+테스트 결과(`stderr` 및 `stdout`)는 테스트 자체 옆에 위치한 `01428_hash_set_nan_key.[stderr|stdout]` 파일에 기록됩니다 (예: `queries/0_stateless/foo.sql`의 출력은 `queries/0_stateless/foo.stdout`에 기록됩니다).
+
+모든 `clickhouse-test` 옵션에 대한 내용은 `tests/clickhouse-test --help`를 참조하세요.
+모든 테스트를 실행하거나 테스트 이름에 대한 필터를 제공하여 테스트의 일부 집합을 실행할 수 있습니다: `./clickhouse-test substring`.
+테스트를 병렬로 실행하거나 무작위 순서로 실행하는 옵션도 있습니다.
+
+### Adding a new test {#adding-a-new-test}
+
+새로운 테스트를 추가하려면 먼저 `queries/0_stateless` 디렉토리에 `.sql` 또는 `.sh` 파일을 생성하세요.
+그런 다음 `clickhouse-client < 12345_test.sql > 12345_test.reference` 또는 `./12345_test.sh > ./12345_test.reference`를 사용하여 해당하는 `.reference` 파일을 생성합니다.
+
+테스트는 자동으로 생성된 데이터베이스 `test` 내에서 테이블을 생성, 삭제, 선택하는 등의 작업만 수행해야 합니다.
+임시 테이블을 사용하는 것은 괜찮습니다.
+
+CI와 동일한 환경을 로컬에 설정하려면 테스트 구성을 설치하세요 (Zookeeper 모의 구현을 사용하고 몇 가지 설정을 조정합니다).
+
+```sh
+cd /tests/config
+sudo ./install.sh
+```
+
+:::note
+테스트는 다음과 같아야 합니다.
+- 최소한의 필요 테이블, 컬럼 및 복잡성을 생성해야 합니다.
+- 빠르며: 몇 초 이상 걸리지 않아야 합니다 (더 나은 경우: 수 초 이내로).
+- 정확하고 결정론적이어야 하며: 테스트되는 기능이 작동하지 않을 경우에만 실패해야 합니다.
+- 독립적/상태 비저장이어야 하며: 환경과 타이밍에 의존하지 않아야 합니다.
+- 철저해야 하며: 0, null, 빈 집합, 예외와 같은 모서리 사례를 커버해야 합니다 (부정 테스트, `-- { serverError xyz }` 및 `-- { clientError xyz }` 문법을 사용).
+- 테스트가 끝나면 테이블을 정리해야 합니다 (잔여물이 발생한 경우).
+- 다른 테스트가 동일한 내용을 테스트하지 않도록 해야 합니다 (즉, 먼저 grep합니다).
+:::
+
+### Restricting test runs {#restricting-test-runs}
+
+테스트는 CI에서 실행되는 제한 사항을 지정하는 0개 이상의 _태그_를 가질 수 있습니다.
+
+`.sql` 테스트의 경우 태그는 SQL 주석으로 첫 번째 줄에 위치합니다:
+
+```sql
+-- Tags: no-fasttest, no-replicated-database
+-- no-fasttest:
+-- no-replicated-database:
+
+SELECT 1
+```
+
+`.sh` 테스트의 경우 태그는 두 번째 줄에 주석으로 작성됩니다:
+
+```bash
+#!/usr/bin/env bash
+
+# Tags: no-fasttest, no-replicated-database
+
+# - no-fasttest:
+
+# - no-replicated-database:
+```
+
+사용 가능한 태그 목록:
+
+|태그 이름 | 동작 | 사용 예시 |
+|---|---|---|
+| `disabled`| 테스트가 실행되지 않음 ||
+| `long` | 테스트 실행 시간이 1분에서 10분으로 연장됨 ||
+| `deadlock` | 테스트가 긴 시간 동안 루프에서 실행됨 ||
+| `race` | `deadlock`과 동일. `deadlock`을 선호합니다. ||
+| `shard` | 서버가 `127.0.0.*`을 청취해야 함 ||
+| `distributed` | `shard`와 동일. `shard`를 선호합니다. ||
+| `global` | `shard`와 동일. `shard`를 선호합니다. ||
+| `zookeeper` | 테스트 실행에 Zookeeper 또는 ClickHouse Keeper가 필요함 | 테스트에서 `ReplicatedMergeTree`를 사용 |
+| `replica` | `zookeeper`와 동일. `zookeeper`를 선호합니다. ||
+| `no-fasttest`| [빠른 테스트](continuous-integration.md#fast-test)에서 실행되지 않음 | 테스트에서 Fast 테스트에서 비활성화된 `MySQL` 테이블 엔진을 사용 |
+| `fasttest-only`| [빠른 테스트](continuous-integration.md#fast-test)에서만 실행됨 ||
+| `no-[asan, tsan, msan, ubsan]` | [Sanitizers](#sanitizers)에서 테스트 비활성화 | 테스트가 QEMU에서 실행되며, sanitizers와 작동하지 않음 |
+| `no-replicated-database` |||
+| `no-ordinary-database` |||
+| `no-parallel` | 이 테스트와 병렬로 다른 테스트 실행 비활성화 | 테스트가 `system` 테이블에서 읽고 불변성이 깨질 수 있음 |
+| `no-parallel-replicas` |||
+| `no-debug` |||
+| `no-stress` |||
+| `no-polymorphic-parts` |||
+| `no-random-settings` |||
+| `no-random-merge-tree-settings` |||
+| `no-backward-compatibility-check` |||
+| `no-cpu-x86_64` |||
+| `no-cpu-aarch64` |||
+| `no-cpu-ppc64le` |||
+| `no-s3-storage` |||
+
+위 설정 외에도 `system.build_options`의 `USE_*` 플래그를 사용하여 특정 ClickHouse 기능의 사용을 정의할 수 있습니다.
+예를 들어, 테스트가 MySQL 테이블을 사용하는 경우 `use-mysql` 태그를 추가해야 합니다.
+
+### Specifying limits for random settings {#specifying-limits-for-random-settings}
+
+테스트는 테스트 실행 중 무작위화할 수 있는 설정에 대한 최소 및 최대 허용 값을 지정할 수 있습니다.
+
+`.sh` 테스트의 경우 제한은 태그 옆의 줄에 주석으로 작성되거나 태그가 지정되지 않은 경우 두 번째 줄에 작성됩니다:
+
+```bash
+#!/usr/bin/env bash
+
+# Tags: no-fasttest
+
+# Random settings limits: max_block_size=(1000, 10000); index_granularity=(100, None)
+```
+
+`.sql` 테스트의 경우 태그는 태그 옆의 줄이나 첫 번째 줄에 SQL 주석으로 위치합니다:
+
+```sql
+-- Tags: no-fasttest
+-- Random settings limits: max_block_size=(1000, 10000); index_granularity=(100, None)
+SELECT 1
+```
+
+한 개의 한정 조건만 지정하려면 다른 하나에 대해 `None`을 사용할 수 있습니다.
+
+### Choosing the test name {#choosing-the-test-name}
+
+테스트 이름은 다섯 자리 접두사로 시작하여 그 뒤에 설명 이름이 옵니다. 예: `00422_hash_function_constexpr.sql`.
+접두사를 선택하려면 디렉토리에 이미 존재하는 가장 큰 접두사를 찾아 1씩 증가시키면 됩니다.
+
+```sh
+ls tests/queries/0_stateless/[0-9]*.reference | tail -n 1
+```
+
+그 동안에 동일한 숫자 접두사가 있는 다른 테스트가 추가될 수 있지만, 이는 괜찮으며 문제를 일으키지 않으므로 나중에 변경할 필요는 없습니다.
+
+### Checking for an error that must occur {#checking-for-an-error-that-must-occur}
+
+때때로 잘못된 쿼리로 인해 서버 오류가 발생하는지 테스트해야 할 필요가 있습니다. 우리는 SQL 테스트에서 이를 위한 특별한 주석을 지원합니다. 다음과 같은 형식입니다:
+
+```sql
+SELECT x; -- { serverError 49 }
+```
+
+이 테스트는 서버가 'x'라는 알려지지 않은 컬럼에 대한 오류 코드 49를 반환하는지 확인합니다.
+오류가 없거나 다른 오류가 발생하면 테스트는 실패합니다.
+클라이언트에서 오류가 발생하는지 확인하려면 대신 `clientError` 주석을 사용하세요.
+
+특정 오류 메시지의 문구를 확인하지 마십시오. 향후 변경될 수 있으며, 테스트가 불필요하게 실패할 수 있습니다.
+오류 코드만 확인하세요.
+기존 오류 코드가 필요에 대해 정확하지 않은 경우 새 오류 코드를 추가하는 것을 고려하세요.
+
+### Testing a distributed query {#testing-a-distributed-query}
+
+기능 테스트에서 분산 쿼리를 사용하려면 `remote` 테이블 함수를 활용하여 서버가 스스로에게 `127.0.0.{1..2}` 주소로 쿼리하게 하거나, `test_shard_localhost`와 같은 서버 구성 파일에 미리 정의된 테스트 클러스터를 사용할 수 있습니다.
+테스트 이름에 `shard` 또는 `distributed`라는 단어를 추가하여 CI에서 올바른 구성으로 실행되도록 하십시오. 따라서 서버가 분산 쿼리를 지원하도록 구성되었습니다.
+
+### Working with temporary files {#working-with-temporary-files}
+
+때때로 쉘 테스트에서 즉석에서 작업할 파일을 만들어야 할 수 있습니다.
+일부 CI 검사가 병렬로 테스트를 실행하므로, 스크립트에서 고유한 이름 없이 임시 파일을 생성하거나 제거하면 Flaky와 같은 일부 CI 검사가 실패할 수 있습니다.
+이 문제를 해결하기 위해 테스트를 실행 중인 고유한 이름을 가진 임시 파일을 만들기 위해 `$CLICKHOUSE_TEST_UNIQUE_NAME` 환경 변수를 사용하는 것이 좋습니다.
+이렇게 하면 설정 중에 생성하거나 정리 중 제거하는 파일이 해당 테스트에서만 사용되는 파일인지, 병렬로 실행 중인 다른 테스트가 아닌지를 확실히 할 수 있습니다.
+
+## Known bugs {#known-bugs}
+
+기능 테스트로 쉽게 재현할 수 있는 버그에 대해서는 준비된 기능 테스트를 `tests/queries/bugs` 디렉토리에 배치합니다.
+버그가 수정되면 이러한 테스트는 `tests/queries/0_stateless`로 이동됩니다.
+
+## Integration tests {#integration-tests}
+
+통합 테스트는 클러스터 구성에서 ClickHouse를 테스트하고 MySQL, Postgres, MongoDB와 같은 다른 서버와 ClickHouse 상호작용을 확인하는 데 유용합니다.
+이 테스트는 네트워크 분할, 패킷 손실 등을 에뮬레이트하는 데 유용합니다.
+이러한 테스트는 Docker에서 실행되며 다양한 소프트웨어로 여러 컨테이너를 생성합니다.
+
+이 테스트를 실행하는 방법은 `tests/integration/README.md`를 참조하세요.
+
+ClickHouse와 서드파티 드라이버의 통합 테스트는 수행되지 않습니다.
+현재 JDBC 및 ODBC 드라이버와의 통합 테스트도 없습니다.
+
+## Unit tests {#unit-tests}
+
+단위 테스트는 ClickHouse 전체가 아닌 단일 라이브러리나 클래스를 테스트하고자 할 때 유용합니다.
+테스트의 빌드를 활성화하거나 비활성화하려면 `ENABLE_TESTS` CMake 옵션을 사용하세요.
+단위 테스트 (및 기타 테스트 프로그램)는 코드 전반에 있는 `tests` 하위 디렉토리에 위치합니다.
+단위 테스트를 실행하려면 `ninja test`를 입력하세요.
+일부 테스트는 `gtest`를 사용하지만, 일부는 테스트 실패 시 비제로 종료 코드를 반환하는 일반 프로그램입니다.
+
+기능 테스트가 이미 코드에서 덮여 있으면 단위 테스트를 반드시 할 필요는 없습니다 (기능 테스트는 일반적으로 사용하기 더 간단합니다).
+
+개별 gtest 체크는 실행 가능 파일을 직접 호출하여 실행할 수 있습니다. 예를 들어:
+
+```bash
+$ ./src/unit_tests_dbms --gtest_filter=LocalAddress*
+```
+
+## Performance tests {#performance-tests}
+
+성능 테스트는 ClickHouse의 특정 고립된 부분의 성능을 측정하고 비교할 수 있도록 합니다.
+성능 테스트는 `tests/performance/`에 위치합니다.
+각 테스트는 테스트 사례에 대한 설명이 포함된 `.xml` 파일로 표현됩니다.
+테스트는 `docker/test/performance-comparison` 도구로 실행됩니다. 실행 방법은 읽어보시기 바랍니다.
+
+각 테스트는 여러 쿼리(매개변수 조합 가능)를 루프에서 실행합니다.
+
+특정 시나리오에서 ClickHouse의 성능을 향상시키고 싶고 개선 사항이 간단한 쿼리에서 관찰될 수 있다면 성능 테스트를 작성하는 것이 강력히 권장됩니다.
+그리고 SQL 함수를 추가하거나 수정할 때는 상대적으로 고립되어 있으며 너무 모호하지 않은 경우에도 성능 테스트를 작성하는 것이 좋습니다.
+테스트 중에는 항상 `perf top` 또는 다른 `perf` 도구를 사용하는 것이 좋습니다.
+
+## Test tools and scripts {#test-tools-and-scripts}
+
+`tests` 디렉토리에 있는 일부 프로그램은 준비된 테스트가 아니라 테스트 도구입니다.
+예를 들어, `Lexer`의 경우 `src/Parsers/tests/lexer`라는 도구가 있어 단순히 stdin의 토큰화를 수행하고 색깔이 입혀진 결과를 stdout에 기록합니다.
+이러한 종류의 도구를 코드 예제로 사용하거나 탐색 및 수동 테스트를 위해 활용할 수 있습니다.
+
+## Miscellaneous tests {#miscellaneous-tests}
+
+기계 학습 모델에 대한 테스트가 `tests/external_models`에 있습니다.
+이 테스트는 업데이트되지 않으며 통합 테스트로 이전해야 합니다.
+
+쿼럼 삽입을 위한 별도의 테스트가 있습니다.
+이 테스트는 별도의 서버에서 ClickHouse 클러스터를 실행하고 다양한 실패 사례를 에뮬레이트합니다: 네트워크 분할, 패킷 손실 (ClickHouse 노드 간, ClickHouse와 ZooKeeper 간, ClickHouse 서버와 클라이언트 간 등), `kill -9`, `kill -STOP`, `kill -CONT`, [Jepsen](https://aphyr.com/tags/Jepsen)과 같은 방식으로. 그런 다음 테스트는 모든 확인된 삽입이 작성되었고 모든 거부된 삽입이 작성되지 않았음을 확인합니다.
+
+쿼럼 테스트는 ClickHouse가 오픈 소스화되기 전 별도의 팀에 의해 작성되었습니다.
+이 팀은 더 이상 ClickHouse와 일을 하지 않습니다.
+테스트는 실수로 Java로 작성되었습니다.
+이러한 이유로, 쿼럼 테스트는 다시 작성되어 통합 테스트로 이동해야 합니다.
+
+## Manual Testing {#manual-testing}
+
+새로운 기능을 개발할 때는 수동으로 테스트하는 것도 합리적입니다.
+다음 단계로 수행할 수 있습니다:
+
+ClickHouse를 빌드하십시오. 터미널에서 ClickHouse를 실행하십시오: 디렉토리를 `programs/clickhouse-server`로 변경하고 `./clickhouse-server`로 실행합니다. 기본적으로 현재 디렉토리의 구성(`config.xml`, `users.xml` 및 `config.d` 및 `users.d` 디렉토리 내의 파일)을 사용합니다. ClickHouse 서버에 연결하려면 `programs/clickhouse-client/clickhouse-client`를 실행하십시오.
+
+모든 clickhouse 도구 (서버, 클라이언트 등)는 단일 이진 파일인 `clickhouse`에 대한 심볼릭 링크입니다.
+이 이진 파일은 `programs/clickhouse`에 있습니다.
+모든 도구는 `clickhouse tool`로 호출할 수도 있습니다.
+
+대신 ClickHouse 패키지를 설치할 수 있습니다: ClickHouse 저장소에서 안정적인 릴리스 또는 ClickHouse 소스 루트에서 `./release`를 사용하여 직접 패키지를 빌드할 수 있습니다.
+그런 다음 `sudo clickhouse start`로 서버를 시작하며 (서버를 중지하려면 stop을 사용합니다).
+로그는 `/etc/clickhouse-server/clickhouse-server.log`에서 확인하십시오.
+
+ClickHouse가 이미 시스템에 설치되어 있는 경우, 새로운 `clickhouse` 이진 파일을 빌드하고 기존 이진 파일을 교체할 수 있습니다:
+
+```bash
+$ sudo clickhouse stop
+$ sudo cp ./clickhouse /usr/bin/
+$ sudo clickhouse start
+```
+
+또한 시스템 ClickHouse 서버를 중지하고 동일한 구성으로 터미널에 로깅을 하여 직접 실행할 수 있습니다:
+
+```bash
+$ sudo clickhouse stop
+$ sudo -u clickhouse /usr/bin/clickhouse server --config-file /etc/clickhouse-server/config.xml
+```
+
+gdb와 함께 사용하는 예시:
+
+```bash
+$ sudo -u clickhouse gdb --args /usr/bin/clickhouse server --config-file /etc/clickhouse-server/config.xml
+```
+
+시스템 ClickHouse 서버가 이미 실행 중이며 중지하지 않으려는 경우, `config.xml`의 포트 번호를 변경하거나 (또는 `config.d` 디렉토리 내 파일에서 재정의), 적절한 데이터 경로를 제공하고 실행할 수 있습니다.
+
+`clickhouse` 이진 파일은 거의 종속성이 없으며 다양한 Linux 배포판에서 작동합니다.
+서버에서 변경 사항을 빠르고 간편하게 테스트하려면, 새로 빌드한 `clickhouse` 이진 파일을 서버로 복사하고 위의 예시와 같이 실행할 수 있습니다.
+
+## Build tests {#build-tests}
+
+빌드 테스트는 다양한 대체 구성 및 일부 외부 시스템에서 빌드가 깨지지 않았는지 확인합니다.
+이러한 테스트는 자동화된 것입니다.
+
+예시:
+- Darwin x86_64 (macOS)용 교차 컴파일
+- FreeBSD x86_64용 교차 컴파일
+- Linux AArch64용 교차 컴파일
+- 시스템 패키지의 라이브러리로 Ubuntu에서 빌드 (권장하지 않음)
+- 라이브러리의 공유 링크로 빌드 (권장하지 않음)
+
+예를 들어, 시스템 패키지와 함께 빌드는 좋지 않은 관행입니다. 왜냐하면 시스템에 어떤 특정 버전의 패키지가 있을지 확신할 수 없기 때문입니다.
+그러나 Debian 유지 관리자가 이 작업을 수행해야 합니다.
+이러한 이유로 우리는 적어도 이 빌드 변형을 지원해야 합니다.
+또 다른 예: 공유 링크는 일반적인 문제의 원인입니다. 하지만 일부 애호가에게는 필요합니다.
+
+모든 빌드 변형에서 모든 테스트를 실행할 수는 없지만, 최소한 다양한 빌드 변형이 깨지지 않았음을 확인하고자 합니다.
+이를 위해 우리는 빌드 테스트를 사용합니다.
+
+우리는 또한 컴파일하기에는 너무 긴 번역 단위가 없고 RAM을 너무 많이 요구하는 것이 없음을 검사합니다.
+
+또한 слишком 큰 스택 프레임이 없음을 검사합니다.
+
+## Testing for protocol compatibility {#testing-for-protocol-compatibility}
+
+ClickHouse 네트워크 프로토콜을 확장할 때는 수동으로 이전 clickhouse-client가 새로운 clickhouse-server와 작동하는지, 새로운 clickhouse-client가 이전 clickhouse-server와 작동하는지를 테스트합니다 (상응하는 패키지에서 이진 파일을 실행하여).
+
+일부 케이스는 통합 테스트를 통해 자동으로 테스트합니다:
+- 이전 버전의 ClickHouse로 작성된 데이터가 새 버전에서 성공적으로 읽힐 수 있는지;
+- 서로 다른 ClickHouse 버전으로 클러스터 내에서 분산 쿼리가 작동하는지.
+
+## Help from the Compiler {#help-from-the-compiler}
+
+주요 ClickHouse 코드는 `-Wall -Wextra -Werror` 옵션으로 빌드되며, 일부 추가 경고도 활성화되어 있습니다.
+이러한 옵션은 서드파티 라이브러리에는 활성화되지 않습니다.
+
+Clang는 더 유용한 경고를 많이 제공하므로, `-Weverything`으로 검색하여 기본 빌드에 포함할 것을 선택할 수 있습니다.
+
+우리는 ClickHouse를 빌드할 때 항상 clang을 사용합니다. 개발과 프로덕션 모두에서 사용합니다.
+자신의 컴퓨터에서 디버그 모드로 빌드할 수 있지만 (노트북의 배터리를 절약하기 위해), 컴파일러는 `-O3`와 함께 더 좋은 흐름 제어 및 절차 간 분석을 통해 더 많은 경고를 발생시킬 수 있습니다.
+디버그 모드에서 clang으로 빌드할 때는 런타임에 더 많은 오류를 잡을 수 있도록 debug 버전의 `libc++`가 사용됩니다.
+
+## Sanitizers {#sanitizers}
+
+:::note
+프로세스(ClickHouse 서버 또는 클라이언트)가 로컬에서 실행 시 시작할 때 충돌하는 경우 주소 공간 레이아웃 난수화를 비활성화해야 할 수 있습니다: `sudo sysctl kernel.randomize_va_space=0`
+:::
+
+### Address sanitizer {#address-sanitizer}
+
+우리는 기능, 통합, 스트레스 및 단위 테스트를 ASan에서 커밋 당 실행합니다.
+
+### Thread sanitizer {#thread-sanitizer}
+
+우리는 기능, 통합, 스트레스 및 단위 테스트를 TSan에서 커밋 당 실행합니다.
+
+### Memory sanitizer {#memory-sanitizer}
+
+우리는 기능, 통합, 스트레스 및 단위 테스트를 MSan에서 커밋 당 실행합니다.
+
+### Undefined behaviour sanitizer {#undefined-behaviour-sanitizer}
+
+우리는 기능, 통합, 스트레스 및 단위 테스트를 UBSan에서 커밋 당 실행합니다.
+일부 서드파티 라이브러리의 코드는 UB에 대해 샌티타이즈되지 않습니다.
+
+### Valgrind (memcheck) {#valgrind-memcheck}
+
+우리는 예전에는 Valgrind에서 기능 테스트를 밤새 실행했지만 더 이상 그렇게 하지 않습니다.
+여러 시간이 걸립니다.
+현재 `re2` 라이브러리에서 알려진 잘못된 양성 사례가 하나 있습니다. [이 기사](https://research.swtch.com/sparse)를 참조하세요.
+
+## Fuzzing {#fuzzing}
+
+ClickHouse 퍼징은 [libFuzzer](https://llvm.org/docs/LibFuzzer.html)와 무작위 SQL 쿼리를 사용하여 구현됩니다.
+모든 퍼즈 테스트는 샌티타이저(주소 및 정의되지 않은)와 함께 수행되어야 합니다.
+
+라이브러리 코드의 고립된 퍼징 테스트에 libFuzzer가 사용됩니다.
+퍼저는 테스트 코드의 일부로 구현되며 "_fuzzer" 이름 접미사를 가집니다.
+퍼저 예시는 `src/Parsers/fuzzers/lexer_fuzzer.cpp`에서 찾을 수 있습니다.
+libFuzzer 특정 구성, 사전 및 말뭉치는 `tests/fuzz`에 저장됩니다.
+사용자 입력을 처리하는 모든 기능에 대해 퍼즈 테스트를 작성하는 것을 권장합니다.
+
+퍼저는 기본적으로 빌드되지 않습니다.
+퍼저를 빌드하려면 `-DENABLE_FUZZING=1` 및 `-DENABLE_TESTS=1` 옵션을 설정해야 합니다.
+퍼저를 빌드하는 동안 Jemalloc를 비활성화하는 것이 좋습니다.
+ClickHouse 퍼징을 Google OSS-Fuzz에 통합하는 데 사용된 구성은 `docker/fuzz`에서 찾을 수 있습니다.
+
+우리는 또한 무작위 SQL 쿼리를 생성하고 서버가 이를 실행할 때 죽지 않는지 확인하기 위해 간단한 퍼즈 테스트를 사용합니다.
+이 테스트는 `00746_sql_fuzzy.pl`에서 확인할 수 있습니다.
+이 테스트는 지속적으로 (하루 종일 및 그 이상) 실행되어야 합니다.
+
+우리는 또한 대규모 AST 기반 쿼리 퍼저를 사용하여 많은 모서리 사례를 찾을 수 있습니다.
+쿼리 AST의 무작위 치환 및 대체를 수행합니다.
+이전 테스트의 AST 노드를 기억하여 무작위 순서로 처리되는 후속 테스트의 퍼징에 사용합니다.
+이 퍼저에 대해 더 알고 싶다면 [이 블로그 기사](https://clickhouse.com/blog/fuzzing-click-house)를 읽어보세요.
+
+## Stress test {#stress-test}
+
+스트레스 테스트는 또 다른 퍼징의 경우입니다.
+모든 기능 테스트를 단일 서버에서 무작위 순서로 병렬로 실행합니다.
+테스트 결과는 확인하지 않습니다.
+
+다음 사항이 확인됩니다:
+- 서버가 충돌하지 않으며, 디버그 또는 샌티타이저가 트리거되지 않습니다.
+- 교착 상태가 없습니다.
+- 데이터베이스 구조가 일관성 있습니다.
+- 서버가 테스트 후 성공적으로 중지되고 예외 없이 다시 시작할 수 있습니다.
+
+다섯 가지 변형(디버그, ASan, TSan, MSan, UBSan)이 있습니다.
+
+## Thread fuzzer {#thread-fuzzer}
+
+Thread Fuzzer는 (Thread Sanitizer와 혼동하지 마십시오) 실행 순서의 무작위화를 허용하는 또 다른 형태의 퍼징입니다.
+더 많은 특수 케이스를 찾는 데 도움이 됩니다.
+
+## Security audit {#security-audit}
+
+우리의 보안 팀은 보안 관점에서 ClickHouse 기능에 대한 기본 개요를 수행했습니다.
+
+## Static analyzers {#static-analyzers}
+
+우리는 커밋 당 `clang-tidy`를 실행합니다.
+`clang-static-analyzer` 검사도 활성화되어 있습니다.
+모양 검사에서도 `clang-tidy`를 사용합니다.
+
+우리는 `clang-tidy`, `Coverity`, `cppcheck`, `PVS-Studio`, `tscancode`, `CodeQL`을 평가했습니다.
+사용에 대한 지침은 `tests/instructions/` 디렉토리에서 찾을 수 있습니다.
+
+IDE로 `CLion`을 사용하는 경우, 기본적으로 몇 가지 `clang-tidy` 검사를 활용할 수 있습니다.
+
+우리는 또한 쉘 스크립트의 정적 분석을 위해 `shellcheck`를 사용합니다.
+
+## Hardening {#hardening}
+
+디버그 빌드에서는 사용자 수준 할당의 ASLR을 수행하는 사용자 정의 할당기를 사용하고 있습니다.
+
+또한 할당 후 읽기 전용으로 지정된 메모리 영역을 수동으로 보호합니다.
+
+디버그 빌드에서는 "해로운" (구식, 안전하지 않음, 스레드 안전하지 않음) 함수 호출을 보장하는 libc 맞춤형을 포함합니다.
+
+디버그 어설션이 광범위하게 사용됩니다.
+
+디버그 빌드에서는 "논리적 오류" 코드가 포함된 예외(버그를 의미함)가 발생하면 프로그램이 조기에 종료됩니다.
+이를 통해 릴리스 빌드에서 예외를 사용할 수 있지만 디버그 빌드에서는 어설션으로 만드는 것이 가능합니다.
+
+디버그 빌드에 대하여 디버그 버전의 jemalloc과 libc++가 사용됩니다.
+
+## Runtime integrity checks {#runtime-integrity-checks}
+
+디스크에 저장된 데이터는 체크섬이 있습니다.
+MergeTree 테이블의 데이터는 동시에 세 가지 방법으로 체크섬이 계산됩니다* (압축된 데이터 블록, 비압축된 데이터 블록, 블록 간 총 체크섬).
+클라이언트와 서버 또는 서버 간에 네트워크로 전송되는 데이터도 체크섬이 계산됩니다.
+복제는 복제본 간에 비트 단위로 동일한 데이터를 보장합니다.
+
+이는 결함 있는 하드웨어로부터 보호하는 데 필요합니다 (저장 매체의 비트 로트, 서버 RAM의 비트 플립, 네트워크 컨트롤러의 RAM의 비트 플립, 네트워크 스위치의 RAM의 비트 플립, 클라이언트의 RAM의 비트 플립, 전선의 비트 플립).
+비트 플립은 일반적이며 발생할 가능성이 높으므로 ECC RAM과 TCP 체크섬이 있는 경우에도 발생할 수 있습니다 (하루에 페타바이트의 데이터를 처리하는 수천 대의 서버를 운영하면 발생할 수 있습니다).
+[영상을 보세요 (러시아어)](https://www.youtube.com/watch?v=ooBAQIe0KlQ).
+
+ClickHouse는 운영 엔지니어가 결함 있는 하드웨어를 찾을 수 있도록 하는 진단 기능을 제공합니다.
+
+\* 그리고 느리지 않습니다.
+
+## Code style {#code-style}
+
+코드 스타일 규칙은 [여기](style.md)에 설명되어 있습니다.
+
+일부 일반적인 스타일 위반을 확인하려면 `utils/check-style` 스크립트를 사용할 수 있습니다.
+
+코드의 올바른 스타일을 강제하려면 `clang-format`을 사용할 수 있습니다.
+파일 `.clang-format`은 소스 루트에 위치합니다.
+이는 대체로 우리의 실제 코드 스타일과 일치합니다.
+그러나 기존 파일에 `clang-format`을 적용하는 것은 권장하지 않습니다. 왜냐하면 그렇게 하면 포맷팅이 더 악화되기 때문입니다.
+`clang-format-diff` 도구를 사용하는 것이 좋습니다. 이 도구는 clang 소스 저장소에서 찾을 수 있습니다.
+
+또한 코드를 재포맷하기 위해 `uncrustify` 도구를 시도할 수 있습니다.
+구성은 소스 루트의 `uncrustify.cfg`에 있습니다.
+이 도구는 `clang-format`보다 덜 테스트되었습니다.
+
+`CLion`에는 우리의 코드 스타일에 맞도록 조정해야 할 필요가 있는 코드 포맷터가 있습니다.
+
+우리는 또한 `codespell`을 사용하여 코드에서 오타를 찾습니다.
+이것도 자동화됩니다.
+
+## Test coverage {#test-coverage}
+
+우리는 또한 테스트 커버리지를 추적하지만, 기능 테스트에 대해서만, 그리고 ClickHouse 서버에 대해서만 수행합니다.
+이는 매일 수행됩니다.
+
+## Tests for tests {#tests-for-tests}
+
+우리는 플래키 테스트에 대한 자동 검사를 수행합니다.
+모든 새로운 테스트를 100회(기능 테스트의 경우), 또는 10회(통합 테스트의 경우) 실행합니다.
+단 한 번이라도 테스트가 실패하면 플래키로 간주됩니다.
+
+## Test automation {#test-automation}
+
+우리는 [GitHub Actions](https://github.com/features/actions)를 통해 테스트를 실행합니다.
+
+빌드 작업 및 테스트는 커밋 당 샌드박스에서 실행됩니다.
+결과 패키지 및 테스트 결과는 GitHub에 게시되며, 직접 링크를 통해 다운로드할 수 있습니다.
+아티팩트는 몇 달 동안 저장됩니다.
+GitHub에서 풀 리퀘스트를 보낼 때 "테스트 가능"으로 태그가 지정되며, 우리의 CI 시스템은 ClickHouse 패키지(릴리스, 디버그, 주소 샌티타이저 등)를 여러분을 위해 빌드합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/development/tests.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/development/tests.md.hash
new file mode 100644
index 00000000000..542d5cf4481
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/development/tests.md.hash
@@ -0,0 +1 @@
+ef933ca4daa970ab
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/dictionary/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/dictionary/index.md
new file mode 100644
index 00000000000..41fc8b2602d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/dictionary/index.md
@@ -0,0 +1,339 @@
+---
+'slug': '/dictionary'
+'title': '딕셔너리'
+'keywords':
+- 'dictionary'
+- 'dictionaries'
+'description': '딕셔너리는 빠른 조회를 위한 데이터의 키-값 표현을 제공합니다.'
+'doc_type': 'reference'
+---
+
+import dictionaryUseCases from '@site/static/images/dictionary/dictionary-use-cases.png';
+import dictionaryLeftAnyJoin from '@site/static/images/dictionary/dictionary-left-any-join.png';
+import Image from '@theme/IdealImage';
+
+
+
+# 딕셔너리
+
+ClickHouse의 딕셔너리는 다양한 [내부 및 외부 소스](/sql-reference/dictionaries#dictionary-sources)로부터 데이터를 메모리에 [키-값](https://en.wikipedia.org/wiki/Key%E2%80%93value_database) 형태로 제공하여, 초저지연 조회 쿼리를 최적화합니다.
+
+딕셔너리는 다음과 같은 데 유용합니다:
+- 쿼리 성능 향상, 특히 `JOIN`과 함께 사용할 때
+- 데이터 수집 프로세스를 느리게 하지 않고 즉석에서 수집된 데이터를 풍부하게 함
+
+
+
+## 딕셔너리를 사용한 조인 속도 향상 {#speeding-up-joins-using-a-dictionary}
+
+딕셔너리는 특정 유형의 `JOIN`, 즉 조인 키가 기본 키-값 저장소의 키 속성과 일치해야 하는 [`LEFT ANY` 유형](/sql-reference/statements/select/join#supported-types-of-join)을 가속화하는 데 사용할 수 있습니다.
+
+
+
+이 경우 ClickHouse는 딕셔너리를 활용하여 [Direct Join](https://clickhouse.com/blog/clickhouse-fully-supports-joins-direct-join-part4#direct-join)을 수행할 수 있습니다. 이는 ClickHouse의 가장 빠른 조인 알고리즘으로, 오른쪽 테이블이 저지연 키-값 요청을 지원하는 경우 적용됩니다. ClickHouse는 이 기능을 제공하는 세 가지 테이블 엔진이 있습니다: [Join](/engines/table-engines/special/join) (기본적으로 미리 계산된 해시 테이블임), [EmbeddedRocksDB](/engines/table-engines/integrations/embedded-rocksdb) 및 [Dictionary](/engines/table-engines/special/dictionary). 우리는 딕셔너리 기반 접근법을 설명하겠지만, 메커니즘은 세 가지 엔진 모두에서 동일합니다.
+
+직접 조인 알고리즘은 오른쪽 테이블이 딕셔너리로 지원되어야 하며, 그 테이블에서 조인할 데이터가 메모리에 저지연 키-값 데이터 구조로 이미 존재해야 합니다.
+
+### 예제 {#example}
+
+Stack Overflow 데이터세트를 사용하여 질문에 답해보겠습니다:
+*Hacker News에서 SQL과 관련된 가장 논란이 많은 게시물은 무엇입니까?*
+
+우리는 게시물이 비슷한 수의 좋아요 및 싫어요 투표를 받을 때 논란이 많다고 정의하겠습니다. 우리는 이 절댓값 차이를 계산하며, 값이 0에 가까울수록 더 많은 논란이 발생한 것으로 간주합니다. 우리는 게시물이 최소 10개의 좋아요 및 싫어요 투표를 받았다고 가정할 것입니다. 투표가 없는 게시물은 논란이 많지 않을 것입니다.
+
+데이터를 정규화한 후, 이 쿼리는 현재 `posts` 및 `votes` 테이블을 사용하는 `JOIN`을 필요로 합니다:
+
+```sql
+WITH PostIds AS
+(
+ SELECT Id
+ FROM posts
+ WHERE Title ILIKE '%SQL%'
+)
+SELECT
+ Id,
+ Title,
+ UpVotes,
+ DownVotes,
+ abs(UpVotes - DownVotes) AS Controversial_ratio
+FROM posts
+INNER JOIN
+(
+ SELECT
+ PostId,
+ countIf(VoteTypeId = 2) AS UpVotes,
+ countIf(VoteTypeId = 3) AS DownVotes
+ FROM votes
+ WHERE PostId IN (PostIds)
+ GROUP BY PostId
+ HAVING (UpVotes > 10) AND (DownVotes > 10)
+) AS votes ON posts.Id = votes.PostId
+WHERE Id IN (PostIds)
+ORDER BY Controversial_ratio ASC
+LIMIT 1
+
+Row 1:
+──────
+Id: 25372161
+Title: How to add exception handling to SqlDataSource.UpdateCommand
+UpVotes: 13
+DownVotes: 13
+Controversial_ratio: 0
+
+1 rows in set. Elapsed: 1.283 sec. Processed 418.44 million rows, 7.23 GB (326.07 million rows/s., 5.63 GB/s.)
+Peak memory usage: 3.18 GiB.
+```
+
+>**`JOIN`의 오른쪽에 작은 데이터세트를 사용하세요**: 이 쿼리는 `PostId`에서 필터링이 외부 쿼리와 내부 쿼리 모두에서 발생하기 때문에 필요 이상으로 장황해 보일 수 있습니다. 이는 쿼리 응답 시간을 빠르게 보장하기 위한 성능 최적화입니다. 최적의 성능을 위해 항상 `JOIN`의 오른쪽은 작은 집합이어야 하며, 가능한 한 작게 만들어야 합니다. `JOIN` 성능을 최적화하고 사용 가능한 알고리즘을 이해하기 위한 팁은 [이 블로그 시리즈](https://clickhouse.com/blog/clickhouse-fully-supports-joins-part1)를 추천합니다.
+
+이 쿼리는 빠르지만, 좋은 성능을 달성하기 위해 `JOIN`을 신중하게 작성해야 합니다. 이상적으로는 "SQL"이 포함된 게시물만 필터링한 후, 해당 블로그의 `UpVote` 및 `DownVote` 수를 확인하여 메트릭을 계산하고자 합니다.
+
+#### 딕셔너리 적용하기 {#applying-a-dictionary}
+
+이 개념을 시연하기 위해 наши 합산 데이터를 위해 딕셔너리를 사용합니다. 딕셔너리는 일반적으로 메모리에 유지되므로 ([ssd_cache](/sql-reference/dictionaries#ssd_cache) 이 예외입니다) 사용자는 데이터 크기에 유의해야 합니다. 우리의 `votes` 테이블 크기를 확인합니다:
+
+```sql
+SELECT table,
+ formatReadableSize(sum(data_compressed_bytes)) AS compressed_size,
+ formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size,
+ round(sum(data_uncompressed_bytes) / sum(data_compressed_bytes), 2) AS ratio
+FROM system.columns
+WHERE table IN ('votes')
+GROUP BY table
+
+┌─table───────────┬─compressed_size─┬─uncompressed_size─┬─ratio─┐
+│ votes │ 1.25 GiB │ 3.79 GiB │ 3.04 │
+└─────────────────┴─────────────────┴───────────────────┴───────┘
+```
+
+데이터는 딕셔너리에 압축되지 않은 형식으로 저장될 것이므로, 모든 컬럼을 딕셔너리에 저장하기 위해서는 최소 4GB의 메모리가 필요합니다(우리는 그렇지 않을 것입니다). 딕셔너리는 클러스터 전역에 복제되므로, 이 메모리 양은 *노드당* 확보되어야 합니다.
+
+> 아래 예제에서는 우리의 딕셔너리 데이터가 ClickHouse 테이블에서 비롯됩니다. 이는 딕셔너리의 가장 일반적인 소스를 나타내지만, [여러 소스](/sql-reference/dictionaries#dictionary-sources)가 지원되며, 여기에는 파일, http 및 [Postgres](/sql-reference/dictionaries#postgresql) 데이터베이스가 포함됩니다. 우리가 보여드릴 것처럼, 딕셔너리는 자동으로 새로 고쳐져 자주 변경되는 작은 데이터세트를 직접 조인에 사용할 수 있는 이상적인 방법을 제공합니다.
+
+우리의 딕셔너리는 조회가 수행될 기본 키가 필요합니다. 이는 개념적으로 트랜잭션 데이터베이스의 기본 키와 동일하며 고유해야 합니다. 우리의 쿼리는 `PostId`라는 조인 키에 대한 조회를 요구합니다. 딕셔너리는 우리의 `votes` 테이블에서 `PostId`당 총 좋아요 및 싫어요 투표수를 사용하여 채워져야 합니다. 다음은 이 딕셔너리 데이터를 얻기 위한 쿼리입니다:
+
+```sql
+SELECT PostId,
+ countIf(VoteTypeId = 2) AS UpVotes,
+ countIf(VoteTypeId = 3) AS DownVotes
+FROM votes
+GROUP BY PostId
+```
+
+딕셔너리를 생성하기 위해서는 다음 DDL이 필요합니다 - 위의 쿼리를 사용하는 것을 주목하세요:
+
+```sql
+CREATE DICTIONARY votes_dict
+(
+ `PostId` UInt64,
+ `UpVotes` UInt32,
+ `DownVotes` UInt32
+)
+PRIMARY KEY PostId
+SOURCE(CLICKHOUSE(QUERY 'SELECT PostId, countIf(VoteTypeId = 2) AS UpVotes, countIf(VoteTypeId = 3) AS DownVotes FROM votes GROUP BY PostId'))
+LIFETIME(MIN 600 MAX 900)
+LAYOUT(HASHED())
+
+0 rows in set. Elapsed: 36.063 sec.
+```
+
+> 자체 관리 OSS에서는 위 명령이 모든 노드에서 실행되어야 합니다. ClickHouse Cloud에서는 딕셔너리가 자동으로 모든 노드에 복제됩니다. 위 명령은 64GB RAM을 가진 ClickHouse Cloud 노드에서 실행되었으며, 로드하는 데 36초가 소요되었습니다.
+
+딕셔너리에 의해 소비되는 메모리를 확인합니다:
+
+```sql
+SELECT formatReadableSize(bytes_allocated) AS size
+FROM system.dictionaries
+WHERE name = 'votes_dict'
+
+┌─size─────┐
+│ 4.00 GiB │
+└──────────┘
+```
+
+특정 `PostId`에 대한 좋아요 및 싫어요 투표를 이제 간단한 `dictGet` 함수를 사용하여 가져올 수 있습니다. 아래는 게시물 `11227902`에 대한 값을 얻는 방법입니다:
+
+```sql
+SELECT dictGet('votes_dict', ('UpVotes', 'DownVotes'), '11227902') AS votes
+
+┌─votes──────┐
+│ (34999,32) │
+└────────────┘
+
+Exploiting this in our earlier query, we can remove the JOIN:
+
+WITH PostIds AS
+(
+ SELECT Id
+ FROM posts
+ WHERE Title ILIKE '%SQL%'
+)
+SELECT Id, Title,
+ dictGet('votes_dict', 'UpVotes', Id) AS UpVotes,
+ dictGet('votes_dict', 'DownVotes', Id) AS DownVotes,
+ abs(UpVotes - DownVotes) AS Controversial_ratio
+FROM posts
+WHERE (Id IN (PostIds)) AND (UpVotes > 10) AND (DownVotes > 10)
+ORDER BY Controversial_ratio ASC
+LIMIT 3
+
+3 rows in set. Elapsed: 0.551 sec. Processed 119.64 million rows, 3.29 GB (216.96 million rows/s., 5.97 GB/s.)
+Peak memory usage: 552.26 MiB.
+```
+
+이 쿼리는 훨씬 단순할 뿐만 아니라, 속도도 두 배 이상 빠릅니다! 이는 10개의 이상 좋아요 및 싫어요 투표가 있는 게시물만 딕셔너리에 로드하고, 사전 계산된 논란 값을 저장함으로써 더 최적화될 수 있습니다.
+
+## 쿼리 시간 데이터 풍부화 {#query-time-enrichment}
+
+딕셔너리는 쿼리 시간에 값을 조회하는 데 사용할 수 있습니다. 이러한 값은 결과로 반환하거나 집계에 사용할 수 있습니다. 사용자 ID를 위치에 매핑하는 딕셔너리를 생성한다고 가정해 보겠습니다:
+
+```sql
+CREATE DICTIONARY users_dict
+(
+ `Id` Int32,
+ `Location` String
+)
+PRIMARY KEY Id
+SOURCE(CLICKHOUSE(QUERY 'SELECT Id, Location FROM stackoverflow.users'))
+LIFETIME(MIN 600 MAX 900)
+LAYOUT(HASHED())
+```
+
+우리는 이 딕셔너리를 사용하여 게시물 결과를 풍부하게 만들 수 있습니다:
+
+```sql
+SELECT
+ Id,
+ Title,
+ dictGet('users_dict', 'Location', CAST(OwnerUserId, 'UInt64')) AS location
+FROM posts
+WHERE Title ILIKE '%clickhouse%'
+LIMIT 5
+FORMAT PrettyCompactMonoBlock
+
+┌───────Id─┬─Title─────────────────────────────────────────────────────────┬─Location──────────────┐
+│ 52296928 │ Comparison between two Strings in ClickHouse │ Spain │
+│ 52345137 │ How to use a file to migrate data from mysql to a clickhouse? │ 中国江苏省Nanjing Shi │
+│ 61452077 │ How to change PARTITION in clickhouse │ Guangzhou, 广东省中国 │
+│ 55608325 │ Clickhouse select last record without max() on all table │ Moscow, Russia │
+│ 55758594 │ ClickHouse create temporary table │ Perm', Russia │
+└──────────┴───────────────────────────────────────────────────────────────┴───────────────────────┘
+
+5 rows in set. Elapsed: 0.033 sec. Processed 4.25 million rows, 82.84 MB (130.62 million rows/s., 2.55 GB/s.)
+Peak memory usage: 249.32 MiB.
+```
+
+위의 조인 예제와 유사하게, 우리는 대부분의 게시물이 어디에서 유래하는지를 효율적으로 결정하기 위해 같은 딕셔너리를 사용할 수 있습니다:
+
+```sql
+SELECT
+ dictGet('users_dict', 'Location', CAST(OwnerUserId, 'UInt64')) AS location,
+ count() AS c
+FROM posts
+WHERE location != ''
+GROUP BY location
+ORDER BY c DESC
+LIMIT 5
+
+┌─location───────────────┬──────c─┐
+│ India │ 787814 │
+│ Germany │ 685347 │
+│ United States │ 595818 │
+│ London, United Kingdom │ 538738 │
+│ United Kingdom │ 537699 │
+└────────────────────────┴────────┘
+
+5 rows in set. Elapsed: 0.763 sec. Processed 59.82 million rows, 239.28 MB (78.40 million rows/s., 313.60 MB/s.)
+Peak memory usage: 248.84 MiB.
+```
+
+## 인덱스 시간 데이터 풍부화 {#index-time-enrichment}
+
+위의 예에서는 쿼리 시간에 딕셔너리를 사용하여 조인을 제거했습니다. 딕셔너리는 삽입 시 행을 풍부하게 하는 데 사용할 수도 있습니다. 이는 보통 풍부화 값이 변경되지 않고, 딕셔너리를 채우는 데 사용할 수 있는 외부 소스가 존재하는 경우 적절합니다. 이 경우, 삽입 시 행을 풍부하게 함으로써 쿼리 시간에 딕셔너리를 조회하는 것을 피할 수 있습니다.
+
+사용자의 `Location`이 Stack Overflow에서 결코 변경되지 않는다고 가정해 보겠습니다(실제로는 변경됩니다) - 특히 `users` 테이블의 `Location` 컬럼입니다. 지역별로 게시물 테이블에 대한 분석 쿼리를 수행하고 싶다고 가정해 봅시다. 이 테이블에는 `UserId`가 포함되어 있습니다.
+
+딕셔너리는 사용자 ID에서 위치로의 매핑을 제공하며, `users` 테이블에 의해 뒷받침됩니다:
+
+```sql
+CREATE DICTIONARY users_dict
+(
+ `Id` UInt64,
+ `Location` String
+)
+PRIMARY KEY Id
+SOURCE(CLICKHOUSE(QUERY 'SELECT Id, Location FROM users WHERE Id >= 0'))
+LIFETIME(MIN 600 MAX 900)
+LAYOUT(HASHED())
+```
+
+> 우리는 `Id < 0`인 사용자를 제외하며, 이를 통해 `Hashed` 딕셔너리 유형을 사용할 수 있게 됩니다. `Id < 0`인 사용자는 시스템 사용자입니다.
+
+게시물 테이블에서 삽입 시간에 이 딕셔너리를 활용하기 위해서는 스키마를 수정해야 합니다:
+
+```sql
+CREATE TABLE posts_with_location
+(
+ `Id` UInt32,
+ `PostTypeId` Enum8('Question' = 1, 'Answer' = 2, 'Wiki' = 3, 'TagWikiExcerpt' = 4, 'TagWiki' = 5, 'ModeratorNomination' = 6, 'WikiPlaceholder' = 7, 'PrivilegeWiki' = 8),
+ ...
+ `Location` MATERIALIZED dictGet(users_dict, 'Location', OwnerUserId::'UInt64')
+)
+ENGINE = MergeTree
+ORDER BY (PostTypeId, toDate(CreationDate), CommentCount)
+```
+
+위의 예에서 `Location`은 `MATERIALIZED` 컬럼으로 선언됩니다. 이는 값이 `INSERT` 쿼리의 일부로 제공되며 항상 계산됨을 의미합니다.
+
+> ClickHouse는 [`DEFAULT` 컬럼](/sql-reference/statements/create/table#default_values)도 지원합니다(값이 제공되지 않을 경우 삽입되거나 계산될 수 있음).
+
+테이블을 채우기 위해 보통 `INSERT INTO SELECT`를 사용하여 S3에서 가져올 수 있습니다:
+
+```sql
+INSERT INTO posts_with_location SELECT Id, PostTypeId::UInt8, AcceptedAnswerId, CreationDate, Score, ViewCount, Body, OwnerUserId, OwnerDisplayName, LastEditorUserId, LastEditorDisplayName, LastEditDate, LastActivityDate, Title, Tags, AnswerCount, CommentCount, FavoriteCount, ContentLicense, ParentId, CommunityOwnedDate, ClosedDate FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/stackoverflow/parquet/posts/*.parquet')
+
+0 rows in set. Elapsed: 36.830 sec. Processed 238.98 million rows, 2.64 GB (6.49 million rows/s., 71.79 MB/s.)
+```
+
+우리는 이제 대부분의 게시물이 유래하는 위치의 이름을 얻을 수 있습니다:
+
+```sql
+SELECT Location, count() AS c
+FROM posts_with_location
+WHERE Location != ''
+GROUP BY Location
+ORDER BY c DESC
+LIMIT 4
+
+┌─Location───────────────┬──────c─┐
+│ India │ 787814 │
+│ Germany │ 685347 │
+│ United States │ 595818 │
+│ London, United Kingdom │ 538738 │
+└────────────────────────┴────────┘
+
+4 rows in set. Elapsed: 0.142 sec. Processed 59.82 million rows, 1.08 GB (420.73 million rows/s., 7.60 GB/s.)
+Peak memory usage: 666.82 MiB.
+```
+
+## 고급 딕셔너리 주제 {#advanced-dictionary-topics}
+
+### 딕셔너리 `LAYOUT` 선택하기 {#choosing-the-dictionary-layout}
+
+`LAYOUT` 절은 딕셔너리에 대한 내부 데이터 구조를 제어합니다. 여러 가지 옵션이 존재하며 [여기](https://clickhouse.com/blog/faster-queries-dictionaries-clickhouse#choosing-a-layout)에서 문서화되었습니다. 올바른 레이아웃 선택에 대한 몇 가지 팁은 [여기](https://clickhouse.com/blog/faster-queries-dictionaries-clickhouse#choosing-a-layout)에서 찾을 수 있습니다.
+
+### 딕셔너리 새로 고침 {#refreshing-dictionaries}
+
+우리는 딕셔너리에 대한 `LIFETIME`을 `MIN 600 MAX 900`으로 지정했습니다. LIFETIME은 딕셔너리의 업데이트 간격으로, 여기서 값은 600초와 900초 사이의 무작위 간격으로 주기적인 로드를 발생시킵니다. 이 무작위 간격은 많은 서버에서 업데이트할 때 딕셔너리 소스에 대한 부하를 분산시키는 데 필요합니다. 업데이트 중에는 딕셔너리의 이전 버전을 여전히 쿼리할 수 있으며, 오직 초기 로드만 쿼리를 차단합니다. `(LIFETIME(0))`을 설정하면 딕셔너리가 업데이트되지 않도록 방지합니다.
+딕셔너리는 `SYSTEM RELOAD DICTIONARY` 명령을 사용하여 강제로 다시 로드할 수 있습니다.
+
+ClickHouse 및 Postgres와 같은 데이터베이스 소스의 경우, 변경 사항이 실제로 있을 때만 딕셔너리를 업데이트할 쿼리를 설정할 수 있습니다(쿼리의 응답이 이를 판단), 주기적인 간격이 아니라. 추가 세부정보는 [여기](https://sql-reference/dictionaries#refreshing-dictionary-data-using-lifetime)에서 확인할 수 있습니다.
+
+### 기타 딕셔너리 유형 {#other-dictionary-types}
+
+ClickHouse는 또한 [Hierarchical](/sql-reference/dictionaries#hierarchical-dictionaries), [Polygon](/sql-reference/dictionaries#polygon-dictionaries) 및 [정규 표현식](/sql-reference/dictionaries#regexp-tree-dictionary) 딕셔너리를 지원합니다.
+
+### 더 읽어보기 {#more-reading}
+
+- [딕셔너리를 사용하여 쿼리 가속화](https://clickhouse.com/blog/faster-queries-dictionaries-clickhouse)
+- [딕셔너리에 대한 고급 구성](/sql-reference/dictionaries)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/dictionary/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/dictionary/index.md.hash
new file mode 100644
index 00000000000..4d85b5bfea8
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/dictionary/index.md.hash
@@ -0,0 +1 @@
+a48e5f19ffb34d17
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/_category_.yml b/i18n/ko/docusaurus-plugin-content-docs/current/engines/_category_.yml
new file mode 100644
index 00000000000..7675c2d5107
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/_category_.yml
@@ -0,0 +1,7 @@
+position: 30
+label: 'Database & Table Engines'
+collapsible: true
+collapsed: true
+link:
+ type: generated-index
+ slug: /engines
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/atomic.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/atomic.md
new file mode 100644
index 00000000000..8c7a2ec4243
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/atomic.md
@@ -0,0 +1,87 @@
+---
+'description': '`Atomic` 엔진은 비차단 `DROP TABLE` 및 `RENAME TABLE` 쿼리, 그리고 원자 `EXCHANGE
+ TABLES` 쿼리를 지원합니다. 기본적으로 `Atomic` 데이터베이스 엔진이 사용됩니다.'
+'sidebar_label': '원자'
+'sidebar_position': 10
+'slug': '/engines/database-engines/atomic'
+'title': '원자'
+'doc_type': 'reference'
+---
+
+
+# Atomic
+
+`Atomic` 엔진은 비차단 [`DROP TABLE`](#drop-detach-table) 및 [`RENAME TABLE`](#rename-table) 쿼리와 원자적 [`EXCHANGE TABLES`](#exchange-tables) 쿼리를 지원합니다. `Atomic` 데이터베이스 엔진은 기본적으로 오픈 소스 ClickHouse에서 사용됩니다.
+
+:::note
+ClickHouse Cloud에서는 기본적으로 [`Shared` 데이터베이스 엔진](/cloud/reference/shared-catalog#shared-database-engine)이 사용되며, 위에서 언급한 작업도 지원합니다.
+:::
+
+## 데이터베이스 생성 {#creating-a-database}
+
+```sql
+CREATE DATABASE test [ENGINE = Atomic] [SETTINGS disk=...];
+```
+
+## 세부 사항 및 권장 사항 {#specifics-and-recommendations}
+
+### 테이블 UUID {#table-uuid}
+
+`Atomic` 데이터베이스의 각 테이블은 지속적인 [UUID](../../sql-reference/data-types/uuid.md)를 가지며, 다음 디렉토리에 데이터를 저장합니다:
+
+```text
+/clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/
+```
+
+여기서 `xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy`는 테이블의 UUID입니다.
+
+기본적으로 UUID는 자동으로 생성됩니다. 그러나 사용자는 테이블을 생성할 때 UUID를 명시적으로 지정할 수 있지만, 이는 권장되지 않습니다.
+
+예를 들어:
+
+```sql
+CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;
+```
+
+:::note
+`SHOW CREATE` 쿼리와 함께 UUID를 표시하려면 [show_table_uuid_in_table_create_query_if_not_nil](../../operations/settings/settings.md#show_table_uuid_in_table_create_query_if_not_nil) 설정을 사용할 수 있습니다.
+:::
+
+### RENAME TABLE {#rename-table}
+
+[`RENAME`](../../sql-reference/statements/rename.md) 쿼리는 UUID를 수정하거나 테이블 데이터를 이동하지 않습니다. 이러한 쿼리는 즉시 실행되며, 테이블을 사용하는 다른 쿼리가 완료되기를 기다리지 않습니다.
+
+### DROP/DETACH TABLE {#drop-detach-table}
+
+`DROP TABLE`을 사용할 때, 데이터가 제거되지 않습니다. `Atomic` 엔진은 테이블을 `/clickhouse_path/metadata_dropped/`로 메타데이터를 이동시켜 삭제된 것으로 표시하고 백그라운드 스레드에 알립니다. 최종 테이블 데이터 삭제까지의 지연 시간은 [`database_atomic_delay_before_drop_table_sec`](../../operations/server-configuration-parameters/settings.md#database_atomic_delay_before_drop_table_sec) 설정에 의해 지정됩니다.
+`synchronous` 모드를 사용하려면 `SYNC` 수정자를 지정할 수 있습니다. 이를 위해 [`database_atomic_wait_for_drop_and_detach_synchronously`](../../operations/settings/settings.md#database_atomic_wait_for_drop_and_detach_synchronously) 설정을 사용하세요. 이 경우 `DROP`은 테이블을 사용하는 실행 중인 `SELECT`, `INSERT` 및 기타 쿼리가 완료될 때까지 기다립니다. 테이블이 사용 중이지 않을 때 삭제됩니다.
+
+### EXCHANGE TABLES/DICTIONARIES {#exchange-tables}
+
+[`EXCHANGE`](../../sql-reference/statements/exchange.md) 쿼리는 테이블이나 딕셔너리를 원자적으로 교환합니다. 예를 들어, 다음과 같은 비원자적 작업 대신:
+
+```sql title="Non-atomic"
+RENAME TABLE new_table TO tmp, old_table TO new_table, tmp TO old_table;
+```
+원자적 작업을 사용할 수 있습니다:
+
+```sql title="Atomic"
+EXCHANGE TABLES new_table AND old_table;
+```
+
+### ReplicatedMergeTree in atomic database {#replicatedmergetree-in-atomic-database}
+
+[`ReplicatedMergeTree`](/engines/table-engines/mergetree-family/replication) 테이블의 경우, ZooKeeper의 경로와 복제본 이름에 대한 엔진 매개변수를 명시하지 않는 것이 좋습니다. 이 경우, 설정 매개변수 [`default_replica_path`](../../operations/server-configuration-parameters/settings.md#default_replica_path)와 [`default_replica_name`](../../operations/server-configuration-parameters/settings.md#default_replica_name)이 사용됩니다. 엔진 매개변수를 명시적으로 지정하려면 `{uuid}` 매크로를 사용하는 것이 좋습니다. 이것은 ZooKeeper에서 각 테이블에 대해 고유한 경로가 자동으로 생성되도록 보장합니다.
+
+### 메타데이터 디스크 {#metadata-disk}
+`SETTINGS`에서 `disk`가 지정되면, 해당 디스크가 테이블 메타데이터 파일을 저장하는 데 사용됩니다.
+예를 들어:
+
+```sql
+CREATE TABLE db (n UInt64) ENGINE = Atomic SETTINGS disk=disk(type='local', path='/var/lib/clickhouse-disks/db_disk');
+```
+지정되지 않은 경우, 기본적으로 `database_disk.disk`에 정의된 디스크가 사용됩니다.
+
+## 추가 정보 {#see-also}
+
+- [system.databases](../../operations/system-tables/databases.md) 시스템 테이블
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/atomic.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/atomic.md.hash
new file mode 100644
index 00000000000..b7005d80755
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/atomic.md.hash
@@ -0,0 +1 @@
+58e472c998dfa0b3
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/backup.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/backup.md
new file mode 100644
index 00000000000..bb0e514d5f3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/backup.md
@@ -0,0 +1,112 @@
+---
+'description': '백업에서 테이블/데이터베이스를 읽기 전용 모드로 즉시 연결할 수 있습니다.'
+'sidebar_label': '백업'
+'sidebar_position': 60
+'slug': '/engines/database-engines/backup'
+'title': '백업'
+'doc_type': 'reference'
+---
+
+
+# 백업
+
+데이터베이스 백업은 [백업](../../operations/backup)에서 테이블/데이터베이스를 읽기 전용 모드로 즉시 연결할 수 있게 해줍니다.
+
+데이터베이스 백업은 증분 백업과 비증분 백업 모두에서 작동합니다.
+
+## 데이터베이스 생성 {#creating-a-database}
+
+```sql
+CREATE DATABASE backup_database
+ENGINE = Backup('database_name_inside_backup', 'backup_destination')
+```
+
+백업 대상은 `Disk`, `S3`, `File`과 같은 유효한 백업 [대상](../../operations/backup#configure-a-backup-destination)일 수 있습니다.
+
+`Disk` 백업 대상을 사용하는 경우, 백업에서 데이터베이스를 생성하는 쿼리는 다음과 같습니다:
+
+```sql
+CREATE DATABASE backup_database
+ENGINE = Backup('database_name_inside_backup', Disk('disk_name', 'backup_name'))
+```
+
+**엔진 매개변수**
+
+- `database_name_inside_backup` — 백업 내 데이터베이스의 이름.
+- `backup_destination` — 백업 대상.
+
+## 사용 예시 {#usage-example}
+
+`Disk` 백업 대상을 사용한 예시를 만들어 보겠습니다. 먼저 `storage.xml`에서 백업 디스크를 설정합시다:
+
+```xml
+
+
+
+ local
+ /home/ubuntu/ClickHouseWorkDir/backups/
+
+
+
+
+ backups
+ /home/ubuntu/ClickHouseWorkDir/backups/
+
+```
+
+사용 예시입니다. 테스트 데이터베이스와 테이블을 만들고, 일부 데이터를 삽입한 후 백업을 생성해 보겠습니다:
+
+```sql
+CREATE DATABASE test_database;
+
+CREATE TABLE test_database.test_table_1 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
+INSERT INTO test_database.test_table_1 VALUES (0, 'test_database.test_table_1');
+
+CREATE TABLE test_database.test_table_2 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
+INSERT INTO test_database.test_table_2 VALUES (0, 'test_database.test_table_2');
+
+CREATE TABLE test_database.test_table_3 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
+INSERT INTO test_database.test_table_3 VALUES (0, 'test_database.test_table_3');
+
+BACKUP DATABASE test_database TO Disk('backups', 'test_database_backup');
+```
+
+이제 `test_database_backup` 백업이 있으므로 데이터베이스 Backup을 생성합시다:
+
+```sql
+CREATE DATABASE test_database_backup ENGINE = Backup('test_database', Disk('backups', 'test_database_backup'));
+```
+
+이제 데이터베이스의 모든 테이블을 쿼리할 수 있습니다:
+
+```sql
+SELECT id, value FROM test_database_backup.test_table_1;
+
+┌─id─┬─value──────────────────────┐
+│ 0 │ test_database.test_table_1 │
+└────┴────────────────────────────┘
+
+SELECT id, value FROM test_database_backup.test_table_2;
+
+┌─id─┬─value──────────────────────┐
+│ 0 │ test_database.test_table_2 │
+└────┴────────────────────────────┘
+
+SELECT id, value FROM test_database_backup.test_table_3;
+
+┌─id─┬─value──────────────────────┐
+│ 0 │ test_database.test_table_3 │
+└────┴────────────────────────────┘
+```
+
+이 데이터베이스 Backup을 일반 데이터베이스처럼 사용할 수도 있습니다. 예를 들어 그 안의 테이블을 쿼리할 수 있습니다:
+
+```sql
+SELECT database, name FROM system.tables WHERE database = 'test_database_backup':
+
+┌─database─────────────┬─name─────────┐
+│ test_database_backup │ test_table_1 │
+│ test_database_backup │ test_table_2 │
+│ test_database_backup │ test_table_3 │
+└──────────────────────┴──────────────┘
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/backup.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/backup.md.hash
new file mode 100644
index 00000000000..27a844a1cbe
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/backup.md.hash
@@ -0,0 +1 @@
+e15ca4fde0601d4d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/datalake.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/datalake.md
new file mode 100644
index 00000000000..28f6ef69708
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/datalake.md
@@ -0,0 +1,82 @@
+---
+'description': 'DataLakeCatalog 데이터베이스 엔진이 ClickHouse를 외부 데이터 카탈로그에 연결하고 개방형 테이블 형식
+ 데이터를 쿼리할 수 있도록 합니다.'
+'sidebar_label': 'DataLakeCatalog'
+'slug': '/engines/database-engines/datalakecatalog'
+'title': 'DataLakeCatalog'
+'doc_type': 'reference'
+---
+
+
+# DataLakeCatalog
+
+`DataLakeCatalog` 데이터베이스 엔진은 ClickHouse를 외부 데이터 카탈로그에 연결하고 데이터 중복 없이 오픈 테이블 형식 데이터를 쿼리할 수 있게 해줍니다. 이는 ClickHouse를 기존 데이터 레이크 인프라와 원활하게 작동하는 강력한 쿼리 엔진으로 변모시킵니다.
+
+## Supported catalogs {#supported-catalogs}
+
+`DataLakeCatalog` 엔진은 다음과 같은 데이터 카탈로그를 지원합니다:
+
+- **AWS Glue Catalog** - AWS 환경의 Iceberg 테이블용
+- **Databricks Unity Catalog** - Delta Lake 및 Iceberg 테이블용
+- **Hive Metastore** - 전통적인 Hadoop 생태계 카탈로그
+- **REST Catalogs** - Iceberg REST 사양을 지원하는 모든 카탈로그
+
+## Creating a database {#creating-a-database}
+
+`DataLakeCatalog` 엔진을 사용하기 위해 아래의 관련 설정을 활성화해야 합니다:
+
+```sql
+SET allow_experimental_database_iceberg = 1;
+SET allow_experimental_database_unity_catalog = 1;
+SET allow_experimental_database_glue_catalog = 1;
+SET allow_experimental_database_hms_catalog = 1;
+```
+
+`DataLakeCatalog` 엔진을 가진 데이터베이스는 다음 구문을 사용하여 생성할 수 있습니다:
+
+```sql
+CREATE DATABASE database_name
+ENGINE = DataLakeCatalog(catalog_endpoint[, user, password])
+SETTINGS
+catalog_type,
+[...]
+```
+
+다음 설정이 지원됩니다:
+
+| Setting | Description |
+|-------------------------|-----------------------------------------------------------------------------------------|
+| `catalog_type` | 카탈로그 유형: `glue`, `unity` (Delta), `rest` (Iceberg), `hive`, `onelake` (Iceberg) |
+| `warehouse` | 카탈로그에서 사용할 웨어하우스/데이터베이스 이름. |
+| `catalog_credential` | 카탈로그를 위한 인증 자격 증명 (예: API 키 또는 토큰) |
+| `auth_header` | 카탈로그 서비스와의 인증을 위한 사용자 정의 HTTP 헤더 |
+| `auth_scope` | 인증을 위한 OAuth2 범위 (OAuth 사용 시) |
+| `storage_endpoint` | 기본 스토리지의 엔드포인트 URL |
+| `oauth_server_uri` | 인증을 위한 OAuth2 권한 부여 서버의 URI |
+| `vended_credentials` | 제공되는 자격 증명 사용 여부를 나타내는 Boolean (AWS 전용) |
+| `aws_access_key_id` | S3/Glue 접근을 위한 AWS 액세스 키 ID (제공된 자격 증명 사용하지 않는 경우) |
+| `aws_secret_access_key` | S3/Glue 접근을 위한 AWS 비밀 액세스 키 (제공된 자격 증명 사용하지 않는 경우) |
+| `region` | 서비스의 AWS 리전 (예: `us-east-1`) |
+
+## Examples {#examples}
+
+`DataLakeCatalog` 엔진 사용에 대한 예는 아래 섹션을 참조하십시오:
+
+* [Unity Catalog](/use-cases/data-lake/unity-catalog)
+* [Glue Catalog](/use-cases/data-lake/glue-catalog)
+* OneLake Catalog
+ `allow_experimental_database_iceberg` 또는 `allow_database_iceberg`를 활성화하여 사용할 수 있습니다.
+```sql
+CREATE DATABASE database_name
+ENGINE = DataLakeCatalog(catalog_endpoint)
+SETTINGS
+ catalog_type = 'onelake',
+ warehouse = warehouse,
+ onelake_tenant_id = tenant_id,
+ oauth_server_uri = server_uri,
+ auth_scope = auth_scope,
+ onelake_client_id = client_id,
+ onelake_client_secret = client_secret;
+SHOW TABLES IN databse_name;
+SELECT count() from database_name.table_name;
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/datalake.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/datalake.md.hash
new file mode 100644
index 00000000000..74fde953bc7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/datalake.md.hash
@@ -0,0 +1 @@
+49197d7b9d501168
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/index.md
new file mode 100644
index 00000000000..05dd2c6e5f9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/index.md
@@ -0,0 +1,38 @@
+---
+'description': 'Database Engines에 대한 문서'
+'slug': '/engines/database-engines/'
+'toc_folder_title': 'Database Engines'
+'toc_priority': 27
+'toc_title': 'Introduction'
+'title': '데이터베이스 엔진'
+'doc_type': 'landing-page'
+---
+
+
+# 데이터베이스 엔진
+
+데이터베이스 엔진은 테이블과 함께 작업할 수 있게 해줍니다. 기본적으로 ClickHouse는 [Atomic](../../engines/database-engines/atomic.md) 데이터베이스 엔진을 사용하며, 이는 구성 가능한 [테이블 엔진](../../engines/table-engines/index.md)과 [SQL 방언](../../sql-reference/syntax.md)을 제공합니다.
+
+다음은 사용 가능한 데이터베이스 엔진의 전체 목록입니다. 더 많은 세부정보는 링크를 따라가십시오:
+
+
+
+
+| 페이지 | 설명 |
+|-----|-----|
+| [Shared](/engines/database-engines/shared) | ClickHouse Cloud에서 사용할 수 있는 `Shared` 데이터베이스 엔진을 설명하는 페이지 |
+| [Atomic](/engines/database-engines/atomic) | `Atomic` 엔진은 차단되지 않는 `DROP TABLE` 및 `RENAME TABLE` 쿼리와 원자적 `EXCHANGE TABLES` 쿼리를 지원합니다. `Atomic` 데이터베이스 엔진은 기본적으로 사용됩니다. |
+| [Lazy](/engines/database-engines/lazy) | 마지막 접근 후 `expiration_time_in_seconds` 초 동안만 테이블을 RAM에 유지합니다. Log 유형 테이블과만 사용할 수 있습니다. |
+| [Replicated](/engines/database-engines/replicated) | 이 엔진은 Atomic 엔진을 기반으로 합니다. 메타데이터의 복제를 지원하며, DDL 로그가 ZooKeeper에 기록되고 지정된 데이터베이스의 모든 복제본에서 실행됩니다. |
+| [PostgreSQL](/engines/database-engines/postgresql) | 원격 PostgreSQL 서버의 데이터베이스에 연결할 수 있게 해줍니다. |
+| [MySQL](/engines/database-engines/mysql) | 원격 MySQL 서버의 데이터베이스에 연결하고 ClickHouse와 MySQL 간의 데이터를 교환하기 위해 `INSERT` 및 `SELECT` 쿼리를 수행할 수 있습니다. |
+| [SQLite](/engines/database-engines/sqlite) | SQLite 데이터베이스에 연결하고 ClickHouse와 SQLite 간의 데이터를 교환하기 위해 `INSERT` 및 `SELECT` 쿼리를 수행할 수 있습니다. |
+| [MaterializedPostgreSQL](/engines/database-engines/materialized-postgresql) | PostgreSQL 데이터베이스의 테이블로 ClickHouse 데이터베이스를 생성합니다. |
+| [Backup](/engines/database-engines/backup) | 읽기 전용 모드에서 백업에서 테이블/데이터베이스를 즉시 첨부할 수 있게 해줍니다. |
+| [DataLakeCatalog](/engines/database-engines/datalakecatalog) | DataLakeCatalog 데이터베이스 엔진은 ClickHouse를 외부 데이터 카탈로그에 연결하고 개방형 테이블 형식 데이터를 쿼리할 수 있게 해줍니다. |
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/index.md.hash
new file mode 100644
index 00000000000..4fdaf3f4e71
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/index.md.hash
@@ -0,0 +1 @@
+31539bcccb31e4af
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/lazy.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/lazy.md
new file mode 100644
index 00000000000..b05f321939a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/lazy.md
@@ -0,0 +1,23 @@
+---
+'description': '마지막 접근 후 테이블을 `expiration_time_in_seconds` 초 동안만 RAM에 유지합니다. Log 유형
+ 테이블에서만 사용할 수 있습니다.'
+'sidebar_label': '게으른'
+'sidebar_position': 20
+'slug': '/engines/database-engines/lazy'
+'title': '게으른'
+'doc_type': 'reference'
+---
+
+
+# Lazy
+
+마지막 접근 후 `expiration_time_in_seconds` 초 동안 테이블을 RAM에만 유지합니다. \*Log 테이블에 대해서만 사용할 수 있습니다.
+
+많은 작은 \*Log 테이블을 저장하는 데 최적화되어 있으며, 접근 사이에 긴 시간 간격이 있습니다.
+
+## Creating a database {#creating-a-database}
+
+```sql
+CREATE DATABASE testlazy
+ENGINE = Lazy(expiration_time_in_seconds);
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/lazy.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/lazy.md.hash
new file mode 100644
index 00000000000..9d98dacf1f9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/lazy.md.hash
@@ -0,0 +1 @@
+8407c71d54017923
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/materialized-postgresql.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/materialized-postgresql.md
new file mode 100644
index 00000000000..7612cc0f604
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/materialized-postgresql.md
@@ -0,0 +1,294 @@
+---
+'description': 'PostgreSQL 데이터베이스의 테이블로 ClickHouse DATABASE를 생성합니다.'
+'sidebar_label': '물리화된PostgreSQL'
+'sidebar_position': 60
+'slug': '/engines/database-engines/materialized-postgresql'
+'title': '물리화된PostgreSQL'
+'doc_type': 'reference'
+---
+
+import ExperimentalBadge from '@theme/badges/ExperimentalBadge';
+import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge';
+
+
+# MaterializedPostgreSQL
+
+
+
+
+:::note
+ClickHouse Cloud 사용자는 PostgreSQL 복제를 ClickHouse로 위해 [ClickPipes](/integrations/clickpipes) 사용을 권장합니다. 이는 PostgreSQL에 대한 고성능 변경 데이터 캡처(CDC)를 기본적으로 지원합니다.
+:::
+
+PostgreSQL 데이터베이스에서 테이블로 ClickHouse 데이터베이스를 생성합니다. 우선, `MaterializedPostgreSQL` 엔진을 사용하여 데이터베이스가 PostgreSQL 데이터베이스의 스냅샷을 생성하고 필요한 테이블을 로드합니다. 필요한 테이블은 지정된 데이터베이스의 모든 스키마에서 테이블의 부분 집합을 포함할 수 있습니다. 스냅샷과 함께 데이터베이스 엔진은 LSN을 확보하고, 테이블의 초기 덤프가 수행되면 WAL에서 업데이트를.pull하기 시작합니다. 데이터베이스가 생성된 후, PostgreSQL 데이터베이스에 새로 추가된 테이블은 자동으로 복제에 추가되지 않습니다. `ATTACH TABLE db.table` 쿼리를 사용하여 수동으로 추가해야 합니다.
+
+복제는 PostgreSQL 논리 복제 프로토콜로 구현되며, DDL을 복제하는 것은 허용되지 않지만 복제를 방해하는 변경 사항(컬럼 유형 변경, 컬럼 추가/제거)이 발생했는지 알 수 있습니다. 이러한 변경 사항은 감지되며 해당 테이블은 업데이트를 받지 않게 됩니다. 이 경우 `ATTACH`/ `DETACH PERMANENTLY` 쿼리를 사용하여 테이블을 완전히 다시 로드해야 합니다. DDL이 복제를 방해하지 않는 경우(예: 컬럼 이름 변경) 테이블은 여전히 업데이트를 받게 됩니다(삽입은 위치에 따라 처리됨).
+
+:::note
+이 데이터베이스 엔진은 실험적입니다. 사용하려면 구성 파일에서 `allow_experimental_database_materialized_postgresql`를 1로 설정하거나 `SET` 명령을 사용하여 설정하십시오:
+```sql
+SET allow_experimental_database_materialized_postgresql=1
+```
+:::
+
+## 데이터베이스 생성 {#creating-a-database}
+
+```sql
+CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
+ENGINE = MaterializedPostgreSQL('host:port', 'database', 'user', 'password') [SETTINGS ...]
+```
+
+**엔진 파라미터**
+
+- `host:port` — PostgreSQL 서버 엔드포인트.
+- `database` — PostgreSQL 데이터베이스 이름.
+- `user` — PostgreSQL 사용자.
+- `password` — 사용자 비밀번호.
+
+## 사용 예시 {#example-of-use}
+
+```sql
+CREATE DATABASE postgres_db
+ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgres_user', 'postgres_password');
+
+SHOW TABLES FROM postgres_db;
+
+┌─name───┐
+│ table1 │
+└────────┘
+
+SELECT * FROM postgresql_db.postgres_table;
+```
+
+## 복제에 새 테이블을 동적으로 추가하기 {#dynamically-adding-table-to-replication}
+
+`MaterializedPostgreSQL` 데이터베이스가 생성된 후, 해당 PostgreSQL 데이터베이스에서 새 테이블을 자동으로 감지하지 않습니다. 그러한 테이블은 수동으로 추가할 수 있습니다:
+
+```sql
+ATTACH TABLE postgres_database.new_table;
+```
+
+:::warning
+버전 22.1 이전에 복제에 테이블을 추가하면 제거되지 않은 임시 복제 슬롯(대명칭 `{db_name}_ch_replication_slot_tmp`)이 남습니다. ClickHouse 버전 22.1 이전에서 테이블을 추가할 경우, 이를 수동으로 삭제해야 합니다 (`SELECT pg_drop_replication_slot('{db_name}_ch_replication_slot_tmp')`). 그렇지 않으면 디스크 사용량이 증가하게 됩니다. 이 문제는 22.1에서 수정되었습니다.
+:::
+
+## 복제에서 테이블 동적으로 제거하기 {#dynamically-removing-table-from-replication}
+
+특정 테이블을 복제에서 제거할 수 있습니다:
+
+```sql
+DETACH TABLE postgres_database.table_to_remove PERMANENTLY;
+```
+
+## PostgreSQL 스키마 {#schema}
+
+PostgreSQL [스키마](https://www.postgresql.org/docs/9.1/ddl-schemas.html)는 버전 21.12부터 3가지 방식으로 구성할 수 있습니다.
+
+1. 하나의 `MaterializedPostgreSQL` 데이터베이스 엔진을 위한 하나의 스키마. `materialized_postgresql_schema` 설정을 사용해야 합니다.
+테이블 이름만 통해 접근됩니다:
+
+```sql
+CREATE DATABASE postgres_database
+ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgres_user', 'postgres_password')
+SETTINGS materialized_postgresql_schema = 'postgres_schema';
+
+SELECT * FROM postgres_database.table1;
+```
+
+2. 하나의 `MaterializedPostgreSQL` 데이터베이스 엔진을 위한 지정된 테이블 집합의 여러 스키마. `materialized_postgresql_tables_list` 설정을 사용해야 합니다. 각 테이블은 해당 스키마와 함께 작성됩니다.
+테이블 이름과 스키마 이름을 동시에 사용하여 접근합니다:
+
+```sql
+CREATE DATABASE database1
+ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgres_user', 'postgres_password')
+SETTINGS materialized_postgresql_tables_list = 'schema1.table1,schema2.table2,schema1.table3',
+ materialized_postgresql_tables_list_with_schema = 1;
+
+SELECT * FROM database1.`schema1.table1`;
+SELECT * FROM database1.`schema2.table2`;
+```
+
+이 경우 `materialized_postgresql_tables_list`에 있는 모든 테이블은 해당 스키마 이름과 함께 작성되어야 합니다.
+`materialized_postgresql_tables_list_with_schema`를 1로 설정해야 합니다.
+
+경고: 이 경우 테이블 이름에 점(.)을 사용할 수 없습니다.
+
+3. 하나의 `MaterializedPostgreSQL` 데이터베이스 엔진을 위한 테이블의 전체 집합을 가진 여러 스키마. `materialized_postgresql_schema_list` 설정을 사용해야 합니다.
+
+```sql
+CREATE DATABASE database1
+ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgres_user', 'postgres_password')
+SETTINGS materialized_postgresql_schema_list = 'schema1,schema2,schema3';
+
+SELECT * FROM database1.`schema1.table1`;
+SELECT * FROM database1.`schema1.table2`;
+SELECT * FROM database1.`schema2.table2`;
+```
+
+경고: 이 경우 테이블 이름에 점(.)을 사용할 수 없습니다.
+
+## 요구 사항 {#requirements}
+
+1. PostgreSQL 구성 파일의 [wal_level](https://www.postgresql.org/docs/current/runtime-config-wal.html) 설정은 `logical` 값이어야 하며, `max_replication_slots` 파라미터는 최소한 `2` 이상의 값을 가져야 합니다.
+
+2. 각 복제 테이블은 다음 [레플리카 정체성](https://www.postgresql.org/docs/10/sql-altertable.html#SQL-CREATETABLE-REPLICA-IDENTITY) 중 하나를 가져야 합니다:
+
+- 기본 키 (기본값)
+
+- 인덱스
+
+```bash
+postgres# CREATE TABLE postgres_table (a Integer NOT NULL, b Integer, c Integer NOT NULL, d Integer, e Integer NOT NULL);
+postgres# CREATE unique INDEX postgres_table_index on postgres_table(a, c, e);
+postgres# ALTER TABLE postgres_table REPLICA IDENTITY USING INDEX postgres_table_index;
+```
+
+기본 키가 항상 먼저 확인됩니다. 만약 기본 키가 없으면, 레플리카 정체성 인덱스로 정의된 인덱스가 확인됩니다. 인덱스가 레플리카 정체성으로 사용될 경우, 테이블에는 그러한 인덱스가 하나만 있어야 합니다. 특정 테이블에 대해 어떤 유형이 사용되었는지 다음 명령으로 확인할 수 있습니다:
+
+```bash
+postgres# SELECT CASE relreplident
+ WHEN 'd' THEN 'default'
+ WHEN 'n' THEN 'nothing'
+ WHEN 'f' THEN 'full'
+ WHEN 'i' THEN 'index'
+ END AS replica_identity
+FROM pg_class
+WHERE oid = 'postgres_table'::regclass;
+```
+
+:::note
+[**TOAST**](https://www.postgresql.org/docs/9.5/storage-toast.html) 값을 복제하는 것은 지원되지 않습니다. 데이터 유형에 대한 기본 값이 사용됩니다.
+:::
+
+## 설정 {#settings}
+
+### `materialized_postgresql_tables_list` {#materialized-postgresql-tables-list}
+
+ 복제될 PostgreSQL 데이터베이스 테이블의 쉼표로 구분된 목록을 설정합니다. 이는 [MaterializedPostgreSQL](../../engines/database-engines/materialized-postgresql.md) 데이터베이스 엔진을 통해 복제됩니다.
+
+ 각 테이블은 괄호 안의 복제된 컬럼의 부분 집합을 가질 수 있습니다. 컬럼의 부분 집합이 생략되면 테이블의 모든 컬럼이 복제됩니다.
+
+```sql
+materialized_postgresql_tables_list = 'table1(co1, col2),table2,table3(co3, col5, col7)
+```
+
+ 기본값: 빈 목록 — 전체 PostgreSQL 데이터베이스가 복제됨을 의미합니다.
+
+### `materialized_postgresql_schema` {#materialized-postgresql-schema}
+
+ 기본값: 빈 문자열. (기본 스키마가 사용됨)
+
+### `materialized_postgresql_schema_list` {#materialized-postgresql-schema-list}
+
+ 기본값: 빈 목록. (기본 스키마가 사용됨)
+
+### `materialized_postgresql_max_block_size` {#materialized-postgresql-max-block-size}
+
+ PostgreSQL 데이터베이스 테이블에 데이터를 플러시하기 전에 메모리에 수집되는 행의 수를 설정합니다.
+
+ 가능한 값:
+
+ - 양의 정수.
+
+ 기본값: `65536`.
+
+### `materialized_postgresql_replication_slot` {#materialized-postgresql-replication-slot}
+
+ 사용자가 생성한 복제 슬롯. `materialized_postgresql_snapshot`와 함께 사용해야 합니다.
+
+### `materialized_postgresql_snapshot` {#materialized_postgresql-snapshot}
+
+ 초기 덤프가 수행될 스냅샷을 식별하는 텍스트 문자열입니다 [PostgreSQL 테이블](../../engines/database-engines/materialized-postgresql.md). `materialized_postgresql_replication_slot`와 함께 사용해야 합니다.
+
+```sql
+CREATE DATABASE database1
+ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgres_user', 'postgres_password')
+SETTINGS materialized_postgresql_tables_list = 'table1,table2,table3';
+
+SELECT * FROM database1.table1;
+```
+
+ 필요시 DDL 쿼리를 사용하여 설정을 변경할 수 있습니다. 그러나 `materialized_postgresql_tables_list` 설정은 변경할 수 없습니다. 이 설정에서 테이블 목록을 업데이트하려면 `ATTACH TABLE` 쿼리를 사용하십시오.
+
+```sql
+ALTER DATABASE postgres_database MODIFY SETTING materialized_postgresql_max_block_size = ;
+```
+
+### `materialized_postgresql_use_unique_replication_consumer_identifier` {#materialized_postgresql_use_unique_replication_consumer_identifier}
+
+복제를 위한 고유한 복제 소비자 식별자를 사용합니다. 기본값: `0`.
+`1`로 설정하면 동일한 `PostgreSQL` 테이블을 가리키는 여러 `MaterializedPostgreSQL` 테이블을 설정할 수 있습니다.
+
+## 노트 {#notes}
+
+### 논리 복제 슬롯의 장애 조치 {#logical-replication-slot-failover}
+
+기본에 존재하는 논리 복제 슬롯은 대기 복제본에서 사용할 수 없습니다. 따라서 장애 조치가 발생하면 새 기본(primary) 서버(구 물리적 대기 서버)는 구 기본 서버에 존재했던 슬롯에 대해 인식하지 못하게 됩니다. 이로 인해 PostgreSQL에서 복제가 중단됩니다. 이를 해결하려면 복제 슬롯을 직접 관리하고 영구 복제 슬롯을 정의해야 합니다(일부 정보는 [여기](https://patroni.readthedocs.io/en/latest/SETTINGS.html)에서 확인할 수 있습니다). 슬롯 이름을 `materialized_postgresql_replication_slot` 설정으로 전달해야 하며, `EXPORT SNAPSHOT` 옵션과 함께 내보내야 합니다. 스냅샷 식별자는 `materialized_postgresql_snapshot` 설정을 통해 전달되어야 합니다.
+
+실제로 필요할 때만 사용해야 합니다. 필요가 없거나 그 이유를 완전히 이해하지 못한다면, 테이블 엔진이 자체 복제 슬롯을 생성하고 관리하게 하는 것이 좋습니다.
+
+**예시 ([@bchrobot](https://github.com/bchrobot)에서 제공)**
+
+1. PostgreSQL에서 복제 슬롯을 구성합니다.
+
+```yaml
+apiVersion: "acid.zalan.do/v1"
+kind: postgresql
+metadata:
+ name: acid-demo-cluster
+spec:
+ numberOfInstances: 2
+ postgresql:
+ parameters:
+ wal_level: logical
+ patroni:
+ slots:
+ clickhouse_sync:
+ type: logical
+ database: demodb
+ plugin: pgoutput
+```
+
+2. 복제 슬롯이 준비될 때까지 기다린 후, 트랜잭션을 시작하고 트랜잭션 스냅샷 식별자를 내보냅니다:
+
+```sql
+BEGIN;
+SELECT pg_export_snapshot();
+```
+
+3. ClickHouse에서 데이터베이스를 생성합니다:
+
+```sql
+CREATE DATABASE demodb
+ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgres_user', 'postgres_password')
+SETTINGS
+ materialized_postgresql_replication_slot = 'clickhouse_sync',
+ materialized_postgresql_snapshot = '0000000A-0000023F-3',
+ materialized_postgresql_tables_list = 'table1,table2,table3';
+```
+
+4. PostgreSQL 트랜잭션을 종료하고 ClickHouse DB로의 복제가 확인되면, 장애 조치 후에도 복제가 계속되는지 확인합니다:
+
+```bash
+kubectl exec acid-demo-cluster-0 -c postgres -- su postgres -c 'patronictl failover --candidate acid-demo-cluster-1 --force'
+```
+
+### 필요한 권한 {#required-permissions}
+
+1. [CREATE PUBLICATION](https://postgrespro.ru/docs/postgresql/14/sql-createpublication) -- 쿼리 생성 권한.
+
+2. [CREATE_REPLICATION_SLOT](https://postgrespro.ru/docs/postgrespro/10/protocol-replication#PROTOCOL-REPLICATION-CREATE-SLOT) -- 복제 권한.
+
+3. [pg_drop_replication_slot](https://postgrespro.ru/docs/postgrespro/9.5/functions-admin#functions-replication) -- 복제 권한 또는 슈퍼유저.
+
+4. [DROP PUBLICATION](https://postgrespro.ru/docs/postgresql/10/sql-droppublication) -- 퍼블리케이션의 소유자 (`MaterializedPostgreSQL` 엔진 자체의 `username`).
+
+`2` 및 `3` 명령을 실행하는 것과 이러한 권한을 피할 수 있습니다. `materialized_postgresql_replication_slot` 및 `materialized_postgresql_snapshot` 설정을 사용하십시오. 그러나 매우 주의해야 합니다.
+
+테이블 접근 권한:
+
+1. pg_publication
+
+2. pg_replication_slots
+
+3. pg_publication_tables
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/materialized-postgresql.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/materialized-postgresql.md.hash
new file mode 100644
index 00000000000..b6c8997a25c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/materialized-postgresql.md.hash
@@ -0,0 +1 @@
+a9fa743c5de5cced
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/mysql.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/mysql.md
new file mode 100644
index 00000000000..da52804918b
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/mysql.md
@@ -0,0 +1,159 @@
+---
+'description': '원격 MySQL 서버에 데이터베이스에 연결하고 ClickHouse와 MySQL 간에 데이터를 교환하기 위해 `INSERT`
+ 및 `SELECT` 쿼리를 수행할 수 있습니다.'
+'sidebar_label': 'MySQL'
+'sidebar_position': 50
+'slug': '/engines/database-engines/mysql'
+'title': 'MySQL'
+'doc_type': 'reference'
+---
+
+import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge';
+
+
+# MySQL 데이터베이스 엔진
+
+
+
+원격 MySQL 서버의 데이터베이스에 연결하고 ClickHouse와 MySQL 간 데이터 교환을 위해 `INSERT` 및 `SELECT` 쿼리를 수행할 수 있게 합니다.
+
+`MySQL` 데이터베이스 엔진은 쿼리를 MySQL 서버로 변환하여 `SHOW TABLES` 또는 `SHOW CREATE TABLE`과 같은 작업을 수행할 수 있도록 합니다.
+
+다음 쿼리는 수행할 수 없습니다:
+
+- `RENAME`
+- `CREATE TABLE`
+- `ALTER`
+
+## 데이터베이스 생성 {#creating-a-database}
+
+```sql
+CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
+ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
+```
+
+**엔진 매개변수**
+
+- `host:port` — MySQL 서버 주소.
+- `database` — 원격 데이터베이스 이름.
+- `user` — MySQL 사용자.
+- `password` — 사용자 비밀번호.
+
+## 데이터 유형 지원 {#data_types-support}
+
+| MySQL | ClickHouse |
+|----------------------------------|--------------------------------------------------------------|
+| UNSIGNED TINYINT | [UInt8](../../sql-reference/data-types/int-uint.md) |
+| TINYINT | [Int8](../../sql-reference/data-types/int-uint.md) |
+| UNSIGNED SMALLINT | [UInt16](../../sql-reference/data-types/int-uint.md) |
+| SMALLINT | [Int16](../../sql-reference/data-types/int-uint.md) |
+| UNSIGNED INT, UNSIGNED MEDIUMINT | [UInt32](../../sql-reference/data-types/int-uint.md) |
+| INT, MEDIUMINT | [Int32](../../sql-reference/data-types/int-uint.md) |
+| UNSIGNED BIGINT | [UInt64](../../sql-reference/data-types/int-uint.md) |
+| BIGINT | [Int64](../../sql-reference/data-types/int-uint.md) |
+| FLOAT | [Float32](../../sql-reference/data-types/float.md) |
+| DOUBLE | [Float64](../../sql-reference/data-types/float.md) |
+| DATE | [Date](../../sql-reference/data-types/date.md) |
+| DATETIME, TIMESTAMP | [DateTime](../../sql-reference/data-types/datetime.md) |
+| BINARY | [FixedString](../../sql-reference/data-types/fixedstring.md) |
+
+다른 모든 MySQL 데이터 유형은 [String](../../sql-reference/data-types/string.md)으로 변환됩니다.
+
+[Nullable](../../sql-reference/data-types/nullable.md)가 지원됩니다.
+
+## 전역 변수 지원 {#global-variables-support}
+
+더 나은 호환성을 위해 MySQL 스타일로 전역 변수를 `@@identifier` 형식으로 참조할 수 있습니다.
+
+지원되는 변수는 다음과 같습니다:
+- `version`
+- `max_allowed_packet`
+
+:::note
+현재 이러한 변수는 스텁이며 어떤 것과도 대응되지 않습니다.
+:::
+
+예제:
+
+```sql
+SELECT @@version;
+```
+
+## 사용 예제 {#examples-of-use}
+
+MySQL의 테이블:
+
+```text
+mysql> USE test;
+Database changed
+
+mysql> CREATE TABLE `mysql_table` (
+ -> `int_id` INT NOT NULL AUTO_INCREMENT,
+ -> `float` FLOAT NOT NULL,
+ -> PRIMARY KEY (`int_id`));
+Query OK, 0 rows affected (0,09 sec)
+
+mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);
+Query OK, 1 row affected (0,00 sec)
+
+mysql> select * from mysql_table;
++------+-----+
+| int_id | value |
++------+-----+
+| 1 | 2 |
++------+-----+
+1 row in set (0,00 sec)
+```
+
+MySQL 서버와 데이터 교환을 위한 ClickHouse의 데이터베이스:
+
+```sql
+CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password') SETTINGS read_write_timeout=10000, connect_timeout=100;
+```
+
+```sql
+SHOW DATABASES
+```
+
+```text
+┌─name─────┐
+│ default │
+│ mysql_db │
+│ system │
+└──────────┘
+```
+
+```sql
+SHOW TABLES FROM mysql_db
+```
+
+```text
+┌─name─────────┐
+│ mysql_table │
+└──────────────┘
+```
+
+```sql
+SELECT * FROM mysql_db.mysql_table
+```
+
+```text
+┌─int_id─┬─value─┐
+│ 1 │ 2 │
+└────────┴───────┘
+```
+
+```sql
+INSERT INTO mysql_db.mysql_table VALUES (3,4)
+```
+
+```sql
+SELECT * FROM mysql_db.mysql_table
+```
+
+```text
+┌─int_id─┬─value─┐
+│ 1 │ 2 │
+│ 3 │ 4 │
+└────────┴───────┘
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/mysql.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/mysql.md.hash
new file mode 100644
index 00000000000..6e748c79956
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/mysql.md.hash
@@ -0,0 +1 @@
+462a8b8d9b7dccc1
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/postgresql.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/postgresql.md
new file mode 100644
index 00000000000..31b7465516d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/postgresql.md
@@ -0,0 +1,146 @@
+---
+'description': '원격 PostgreSQL 서버의 데이터베이스에 연결할 수 있습니다.'
+'sidebar_label': 'PostgreSQL'
+'sidebar_position': 40
+'slug': '/engines/database-engines/postgresql'
+'title': 'PostgreSQL'
+'doc_type': 'guide'
+---
+
+
+# PostgreSQL
+
+원격 [PostgreSQL](https://www.postgresql.org) 서버에 있는 데이터베이스에 연결할 수 있습니다. ClickHouse와 PostgreSQL 간에 데이터를 교환하기 위해 읽기 및 쓰기 작업(`SELECT` 및 `INSERT` 쿼리)을 지원합니다.
+
+`SHOW TABLES` 및 `DESCRIBE TABLE` 쿼리를 통해 원격 PostgreSQL의 테이블 목록과 테이블 구조에 실시간으로 접근할 수 있습니다.
+
+테이블 구조 수정을 지원합니다(`ALTER TABLE ... ADD|DROP COLUMN`). `use_table_cache` 매개변수(아래 엔진 매개변수 참조)가 `1`로 설정되면 테이블 구조가 캐시되며 수정 여부가 확인되지 않지만, `DETACH` 및 `ATTACH` 쿼리로 업데이트할 수 있습니다.
+
+## 데이터베이스 생성 {#creating-a-database}
+
+```sql
+CREATE DATABASE test_database
+ENGINE = PostgreSQL('host:port', 'database', 'user', 'password'[, `schema`, `use_table_cache`]);
+```
+
+**엔진 매개변수**
+
+- `host:port` — PostgreSQL 서버 주소.
+- `database` — 원격 데이터베이스 이름.
+- `user` — PostgreSQL 사용자.
+- `password` — 사용자 비밀번호.
+- `schema` — PostgreSQL 스키마.
+- `use_table_cache` — 데이터베이스 테이블 구조가 캐시되는지 여부를 정의합니다. 선택 사항. 기본값: `0`.
+
+## 데이터 타입 지원 {#data_types-support}
+
+| PostgreSQL | ClickHouse |
+|------------------|--------------------------------------------------------------|
+| DATE | [Date](../../sql-reference/data-types/date.md) |
+| TIMESTAMP | [DateTime](../../sql-reference/data-types/datetime.md) |
+| REAL | [Float32](../../sql-reference/data-types/float.md) |
+| DOUBLE | [Float64](../../sql-reference/data-types/float.md) |
+| DECIMAL, NUMERIC | [Decimal](../../sql-reference/data-types/decimal.md) |
+| SMALLINT | [Int16](../../sql-reference/data-types/int-uint.md) |
+| INTEGER | [Int32](../../sql-reference/data-types/int-uint.md) |
+| BIGINT | [Int64](../../sql-reference/data-types/int-uint.md) |
+| SERIAL | [UInt32](../../sql-reference/data-types/int-uint.md) |
+| BIGSERIAL | [UInt64](../../sql-reference/data-types/int-uint.md) |
+| TEXT, CHAR | [String](../../sql-reference/data-types/string.md) |
+| INTEGER | Nullable([Int32](../../sql-reference/data-types/int-uint.md))|
+| ARRAY | [Array](../../sql-reference/data-types/array.md) |
+
+## 사용 예시 {#examples-of-use}
+
+ClickHouse에서 PostgreSQL 서버와 데이터를 교환하는 데이터베이스:
+
+```sql
+CREATE DATABASE test_database
+ENGINE = PostgreSQL('postgres1:5432', 'test_database', 'postgres', 'mysecretpassword', 'schema_name',1);
+```
+
+```sql
+SHOW DATABASES;
+```
+
+```text
+┌─name──────────┐
+│ default │
+│ test_database │
+│ system │
+└───────────────┘
+```
+
+```sql
+SHOW TABLES FROM test_database;
+```
+
+```text
+┌─name───────┐
+│ test_table │
+└────────────┘
+```
+
+PostgreSQL 테이블에서 데이터 읽기:
+
+```sql
+SELECT * FROM test_database.test_table;
+```
+
+```text
+┌─id─┬─value─┐
+│ 1 │ 2 │
+└────┴───────┘
+```
+
+PostgreSQL 테이블에 데이터 쓰기:
+
+```sql
+INSERT INTO test_database.test_table VALUES (3,4);
+SELECT * FROM test_database.test_table;
+```
+
+```text
+┌─int_id─┬─value─┐
+│ 1 │ 2 │
+│ 3 │ 4 │
+└────────┴───────┘
+```
+
+PostgreSQL에서 테이블 구조가 수정되었다고 가정합니다:
+
+```sql
+postgre> ALTER TABLE test_table ADD COLUMN data Text
+```
+
+데이터베이스 생성 시 `use_table_cache` 매개변수가 `1`로 설정되었으므로 ClickHouse의 테이블 구조는 캐시되어 수정되지 않았습니다:
+
+```sql
+DESCRIBE TABLE test_database.test_table;
+```
+```text
+┌─name───┬─type──────────────┐
+│ id │ Nullable(Integer) │
+│ value │ Nullable(Integer) │
+└────────┴───────────────────┘
+```
+
+테이블을 분리한 후 다시 연결하자 구조가 업데이트되었습니다:
+
+```sql
+DETACH TABLE test_database.test_table;
+ATTACH TABLE test_database.test_table;
+DESCRIBE TABLE test_database.test_table;
+```
+```text
+┌─name───┬─type──────────────┐
+│ id │ Nullable(Integer) │
+│ value │ Nullable(Integer) │
+│ data │ Nullable(String) │
+└────────┴───────────────────┘
+```
+
+## 관련 내용 {#related-content}
+
+- 블로그: [ClickHouse와 PostgreSQL - 데이터 지옥에서 태어난 짝 - 1부](https://clickhouse.com/blog/migrating-data-between-clickhouse-postgres)
+- 블로그: [ClickHouse와 PostgreSQL - 데이터 지옥에서 태어난 짝 - 2부](https://clickhouse.com/blog/migrating-data-between-clickhouse-postgres-part-2)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/postgresql.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/postgresql.md.hash
new file mode 100644
index 00000000000..3f50bda0ad5
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/postgresql.md.hash
@@ -0,0 +1 @@
+026b9d3febc63ab8
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/replicated.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/replicated.md
new file mode 100644
index 00000000000..a0c886f51e6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/replicated.md
@@ -0,0 +1,179 @@
+---
+'description': '엔진은 Atomic 엔진을 기반으로 하고 있습니다. 메타데이터의 복제를 지원하며, DDL 로그가 ZooKeeper에 기록되고
+ 주어진 DATABASE의 모든 복제본에서 실행됩니다.'
+'sidebar_label': '복제본'
+'sidebar_position': 30
+'slug': '/engines/database-engines/replicated'
+'title': '복제본'
+'doc_type': 'reference'
+---
+
+
+# Replicated
+
+이 엔진은 [Atomic](../../engines/database-engines/atomic.md) 엔진을 기반으로 합니다. 메타데이터의 복제를 지원하며, DDL 로그가 ZooKeeper에 기록되고 주어진 데이터베이스의 모든 복제본에서 실행됩니다.
+
+하나의 ClickHouse 서버에서 여러 개의 복제된 데이터베이스를 동시에 실행하고 업데이트할 수 있습니다. 그러나 동일한 복제된 데이터베이스의 복제본을 여러 개 둘 수는 없습니다.
+
+## 데이터베이스 생성하기 {#creating-a-database}
+```sql
+CREATE DATABASE testdb [UUID '...'] ENGINE = Replicated('zoo_path', 'shard_name', 'replica_name') [SETTINGS ...]
+```
+
+**엔진 매개변수**
+
+- `zoo_path` — ZooKeeper 경로. 동일한 ZooKeeper 경로는 동일한 데이터베이스에 해당합니다.
+- `shard_name` — 샤드 이름. 데이터베이스 복제본은 `shard_name`에 따라 샤드로 그룹화됩니다.
+- `replica_name` — 복제본 이름. 복제본 이름은 동일한 샤드의 모든 복제본에 대해 다르게 되어야 합니다.
+
+매개변수는 생략할 수 있으며, 이 경우 누락된 매개변수는 기본값으로 대체됩니다.
+
+`zoo_path`에 매크로 `{uuid}`가 포함된 경우, 명시적인 UUID를 지정하거나 생성 문에 [ON CLUSTER](../../sql-reference/distributed-ddl.md)를 추가해야 하며, 이를 통해 모든 복제본이 이 데이터베이스에 동일한 UUID를 사용하게 할 수 있습니다.
+
+[ReplicatedMergeTree](/engines/table-engines/mergetree-family/replication) 테이블의 경우 인자가 제공되지 않으면 기본 인자는 `/clickhouse/tables/{uuid}/{shard}` 및 `{replica}`가 사용됩니다. 이러한 값은 서버 설정의 [default_replica_path](../../operations/server-configuration-parameters/settings.md#default_replica_path) 및 [default_replica_name](../../operations/server-configuration-parameters/settings.md#default_replica_name)에서 변경할 수 있습니다. 매크로 `{uuid}`는 테이블의 UUID로 펼쳐지며, `{shard}`와 `{replica}`는 데이터베이스 엔진 매개변수가 아닌 서버 설정값으로 펼쳐집니다. 그러나 향후에는 Replicated 데이터베이스의 `shard_name` 및 `replica_name`을 사용할 수 있게 될 것입니다.
+
+## 세부 사항 및 권장 사항 {#specifics-and-recommendations}
+
+`Replicated` 데이터베이스와 함께 사용하는 DDL 쿼리는 [ON CLUSTER](../../sql-reference/distributed-ddl.md) 쿼리와 유사한 방식으로 작동하지만, 약간의 차이가 있습니다.
+
+첫째, DDL 요청은 발신자(사용자로부터 요청을 처음으로 받은 호스트)에서 실행하려고 시도합니다. 요청이 충족되지 않으면 사용자는 즉시 오류를 받으며, 다른 호스트는 이를 충족하려고 하지 않습니다. 요청이 발신자에서 성공적으로 완료되면, 다른 모든 호스트는 자동으로 재시도하여 완료할 때까지 시도합니다. 발신자는 다른 호스트에서 쿼리가 완료될 때까지 기다리려고 시도하며 (최대 [distributed_ddl_task_timeout](../../operations/settings/settings.md#distributed_ddl_task_timeout) 기간), 각 호스트에서 쿼리 실행 상태가 포함된 테이블을 반환합니다.
+
+오류 발생 시 동작은 [distributed_ddl_output_mode](../../operations/settings/settings.md#distributed_ddl_output_mode) 설정에 의해 조정되며, `Replicated` 데이터베이스의 경우 이는 `null_status_on_timeout`으로 설정하는 것이 좋습니다. 즉, 일부 호스트가 [distributed_ddl_task_timeout](../../operations/settings/settings.md#distributed_ddl_task_timeout) 동안 요청을 실행할 시간이 없었던 경우, 예외를 발생시키지 않고 해당 호스트에 대해 `NULL` 상태를 테이블에 표시합니다.
+
+[system.clusters](../../operations/system-tables/clusters.md) 시스템 테이블에는 복제된 데이터베이스와 같은 이름의 클러스터가 포함되어 있으며, 이는 해당 데이터베이스의 모든 복제본으로 구성됩니다. 이 클러스터는 복제본을 생성/삭제할 때 자동으로 업데이트되며 [Distributed](/engines/table-engines/special/distributed) 테이블에 사용할 수 있습니다.
+
+데이터베이스의 새로운 복제본을 만들 때, 이 복제본은 스스로 테이블을 생성합니다. 만약 복제본이 오랜 시간 동안 사용할 수 없고 복제 로그에서 뒤처진 경우 — 로컬 메타데이터를 현재 ZooKeeper의 메타데이터와 비교하고, 데이터가 포함된 추가 테이블을 별도의 비복제 데이터베이스로 이동시킵니다 (불필요한 삭제 방지를 위해), 누락된 테이블을 생성하고 이름이 변경되었다면 테이블 이름을 업데이트합니다. 데이터는 `ReplicatedMergeTree` 수준에서 복제되며, 즉 테이블이 복제되지 않는 경우 데이터는 복제되지 않습니다 (데이터베이스는 메타데이터만 책임집니다).
+
+[`ALTER TABLE FREEZE|ATTACH|FETCH|DROP|DROP DETACHED|DETACH PARTITION|PART`](../../sql-reference/statements/alter/partition.md) 쿼리는 허용되지만 복제되지는 않습니다. 데이터베이스 엔진은 현재 복제본에 대해 파티션/파트를 추가/가져오거나 제거할 것입니다. 그러나 테이블 자체가 복제 테이블 엔진을 사용하는 경우 `ATTACH`를 사용할 때 데이터는 복제됩니다.
+
+테이블 복제를 유지하지 않고 클러스터만 구성해야 하는 경우, [Cluster Discovery](../../operations/cluster-discovery.md) 기능을 참조하십시오.
+
+## 사용 예 {#usage-example}
+
+세 개의 호스트로 클러스터 생성하기:
+
+```sql
+node1 :) CREATE DATABASE r ENGINE=Replicated('some/path/r','shard1','replica1');
+node2 :) CREATE DATABASE r ENGINE=Replicated('some/path/r','shard1','other_replica');
+node3 :) CREATE DATABASE r ENGINE=Replicated('some/path/r','other_shard','{replica}');
+```
+
+암묵적인 매개변수로 클러스터에서 데이터베이스 생성하기:
+
+```sql
+CREATE DATABASE r ON CLUSTER default ENGINE=Replicated;
+```
+
+DDL 쿼리 실행하기:
+
+```sql
+CREATE TABLE r.rmt (n UInt64) ENGINE=ReplicatedMergeTree ORDER BY n;
+```
+
+```text
+┌─────hosts────────────┬──status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
+│ shard1|replica1 │ 0 │ │ 2 │ 0 │
+│ shard1|other_replica │ 0 │ │ 1 │ 0 │
+│ other_shard|r1 │ 0 │ │ 0 │ 0 │
+└──────────────────────┴─────────┴───────┴─────────────────────┴──────────────────┘
+```
+
+시스템 테이블 표시하기:
+
+```sql
+SELECT cluster, shard_num, replica_num, host_name, host_address, port, is_local
+FROM system.clusters WHERE cluster='r';
+```
+
+```text
+┌─cluster─┬─shard_num─┬─replica_num─┬─host_name─┬─host_address─┬─port─┬─is_local─┐
+│ r │ 1 │ 1 │ node3 │ 127.0.0.1 │ 9002 │ 0 │
+│ r │ 2 │ 1 │ node2 │ 127.0.0.1 │ 9001 │ 0 │
+│ r │ 2 │ 2 │ node1 │ 127.0.0.1 │ 9000 │ 1 │
+└─────────┴───────────┴─────────────┴───────────┴──────────────┴──────┴──────────┘
+```
+
+분산 테이블 생성 및 데이터 삽입하기:
+
+```sql
+node2 :) CREATE TABLE r.d (n UInt64) ENGINE=Distributed('r','r','rmt', n % 2);
+node3 :) INSERT INTO r.d SELECT * FROM numbers(10);
+node1 :) SELECT materialize(hostName()) AS host, groupArray(n) FROM r.d GROUP BY host;
+```
+
+```text
+┌─hosts─┬─groupArray(n)─┐
+│ node3 │ [1,3,5,7,9] │
+│ node2 │ [0,2,4,6,8] │
+└───────┴───────────────┘
+```
+
+한 호스트에 추가 복제본 추가하기:
+
+```sql
+node4 :) CREATE DATABASE r ENGINE=Replicated('some/path/r','other_shard','r2');
+```
+
+`zoo_path`에 매크로 `{uuid}`가 사용된 경우 한 호스트에 추가 복제본 추가하기:
+```sql
+node1 :) SELECT uuid FROM system.databases WHERE database='r';
+node4 :) CREATE DATABASE r UUID '' ENGINE=Replicated('some/path/{uuid}','other_shard','r2');
+```
+
+클러스터 구성은 다음과 같이 보일 것입니다:
+
+```text
+┌─cluster─┬─shard_num─┬─replica_num─┬─host_name─┬─host_address─┬─port─┬─is_local─┐
+│ r │ 1 │ 1 │ node3 │ 127.0.0.1 │ 9002 │ 0 │
+│ r │ 1 │ 2 │ node4 │ 127.0.0.1 │ 9003 │ 0 │
+│ r │ 2 │ 1 │ node2 │ 127.0.0.1 │ 9001 │ 0 │
+│ r │ 2 │ 2 │ node1 │ 127.0.0.1 │ 9000 │ 1 │
+└─────────┴───────────┴─────────────┴───────────┴──────────────┴──────┴──────────┘
+```
+
+분산 테이블은 새로운 호스트에서 데이터도 가져옵니다:
+
+```sql
+node2 :) SELECT materialize(hostName()) AS host, groupArray(n) FROM r.d GROUP BY host;
+```
+
+```text
+┌─hosts─┬─groupArray(n)─┐
+│ node2 │ [1,3,5,7,9] │
+│ node4 │ [0,2,4,6,8] │
+└───────┴───────────────┘
+```
+
+## 설정 {#settings}
+다음 설정이 지원됩니다:
+
+| 설정 | 기본값 | 설명 |
+|------------------------------------------------------------------------------|--------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `max_broken_tables_ratio` | 1 | 고장난 테이블의 비율이 모든 테이블에 대해 초과되면 복제를 자동으로 복구하지 않습니다. |
+| `max_replication_lag_to_enqueue` | 50 | 복제 지연이 초과되면 쿼리 실행 시 예외를 발생시킵니다. |
+| `wait_entry_commited_timeout_sec` | 3600 | 복제본은 시간 초과가 초과되면 쿼리를 취소하려고 시도하지만, 발신자 호스트가 아직 그것을 실행하지 않은 경우입니다. |
+| `collection_name` | | 모든 클러스터 인증 정보를 정의하는 서버 구성의 컬렉션 이름입니다. |
+| `check_consistency` | true | 로컬 메타데이터와 Keeper의 메타데이터의 일관성을 확인하고 불일치가 있는 경우 복구를 실행합니다. |
+| `max_retries_before_automatic_recovery` | 10 | 복구 스냅샷에서 복제본을 잃어버리기 전 최대 시도 횟수입니다 (0은 무한을 의미합니다). |
+| `allow_skipping_old_temporary_tables_ddls_of_refreshable_materialized_views` | false | 활성화되면, 복제된 데이터베이스에서 DDL을 처리할 때, 가능한 경우 갱신 가능한 물리화된 뷰의 임시 테이블에 대한 DDL의 생성 및 교환을 건너뜁니다. |
+| `logs_to_keep` | 1000 | 복제된 데이터베이스에 대해 ZooKeeper에서 보관할 로그의 기본 개수입니다. |
+| `default_replica_path` | `/clickhouse/databases/{uuid}` | ZooKeeper에서의 데이터베이스 경로입니다. 인자가 생략될 경우 데이터베이스 생성 시 사용됩니다. |
+| `default_replica_shard_name` | `{shard}` | 데이터베이스에서 복제본의 샤드 이름입니다. 인자가 생략될 경우 데이터베이스 생성 시 사용됩니다. |
+| `default_replica_name` | `{replica}` | 데이터베이스에서 복제본의 이름입니다. 인자가 생략될 경우 데이터베이스 생성 시 사용됩니다. |
+
+기본값은 구성 파일에서 재정의할 수 있습니다.
+```xml
+
+
+ 0.75
+ 100
+ 1800
+ postgres1
+ false
+ 5
+ /clickhouse/databases/{uuid}
+ {shard}
+ {replica}
+
+
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/replicated.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/replicated.md.hash
new file mode 100644
index 00000000000..660e1d652f9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/replicated.md.hash
@@ -0,0 +1 @@
+3d7eeb5d0e3380d9
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/shared.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/shared.md
new file mode 100644
index 00000000000..b5b95035cab
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/shared.md
@@ -0,0 +1,39 @@
+---
+'description': '페이지는 ClickHouse Cloud에서 사용할 수 있는 `Shared` 데이터베이스 엔진을 설명합니다.'
+'sidebar_label': '공유'
+'sidebar_position': 10
+'slug': '/engines/database-engines/shared'
+'title': '공유'
+'doc_type': 'reference'
+---
+
+import CloudOnlyBadge from '@theme/badges/CloudOnlyBadge';
+
+
+
+
+# 공유 데이터베이스 엔진
+
+`Shared` 데이터베이스 엔진은 [`SharedMergeTree`](/cloud/reference/shared-merge-tree)와 같은 상태 비저장 테이블 엔진을 사용하는 데이터베이스의 테이블을 관리하기 위해 Shared Catalog와 함께 작동합니다. 이러한 테이블 엔진은 디스크에 지속적인 상태를 기록하지 않으며 동적 컴퓨팅 환경과 호환됩니다.
+
+Cloud에서의 `Shared` 데이터베이스 엔진은 로컬 디스크에 대한 의존성을 제거합니다. 이것은 순전히 인메모리 엔진으로, CPU와 메모리만 필요로 합니다.
+
+## 작동 방식은? {#how-it-works}
+
+`Shared` 데이터베이스 엔진은 모든 데이터베이스 및 테이블 정의를 Keeper에 의해 지원되는 중앙 Shared Catalog에 저장합니다. 로컬 디스크에 기록하는 대신, 모든 컴퓨팅 노드 간에 공유되는 단일 버전화된 글로벌 상태를 유지합니다.
+
+각 노드는 마지막으로 적용된 버전만 추적하며, 시작 시 로컬 파일이나 수동 설정 없이 최신 상태를 가져옵니다.
+
+## 문법 {#syntax}
+
+최종 사용자는 Shared Catalog와 Shared 데이터베이스 엔진을 사용하기 위해 추가 구성이 필요하지 않습니다. 데이터베이스 생성은 항상 동일합니다:
+
+```sql
+CREATE DATABASE my_database;
+```
+
+ClickHouse Cloud는 자동으로 Shared 데이터베이스 엔진을 데이터베이스에 할당합니다. 상태 비저장 엔진을 사용하여 이러한 데이터베이스 내에 생성된 모든 테이블은 자동으로 Shared Catalog의 복제 및 조정 기능의 혜택을 받습니다.
+
+:::tip
+Shared Catalog 및 그 이점에 대한 추가 정보는 Cloud 참조 섹션의 ["공유 카탈로그 및 공유 데이터베이스 엔진"](/cloud/reference/shared-catalog)를 참조하세요.
+:::
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/shared.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/shared.md.hash
new file mode 100644
index 00000000000..f34783aadd4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/shared.md.hash
@@ -0,0 +1 @@
+d54fefc3510e7ba6
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/sqlite.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/sqlite.md
new file mode 100644
index 00000000000..6532e31589d
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/sqlite.md
@@ -0,0 +1,86 @@
+---
+'description': 'SQLite 데이터베이스에 연결하고 ClickHouse와 SQLite 간에 데이터를 교환하기 위해 `INSERT` 및
+ `SELECT` 쿼리를 수행할 수 있습니다.'
+'sidebar_label': 'SQLite'
+'sidebar_position': 55
+'slug': '/engines/database-engines/sqlite'
+'title': 'SQLite'
+'doc_type': 'reference'
+---
+
+
+# SQLite
+
+ClickHouse와 SQLite 간에 데이터를 교환하기 위해 `INSERT` 및 `SELECT` 쿼리를 수행할 수 있는 [SQLite](https://www.sqlite.org/index.html) 데이터베이스에 연결할 수 있습니다.
+
+## 데이터베이스 생성 {#creating-a-database}
+
+```sql
+CREATE DATABASE sqlite_database
+ENGINE = SQLite('db_path')
+```
+
+**엔진 매개변수**
+
+- `db_path` — SQLite 데이터베이스 파일 경로.
+
+## 데이터 유형 지원 {#data_types-support}
+
+| SQLite | ClickHouse |
+|---------------|---------------------------------------------------------|
+| INTEGER | [Int32](../../sql-reference/data-types/int-uint.md) |
+| REAL | [Float32](../../sql-reference/data-types/float.md) |
+| TEXT | [String](../../sql-reference/data-types/string.md) |
+| BLOB | [String](../../sql-reference/data-types/string.md) |
+
+## 구체적인 사항 및 권장 사항 {#specifics-and-recommendations}
+
+SQLite는 전체 데이터베이스(정의, 테이블, 인덱스 및 데이터 자체)를 호스트 머신의 단일 크로스 플랫폼 파일로 저장합니다. 작성 중에 SQLite는 전체 데이터베이스 파일을 잠궈서 쓰기 작업이 순차적으로 수행됩니다. 읽기 작업은 다중 작업이 가능합니다.
+SQLite는 서비스 관리(예: 시작 스크립트)나 `GRANT` 및 비밀번호 기반의 접근 제어를 요구하지 않습니다. 접근 제어는 데이터베이스 파일 자체에 부여된 파일 시스템 권한을 통해 처리됩니다.
+
+## 사용 예제 {#usage-example}
+
+SQLite에 연결된 ClickHouse의 데이터베이스:
+
+```sql
+CREATE DATABASE sqlite_db ENGINE = SQLite('sqlite.db');
+SHOW TABLES FROM sqlite_db;
+```
+
+```text
+┌──name───┐
+│ table1 │
+│ table2 │
+└─────────┘
+```
+
+테이블을 표시합니다:
+
+```sql
+SELECT * FROM sqlite_db.table1;
+```
+
+```text
+┌─col1──┬─col2─┐
+│ line1 │ 1 │
+│ line2 │ 2 │
+│ line3 │ 3 │
+└───────┴──────┘
+```
+ClickHouse 테이블에서 SQLite 테이블로 데이터 삽입:
+
+```sql
+CREATE TABLE clickhouse_table(`col1` String,`col2` Int16) ENGINE = MergeTree() ORDER BY col2;
+INSERT INTO clickhouse_table VALUES ('text',10);
+INSERT INTO sqlite_db.table1 SELECT * FROM clickhouse_table;
+SELECT * FROM sqlite_db.table1;
+```
+
+```text
+┌─col1──┬─col2─┐
+│ line1 │ 1 │
+│ line2 │ 2 │
+│ line3 │ 3 │
+│ text │ 10 │
+└───────┴──────┘
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/sqlite.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/sqlite.md.hash
new file mode 100644
index 00000000000..d6f650eada7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/database-engines/sqlite.md.hash
@@ -0,0 +1 @@
+35c7d04fccdd93a0
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/index.md
new file mode 100644
index 00000000000..dfc2a1b17c4
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/index.md
@@ -0,0 +1,11 @@
+---
+'description': '엔진에 대한 목차 페이지'
+'slug': '/engines'
+'title': '엔진'
+'doc_type': 'landing-page'
+---
+
+| Page | Description |
+|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [데이터베이스 엔진](../engines/database-engines/index.md) | ClickHouse의 데이터베이스 엔진은 테이블과 함께 작업하고 데이터가 어떻게 저장되고 관리되는지를 결정할 수 있게 해줍니다. ClickHouse에서 사용할 수 있는 다양한 데이터베이스 엔진에 대해 알아보세요. |
+| [테이블 엔진](../engines/table-engines/index.md) | ClickHouse의 테이블 엔진은 데이터가 어떻게 저장되고, 쓰여지고, 읽히는지를 결정하는 기본 개념입니다. ClickHouse에서 사용할 수 있는 다양한 테이블 엔진에 대해 알아보세요. |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/index.md.hash
new file mode 100644
index 00000000000..6a65d32c543
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/index.md.hash
@@ -0,0 +1 @@
+8ada26f4a1799fb3
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/index.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/index.md
new file mode 100644
index 00000000000..4a8492d9b85
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/index.md
@@ -0,0 +1,115 @@
+---
+'description': '테이블 엔진에 대한 Documentation'
+'slug': '/engines/table-engines/'
+'toc_folder_title': 'Table Engines'
+'toc_priority': 26
+'toc_title': 'Introduction'
+'title': '테이블 엔진'
+'doc_type': 'reference'
+---
+
+
+# 테이블 엔진
+
+테이블 엔진(테이블 유형)은 다음을 결정합니다:
+
+- 데이터가 저장되는 방법과 위치, 데이터가 쓰여지는 위치, 읽혀지는 위치.
+- 지원되는 쿼리 유형 및 방법.
+- 동시 데이터 접근.
+- 인덱스 사용 여부(있는 경우).
+- 다중 스레드 요청 실행이 가능한지 여부.
+- 데이터 복제 매개변수.
+
+## 엔진 패밀리 {#engine-families}
+
+### MergeTree {#mergetree}
+
+고부하 작업을 위한 가장 보편적이고 기능적인 테이블 엔진입니다. 이러한 엔진들의 공통적인 속성은 빠른 데이터 삽입과 이후 백그라운드 데이터 처리입니다. `MergeTree` 패밀리 엔진은 데이터 복제(엔진의 [Replicated\*](/engines/table-engines/mergetree-family/replication) 버전 포함), 파티셔닝, 이차 데이터 스킵 인덱스 및 다른 엔진에서 지원되지 않는 여러 기능을 지원합니다.
+
+가족 내 엔진:
+
+| MergeTree 엔진 |
+|-------------------------------------------------------------------------------------------------------------------------------------------|
+| [MergeTree](/engines/table-engines/mergetree-family/mergetree) |
+| [ReplacingMergeTree](/engines/table-engines/mergetree-family/replacingmergetree) |
+| [SummingMergeTree](/engines/table-engines/mergetree-family/summingmergetree) |
+| [AggregatingMergeTree](/engines/table-engines/mergetree-family/aggregatingmergetree) |
+| [CollapsingMergeTree](/engines/table-engines/mergetree-family/collapsingmergetree) |
+| [VersionedCollapsingMergeTree](/engines/table-engines/mergetree-family/versionedcollapsingmergetree) |
+| [GraphiteMergeTree](/engines/table-engines/mergetree-family/graphitemergetree) |
+| [CoalescingMergeTree](/engines/table-engines/mergetree-family/coalescingmergetree) |
+
+### Log {#log}
+
+최소 기능을 갖춘 경량 [엔진](../../engines/table-engines/log-family/index.md)입니다. 많은 소규모 테이블(약 100만 행까지)을 즉시 작성하고 나중에 전체를 읽어야 할 때 가장 효과적입니다.
+
+가족 내 엔진:
+
+| Log 엔진 |
+|----------------------------------------------------------------------------|
+| [TinyLog](/engines/table-engines/log-family/tinylog) |
+| [StripeLog](/engines/table-engines/log-family/stripelog) |
+| [Log](/engines/table-engines/log-family/log) |
+
+### 통합 엔진 {#integration-engines}
+
+다른 데이터 저장 및 처리 시스템과 통신하기 위한 엔진입니다.
+
+가족 내 엔진:
+
+| 통합 엔진 |
+|---------------------------------------------------------------------------------|
+| [ODBC](../../engines/table-engines/integrations/odbc.md) |
+| [JDBC](../../engines/table-engines/integrations/jdbc.md) |
+| [MySQL](../../engines/table-engines/integrations/mysql.md) |
+| [MongoDB](../../engines/table-engines/integrations/mongodb.md) |
+| [Redis](../../engines/table-engines/integrations/redis.md) |
+| [HDFS](../../engines/table-engines/integrations/hdfs.md) |
+| [S3](../../engines/table-engines/integrations/s3.md) |
+| [Kafka](../../engines/table-engines/integrations/kafka.md) |
+| [EmbeddedRocksDB](../../engines/table-engines/integrations/embedded-rocksdb.md) |
+| [RabbitMQ](../../engines/table-engines/integrations/rabbitmq.md) |
+| [PostgreSQL](../../engines/table-engines/integrations/postgresql.md) |
+| [S3Queue](../../engines/table-engines/integrations/s3queue.md) |
+| [TimeSeries](../../engines/table-engines/integrations/time-series.md) |
+
+### 특수 엔진 {#special-engines}
+
+가족 내 엔진:
+
+| 특수 엔진 |
+|---------------------------------------------------------------|
+| [Distributed](/engines/table-engines/special/distributed) |
+| [Dictionary](/engines/table-engines/special/dictionary) |
+| [Merge](/engines/table-engines/special/merge) |
+| [Executable](/engines/table-engines/special/executable) |
+| [File](/engines/table-engines/special/file) |
+| [Null](/engines/table-engines/special/null) |
+| [Set](/engines/table-engines/special/set) |
+| [Join](/engines/table-engines/special/join) |
+| [URL](/engines/table-engines/special/url) |
+| [View](/engines/table-engines/special/view) |
+| [Memory](/engines/table-engines/special/memory) |
+| [Buffer](/engines/table-engines/special/buffer) |
+| [External Data](/engines/table-engines/special/external-data) |
+| [GenerateRandom](/engines/table-engines/special/generate) |
+| [KeeperMap](/engines/table-engines/special/keeper-map) |
+| [FileLog](/engines/table-engines/special/filelog) |
+
+## 가상 컬럼 {#table_engines-virtual_columns}
+
+가상 컬럼은 엔진 소스 코드에 정의된 필수 테이블 엔진 속성입니다.
+
+`CREATE TABLE` 쿼리에서 가상 컬럼을 지정해서는 안 되며, `SHOW CREATE TABLE` 및 `DESCRIBE TABLE` 쿼리 결과에서 볼 수 없습니다. 가상 컬럼은 읽기 전용이므로 데이터는 가상 컬럼에 삽입할 수 없습니다.
+
+가상 컬럼에서 데이터를 선택하려면 `SELECT` 쿼리에서 그 이름을 지정해야 합니다. `SELECT *`는 가상 컬럼의 값을 반환하지 않습니다.
+
+테이블 가상 컬럼 중 하나와 동일한 이름을 가진 컬럼이 있는 테이블을 생성하면 가상 컬럼에 접근할 수 없게 됩니다. 이를 피하는 것이 좋습니다. 충돌을 피하기 위해 가상 컬럼 이름은 일반적으로 밑줄(_)로 접두사가 붙습니다.
+
+- `_table` — 데이터가 읽혀진 테이블의 이름을 포함합니다. 유형: [String](../../sql-reference/data-types/string.md).
+
+ 사용 중인 테이블 엔진에 관계없이 각 테이블은 `_table`이라는 보편적인 가상 컬럼을 포함합니다.
+
+ Merge 테이블 엔진으로 쿼리할 때, `WHERE/PREWHERE` 절에서 `_table`에 대한 상수 조건을 설정할 수 있습니다(예: `WHERE _table='xyz'`). 이 경우 조건이 만족되는 테이블에 대해서만 읽기 작업이 수행되므로 `_table` 컬럼은 인덱스 역할을 합니다.
+
+ `SELECT ... FROM (... UNION ALL ...)` 형식의 쿼리를 사용할 때, 반환된 행이 실제로 어느 테이블에서 기원했는지를 `_table` 컬럼을 지정하여 확인할 수 있습니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/index.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/index.md.hash
new file mode 100644
index 00000000000..985abb272a6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/index.md.hash
@@ -0,0 +1 @@
+3915f18e4fd2427d
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/ExternalDistributed.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/ExternalDistributed.md
new file mode 100644
index 00000000000..a17656610af
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/ExternalDistributed.md
@@ -0,0 +1,59 @@
+---
+'description': '`ExternalDistributed` 엔진은 원격 서버의 MySQL 또는 PostgreSQL에 저장된 데이터에 대해
+ `SELECT` 쿼리를 수행할 수 있도록 합니다. 샤딩이 가능하도록 MySQL 또는 PostgreSQL 엔진을 인수로 허용합니다.'
+'sidebar_label': 'ExternalDistributed'
+'sidebar_position': 55
+'slug': '/engines/table-engines/integrations/ExternalDistributed'
+'title': 'ExternalDistributed 테이블 엔진'
+'doc_type': 'reference'
+---
+
+
+# ExternalDistributed 테이블 엔진
+
+`ExternalDistributed` 엔진은 원격 서버의 MySQL 또는 PostgreSQL에 저장된 데이터에 대해 `SELECT` 쿼리를 수행할 수 있게 해줍니다. 샤딩이 가능하도록 [MySQL](../../../engines/table-engines/integrations/mysql.md) 또는 [PostgreSQL](../../../engines/table-engines/integrations/postgresql.md) 엔진을 인수로 받아들입니다.
+
+## 테이블 생성 {#creating-a-table}
+
+```sql
+CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
+(
+ name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
+ name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
+ ...
+) ENGINE = ExternalDistributed('engine', 'host:port', 'database', 'table', 'user', 'password');
+```
+
+[CREATE TABLE](/sql-reference/statements/create/table) 쿼리에 대한 자세한 설명을 참조하십시오.
+
+테이블 구조는 원래 테이블 구조와 다를 수 있습니다:
+
+- 컬럼 이름은 원래 테이블과 같아야 하지만 이 컬럼들 중 일부만 사용하고 아무 순서로 사용할 수 있습니다.
+- 컬럼 타입은 원래 테이블의 타입과 다를 수 있습니다. ClickHouse는 값을 ClickHouse 데이터 타입으로 [변환](https://clickhouse.com/docs/en/sql-reference/functions/type-conversion-functions#cast)하려고 시도합니다.
+
+**엔진 매개변수**
+
+- `engine` — 테이블 엔진 `MySQL` 또는 `PostgreSQL`.
+- `host:port` — MySQL 또는 PostgreSQL 서버 주소.
+- `database` — 원격 데이터베이스 이름.
+- `table` — 원격 테이블 이름.
+- `user` — 사용자 이름.
+- `password` — 사용자 비밀번호.
+
+## 구현 세부정보 {#implementation-details}
+
+여러 복제본을 지원하며, 복제본은 `|`로 구분되어야 하고 샤드는 `,`로 구분되어야 합니다. 예를 들면:
+
+```sql
+CREATE TABLE test_shards (id UInt32, name String, age UInt32, money UInt32) ENGINE = ExternalDistributed('MySQL', `mysql{1|2}:3306,mysql{3|4}:3306`, 'clickhouse', 'test_replicas', 'root', 'clickhouse');
+```
+
+복제본을 지정할 때, 읽기 작업 시 각 샤드에 대해 사용 가능한 복제본 중 하나가 선택됩니다. 연결이 실패하면 다음 복제본이 선택되고, 모든 복제본에 대해 이와 같은 방식으로 반복됩니다. 모든 복제본에 대한 연결 시도가 실패하면 시도가 여러 번 반복됩니다.
+
+각 샤드에 대해 임의의 수의 샤드와 복제본을 지정할 수 있습니다.
+
+**참고**
+
+- [MySQL 테이블 엔진](../../../engines/table-engines/integrations/mysql.md)
+- [PostgreSQL 테이블 엔진](../../../engines/table-engines/integrations/postgresql.md)
+- [분산 테이블 엔진](../../../engines/table-engines/special/distributed.md)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/ExternalDistributed.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/ExternalDistributed.md.hash
new file mode 100644
index 00000000000..b1c9a228a82
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/ExternalDistributed.md.hash
@@ -0,0 +1 @@
+14fbea03a6fd0099
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/arrowflight.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/arrowflight.md
new file mode 100644
index 00000000000..621f12d49a3
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/arrowflight.md
@@ -0,0 +1,66 @@
+---
+'description': '이 엔진은 Apache Arrow Flight를 통해 원격 데이터 세트를 쿼리할 수 있게 해줍니다.'
+'sidebar_label': 'ArrowFlight'
+'sidebar_position': 186
+'slug': '/engines/table-engines/integrations/arrowflight'
+'title': 'ArrowFlight 테이블 엔진'
+'doc_type': 'reference'
+---
+
+
+# ArrowFlight 테이블 엔진
+
+ArrowFlight 테이블 엔진은 ClickHouse가 [Apache Arrow Flight](https://arrow.apache.org/docs/format/Flight.html) 프로토콜을 통해 원격 데이터 세트를 쿼리할 수 있게 해줍니다. 이 통합을 통해 ClickHouse는 외부 Flight 지원 서버에서 높은 성능으로 컬럼형 Arrow 형식으로 데이터를 가져올 수 있습니다.
+
+## 테이블 생성 {#creating-a-table}
+
+```sql
+CREATE TABLE [IF NOT EXISTS] [db.]table_name (name1 [type1], name2 [type2], ...)
+ ENGINE = ArrowFlight('host:port', 'dataset_name' [, 'username', 'password']);
+```
+
+**엔진 매개변수**
+
+* `host:port` — 원격 Arrow Flight 서버의 주소.
+* `dataset_name` — Flight 서버의 데이터 세트 식별자.
+* `username` - 기본 HTTP 스타일 인증에 사용할 사용자 이름.
+* `password` - 기본 HTTP 스타일 인증에 사용할 비밀번호.
+`username`과 `password`가 지정되지 않으면 인증이 사용되지 않음을 의미합니다
+(이는 Arrow Flight 서버가 이를 허용하는 경우에만 작동합니다).
+
+## 사용 예제 {#usage-example}
+
+이 예제는 원격 Arrow Flight 서버에서 데이터를 읽는 테이블을 생성하는 방법을 보여줍니다:
+
+```sql
+CREATE TABLE remote_flight_data
+(
+ id UInt32,
+ name String,
+ value Float64
+) ENGINE = ArrowFlight('127.0.0.1:9005', 'sample_dataset');
+```
+
+로컬 테이블인 것처럼 원격 데이터를 쿼리합니다:
+
+```sql
+SELECT * FROM remote_flight_data ORDER BY id;
+```
+
+```text
+┌─id─┬─name────┬─value─┐
+│ 1 │ foo │ 42.1 │
+│ 2 │ bar │ 13.3 │
+│ 3 │ baz │ 77.0 │
+└────┴─────────┴───────┘
+```
+
+## 주의 사항 {#notes}
+
+* ClickHouse에서 정의된 스키마는 Flight 서버에서 반환된 스키마와 일치해야 합니다.
+* 이 엔진은 연합 쿼리, 데이터 가상화 및 저장소와 컴퓨트를 분리하는 데 적합합니다.
+
+## 추가 정보 {#see-also}
+
+* [Apache Arrow Flight SQL](https://arrow.apache.org/docs/format/FlightSql.html)
+* [ClickHouse에서 Arrow 형식 통합](/interfaces/formats/Arrow)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/arrowflight.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/arrowflight.md.hash
new file mode 100644
index 00000000000..e72a7d270ed
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/arrowflight.md.hash
@@ -0,0 +1 @@
+85c1e6d0be10fc42
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md
new file mode 100644
index 00000000000..81e0318dba9
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md
@@ -0,0 +1,154 @@
+---
+'description': '이 엔진은 Azure Blob Storage 생태계와의 통합을 제공하여 데이터 스트리밍 가져오기를 허용합니다.'
+'sidebar_label': 'AzureQueue'
+'sidebar_position': 181
+'slug': '/engines/table-engines/integrations/azure-queue'
+'title': 'AzureQueue 테이블 엔진'
+'doc_type': 'reference'
+---
+
+
+# AzureQueue 테이블 엔진
+
+이 엔진은 [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) 생태계와 통합을 제공하여 스트리밍 데이터 가져오기를 가능하게 합니다.
+
+## 테이블 생성 {#creating-a-table}
+
+```sql
+CREATE TABLE test (name String, value UInt32)
+ ENGINE = AzureQueue(...)
+ [SETTINGS]
+ [mode = '',]
+ [after_processing = 'keep',]
+ [keeper_path = '',]
+ ...
+```
+
+**엔진 매개변수**
+
+`AzureQueue` 매개변수는 `AzureBlobStorage` 테이블 엔진에서 지원하는 것과 동일합니다. 매개변수 섹션은 [여기](../../../engines/table-engines/integrations/azureBlobStorage.md)를 참조하십시오.
+
+[AzureBlobStorage](/engines/table-engines/integrations/azureBlobStorage) 테이블 엔진과 유사하게, 사용자는 로컬 Azure Storage 개발을 위해 Azurite 에뮬레이터를 사용할 수 있습니다. 추가 세부 사항은 [여기](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)를 참조하십시오.
+
+**예제**
+
+```sql
+CREATE TABLE azure_queue_engine_table
+(
+ `key` UInt64,
+ `data` String
+)
+ENGINE = AzureQueue('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'testcontainer', '*', 'CSV')
+SETTINGS mode = 'unordered'
+```
+
+## 설정 {#settings}
+
+지원되는 설정의 집합은 `S3Queue` 테이블 엔진과 동일하지만 `s3queue_` 접두사는 없습니다. [설정의 전체 목록](../../../engines/table-engines/integrations/s3queue.md#settings)을 참조하십시오.
+테이블에 구성된 설정 목록을 가져오려면 `system.azure_queue_settings` 테이블을 사용하십시오. `24.10` 버전부터 사용할 수 있습니다.
+
+## 설명 {#description}
+
+`SELECT`는 스트리밍 가져오기에 특히 유용하지 않습니다(디버깅을 제외하고), 각 파일은 한 번만 가져올 수 있기 때문입니다. 실제로는 [물리화된 뷰](../../../sql-reference/statements/create/view.md)를 사용하여 실시간 스레드를 생성하는 것이 더 실용적입니다. 이를 위해:
+
+1. 지정된 경로에서 S3의 데이터를 소비할 테이블을 생성하는 엔진을 사용하고 이를 데이터 스트림으로 간주합니다.
+2. 원하는 구조의 테이블을 생성합니다.
+3. 엔진에서 데이터를 변환하여 이전에 생성한 테이블에 넣는 물리화된 뷰를 생성합니다.
+
+`MATERIALIZED VIEW`가 엔진에 연결되면 백그라운드에서 데이터를 수집하기 시작합니다.
+
+예제:
+
+```sql
+CREATE TABLE azure_queue_engine_table (key UInt64, data String)
+ ENGINE=AzureQueue('', 'CSV', 'gzip')
+ SETTINGS
+ mode = 'unordered';
+
+CREATE TABLE stats (key UInt64, data String)
+ ENGINE = MergeTree() ORDER BY key;
+
+CREATE MATERIALIZED VIEW consumer TO stats
+ AS SELECT key, data FROM azure_queue_engine_table;
+
+SELECT * FROM stats ORDER BY key;
+```
+
+## 가상 컬럼 {#virtual-columns}
+
+- `_path` — 파일 경로.
+- `_file` — 파일 이름.
+
+가상 컬럼에 대한 자세한 내용은 [여기](../../../engines/table-engines/index.md#table_engines-virtual_columns)를 참조하십시오.
+
+## 내성 {#introspection}
+
+테이블 설정 `enable_logging_to_queue_log=1`을 통해 테이블에 대한 로깅을 활성화합니다.
+
+내성 기능은 여러 가지 명확한 차이가 있는 [S3Queue 테이블 엔진](/engines/table-engines/integrations/s3queue#introspection)과 동일합니다:
+
+1. 서버 버전 >= 25.1의 경우 `system.azure_queue`를 사용하여 큐의 인메모리 상태를 확인합니다. 이전 버전은 `system.s3queue`를 사용합니다(이는 `azure` 테이블에 대한 정보도 포함됩니다).
+2. 주요 ClickHouse 구성에서 `system.azure_queue_log`를 활성화합니다. 예:
+
+```xml
+
+ system
+
azure_queue_log
+
+```
+
+이 영구 테이블은 처리된 파일과 실패한 파일에 대한 정보를 포함하여 `system.s3queue`와 동일한 정보를 가지고 있습니다.
+
+테이블 구조는 다음과 같습니다:
+
+```sql
+
+CREATE TABLE system.azure_queue_log
+(
+ `hostname` LowCardinality(String) COMMENT 'Hostname',
+ `event_date` Date COMMENT 'Event date of writing this log row',
+ `event_time` DateTime COMMENT 'Event time of writing this log row',
+ `database` String COMMENT 'The name of a database where current S3Queue table lives.',
+ `table` String COMMENT 'The name of S3Queue table.',
+ `uuid` String COMMENT 'The UUID of S3Queue table',
+ `file_name` String COMMENT 'File name of the processing file',
+ `rows_processed` UInt64 COMMENT 'Number of processed rows',
+ `status` Enum8('Processed' = 0, 'Failed' = 1) COMMENT 'Status of the processing file',
+ `processing_start_time` Nullable(DateTime) COMMENT 'Time of the start of processing the file',
+ `processing_end_time` Nullable(DateTime) COMMENT 'Time of the end of processing the file',
+ `exception` String COMMENT 'Exception message if happened'
+)
+ENGINE = MergeTree
+PARTITION BY toYYYYMM(event_date)
+ORDER BY (event_date, event_time)
+SETTINGS index_granularity = 8192
+COMMENT 'Contains logging entries with the information files processes by S3Queue engine.'
+
+```
+
+예제:
+
+```sql
+SELECT *
+FROM system.azure_queue_log
+LIMIT 1
+FORMAT Vertical
+
+Row 1:
+──────
+hostname: clickhouse
+event_date: 2024-12-16
+event_time: 2024-12-16 13:42:47
+database: default
+table: azure_queue_engine_table
+uuid: 1bc52858-00c0-420d-8d03-ac3f189f27c8
+file_name: test_1.csv
+rows_processed: 3
+status: Processed
+processing_start_time: 2024-12-16 13:42:47
+processing_end_time: 2024-12-16 13:42:47
+exception:
+
+1 row in set. Elapsed: 0.002 sec.
+
+```
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md.hash
new file mode 100644
index 00000000000..6165f3e5ba7
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md.hash
@@ -0,0 +1 @@
+0e3a28350691267f
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md
new file mode 100644
index 00000000000..e6f9ef8a1ba
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md
@@ -0,0 +1,132 @@
+---
+'description': '이 엔진은 Azure Blob Storage 생태계와의 통합을 제공합니다.'
+'sidebar_label': 'Azure Blob Storage'
+'sidebar_position': 10
+'slug': '/engines/table-engines/integrations/azureBlobStorage'
+'title': 'AzureBlobStorage 테이블 엔진'
+'doc_type': 'reference'
+---
+
+
+# AzureBlobStorage 테이블 엔진
+
+이 엔진은 [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) 생태계와의 통합을 제공합니다.
+
+## 테이블 생성 {#create-table}
+
+```sql
+CREATE TABLE azure_blob_storage_table (name String, value UInt32)
+ ENGINE = AzureBlobStorage(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression, partition_strategy, partition_columns_in_data_file, extra_credentials(client_id=, tenant_id=)])
+ [PARTITION BY expr]
+ [SETTINGS ...]
+```
+
+### 엔진 매개변수 {#engine-parameters}
+
+- `endpoint` — 컨테이너 및 접두사를 포함하는 AzureBlobStorage 엔드포인트 URL. 인증 방법에 따라 account_name을 포함할 수 있습니다. (`http://azurite1:{port}/[account_name]{container_name}/{data_prefix}`) 또는 이러한 매개변수를 storage_account_url, account_name, container로 별도로 제공할 수 있습니다. 접두사를 지정하려면 엔드포인트를 사용해야 합니다.
+- `endpoint_contains_account_name` - 이 플래그는 엔드포인트가 account_name을 포함하는지 여부를 지정하는 데 사용됩니다. 이는 특정 인증 방법에만 필요합니다. (기본값: true)
+- `connection_string|storage_account_url` — connection_string은 계정 이름 및 키를 포함합니다 ([연결 문자열 만들기](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)) 또는 여기에서 storage account url을 제공하고 account_name 및 account_key를 별도의 매개변수로 제공할 수도 있습니다 (매개변수 account_name 및 account_key 참조).
+- `container_name` - 컨테이너 이름
+- `blobpath` - 파일 경로. 다음 와일드카드를 읽기 전용 모드에서 지원합니다: `*`, `**`, `?`, `{abc,def}` 및 `{N..M}` 여기서 `N`, `M` — 숫자, `'abc'`, `'def'` — 문자열입니다.
+- `account_name` - storage_account_url이 사용되는 경우, 이곳에 계정 이름을 지정할 수 있습니다.
+- `account_key` - storage_account_url이 사용되는 경우, 이곳에 계정 키를 지정할 수 있습니다.
+- `format` — 파일의 [형식](/interfaces/formats.md).
+- `compression` — 지원되는 값: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. 기본적으로 파일 확장명에 따라 압축을 자동 감지합니다. (설정을 `auto`로 하는 것과 같습니다).
+- `partition_strategy` – 옵션: `WILDCARD` 또는 `HIVE`. `WILDCARD`는 파티션 키로 대체되는 `{_partition_id}`를 경로에 요구합니다. `HIVE`는 와일드카드를 허용하지 않으며 경로가 테이블 루트임을 가정하고 Snowflake ID를 파일 이름으로 하고 파일 형식을 확장자로 갖는 Hive 스타일의 파티션 디렉터리를 생성합니다. 기본값은 `WILDCARD`입니다.
+- `partition_columns_in_data_file` - `HIVE` 파티션 전략에서만 사용됩니다. ClickHouse에게 데이터 파일에 파티션 컬럼이 작성될 것으로 예상되는지 여부를 알려줍니다. 기본값은 `false`입니다.
+- `extra_credentials` - 인증을 위해 `client_id` 및 `tenant_id`를 사용합니다. 추가 자격 증명이 제공되면 `account_name` 및 `account_key`보다 우선 적용됩니다.
+
+**예시**
+
+사용자는 로컬 Azure Storage 개발을 위해 Azurite 에뮬레이터를 사용할 수 있습니다. 추가 세부사항은 [여기](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)를 참조하십시오. 로컬 Azurite 인스턴스를 사용하는 경우, 사용자는 아래 명령에서 `http://azurite1:10000`를 `http://localhost:10000`로 대체해야 할 수 있으며, 여기서 Azurite가 호스트 `azurite1`에서 사용 가능하다고 가정합니다.
+
+```sql
+CREATE TABLE test_table (key UInt64, data String)
+ ENGINE = AzureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'testcontainer', 'test_table', 'CSV');
+
+INSERT INTO test_table VALUES (1, 'a'), (2, 'b'), (3, 'c');
+
+SELECT * FROM test_table;
+```
+
+```text
+┌─key──┬─data──┐
+│ 1 │ a │
+│ 2 │ b │
+│ 3 │ c │
+└──────┴───────┘
+```
+
+## 가상 컬럼 {#virtual-columns}
+
+- `_path` — 파일 경로. 유형: `LowCardinality(String)`.
+- `_file` — 파일 이름. 유형: `LowCardinality(String)`.
+- `_size` — 파일 크기(바이트). 유형: `Nullable(UInt64)`. 크기를 알 수 없는 경우 값은 `NULL`.
+- `_time` — 파일의 마지막 수정 시간. 유형: `Nullable(DateTime)`. 시간을 알 수 없는 경우 값은 `NULL`.
+
+## 인증 {#authentication}
+
+현재 인증할 수 있는 방법은 3가지입니다:
+- `Managed Identity` - `endpoint`, `connection_string` 또는 `storage_account_url`을 제공하여 사용할 수 있습니다.
+- `SAS Token` - `endpoint`, `connection_string` 또는 `storage_account_url`을 제공하여 사용할 수 있습니다. URL의 '?' 존재로 식별됩니다. 예시를 보려면 [azureBlobStorage](/sql-reference/table-functions/azureBlobStorage#using-shared-access-signatures-sas-sas-tokens)를 참조하십시오.
+- `Workload Identity` - `endpoint` 또는 `storage_account_url`을 제공하여 사용할 수 있습니다. config에서 `use_workload_identity` 매개변수가 설정된 경우, ([workload identity](https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/identity/azure-identity#authenticate-azure-hosted-applications)) 인증을 위해 사용됩니다.
+
+### 데이터 캐시 {#data-cache}
+
+`Azure` 테이블 엔진은 로컬 디스크에서 데이터 캐싱을 지원합니다. 이 [섹션](/operations/storing-data.md/#using-local-cache)에서 파일 시스템 캐시 구성 옵션 및 사용법을 참조하십시오. 캐싱은 경로와 저장소 객체의 ETag에 따라 이루어지므로 ClickHouse는 오래된 캐시 버전을 읽지 않습니다.
+
+캐싱을 활성화하려면 설정 `filesystem_cache_name = ''` 및 `enable_filesystem_cache = 1`을 사용합니다.
+
+```sql
+SELECT *
+FROM azureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite1:10000/devstoreaccount1/;', 'testcontainer', 'test_table', 'CSV')
+SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1;
+```
+
+1. ClickHouse 구성 파일에 다음 섹션을 추가합니다:
+
+```xml
+
+
+
+ path to cache directory
+ 10Gi
+
+
+
+```
+
+2. ClickHouse `storage_configuration` 섹션에서 캐시 구성 (따라서 캐시 스토리지)을 재사용합니다. [여기]( /operations/storing-data.md/#using-local-cache)에 설명되어 있습니다.
+
+### PARTITION BY {#partition-by}
+
+`PARTITION BY` — 선택 사항입니다. 대부분의 경우 파티션 키가 필요하지 않으며 필요할 경우 일반적으로 한 달 단위 이상의 더 세분화된 파티션 키는 필요하지 않습니다. 파티션은 쿼리를 빠르게 하지 않습니다 (ORDER BY 표현식과 대조적으로). 너무 세분화된 파티셔닝을 사용하지 마십시오. 클라이언트 식별자나 이름으로 데이터를 파티셔닝하지 마십시오 (대신 클라이언트 식별자나 이름을 ORDER BY 표현식의 첫 번째 컬럼으로 만드십시오).
+
+월별로 파티셔닝하려면 `toYYYYMM(date_column)` 표현식을 사용하십시오. 여기서 `date_column`은 [Date](/sql-reference/data-types/date.md) 유형의 날짜가 있는 컬럼입니다. 여기에서 파티션 이름은 `"YYYYMM"` 형식을 가집니다.
+
+#### 파티션 전략 {#partition-strategy}
+
+`WILDCARD` (기본값): 파일 경로에서 `{_partition_id}` 와일드카드를 실제 파티션 키로 대체합니다. 읽기가 지원되지 않습니다.
+
+`HIVE`는 읽기 및 쓰기를 위한 hive 스타일의 파티셔닝을 구현합니다. 읽기는 재귀 glob 패턴을 사용하여 구현됩니다. 쓰기는 다음 형식을 사용하여 파일을 생성합니다: `//.`.
+
+참고: `HIVE` 파티션 전략을 사용할 때 `use_hive_partitioning` 설정은 영향을 미치지 않습니다.
+
+`HIVE` 파티션 전략의 예시:
+
+```sql
+arthur :) create table azure_table (year UInt16, country String, counter UInt8) ENGINE=AzureBlobStorage(account_name='devstoreaccount1', account_key='Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==', storage_account_url = 'http://localhost:30000/devstoreaccount1', container='cont', blob_path='hive_partitioned', format='Parquet', compression='auto', partition_strategy='hive') PARTITION BY (year, country);
+
+arthur :) insert into azure_table values (2020, 'Russia', 1), (2021, 'Brazil', 2);
+
+arthur :) select _path, * from azure_table;
+
+ ┌─_path──────────────────────────────────────────────────────────────────────┬─year─┬─country─┬─counter─┐
+1. │ cont/hive_partitioned/year=2020/country=Russia/7351305360873664512.parquet │ 2020 │ Russia │ 1 │
+2. │ cont/hive_partitioned/year=2021/country=Brazil/7351305360894636032.parquet │ 2021 │ Brazil │ 2 │
+ └────────────────────────────────────────────────────────────────────────────┴──────┴─────────┴─────────┘
+```
+
+## 관련 항목 {#see-also}
+
+[Azure Blob Storage 테이블 함수](/sql-reference/table-functions/azureBlobStorage)
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md.hash b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md.hash
new file mode 100644
index 00000000000..1a9f957cd45
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md.hash
@@ -0,0 +1 @@
+95a109fddeef146c
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/deltalake.md b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/deltalake.md
new file mode 100644
index 00000000000..50f93ad0c6c
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/deltalake.md
@@ -0,0 +1,61 @@
+---
+'description': '이 엔진은 Amazon S3에서 기존 Delta Lake 테이블과의 읽기 전용 통합을 제공합니다.'
+'sidebar_label': 'DeltaLake'
+'sidebar_position': 40
+'slug': '/engines/table-engines/integrations/deltalake'
+'title': 'DeltaLake 테이블 엔진'
+'doc_type': 'reference'
+---
+
+
+# DeltaLake 테이블 엔진
+
+이 엔진은 Amazon S3에 있는 기존 [Delta Lake](https://github.com/delta-io/delta) 테이블과의 읽기 전용 통합을 제공합니다.
+
+## 테이블 생성 {#create-table}
+
+Delta Lake 테이블은 S3에 이미 존재해야 하며, 이 명령은 새로운 테이블을 생성하기 위한 DDL 매개변수를 사용하지 않습니다.
+
+```sql
+CREATE TABLE deltalake
+ ENGINE = DeltaLake(url, [aws_access_key_id, aws_secret_access_key,])
+```
+
+**엔진 매개변수**
+
+- `url` — 기존 Delta Lake 테이블의 경로가 포함된 버킷 URL입니다.
+- `aws_access_key_id`, `aws_secret_access_key` - [AWS](https://aws.amazon.com/) 계정 사용자의 장기 자격 증명입니다. 이들은 요청을 인증하는 데 사용할 수 있습니다. 매개변수는 선택 사항입니다. 자격 증명이 지정되지 않은 경우, 구성 파일에서 사용됩니다.
+
+엔진 매개변수는 [Named Collections](/operations/named-collections.md)를 사용하여 지정할 수 있습니다.
+
+**예시**
+
+```sql
+CREATE TABLE deltalake ENGINE=DeltaLake('http://mars-doc-test.s3.amazonaws.com/clickhouse-bucket-3/test_table/', 'ABC123', 'Abc+123')
+```
+
+명명된 컬렉션 사용:
+
+```xml
+
+
+
+