От реляционной базы данных к единой таблице DynamoDB: пошаговое исследование

Публикация № 1618917 10.03.22

Интеграция - WEB-интеграция

Просто потому, что это NoSQL, это не значит, что он нереляционный. Перевод статьи по DynamoDB, которую можно применить для Yandex Database.

Источник https://www.trek10.com/blog/dynamodb-single-table-relational-modeling/ (Forrest Brazeal).

Делаю для лучшего понимания применимости связки Yandex Serverless + Yandex Database (Document API, совместим с Amazon DynamoDB) для небольших проектов, которые попадают в бесплатную тарификацию.

Из всех сессий, которые я видел в AWS re:Invent 2018, моей любимой, безусловно, является этот ошеломляющий опыт работы с NoSQL от главного технолога AWS и сертифицированного мастера космического пространства Rick Houlihan.

Рик приоткрывает крышку банки с червями, которых многие из нас, разрабатывающих таблицы DynamoDB, стараются избегать: тот факт, что DynamoDB - это не просто хранилище значений ключей для простого поиска элементов. Если вы спроектируете его правильно, одна таблица DynamoDB может обрабатывать шаблоны доступа к допустимой многотабличной реляционной базе данных, не напрягаясь.

Эта маленькая фраза "спроектирована должным образом", конечно, является предостережением. Видео Рика и соответствующая документация (ссылка), к которой, как я подозреваю, он приложил руку, плотно набиты советами о том, как создать таблицу DynamoDB, которая будет соответствовать производительности запросов вашей реляционной базы данных в произвольном горизонтальном масштабе.

Хотя не буду врать, это тяжелая штука, особенно для нас, несертифицированных космических волшебников.

Итак, в этом посте я хочу пошагово проработать некоторые соображения по проектированию однотабличной системы DynamoDB. Мы не будем рассматривать все возможные шаблоны проектирования, но, надеюсь, вы начнете понимать возможные варианты использования и неизбежные компромиссы. В заключение мы зададим главный вопрос: является ли все это хорошей идеей, когда реляционные базы данных все еще находятся прямо там?

 

Из RDB в DynamoDB: практический пример

Итак, какую реляционную базу данных мы должны, э-э, динамизировать? Я решил использовать самый похожий на SQL пример, который только мог придумать: Northwind, классическая реляционная база данных, используемая для обучения продукту Microsoft Access еще в 90-х годах.

Вот полный репозиторий о Нортвинде (ссылка). Он невелик, но, по крайней мере, так же сложен, как требования к данным многих современных микросервисов, которые вы, возможно, захотите использовать с помощью DynamoDB.

 

 

О чудо, образец данных для схемы (ссылка) Northwind доступен в очищенной CSV-форме на Github. Мы проигнорируем пару вспомогательных таблиц, чтобы сосредоточиться на “большой восьмерке”: Категории, Клиенты, Сотрудники, Заказы / Детали заказа, Продукты, Грузоотправители и Поставщики.

Я включил весь код, необходимый для создания таблицы DynamoDB и загрузки данных, как показано в этом посте, в этом репозитории Github (ссылка). Не стесняйтесь проверить и запустить самостоятельно!

 

Шаг за шагом

Теперь, как нам превратить наши таблицы ERD и CSV в таблицу DynamoDB?

 

Шаг 1: Определите шаблоны доступа, которые, по вашему мнению, вам понадобятся

Сразу же мы сталкиваемся с огромной разницей между DynamoDB и реляционной базой данных: наша модель данных будет полностью прагматичной, а не теоретически самосогласованной. Мы собираемся сформировать нашу таблицу специально вокруг того, что нам нужно делать с данными, вроде как распылять изоляционную пену на крышу.

В реальном мире мы бы собрали эти требования от команды разработчиков приложений, потенциальных пользователей и т.д. Однако это не реальный вариант использования, поэтому нам придется изобрести некоторые шаблоны доступа, посмотрев на ERD. Вот некоторые произвольные требования к запросам, которые я придумал:

  • Получить сотрудника по идентификатору сотрудника
  • Получать прямые отчеты для сотрудника
  • Получить снятые с производства продукты
  • Перечислите все заказы на данный товар
  • Получите самые последние 25 заказов
  • Получить грузоотправителей по именам
  • Получать клиентов по контактному имени
  • Перечислите все товары, включенные в заказ
  • Поиск поставщиков по странам и регионам

