Создание КИС МТО

55

СОДЕРЖАНИЕ

Введение стр.4

Глава 1. стр.6

1.1 Цель и назначение разработанного сайта стр.6

1.2. Целевая аудитория. стр.6

1.3. Рассмотрение существующих технологий построения порталов. стр.7

1.4. Заключение: стр.18

Глава 2. стр.19

2.1. Сравнение php и ASP.NET стр.19

2.2. Сравнение MySQL с другими СУБД стр.27

2.3. Заключение: стр.36

Глава 3. стр.37

3.1 Состав страниц стр.37

3.2. Состав базы данных. стр.42

3.3. Таблицы стр.44

Заключение стр.61

Список использованных источников

ВВЕДЕНИЕ

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

Все более полно проявляются проблемы нахождения информации, и возможности её использования. В связи с этой проблемой возникла идея, создать КИС, ведь единое информационное пространство позволит обеспечить доступ всех людей сообщества к нужной информации и избежать разрозненности и возможно противоречивости общих сведений.

Использование моей КИС"МТО" дает много преимуществ в поисках разных пользователей заинтересованных быстро найти ту или иную информацию по работе, а так же заказать нужный товар со склада, если такой имеется.

Целью дипломной работы является исследование предметной области и разработка КИС, которая использует несколько баз данных, содержащих информацию о наличии товара на складе, ходе ремонта компьютерной техники и данных о персонале. Сбор всей нужной, но разрозненной информации в одну БД.

Для этого поставим перед собой следующие задачи:

  • Провести сравнительный анализ существующих СУБД, с целью дальнейшей реализации на их основе базы данных;
  • Провести сравнительный анализ языков разработки Web-приложений;
  • Провести сравнительный анализ Web-серверов;
  • Провести анализ и выбор способа доступа к базе данных;
  • Разработать и реализовать базу данных работников разных отделов;
  • Разработать и реализовать базу данных склада;
  • Разработать и реализовать базу данных отдела МТО;
  • Наполнить разработанные базы данных материалами;
  • Перенести разработанные базы данных на СУБД, прикреплённую к Web-серверу;
  • Обеспечить доступ к базам данных во внутренней сети ММТП.

Кроме того, достижение указанной цели предполагает решение практических задач:

  • проектирование баз данных;
  • разработка КИС, использующего базу данных.

При написании дипломной работы были использованы следующие методы исследования: табличный, графический, а также статистические методы. При разработке программного обеспечения использовались методы построения модели данных на базе программного продукта Computer Associates ERwin 4.0, технологии реляционных баз данных, а также методы функционального подхода к проектированию и реализации программных модулей.

Исходными данными в задаче являются:

  • Накопленные данные по складу, по отделу МТО, кадровые данные.
  • Информация о существующих технологических разработки баз данных и обеспечения доступа к ним с помощью сети Интернет.
  • Руководства и справочники по программированию на языке PHP и работе с системой управления базами данных MySQL.

Глава 1.

1.1. Цель и назначение разработанного сайта.

В этой дипломной работе создана КИС "МТО". Данная КИС разработана только для внутреннего использования ММТП.

Цель КИС - предоставление данных по складу, по отделу МТО, кадровые данные, необходимые пользователям.

Задача КИС - оптимально быстро, удобно и грамотно предоставить информацию для пользователя. Информация, ссылки должны быть представлены в удобном для пользователя виде.

В данной дипломной работе можно узнать:

- информацию о наличии товара на складе;

- справочный список служащих в ТП: (ФИО, телефонные номера, должности);

- информацию о внутреннем ремонте компьютерной техники;

- информацию о ремонте компьютерной техники отправленной по гарантии;

- и другую информацию.

1.2. Целевая аудитория.

Одним из наиболее важных информационных ресурсов является Internet, в Интернете каждый человек может найти информацию, удовлетворяющую его запросам.

Информация в данной КИС предназначена, только для внутреннего использования. Все служащие могут получить электронную версию информации по какому-либо внутреннему вопросу связанному с отделом МТО. Аудитория КИС не очень разнообразна, т.к информация находиться на внутреннем сервере и может быть интересна в основном только самим служащим т.е. людям ищущим информацию по специализированному профилю.

1.3. Рассмотрение существующих технологий построения порталов.

Современные технологии построения порталов базируются на самых
разнообразных программно-технологических платформах. Сегодня существует не
менее десяти подобных платформ, разработанных и поддерживаемых лидерами
рынка высоких технологий.

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

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

Технологическая разработка «Группы компаний Стек» X-Ware удовлетворяет практически всем требованиям, предъявляемым к решениям для построения порталов или сети порталов. Основу платформы X-Ware составляет концепция «общей шины», т.е. между узлами информация передается по специальным протоколам, и, фактически, является общей для всей совокупности ресурсов сети.

Такой подход позволяет подключать произвольное количество существующих и создаваемых программных и информационных ресурсов и приложений не зависимости от их локализации, форматов хранения и наращивать систему непрерывно, не останавливая ресурсы сети.

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

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

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

  • Масштабируемость архитектуры системы (клонируемость, кластеризация,
    высокая производительность, передача больших объемов данных).
  • Открытость архитектуры системы (подключение новых ресурсов, развитие
    системы)
  • Возможность интегрирования с существующими продуктами, имеющими
    открытый API
  • Поддержка внутрисистемных стандартов
  • Оптимизация объемов передаваемой информации
  • Поддержка русского языка.
  • Наличие встроенных средств: поиска информации, безопасности,
    разграничения прав доступа, жизнеспособности
  • Модульность (независимая работа многих разработчиков над различными
    частями системы)
  • Возможность развития системы с обеспечением полной совместимости со
    всеми предыдущими версиями

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

Кластер М

Кластер N

Интернет

Корпоративны*

ватели

Системный администрантор, операторы, программисты, поставщики информации и т.д.

Публичные ресурсы

Корпоративные ресурсы

Служебные интерфейсы

Кластер К

Общая шина

Защищенный протокол

Интерфейсы подключаемых рес

Удаленные и мобильные
пользователи

Структурная схема коммуникационных и информационных ресурсов,
организуемых в соответствии с архитектурой «общая шина»

Существующие технологии поддержки информационных сетей.

На сегодняшний день существует достаточно немного программно—
технологических платформ, позволяющих создавать на своей основе большие сети информационных ресурсов. Среди них Vignette Integrated content management
applications, Microsoft SharePoint technology, ORBIX2000 (IONA 0rbix2000), Xware.
Ниже приведено краткое описание перечисленных технологий:

Набор интегрированных продуктов управления контентом Vignette

Vignette включает в себя набор приложений для управления, персонализации, интеграции и анализа контента. Основой системы является Vignette Content Suite -
набор модульных приложений, предлагающих развитую поддержку разработки и
интерактивного управления сетевыми информационными ресурсами. Кроме того,
система включает в себя ряд программных расширений:

Контентное расширение:

Vignette® Advanced Deployment Server V6 - корпоративная работа по
созданию, тестированию и сборке программных систем.
Vignette® Mobile Application Suite V6 - удаленный доступ персонала и
партнеров компании к корпоративным приложениям и Интернет—сервисам
(мобильный офис).

Интеграционное расширение:

Vignette® Collaborative Commerce Server V6 - B2B интегрирующее решение.
Защищенные транзакции через Интернет и корпоративные сетевые экраны.
Vignette® Content Syndication Server V6 - поддержка совместной работы в
электронном бизнесе и взаимного импорта контента партнеров,
пользователей, дистрибьюторов и продавцов на основе Web-технологий.

Аналитическое расширение:

Vignette® Relationship Management Server V6 Advanced Edition - организация
целевого персонализированного взаимодействия со служащими и
пользователями.

Vignette® Multi—Channel Communication Server V6 - платформа для
разработки мобильных приложений для электронной коммерции,
управления работой с пользователями, партнерами и служащими.

Объединенный пакет приложений:

Vignette® Enterprise Application Portal - создание, управление и поддержка
Web—порталов.

Vignette® Merchant Suite - управление сетевыми продажами, поддержка сетевых каталогов и электронных витрин.

Vignette Financial Application Suite - поддержка персонализированного
консалтингового сервиса для финансовых организаций.

