Тип работы:
Предмет:
Язык работы:


Реализация динамических атрибутов в сервисе хранения номеров

Работа №149224

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы34
Год сдачи2024
Стоимость4760 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
26
Не подходит работа?

Узнай цену на написание


1. Введение 4
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
объектов сервиса.
Код работы находится в закрытом репозитории.


[1] JSON-Schema.— URL: https://json-schema.org/ (online; ac¬cessed: 2024-01-03).
[2] Валидатор JSON-схемы для Go qri-io/jsonschema.— URL: https: //github.com/qri-io/jsonschema (online; accessed: 2024-01-03).
[3] Валидатор JSON-схемы для Go santhosh-tekuri/jsonschema.— URL: https://github.com/santhosh-tekuri/jsonschema (online; accessed: 2024-01-03).
[4] Валидатор JSON-схемы для Go xeipuuv/gojsonschema. — URL: https://github.com/xeipuuv/gojsonschema (online; accessed: 2024-01-03).
[5] Валидатор JSON-схемы для PostgreSQL pg_jsonschema. — URL: https://github.com/supabase/pg_jsonschema (online; accessed: 2024-01-03).
[6] Валидатор JSON-схемы для PostgreSQL postgres-json-schema. — URL: https://github.com/gavinwahl/postgres-json-schema (on¬line; accessed: 2024-01-03).
[7] Документация для JSON и JSONB в PostgreSQL. — URL: https:// www.postgresql.org/docs/current/datatype-json.html (online; accessed: 2024-01-03).
[8] Документация для hstore в PostgreSQL.— URL: https:// www.postgresql.org/docs/current/hstore.html (online; accessed: 2024-01-03).
[9] Замеры производительности и тесты корректности трех валидаторов JSON-схемы для Go.— URL: https://github.com/ swaggest/go-json-schema-bench (online; accessed: 2024-01-03).
[10] Официальный набор тестов для проверки корректности валидатора JSON-схемы.— URL: https://github.com/ json-schema-org/JSON-Schema-Test-Suite (online; accessed: 2024-01-03).
[11] Построение EAV схемы данных с отдельными таблицами под каждый тип данных.— P. 481-482.— URL: https: //www.researchgate.net/publication/12720878_Organization_ of_Heterogeneous_Scientific_Data_Using_the_EAVCR_ Representation (online; accessed: 2024-01-03).
[12] Список реализаций валидаторов JSON-схемы для Go. — URL: https://json-schema.org/implementations#validators-go (on-line; accessed: 2024-01-03).
[13] Статья об эффективном использовании EAV подхода в медицине.— P. 1-3.— URL: https://www.mdpi.com/2078-2489/9/ 1/2#B1-information-09-00002 (online; accessed: 2024-01-03).


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