Все это были бы простые SQL-запросы, включающие не более пары соединений. (Мы сохраним шаблоны написания для будущего поста.) Но помните, что у нас нет JOIN или GROUP BY в DynamoDB. Вместо этого мы должны структурировать наши данные таким образом, чтобы они были "предварительно объединены" прямо в таблице.

 

Шаг 2. Создайте таблицу DynamoDB с тремя общими атрибутами: "ключ раздела", "ключ сортировки" и "данные".

Примечание переводчика: "partition key" (PK) = "ключ раздела", "sort key" (SK) = "ключ сортировки"

Это подводит нас к одному из самых важных принципов проектирования однотабличной системы DynamoDB:

Имена атрибутов не имеют никакого отношения к значениям атрибутов.

Наше хранилище "ключ-значение" не только не имеет схемы; в некотором смысле оно также не имеет ключа. Нам нужно привыкнуть думать об именах атрибутов элемента DynamoDB как о произвольных. Наш атрибут "ключ раздела" в таблице может содержать значение другого типа в зависимости от того, является ли это Заказом, Продуктом, Сотрудником или чем-то еще:

 

 

Хранение разных типов данных в одном и том же атрибуте кажется странным и неудобным, я знаю. Но на самом деле он очень мощный. Этот метод называется перегрузкой индекса (index overloading), и он позволит нам объединить тонны шаблонов доступа в очень небольшое количество индексов.

Три общих атрибута будут использоваться для поддержки двух индексов: основного табличного индекса, который использует PK в качестве раздела и SK в качестве ключа сортировки, и глобального вторичного индекса, который использует SK в качестве раздела и данных в качестве сортировки.

В любом случае, что такого особенного в индексах? В общем, ваши затраты и производительность DynamoDB будут наилучшими, если вы ограничитесь "получениями" (поиск по ключу / значению для отдельных элементов) и "запросами" (условный поиск по элементам, которые имеют один и тот же ключ раздела, но разные ключи диапазона / сортировки). Сканирование, при котором вы без разбора поглощаете все элементы из таблицы, - это медленный и дорогостоящий антипаттерн. Требуются полезные запросы и запросам требуются ... полезные индексы (useful indexes) (ссылка). Итак, мы здесь.

Эти два индекса, как мы увидим, откроют огромное количество шаблонов доступа. Другие атрибуты в таблице могут быть названы так, как вы хотите; они не обязательно должны быть согласованы между элементами. Но даже если вы дадите каждому атрибуту каждого элемента случайное имя, это никак не повлияет на поведение таблицы. (Это просто затрудняет чтение и понимание людьми макета таблицы ... как мы обсудим далее ниже.)

 

Шаг 3: Создайте элемент в таблице DynamoDB для каждой записи в каждой таблице entity (без объединения)

Каждый Клиент, каждый Заказ, каждая запись отправителя получает товар в нашей новой таблице. В каждом из наших случаев мы сделаем так, чтобы атрибут pk соответствовал первичному ключу реляционной записи. Однако атрибуты sk и data мы будем варьировать в зависимости от типов запросов, которые нам нужно написать. Смотрите разбивку ниже:

 

 

На данный момент мы не включили таблицу соединений “OrderDetails”; на следующем шаге она будет обработана особым образом.

Давайте отметим здесь пару трюков:

  • Записи заказа, Продукта и поставщика используют статическое значение в качестве ключа раздела для GS1. Это позволяет нам просматривать все товары определенного типа (например, все заказы, соответствующие диапазону дат), не прибегая к дорогостоящей операции сканирования. Вы можете рассматривать это как обходной путь для потери наших драгоценных ключей атрибутов: вместо этого мы используем значение в качестве ключа.
  • Мы использовали составное значение, называемое ключом иерархической сортировки(hierarchical sort key), в качестве поля данных для записей клиентов и поставщиков. Объединив все данные адреса в одном поле, мы можем получить информацию о стране, регионе и городе по цене одного GSI.
  • Мы использовали значение “прекращено” в качестве ключа сортировки в GSI для товарных позиций. Предполагая, что мы заполняем это значение только для снятых с производства продуктов (что неверно в исходных данных Northwind), мы можем выполнять поиск снятых с производства товаров без необходимости сканирования всего раздела “ПРОДУКТ”. Этот метод называется разреженным индексом(sparse index).