Технологическую основу составляют Web-технологиии и технологии клиент—
сервер. Может работать на операционных системах IBM AIX, Sun Solaris и
Windows 2000. В качестве СУБД могут быть использованы IBM DB2, Oracle, SQL Server и Sybase. Возможности развития минимальны ввиду закрытости исходного
кода.

MS SharePoint Technologies MS SharePoint Server, MS SharePoint Team Services

MS SharePoint Technologies представляют собой программно технологические
решения создания, поддержки и управления контентом сетевых информационных
ресурсов, а также создания, поддержки и управления ресурсами групповой работы.

MS SharePoint Team Services - групповое Web—решение, позволяющее
рабочей группе создавать «здесь и сейчас» рабочее пространство группы,
управлять работой группы, обеспечивать эффективность совместной
работы.

MS SharePoint Server - программное решение для создания, поддержки и
управления порталами. Позволяет легко находить, компоновать и
публиковать информацию в сети.

Технологическую основу MS SharePoint Technologies составляют сетевые и
настольные технологии Microsoft, Web—технологии и технологии клиент—сервер.
Может работать на операционных системах Windows NT, 2000, XP. В качестве
СУБД используется Microsoft SQL Server. Возможности развития минимальны за счет закрытости исходного кода.

Линейка продуктов IONA ORBIX

В линейку продуктов ORBIX входит ряд платформ и продуктов для разработки,
управления и поддержки распределенных Web—порталов, инструментов
информационной поддержки рабочих групп, корпоративной информационной
поддержки, поддержки транзакций и персональных коммуникаций.
Линейка разделена на Корпоративные Продукты и Инструменты Разработки.

К первой категории относятся:

B2B Integrator - поддержка корпоративных бизнес—процессов, организация
сетевого взаимодействия между процессами.

Enterprise Integrator - интеграция разнородных продуктов и данных в
единую корпоративную платформу.

Mainframe Integrator - интеграция компьютеров класса мейнфрейим и
приложений, работающих на этих машинах в единую систему с другими
аппаратными платформами и программными приложениями.

Portal Server - поддержка корпоративных информационных порталов.

К категории Инструментов Разработки относятся:

IONA iPortal Application Server - сертифицированный компанией Sun J2EE
сервер приложений.

IONA XMLBus - основанный на XML набор инструментов разработки и
коллекция сопутствующих технологий для разработки Web—сервисов.

IONA Orbix - программно—технологическая платформа на основе
технологии CORBA для разработки сложных и/или встраиваемых систем.

IONA Orbix/E - программно согласованных с технологией CORBA брокер
объектных запросов (ORB) для высокоскоростных систем и встраиваемых
приложений.

IONA ORBacus - базовый брокер объектных запросов (ORB).

Технологическую основу составляет технология CORBA. Возможна интеграция
практических любых программных продуктов, поддерживающих технологию
CORBA и/или имеющих открытый программный интерфейс приложений (API).
Работает на UNIX—совместимых операционных системах, MS Windows 2000.

IBM WebSphere Portal Solution

Решения IBM WebSphere Portal Solution обеспечивают безопасный доступ к
динамической информации, приложениям и людям, что очень важно для создания
успешных и эффективных порталов типа "бизнес-сотрудник" (B2E), "бизнес-
бизнес" (B2B) и "бизнес-потребитель" (B2C).
Предлагаются три следующих пакета решений:

WebSphere Portal Enable Solution - гибкий, масштабируемый каркас
горизонтального портала, предоставляющий компаниям фундамент для
создания персонализированных порталов;

WebSphere Portal Extend Solution включает в себя все возможности решения,
а также интегрированное рабочее пространство группы, средства
мгновенного обмена сообщениями, расширенного поиска и поддержки
совместной работы;

WebSphere Portal Experience Solution включает в себя возможности решения
Extend, а также расширенные возможности электронных совещаний,
совместного доступа к приложениям, управления контентом в масштабе
предприятия и усиленные средства безопасности.

Решения WebSphere Portal Solution используют всю мощь и многофункциональность WebSphere Application Server, ключевой технологии IBM
для Web-приложений, и являются новым примером того, как IBM расширяет
программную платформу WebSphere, создавая интегрированную программную
инфраструктуру для успешного электронного бизнеса.
Это программное решение для порталов позволяет компаниям создавать
современные порталы нового поколения, которые предлагают пользователям
персонализированный, безопасный и единообразный способ доступа к экспертным ресурсам, информационному наполнению, приложениям и процессам. WebSphere Portal Solutions также поддерживает широкий диапазон нетрадиционных клиентских устройств, благодаря чему пользователи могут взаимодействовать с порталами B2E, B2B и B2C в любое время, из любого места, с помощью любого клиентского устройства, как проводного, так и беспроводного.

Программно—технологическая платформа Xware

Xware представляет собой интегрированную программно - технологическую
платформу для создания, поддержания и контроля распределенных информационно—транспортных сетей. Система ориентирована на разработку,
управление и поддержку распределенных Web—порталов, инструментов
информационной поддержки рабочих групп, корпоративной информационной
поддержки, поддержки транзакций и персональных коммуникаций. Xware имеет
модульную структуру. Базовым модулем платформы является «общая шина» -
брокер объектных запросов (ORB).
Дополнительные модули:

  • многоязычные средства поиска информации в электронных документах;
  • инструменты управления и анализа информационных потоков в
    телекоммуникационных сетях включая средства контроля и анализа
    трафика;
  • интегрированные инструменты создания, управления и поддержки WEB-
    приложений.
  • Благодаря модульной организации и лежащему в основе платформы принципу «общей шины» позволяет интегрировать гетерогенные приложения в единый информационный поток с высокой степенью географической распределенности.
    Основные свойства:
  • масштабируемость, являющаяся результатом использования
    распределенной архитектуры и принципа «общей шины»;
  • высокая нагрузочная способность, являющаяся результатом разделения и
    использования специальных схем связи WEB- серверов и серверов баз
    данных;
  • непрерывность развития, являющаяся результатом модульного построения и поддерживаемая системой Stager (online разработка, поддержка и
    обновление Web—ресурсов);
  • живучесть, являющаяся результатом возможности свободной установки
    различных модулей на различные вычислительные мощности и
    оптимизации потребностей горячего резервирования.
  • Преимущества платформы:
  • Открытость.
  • Гарантированно корректная работа с русскими кодировками и морфологическими особенностями русского языка.
  • Наличие встроенных мощных поисковых средств.
  • Использование программных продуктов с открытым исходным кодом.
  • Технологическую основу составляет технология CORBA. Возможна интеграция практических любых программных продуктов, поддерживающих технологию CORBA и/или имеющих открытый программный интерфейс приложений (API). Работает на UNIX—совместимых операционных системах.
  • В таблице приведены сравнительные характеристики описанных программно—технологических платформ.

Vignette

SharePoint

ORBIX

WebSphere

Xware

Свойства

Поддержка разработки контента

+

+

+

+

+

Интерактивное управление ресурсами

+

+

+

+

+

Управление контентом

+

+

+

+

+

Персонализация

+

+

+

+

+

Интеграция

+

+

+

+

+

Анализа контента

+

+

+

+

+

Взаимный импорт контента партнеров

+

Нет данных

+

-

+

Корпоративная работа

+

+

+

+

+

Удаленный доступ

+

+

+

+

+

Встроенные средства поиска

-

-

-

-

+

Поддержка разных кодировок русского языка

-

-

-

-

+

Поддержка морфологических особенностей русского языка

-

-

-

-

+

Распределенность

-

-

+

-

+

Масштабируемость

+

-

+

-

+

Открытый исходный код

-

-

частично

-

+

Возможность непрерывного развития

-

-

+

-

+

Технологическая основа

клиент-сервер

-

+

-

+

-

CORBA

-

-

+

-

+

WEB

+

+

+

+

+

Поддерживаемые ОС

Windows

+

+

+

+

-

UNIX совместимые

+

-

+

-

+

Поддерживаемые БД

MS SQL server

+

+

+

+

+

ORACLE

+

-

+

+

+

PostgreSQL

-

-

-

+

+

Mу SQL

-

+

+

+

