Выпущена версия Apache Hudi 0.14.0!
Выпущена версия Apache Hudi 0.14.0!

Apache Hudi 0.14.0 Отмечает важную веху благодаря ряду расширенных функций. функциональность。Это включает в себя введениеRecord Level IndexАвтоматически генерировать ключи записи , используется для инкрементного чтения hudi_table_changesфункцияждатьждать。стоит отметитьизда,Эта версия также содержит Spark 3.4 изподдерживать。существовать Flink аспекты, 0.14.0 Версия содержит некоторые интересные функции,НапримерПоддержка последовательного хэш-индекса, поддержка Flink 1.17 а такжеподдерживать Даженовыйиудалитьзаявление。этотснаружиэтот Версия Также обновленHudiповерхность Версия,Пользователям предлагается просмотреть информацию, представленную ниже.из Руководство по перенос. Мы призываем пользователей существовать принять 0.14.0 Версия Посмотреть раньше Важные особенности、основные измененияиизменение поведения。

Руководство по миграции

существовать 0.14.0 В версии есть некоторые изменения, например от ".aux" Планы сжатия удаляются из папки и добавляются новые версии блоков журнала. В рамках этого выпуска версия таблицы обновлена ​​до версии 6。существовать Иметь старыйповерхность Версияизповерхностьбеги дальше Версия 0.14.0 из Hudi задании, запускается процесс автоматического обновления для обновления таблицы до версии 6. Обновление для каждого Hudi все поверхности одноразовые, потому что после завершения обновления hoodie.table.version Будут обновлены в файле свойств. Также включен инструмент командной строки для перехода на более раннюю версию, позволяющий пользователям удалять файлы с поверхности Версия. 6 перейти на 5 или от Hudi 0.14.0 Вернуться к 0.14.0 До из Версии. Пожалуйста, начните с 0.14.0 окружающую среду с помощью этого инструмента. Более подробную информацию см. hudi-cli。

ПРИМЕЧАНИЕ. Если вы начинаете миграцию с более старой версии (до 0.14.0), просмотрите инструкции по обновлению каждой старой версии по порядку.

Пакетное обновление пакета

Новый набор «Искра»

существующая Эта версия расширяет сферу владения и включает в себя Spark 3.4 (hudi-spark3.4-bundle_2.12) и Spark 3.0 (hudi-spark3.0-bundle_2.12) из Пакетный пакет. пожалуйста, обрати внимание,существовать Hudi 0.10.1 После версии, да Spark 3.0 изпод поддержка была прекращена, но из-за сильного сообщества по интересам существование было восстановлено в этой версии. Spark 3.0 изподдерживать。

основные изменения

Поведение Spark SQL INSERT INTO

существовать 0.14.0 До версии, Spark SQL проходить INSERT INTO Впуск изданные следовать upsert Процесс, при котором несколько записей Versioniz будут объединены в одну версию. Но из 0.14.0 Начал меняться INSERT INTO из Строка по умолчаниюдля,Строка по умолчаниюдля Дажеизменятьдляinsertпоток。этот Дажеизменять显着提高了写入производительность,Потому что он обходит поиск индекса.

Если вы используете preCombine ключ для создания таблицы, затем INSERT INTO из Операция по умолчанию по-прежнему upsert。Напротив, если он не установленpreCombine клавиша, затем ВСТАВИТЬ INTOиз Базовая операция записи по умолчанию имеет значение для insert。Пользователи могут основывать своииз Требует явной настройки Конфигурация hoodie.spark.sql.insert.into.operation из значения, чтобы гибко переопределить эту строку. Возможные значения для этой конфигурации включают в себя insertbulk_insert и upsert

Кроме того, две связанные версии старой конфигурации были признаны устаревшими в версии 0.14.0.

  • • hoodie.sql.insert.mode
  • • hoodie.sql.bulk.insert.enable

изменение поведения

Упростите обработку дубликатов с помощью вставок Spark SQL.

Если тип операции настроен как Spark SQL INSERT INTO Потоковая передача из вставки. Теперь пользователи могут выбирать параметры конфигурации. hoodie.datasource.insert.dup.policy Обеспечьте соблюдение политики дублирования. Эта политика определяет, когда существует загрузка и выполнение действия, когда входящая запись сохранена в хранилище. Доступные значения для этой Конфигурации следующие:

  • • нет: не предпринимать никаких конкретных действий, разрешить, если входящая запись содержит дубликаты. Hudi поверхность Чжунцуньсуществовать Дубликаты。
  • • drop: Соответствующие записи во входящей записи будут удалены, а оставшиеся записи будут приняты.
  • • неудача: если та же запись будет принята снова, операция записи завершится неудачно. По сути, это определяется стратегией генерации ключей: данная запись может быть принята целевой поверхностью только один раз.