На данный момент мы в основном играем в Тетрис с нашими данными, вводя и выводя различные значения из наших ограниченных слотов GSI, чтобы получить максимальную полезность. И мы еще не закончили, потому что нам все еще нужно это сделать...

 

Шаг 4: Представление отношений "многие ко многим" с помощью списков смежности

Лучшие практики DynamoDB заимствуют из теории графов концепцию списков смежности (adjacency lists) (ссылка), которые являются ... немного скользкой концепцией. Чтобы на мгновение зацепиться за идею графа, вы можете подумать обо всех элементах, которые мы разместили в нашей таблице до сих пор, как о записях “узла”. Они соответствуют сущностям, таким как клиенты и заказы. Теперь мы собираемся создать несколько дополнительных записей “edge”, которые представляют отношения "многие ко многим" между узлами.

В наборе данных Northwind взаимосвязь "многие ко многим", на которой мы сосредоточимся, выражена в таблице соединений OrderDetails. В заказе может быть много продуктов, один продукт может присутствовать во многих заказах, и атрибуты этой взаимосвязи выражаются в OrderDetails. Мы смоделируем эту взаимосвязь, разместив записи OrderDetails в разделе Order нашей таблицы.

 

 

Почему мы так одержимы минимизацией глобальных вторичных индексов? Не проще ли было бы просто поместить тонну индексов в эту таблицу? Долгое время ответ был отрицательным; таблицы DynamoDB имели жесткий предел в 5 GSI. DynamoDB совсем недавно повысил это ограничение до 20, что означает, что у вас, вероятно, может быть неопределенное количество GSI в таблице.

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

Что это нам дает? Теперь у нас есть возможность запрашивать раздел первичной таблицы, чтобы получить все товары в заказе. Мы можем запросить GS1 PK, чтобы выполнить обратный поиск по всем заказам данного продукта. Это шаблон списка смежности. Вы можете попробовать это самостоятельно с помощью таблицы соединений "EmployeeTerrorities" в данных Northwind, которые мы здесь не включили. Возможно, вам придется разбить этот шаблон доступа на его собственный GSI, если вы продвинетесь намного дальше.

Почему мы снова складываем все это в одну таблицу? Документация DynamoDB настоятельно рекомендует использовать как можно меньше таблиц, обычно по одной для каждого приложения / службы, если у вас нет сильно отличающихся шаблонов доступа. Расположение связанных данных близко друг к другу даст вам преимущества в производительности и масштабировании Dynamo без задержек и разочарований, связанных с запросами к нескольким таблицам через HTTP и попытками "присоединиться" к ним на стороне клиента.

Тем не менее, я вижу множество реляционных баз данных, которые следует разделить на отдельные таблицы DynamoDB, потому что одна и та же база данных используется в качестве свалки для всех видов несвязанных данных. Эта 70-гигабайтная таблица журналов доступа в вашей базе данных Postgres не обязательно должна находиться в одной таблице DynamoDB с данными о вашем продукте и заказе.

 

Шаг 5 (необязательно): Создайте дополнительные GSI для поддержки дополнительных шаблонов доступа.

Хотите верьте, хотите нет, но даже со всеми хитростями, которые мы использовали на шаге 2, одного GSI может быть недостаточно для поддержки всех возможных запросов! (Шокирует, я знаю.) Хорошей новостью является то, что вы можете добавить дополнительные GSI, если это необходимо, без полного разрушения вашей тщательно собранной доски для тетриса. В документах DynamoDB есть хороший пример добавления второго GSI со специально созданными ключами разделения и сортировки для обработки определенных типов запросов диапазона.

В нашем случае, однако, раздела основной таблицы плюс один GSI более чем достаточно для обработки всех вариантов использования, которые мы определили на шаге 1. Давайте разберем запросы:

 

 

Вы можете увидеть рабочие примеры всех этих запросов (ссылка) с использованием AWS Python SDK в прилагаемом репозитории. Кроме того, мы сохранили индивидуальный поиск по значению ключа для каждой сущности в таблице, поэтому мы не слишком далеко отклонились от корней DynamoDB.

 

Чего мы не можем сделать?

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

Например, предположим, что нам нужно просмотреть все товары в данной категории. Записи “Product” имеют идентификатор категории, но на данный момент он не включен ни в один из наших индексов. Наши варианты таковы:

  • Запрос все продукты, фильтрация по ID категории (не самый оптимальный запроса), или
  • Размещение новые элементов в одном из наших существующих разделов, что данные продукт индекса по ID категории (создает несколько дубликатов данных, которые потенциально сложнее управлять), или
  • Создать глобальный вторичный индекс с идентификатором продукта, а перегородки и идентификатор категории в качестве ключа сортировки (увеличение стоимости таблицы)

Как вы можете видеть, компромиссов предостаточно! Только вы можете решить, какой вариант имеет наибольший смысл для долгосрочной работоспособности вашего приложения и здравомыслия ваших разработчиков. Чем больше GSI с общими атрибутами вы добавите, тем сложнее будет прочитать и понять эту таблицу без дополнительной документации.

На самом деле, хорошо оптимизированный макет DynamoDB с одной таблицей больше похож на машинный код, чем на простую электронную таблицу - несмотря на все индивидуальные человеческие усилия, которые потребовались для его создания.

Что приводит к самому важному вопросу из всех:

Действительно ли моделирование моей реляционной базы данных в одной таблице DynamoDB - хорошая идея?

Около года назад я написал довольно популярную статью под названием "Почему DynamoDB не для всех". Многие из технических критических замечаний DynamoDB, которые я высказал в то время (отсутствие операционных средств управления, таких как резервное копирование / восстановление; постоянная проблема с горячими клавишами), с тех пор были частично или полностью устранены благодаря действительно впечатляющему запуску выпусков функций от команды DynamoDB.

Однако главный аргумент этой статьи остается в силе: DynamoDB - мощный инструмент при правильном использовании, но если вы не знаете, что делаете, это обманчиво удобное руководство по безумию. И чем дальше вы углубляетесь в эзотерические приложения, такие как реляционное моделирование, тем больше вы должны быть уверены, что знаете, во что ввязываетесь. Особенно с учетом того, что "бессерверные" базы данных, ориентированные на SQL, такие как Amazon Aurora (аналога у Yandex на данный момент нет), набирают обороты, у вас есть множество полностью управляемых опций с меньшей кривой обучения.

Тем не менее, помните, что оригинальная статья Amazon Dynamo основывалась на наблюдении, что большинство взаимодействий с их обширными базами данных Oracle были простыми считываниями по ключу-значению, никаких объединений или другой реляционной магии не требовалось.

Точно так же множество поверхностно реляционных наборов данных сводятся к относительно небольшому числу шаблонов использования. Если вы сможете выполнить шаги, описанные в этом посте, чтобы определить и внедрить эти шаблоны для ваших данных, масштаб, производительность и низкие операционные издержки DynamoDB могут показаться более привлекательными, чем когда-либо.

Если, конечно, вы все еще не являетесь большим поклонником Microsoft Access.

Специальные предложения

Оставьте свое сообщение

См. также

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

WEB-интеграция Облачные сервисы, хостинг Платформа 1С v8.3 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    12903    comol    32    

108

Online телефонный справочник из 1С: Зарплата и управление персоналом

WEB-интеграция Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    28861    ruha    21    

36

Кэширование COM-соединения. Три способа

Внешние источники данных WEB-интеграция Обмен между базами 1C Платформа 1С v8.3 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    44874    Infostart    46    

59

Бесплатный GPS-трекинг

WEB-интеграция Бесплатно (free)

Современные технологии и возможности становятся все более доступными для широких масс и повсеместно используемыми, как для частного лица, так и для мелкого и среднего бизнеса. Так и GPS-трекинг (отслеживание в реальном времени на карте местоположения водителей, курьеров, монтажных бригад, торговых представителей, детей, собак и т.п., а также просмотр статистики по их передвижениям и остановкам), становится сейчас все более востребованным сервисом, как для домашних условий, так и для предприятия. И, если крупные фирмы (например, транспортные предприятия) подписав договора с коммерческими сервисами, оплачивая своевременно счета за устройства и абонплату, эту проблему для себя решили, то это скорее подходит для крупных корпоративных клиентов. Что делать нам, простым смертным или небольшой фирме с несколькими водителями, например? Какие есть простые, надежные и недорогие решения?

05.01.2013    53586    venger    19    

55

Организация удаленного доступа к корпоративной информационной системе — это просто !

Внешние источники данных Монитор заказов WEB-интеграция Бесплатно (free)

Хочу поделиться своим опытом создания web морды к корпоративной информационной системе на базе 1С. Необходимо организовать сбор заказов от удаленных пользователей. - Каждый пользователь видит свой набор данных, и работает со своими документами. - Доступ по логину/паролю, работа в основном с планшетов (iPad) или с десктопа. - Сервер должен находиться за пределами организации. - Себестоимость 1 пользователя не более 10$ за месяц. - Использование в основном мобильного канала связи GPRS (~100 КБ/с).

31.08.2012    29439    avhrst    13    

62

Методика интеграции HTML редакторов в поле HTML документа базы 1С

WEB-интеграция Платформа 1С v8.3 Платформа 1C v8.2 Бесплатно (free)

В статье описаны критерии WYSIWYG HTML редакторов и общая картина интеграции с платформенными механизмами. На момент платформы 1С 8.3 и возможно для будущих релизов описание будет скорее всего актуально. Апробировано на 1С 8.3.20 и 8.2.12, а также на мобильной платформе 8.3.19.59.

12.04.2022    1949    user1206119    2    

13

Что делать, когда методы объекта ПолеHTMLДокумента.Документ (УФ) недоступны?

WEB-интеграция Управляемые формы 8.3.14 Бесплатно (free)

Начиная с версии 8.3.14 некорректно загружаются некоторые веб-страницы в поле HTML-документа на УФ - методы ПолеHTMLДокумента.Документ недоступны. Методом "научного втыка" удалось обойти этот глюк системы.

27.02.2023    534    romasna    2    

8

Не программируй - вставляй и копируй. OAuth 2.0 авторизация API Google, получение токенов доступа (refresh и access token)

WEB-интеграция Облачные сервисы, хостинг Бесплатно (free)

Без программирования, в несколько кликов - простой и быстрый способ трехногой авторизации по протоколу OAuth 2.0 в Google APIs. Получение refresh и первого access token для использования в HTTP-запросах из 1С к API Google. Для приложений типа "Компьютеры".

09.06.2020    13641    uno-c    7    

31

Возможности доработки выгрузки из 1С в Битрикс

WEB-интеграция Платформа 1С v8.3 Управленческий учет Бесплатно (free)

В статье собраны некоторые полезные и интересные примеры доработок выгрузки из 1С на сайты на платформе Битрикс (Возможно, что-то подойдёт и для WordPress и других платформ, принимающих типовую выгрузку на сайт из 1С). Доработки рассмотрены без привязки к конкретным конфигурациям, примеры кода взяты в основном из доработок УТ 10 и 11. Некоторые доработки требуют изменений на стороне Битрикса, некоторые укладываются в типовой функционал. Примеры взяты из личного опыта, возможно, описание где-то не полное, т.к. доработки делались в разное время. Если материал будет интересен или будут аналогичные актуальные задачи, буду стараться дополнять статью более подробным описанием и примерами.

01.11.2022    1445    de0nis    2    

13

Подключение к HTTP-сервису с авторизацией посредством передачи клиентского SSL-сертификата

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

В статье хочу поделиться опытом настройки подключения 1С к стороннему HTTP-сервису, использующему авторизацию посредством передачи клиентского SSL-сертификата.

07.12.2021    11476    kholkin    12    

106