+

Возможные пути реализации и развития системы образовательных порталов.

  • Разработка рубрикатора информационных ресурсов, имеющих отношение к образовательной деятельности. Поскольку существующие рубрикаторы (ВИНИТИ, ГПНТБ и проч.) не в полной мере удовлетворяют современным требованиям, предъявляемым к каталогизации информационных Интернет—ресурсов, необходимо создание рубрикатора, адекватно отражающего информационную структуру образовательной среды.

  • Осуществление инвентаризации Интернет—ресурсов по единой универсальной схеме, в основу которой положен рубрикатор информационных ресурсов:
  • адаптация и настройка машины поиска интернет—ресурсов с учетом разработанного рубрикатора
  • проведение целевого автоматизированного поиска
  • каталогизация и индексация выявленных ресурсов в специальных базах данных.
  • Формирование Интернет—сайта свободного доступа для апробации полученных баз данных и предоставления бесплатного сервиса по поиску образовательных информационных продуктов ( документов, каталогов, стандартов, учебных программ и курсов, вспомогательной информации и т.д.).
  • Методическое и технологическое развитие созданного сайта в образовательный портал широкого назначения (прототип будущего национального образовательного портала) путем оптимизации его логической и функциональной структуры: создание удобного
  • пользовательского интерфейса, разработка, адаптация и встраивание стандартных функций и интернет-сервисов, присущих порталу.
  • Формирование распределенного коллектива редакторов различных разделов и сервисов портала: подбор и обучение специалистов, в т.ч. в первую очередь, специалистов из регионов.
  • Развитие информационного наполнения портала (1) за счет совершенствования имеющихся интернет-ресурсов, (2) за счет перевода части образовательных информационных продуктов, используемых в режиме off-line, в новые интернет-ресурсы, (3) за счет заказа и создания принципиально новых образовательных интернет-ресурсов и продуктов.
  • Накопление и анализ статистики работы портала (посещения и активность аудитории, приоритеты по тематике, виду, назначению запрашиваемых документов, анализ деятельности редакторов, тенденций развития информационного наполнения портала и др.).
  • Обоснование приоритетов, направлений и способов «вертикального» развития информационных ресурсов портала с целью формирования проблемно—ориентированных и специализированных образовательных Интернет—ресурсов ( в виде сайтов или мини порталов). Разработка и адаптация специализированных технологических решений, выявление и поддержка активных редакторских групп и др.
  • Развитие вертикальных порталов по различным направлениям и сферам информационного обеспечения образовательной деятельности (обучение, научные исследования, управление и т.д.).
  • Формирование и развитие горизонтальных порталов, объединяющих региональные и общенациональные интересы в области информационного обеспечения образовательной деятельности. Окончательное формирование национального образовательного портала.

1.4. Заключение:

Следуя из анализа всех представленных выше технологий поддержки порталов, мой выбор остановился на IBM WebSphere Portal Solution. Это обусловлено кросплатформенностью, и наибольшей адаптацией для пользователя.

Глава 2.

2.1. Сравнение php и ASP.NET

Вопрос о выборе технологий перестаёт быть сугубо техническим, когда один из возможных вариантов — .NET. В случае WEB-приложений речь идёт, конечно же, об ASP.NET. Который, согласно рекламным статьям Microsoft, просто обязан стать стандартом разработки офисных WEB-приложений. Ведь это «управляемый код», MSF-методология, серверные элементы управления...

Я же постараюсь исключить субъективизм. Например, мне очень нравится документация по php; но я в ужасе от MSDN. Но я встречал очень серьёзных специалистов (и не в единственном числе!), которые при мне легко находили нужную информацию в MSDN. Значит, я снимаю аргумент про документацию как субъективный. И также поступаю со многими другими своими аргументами. Оставляю только те, которые не зависят от моих пристрастий и предпочтений.

2.1.2. Очевидные преимущества ASP.NET

Типизация. Языки программирования ASP.NET имеют строгую типизацию данных. Это безусловно выигрышный момент по сравнению с нетипизированным php: меньше будет логических ошибок, которые весьма трудно находить и исправлять. Некоторым утешением для сторонников php является возможность привести переменную к нужному типу — но увы, присвоение переменной, приведённой к целому типу, строкового значения не вызовет даже предупреждения со стороны интерпретатора.

Маркетинговая политика Microsoft. Если Вы пишете на ASP.NET — на Вашей стороне мощная рекламная машина Microsoft, а также партнёрские программы этой фирмы. Без заказов Вы не останетесь.

И результат этой политики Приходится признать: мнение, что офисное WEB-приложение обязано быть на ASP.NET и ни в коем случае не на php, фактически утвердилось в умах руководства большинства компаний. То есть если Вы пишете офисное приложение на ASP.NET — оно будет в явно выигрышном положени по сравнению с приложением на php (пока Вы не начнёте его внедрять и поддерживать, но об этом далее).

2.1.3. Очевидные преимущества php

Доступность дистрибутивов. Дистрибутивы измеряются в десятках мегабайт (а не в DVD-дисках, как Windows/IIS/Visual studio/MS SQL Server) и доступны на сайтах разработчиков. Т.е. php — это «праздник, который всегда с тобой».

Думаю, под влиянием php компания Microsoft пошла на выпуск бесплатных версий (Express Edition) инструментов, нужных для создания ASP.NET-приложений. Но на сайте Microsoft доступны только новые версии, которые требуют последних версий Windows (тут уж Microsoft не переделаешь). Так что в данном случае не получится «праздника, который...».

Open source (открытый код), представляющий возможность для аудита кода. Что особенно важно — аудитом кода занимаются программисты всего мира, способствуя устранению уязвимостей и прочих недостатков.

Это достаточно важно для государственных структур и крупных компаний: можно убедиться, что в данной технологии нет «люков» для шпионажа. Мелкий и средний бизнес может не беспокоиться на этот счёт, а вот большой бизнес и государственные структуры должны неуютно себя чувствовать, ставя на серверы программы с закрытым кодом. Отсюда стремление Китая и Индии перевести свои госструктуры на Linux.

2.1.4. Сравнение возможностей: стратегический паритет

Поскольку обе технологии ограничены довольно простым протоколом HTTP и языком разметки HTML — их возможности примерно равны. Все задачи, решаемые в рамках одной технологии, столь же успешно решаются и в рамках другой. Можно спорить лишь о большем или меньшем удобстве предлагаемые технологиями решений — но мы воздержимся от споров о вкусах.

Таким образом, ни php, ни ASP.NET не дают технологического преимущества WEB-проекту. Различия проявляются в стоимости и трудоёмкости разработки и эксплуатации проекта. В этих показателях, по моему убеждению, php значительно выгодней ASP.NET. А преимущества ASP.NET в области разработки и поддержки, провозглашаемые рекламой, в основном являются, увы, не более чем рекламой. Обсудить которую, тем не менее, необходимо.

2.1.5 Провозглашаемые преимущества ASP.NET: опыт критического анализа

Управляемый код. Именно это мы услышим прежде всего, если речь зайдёт о преимуществах ASP.NET. Кстати, код, который не в .NET — провозглашается неуправляемым. Нам должно быть страшно, и от страха перед неуправляемым кодом (образ, достойный пера Стивена Кинга) php-шникам следует переходить на ASP.NET...

Но давайте попробуем разобраться, что стоит за термином «управляемый код».

Управляемый код (managed code)
Код программы, исполняемый виртуальной машиной .NET — такой как .NET Framework CLR или Mono. При этом обычный машинный код называется неуправляемым кодом (англ. unmanaged code).
Слово управляемый здесь относится к методу обмена информацией между программой и исполняющей средой. Оно означает, что в любой точке исполнения, управляющая среда может приостановить исполнение и получить информацию, специфичную для текущего состояния.
Необходимая для этого информация представлена в управляемом коде на языке Intermediate Language и в связанных с этим кодом метаданных..
ru.wikipedia.org/