проходитьдобавить вэтот Конфигурация,старыйиз Связанный Конфигурация hoodie.datasource.write.insert.drop.duplicates Сейчас устарел. когда оба указаны,Новая конфигурация будет иметь приоритет над старой Конфигурацией. Если конкретная Конфигурация не указана,Будет использовано значение по умолчанию новая Конфигурацияиз. Пользователям настоятельно рекомендуется перейти на новуюизконфигурацию.

МОР поверхность Уплотнение

для Spark Пакетная запись (Spark Datasourceи Spark SQL), который автоматически Таблицы MOR (слияние при чтении) включают сжатие, если пользователь явно не отменяет это поведение. Пользователи могут выбрать hoodie.compact.inlineнастраиватьдля false Явно отключить сжатие. Если пользователь не отменяет эту конфигурацию, примерно каждые 5 дополнительные коммиты(hoodie.compact.inline.max.delta.commitsиззначение по умолчанию)вызовет MOR поверхностьиз сжатие。

HoodieDeltaStreamer переименован в HoodieStreamer.

из версии 0.14.0 начать HoodieDeltaStreamer Переименовать в Толстовка Стример. Также обеспечивается обратная совместимость, поэтому существующие задания пользователей не затрагиваются. Но существование вот-вот будет выпущено из Версия может остановить Deltastreamer изпод поддержки. Поэтому настоятельно рекомендуется пользователям перейти на HoodieStreamer。

MERGE INTO JOIN CONDITION

Начиная с 0.14.0Версия,Когда пользователь не предоставляет четких спецификаций,HudiВозможность автоматического создания ключей мастер-записи.。этот Расширенная функциональностьделать MERGE INTO JOIN пункт может относиться к Hudi Условие соединения на поверхности любого столбца данных, где указан первичный ключ. Hudi Генерировать себя. Но в случае существования пользователя Конфигурация первичного ключа записи условие соединения по-прежнему требует, чтобы пользователь указал поле первичного ключа.

Важные особенности

Record Level Index

Hudi Версия 0.14.0 Представлена ​​реализация новогоизиндекса - Record Level Индекс. Индекспроходить на уровне записей эффективно сохраняет каждую запись из местоположения и обеспечивает быстрый поиск во время операций поиска по существующему индексу, что значительно повышает производительность операций записи на большие поверхности. он может эффективно заменить Hudi Обычно используется в других глобальных индексах, таких как Global_bloom、Global_Simple или Hbase。

Поскольку существующий процесс поиска очень затратен для сбора индексированных данных из различных файлов данных.,Блум индекси простой индекс для большого набора данных поверхности оказывается более низкой производительностью. и,Эти индексы не поддерживают запись ключей один к одному для записи сопоставлений путей к файлам;,Они существуют, когда поиск оптимизирует поиск для вывода отображений. Эти индексы накладных расходов на каждый файл делают их менее эффективными для обработки или записи данных с большими наборами файлов или записей.

С другой стороны, Hbase индексдля Каждый ключ записи сохраняет сопоставление «один к одному», что обеспечивает высокую производительность при заданном размере набора данных. Однако для этого требуется отдельный HBase кластер для обслуживания,Это существование является трудным с эксплуатационной точки зрения и ресурсоемким.,Требует специальных знаний.

индекс записи в сочетании с HBase индексизация скорости и масштабируемости без ограничений и накладных расходов. для HUDI Часть метаданных, будущие записи и запросы любого повышения производительности будут автоматически конвертироваться в улучшение индекса производительности для записи. Используя индекс уровня записи, можно улучшить производительность поиска индекса. 4 приезжать 10 раз, в зависимости от рабочей нагрузки, даже для очень больших наборов данных (например. 1 ТБ) тоже.

проходить Уровень ведения журналаиндекс,можно наблюдать значительные улучшения производительности,Потому что задержки и поступления и зданные прямо пропорциональны сумме. Этот и другие глобальные индексы резко контрастируют,Где время поиска индекса увеличивается линейно с размером поверхности. Индекс уровня записи специально разработан для эффективной обработки таких крупномасштабных поисков данных.,И время поиска не увеличивается линейно с размером файла.

для Чтобы воспользоваться преимуществами этой быстрой индексизации, пользователям необходимо включить два типа конфигурации:

  • • Должно быть включено hoodie.metadata.record.index.enable Для того, чтобы записать индекс уровня записи в элемент данныхповерхность.
  • hoodie.index.type Нужно установить для RECORD_INDEX Чтобы найти индекс уровня записи использования.

