This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git


The following commit(s) were added to refs/heads/master by this push:
     new db4080569208 docs(i18n): machine Russian translation candidates (#4548)
db4080569208 is described below

commit db4080569208feee3e7b473e498bc02f1617cfef
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Thu Oct 29 02:01:02 2026 +0000

    docs(i18n): machine Russian translation candidates (#4548)
    
    ## Russian translation candidate
    
    Source commit: `38d51ed68f58649235d42916d51398dc7dab6934`
    Model: `gpt-6-sol`; glossary: `1`
    Review status: machine. Russian proofreading and the normal PR checks
    are still required.
    
    | Action | Version | English source | SHA-256 prefix | Generation |
    | --- | --- | --- | --- | --- |
    | update | current |
    
[`course/101/04-apache-doris-data-operations-guide.mdx`](https://github.com/apache/doris-website/blob/38d51ed68f58649235d42916d51398dc7dab6934/course/101/04-apache-doris-data-operations-guide.mdx)
    | `dba85eb86436` | model call |
    
    ## Failed or skipped tasks
    
    - `T06-COURSE-189917765626050`
    (course/101/01-apache-doris-overview.mdx): Model inserted an unsafe YAML
    scalar
    - `T06-COURSE-089136450145805`
    (course/101/02-apache-doris-installation-guide.mdx): Model inserted an
    unsafe YAML scalar
    - `T06-COURSE-044990252586971`
    (course/101/03-apache-doris-table-guide.mdx): Model inserted an unsafe
    YAML scalar
    - `T06-COURSE-004843671549515`
    (course/101/05-apache-doris-query-data-guide.mdx): Protected content
    changed (code, links, numbers, MDX, anchors, or metadata)
    + actual - expected
    
    + '2ef5d7d3f8a1e391b3e9e15bca88841b6df4002d64d2de97a5e9cdcb29290745'
    - 'aad059d9f1593c4322c62da0392a9dcf450845d190f249a37f398a21c3c3cea1'
    - `T06-COURSE-057281019363029`
    (course/101/06-apache-doris-lakehouse-guide.mdx): Model inserted an
    unsafe YAML scalar
    
    ## Candidates retained with warnings
    
    None.
    
    ## Validation
    
    Updates at or below 30% translate only changed Markdown/MDX blocks and
    preserve other target blocks.
    Change size is the sum of max(removed, added) non-empty English lines
    per diff hunk, divided by the larger old/new line count.
    New documents, larger updates, glossary changes or baselines that cannot
    be aligned use full translation.
    Generation uses at most three attempts per document. Deletions and
    code-only updates may need no model call.
    Each retry receives the earlier validation errors. Third-attempt content
    issues are retained as warnings above.
    Full attempt history and diagnostics are in generation.json and the page
    state records.
    Committed source hashes, managed paths and target/state hashes are
    checked before applying candidates.
    Master is checked before each model call and before publishing:
    unrelated merges are allowed, a page changed on master is dropped, and a
    translation configuration or tooling change discards the batch.
    The publisher runs the shared PR translation-state, syntax and
    internal-link checks before pushing.
    The normal PR build and human proofreading are still required before
    merging.
    
    <!-- russian-translation-automation:v1
    bot-head=3a1d95be0be183489c4bc2e40872728a5a77b233 -->
    
    Shared PR admission checks: passed (translation state, syntax, internal
    links).
    
    Co-authored-by: morningman <[email protected]>
---
 .../101/04-apache-doris-data-operations-guide.mdx  | 182 ++++++++++-----------
 .../101/apache-doris-data-operations-guide.json    |  18 +-
 2 files changed, 105 insertions(+), 95 deletions(-)

diff --git 
a/i18n/ru/docusaurus-plugin-content-docs-course/current/101/04-apache-doris-data-operations-guide.mdx
 
b/i18n/ru/docusaurus-plugin-content-docs-course/current/101/04-apache-doris-data-operations-guide.mdx
index 0c5b987d4bc2..de4ef491545d 100644
--- 
a/i18n/ru/docusaurus-plugin-content-docs-course/current/101/04-apache-doris-data-operations-guide.mdx
+++ 
b/i18n/ru/docusaurus-plugin-content-docs-course/current/101/04-apache-doris-data-operations-guide.mdx
@@ -1,6 +1,6 @@
 ---
 title: Руководство по операциям с данными в Apache Doris
-description: Узнайте, как выбирать способы загрузки, обновления, удаления и 
экспорта данных в Apache Doris, пройдя семь практических разделов.
+description: Узнайте, как выбирать способы загрузки, обновления, удаления и 
экспорта данных в Apache Doris, пройдя семь учебных блоков.
 slug: /101/04-apache-doris-data-operations-guide
 sidebar_position: 4
 keywords:
@@ -34,27 +34,27 @@ import {
         id="data-lifecycle"
         label="Обзор операций"
         title={<>Выберите операцию с учётом <em>жизненного цикла 
данных</em>.</>}
-        summary="Загрузка, обновление, удаление и экспорт предъявляют разные 
требования к корректности и пропускной способности. Начните с того, как должно 
измениться состояние данных."
-        coachTitle="Выбор метода зависит от характера нагрузки."
-        coach={<p>Прежде чем выбирать команду или API, определите расположение 
источника, размер пакета, допустимую задержку, порядок повторных попыток, 
особенности модели таблицы и место назначения данных.</p>}
+        summary="Загрузка, обновление, удаление и экспорт предъявляют разные 
требования к корректности и пропускной способности. Сначала определите, как 
должно измениться состояние данных."
+        coachTitle="Выбор способа зависит от характера нагрузки."
+        coach={<p>Прежде чем выбирать команду или API, определите расположение 
источника, размер пакета, допустимую задержку, порядок повторных попыток, 
семантику таблицы и место назначения результатов.</p>}
         calloutTitle="Сначала — атомарность"
-        callout={<p>Разберитесь, где проходят границы транзакции и как каждый 
метод загрузки работает с метками, чтобы повторные попытки незаметно не 
дублировали данные и не применяли их лишь частично.</p>}
+        callout={<p>Разберитесь в границах транзакции и поведении меток для 
каждого способа загрузки, чтобы повторные попытки незаметно не дублировали 
данные и не приводили к их частичной записи.</p>}
         check={{
-            question: "Что нужно определить перед выбором метода загрузки?",
-            options: ["Источник, объём, допустимую задержку и требования к 
повторным попыткам", "Случайную конечную точку API"],
+            question: "Что нужно определить перед выбором способа загрузки?",
+            options: ["Источник, объём данных, требования к задержке и 
повторным попыткам", "Произвольную конечную точку API"],
             correctIndex: 0,
-            correctFeedback: "Верно — подходящая операция определяется 
требованиями нагрузки.",
-            incorrectFeedback: "Конечная точка — деталь реализации, а не 
характеристика нагрузки.",
+            correctFeedback: "Верно — подходящую операцию определяют 
требования рабочей нагрузки.",
+            incorrectFeedback: "Конечная точка — деталь реализации, а не 
характеристика рабочей нагрузки.",
         }}
     >
         <CourseConceptFlow
             ariaLabel="Жизненный цикл операций с данными в Apache Doris"
             focusIndex={0}
             items={[
-                { title: "Загрузка", description: "Загрузить данные" },
+                { title: "Загрузка", description: "Записать данные в систему" 
},
                 { title: "Обновление", description: "Изменить логические 
строки" },
-                { title: "Удаление", description: "Удалить данные в заданных 
пределах" },
-                { title: "Экспорт", description: "Выгрузить результаты" },
+                { title: "Удаление", description: "Удалить данные в заданной 
области" },
+                { title: "Экспорт", description: "Вывести результаты" },
                 { title: "Наблюдение", description: "Проверить каждое задание" 
},
             ]}
         />
@@ -62,15 +62,15 @@ import {
 
     <CourseLessonUnit
         id="choose-load-method"
-        label="Выбор метода загрузки"
-        title={<>Подберите под источник и требования к задержке <em>способ 
загрузки</em>.</>}
+        label="Выбор способа загрузки"
+        title={<>Подберите с учётом источника и требований к задержке 
<em>способ загрузки</em>.</>}
         summary="Doris поддерживает синхронную загрузку через HTTP, 
непрерывное получение данных из Kafka, загрузку с помощью SQL и асинхронную 
пакетную обработку."
-        coachTitle="Выбирайте метод, который точно соответствует задаче."
-        coach={<p>Используйте Stream Load для файлов или потоков HTTP, Routine 
Load для управляемого получения данных из Kafka, INSERT INTO SELECT для 
SQL-преобразований и внешних источников, а Group Commit — для частых небольших 
записей.</p>}
+        coachTitle="Выбирайте способ, который подходит для конкретной задачи."
+        coach={<p>Используйте Stream Load для файлов или потоков HTTP, Routine 
Load для управляемого получения данных из Kafka, INSERT INTO SELECT для 
преобразований SQL и внешних источников, а Group Commit — для частых небольших 
записей.</p>}
         calloutTitle="Устаревший способ пакетной загрузки"
-        callout={<p>Для объектного хранилища или HDFS по возможности 
используйте актуальные методы на основе Catalog или табличных функций. Считайте 
Broker Load устаревшим способом и сверяйтесь с рекомендациями для вашей 
версии.</p>}
+        callout={<p>Для объектного хранилища или HDFS по возможности 
используйте актуальные механизмы на основе Catalog или табличных функций. 
Считайте Broker Load устаревшим способом и сверяйтесь с рекомендациями для 
своей версии.</p>}
         check={{
-            question: "Какой метод подходит для непрерывного получения данных 
из Kafka?",
+            question: "Какой способ подходит для непрерывной загрузки данных 
из Kafka?",
             options: ["Routine Load", "TRUNCATE TABLE"],
             correctIndex: 0,
             correctFeedback: "Верно — Routine Load управляет длительно 
работающим заданием по получению данных из Kafka.",
@@ -78,14 +78,14 @@ import {
         }}
     >
         <CourseConceptGrid
-            ariaLabel="Схема выбора метода загрузки в Apache Doris"
+            ariaLabel="Обзор способов загрузки в Apache Doris"
             columns={3}
             items={[
                 { tag: 'HTTP', title: "Stream Load", description: "Синхронная 
загрузка файлов или потоков с немедленным получением результата задания." },
-                { tag: 'KFK', title: "Routine Load", description: "Непрерывное 
получение данных из Kafka с управлением ходом загрузки." },
-                { tag: 'SQL', title: "INSERT SELECT", description: 
"Преобразование и загрузка данных из таблиц, объектов Catalog или табличных 
функций для файлов." },
+                { tag: 'KFK', title: "Routine Load", description: "Непрерывное 
получение данных из Kafka с управлением ходом обработки." },
+                { tag: 'SQL', title: "INSERT SELECT", description: 
"Преобразование и загрузка данных из таблиц, Catalog или файловых TVF." },
                 { tag: 'JDBC', title: "INSERT VALUES", description: "Небольшие 
записи через SQL, когда простота важнее высокой пропускной способности." },
-                { tag: 'GC', title: "Group Commit", description: "Объединение 
частых небольших записей для эффективной фиксации." },
+                { tag: 'GC', title: "Group Commit", description: "Объединение 
частых небольших записей для эффективного выполнения транзакций." },
                 { tag: 'ASYNC', title: "Пакетные задания", description: 
"Отслеживание крупных асинхронных заданий по метке и состоянию." },
             ]}
         />
@@ -94,143 +94,143 @@ import {
     <CourseLessonUnit
         id="reliable-loading"
         label="Надёжная загрузка"
-        title={<>Проектируйте каждую загрузку так, чтобы её можно было 
<em>отслеживать и безопасно повторять</em>.</>}
-        summary="Метки, пороги качества, образцы ошибок, состояние задания и 
позиции в источнике превращают загрузку из разового запроса в управляемый 
процесс."
-        coachTitle="Отправленное задание ещё не означает успешную загрузку."
-        coach={<p>Где это поддерживается, назначайте постоянные метки, 
проверяйте число принятых и отфильтрованных строк, сохраняйте контрольные точки 
источника и настройте оповещения о приостановленных и неудачных заданиях. Явно 
задавайте формат, соответствие столбцов и параметры фильтрации.</p>}
+        title={<>Обеспечьте для каждой загрузки <em>наблюдаемость и 
возможность повтора</em>.</>}
+        summary="Метки, пороги качества, образцы ошибок, состояние задания и 
смещения в источнике превращают загрузку из отдельного запроса в управляемый 
процесс."
+        coachTitle="Отправленное задание ещё не означает успешное выполнение."
+        coach={<p>Где это поддерживается, назначайте устойчивые метки, 
проверяйте число принятых и отфильтрованных строк, сохраняйте контрольные 
позиции источника и настройте оповещения об остановленных и завершившихся с 
ошибкой заданиях. Явно задавайте формат, сопоставление столбцов и параметры 
фильтрации.</p>}
         calloutTitle="Качество данных"
-        callout={<p>Задавайте допустимую долю отфильтрованных данных 
осознанно. Высокий порог может скрыть некорректные входные данные, а низкий — 
остановить пакет, который можно было бы обработать.</p>}
+        callout={<p>Осознанно задавайте допустимую долю отфильтрованных 
данных. Высокий порог может скрыть ошибки во входных данных, а низкий — 
остановить пакет, который можно было бы обработать.</p>}
         check={{
             question: "Что делает повторную попытку загрузки безопаснее?",
-            options: ["Постоянная метка задания и сохранённая позиция в 
источнике", "Изменение схемы при каждой повторной попытке"],
+            options: ["Устойчивая метка задания и сохранённая позиция в 
источнике", "Изменение схемы при каждой повторной попытке"],
             correctIndex: 0,
-            correctFeedback: "Верно — идентификатор задания и контрольные 
точки помогают обнаружить или предотвратить повторную обработку данных.",
-            incorrectFeedback: "Незапланированные изменения схемы затрудняют 
оценку последствий повторных попыток.",
+            correctFeedback: "Верно — идентификатор задания и контрольные 
позиции помогают обнаружить или предотвратить повторную обработку.",
+            incorrectFeedback: "Незапланированные изменения схемы усложняют 
анализ повторных попыток.",
         }}
     >
         <CourseConceptFlow
-            ariaLabel="Порядок надёжной загрузки в Apache Doris"
+            ariaLabel="Процесс надёжной загрузки в Apache Doris"
             focusIndex={2}
             items={[
-                { title: "Описать", description: "Формат + соответствие 
столбцов" },
-                { title: "Идентифицировать", description: "Метка + диапазон в 
источнике" },
+                { title: "Описать", description: "Формат + сопоставление" },
+                { title: "Идентифицировать", description: "Метка + диапазон 
источника" },
                 { title: "Отправить", description: "Атомарная транзакция" },
-                { title: "Отследить", description: "Строки + ошибки + 
состояние" },
-                { title: "Повторить", description: "Осознанно возобновить" },
+                { title: "Отслеживать", description: "Строки + ошибки + 
состояние" },
+                { title: "Повторить", description: "Возобновить осознанно" },
             ]}
         />
     </CourseLessonUnit>
 
     <CourseLessonUnit
         id="update-data"
-        label="Обновления"
+        label="Обновление"
         title={<>Пусть модель таблицы определяет <em>семантику 
обновления</em>.</>}
-        summary="Таблицы Unique Key поддерживают поведение UPSERT и SQL 
UPDATE; таблицы Aggregate Key обновляются согласно объявленным функциям 
агрегации."
-        coachTitle="Полное и частичное обновление строк требуют разных затрат."
-        coach={<p>При UPSERT полной строки передаётся вся новая логическая 
строка. При частичном обновлении широкой строки передаётся меньше полей, но для 
этого нужны поддерживаемые настройки таблицы и загрузки; также могут возникнуть 
дополнительные затраты на чтение или слияние.</p>}
-        calloutTitle="Требования к схеме"
-        callout={<p>При UPSERT полной строки пропущенные значения могут 
заменяться значениями по умолчанию или NULL. Используйте режим частичного 
обновления столбцов, только если его поддерживают требуемая семантика и 
реализация таблицы.</p>}
+        summary="Таблицы Unique Key поддерживают семантику UPSERT и SQL 
UPDATE; таблицы Aggregate Key обновляются через объявленные для них функции 
агрегации."
+        coachTitle="Обновление всей строки и отдельных столбцов требует разных 
затрат."
+        coach={<p>При UPSERT всей строки передаётся полная логическая строка. 
Обновление отдельных столбцов позволяет передавать меньше полей для широких 
записей, но требует поддержки со стороны таблицы и настроек загрузки и может 
увеличить затраты на чтение или слияние.</p>}
+        calloutTitle="Правила работы со схемой"
+        callout={<p>При UPSERT всей строки пропущенные значения могут стать 
значениями по умолчанию или NULL. Используйте режим обновления отдельных 
столбцов, только если он соответствует нужной семантике и поддерживается 
реализацией таблицы.</p>}
         check={{
-            question: "Какая модель естественным образом представляет строки 
CDC с актуальным состоянием?",
+            question: "Какая модель естественным образом представляет 
последнее состояние строк CDC?",
             options: ["Unique Key", "Duplicate Key"],
             correctIndex: 0,
             correctFeedback: "Верно — Unique Key применяет семантику UPSERT по 
ключу.",
-            incorrectFeedback: "Duplicate Key сохраняет каждую версию вместо 
одной актуальной логической строки.",
+            incorrectFeedback: "Duplicate Key сохраняет каждую версию, а не 
одну актуальную логическую строку.",
         }}
     >
         <CourseComparison
             ariaLabel="Обновление всей строки и отдельных столбцов"
-            leftTitle="UPSERT полной строки"
-            leftLead="Запишите новую логическую строку целиком."
-            leftItems={["Более простая семантика", "Лучшая базовая пропускная 
способность", "Пропущенные значения требуют внимания"]}
-            rightTitle="Частичное обновление столбцов"
-            rightLead="Запишите только выбранные поля широкой строки."
+            leftTitle="UPSERT всей строки"
+            leftLead="Записать новую логическую строку целиком."
+            leftItems={["Более простая семантика", "Лучшая пропускная 
способность в базовом сценарии", "Пропущенные значения требуют внимания"]}
+            rightTitle="Обновление отдельных столбцов"
+            rightLead="Записать только выбранные поля широкой строки."
             rightItems={["Меньший объём данных от клиента", "Требуется 
поддерживаемый режим", "Дополнительные затраты на слияние"]}
         />
     </CourseLessonUnit>
 
     <CourseLessonUnit
         id="delete-data"
-        label="Удаления"
-        title={<>Выберите самый узкий безопасный <em>диапазон 
удаления</em>.</>}
-        summary="Predicate DELETE удаляет строки по поддерживаемым условиям, 
маркеры удаления при загрузке подходят для пакетов, а TRUNCATE быстро очищает 
таблицу или раздел."
-        coachTitle="Диапазон удаления определяет и скорость, и риск."
-        coach={<p>Используйте условия только с учётом ограничений конкретной 
модели таблицы. Для больших наборов ключей загружайте маркеры удаления 
управляемым пакетом. Очищайте раздел или таблицу целиком, только если нужно 
удалить все данные в этих пределах.</p>}
+        label="Удаление"
+        title={<>Выбирайте минимально необходимую безопасную <em>область 
удаления</em>.</>}
+        summary="DELETE с условием обрабатывает поддерживаемые фильтры строк, 
маркеры удаления при загрузке подходят для пакетного удаления, а TRUNCATE 
быстро очищает таблицу или раздел."
+        coachTitle="Область удаления определяет и скорость, и риск."
+        coach={<p>Применяйте условия удаления с учётом ограничений конкретной 
модели таблицы. Если ключей много, загружайте маркеры удаления управляемым 
пакетом. Очищайте раздел или таблицу целиком, только когда нужно удалить все 
данные в этой области.</p>}
         calloutTitle="Возможность восстановления"
-        callout={<p>Проверьте, доступно ли восстановление из корзины в целевой 
версии, и избегайте операций с FORCE, если не требуется безвозвратное 
удаление.</p>}
+        callout={<p>Проверьте, поддерживает ли целевая версия восстановление 
из корзины, и избегайте операций с FORCE, если постоянное удаление не требуется 
явно.</p>}
         check={{
-            question: "Какая операция подходит для удаления целой устаревшей 
временной партиции?",
-            options: ["TRUNCATE или удаление партиции", "Обновление 
несвязанного столбца значений"],
+            question: "Какая операция подходит для удаления целого устаревшего 
временного раздела?",
+            options: ["TRUNCATE или удаление раздела", "Обновление 
несвязанного столбца значений"],
             correctIndex: 0,
-            correctFeedback: "Верно — удаление на уровне партиции точно 
соответствует нужному охвату.",
-            incorrectFeedback: "Обновление значений не удаляет партицию.",
+            correctFeedback: "Верно — удаление раздела соответствует нужному 
объёму данных.",
+            incorrectFeedback: "Обновление значений не удаляет раздел.",
         }}
     >
         <CourseConceptGrid
             ariaLabel="Способы удаления данных в Apache Doris"
             columns={3}
             items={[
-                { tag: 'WHERE', title: "DELETE с условием", description: 
"Удаляет строки, соответствующие допустимому ограниченному условию." },
-                { tag: 'BATCH', title: "Загрузка с признаком удаления", 
description: "Удаляет большой набор строк по ключам через загрузку данных." },
-                { tag: 'ALL', title: "TRUNCATE", description: "Очищает всю 
таблицу или партицию без фильтрации строк." },
+                { tag: 'WHERE', title: "DELETE по условию", description: 
"Удалить строки, соответствующие поддерживаемому ограничивающему условию." },
+                { tag: 'BATCH', title: "Загрузка с маркерами удаления", 
description: "Удалить большой набор строк по ключам при загрузке данных." },
+                { tag: 'ALL', title: "TRUNCATE", description: "Очистить всю 
таблицу или раздел без фильтрации строк." },
             ]}
         />
     </CourseLessonUnit>
 
     <CourseLessonUnit
         id="export-data"
-        label="Выгрузка данных"
-        title={<>Подберите формат вывода под <em>потребителя</em>.</>}
-        summary="SELECT INTO OUTFILE выгружает преобразованные результаты 
запросов, EXPORT запускает крупные асинхронные задания на выгрузку, а mysqldump 
сохраняет схему или небольшие логические наборы данных."
-        coachTitle="Формат и место назначения — часть контракта."
-        coach={<p>Для аналитических систем выбирайте Parquet или ORC, для 
широкой совместимости — CSV. Защищайте учётные данные при работе с объектным 
хранилищем или HDFS. Заранее продумайте количество файлов и степень 
параллелизма для систем, которые будут читать результаты.</p>}
-        calloutTitle="Синхронная и асинхронная выгрузка"
-        callout={<p>OUTFILE гибко настраивается и привязан к запросу. За 
крупными фоновыми заданиями проще следить через EXPORT. Ни один из этих 
способов не заменяет проверенную стратегию резервного копирования и 
восстановления.</p>}
+        label="Экспорт"
+        title={<>Подбирайте формат вывода под <em>потребности получателя 
данных</em>.</>}
+        summary="SELECT INTO OUTFILE экспортирует преобразованные результаты 
запроса, EXPORT выполняет более крупные асинхронные задания по извлечению 
данных, а mysqldump сохраняет схему или небольшие логические наборы данных."
+        coachTitle="Формат и место назначения — часть требований к экспорту."
+        coach={<p>Для аналитических систем выбирайте Parquet или ORC, а для 
широкой совместимости — CSV. Обеспечьте защиту учётных данных для доступа к 
объектному хранилищу или HDFS. Планируйте количество файлов и степень 
параллелизма с учётом потребностей систем, которые будут читать данные.</p>}
+        calloutTitle="Синхронный и асинхронный экспорт"
+        callout={<p>OUTFILE гибко настраивается и связан с запросом. За более 
крупными фоновыми заданиями проще следить через EXPORT. Ни один из этих 
способов не заменяет проверенную стратегию резервного копирования и 
восстановления.</p>}
         check={{
-            question: "Какой метод позволяет преобразовать данные с помощью 
SQL перед выгрузкой?",
+            question: "Какой способ позволяет преобразовать экспортируемые 
результаты с помощью SQL?",
             options: ["SELECT INTO OUTFILE", "SHOW BACKENDS"],
             correctIndex: 0,
-            correctFeedback: "Верно — SELECT формирует данные до того, как 
OUTFILE запишет их.",
-            incorrectFeedback: "SHOW BACKENDS показывает состав кластера; это 
не способ выгрузки.",
+            correctFeedback: "Верно — SELECT формирует данные до их записи 
через OUTFILE.",
+            incorrectFeedback: "SHOW BACKENDS показывает состав кластера, а не 
экспортирует данные.",
         }}
     >
         <CourseConceptGrid
-            ariaLabel="Способы выгрузки данных из Apache Doris"
+            ariaLabel="Способы экспорта данных из Apache Doris"
             columns={3}
             items={[
-                { tag: 'SQL', title: "SELECT OUTFILE", description: 
"Синхронная выгрузка результатов с возможностью преобразования в CSV, Parquet 
или ORC." },
-                { tag: 'JOB', title: "EXPORT", description: "Асинхронная 
выгрузка данных из крупных таблиц или партиций." },
-                { tag: 'DDL', title: "mysqldump", description: "Выгрузка схемы 
и небольших логических резервных копий с помощью инструментов MySQL." },
+                { tag: 'SQL', title: "SELECT OUTFILE", description: 
"Синхронный экспорт результатов с возможностью преобразования в CSV, Parquet 
или ORC." },
+                { tag: 'JOB', title: "EXPORT", description: "Асинхронное 
извлечение данных из больших таблиц или разделов." },
+                { tag: 'DDL', title: "mysqldump", description: "Экспорт схемы 
и небольших логических резервных копий с помощью инструментов MySQL." },
             ]}
         />
     </CourseLessonUnit>
 
     <CourseLessonUnit
         id="operations-recap"
-        label="Итоги работы с данными"
-        title={<>Рассматривайте перемещение данных как <em>управляемое 
изменение состояния</em>.</>}
-        summary="Надёжная операция предполагает явно заданный охват, границы 
гарантий корректности, наблюдаемый результат, стратегию повторного выполнения и 
последующую проверку."
-        coachTitle="Штатный сценарий — лишь половина плана."
-        coach={<p>Зафиксируйте ответственных, учётные данные, позиции в 
источнике, метки, правила контроля качества, оповещения и порядок очистки. 
Отработайте частичные сбои, а после завершения проверяйте число строк или 
инварианты бизнес-логики.</p>}
+        label="Итоги по операциям с данными"
+        title={<>Рассматривайте перемещение данных как <em>управляемый переход 
состояния</em>.</>}
+        summary="Надёжная операция имеет чётко заданную область действия и 
границу атомарности, наблюдаемый результат, стратегию повторных попыток и 
проверку результата в системах, получающих данные."
+        coachTitle="Успешное выполнение — лишь часть того, что нужно 
предусмотреть."
+        coach={<p>Зафиксируйте ответственных, учётные данные, метки, позиции в 
источнике, правила контроля качества, оповещения и порядок очистки. Отработайте 
частичные сбои, а после завершения операции проверьте количество строк или 
соблюдение бизнес-инвариантов.</p>}
         calloutTitle="Перед следующим уроком"
-        callout={<p>Теперь, когда данные надёжны, следующий модуль расскажет, 
как формулировать аналитические запросы и выбирать структуру, которую Doris 
сможет эффективно выполнять.</p>}
+        callout={<p>Когда надёжность данных обеспечена, следующий модуль 
поможет формулировать аналитические запросы и выбирать их структуру так, чтобы 
Doris выполняла их эффективно.</p>}
         check={{
-            question: "Что завершает процесс после успешного выполнения 
операции?",
-            options: ["Проверка ожидаемого состояния данных", "Немедленное 
удаление всех метаданных задания"],
+            question: "Что нужно сделать после успешного выполнения операции, 
чтобы завершить процесс?",
+            options: ["Проверить, что данные находятся в ожидаемом состоянии", 
"Немедленно удалить все метаданные задания"],
             correctIndex: 0,
-            correctFeedback: "Верно — сверьте полученные строки, партиции или 
файлы с ожидаемым состоянием.",
-            incorrectFeedback: "Метаданные задания полезны для аудита и 
диагностики.",
+            correctFeedback: "Верно — проверьте, что полученные строки, 
разделы или файлы соответствуют ожидаемому состоянию.",
+            incorrectFeedback: "Метаданные задания помогают при аудите и 
диагностике неполадок.",
         }}
     >
         <CourseConceptFlow
-            ariaLabel="Цикл контроля операций с данными в Apache Doris"
+            ariaLabel="Цикл контроля операций в Apache Doris"
             focusIndex={4}
             items={[
-                { title: "Охват", description: "Определите изменение 
состояния" },
-                { title: "Выполнение", description: "Используйте подходящий 
метод" },
-                { title: "Мониторинг", description: "Отслеживайте состояние + 
качество" },
-                { title: "Восстановление", description: "Повторите операцию 
или компенсируйте её результат" },
-                { title: "Проверка", description: "Подтвердите результат" },
+                { title: "Область действия", description: "Определить 
изменение состояния" },
+                { title: "Выполнение", description: "Выбрать подходящий 
способ" },
+                { title: "Мониторинг", description: "Отслеживать состояние + 
качество" },
+                { title: "Восстановление", description: "Повторить операцию 
или компенсировать её" },
+                { title: "Проверка", description: "Подтвердить результат" },
             ]}
         />
     </CourseLessonUnit>
diff --git 
a/translations/state/ru/pages/course/current/101/apache-doris-data-operations-guide.json
 
b/translations/state/ru/pages/course/current/101/apache-doris-data-operations-guide.json
index c89205f1e06d..97283d3b9eed 100644
--- 
a/translations/state/ru/pages/course/current/101/apache-doris-data-operations-guide.json
+++ 
b/translations/state/ru/pages/course/current/101/apache-doris-data-operations-guide.json
@@ -8,13 +8,23 @@
     "sourceLocale": "en",
     "sourcePath": "course/101/04-apache-doris-data-operations-guide.mdx",
     "targetPath": 
"i18n/ru/docusaurus-plugin-content-docs-course/current/101/04-apache-doris-data-operations-guide.mdx",
-    "sourceCommit": "0d1f9e7894e56c20377c199a25f50d6b55023112",
+    "sourceCommit": "38d51ed68f58649235d42916d51398dc7dab6934",
     "sourceHash": 
"dba85eb86436c4121708351d23e5737b03701c3ee9415a4bb9b5a3449a8a33fd",
     "sourceTechnicalHash": 
"bab25688682f4666e72b084675b66e4a265ca54dc9612e89f9bf91333eaf8653",
-    "targetHash": 
"40cc845847af8f6c7f6d86d89626a59e104abb2220a92f9d032191c4621cb6a5",
+    "targetHash": 
"ef3c98677233c23581ee3b2b7636fe22861d3b94f5e63e2b944577b0d6a7f925",
     "reviewStatus": "machine",
     "ownership": "machine",
-    "translatedAt": "2026-10-24T18:05:57.423Z",
-    "glossaryVersion": "1"
+    "translatedAt": "2026-10-28T20:53:01.581Z",
+    "glossaryVersion": "1",
+    "sourceRevisions": {
+      "en": {
+        "path": "course/101/04-apache-doris-data-operations-guide.mdx",
+        "blob": "1b38b0a1aafd813d5bc02833393c6515618fa6ae"
+      },
+      "zh-CN": {
+        "path": 
"i18n/zh-CN/docusaurus-plugin-content-docs-course/current/101/04-apache-doris-data-operations-guide.mdx",
+        "blob": "5ad6ef82c9b2f2927bab3c1bec0f31e7c54946c6"
+      }
+    }
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to