Заключение
Задача написать надежный код, учитывающий все возможные сбои, может привести в уныние. Хорошая новость: если вы создаете не оболочку и не библиотеку для использования в хостах CLR, которым необходимо обеспечить продолжительную работоспособность, скорее всего, вам не придется думать обо всем этом слишком часто. Тех, кто все же занимается именно этим, должно порадовать то, что .NET Framework 2.0 предоставляет полезный набор инструментальных средств, облегчающих эту задачу. Понимая принципы работы и использования этих систем, можно написать управляемый код, настолько же надежный, как и аккуратно написанный неуправляемый код.

Поискольку преимуществ управляемого кода выяснить не удалось, оставляю оппонентам бессмертную формулу Credo, quia absurdum и перехожу к следующему преимуществу.

Возможность использовать несколько языков программирования.
Честно признаться, не понимаю, в чём тут преимущество. Не вижу его даже для поклонника Бейсика. Любителю Бейсика столь же непросто выучить другой язык, как и выучить все отличия .NET-бейсика от привычного ему VB6 или тем более VBA.

Минусы более очевидны. От поддержки нескольких языков разработчик не получает новых возможностей. Зато система становится сложней (т.е. менее надёжной). Понижение надёжности без увеличения функциональности я считаю явным недостатком.

Компиляция.
При компиляции ASP.NET-проекта код переводится в независимое от языка и процессора представление, которое называется языком MSIL. Во время работы MSIL выполняется в контексте платформы .NET Framework, которая переводит MSIL в индивидуальные инструкции для процессора компьютера, на котором запущено приложение.

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

Так что мы не можем записать компиляцию ASP.NET-проектов как неоспоримое преимущество ASP.NET.

Разделение дизайна и программного кода. Лет восемь назад, когда пробивала себе дорогу первая версия ASP.NET (ASP.NET I), его апологеты взахлёб расписывали возможность одновременной работы дизайнера и программиста над одной и той же страницей. Уже при продвижении ASP.NET II (2005-й год) об этом преимуществе предпочитали не упоминать (а предлагаемая реализация MVC-методологии похоронила это разделение). Стало очевидным, что одновременная работа дизайнера и программиста над формами — утопия. Инструмент работы дизайнера (и WEB-дизайнера в том числе) — Adobe Photoshop. Подавляющее большинство WEB-дизайнеров отмахнётся даже от правки HTML-кода: «Я художник, а не писарь!». А такого насилия над личностью, как правка дизайна в Visual Studio, не вынесет никто из них.

(В скобках заметим, что подобную утопию пытались реализовать в шаблонизаторе для php smarty. Но использование smarty — свободный выбор разработчика, и не может быть отнесён к достоинствам или недостаткам php).

Реализация технологии MVC (Model-View-Controller)
ASP.NET 3.5 предлагает свою реализацию модной ныне технологии MVC.

Пока мне придётся помнить, что Ignorantia non est argumentum (незнание не является аргументом). Я так и не понял, чем MVC облегчает разработку.

Так что пока готов не оспаривать это преимущество. Ладно, не буду возражать против признания MVC преимуществом ASP.NET. Но надеюсь дождаться достаточно авторитетных критиков, которые скажут, что король-то голый! А пока скажу своё мнение практика: MVC — пустая блажь.

Серверные элементы управления. Этот довод я считаю самым убедительным из всех неубедительных доводов в пользу ASP.NET. Серверные элементы управления представляют собой группы HTML-элементов, которые воспринимаются WEB-сервером (MS IIS) как одно целое. Например, календарь. Он передаётся браузеру как весьма громоздкий набор тегов и кодов JavaScript, но для кода на сервере это один элемент, содержащий указанную пользователем дату.

Серверные элементы управления во многих случаях действительно сильно ускоряют разработку форм. Календарь Вы создаёте за считанные секунды и несколько минут настраиваете внешний вид. Если Вы хотите создать календарь сами, используя php и JavaScript — я гарантирую Вам два дня напряжённого труда.

Но использование серверных элементов управления («контролов»), несёт в две настолько серьёзную проблему, что я бы не пожалел дополнительного времени на разработку «нормальных» html-форм.

Речь идёт, во-первых, о читаемости приложения, во-вторых, о проблемах командной разработки.

Не так уж просто разработаться в том, как работает форма, составленная из Web-controls. Приходится перескакивать со страницы дизайна на страницу behind-класса. Не забывая, что серверные события будут отработаны только в момент сабмита (пересылки данных формы на сервер). Например, если текстовому полю Вы привязывает событие Text_changed — то обработчик этого события сработает вовсе не тогда, когда текст будет изменён. А при ближайшем сабмите. Это естественно, раз мы работаем по протоколу http. Но разработчикам Windows-приложений, начинающим разработку ASP.NET-приложения, не всегда легко это сообразить.

Но это полбеды. Серьёзная проблема возникает — когда группа разработчиков должна подготовить ряд однотипных, но разных страниц (к примеру, страницы справочников). непросто объяснить им задачу и добиться, чтоб страницы были внешне похожи. Но и это не самое неприятное.

Самое неприятное – будет представлять собой, поддержку и обновление страниц, так как, это весьма трудоёмкий процесс в силу различного стиля программирования разработчиков. И когда придётся изменить все эти страницы (скажем, ещё одну кнопку добавить), то тот, кто не использовал серверные элементы управления, поблагодарит себя за абстрактный класс и классы-потомки, сочиняющие полный HTML-код формы.

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

Важно понимать, что бесплатность для разработчика не означает безопастность вообще. Для хостеров-то php платный. Т.е. мы имеем дело с другой моделью бизнеса, а не с любительством. Причём модели, доброжелательной к разработчикам php-проектов.

И важно понять, в чём заключается техническая поддержка Microsoft. Что может получить покупатель MS в плане технической поддержки

  1. Обновления и «заплатки» через Интернет
  2. Консультации по телефону и/или e-mail
  3. MSDN и печатная литература

Но приведённый список, согласитесь, не впечатляет: php-разработчик получает обновления с php.net, консультации коллег в php-сообществах, онлайн-документация по php в открытом доступе, ну и наконец, в литературе по php нет недостатка.

ASP.NET, в отличие от php, можно использовать для разработки крупных проектов
Среди добровольных пропагандистов ASP.NET принято никак не обосновывать тезис о невозможности написания больших проектов на php. Пропагандисты изо всех сил пытаются придать ему статус очевидного. Но истинная причина нежелания предоставить аргументы – отсутствие оных.

За много лет я не нашёл ничего, подтверждающего неспособность php быть основой крупного проекта. Зато нашёл те самые крупные проекты, которых, по мнению агитаторов, быть не должно.

Как Вы думаете, Wikipedia – крупный проект? Так вот он выполнен на php, в чём Вы легко можете убедиться.

2.1.6. За что я выбираю php

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

Кроссплатформенность. php портирован практически под все распространённые операционные системы, в то время как ASP.NET ориентирован на Windows, и то не всякую, а только 2000/XP/Vista/7. Т.е. мне не нужно беспокоиться, какая операционка стоит на сервере моего клиента.

Истины ради. Существует и развивается (не фирмой MIcrosoft!) проект Mono, призванный обеспечить полноценную работу системы .NET на базе свободного программного обеспечения. Но я бы не рискнул говорить об этом проекте как о надёжной технологии, на которую можно было бы делать ставку в серьёзных проектах. Кстати, Microsoft не несёт никакой ответственности, даже моральной, за то, как будет Ваш ASP.NET-проект работать согласно Mono.

А документация по данному проекту не добавляет уверенности. Вот что, например, она говорит об инструментах разработчика, предлагаемых Mono: No documentation available on this topic (по состоянию на 5 марта 2008 года). А ASP.NET без специальных средств разработки — это солдат без ружья.

Нет чрезмерной привязки к операционной системе. Даже под Windows php может устанавливаться простым копированием, не записывая ничего в многострадальный реестр, не требуя создания специальных групп пользователей и т.п. После переустановки операционной системы Вам не потребуется долго «поднимать» php и проекты, по ним написанные. Скажем, в Windows разумно установить Apache, php и MySQL на не-системном диске. Даже после форматирования системного раздела (C:) и установки Windows заново Вам потребуется не более трёх минут для восстановления: снова инсталлировать Apache как службу
(командой apache -k install) и возобновить список виртуальных хостов (файл %System32%/drivers/etc/hosts). И всё, инцидент исчерпан...