Поддержка автоматической генерации ключей таблицы Hudi.

С самого начала версии Hudi первичный ключ является обязательным полем для любой конфигурации поверхности Hudi, необходимой пользователю. от 0.14.0 Изначально мы ослабили это ограничение. Эта Расширенная Функциональность решает давнюю потребность сообщества, когда в некоторых случаях использования нет первичных ключей. Версия 0.14.0 Сейчас существуютдля пользователей обеспечивают создание Hudi гибкость поверхности без явного первичного ключа Конфигурация (проходить опустить настройку Конфигурации) - hoodie.datasource.write.recordkey.field)。В этом случаеHudi Первичный ключ будет сгенерирован автоматически. Эта функция работает только с новыми таблицами, существующие таблицы нельзя изменить.

все Spark Все писатели предоставляют эту функциональность с определенными ограничениями. только для типа добавления из варианта использования, следующие четыре средства записи разрешают вставки и массовые вставки - Spark Datasource、Spark SQL、Spark Streaming、Hoodie Стример. Используйте только Spark SQL MERGE INTO 、 UPDATE и DELETE заявлениеподдерживать Даженовыйиудалить.для Spark Источник данных, только если DataFrame содержит Hudi из метаполя только поддержка UPDATE и УДАЛИТЬ. Ознакомьтесь с кратким руководством, чтобы узнать об автоматическом создании ключей. Hudi поверхность CRUD Операция из фрагмента кода.

Поддерживается Spark версии 3.4.

Добавить Спарк 3.4 поддержка, Spark 3.4 из пользователей могут использовать hudi-spark3.4-bundle。Spark 3.2、Spark 3.1、Spark3.0 и Spark 2.4 Будет по-прежнему подлежать поддержке. Пожалуйста, проверьте Руководство по миграциичтобы получить Пакетное обновление пакет. Вы можете просмотреть краткое руководство, чтобы быстро приступить к работе. Hudi и Spark 3.4。

Улучшения на стороне запроса

Поддержка таблиц метаданных Athena

Теперь пользователи могут существовать и существовать Athena беспрепятственно эксплуатировать Hudi из Юаньданныеповерхность. Файл Столбец поверхностииндекспроходить извлекает информацию из обслуживаемого раздела, перемещая карту файла изиндекс, устраняя необходимость в рекурсивных вызовах файловой системы (например, «Поверхность столбца») из. Этот метод оказался очень эффективным, особенно при работе с большим количеством наборов данных. использовать Hudi 0.14.0, пользователи могут существоватьдля ее Hudi поверхностьосуществлять Glue Активировать во время синхронизации каталогов на основе данныхповерхности поверхности списка файлов. Чтобы включить эту функцию, пользователи могут Конфигурация hoodie.datasource.meta.sync.glue.metadata_file_listing исуществовать Glue Установите его во время синхронизации true。

Запрос с использованием фильтров цветения паркета

существовать Hudi 0.14.0 , теперь пользователи могут продолжать использовать нативные Parquet фильтр Блума, при условии, что они поддерживаются расчетной системой Apache Parquet 1.12.0 или выше Версия. Эта поддержка охватывает набор данных, а также запись и чтение. Худи проходить Hadoop Конфигурация проста в использовании. Parquet фильтр Блума。потребности пользователяиспользоватьпоколениеповерхностьприменятьфильтр Колонка Блумаиз с конкретными ключами для установки Hadoop конфигурация. Например, parquet.bloom.filter.enabled#rider=true для rider Столбец создает фильтр Блума. Всякий раз, когда запрос включает в себя rider Если предикат из указан, отфильтруйте Блума вступит в игру, тем самым увеличивая показатели производительности.

Инкрементальный запрос с несколькими авторами

существовать в сценарии с несколькими авторами,Из-за одновременной записи,На временной шкале могут появиться пробелы (запрошенные моменты или моменты в полете — это не самые новые моменты). существуют при выполнении инкрементного запроса,Эти пробелы могут привести к противоречивым результатам. для решения этой проблемы,Hudi 0.14.0 Введена настройка новаяиз Конфигурация. hoodie.read.timeline.holes.resolution.policy,Специально используется для устранения этих несоответствий в дополнительных запросах. Конфигурация предлагает три возможные стратегии:

  • • FAIL: это политика по умолчанию.,Когда во время инкрементных запросов обнаруживаются такие разрывы во времени.,выдаст исключение.
  • • БЛОК: В этой стратегии результаты дополнительных запросов ограничены диапазоном времени между дырами на временной шкале. Например, если существуют t0 приезжать t2 из Инкрементный диапазон запроса, существует t1 момент, чтобы обнаружить разрыв в доступности, запрос покажет только t0 приезжать t1 между из результатов без сбоев.
  • • USE_TRANSITION_TIME: эта стратегия является экспериментальной и включает в себя добавочный период запроса. Используйте время перехода состояния, которое представляет собой время Отправьте мета-данные файлы со временем модификации файла на временной шкале на основе.
