ПЗ (1219668), страница 6

Файл №1219668 ПЗ (База знаний предприятия на основе технологий NoSOL) 6 страницаПЗ (1219668) страница 62020-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

curl_setopt($ch, CURLOPT_URL, 'http://localhost:5984/');

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_USERPWD, 'Admin:admin');//аутентификация

// загрузка страницы и выдача её браузеру

curl_exec($ch);

// завершение сеанса и освобождение ресурсов

curl_close($ch);

?>

Выполнив этот запрос и если соединение будет установлено получим соответствующий ответ от сервера.

Рассмотрим процесс создания базы данных. Для этого создаем переменную с именем базы данных, которую хотим создать:

$table = "monitoring";

После этого посылаем запрос PUT:

curl_setopt($ch, CURLOPT_URL,'http://127.0.0.1:5984/'.$table);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');//PUT

Выполнив запрос создастся база данных с соответствующим именем.

При создании объекта в базе данных ему присваивается уникальный ключ. Он генерируется автоматически, используя встроенную функцию. Поэтому когда мы хотим создать объект необходимо обращаться к функции генерирования ключа. Это не обязательное действие, но в целях грамотного контроля объектов и во избежание путаницы лучше использовать генератор ключа. Сделать это можно путем запроса к http://127.0.0.1:5984/_uuids методом GET.

Получив сгенерированный ключ, можем создать объект. Для этого в установке URL адреса 'http://127.0.0.1:5984/monitoring/. $generik_ID['_id'] ', указываем тип _id с параметром сгенерированного ключа и отправляем методом PUT.

Для заполнения объекта данными необходимо указывать ключ, а параметром CURLOPT_POSTFIELDS отправлять данные в формате JSON.

Для получения объекта указываем ключ и методом GET делаем запрос.

Для того чтобы сделать обновление документа необходимо помимо ключа указывать параметр _rev – ревизия. Он создается автоматически при создании документа, имеет уникальный ключ и служит для создания ревизий. Указываем ключ, ревизию и методом PUT обновляем данные.

Для удаления документа применяется аналогичная выше описанная процедура, но с методом DELETE.

Так же CouchDB позволяет хранить приложения, любые данные (PDF, изображения, музыку, видео и т.д.).

Рассмотрев взаимодействие php и curl с CouchDB. Можно приступить к реализации интеграции данных из MySQL в NoSQL. Сделать это можно двумя способами:

  1. написание модуля в программном комплексе с помощью средств QT;

  2. написание собственного web-приложения, для подключения к различным базам данных различных систем.

Рассмотрим сначала первый способ.

  1. Написание программного модуля средствами Qt

Принцип работы модуля: перевод запросов SQL в формат JSON и выполнение запроса на добавление данных в CouchDB.

Особенности модуля:

  • создание запросов SQL;

  • перевод запросов в формат JSON;

  • возможность создать JSON документ непосредственно из журналов мониторинга;

  • отображение созданного формата JSON, с возможностью редактирования.

Приступим к написанию модуля.

Запросы создаются из соображения, какие данные мы хотим интегрировать. Например, для переноса содержимого каталогов используем такой запрос:

select Dates_create.Date_create, PC.Name_user_PC, name_file, Type_files.Type_name, size_file, Domen_t.Domen, date_time_ch, Catalogs.Catalog_path

FROM `Files` , `Dates_create` , `Type_files` , `Domen_t` , `Catalogs` , `PC`

WHERE Files.Date_create_id = Dates_create.ID_date_create

AND Files.type_file_id = Type_files.ID_file

AND Files.name_worker_id = PC.ID_name_user_PC

AND Files.domen_id = Domen_t.ID_domen

AND Files.catalog_id = CAtalogs.ID_Catalog;

После запроса формируется таблица с данными. Эти данные необходимо преобразовать в JSON формат. Используя библиотеки QJsonObject и QJsonDocument, и предварительно разобрав SQL запрос на соответствующие переменные, переводим данные в формат JSON. Ниже представлен код для формирования нужного формата:

QJsonObject log_files;

log_files.insert("Date_create",date_create);

log_files.insert("name_file",name_f);

log_files.insert("type_file",type_f);

log_files.insert("size_file",size_f);

log_files.insert("domen",domen);

log_files.insert("date_time_use",date_time);

log_files.insert("catalog",catalog);

QJsonDocument logs_f;

logs_f.setObject(log_files);

ui->plainTextEdit->appendPlainText(logs_f.toJson());

Графический интерфейс модуля представлен на рисунке 13.

  1. Графический интерфейс модуля

На графическом интерфейсе видны дополнительные функции модуля.

Теперь рассмотрим способ второй, создание web-приложения.

  1. Написание web-приложения средствами PHP

Принцип работы приложения: подключение к различным базам данных систем, выполнение SQL запросов и перевод в формат JSON.

Особенности web-приложения:

  • настройка подключения к любым базам данных;

  • создание SQL запросов;

  • перевод SQL запросов в JSON;

  • добавление данных в CouchDB.

Дальнейший анализ и исследование позволит определиться с выбором метода для интеграции данных из различных систем в NoSQL базу данных CouchDB

Запросы пишутся, так же как и в модуле, из соображения того, какие данные необходимо занести в NoSQL БД.

Воспользуемся тем же запросом, который использовался при описании модуля. После выполнения запроса можно преобразовать его в форме таблицы, для удобного чтения.

Далее необходимо этот запрос преобразовать в JSON. Для этого воспользуемся функцией json_encode(), которая преобразует массив данных в формат JSON.

После сформированные данные в формате JSON с помощью cURL передаем в CouchDB для заполнения. Программный код запроса, преобразования и добавления данных в базу представлен ниже.