ASP.NET взаимодействует с операционной системой (только Windows, и то не всякой) весьма тесно.

Хочу особо подчеркнуть преимущество, связанное со слабой зависимостью php от операционной системы: мне легко договориться с сисадмином фирмы-клиента.

Удачный набор функций. php предоставляет WEB-разработчику большое количество функций для решения типовых задач. Создатели php хорошо знают, какие задачи чаще всего решает разработчик WEB-приложений. В ASP.NET я не нашёл полезных функций, необходимых постоянно — при наличии огромного количества методов, которым и применения-то не придумать. Например, в WEB-приложениях часто проиходится очищать текст от тегов (это особенно актуально для форумов и гостевых книг), «квотить» строку для вставки в SQL-запрос, а также убирать этот квотинг при извлечении строки из SQL-запроса. php предоставляет нам эти функции (соответственно strip_tags(), addslashes() , stripslashes()), а вот в ASP.NET я не нашёл соответствующих методов. Разумеется, их можно реализовать на C#. Но я не настолько люблю работать...

Также отдельное спасибо авторам php за функцию var_export(). Этой функцией я легко получаю текстовое представление массива или объекта в тех случаях, когда отладчик был бы бессилен. Приведу пример: платёжная система методом POST отправляет на мою страницу данные об оплате. И если что-то идёт не так — мне легко послать самому себе текстовый дамп этого массива:

$dump=var_export($_POST,true);
mail('tmanager@inbox.ru', 'post',$dump);

Увы, в ASP.NET придётся писать метод, который вернёт мне текстовое представление массива или объекта.

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

Преимущества интерпретации. Кроме недостатков по сравнению с компиляцией, интерпретируемые языки имеют весьма ощутимые преимущества.

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

Также очень удобно, что, имея переменную, хранящую название другой переменной, свойства или метода – можно легко обратиться к переменной/свойству и вызвать метод.

Если переменная $a равна "b", то к переменной $b можно обратиться:
$$a

Если переменная $a равна "p", то к cвойству p можно обратиться:
$object->$p

Если переменная $a равна "m", то метод m можно вызвать:
$object->$m()

Эти возможности мне нужны весьма часто, а использовать их, скажем, в C# затруднительно: приходится создавать unsafe-блоки для указателей на переменные (C# не очень хорошо приспособлен для работы с указателями), а для методов – сочинять классы-делегаты.

Прозрачная привязка проекта к файловой системе. И как следствие — нет необходимости в специальных средствах разработки (вроде Visual Studio). Иными словами, в php-проекте нет конструкций, для визуализации и редактирования которых требовался бы особый редактор.

Что же мы видим в ASP.NET? Не так уж просто сообразить, например, как связаны пространства имён (namespaces) и расположение файлов на диске. В итоге бывает, что классы не видят друг друга. Приведу пример.

Есть ASP.NET хостинг. Пытаемся (для экономии сил и времени) разместить два проекта на одном хостинге. В случае php никакой проблемы нет.

В случае же ASP.NET выясняется, что оба проекта начинают вести себя в папке хостинга, как на коммунальной кухне. Они желают иметь в корневом каталоге аккаунта свои файлы и папки — иначе страницы проекта как-то демонстративно не видят друг друга.

Простота настройки Apache, php,MySQL. Все настройки содержатся в тектовых ini-файлах. Все параметры откомментированы. И что особенно ценно: если чтьо-то идёт не так, Вы почти всегда получите сообщение, где ясно изложена проблема, указана строка ini-файла, которая «не понравилась». Есть, увы, исключения, но именно те, которые подтверждают правило: настройки и сообщения об ошибках LAMP понятны.

Несмотря на то, что продукт Visual Studio Express предлагается такой солидной корпорацией, как Microsoft, даже при попытке установки данного приложения возникают различные сбои:

В сравнении Visual Studio Express более надёжным и простым подходом, не требующим длительной установки и наладки программных сред, является разработка web-страниц на php.

Совместимость «снизу вверх».Переход php-проекта на новую версию php возможен либо вообще без изменений (именно этим мне запомнился переход с php 4.x на php 5.x), либо с минимальными доработками, связанными, как правило, с изменениями настроек по умолчанию (не буду долго останавливаться на том, что полагаться на настройки по умолчанию – дурной тон в программировании). А случае с ASP.NET (о переходе с ASP.NET 1.0 на ASP.NET 2.0) мы видим, что проект надо полностью переделать. Часть этой работы возьмёт на себя «колдун» (насколько хорошо он сработает – не проверял).

Простота формирования текстовых строк. Отдельное спасибо разработчикам php за:

  • возможность вставлять в двойные кавычки имена переменных и свойств:
  • $w='world';
  • print "Hello $w!"; //Напечатает Hello world!

или

$this->w='world';

print "Hello $this->w!"; //Напечатает Hello world!

  • возможность ввода большого текста с кавычками методом heredoc:
  • $html=<<<EOD
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  • "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • <html xmlns="http://www.w3.org/1999/xhtml">
  • <head>
  • <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  • <title> new document </title>
  • <meta name="keywords" content="" />
  • <meta name="description" content="" />
  • </head>
  • EOD;

Жёлтым маркером отмечены делимитеры, в которые заключён текст.

2.1.7. Подведём итоги

Стараясь быть максимально объективным, я изложил причины, по которым предпочитаю разрабатывать проекты на php, а не на ASP.NET. Но я вовсе не желал подвести к выводу, что на ASP.NET очень трудно или невозможно сделать хороший проект. Я лишь хотел предостеречь от рекламных восторгов, от отношения к ASP.NET как к чему-то изумительному, позволяющему быстро и легко делать серьёзные проекты.

2.2. Сравнение MySQL с другими СУБД

2.2.1. Сравнение MySQL и mSQL

Производительность

СУБД mSQL, благодаря отсутствию затрат дополнительных ресурсов на создание потоков, а также за счет компактности синтаксического анализатора, небольшого количества функций и упрощенной системы безопасности, должна выигрывать в скорости выполнения:

  • тестов на выполнение циклов соединение-отсоединение, при каждом соединении выполняющих какой-нибудь простой запрос
  • операций INSERT над простыми таблицами, содержащими небольшое количество столбцов и ключей
  • CREATE TABLE и DROP TABLE
  • операций SELECT чего-нибудь, кроме индексов (очень просто выполняется просмотр таблицы)

Поскольку такие операции очень просты, при больших затратах ресурсов на начальном этапе выиграть в скорости их выполнения достаточно сложно. Поэтому лучшие результаты MySQL может показать лишь после установки соединения. С другой стороны, MySQL значительно превосходит mSQL (и большинство других реализаций SQL) при:

  • выполнении сложных операций SELECT.
  • загрузке объемных результатов (протокол, применяющийся в MySQL, превосходит другие по качеству, скорости и безопасности).
  • работе с таблицами, имеющими строки переменной длины, так как обработка данных в MySQL реализована более эффективно и в нем допускается создание индексов для столбцов с типом VARCHAR.
  • обработке таблиц, содержащих большое количество столбцов.
  • обработке таблиц с длинными записями.
  • выполнении операций SELECT с несколькими выражениями.
  • выполнении операций SELECT над объемными таблицами.
  • одновременной работе с несколькими соединениями. Архитектура MySQL Server является полностью многопоточной. Для каждого соединения создается отдельный поток и, таким образом, ни одному из них не приходится ожидать завершения другого (если, конечно, один из потоков не занимается изменением таблицы, доступ к которой требуется другому потоку). В mSQL же после установки одного соединения остальным приходится ожидать его завершения, вне зависимости от сложности и времени выполнения примененного в этом соединении запроса. По завершении первого соединения начинает обслуживаться второе, а все остальные снова ждут своей очереди.
  • связывании таблиц. При изменении порядка таблиц в вызове SELECT, скорость работы mSQL может упасть ниже всяких допустимых пределов. При выполнении комплекта тестов производительности выполнение такой операции заняло в 15000 раз больше времени, чем у MySQL. Причиной столь плачевно низкой производительности является отсутствие в mSQL оптимизатора связей, который обеспечивал бы оптимальность используемого порядка соединения таблиц. Однако если в mSQL2 расположить таблицы в правильном порядке, не перегружать оператор WHERE и использовать индексные столбцы, связывание будет выполнено относительно быстро!