Поддержка типов временных меток в Hive 3.x

В течение некоторого времени Худи пользовательсуществоватьчитать Spark из Timestamp введите столбец и впоследствии попытайтесь использовать Hive 3.x Есть трудности с их прочтением. существовать Hudi 0.13.x Мы представили обходной путь для устранения этой проблемы в версии 0.14.0. Версиясейчассуществоватьубеждаться HiveAvroSerializer и Hive 3.x Полностью совместим для решения этой проблемы.

Улучшения синхронизации Google BigQuery

существовать 0.14.0 Например, BigQuerySyncTool. поддерживатьиспользовать Список будетповерхностьсинхронныйприезжать БигQuery. Ожидается, что по сравнению с традиционным способом производительность запросов будет выше. Эволюция шаблона по методу контрольного списка. Потому что новыйиз schema Благодаря улучшениям больше нет необходимости удалять столбцы разделов из файлов. Чтобы включить эту функцию, пользователи могут hoodie.gcp.bigquery.sync.use_bq_manifest_fileнастраиватьдля true

Улучшения на стороне чтения Spark

Поддержка чтения снимков для таблиц MOR Bootstrap.

существовать 0.14.0 в багажник добавлена ​​поверхность MOR На снимке написано «утверждение». Строка по умолчанию для была изменена различными способами, чтобы соответствовать незагрузочной MOR поверхностьизготовленная для. Чтение снимков теперь будет режимом чтения по умолчанию. использовать hoodie.datasource.query.type=read_optimized Выполнение запросов, оптимизированных для чтения, которые ранее были строкой по умолчанию. Такая поверхностьиз Hive Синхронизация приведет к тому, что имя поверхности будет соответствовать _ro и _rt Суффиксы поверхность обозначают оптимизацию чтения и чтение снимка соответственно.

Функция hudi_table_changes с табличным значением для инкрементального чтения

Hudi используйте тип добавочного запроса для получения изменений после предоставления заданной метки времени фиксации из потока записей из функциональности. существовать Hudi 0.14.0 , мы добавили новый, более простой метод, используем имя для hudi_table_changes функция значения изповерхности, чтобы получить Hudi данныенаборизбольшинствоновыйсостояниеили Дажеизменятьпоток。Ниже приводится несколько примеров того, как использовать эту функцию из синтаксиса и.

Язык кода:javascript
копировать
SYNTAX
hudi_table_changes(table, queryType, beginTime [, endTime]);
-- table: table identifier, example: db.tableName, tableName, or path for the table, example: hdfs://path/to/hudiTable.
-- queryType: incremental query mode, valid values: latest_state, cdc
(for cdc query, first enable cdc for the table by setting cdc.enabled=true),
-- beginTime: instantTime to begin query from, example: earliest, 202305150000,
-- endTime: optional instantTime to end query at, example: 202305160000,

EXAMPLES
-- incrementally query data by table name
-- start from earliest available commit, end at latest available commit.
SELECT * FROM hudi_table_changes('db.table', 'latest_state', 'earliest');

-- start from earliest, end at 202305160000.
SELECT * FROM hudi_table_changes('table', 'latest_state', 'earliest', '202305160000');

-- incrementally query data by path
-- start from earliest available commit, end at latest available commit.
SELECT * FROM hudi_table_changes('path/to/table', 'cdc', 'earliest');

Дополнительные примеры см. в кратком руководстве.

Новая программа чтения файлов формата MOR в Spark

на основе RFC-72 цельсуществовать Тяжелыйновыйдизайн Hudi-Spark Объединив предложение из, мы представили MOR (Merge of Reads) поверхность из экспериментальной программы чтения форматов файлы. Ожидается, что устройство чтения значительно уменьшит задержку чтения по сравнению со старыми форматами файлов. 20% к 40%, особенно для моментальных снимков и запросов начальной загрузки. Цель состоит в том, чтобы приблизить задержку к COW (копировать) Формат файла задерживается при записи. Чтобы воспользоваться преимуществами этого нового формата файлов, пользователям необходимо установить hoodie.datasource.read.use.new.parquet.file.format=true。стоит отметитьизда,Эта функция все еще экспериментальная.,И есть некоторые ограничения. Для получения более подробной информации и тех, кто заинтересован в участии,См. HUDI-6568.

