В настоящее время объемы данных, обрабатываемые среднестатистическим web-сервисом, растут с огромной скоростью, а как следствие растет и сложность управления базами данных. Проблема также возникает в связи большим количеством различных систем управления баз данных, которые отличаются, и способом хранения данных, и языком запросов. Необходим единый интерфейс объединяющий различных систем управления баз данных в одно пространство.
Часто возникает необходимость агрегации данных из разных источников, при этом существующие системы поддерживают лишь операции внутри одного “семейства” систем управления баз данных. А что происходит, если необходимо объединить выборку, например из SQL и NoSQL базы данных? Готового решения в данный момент не существует. Также нередко необходимо получать статистику о данных находящихся в базе. Необходимо разработать универсальную систему агрегации данных из базы с возможностью фильтрации данных.
Часто для ускорения операций с базами данных, совершают переход на другую систему управления базами данных. Но в данном случае, необходимо перенести все существующие данные, сохраняя типизацию полей, структуру базы данных, а также сохранить возможность выполнения всех тех же самых запросов к данным (сумма, среднее арифметическое), при этом необходимо перенести данные, получив от пользователя минимум информации (адрес, логин, пароль).
Также важно предоставить визуальный интерфейс просмотра и редактирования базы данных, вне зависимости от типа ее организации, а так же предоставить возможность фильтрации.
Весь функционал должен быть включен в единую систем, обладающую web-интерфейсом.
Вложение | Размер |
---|---|
pechatnaya_rabota.doc | 766.5 КБ |
ВВЕДЕНИЕ
В настоящее время объемы данных, обрабатываемые среднестатистическим web-сервисом, растут с огромной скоростью, а как следствие растет и сложность управления базами данных. Проблема также возникает в связи большим количеством различных систем управления баз данных, которые отличаются, и способом хранения данных, и языком запросов. Необходим единый интерфейс объединяющий различных систем управления баз данных в одно пространство.
Часто возникает необходимость агрегации данных из разных источников, при этом существующие системы поддерживают лишь операции внутри одного “семейства” систем управления баз данных. А что происходит, если необходимо объединить выборку, например из SQL и NoSQL базы данных? Готового решения в данный момент не существует. Также нередко необходимо получать статистику о данных находящихся в базе. Необходимо разработать универсальную систему агрегации данных из базы с возможностью фильтрации данных.
Часто для ускорения операций с базами данных, совершают переход на другую систему управления базами данных. Но в данном случае, необходимо перенести все существующие данные, сохраняя типизацию полей, структуру базы данных, а также сохранить возможность выполнения всех тех же самых запросов к данным (сумма, среднее арифметическое), при этом необходимо перенести данные, получив от пользователя минимум информации (адрес, логин, пароль).
Также важно предоставить визуальный интерфейс просмотра и редактирования базы данных, вне зависимости от типа ее организации, а так же предоставить возможность фильтрации.
Весь функционал должен быть включен в единую систем, обладающую web-интерфейсом.
Цель: Разработать интерфейс, объединяющий различные систем управления базами данных в одно пространство.
Для выполнения поставленной цели нужно выполнить следующий список задач:
1. Разработать программное обеспечение позволяющее совершать перенос из одной системы управления баз данных в другую через web-интерфейс.
2. Разработать систему агрегации данных из источников с разной системой управления базами данных, сохраняя возможность получения различной статистики о данных, управление системой должно осуществляться через web-интерфейс.
3.Разработать систему визуального редактирования данных.
ОСНОВНАЯ ЧАСТЬ
1 Архитектура проекта
Важным этапом создания любой системы, является разработка архитектуры. Было принято решение использовать микросервисную архитектуру.
Микросервис – сервис, отвечающий за строго определенную задачу, осуществляющий обмен данными с другими сервисами по HTTP.
К преимуществам данной архитектуры можно отнести:
Для обмена данными между всеми микросервисами будем использовать формат JSON.
JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript.
На рисунке 1 – схема зависимостей микросервисов.
2 Перенос баз данных
Для начала необходимо определиться с данными, которые необходимо передать микросервису. В целом, для получения всех данных достаточно знать лишь логин, пароль и адрес базы данных, точно такие же данные нужны для вставки в другие систему управления базами данных.
Так как, приходиться обрабатывать большие объемы данных, было принято решение использовать в качестве языка программирования Go, так как он не только может обеспечить достаточную скорость работы, но и поддерживает простую интеграцию в веб приложения.
Общий алгоритм для любых типов баз данных:
1.Получаем данные от пользователя.
2.Формируем из данных введенных пользователем JSON-запрос к микросервису.
Все дальнейшие операции происходят на стороне микросервиса.
3.Проверяем JSON-запрос.
4.Создаем подключения к исходной и конечной базе данных.
5.Получаем структуру исходной базы данных.
6.Итерируемся по базе, формируя объект, соответствующий объекту конечной базы данных.
7.Осуществляем вставку в конечную базу данных.
8.По окончанию обхода базы, отправляем ответ основному серверу.
9.Далее основной сервер генерирует HTML,соответствующий ответу микросервиса.
На рисунке 2 представлена JSON Schema запроса к микросервису.
На рисунке 3 представлена JSON Schema ответа микросервиса.
На данный момент реализован перенос баз данных между следующими типами систем управления баз данных:
В дальнейшем этот список будет расширяться.
На рисунке 4 представлен пользовательский интерфейс переноса баз данных.
На рисунке 5 представлен пользовательский интерфейс результата.
3 Система агрегации данных
Данная система должна объединять различные источники в единую систему управления,а так же предоставлять возможности фильтрации.
Фильтрация возможна по следующим параметрам:
Для реализации этого микросервиса был выбран язык программирования Java и фреймворк Apache Struts2. Данная комбинация позволяет удобно подгружать данные для фильтрации через AJAX запросы. Так же это легко позволяет нам генерировать html.
AJAX (Asynchronous JavaScript and XML) - технология обращения к серверу без перезагрузки страницы.
Алгоритм работы:
1.Пользователь ввел данные баз данных, которые ему необходимо объединить.
2.Отправляем фоновый запрос на получение данных о таблицах (коллекциях).
3. Получаем данные, добавляем на страницу форму выбора таблиц (коллекций)
4.Делаем AJAX запрос для получения данных о полях таблицы (коллекции)
Рисунок 1.
Рисунок 2.
Рисунок 3.
Рисунок 4.
Рисунок 5.
5. Получаем данные, добавляем на страницу форму выбора полей и фильтру по значению.
6. Пользователь заполняет фильтры, так же выбирает операции, которые необходимо совершить с данными.
7. Создаем выборку на основе введенных пользователем фильтров.
На данный момент реализовано все, кроме фильтров по значению.
Интерфейс представлен на рисунках 6,7.
Сейчас поддерживается объединение данных из следующих типов систем управления базами данных:
4 Система редактирования
Для того что бы реализовать систему редактирования необходимо реализовать возможность следующих операций:
1. Сначала получим от пользователя данные для доступа к базе данных через AJAX запрос.
2. Затем подключаемся к базе данных, получаем данные о таблицах (коллекциях).
3. Добавляем к HTML форме возможность выбора таблицы (коллекции).
4. Пользователь выбирает таблицу (коллекцию), отправляет форму на сервер.
Полная форма запроса представлена на рисунке 8.
5.Отрисовываем первый 20 записей из базы данных. Интерфейс представлен на рисунке 9.
Для редактирования каждой кнопке edit присвоим id соответствующий номеру записи в выдаче.
Пользователь нажимает на edit, id кнопки отправляется на сервер. Генерируется HTML форма.
Пользователь редактирует данные, сохраняет изменения, форма представлена на рисунке 10.
Для добавления генерируем HTML форму, пользователь ее заполняет, вставляем данные. Форма представлена на рисунке 11.
Для удаления каждой кнопке delete присваиваем id, затем отправляем AJAX запрос, после успешного удаления из базы, удаляем строку при помощи JavaScript из таблицы.
Рисунок 6.
Рисунок 7.
Рисунок 8.
Рисунок 9.
Рисунок 10.
Рисунок 11.
ЗАКЛЮЧЕНИЕ
В заключении хочется сказать о текущем состоянии проекта и планах на его дальнейшее развитие. На данный момент реализован почти весь основной функционал системы объедения различных систем управления базами данных. Сейчас идет работа над разработкой функционала для удаления и редактирования данных связных таблиц (коллекций). В дальнейшем будет расширяться список поддерживаемых систем управления базами данных для переноса и агрегации, также в ближайшее время планируется реализовать фильтрацию для сложных структур данных, которые могут храниться в NoSQL базах данных.
СПИСОК ЛИТЕРАТУРЫ
-книжные источники
2. Карл Сегуин, The Little MongoDB Book. [текст].
3. Буди Курниаван, Struts 2 Design and Programming: A Tutorial. — 1-е изд.[текст]
-интернет источники
А теперь — мультфильм
Что общего у травы и собаки?
Самый главный и трудный вопрос
Белый лист
Прекрасное далёко