Возможности SQL

  • GROUP BY и HAVING.В mSQL функция GROUP BY отсутствует вовсе. В MySQL Server же GROUP BY имеется и работает как с HAVING, так и со следующими функциями: COUNT(), AVG(), MIN(), MAX(), SUM()и STD().
    Работа оператора COUNT(*) оптимизирована в расчете на быстрый возврат результатов, если оператор SELECT берет данные из одной таблицы, не используя никаких других столбцов и выражения WHERE. Функции MIN() и MAX() могут принимать строковые аргументы.
  • INSERT и UPDATE с вычислениями. MySQL может выполнять вычисления непосредственно в теле вызова INSERT или UPDATE. Вот пример:


mysql> UPDATE SET x=x*10+y WHERE x<20;

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

Эффективность использования дискового пространства

Можно ли уменьшить таблицы, и если да, то насколько? В MySQL имеются очень точные типы данных, а с их помощью можно создавать таблицы, занимающие минимум пространства. Примером чрезвычайно полезного типа данных MySQL может служить MEDIUMINT, длина значений которого составляет 3 байта. При наличии 100 миллионов записей значение экономии даже одного байта на каждой из них трудно переоценить. Выбор типов столбцов в mSQL2 значительно беднее, и поэтому снизить размеры таблиц заметно трудней.

Стоимость

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

Perl-интерфейсы

Perl-интерфейсы MySQL практически идентичны своим аналогам из mSQL, хотя и обладают некоторыми дополнительными возможностями.

Различия в клиент-серверных коммуникационных протоколах mSQL и MySQL

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


Ниже приведены наиболее заметные различия между коммуникационными протоколами MySQL и mSQL:

  • В буфере сообщения может находиться несколько столбцов результатов.
  • Буферы сообщений динамически увеличиваются, если запрос или результат не умещаются в их текущем объеме, ограничение на объем буфера устанавливается сервером и клиентом.
  • Все пакеты нумеруются, что позволяет обнаружить среди них повторяющиеся или пропуски.
  • Все значения столбцов отправляются в виде ASCII. Длины строк и столбцов посылаются в упакованном виде в двоичном виде (1, 2 или 3 байта).
  • MySQL может считывать результаты без буферизации (без необходимости сохранения всех данных в клиенте).
  • Если одна операция считывания/записи занимает более 30 секунд, сервер закрывает соединение.
  • Если соединение бездействует в течение 8 часов, сервер его закрывает.


Различия в синтаксисе SQL между mSQL 2.0 и MySQL

Типы столбцов

MySQL

Имеются следующие дополнительные типы:

  • ENUM - тип для одного набора строк.
  • SET - тип для нескольких наборов строк.
  • BIGINT - тип для 64-битовых целых чисел.

Кроме того, MySQL поддерживает следующие атрибуты дополнительных типов:

  • UNSIGNED - опция для целочисленных столбцов и столбцов чисел с плавающей запятой.
  • ZEROFILL - опция для целочисленных столбцов.
  • AUTO_INCREMENT - опция для целочисленных столбцов, являющихся первичными ключами.
  • DEFAULT - значение для всех столбцов.

mSQL2

Типы столбцов в mSQL соответствуют приведенным в таблице типам MySQL:

Тип в mSQL

Соответствующий тип в MySQL

CHAR(len)

CHAR(len)

TEXT(len)

TEXT(len). len - максимальная длина. Работает LIKE.

INT

INT. Со множеством опций!

REAL

REAL. Или FLOAT. Имеются как 4-битовые, так и 8-битовые варианты.

UINT

INT UNSIGNED

DATE

DATE. Использует формат ANSI SQL, а не собственный формат mSQL.

TIME

TIME

MONEY

DECIMAL(12,2). Значение с фиксированной точкой и двумя знаками после нее.

Создание индексов

MySQL

Индексы могут указываться во время создания таблицы при помощи оператора CREATE TABLE.

mSQL

Индексы создаются после создания таблицы с помощью операторов CREATE INDEX.

Сравнение значений NULL

MySQL

MySQL соответствует стандарту ANSI SQL, поэтому сравнение с NULL всегда возвращает результат NULL.

mSQL

В mSQL выражение NULL = NULL имеет значение TRUE. Поэтому при переводе старого кода из mSQL в MySQL =NULL необходимо заменить на IS NULL, а <>NULL - на IS NOT NULL.


Поиск без учета регистра символов

MySQL

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

mSQL

Следует использовать CLIKE.


Обработка концевых пробелов

MySQL

Все пробелы в конце столбцов CHAR и VARCHAR удаляются. Если такое поведение нежелательно, используйте столбцы TEXT.

mSQL

Концевые пробелы сохраняются.

Операторы WHERE

MySQL

MySQL правильно определяет приоритеты действий (AND имеет приоритет перед OR). Заставить MySQL вести себя так, как mSQL, можно при помощи скобок (как можно видеть в соответствующем примере).

mSQL

Все действия производятся слева направо. А это значит, что некоторые логические вычисления, в которых наличествует более трех аргументов, не могут быть выполнены вообще. Кроме того, это означает, что при переносе в MySQL некоторые запросы необходимо менять. Это довольно просто сделать при помощи скобок. Возьмем, к примеру, следующий запрос mSQL:


mysql> SELECT * FROM table WHERE a=1 AND b=2 OR a=3 AND b=4;


Чтобы MySQL вычислил результат этого запроса так же, как это сделал бы mSQL, нужно расставить скобки:


mysql> SELECT * FROM table WHERE (a=1 AND (b=2 OR (a=3 AND (b=4))));

Ограничения доступа

MySQL

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

mSQL

Имеется файл "mSQL.acl", в котором можно определить привилегии чтения/записи для пользователей.

2.2.2. Сравнение MySQL c PostgreSQL


Приведенное ниже сравнение проводилось в MySQL AB. Я старался быть как можно более точными и объективными, однако, зная MySQL, я не мог похвастаться таким же знанием возможностей PostgreSQL, поэтому в чем-то мог и ошибиться.

Прежде всего хотелось бы отметить, что PostgreSQL и MySQL являются широко используемыми программными продуктами, которые разрабатывались с разными целями (хотя создатели обоих и стремятся довести их до полной совместимости со стандартом ANSI SQL). Это значит, что для решения одних задач больше подходит MySQL, для других же - PostgreSQL. Выбирая СУБД, проверьте, соответствуют ли ее возможности требованиям, предъявляемым решаемой задачей. Если требуется максимальная скорость работы, лучше всего, вероятно, будет остановить свой выбор на MySQL Server. Если же вам необходимы дополнительные возможности, имеющиеся только у PostgreSQL, этой СУБД и стоит пользоваться.

Значительное отличие MySQL от PostgreSQL заключается в том, что практически весь содержащийся в MySQL код создан разработчиками, работающими в MySQL AB и постоянно занятыми совершенствованием кода сервера. Исключением из этого правила являются системы транзакций и библиотека регулярных выражений regexp.

Большая же часть кода PostgreSQL написана множеством разработчиков, никак друг с другом не связанных. Не так давно разработчики PostgreSQL объявили о том, что у их команды наконец-то хватило времени на просмотр всего кода, вошедшего в состав очередной версии PostgreSQL.

Сравнение возможностей MySQL и PostgreSQL

MySQL обладает следующими преимуществами перед PostgreSQL:

  • MySQL обычно намного превосходит PostgreSQL по скорости работы. Кроме того, в MySQL 4.0 реализован кэш запросов. Он позволяет во много раз увеличить скорость обработки запросов для сайтов, на которых преобладают неоднократно повторяющиеся запросы на чтение.
  • По количеству пользователей MySQL также намного превосходит PostgreSQL. Поэтому код тестируется значительно более придирчиво и опытным путем доказана большая его надежность, нежели у PostgreSQL. MySQL чаще, чем PostgreSQL, используется на производстве, в основном потому, что компания MySQL AB (ранее - TCX DataKonsult AB) предоставляет высококачественную коммерческую техническую поддержку MySQL с момента появления этой системы на рынке, а у PostgreSQL до самого последнего времени никакой поддержки не было.
  • MySQL работает в среде Windows лучше, чем PostgreSQL. MySQL Server запускается как настоящее (родное) Windows-приложение (в NT/2000/XP - сервис), в то время как PostgreSQL запускается в среде эмуляции, Cygwin. Доводилось слышать о недостаточной стабильности работы PostgreSQL в среде Windows, но самостоятельно эти сведения до сих пор проверить не мог.
  • MySQL оснащен большим количеством API для других языков и поддерживается большим количеством существующих программ, нежели PostgreSQL.
  • MySQL работает на высоконадежных промышленных системах 24/7 (включенных 24 часа в сутки 7 дней в неделю). В большинстве случаев никаких "чисток" в MySQL производить не требуется. PostgreSQL же пока что не может работать в таких системах, так как иногда приходится запускать VACUUM для освобождения занятого последствиями работы команд UPDATE и DELETE пространства и проводить статистический анализ, необходимый для достижения максимальной производительности PostgreSQL. Запускать VACUUM необходимо и после каждого добавления к таблице нескольких столбцов. На напряженно работающих системах VACUUM нужно запускать более часто, в худших случаях - по несколько раз в день. А ведь во время работы VACUUM (а ее работа может продолжаться часы, если база данных достаточно велика) база практически "мертва". Впрочем, в PostgreSQL версии 7.2 выполнение основных функций этой программы больше не приводит к блокировке базы, и пользователи могут продолжать нормально работать с ней. Новая команда VACUUM FULL берется за дело более серьезно: она, как и в старых версиях, блокирует таблицу и сжимает копию таблицы на диске.

  • Книг о MySQL вышло значительно больше, нежели о PostgreSQL. Книги о MySQL выпустили издательства O"Reilly, SAMS, Que и New Riders. Все возможности MySQL детально описаны в документации, так как это является обязательным условием включения новых возможностей в код.
  • MySQL обладает значительно более мощной реализацией ALTER TABLE.
  • В MySQL предусмотрена возможность создания таблиц без транзакций, что необходимо приложениям, требующим максимально возможной скорости работы.
  • MySQL может работать с двумя поддерживающими транзакции обработчиками таблиц, а именно - InnoDB и BerkeleyDB. Так как все системы поддержки транзакций в разных условиях работают по-разному, это дает разработчику возможность найти наилучшее решение для условий, в которых будет работать его система. See section 7 Типы таблиц MySQL.
  • Команда слияния таблиц MERGE предоставляет в ваше распоряжение уникальную возможность создать представление нескольких идентичных таблиц и работать с ними как с одной. Это особенно удобно для работы с журналами, разбитыми, например, по месяцам.
  • Возможность сжатия доступных только для чтения таблиц, не отменяющая прямого доступа к их записям, повышает производительность системы, снижая количество операций считывания с диска. Это особенно полезно при архивировании.
  • В MySQL реализован полнотекстовый поиск.
  • Имеется возможность работы с несколькими базами через одно соединение(разумеется, в зависимости от привилегий пользователя).
  • Система MySQL с самого начала разрабатывалась в расчете на многопоточность, а PostgreSQL использует процессы. Переключение контекстов и доступ к общим данным несколькими потоками осуществляется значительно быстрее, нежели отдельными процессами. Таким образом MySQL Server в многопользовательских приложениях получает неплохое преимущество в производительности, а кроме того, таким образом MySQL Server удается значительно эффективней пользоваться преимуществами, предоставляемыми симметричными мультипроцессорными системами (SMP).
  • В MySQL реализована значительно более мощная система привилегий, нежели в PostgreSQL. В то время как PostgreSQL обеспечивает лишь привилегии INSERT, SELECT и UPDATE/DELETE над базой или таблицей, MySQL предоставляет возможность определения полного набора разнообразных привилегий на уровне базы, таблицы и столбца. Кроме того, MySQL позволяет задавать привилегии для комбинаций хост/пользователь.
  • В MySQL используется протокол связи между клиентом и сервером со сжатием данных, что увеличивает производительность системы в условиях низкоскоростных каналов связи.
  • Все типы таблиц в MySQL (кроме InnoDB) реализованы в виде файлов (по одной таблице в файле), что значительно облегчает создание резервных копий, перенос, удаление и даже создание символьных ссылок между базами данных и таблицами, даже если сервер находится в нерабочем состоянии.
  • Обновление (апгрейд) MySQL проходит совершенно "безболезненно". При модернизации MySQL нет нужды в копировании/восстановлении данных, что приходится делать при установке большинства обновлений PostgreSQL.


Ниже перечислены преимущества PostgreSQL по сравнению с MySQL на сегодняшний день.

Возможность

Версия MySQL

Подзапросы

4.1

Внешние ключи

5.0 (3.23 с InnoDB)

Представления

5.0

Хранимые процедуры

5.0

Триггеры

5.0

Объединения

4.0

Полные связи

4.1

Ограничения

4.1 или 5.0

Курсоры

4.1 или 5.0

R-деревья

4.1 (для таблиц MyISAM)

Наследование таблиц

Не планируется

Расширяемая система типов

Не планируется


Другие причины, по которым можно предпочесть PostgreSQL:

  • В некоторых случаях PostgreSQL оказывается ближе к ANSI SQL.
  • Работу PostgreSQL можно ускорить, выполняя код в виде хранимых процедур.
  • При хранении географических данных R-деревья дают PostgreSQL преимущество перед MySQL (примечание: в MySQL версии 4.1 для таблиц MyISAM реализована поддержка R-деревьев).
  • Команда разработчиков PostgreSQL, пишущих код для сервера, больше.

Недостатки PostgreSQL по сравнению с MySQL:

  • VACUUM затрудняет использование PostgreSQL в постоянно работающих системах.
  • Наличие только транзакционных таблиц.
  • Значительно более медленная работа команд INSERT, DELETE и UPDATE.

2.3. Заключение:

Единственные существующие на сегодня тесты, позволяющие сравнить MySQL Server и PostgreSQL, которые любой может загрузить и запустить, - это тесты из комплекта MySQL. И поэтому свой выбор я останавливаю на MySQL

Глава 3.

Разработка инфологической и даталогической моделей базы данных. Разработка архитектуры портала, обеспечивающего доступ к базе данных.

Сайт состоит из десяти главных php файлов, девяти php блоков и одного файла стилей СSS.

На первой странице «index.php» находится о назначении самого сайта, и немного информации о авторе. С главной страницы сайта можно попасть на странички с дополнительной информацией. Так же с главной странички можно попасть на страницу с поиском нужного нам учебного предмета .

3.1 Состав страниц:

1). Файл «index.php» – эта страница является главной и стартовой, она размечена с помощью таблицы созданной с помощью тега «table», состоящая из двух строк. Первая представляет собой «Шапку КИС», этот блок всегда подключен ко всем другим страницам, в которой иметься фон, который добавлен с помощью «<td><img scr=”img/header.jpg”>». Вторая ячейка объединяет в себе три столбца, которые выведены в блоки: «lefttd #.php», «righttd #.php», где # номер блока, подключаемого при определенном действии и центральный блок, в котором выводиться информация. Также существует еще одна таблица, из трех столбцов, которая выведена в блок «nav.php», т.е. верхняя панель навигации.

2). Файл «view_idHobby.php» – страница содержит описание, выводимая из БД об увлечениях моей группы, при помощи оператора mysql_query(“SELECT * From Hobbys WHERE id = ‘$idHobby’”,$db). В левом блоке «lefttd.php», есть возможность выбора одного из 4-х наших увлечений, аналогично, как и в предыдущем случае. В правом же блоке «righttd2.php», выводиться информация из БД, с перечислением тех студентов, которые увлекаются этим хобби mysql_query(“SELECT Foto_mini, St_id, St_FIO, Work, Tel, ExamBook From Student WHERE idHobby = ‘$idHobby’”,$db). Причем при нажатии на фото любого из студентов, пользователь попадает на страницу «view_ррl.php», которая содержит характеристику каждого из студентов, это достигнуто, способом прикрепления ссылки в картинку <a href=’view_ppl.php?id=%s’>, где %s – переменная, которая меняется в зависимости от id студента.