Улучшения на стороне записи Spark

Улучшения Bulk_Insert и записи строк

0.14.0 Версияподдерживатьсуществоватьосуществлять INSERT OVERWRITE TABLE и INSERT OVERWRITE PARTITION ждать SQL При работе используйте операции массовой вставки. Чтобы включить массовую вставку, настройте hoodie.spark.sql.insert.into.operation настраиватьдляценитьbulk_insert。и Операция вставки по сравнению с,Пакетная вставка имеет лучшую производительность записи. Кроме того, простой индекс сегмента также имеет средство записи строк.

Толстовка DeltaStreamer Enhanced

Динамические обновления конфигурации

когда Hoodie Streamer При работе в непрерывном режиме вы можете создавать новые/обновлять новые свойства перед каждым вызовом синхронизации. Заинтересованные пользователи могут достичь org.apache.hudi.utilities.deltastreamer.ConfigurationHotUpdateStrategy чтобы воспользоваться этим.

Исходный код HoodieStreamer на основе SQL-файла

HoodieStreamer Добавлен новый источник - SqlFileBasedSource, предназначенный для упрощения сценариев однократной обратной засыпки.

Улучшения флинка

Ниже приводится 0.14.0 Версиясерединана основе Flink Engine из Расширенная функциональность。

Поддержка последовательного хэш-индекса

статический хеш-индекс (индекс BUCKET) по сравнению с,Последовательное хеширование индексов для записи данных обеспечивает динамическую масштабируемость сегмента данных. Чтобы воспользоваться этой функцией,Пожалуйста, измените опциюindex.typeКонфигурациядляBUCKETи будетhoodie.index.bucket.engineнастраиватьдляCONSISTENT_HASHING

Async активируется в средстве записи существования, когда включено последовательное хеширование. Clustering Планирование очень важно. План кластеризации должен выполняться в автономном режиме. существовать В ходе этого процесса писатель будет существовать. В режиме ожидания выполните двойную запись в старый и новый сегменты данных. Хотя двойная запись не влияет на корректность, настоятельно рекомендуется выполнить кластеризацию как можно скорее.

Динамическое сокращение разделов для потокового чтения

существовать 0.14.0 Раньше при запросе с постоянной фильтрацией даты и времени и предикатами Flink Потоковая программа чтения неправильно удаляет разделы datetime. Начиная с версии, Исправлен запрос потоковой передачи Flink.,С поддержкой любого шаблона предиката фильтра,Включая, помимо прочего, фильтрацию по дате и времени.

Простое ускорение запросов к таблице индексов сегментов (с полем индекса)

для простого из барреля индексповерхности,Если запрос использует предикат фильтра в стиле ожидания в ключевом поле индекса,Flink Engine оптимизирует планирование,Содержит только те из очень конкретныхданныеведроизисточникданныедокумент;этот Ожидается, что запросы класса будут в среднемпроизводительность Воляулучшить почти hoodie.bucket.index.num.buckets раз.

Поддержка Флинк 1.17

Поддержка Флинк 1.17новыйиз Скомпилировано maven Конфигурационный файл flink1.17,существовать Flink Hudi Пакетный пакет jar изкомпилировать cmd серединадобавить в Конфигурационный файл -Pflink1.17 чтобы включить Flink 1.17 изинтеграция.

Оператор удаления обновления Flink

Начиная с версии, операторы UPDATE и DELETE были интегрированы для пакетных запросов. Только определив изповерхность первичного ключа до того, как можно правильно обработать этот оператор.

Язык кода:javascript
копировать
UPDATE hudi_table SET ... WHERE ...
DELETE FROM hudi_table WHERE ...

EXAMPLES
-- update the specific records with constant age
UPDATE hudi_table SET age=19 WHERE UUID in ('id1', 'id2');
-- delete all the records that with age greater than 23
DELETE FROM hudi_table WHERE age > 23;

Улучшения Java

Java Движок был расширен множеством операций записи, чтобы сделать его совместимым с другими движками. Например Java Engine 0.14.0 Добавлены сжатие и кластеризация.

Известные резервные варианты

существоватьHudi В версии 0.14.0, когда запросы используютComplexKeyGeneratorилиCustomKeyGeneratorизповерхности, значение раздела возвращается в виде строки. Обратите внимание, что в хранилище не происходит изменения типа, т. е. поля раздела в хранилище записываются с пользовательскими типами. Этот упомянутый выше генератор ключей является основным изменения,Волясуществовать 0.14.1 средний ремонт - HUDI-6914

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose