Создание системы обмена мгновенными сообщениями

Автор: Пользователь скрыл имя, 17 Декабря 2012 в 23:56, диссертация

Описание работы

Постановка задачи: Создать клиент-серверное приложение для обмена сообщениями в реальном времени.
Детальное описание: Клиентская часть должна быть реализована в графическом варианте. После запуска клиент пытается установить соединение с сервером, получает список всех доступных для общения пользователей, которым может отправлять/получать сообщения. Необходимо оповещать клиента об изменение в доступном списке контактов.

Работа содержит 1 файл

report.doc

— 1.36 Мб (Скачать)

Особенности SQL сервера Oracle

Ведущая аналитическая фирма IDC в  своем обзоре «Поставщики встроенных СУБД в 2007» назвала компанию Oracle ведущим поставщиком с долей  рынка в 26.3%. IDC определяет встроенные СУБД как те, которые проданы независимым  поставщикам программного или аппаратного обеспечения и затем используются как компоненты внутри более крупных программных или аппаратных продуктов, разрабатываемых компанией-партнером.

Рис. 2.1. Диаграмма популярности поставщиков серверов БД

 

Эти технологии являются уникальными, реализованными только в СУБД Oracle.

RAC

Технология Real Application Cluster, появившаяся  в 9-й версии СУБД Oracle, позволяет объединять сервера, обслуживающие СУБД в одну <большую базу данных>, что позволяет достичь двух ключевых целей:

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

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

Рис. 2.2. Технология RAC.

Похожие технологии реализованы в Microsoft SQL Server 2008, но имеется одно существенное отличие: Microsoft Application Cluster позволяет повысить отказоустойчивость системы в целом, но без влияния на производительность.

Таким образом, использование RAC позволяет  значительно повысить производительность системы, которая дошла до своего <физического потолка>, с сохранением средств, потраченных на это оборудование, и повысить отказоустойчивость системы. Как следствие – надежность и экономия.

RAT

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

Рис. 2.3. Технология RAT.

Суть технологии RAT заключается в воспроизведении нагрузки на тестовой базе данных в точном соответствии с нагрузкой на рабочем сервере.

 

Рис. 2.4. Особенности работы технологии RAT.

 

Active Data Guard

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

Можно использовать несколько резервных серверов для  одного рабочего сервера.

Рис. 2.5. Особенность работы технологии Active Data Guard.

Какие преимущества предоставляет  использование этой технологии ?

Во-первых, очевидное – надежность. Живучесть и отказоустойчивость базы данных повышается на порядок.

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

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

Похожие технологии реализованы и в DB2 и в MS SQL Server, но Oracle Data Guard выгодно отличается простотой реализации и возможностью использовать резервный сервер в работе и резервном копировании, а также поддержкой различных режимов синхронизации основного и резервного сервера: синхронный, асинхронный, отложенный.

Total Recall

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

Использование Total Recall позволяет разгрузить таблицы базы данных от накопленной и редко использующейся информации. Но сохраняется возможность выполнить обычный SQL запрос и получить такую информацию на любой момент в прошлом, т.е. не требуется вносить какие-то изменения в существующее приложение, работающее с базой. Помимо этого, Total Recall обеспечивает неизменность исторической информации и защиту от ее подделки.

Рис. 2.6. Разгрузка базы данных с  помощью Total Recall.

Похожих или аналогичных технологий в других СУБД пока не реализовано.

In Memory Database Cache

Уникальная технология In Memory Database Cache реализована на базе существующей базы данных Oracle TimesTen in memory database. Эта СУБД за счет ряда применяемых уникальных решений позволяет увеличить скорость обработки транзакций и выдачи запросов более чем на порядок (т.е. в 10 раз), чем обычная СУБД Oracle Database. Эта СУБД ориентирована на хранение и обработку данных только в оперативной памяти сервера.

Рис. 2.7. Распределение нагрузок в  БД Oracle.

Начиная с 10-й версии Oracle Database, СУБД Oracle TimesTen может выступать в качестве промежуточного звена между клиентским приложением и Oracle Database. В этом случае TimesTen реализует функции сверхбыстрого кэша данных, принимая и обрабатывая транзакции и передавая обработанные данные на хранение в Oracle Database. Такая архитектура позволяет значительно повысить потенциал и расширить сферу применения Oracle Database. Фактически, в такой архитектуре Oracle Database способна справиться с любой транзакционной нагрузкой.

Automatic Storage Management

Технология ASM приносит принципиально  новые концепции в управление дисковой подсистемой сервера базы данных. Суть этой технологии заключается в абстрагировании дисковой подсистемы СУБД от файлов на жестком диске в файловой системе и абстрагировании собственно сервера базы данных от расположения файлов на дисках. В ASM управление осуществляется не файлами на дисках, а разделом диска, не форматированным в файловой системе. Причем, если используется не один жесткий диск, а набор дисков или RAID-массивов, эти диски объединяются в группу ASM и выглядят для СУБД как один жесткий диск.

Рис. 2.8. Использование файловой системы

Решением задачи по распараллеливанию  данных по жестким дискам для достижения оптимальной производительности занимается теперь не системный администратор, а экземпляр ASM в автоматическом режиме и эффективней, чем это мог бы сделать администратор БД. Также решается задача по обеспечению надежности за счет избыточности хранимых данных. Уровень избыточности задается системным администратором. Теперь возможно извлекать и добавлять жесткие диски для базы данных <налету>, путем выполнения простых команд ASM. Поскольку ASM – это отдельный экземпляр, т.е. отдельнаый программный комплекс, не связанный с СУБД, один экземпляр ASM может обслуживать несколько экземпляров СУБД.

Аналогичных решений в других СУБД пока не предложено. Вместе с тем, трудно оспаривать выгоды по производительности и упрощению (а значит повышению надежности) администрирования СУБД, использующей ASM.

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

      • IBM DB2 UDB
      • Microsoft SQL Server
      • MySQL
      • PostgreeDB
      • FireBird

Каждая система имеет свои особенности, преимущества и недостатки и свою цену.

Особенности XML

XML — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML). XML является упрощённым подмножеством языка SGML.

Достоинства:

      • XML — язык разметки, позволяющий стандартизировать вид файлов-данных, используемых компьютерными программами, в виде текста, понятного человеку;
      • XML поддерживает Юникод;
      • в формате XML могут быть описаны такие структуры данных, как записи, списки и деревья;
      • XML — это самодокументируемый формат, который описывает структуру и имена полей так же как и значения полей;
      • XML имеет строго определённый синтаксис и требования к анализу, что позволяет ему оставаться простым, эффективным и непротиворечивым. Одновременно с этим, разные разработчики не ограничены в выборе экспрессивных методов (например, можно моделировать данные, помещая значения в параметры тегов или в тело тегов, можно использовать различные языки и нотации для именования тегов и т. д.);
      • XML — формат, основанный на международных стандартах;
      • Иерархическая структура XML подходит для описания практически любых типов документов, кроме аудио и видео мультимедийных потоков, растровых изображений, сетевых структур данных и двоичных данных;
      • XML представляет собой простой текст, свободный от лицензирования и каких-либо ограничений;
      • XML не зависит от платформы;
      • XML является подмножеством SGML (который используется с 1986 года). Уже накоплен большой опыт работы с языком и созданы специализированные приложения;
      • XML не накладывает требований на порядок расположения атрибутов в элементе и вложенных элементов разных типов[4], что существенно облегчает выполнение требований обратной совместимости;
      • В отличие от бинарных форматов, XML содержит метаданные об именах, типах и классах описываемых объектов, по которым приложение может обработать документ неизвестной структуры (например, для динамического построения интерфейсов);
      • XML имеет реализации парсеров для всех современных языков программирования;
      • Существует стандартный механизм преобразования XSLT, реализации которого встроены в браузеры, операционные системы, веб-серверы.
      • XML поддерживается на низком аппаратном, микропрограммном и программном уровнях в современных аппаратных решениях.

Недостатки:

      • Синтаксис XML избыточен.
      • Размер XML-документа существенно больше бинарного представления тех же данных. В грубых оценках величину этого фактора принимают за 1 порядок (в 10 раз).
      • Размер XML-документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON, YAML, Protocol Buffers) и особенно в форматах данных, оптимизированных для конкретного случая использования.
      • Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных.
      • XML содержит метаданные (об именах полей, классов, вложенности структур), и одновременно XML позиционируется как язык взаимодействия открытых систем. При передаче между системами большого количества объектов одного типа (одной структуры), передавать метаданные повторно нет смысла, хотя они содержатся в каждом экземпляре XML описания.
      • Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения.
      • Неоднозначность моделирования.
      • Нет общепринятой методологии для моделирования данных в XML, в то время как для реляционной модели и объектно-ориентированной такие средства разработаны и базируются на реляционной алгебре, системном подходе и системном анализе.
      • В природе есть множество объектов и явлений, для описания которых разные структуры данных (сетевая, реляционная, иерархическая) являются естественными, и отображение объекта в неестественную для него модель является болезненным для его сути. В случае с реляционной и иерархической моделями определены процедуры декомпозиции, обеспечивающие относительную однозначность, чего нельзя сказать о сетевой модели.
      • В результате большой гибкости языка и отсутствия строгих ограничений, одна и та же структура может быть представлена множеством способов (различными разработчиками), например, значение может быть записано как атрибут тега или как тело тега и т. д. Например:

<a b="1" c="1"/>

<a><b>1</b><c>1</c></a>

<a><b value="1"/><c value="1"/></a>

<a><fields b="1" c="1"/></a> и т. д.

      • Поддержка многих языков в именовании тегов дает возможность назвать, например вес русским словом, в таком случае компьютер никак не сможет установить соответствия этого поля с полем weight в англоязычной версии программы и с полями в версиях модели объекта на множестве других языков.
      • XML не содержит встроенной в язык поддержки типов данных. В нём нет строгой типизации, то есть понятий «целых чисел», «строк», «дат», «булевых значений» и т. д.
      • Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами и сетевой моделью данных.
      • Выражение неиерархических данных (например графов) требует дополнительных усилий
      • Кристофер Дейт, специалист в области реляционных баз данных, автор классического учебника «An Introduction to Database Systems», отмечал, что «…XML является попыткой заново изобрести иерархические базы данных…» (в 1980-е года иерархические базы данных были вытеснены реляционными базами данных).
      • Пространства имён XML сложно использовать и их сложно реализовывать в XML-парсерах.
      • Существуют другие, обладающие сходными с XML возможностями, текстовые форматы данных, которые обладают более высоким удобством чтения человеком.

 

Особенности реляционной базы данных

Понятие реляционный[15] (англ. relation — отношение) связано с разработками известного английского специалиста в области систем баз данных Эдгара Кодда (Edgar Codd).

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

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

    • каждый элемент таблицы — один элемент данных
    • все ячейки в столбце таблицы однородные, то есть все элементы в столбце имеют одинаковый тип (числовой, символьный и т. д.)
    • каждый столбец имеет уникальное имя
    • одинаковые строки в таблице отсутствуют
    • порядок следования строк и столбцов может быть произвольным

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

 

3. Реализация приложения

Для реализации приложения, как клиентского, так и серверного, использовался объектно-ориентированный подход, который позволяет создать пользовательский тип данных и логику обработки этого типа. ООП преследует три основных парадигмы:

    • Полиморфизм
    • Инкапсуляцию
    • Наследование

 Так же для реализации проекта использовался шаблон MVC (Model – View – Controller), который помогает разделить логику приложения на 3 типа:

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

Для подключения клиентов по сети, а так же «общения» между клиентом и сервером использовались Сокеты (Sockets).

Со́кеты[16] (англ. socket — углубление, гнездо, разъём) — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.

Информация о работе Создание системы обмена мгновенными сообщениями