Пагинация в 1С

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Те, кому приходилось делать REST API на базе HTTP-сервисов 1С, могли в какой-то момент столкнуться с необходимостью разработки методов, которые позволяли бы возвращать данные с пагинацией, т.е. последовательными порциями. В языках общего назначения пагинация реализуется простым использованием операторов OFFSET и LIMIT в SQL-запросе к базе данных. В языке запросов 1С оператора OFFSET нет, поэтому всем приходится решать эту задачу обходными способами. Один из таких обходных способов представлен в этой статье.

09.01.2023    2739    aleksei_adamov    36    

21

1С бакэнд (каталог товаров)

WEB-интеграция Платформа 1С v8.3 1С:Розница 2 Россия Бесплатно (free)

Серверная часть на 1с8 для веб каталога. Попробую поделиться опытом, как я использовал 1С в качестве веб сервера для веб витрины.

01.01.2023    1548    aldar    7    

20

Новый SimpleWEB – тот же Simple, теперь еще web

WEB-интеграция Мобильная разработка Мобильная платформа Бесплатно (free)

Представляю новый отдельный проект на старой семантике – фремйворк для создания веб приложений. Для разработчика симпла ничего не меняется – все тот же стек разработки, тот же конфигуратор и принципы разработки, но конфигурации теперь можно запускать не только на Андроид, но и в виде веб – приложений. Т.е. теперь платформы две – мобильная и веб, в два раза больше поводов перейти на этот стек разработки. Проект пока на стадии альфы, но развивается.

19.12.2022    2834    informa1555    9    

39

Реализация нестандартных (для 1С) интерфейсных решений в Web-клиенте

WEB-интеграция Идеи и тренды в разработке Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Онлайн-сервисы, построенные на 1С, могут использовать все многообразие веб-технологий. О том, как спроектировать, реализовать и красиво оформить интерфейс продукта 1С, в докладе на конференции Infostart Event 2021 Post-Apocalypse рассказал CTO компании WiseAdvice Олег Филиппов.

21.10.2022    7101    comol    15    

70

Верстка главной страницы Infostart на tailwind

WEB-интеграция Работа с интерфейсом Бесплатно (free)

Сверстал главную страницу infostart на framework tailwind css.

08.09.2022    3244    John_d    21    

29

Код универсального HTTP-запроса

WEB-интеграция 8.3.14 Россия Бесплатно (free)

Код предназначен для того, чтобы не читать каждый раз справку по методам 1С, а иметь под рукой готовый шаблон, где можно поменять параметры в соответствии со своими целями...

08.07.2022    4455    user1802663    13    

25

Rest API от чайника для чайников

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

На написание статьи побудило чтение книги "Технологии интеграции "1С:Предприятия 8.3"" Хрусталевой Е.Ю. В первой главе там постоянно чередуются слова REST, REST-интерфейс, архитектура REST и т.д. Мне стало интересно, я начал копать, что это такое, и тема оказалась достаточно интересной.

06.06.2022    14515    zeltyr    2    

11

Организация HTTP публикации каталога товаров используя PostgREST

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье опишу порядок установки настройки и использования PostgREST на примере организации каталога товаров.

05.10.2020    3001    malikov_pro    2    

17

Загрузка выпусков подкаста Радио 1С Энтерпрайз

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Код для загрузки всех выпусков подкаста Радио 1С Энтерпрайз для оффлайн-прослушивания.

29.04.2022    1232    q_i    9    

16

Спецификация OpenRPC

WEB-интеграция Бесплатно (free)

Спецификация OpenRPC определяет стандартное, независимое от языка программирования описание интерфейса для API-интерфейсов JSON-RPC 2.0. Перевод общей информации и спецификации с официального сайта https://open-rpc.org/

18.04.2022    1377    malikov_pro    0    

14

Создание кодогенератора для Postman

WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Опишу порядок разработки кодогенератора для Postman c использованием OneScript и HTTPКоннектор.

13.03.2022    1552    malikov_pro    4    

9

Запуск FastAPI (Python) на Yandex Cloud Functions и Yandex Database

WEB-интеграция Бесплатно (free)

Описание прототипа для запуска HTTP API сервиса на serverless технологии с применением фреймворка.

10.03.2022    4005    malikov_pro    2    

11

Что, Почему и Когда в дизайне с одной таблицей с помощью DynamoDB

WEB-интеграция Бесплатно (free)

Перевод статьи по DynamoDB, которую можно применить для Yandex Database.

10.03.2022    842    malikov_pro    0    

3

Как моделировать отношения "один ко многим" в DynamoDB

WEB-интеграция Бесплатно (free)

Перевод статьи по DynamoDB, которую можно применить для Yandex Database.

10.03.2022    1064    malikov_pro    11    

3

Как из 1С отдать миллионы строк в BI и успеть это сделать быстро

Консолидация данных Анализ и проектирование ИТ-систем WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

На онлайн-митапе «Бизнес-анализ по данным базы 1С. Интеграция c платформами BI» выступил ведущий разработчик WiseAdvice.tech Дмитрий Фурцев. Дмитрий рассказал о том, как отдать миллионы строк из 1С в платформу бизнес-аналитики и не потратить на это сутки.

14.02.2022    5364    Fudj1k    11    

22

Передача сообщений из 1С в MS Teams

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример организации уведомлений в канал MS Teams.

09.02.2022    2306    Alex_YAM    4    

24

Работа с 1С через протокол OData

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В данной статье мы будем рассматривать работу с данными информационной базы через протокол OData (далее OData).

17.12.2021    34955    ProgrammingStore    27    

88

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С (Часть 2)

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Это вторая часть цикла статей, посвящённых типовому модулю интеграции 1С Предприятия и Битрикс24. Цель данной части: рассмотреть тонкости, связанные с обменом товарами и сопутствующими сущностями (спойлер - единицы измерения и свойства товаров). Также затронем некоторые нюансы связи сущностей 1С и Б24 (относящиеся не только к товарам) и их побочное влияние при переносе данных из модуля в модуль (при смене конфигурации, переустановки или обновлении модуля).

27.11.2021    9197    freegman74    16    

19

Web консоль управления сеансами 1С

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Мы дали ему название adm1c, он позволяет посредством веб доступа удалять или смотреть на сеансы в 1С базах и при необходимости удалять их. Да и что тут такого, сказали бы, есть же консоль на win, с нее же это можно делать, и все верно, но есть пара но.

26.11.2021    3156    4ernuy    16    

28

Безголовая (Headless) архитектура построения eCommerce

WEB-интеграция Бесплатно (free)

Обобщение материалов по безголовой архитектуре построения eCommerce.

10.11.2021    1749    malikov_pro    9    

6

Ограничение доступа к HTTP публикациям 1С сервера используя NGINX

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье опишу вариант ограничения доступа к HTTP публикациям 1С сервера используя NGINX.

02.07.2020    14619    malikov_pro    14    

87

Понимание схемы JSON (JSON Schema), часть 2

WEB-интеграция Бесплатно (free)

Перевод книги https://json-schema.org/understanding-json-schema/

09.11.2021    7733    malikov_pro    0    

23

Примеры тестовых сценариев Postman

WEB-интеграция Бесплатно (free)

Перевод статьи https://learning.postman.com/docs/writing-scripts/script-references/test-examples/

08.11.2021    35910    malikov_pro    0    

37

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С

WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Цель статьи - указать на подводные камни и нюансы, о которых “не пишут на заборах” и которые встретились мне за время внедрения типового модуля интеграции 1С и Битрикс24. Будет интересна для людей, кто подумывает о том, чтобы настроить интеграцию, и хотят понять, с чем столкнутся. А также для тех, кто уже работает с подобным обменом, столкнулся с какими-то из описанных ситуаций и хочет понять, что пошло не так и “как жить дальше”. Постараюсь все описать “человеческим” языком с минимальной долей терминов, так как статья, надеюсь, будет полезна не только программистам.

07.11.2021    12985    freegman74    13    

37

Окей, Google

WEB-интеграция Платформа 1С v8.3 Россия Бесплатно (free)

Пример интеграции Google Ассистента с 1С. В основе которого лежит платформа Dialogflow CX для понимания естественного языка.

28.10.2021    2176    Soloist    6    

29

Спецификация JSON:API 1.0

WEB-интеграция Бесплатно (free)

Перевод спецификации https://jsonapi.org/format/

28.10.2021    6477    malikov_pro    4    

17