<?php

$connection = mysqli_connect("localhost","root","","monitoring") or die("Error " . mysqli_error($connection));

$sql = 'select Dates_create.Date_create, PC.Name_user_PC, name_file, Type_files.Type_name, size_file, Domen_t.Domen, date_time_ch, Catalogs.Catalog_path

FROM `Files` , `Dates_create` , `Type_files` , `Domen_t` , `Catalogs` , `PC`

WHERE Files.Date_create_id = Dates_create.ID_date_create

AND Files.type_file_id = Type_files.ID_file

AND Files.name_worker_id = PC.ID_name_user_PC

AND Files.domen_id = Domen_t.ID_domen

AND Files.catalog_id = CAtalogs.ID_Catalog;';

$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));

//create an array

$emparray[] = array();

while($row = $result->fetch_assoc())

{

$emparray[] = $row;

}

mysqli_close($connection);

$cur=json_encode($emparray);

$cur = substr($cur, 4);//приведение

$cur = substr($cur, 0, -1); //приведение

$begin="{\"logs_files\": {\"logs\": [";//дополнительные параметры для хранения JSON

$end = "]},\"TITLE\":\"ALL\"}"; // поле Title меняется в зависимости от запроса

$JSON_text=$begin.$cur.$end;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:5984/_uuids');

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(

'Content-type: application/json', 'Accept: */*'));

$response = curl_exec($ch);

$_response = json_decode($response, true);

$UUID = $_response['uuids'];

$generik_ID= array("_id" => $UUID[0]);

curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:5984/customers/'.$generik_ID['_id']);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); /* or PUT */

curl_setopt($ch, CURLOPT_POSTFIELDS, $JSON_text);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(

'Content-type: application/json', 'Accept: */*'));

curl_setopt($ch, CURLOPT_USERPWD, 'Admin:admin');

$response = curl_exec($ch);

curl_close($ch);

?>

Каждый из методов имеет свои плюсы и недостатки.

Отрицательные качества написания модулей:

  • разработка потребуется знания нескольких языков программирования;

  • потребуется достаточно много времени на реализацию;

  • требует больших вложений ресурсов.

Положительные качества написания модулей:

  • отображаемая информация, как правило, представлена в собранном виде, что облегчает создание запросов;

  • модули не зависимы друг от друга;

Отрицательные качества написания единого web-приложения:

  • все системы зависят от web-приложения;

Положительные качества написания модулей:

  • относительно не дорогая реализация;

  • единый доступ ко всем базам данных.

  1. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ РАЗРАБОТКИ БАЗЫ ЗНАНИЙ ПРЕДПРИЯТИЯ НА ОСНОВЕ ТЕХНОЛОГИИ NoSQL

В данном разделе представлено технико-экономическое обоснование разработки базы знаний предприятия на основе NoSQL.

  1. Обоснование целесообразности разработки проекта

Работа над данным проектом началась во время прохождения летней практики после окончания 3 курса в компании Дальаэропроект. В ходе прохождения данной практики была разработана система мониторинга действий пользователя. Функционал данной системы заключался в том, что во время работы запускался командный скрипт, который формировал список всех объектов файловой системы на компьютере пользователя. Далее протокол выполнения помещался в отдельный текстовый файл на сервере.

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

В рамках же данной ВКР была поставлена задача перевода информации из баз данных MySQL в базу знаний NoSQL. Реализация данной задачи велась в сотрудничестве с Дальневосточным центром системной и программной инженерии.

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

  1. Планирование комплекса работ по разработке базы знаний предприятия на основе технологии NoSQL

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

Процессы жизненного цикла программных средств, устанавливающих стадии разработки программных продуктов, приведены в таблице 4.1.

Таблица 4.1 – Комплекс работ по разработке проекта

Содержание работ

Исполнители

Длительность, дни

Загрузка

дни

%

1. Подготовка процесса разработки и анализ требований

Исследование и обоснование разработки

Постановка задачи

Программист

1

1

100

Сбор исходных данных

Программист

1

1

100

Анализ существующих методов решения задачи и программных средств

Программист

2

2

100

Обоснование принципиальной необходимости

Разработки

Программист

1

1

100

Определение и анализ

требований к проекту

Программист

2

2

100

Выбор технических и

программных средств реализации

Программист

1

1

100

Согласование и

утверждение технического

задания

Программист

1

1

100

Итого по этапу 1

Программист

9

9

100

Содержание работ

Исполнители

Длительность, дни

Загрузка

дни

%

2. Разработка проекта

Разработка и отладка скрипта

Программист

2

2

100

Настройка контроллера домена и групповых политик

Программист

1

1

100

Разработка и отладка программного модуля анализа действий пользователя

Программист

10

10

100

Тестирование

Программист

1

1

100

Доработка

Программист

1

1

100

Внедрение программного модуля в опытную эксплуатацию

Программист

1

1

100

Добавление функционала анализа изменения базы данных

Программист

4

4

100

Тестирование системы и введение в эксплуатацию

Программист

3

3

100

Проектирование структуры хранилища данных

Программист

3

3

100

Разработка программного модуля переноса данных в NoSQL

Программист

5

5

100

Итого по этапу 2

Программист

31

31

100

3. Оформление рабочей документации

Проведение экономических расчетов

Программист

2

2

100

Оформление пояснительной записки

Программист

4

4

100

Итого по этапу 3

Программист

6

6

100

Итого по проекту

Программист

46

46

100

  1. Расчет затрат на разработку проекта

Капитальные вложения, связанные с разработкой проекта, рассчитываются по формуле

Характеристики

Тип файла
Документ
Размер
1,41 Mb
Высшее учебное заведение

Список файлов ВКР

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее