Python портируем и работает почти на всех известных платформах. Существуют порты под Windows, все варианты UNIX (включая Linux), Mac OS и Mac OS X, Palm OS, OS/2 и т.д. При этом, в отличие от многих портируемых систем, на каждой платформе Python поддерживает все характерные для данной платформы технологии (например, Microsoft COM/DCOM). Более того, существует специальная версия Python для виртуальной машины Java — Jython (http://www.jython.org/), что позволяет интерпретатору выполняться на любой системе, поддерживающей Java, при этом классы Java могут непосредственно использоваться из Python и даже быть написанными на Python.
Tcl (Tool Command Language) — интерпретируемый язык программирования высокого уровня. Tcl ориентирован преимущественно на автоматизацию рутинных процессов ОС и крупных программных систем и состоит из мощных команд, ориентированных на работу с абстрактными нетипизированными объектами. Принципиальное отличие Tcl от командных языков ОС состоит в независимости от типа системы (когда не надо утруждать себя изучением нового командного языка) и, самое главное, он позволяет создавать переносимые программы с графическим интерфейсом (GUI).
Ruby — интерпретируемый скриптовый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Ruby имеет большое количество средств для обработки текстов, для решения системных задач. Ruby является полностью свободным языком программирования с возможностью копирования, модификации и распространения. Ruby перенесён на множество платформ. Он разрабатывался на Linux, но работает на многих версиях Unix, DOS, Windows 95/98/Me/NT/2000/XP, Mac OS, BeOS, OS/2, и т.д. Целью создания Ruby был настоящий объектно-ориентированный интерпретируемый язык программирования. Название отсылает к языку Perl, наследником которого является Ruby (драгоценные камни: англ. pearl — жемчужина, англ. ruby — рубин).
Ruby имеет простой и понятный синтаксис, позволяет обрабатывать исключения в стиле Java и Python, позволяет легко переопределять операторы, которые на самом деле являются методами. Ruby — полностью объектно-ориентированный язык программирования. Все данные в Ruby являются объектами в понимании SmallTalk. Например, число «1» — это экземпляр класса Fixnum. Также поддерживается добавление методов в класс и даже в конкретный экземпляр во время исполнения программы. Ruby сознательно не поддерживает множественное наследование, вместо которого существует концепция модулей. Ruby содержит автоматический сборщик мусора. Он работает для всех объектов Ruby, так что не надо заботиться о подсчёте ссылок даже во внешних библиотеках. Ruby не требует объявления переменных. Язык использует простые соглашения для обозначения области видимости. Пример: просто 'var' — локальная переменная, '@var' — переменная экземляра (член или поле объекта класса), '$var' — глобальная переменная. Ruby имеет независимую от ОС поддержку многопоточности.
PHP (пи-эйч-пи) — интерпретируемый скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. В области веб-программирования PHP является на сегодняшний день одним из самых распространённых технологий (наряду с Perl, ASP/.NET и Python) благодаря простоте, скорости выполнения и богатой функциональности. PHP распространяется свободно. Синтаксис языка похож на синтаксис С++. PHP поддерживается подавляющим большинством предоставителей сетевого хостинга.
Perl — интерпретируемый скриптовый язык программирования, один из самых распространённых в области веб-программирования. По одной из версий, Perl — аббревиатура, которая расшифровывается как "Practical Extraction and Report Language" (практический язык извлечений и отчётов). Существует также ряд других вариантов. Согласно самому красивому из них, название "perl" произошло от слова "pearl" (жемчужина).
Основной особенностью языка считаются его богатые возможности для работы с текстом, реализованные при помощи регулярных выражений (regular expressions). Перл также знаменит огромной коллекцией дополнительных модулей CPAN, находящейся по адресу http://www.cpan.org/.
PHP обладает множеством преимуществ по сравнению с конкурирующими продуктами, в числе которых:
· Высокая производительность;
· Наличие интерфейсов к различным системам баз данных;
· Встроенные библиотеки для выполнения многих общих задач, связанных с Web;
· Свободное распространение;
· Простота изучения и использования;
· Переместимость;
· Доступность исходного кода.
Рассмотрим эти преимущества более подробно:
· Производительность. Используя единственный сервер, можно обслуживать миллионы обращений в день. Результаты тестирования, опубликованные компанией Zend Technologies (http://www.zend.com), подтверждают более высокую производительность РНР по сравнению с конкурирующими продуктами.
· Интеграция с базами данных. РНР обладает встроенной связностью со многими системами баз данных: MySQL, PostgreSQL, mSQL, Oracle, dbm, Hyperware, Informix, InterBase и Sybase. Используя OpenDatabaseConnectivityStandard (Стандарт открытого интерфейса связи с базами данных, ODBC), можно подключаться к любой базе данных, для которых существует ODBC-драйвер.
· Встроенные библиотеки. Поскольку РНР был разработан для использования в Web, он имеет множество встроенных функций для выполнения широкого разнообразия полезных, связанных с Web, задач. С его помощью можно генерировать GIF-изображения, подключаться к другим сетевым службам, отправлять сообщения электронной почты, работать с cookie-наборами и генерировать PDF-документы.
· Стоимость. Пакет РНР является бесплатным.
· Изучение РНР. Синтаксис РНР основывается на других языках программирования, в первую очередь на С и Perl.
· Переносимость. Пакет РНР можно использовать под управлением многих различных операционных систем. Код РНР можно создавать в среде таких бесплатных Unix-подобных операционных систем, как Linux и FreeBSD, коммерческих версий Unix типа Solaris и IRIX или различных версий Microsoft Windows. Как правило, программы будут работать без каких-либо изменений в различных средах с установленным РНР.
· Исходный код. Пользователь имеет доступ к исходному коду РНР. В отличие от коммерческих закрытых программных продуктов, если нужно что-либо изменить или добавить в этом языке, то это всегда можно сделать.
Проектируемая БД должна использоваться для накопления, хранения и обработки данных. Узким местом при разработке базы данных для информационно-аналитических систем является хранение большого количества элементов - вариантов решений. Решение задачи оптимизации при глобальном поиске в информационно-аналитических системах, а так наличие малого количества запросов от самих пользователей информационно-аналитической системы позволяют не устанавливать жесткие требования к производительности СУБД. Таким образом, все выше перечисленное можно определить следующие требования к СУБД:
· Кроссплатформенность СУБД;
· Полная совместимость с выбранной средой разработки (PHP);
· Простота использования и внедрения;
· Распространенность и популярность СУБД. При использовании малораспространенной СУБД в будущем могут возникнуть проблемы с поддержкой и развитием ИС, что так же наложит дополнительные затраты на перенос накопленных данных.
· Надежность, позволяющая обеспечить решение задачи постоянного наполнения и обеспечения сохранность данных.
Проведём анализ рынка СУБД по нескольким характеристикам (таблица 1.5).
Таблица 1.5
Показатели | Microsoft SQL Server 2008 | MySQL 5.1 | PostgreSQL 8.4 |
Поддерживаемые операционные системы | Windows Desktop/Server | Windows Desktop/Server , Linux, Unix, Mac | Windows1 Desktop/S22erver, Linux, Unix, 2Mac |
Условии лицензирования | Коммерческий продукт с закрытым исходным кодом. Есть бесплатная версия с ограничением оперативной памяти до 4 Гб. | Коммерческая лицензия и GNUGPL. | Лицензия BSD Open Source. |
Процесс установки и поддержки | Довольно длительное время уходит на установку приложения и всех его зависимстей, однако множество визардов помогают в процессе. Платные версии отсылают электронные сообщения, если что-то «не так» в процессе работы. | Самый простой процесс установки, так как сущетвует огромное количество готовых пакетов для разных операционных систем, установка из которых сводит трубности и проблемы к нулю | Для опероционных систем семейств Linux/Unix установка идентична установке MySQL. Однако во время установки под Windows иногда возникают проблемы с инициализацией базы данных. |
Наличие предустановленных драйверов в ОС семейства Windows | Да | Нет | Нет |
Наличие драйверов ODBC, JDBC, ADO.NET | Да | Да | Да |
Поддержка фунциональных индексов | Нет, но можно обойтись Computed Columns | Нет | Нет |
Поддержка частичных индексов | Да (называются “фильтрованные индексы”) | Нет | Да |
Поддержка ACID-требований к транзакциям | Да | Да, при использовании некоторых движков хранения данных | Да |
Каскадное обновление/удаление внешних ключей | Да | Да, при использовании некоторых движков хранения данных | Да |
Поддержка репликации | Да, встроенная и разных типов. Но внесение тсруктурных изменений после начала репликаци — очень сложный процесс. | Да, включая mater-master репликацию. | Да, но с помощью сторонних продуктов с открытым исходным кодом. Репликация всех типов. |
Возможность писать хранимые функции на разных языках программирования | Да, теоретически на любом языке, поддерживающим CLR, например VisualBasic.NET, C#, IronPython, но сначала надо скомпилировать код в бибилиотеку dll. | Нет (кроме C и Pl/SQL) | Да, наиболее полная поддержка из всех рассматриваемых. |
Возможность создавать пользовательские аггрегированные функции | Да — любой .NET язык, кроме TRANSACT SQL. | Да, только на С | Да — на PL language и встроенных C, SQL, PLPgSQL. |
Поддержка триггеров | Да | Да | Да |
Партицирование таблиц | Да (в Enterprise версии) | Да | Да |
Поддержка создания функций | Да | Да | Да |
Поддержка хранимых процедур | Да | Дa | Да (с помощью CREATE FUNCTION) |
Наличие встроенного планировщика (не CronTab) | Да (SQL Agent не для Express версии) | Да (только для SQL-запросов) | Да (PgAgent) |
Возможность доступа к таблице из другой базы данных, находящейся на том же хосте | Да | Да | Да |
Чувствительность к регистру | По умолчанию — не чувствительна | Нет | Да |
Поддержка даты и времени | Да | Да (но без временной зоны) | Да |
Аутентификация | Средставими БД и ActiveDirectory | Средствами БД | Много разных методов, включающих предыдущие |
Учитывая приведенные выше требования и сравнительный обзор в качестве СУБД был выбрана среда MySQL – это многопоточная, многопользовательская СУБД, основными достоинствами которой является быстрота, надежность и простота использования. Несмотря на то что, MySQL не представляет такой широкий набор возможностей как например Oracle, использование MySQL оправдывается из-за значительных меньших требований к мощности оборудования и большей скоростью работы при работе со средним объемом данных БД. Использование связки PHP+MySql позволяет более гибко организовывать принцип мультплатформенности.