3). Файл «view_ррl.php» – страница содержит характеристику каждого из студентов, это достигнуто, способом запроса из БД из определенной таблицы mysql_query (“SELECT *FROM Student WHERE St_id=’$id’”)

4). Файл «view_cem.php» – страница содержит список пройденных учебных предметов, по которым есть информация в электронном виде. В левом блоке «lefttd.php», есть возможность выбора одного из пройденных семестров. Информация выводиться с помощью mysql_query (“SELECT id, title, description, date, author FROM Lessons WHERE cem=’$cem’”). Причем при выводе на сайт, поле «title», выступает не только в качестве, названия предмета, а так же является ссылкой на страницу «view_post.php», что достигнуто при помощи добавления якоря ссылки <a href = ‘view_post.php?id=%s’>, при выводе информации из БД.

5). Файл «view_post.php» – страница содержит название самого предмета, фотографию преподавателя, небольшую информацию о преподавателе (взятую с сайта mpei.ru), автора этой информации и дату публикации. Информация выводиться с помощью mysql_query (“SELECT title, text, author, date FROM Lessons WHERE id=’$id’”). Одновременно с этим в правом блоке «righttd4.php», выводиться информация из БД, с перечислением тех видов занятий (лабы, семинары, лекции), по которым можно скачать учебную информацию mysql_query(“SELECT description, fotoLec, fotoLab, fotoCem, From Lessons WHERE id = ‘$id’”,$db). При нажатии на фото лекций\лабораторных\семенаров, пользователь попадает на файловый обменник, где будет предложено скачать нужную информацию. Это достигнуто способом, прикрепления ссылки в картинку, в самой базе данных <a href=”http://file.qip.ru/file/sdtegDF/Лабы.html”><img scr=”files/03042011/lab.jpg”></a>

6). Файл «view_search.php» – страница, которая генерируется в том случае, когда было задействовано поле поиска и нажата кнопка «search!» . Это было достигнуто, при помощи mysql_query (“SELECT * FROM Lessons WHERE MATCH(text) AGAINST (‘$search’)”, $db) , из этого можно заметить, что поиск осуществляется, только по одному полю определенной таблицы. Так же в систему поиска включено ограничение на минимальную длину ввода и проверку пустое поле или нет: if (empty($search) or strlen ($search)<4){exit (“Поисковый запрос не введен, либо короче 4-х символов”)}

7). Файл «news.php» – страница на которую выводятся все новости, начиная с самых ранних и заканчивая последними. Достигнуто при помощи: mysql_query (“SELECT * FROM News ”, $db). Справа же подключается блок «righttd5». В котором все эти новости сгруппированы по годам и месяцам, при нажатии на дату, будет сгенерирована страница «view_date.php», в которой будут присутствовать новости по нажатой дате. Что достигнуто при помощи: mysql_query (“SELECT DISTINCT left(date, 7) AS month FROM News ORDER BY month DESC “, $db). Вывод в файл «view_date.php» printf (<href=’view_date.php?date=%s’>)

8). Файл «view_date.php» – страница, которая генерируется при выборке новостей по месяцу из правого блока «righttd5». На ней пользователь может увидеть, выведенные новости по месяцу, которому он выбрал. Достигнуто с помощью:

$date_title = $date;

$date_begin = $date;

$date++; //+ Месяц

$date_end = $date;

$date_begin = $date_begin. "-01";

$date_end = $date_end. "-01";

9). Файл «secret.php» – при переходе на эту страницу, посетитель видит предупреждение, что если он хочет попасть на закрытую страницу «view_events.php», он должны ввести код доступа в поле ввода, и так же нажать на кнопку: Для стимулирования интереса, попасть на эту страницу, под кнопкой, находятся краткое описание новостей, что достигнуто с помощью: mysql_query (“SELECT mini_foto, name, description, foto\autor FROM Events WHERE secret = 1”, $db), Ввод информации на средний блок :

printf (…. <a href=’#’>%s(Доступ закрыт)</a>

<p>Краткое описание: %s</p>

<p>Автор\фотограф: %s </p> ...).

Полные же отчеты с фотографиями о мероприятиях можно прочесть и увидеть, только после перехода на «view_events.php», введя код. Осуществлено с помощью:

if (!isset($code) or $code !=$prcode)

If (mysql_num_rows ($result) > 0)

($myrow = mysql_fetch_array ($result);

Do {printf (… a href=’viev_events.php?id=%s’ …)});

После прохождения цикла, и при правильном вводе кода, попадаем на «view_events.php»

10). Файл «view_events.php» – страница открывается, только после ввода кода, на странице «secret.php». Сама же работает и выкачивает информацию из БД, аналогично файлу «view_post.php».

Защита в php файлах.

В Файлах : «view_idHobby.php», «view_post.php» , «view_ррl.php», «view_events.php», «view_cem.php», «view_date.php» , «view_search.php», осуществляется защита и проверка глобальных переменных с помощью:

if (isset($_GET['id'])) {$id = $_GET ['id']; } //защита глобальных переменных

if (!isset($id)) {$id = 1;} //защита от загрузки без котегории

/*Проверяем, являеться ли переменная числом*/

if (!preg_match("|^[\d]+$|", $id)) {

exit("<p>Неверный формат запроса! Проверьте правльность ссылки!</p>");}

$result = mysql_query("SELECT поле FROM таблица WHERE id='$id'",$db);

if (!result)

{echo "<p>Запрос на выборку данных из БД не прошел. Напишите об этом админу Kimir1989@mail.ru<br><strong>Код ошибки:</strong></p>";

exit (mysql_error());}

if (mysql_num_rows($result) > 0)

{$myrow = mysql_fetch_array($result);}

else

{echo "<p>Информация по запросу не может быть извелечена в таблице нет записей.</p>";

exit ();}

Также в файле «view_search.php» существует защита от взлома БД. Осуществлено с помощью :

if (isset($submit_s)) //Проверка, прошли по кнопке, или вбив в ручную. Если в ручную, то выводиться "Вы перешли на страницу без нужных параметров"

{if (empty($search) or strlen($search) < 4) //Проверка пустое или меньше 4-х символов поле для поиска в момент нажатия на кнопку.

{exit ("<p>Поисковый запрос не введен, либо он короче 4-х символов</p>");}

$search = trim ($search); //Обрезка от крайних "случачйных" пробелов

$search = stripslashes ($search); //Удаляет символ "/" в поле ввода

$search = htmlspecialchars ($search); //защита от использования, исполняемых кодов, для того чтоб не влезли в БД.(замена на Мьмоники)}

else

{exit ("<p>Вы перешли на страницу без нужных параметров.</p>");}

3.2. Состав базы данных.

В данном документе содержатся ЕR-модель, UML-модель и так же описана структура всех таблиц, входящих в базу КИС.

Графическая ЕR-модель

Функциональные зависимости

Поставщики Склад

idПоставщика -> Телефон idТовара-> Кол-во

idПоставщика -> Факс idТовара-> Стоимость

idПоставщика -> Почта idТовара-> Фото

idПоставщика -> Адрес idТовара-> Описание

idПоставщика -> ФИО

Информаия Место_службы

idИнформации -> ТелРабочий idМеста-> Дата приема

idИнформации -> ТелЛичный idМеста-> Дислокация

idИнформации -> ДеньРождения idМеста-> Должность

idИнформации -> Факс idМеста-> Выслуга

idИнформации -> Образо idМеста-> Отдел

idИнформации -> Адрес idМеста-> Фото

Накладная Сотрудники

idНакладной -> Дата idСотрудника-> Фамилия

idНакладной -> idПоставщика idСотрудника-> Имя

idНакладной -> idТовара idСотрудника-> Отчество

idНакладной -> idСотрудника idСотрудника-> Фото

idСотрудника-> idМеста

idСотрудника-> idИнформации

Рем.Техники

id Техники -> Название

id Техники -> ДатаПривоза

id Техники -> №Инвентаризационный

id Техники -> Фото

id Техники -> ПричинаПоломки

id Техники -> ДатаКонца

id Техники -> idСотрудника

UML-модель

3.3. ТАБЛИЦЫ