Проектирование системы обработки и хранения данных в условиях высокой нагрузки на примере компании ООО "Яндекс" - Программирование, компьютеры и кибернетика дипломная работа
![](/file/c17a668ccb7333e986a5a.jpg)
Главная
Программирование, компьютеры и кибернетика
Проектирование системы обработки и хранения данных в условиях высокой нагрузки на примере компании ООО "Яндекс"
Рассмотрение свойств реляционных баз данных. Анализ и виды деятельности ООО "Яндекс". Характеристика программы Adobe Dreamweaver. CoffeeScript как компилируемый язык для написания клиентских сценариев. Особенности взаимодействия интерфейса с сервером.
посмотреть текст работы
скачать работу можно здесь
полная информация о работе
весь список подобных работ
Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1 . Актуальность и необходимость средств обработки данных в высоко нагруженных проектах
1.1 Обработка данных, способы, решения
Необходимость хранить и обрабатывать данные присутствует почти во всех сферах человеческой деятельности и поэтому решением это проблемы люди занимаются уже с древнейших времён, а в наш век информационных технологий доступ к необходимым данным является ключевым фактором. С появлением сети интернет человечество пережило настоящий бум информации, огромной количество серверов разбросанных по всей земле позволяют обрабатывать триллионы массивов данных в считанные секунды, принимая и отдавая информацию исходя из выходящих запросов.
Как правило, для хранения данных используются специальные форматы, которые позволяют структурировать информацию и сохранить её на информационном носителе. Такой подход позволяет запрограммировать логику агрегирования данных и построить динамическую систему.
В наше время особое распространение получила так называемая «реляционная» модель хранения данных - логическая модель данных, прикладная теория построения баз данных, которая является приложением к задачам обработки данных таких разделов математики как теории множеств и логика первого порядка.
На реляционной модели данных строятся реляционные базы данных.
Реляционная модель данных включает следующие компоненты
а) структурный аспект (составляющая) -- данные в базе данных представляют собой набор отношений;
б) аспект (составляющая) целостности -- отношения (таблицы) отвечают определенным условиям целостности. РМД поддерживает декларативные ограничения целостности уровня домена (типа данных), уровня отношения и уровня базы данных;
в) аспект (составляющая) обработки (манипулирования) -- РМД поддерживает операторы манипулирования отношениями (реляционная алгебра, реляционное исчисление).
Кроме того, в состав реляционной модели данных включают теорию нормализации.
Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями, и не могут быть ни «плоскими», ни «неплоскими».
Для лучшего понимания РМД следует отметить три важных обстоятельства
а) модель является логической, то есть отношения являются логическими (абстрактными), а не физическими (хранимыми) структурами;
б) для реляционных баз данных верен информационный принцип: всё информационное наполнение базы данных представлено одним и только одним способом, а именно -- явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;
в) наличие реляционной алгебры позволяет реализовать декларативное программирование и декларативное описание ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.
Основные свойства реляционных баз данных - это
а) каждый элемент таблицы -- один элемент данных;
б) все ячейки в столбце таблицы однородные, то есть все элементы в столбце имеют одинаковый тип (числовой, символьный и т. д.);
в) каждый столбец имеет уникальное имя;
г) одинаковые строки в таблице отсутствуют;
д) порядок следования строк и столбцов может быть произвольным.
Рисунок 1 - Пример реляционной базы данных
Для возможности динамически запрашивать данные из хранилища был придуман специальный язык запросов SQL (Structured Query Language). Язык SQL представляет собой совокупность
SQL не привязан ни к какой конкретной системе управления данными (СУБД), и поэтому один и тот же запрос с большой вероятностью будет одинаково обработан множеством различных систем.
Преимуществом такого, подходя хранения данных, является его прозрачность и гибкость, даже в случае больших масштабов обработки данных структура СУБД остаётся простой и понятной, однако обработка сложных запросов, как правило, требует значительных вычислительных ресурсов и может выполняться заметное время.
Альтернативой реляционным СУБД являются файло-ориентированные хранилища, например XML. XML -- текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML). В отличие от реляционных СУБД, которые используют абстракцию таблиц, текстовые форматы можно представить как множество вложенных списков (рисунок 2).
Рисунок 2 - Представление текстового формата HTML в виде дерева
Главным преимуществом открытых текстовых форматов является их полная независимость от читающей программы (парсера), поэтом такие форматы особенно часто используют в качестве промежуточных между другими хранилищами.
Подобно SQL в реляционных СУБД, для множества файловых хранилищ существуют свои языки запросов, например для XML - это XPath.
1.2 Текстовый формат хранения данных JSON
JSON (JavaScript Object Notation) - объектная нотация JavaScript, текстовый формат хранения данных основанный на лексемной представлении объектов в ЯВУ JavaScript. В качестве основной структуры используются понятия массива (рисунок 3) и хеш-таблицы (рисунок 4).
Рисунок 3 - Представление массива в JSON
Рисунок 4 - Представление хеш-таблицы в JSON
Массивами называются упорядоченные наборы данных начинающихся с нуля, элементами массива могут быть другие массивы, хеш-таблицы или любые элементарные типы данных (строки, числа и логические значения).
Хеш-таблицей называется неупорядоченный набор данных, типа ключ: значение. В отличие от массивов, где ключом по сути является целое неотрицательное число, в хеш-таблицах ключом может быть любой строчное выражение, тем самым давая возможность прямого обращения к ячейки данных. Формат JSON является нативным для языка JavaScript, т.е. он может быть преобразован сразу с помощью вызова интерпретатора JavaScript или вызова специальной команды eval, однако, данный формат является независимым от средств разработки и может использоваться в других языках.
Главным преимуществом JSON является его компактность и возможность «сверхбыстрого» использования в совокупности с JavaScript, т.к. данные могут без дополнительных обработок преобразованы в соответствующую сущность в оперативной памяти и тем самым позволяя работать с данными, как с простым объектом JavaScript, а т.к. доступ к данным в оперативной памяти в десятки сотен раз быстрее чем доступ к файлу на жёстком диске, то мы получаем возможность использования почти мгновенных механизмов обработки данных.
1.3 Кеширование данных в оперативной памяти , техника частичного агрегирование
Кеширование данных - это способ оптимизации работы БД, который не является новым и уже много лет используется везде, где нужна скорость и надёжность. Основной принцип такого подхода заключается в том, что часто-используемые данные не удаляются из памяти компьютера после успешного завершения запроса, а сохраняются для дальнейшего использования, тем самым предотвращая необходимость вторичного поиска данных в хранилище. Использование такого подхода позволяет в сотни раз увеличить производительность серверов баз данных, а поскольку общение с БД, как правило, является самым «дорогим», то и всего приложения в целом. На базе такого подходя реализованы библиотеки MemCache и MemCached, которые успешно используются в таких сверх нагруженных проектах, как Facebook или Википедия.
Ограничивающим фактором использования такого подхода является быстрая конечность оперативной памяти, которая в отличии от жёсткого диска, который может хранить несколько терабайт данных, позволяют хранить лишь несколько десятков гигабайт информации. Проблема решается физическим увеличением памяти за счёт добавления новых компьютеров, а также за счёт системы «временного» кеширования. Т.е. данные закешированные в памяти хранятся не вечно, а лишь в течение некоторого времени и по истечению которого они удаляются и освобождают память.
Недостатком кеширования запросов, является и то, что кешированию подвержены не исходные данные, а некоторый результат запроса, что может привести к эффекту «протухания» данных, когда информация хранимая в кеше не соответствует действительности. Для решения данной проблемы необходимо реализовывать дополнительный интерфейс синхронизации, однако без должного инструментария данная задача может оказаться не из лёгких. Однако, в случае использования совокупности: JSON и JavaScript данная задача может быть легко решена, в виду близости этих двух инструментов.
Ещё один эффективный способ оптимизации обработки данных основывается на частично распределение нагрузки на компьютеры клиентов (компьютеры осуществляющие работу с БД). При таком подходе сервер отдаёт не конечный результат запроса, а некоторое не агрегированное множество, которое затем окончательно обрабатывается средствами пользовательского компьютера, а также все последующие запросы имеют шанс быть найдены в локальной БД и тем самым значительно уменьшить количество запросов к серверу.
Описанные выше способы оптимизации и хранения данных в значительной степени (до тысячи раз) позволяют увеличить конечную скорость работы приложения и тем самым уменьшают финансовые затраты на поддержку проекта.
Выше были рассмотрены особенности работы с данными в высоко нагруженном окружении, принципы агрегации, которые в значительной степени позволяют снизить нагрузку на обслуживающий сервер.
Компания ООО «Яндекс» является лидером в ИТ индустрии на Российском рынке и в некоторых странах СНГ, а также является 5-й по популярности поисковой системе в мире. Ежедневно компания принимает и обслуживает несколько десятков миллиардов запросов по всему миру и для этого необходима поддержка десятков тысяч обслуживающих серверов.
Проблема поддержки и обслуживания высоко-нагруженных проектов является одна из самых затратных в сфере ИТ бизнеса, следовательно при разработке нового продукта его архитектура должна отвечать следующим факторам:
Мне была поставлена задача о пересоздании аналитического отчёта Яндекс. Метрики «Карта путей» с целью оптимизации его логики. Использование старой версии отчёта было затруднительным для владельцев крупных сайтов, т.к. загрузка и обработка отчёта требовала значительного времени (10-15 секунд) и создавала сильную нагрузку серверу.
Для решения данной проблемы мною была предложена модель вторичной агрегации данных на клиенте, т.е. сервер единожды отдавал пакет данных, который затем отображался по шаблону на клиенте, и все последующие запросы обрабатывались бы локальной СУБД.
Мною были рассмотрены основные игроки на рынке такой продукции, и был сделан вывод, что имеющиеся продукты слишком ограничены в функционале и сложны в модификациях, поэтому я принял решение о разработке собственной динамической структуры обработки данных.
В качестве языка разработки был выбран JavaScript, ввиду его всеобщей распространённости и высокой динамичности, позволяющий ему работать на любых устройствах.
Ключевым фактором при разработке, была также скорость «живой» работы на клиенте, конечный продукт должен был быстро работать, как на домашних компьютерах, так и на телефонах и планшетах.
Дополнительным условием при разработке новой версии продукта, была возможность добавления динамических подзапросов, т.е. возможность построения множества запросов различной степени детализации, основываясь на первичных данных, но при этом архитектура приложения должна была оставаться максимально прозрачной и легко модифицируемой.
Ожидаемым увеличением скорости работы отчёта при использовании новой схемы, после проведения анализов, примерно в 2-3 раза.
3 . Инструментальные средства разработки
Интегрированные среды разработки (IDE) - являются важнейшим инструментом в процессе разработки приложений, т.к. помимо текстового редактора в включат в себя целый спектр подпрограмм для решения следующего ряда задач
Программ реализующих данных функционал довольно много, но я рассмотрю три: Adobe Dreamweaver, Aptana Studio, Microsoft Visual Studio.
Рассмотрим каждую из предложенных IDE.
Широкопрофильные кроссплатформенный (Windows, Mac) коммерческий WYSIWYG редактор от компании Adobe. На сегодняшний день является одним из самых передовых и качественных сред разработки веб приложения, содержит в себе инструментарии для работы с языками
Рисунок 6 - Окно приветствия Adobe Dreamweaver CS6
Dreamweaver имеет хорошую интеграцию со многие популярными фреймворками, как например jQuery для JavaScript или Adobe Spry. Также в набор инструментов входят средства для отладки под мобильные устройства, а интегрированный браузерный движок WebKit позволяет не выходя из программы видеть конечный результат работы. IDE хорошо интегрирована с остальными продуктами компании Adobe.
Adobe Dreamweaver является платным продуктом и по состоянию на февраль 2012, кроме варианта оплатить полностью всю стоимость (Full - $399.00), обновить ($119.00), существует оплата через подписку (помесячно - $29.00 в месяц, за год - из расчёта $19.00 в месяц).
Бесплатная кроссплатформенная интегрированная среда разработки с открытым исходном кодом для написания веб-приложений. Поддерживает динамическое автодополнение кода для некоторых языков (JS, CSS, HTML).
Помимо перечисленных языков с помощью специальных обновлений позволяет вести разработку в таких языках, как: Python или Ruby.
Рисунок 7 - Рабочий интерфейс Aptana Studio
Линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, также веб-приложения и веб-сервисы.
Рисунок 8 - Рабочий интерфейс MS Visual Studio
IDE хорошо интегрирована с технологией .NET и содержит компиляторы для всех языков поддерживающих эту платформу. Для разработки веб-приложения имеются интегрированные паттерновые решения, такие как WebForms или MVC. Динамическая система автодополнений кода IntelliSense позволяет писать быстрый и эффективный код.
Для студентов имеется возможность бесплатного использования данного программного продукта.
Непосредственный процесс разработки можно разделить на 2 части, а именно: фронтенд и бекэнд.
Таблица 1 - Процессы разработки в WEB
а) дизайн проекта - один из ключевых пунктов для большинства веб-проектов, ввиду своей абстрактности не привязан ни к какой из ИТ технологий;
б) вёрстка - вёрсткой в WEB называют процесс преобразования дизайнерского макета в специальную форму, как правило, используются языки разметки из множества XML/SGML (чаще всего (X)HTML) и язык описания стилей CSS;
в) разработка клиентского интерфейса - это совокупность вёрстки и сложных, не стандартных интерфейсов, очень часто данную ветку путают с вёрсткой, однако - это мнение ошибочно, т.к. большую часть времени тратиться на программирование, а никак не на вёрстку;
г) разработка базы данных - разработка системы хранения данных, в большинстве случаев используются реляционные СУБД, такие как MySQL, Oracle и MS SQL Server, однако в последнее время всё чаще используются документно-ориентированные СУБД, такие как MongoDB.
д) разработка серверной части - процесс написания серверных приложений по обработке и хранении информации. В отличие от предыдущих веток содержит огромное количество альтернативных технологий, таких как: C#, Perl, PHP, Java, Python, JavaScript и т.д.;
е) системное администрирование - настройка и поддержка серверов.
JavaScript - стандартный язык для большинства браузеров, создавался как простой скриптовый язык для элементарных операций с веб-документом, в качестве замены очень мощному, но тяжёлому механизму Java-апплетов. Со временем развился в полностью самостоятельный язык и сейчас активно используется «вне» браузера.
Т.к. интерпретатор языка по умолчанию встроен в большинство браузеров, то нет необходимости в установки дополнительного ПО.
Результат выполнения кода может отличаться в разных браузерах, т.к. отличаются сами интерпретаторы.
Низкая скорость работы, относительно компилируемых языков, т.к. JavaScript - интерпретируется (только на стороне клиента).
Возможность использования одного языка, как на сервере, так и на клиенте.
Отсутствуют или сильно ограничены интерфейсы для доступа к файловой системе.
В явном виде нет механизма потоков.
CoffeeScript - компилируемый язык для написания клиентских сценариев (компилируется в JS), имеет синтаксис схожий с языками Ruby или Python, используется как правило с платформой RubyOnRails, фактически - это JavaScript. Dart - разрабатываемый компанией Google новый язык для написания клиентских сценариев, по идеологии напоминает Java, но создавался специально для использования в браузере, на данный момент находится в бета-тестировании, но по заявлениям разработчикам, язык призван стать заменой для JavaScript. Flash - универсальная кроссбраузерная платформа и язык (ActionScript) для мультимедии, для оживления веба красочной анимацией, аудио и видео. В отличие от JavaScript, разработчик может быть твёрдо уверен, что его код будет работать как надо, т.к. исходный код Flash сначала компилируется в специальный байт-код, а затем интерпретируется специальной виртуальной машиной на компьютере клиента.
Мощные средства для создания сетевых соединений (сокеты).
Для работы необходимо поставить специальную виртуальную машину.
Объекты для работы с мультимедиа: изображениями, аудио, видео.
Отдельный контейнер. Например, нельзя выделить участок текста, частично находящегося в контейнере Flash. Не может напрямую взаимодействовать с документом.
Внутреннее хранилище объектов, которые не посылаются на сервер при каждом запросе.
Удобные графические средства разработки для Flash.
Не работает на некоторых мобильных устройствах.
Ещё несколько лет назад при сравнении Flash c JavaScript можно было чётко прочертить грань, где и как использовать эти технологии: Flash в большинстве случаев использовался там, где была нужна мощная работа с графикой (например игры), возможность потокового воспроизведение видео и аудио в самом браузере и мощные средства для создания сетевых соединений, в тоже время, т.к. Flash - не общается с браузером на «ты», подобно, как это делает JavaScript, и это рождало множество проблем, тогда и приходил на помощь JavaScript. Однако в связи со стремительным развитием, как самого языка, так и браузеров, современный клиентский JavaScript в 90% случаев может полностью заменить Flash.
Silverlight - технология «клон» Flash от компании Microsoft и ввиду схожести реализации наследует все плюсы и минусы Flash.
ActiveX - технология компании Microsoft, даёт мощный интерфейс для взаимодействия с компьютером пользователя (прямой доступ к файловой системе и т.д.), однако реализация существует только в браузерах InternetExplorer и только под операционной системой Windows, что делает использование затруднительным.
Java - самый популярный язык в мире, взаимодействует с браузером через механизм апплетов, поддерживается большинством браузеров и работает почти в любой операционной системе, однако «тяжесть» и сложность разработки интерфейсов привело к тому, что в контексте «клиентского» кода язык почти не используется.
Вывод: из представленных выше средств конкуренты на данный момент только JavaScript и Flash, однако в последнее время Flash стремительно сдаёт позиции в пользу JS. Возможно, появление языка Dart сможет изменить ситуацию на рынке клиентских языков.
4.4 Взаимодействие интерфейса с сервером
В классической схеме работы любого WEB-приложения лежит один и тот же подход: пользователь задаёт вопрос, а сервер на него отвечает.
Рисунок 9 - Последовательная схема «клиент-сервер»
Давайте подробно рассмотрим классическую модель такого взаимодействия: пользователь дождался загрузки страницы, затем выполняет какие-либо действия и отправляет некоторые данные на сервер, где они обрабатываются, а после происходит полная перезагрузка страницы с целью показать пользователю результат его запроса.
Данная модель не может похвастаться ни интерактивностью, ни скоростью работы. Однако есть способы модернизации: если контекстом исполнения будет не весь документ, а только его часть, т.е. изменяется только то, что должно измениться, а статичная информация остаётся неизменной, то это может существенно ускорить работу и добавить интерактивности нашему интерфейсу.
Для реализации данного подхода можно использовать различные технологии, но на сегодняшний день самой популярной технологией является AJAX, которая основывается на JavaScript и способности браузеров отправлять асинхронные запросы серверу.
WebSQL . В HTML 5 есть много новых возможностей, которые позволяют web-разработчикам создавать более мощные и насыщенные приложения. К этим возможностям относятся и новые способы хранения данных на клиенте, такие как WebStorage (или же DOM Storage) и WebSQL database. При этом если WebStorage ориентирован на хранение пар ключ-значение, то в случае WebSQL у нас есть полноценный sqlite (во всех текущих реализациях применяется именно этот движок баз данных, что является проблемой при стандартизации).
Т.е. мы можем хранить данные на клиенте, а также получаем возможность делать динамические выборки с помощью языка SQL. К несчастью, эта технология относительно новая и её поддержкой могут похвастаться лишь новые браузеры. Ситуацию можно немного исправить если в разработке применять плагин к браузерам Gears от Google, однако такой подход породит ряд новых проблем, таких например как: данный плагин нужно скачивать и ставить пользователям, он не реализован во всех браузерах и его разработка остановлена в пользу стандартов HTML5.
Вывод: WebSQL может стать отличным решением, если отбросить поддержку старых браузеров, но всё же отсутствие поддержки в старых браузерах может затруднить разработку.
WebStorage -- универсальное хранилище данных на компьютере клиента, оно позволяет хранить данные в виде пар ключ-значение в объёме до 5-ти мегабайт, плюс прибавим к этому неплохую поддержку браузерами (в старых версиях браузеров можно эмулировать работу через Flash/Silverlight или Gears). Данное решение можно использовать для хранения информации, однако отсутствие нативного API для сложных выборок требует использования сторонних библиотек.
Вывод: в совокупности с дополнительной библиотекой может стать универсальным решением.
Cookies -- самый старый способ хранения данных на клиенте. Принцип схож с WebStorage, однако сильное ограничение на объём данных делает эту технологию актуальной только для очень маленьких объёмов данных.
{name: "Андрей ", nick: "Kobezzza"},
В данном случае у нас имеется массив, элементы которого являются хешом (объекты), т.е. если представить данный вариант хранения данных на графической схеме, то наиболее удачный вариант -- это одномерная таблица.
Давайте теперь рассмотрим другую комбинацию представления данных:
"Kobezzza": {name: "Андрей ", sex: "male"},
"Vantuz": {name: "Сергей", sex: "male"},
"Pupkin": {name: "Вася", sex: "male"}
Т.е. мы имеем хеш-таблицу, элементы которой, также являются хешом. Её графическое представление -- это двумерная таблица вида:
Таблица 5 -Таблица с первичным ключом
Немного усложним предыдущий пример, и сделаем следующее:
{id: 1, name: "Kobezzza", nick: "Kobezzza"},
{id: 2, name: "Сергей", nick: "Vantuz"},
{id: 3, name: "Вася", nick: "Pupkin"}
Т.е. у нас получилось следующее: хеш-таблица, значением первого ключа является массивы хешей, а значением второго ключа хеш-хешей, причём значения этих ключей косвенно связанны друг с другом по средствам уникального числового идентификатора. Изображение данной структуры в виде одной таблицы может выглядеть не очевидно и запутанно, поэтому давай разделим их на 2 таблицы:
В данном примере id можно абстрактно представить, как некий аналог primary key. Таблица Friends имеет отличную от Details структуру, т.к. нам будет удобно использовать методы массивов в JS для сортировки данных и т.д. Т.е. у нас есть главная и дочерняя таблица с установленным отношением «один к одному».
Оперируя данными абстракциями, мы приводим нашу модель данных к реляционную виду.
5 . Объектно-ориентированная СУБД на JavaScript
5.1 Фреймворки для работы с данными JS
Для удобного манипулирования с данными в JS существует довольно много различных фреймворков, таких как: JSLINQ, jLinq, JSINQ и т.д.
Все они эксплуатируют одну и ту же реляционную модель, о которой говорилось выше и использует формат JSON для хранения данных, однако интерфейсы для работы с ними у них существенно отличаются, например: JSLINQ предоставляют разработчику интерфейс в виде некоторого множества методов, а JSINQ реализует интерпретатор языка, чем то похожего на SQL.
Большинство таких фреймворков позиционирует себя как универсальные средства хранения информации, т.е. как на стороне сервера, так и на стороне клиента.
На данный момент (актуальная версия 3.7.2) фреймворк реализует полный спектр методов управления данных, а также обзавёлся целым арсеналом методов по работе с шаблонами (компиляция, поддержка рекурсии, реализация БЭМ подхода), а находящаяся в бета стадии версия 4.0 будет включать в себя интерпретатор языка SQL и множество новых инструментов.
В сравнение с другими решениями на JS Collection имеет ряд преимуществ:
б) гораздо более мощное API, позволяющее делать перекрёстные запросы и группировки, а также использование статистических функций;
в) независимость структуры данных: Collection реализует интерфейсы для любой нативной JS структуры данных;
д) движок контекста следит за целостностью транзакций.
а) коллекция - любое JSON подобное дерево, содержащее в себе информацию;
б) контекст - указатель на локальную область коллекции;
в) фильтр - специальная функция, возвращающая логическое значение для каждого элемента коллекции;
г) шаблон - функция, однозначно определяющая строчное представление для каждого элемента коллекции;
д) шаблонные параметры - набор дополнительных параметров шаблонизации;
е) парсер - специальная функция для внесения изменений в результирующую строку шаблона.
Collection может хранить данные любым из возможных для этого способов, а также имеет собственный интерфейс для работы с Local Storage.
На основе созданной СУБД мною была создана новая версия популярного отчёта Яндекс.Метрика «Карта путей».
Новая версия стала работать в 3 раза быстрее, а конечный код продукта сократился в 5 раз. Этот пример показал эффективность и рациональность подхода использования частичной агрегации данный на компьютере клиента.
На основе созданной СУБД можно создавать приложения любого уровня сложности, где важна скорость ответа данных.
6 . Экономико-организационная часть
6.1 Оборудование, необходимое для работы над созданием данного программного продукта
Таблица 8 - Затраты. Для разработки данного программного продукта планируется использование следующего оборудования:
Стоимость единицы оборудования, руб.
Системный блок (процессор Intel Core i7)
Разработка технического задания: - описание назначения и целей программного продукта; - определение требований к системе, к составу и содержанию работ; - состав и содержание работ по созданию системы; - оценка оптимальности метода реализации алгоритма.
Разработка алгоритма: - разработка процессной модели системы; - разработка схемы алгоритма; - разработка описания алгоритма.
Разработка программы: - разработка программного ядра; - разработка итеративных методов; - создание программного модуля.
Тестирование и отладка программы: - автономная отладка; - комплексная отладка.
Разработка программной документации: - составление программной документации; - корректировка программной документации в процессе разработки и наладки программы; - оформление программной документации.
где t i - затраты труда на выполнение i -го этапа проекта.
Трудоемкость по этапам проектирования была оценена на основе известной трудоемкости разработки аналогичных программ.
Q p - затраты труда на выполнение проекта (разработка и внедрение программы), F - фонд рабочего времени.
Величина фонда рабочего времени определяется соотношением (3):
где Т - время выполнения проекта в месяцах, F M - фонд времени в текущем месяце, который рассчитывается из учета общего числа дней в году, числа выходных и праздничных дней (4):
где t p - продолжительность рабочего дня, D K - общее число дней в году, D B П - число выходных и праздничных дней в году.
Подставляя результат вычислений формулы 4 в соотношение 3, и, далее, в соотношение 2, округляют результат до большего целого, который и показывает среднее число необходимых исполнителей проекта (количество исполнителей без их качественного разделения).
В соответствии с требованиями кодекса законов о труде РФ (КЗоТ) режим работы фирмы-исполнителя, которая будет заниматься разработкой данного программного продукта, устанавливается с 9.00 до 18.00, пять дней в неделю, обеденный перерыв с 13.00 до 14.00. Выходные дни - суббота, воскресенье и все праздничные дни, указанные в КЗоТ. Работа будет проводиться в течение двух месяцев - с 1 апреля по 31 мая включительно.
Округляем значение N и получаем, что в среднем необходимое количество исполнителей - 2 человека.
Итак, персонал, который будет задействованный в разработке данного программного продукта, состоит из
6 . 3 Линейный график - график ОКР по созданию новой программной продукции
Линейный график составляется н
Проектирование системы обработки и хранения данных в условиях высокой нагрузки на примере компании ООО "Яндекс" дипломная работа. Программирование, компьютеры и кибернетика.
Клише Эссе Обществознание Егэ 2022
Контрольная работа по теме Инфляция и конкуренция
Реферат: Організація грошового обігу
Курсовая работа по теме Определение цеховой себестоимости изготовления детали 'Планка'
Курсовая работа: Право промислової власності
Международные Железнодорожные Перевозки Курсовая
Реферат по теме Банковская система Республики Беларусь
Врачи Философы Реферат По Философии
Ранения Сердца Реферат Хирургия
Курсовая работа по теме Повышение эффективности производства на компании ТНК путем ввода новых скважин
Эссе Обновленное Образование В Действии
Реферат по теме Типы темпераментов, их психологическая характеристика
Доклад: Психотерапия
Реферат Гимнастика Акробатические Упражнения
Реферат: Scarlet Letter Vs Crucible Essay Research Paper
Скачать Собрание Сочинений Стивена Хокинга Magnet Torrent
Доклад: Страдание как аспект проблемы смерти
Государственная Гражданская Служба Субъектов Рф Курсовая
Контрольная Работа По Разделу Духовная Сфера
Контрольная Работа По Математике 6 Пропорции
Аудит денежных средств на примере предприятия ЗАО "Торговый Дом "ЦентрОбувь" - Бухгалтерский учет и аудит курсовая работа
Современное налоговое право - Государство и право контрольная работа
Договор оказания медицинских услуг - Государство и право курсовая работа