Тема: Реализация динамических атрибутов в сервисе хранения номеров
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
2. Постановка задачи 5
3. Обзор 6
3.1. Технические детали проекта ЕБН 6
3.2. Способы реализации динамических атрибутов 9
3.3. Обзор валидаторов JSON-схемы 12
4. Проектирование 15
4.1. Проектирование схемы данных 15
4.2. Структура JSON-схемы атрибутов сущности 16
4.3. Описание API динамических атрибутов 17
5. Реализация 20
5.1. Реализация на уровне базы данных 20
5.2. Доработки в уровне работы с базой данных в коде приложения 21
5.3. Работа с JSON-схемой 21
5.4. Реализация обработчиков 25
6. Апробация 30
6.1. Внутреннее ревью 30
6.2. Тестирование 30
6.3. Документация 31
6.4. Добавление новых атрибутов 31
7. Заключение 32
Список литературы 33
📖 Введение
информации об их физических и логических подключениях. Данный
сервис используется инженерами компании для аудита номеров и автоматизации рабочих процессов телефонии.
ЕБН хранит информацию о различных объектах реального мира.
Каждый объект имеет свой тип (телефонный номер, договор, партнер
и т.д.), который определяет атрибуты, описывающие свойства данного
объекта.
В последнее время значительно увеличился рост количества задач
по добавлению новых атрибутов к существующим типам объектов приложения. Такие задачи решались разработчиками данного сервиса путем добавления атрибутов в схему базы данных, расширения исходного
кода и вывода добавленных атрибутов в API1 сервиса. Но таких задач
стало возникать очень много, и соответствующая работа занимает у
разработчиков ощутимое количество времени. Усугубляет это положение тот факт, что данные задачи будут и дальше возникать достаточно активно. Связано это с тем, что сервис был запущен относительно
недавно и сейчас его начинают подключать в процессы автоматического
конфигурирования телефонных систем. При этом сервис используется
как инвентарная система, по данным которого конфигурируются другие устройства. Количество и набор атрибутов, используемых в этом
процессе, зависит от типа устройства. Из-за этого при подключении
новых устройств данная проблема будет возникать снова и снова.
Таким образом была поставлена задача по реализации подсистемы
автоматизированного добавления новых атрибутов в данный сервис.
Суть задачи заключается в том, чтобы появилась возможность добавлять новые атрибуты и управлять их значениями через API приложения без ручной доработки исходного кода.
✅ Заключение
результаты.
• Был выполнен обзор решений реализации динамических атрибутов, в котором рассматривались подход “EAV”, подход с использованием Hstore и подход с использованием JSONB-документа и
JSON-схемы.
• Была спроектирована подсистема автоматизированного добавления новых атрибутов, основанная на валидации атрибутов с помощью JSON-схемы на стороне приложения и их хранения в виде
JSONB-документа в базе данных.
• Данная подсистема была реализована и протестирована. Было написано более 20 модульных и более 10 интеграционных тестов.
• Динамическими атрибутами были расширены существовавшие обработчики, которые включали CRUD для всех типов объектов,
поиск и массовые внесения номеров.
• Реализация попала в новую версию сервиса.
• Была написана документация, с которой ознакомились администраторы сервиса.
• Администраторы ЕБН, используя данную подсистему, добавили
более 70 атрибутов к четырем типам объектов.
• Значениями добавленных атрибутов были размечены более 10000
объектов сервиса.
Код работы находится в закрытом репозитории.



