Эволюция приложений или куда мы идем

Системный взгляд на эволюцию ИТ:

Фаза 1: Ручная обработка информации.

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

Наиболее значимые достижения этого периода связаны с появлением книгопечатания (1445г.).

Фаза 2: Технология перфокарт.

Технология перфокарт (1900-1955 гг.), когда запись данных производилась в двоичной системе счисления, а для их сбора и обработки использовались электромеханические устройства и компьютеры (первый компьютер появился в 1946г.).

Фаза 3: Технология магнитных лент.

Технология магнитных лент (1955-1980 гг.) использовала программируемое оборудование обработки информации – электронные компьютеры с хранимыми программами.

  • Особенности технологии:
  • Последовательная организация наборов данных.
  • Пакетная обработка транзакций.

Фаза 4: Технология оперативных БД на магнитных дисках и барабанах.

Технология оперативных БД на магнитных дисках и барабанах (1965-1980 гг.) связана с внедрением оперативного доступа к данным (доли секунды для доступа к любому элементу) в интерактивном режиме, с использованием систем БД с оперативными транзакциями.

  • Особенности технологии:
  • Интерактивное подключение к компьютеру.
  • Прямая и индексно-последовательная организация наборов данных.
  • Модели БД (от простых иерархических – к сетевым и простейшим реляционным).
  1. Виды схем для независимости данных в БД.
  2. Логическая;
  3. Физическая;
  4. Подсхема для программных приложений

Проблема – отсутствие навигационного программного интерфейса.

Фаза 5: Технология реляционной БД с архитектурой «клиент-сервер».

Технология реляционных БД с архитектурой «клиент-сервер» (1980-1995гг.) явилась откликом на проблему низкоуровневого интерфейса и широким распространением технологий компьютерных сетей.

  • Характерной особенностью таких БД является наличие унифицированного языка SQL – стандарта для:
  • определения данных,
  • навигации по данным,
  • манипулирования данными.
  • Реляционная модель вместе с повышением продуктивности и простотой использования оказалась очень удобной для ее использования:
  • в архитектуре «клиент-сервер»,
  • в параллельной обработке данных,
  • в разработке графических пользовательских интерфейсов.

Эволюция критериев разработки ПО.

  1. «Машинные ресурсы» (до середины 60-ых годов): экономия времени и памяти, фаза «кустарного производства» программ и пакетной обработки.
  2. «Программирование» (до начала 80-ых годов): экономия человеческих ресурсов, появление БИС и СБИС, микропроцессоров, систем программирования и операционных систем типа ОС UNIX.
  3. «Формализация знаний»(до 90-ых годов): расширение сферы применения, появление систем автоматизации (САПР, АСУ, АСУ ТП, ГАП) для непрограммистов-профессионалов.
  4. «Интернет-технологии» (н.вр.): приложения для широкого круга пользователей-непрограммистов.

Сервера приложений (#B Application servers)

Преимущества: Место веб-сервера занимает сервер приложений, т.е. не приложение запускается под управлением веб-сервера, а веб-сервер встраивается в приложение или сервер приложений. Более того, для повышения эффективности, HTTP/HTTPS могут быть заменены специализированными протоколами на базе TCP/TLS. Особенно это актуально для мобильных и десктопных приложений, что дает возможность строить RPC, шину событий, синхронизацию БД.

Недостатки: Такие приложения пока не имеют универсальных облачных решений, но все идет к тому, что они скоро появятся. А до этого, нужно изобретать свой стек технологий и самим строить приватное облако. Это сложно поддерживать и обслуживать. Кроме того, синхронизация БД на сервере и клиенте делается вручную, через приложение, обычно сверхусилями разработчиков, а использовать такие решения повторно обычно не удается.

Вывод: Это направление сейчас доступно только крупным компаниям, имеющим потребность в обслуживании миллионов пользователей, создании интерактивных приложений или R&D лабораториям, готовящим подобные решения для массового пользователя.

Обслуживание высоких нагрузок облаком (#A Cloud Highload)

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

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

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

Структура Data Access Layer

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

Принципы, применяющиеся при проектировании DAL

  1. Не ставится задача автоматического, безостановочного, не требующего затрат или мгновенного переключения работающей АС с одного средства хранения на другое. Проектировочные решения должны не полностью исключать (что долго и сложно), а существенно снижать зависимость логики приложения от средства хранения таким образом, чтобы значительно облегчить возможный переход. Нужно рассчитывать на разумный подход проектировщиков АС и понимание ими архитектурных принципов и целей, а потому не пытаться выстроить суперзащищенную техническую систему.
  2. При проектировании должны максимально использоваться готовые, уже существующие на рынке и стандартизованные средства и компоненты. Если предприятие хочет обеспечить максимальную независимость от вендоров, то предпочтительно использование Open Source продуктов и технологий, но только достаточно зрелых, с подобающим размером сообщества и примерами внедрений на ответственных предприятиях.
  3. Следует стремиться к простоте перевода существующих АС на DAL.
  4. Лучше наращивать возможности реализуемого DAL постепенно, итерационно. Первый шаг должен быть простым, дешевым и быстрым, направленным на решение наиболее актуальных задач (в частности, переносимость реляционных СУБД).
  5. Новый подход к управлению хранением может не ограничиваться техническими средствами, а включать, например, изменения в организационных механизмах предприятия в части управления инфраструктурой, а также в процессах проектирования и технического аудита АС.

Варианты размещения компонентов структуры DAL

Рис. 6. Варианты размещения компонентов структуры DAL

  1. В виде библиотеки, включаемой в состав приложения. В этом варианте необходима разработка разных видов модулей доступа для разных технологий разработки АС.
  2. В виде сетевого сервиса. Этот вариант предназначен для тех случаев, когда по каким-то причинам невозможна или нежелательна работа сервиса доступа к данным в виде библиотеки (например, ИС разработана на платформе, у которой нет библиотеки для работы с DAL). В таком варианте DAL доступен для любого приложения, способного работать с сетевыми сервисами по протоколу HTTP. Для этого способа размещения набор предоставляемых интерфейсов доступа к данным может быть ограничен.

Что такое компьютерная сеть?

Компьютерная сеть (Computer NetWork: net – сеть, work –работа) – это система обмена информацией между компьютерами.

Главная цель – обеспечение доступа для пользователя к локальным ресурсам любого из компьютеров сети.

  • Основные компоненты компьютерной сети
  • Компьютеры: ПК, ноутбуки, мэйнфреймы…
  • Телекоммуникационное оборудование: коммутаторы, маршрутизаторы, линии связи…
  • Операционные системы – WinNT, Novell NetWare, Unix…
  • Сетевые приложения – сетевые принтеры и диски, базы данных…

Классификация компьютерных сетей

  • …по «географии» распространения:
  • Локальные сети LAN (Local Area Network)
  • Глобальные сети WAN(Wide Area Network)
  • Городские сети MAN(Metropolitan Area Network)
  • …по масштабу производственного подразделения:
  • Сети отделов
  • Сети кампусов
  • Корпоративные сети
  • …по способу управления:
  • Сети «клиент-сервер»: сервер– поставщик услуг, клиент– потребитель услуг.
  • Одноранговые сети.
  • …по структуре (топологии) связей:
  • С топологией «Общая шина»;
  • С топологией «Звезда»;
  • С топологией «Кольцо»;
  • С древовидной топологией
  • Со смешанной топологией

Наиболее распространенные виды сетей.

Интернет (Internet) – сообщество международных и национальных компьютерных сетей.

Интранет (Intranet) – внутренняя сеть организации, использующая протоколы, службы и технологии интернета.

Экстранет (Extranet) – корпоративная интранет, имеющая доступ к части ресурсов извне только для ограниченного числа пользователей.

Модуль доступа к РСУБД для приложений Java

Интерфейсы доступа к реляционным данным

  • доступ напрямую к реляционным данным через интерфейс JDBC и язык SQL;
  • доступ посредством объектной модели через объектно-реляционный адаптер JPA (Java Persistence API).

Конструктивная реализация модуля DAL для Java

JBoss TeiidРис. 8. Конструктивная реализация модуля DAL для Java

  • предоставление интерфейса JPA для приложений Java;
  • предоставление интерфейса JDBC для приложений Java;
  • использование собственного унифицированного диалекта SQL (на основе стандарта SQL-99);
  • трансляция собственного диалекта SQL в специфические диалекты поддерживаемых БД;
  • наличие коннекторов к большинству используемых РСУБД и простая расширяемость;
  • возможность работы как в режиме встроенного модуля, так и в режиме сетевого сервиса;
  • открытые исходные коды (Open Source), возможность бесплатного использования в коммерческих целях, развитое сообщество и примеры внедрения в крупных предприятиях.
  • объединение баз данных путем создания так называемой «виртуальной БД» (virtual DB, VDB) в настройках с помощью визуального дизайнера. Подобная «виртуальная БД» ассоциируется с реальными средствами хранения (не только реляционными);
  • эффективное выполнение «кросс-запросов» — SQL-запросов к «виртуальной БД», которые автоматически транслируются в SQL-запросы к реальным БД;
  • кеширование результатов запросов к «виртуальной БД».

Модуль доступа к РСУБД для приложений Java

Интерфейсы доступа к реляционным данным

  • доступ напрямую к реляционным данным через интерфейс JDBC и язык SQL;
  • доступ посредством объектной модели через объектно-реляционный адаптер JPA (Java Persistence API).

Конструктивная реализация модуля DAL для Java

JBoss TeiidРис. 8. Конструктивная реализация модуля DAL для Java

  • предоставление интерфейса JPA для приложений Java;
  • предоставление интерфейса JDBC для приложений Java;
  • использование собственного унифицированного диалекта SQL (на основе стандарта SQL-99);
  • трансляция собственного диалекта SQL в специфические диалекты поддерживаемых БД;
  • наличие коннекторов к большинству используемых РСУБД и простая расширяемость;
  • возможность работы как в режиме встроенного модуля, так и в режиме сетевого сервиса;
  • открытые исходные коды (Open Source), возможность бесплатного использования в коммерческих целях, развитое сообщество и примеры внедрения в крупных предприятиях.
  • объединение баз данных путем создания так называемой «виртуальной БД» (virtual DB, VDB) в настройках с помощью визуального дизайнера. Подобная «виртуальная БД» ассоциируется с реальными средствами хранения (не только реляционными);
  • эффективное выполнение «кросс-запросов» — SQL-запросов к «виртуальной БД», которые автоматически транслируются в SQL-запросы к реальным БД;
  • кеширование результатов запросов к «виртуальной БД».

Концепция Data Access Layer

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

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

  • обеспечивать возможность использования специализированных БД в ИТ-архитектуре предприятия одновременно с сохранением управляемости (например, за счет контроля их разнообразия и применения);
  • подготавливать бизнес-приложения к плавной и технологичной смене СУБД в случае обострения отношений с поставщиком СУБД или, возможно, из соображений технологической модернизации и технологического развития.

Рис. 2. Принцип управляемого специализированного хранения данных

Понятия

Этот раздел уточняет и детализирует модель объектов описания DAL, коротко введенную в предыдущем разделе.Рис. 4. Понятийная модель концепции DAL

  • класс данных;
  • средство хранения;
  • характеристика средства хранения;
  • класс средств хранения;
  • группа данных;
  • контейнер данных.

Класс данных

  • абстрактную («логико-математическую») модель самих данных (например, «набор реляционных отношений» или «набор пар ключ-значение»);
  • модель (или несколько моделей) доступа к данным и вычисления над данными (например, «реляционная алгебра» или MapReduce);
  • модель безопасности (например, «именованные контейнеры», «пользователи» и «права»);
  • модель структуры данных (например, «схема с описанием таблиц» или «перечень групп атрибутов»).
  • производительность чтения/записи;
  • масштабируемость;
  • работа в памяти (in-memory);
  • ограничения;
  • специализация (например, Big Data или Fast Data);
  • поддержка ACID-транзакций и т. д.

Обобщение тенденций

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

Уже очевидно, что ветвление архитектур на этом этапе будет происходить, в первую очередь, за счет встраивания системных компонентов в само приложение:

  • Встраиваемые в приложение коммуникационного сервера: HTTP/WS, HTTPS/WSS, TCP/TLS и т.д.
  • Встраиваемые в приложение СУБД с автоматической синхронизацией.
  • По аналогии можно вспомнить и про еще одну функцию ИС, это обработка данных или вычисления. Так что, встраиваемые в приложения систем распределенных вычислений рано или поздно тоже произойдет. Ведь пользовательские устройства в наше время обладают большой вычислительной мощностью и не использовать их для распределенной обработки данных, это непозволительное архитектурное упущение.

Лично я хочу объединить Data-centric архитектуру (которая, по принципу Парето, накроет 80% потребностей полной автоматизацией) с сервером приложений (который даст возможность сделать интеграцию на уровне API или шины событий для оставшихся 20% случаев). Для этого протокол взаимодействия ИС должен поддерживать одновременно 5 типов взаимодействия: RPC, REST, Event BUS, DB Sync, Binary streaming. Над таким комплексным решением и работает сейчас наша команда.

Кроме четырех крупных архитектур можно строить гибриды из комбинации отдельных возможностей:

  • Synchronization — синхронизация структур данных между приложениями в распределенных системах в режиме времени, приближенном к реальному;
  • Offline — возможность работать с частью данных, сохраненных в локальном хранилище в браузере или мобильном приложении, а при выходе в онлайн синхронизировать;
  • Interactivity — возможность двустороннего обмена событиями с сервером и построение реактивных компонентов: UI, курсоров баз данных, логики приложения, обмена по сети и т.д.;
  • Low latency (или High availability) — характеристика готовности обработки запросов и оптимизация времени отклика сервера (не путать с пропускной способностью);
  • Highload — обработка интенсивного потока запросов (request per second), что включает их частоту, размер, приоритет, время ожидания в очереди, время жизни и ресурсы для обслуживания;
  • High connectivity — большое количество конкурентных (одновременных и долгоживущих) соединений клиентов к серверу с возможностью двустороннего обмена данными по инициативе любой из сторон;
  • High interconnection — характеристика интенсивности взаимодействия между конкурентными соединениями, а также размер взаимодействующих групп соединений;
  • Scalability — группа характеристик горизонтального и вертикального масштабирования, обеспечивающих прозрачность масштабирования для программных и аппаратных средств (без переписывания кода);
  • Big data — возможность обрабатывать большие объемы данных, например потоковая обработка данных или построение запросов к распределенным хранилищам;
  • Big memory и in-memory DB — высокая утилизация объемов памяти или перенос баз данных полностью в оперативную память с дополнительными индексами для быстрого исполнения запросов;
  • Integration flexibility — характеристика гибкости и простоты интеграции решений, на базе интроспекции, автоматического связывания интерфейсов, скаффолдинга и динамической интерпретации метамоделей.

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

Отчет Duo об удаленном доступе

Cisco Безопасность Duo с его современной безопасностью доступа, предназначен для защиты всех пользователей, устройств и приложений. Он предлагает безопасный доступ и масштабируемое, простое в развертывании решение SaaS, которое изначально защищает все приложения. Кроме того, он обеспечивает интуитивно понятную аутентификацию для пользователей. В с помощью удаленного доступа можно было получить некоторые интересные факты об эволюции удаленной работы. Таким образом, мы знаем, что 78% опрошенных рабочих не менее 60% времени работали из дома в марте этого года.

Еще одним заслуживающим внимания фактом стало увеличение на 72% количества многофакторных удаленных технологий аутентификации и на 85% увеличение использования политик, запрещающих аутентификацию по SMS. Что касается iOS устройств, они в четыре раза чаще получали и устанавливали обновления, чем Android устройств. Кроме того, использование биометрических устройств увеличилось на 64%. Ежедневная аутентификация в облачных приложениях также увеличилась на 40% в первые месяцы пандемии Covid-19. В то время целью этих компаний было продолжить работу и гарантировать безопасный доступ к своим услугам.

Обслуживание высоких нагрузок облаком (#A Cloud Highload)

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

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

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

Отраслевые методы многофакторной аутентификации

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

Это график технологического сектора.

Как видно, в обоих секторах использование SMS-аутентификации очень мало из-за того, что применяются более современные и безопасные методы. По этой причине мы ранее упоминали, что его использование значительно сократилось. Беспокоит тот факт, что более 30% Windows устройства в медицинских организациях по-прежнему использовали Windows 7, хотя их поддержка уже закончилась.

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

Одноранговое или пиринговое взаимодействие (#D Peer-to-Peer)

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

Недостатки: Вопрос «доверия» в пиринговых сетях все еще полностью не преодолим. Строить распределенные ИС только на P2P не получится, сервера все равно будут в этой схеме. Пока нет распространенных протоколов, библиотек, фреймворков и других программных средств для реализации в объеме, необходимом для построения прикладных ИС.

Вывод: Элементы одноранговых сетей будут встраиваться в централизованные ИС.

Фаза 6: Технология мультимедийных БД.

Технология мультимедийных БД (с 1995 г.) связана с переходом к объектно-реляционным БД.

Название технологии происходит от «мультимедиа» (от англ. multimedia – многие средства).

Технология позволяет хранить, обрабатывать и манипулировать объектами со сложным поведением (карты, видео-ролики и т.п.).

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

  1. КОНТРОЛЬНЫЕ ВОПРОСЫ:
  2. В каких аспектах можно рассматривать эволюцию ИТ?
  3. Почему сегодня эволюцию ИТ не рассматривают как эволюцию носителей информации?
  4. Назовите основные этапы в эволюции критериев разработки ПО.
  5. Сколько этапов (фаз) насчитывает эволюция ИТ с точки зрения смены технологий управления данными?
  6. Какие фазы эволюции ИТ связаны с эволюцией носителей информации?
  7. Каким образом осуществлялось управление данными в технологии магнитных лент?
  8. Каким образом осуществлялось управление данными в технологии оперативных БД на основе магнитных дисков и барабанов?
  9. Каким образом в этой технологии обеспечивалась независимость данных?
  10. Какая проблема вызвала переход к следующей фазе в развитии ИТ?
  11. Что такое «компьютерная сеть» (КС)? Назовите основную цель функционирования КС?
  12. Назовите основные признаки, используемые для классификации КС.
  13. Назовите и определите основные виды КС.
  14. Опишите общую схему взаимодействия в КС по технологии «клиент-сервер».
  15. Назовите и определите основные понятия технологии «клиент-сервер».
  16. Каким образом строится приложение «клиент-сервер»?
  17. Назовите технологии программирования на стороне сервера.
  18. Назовите технологии программирования на стороне клиента.
  19. Назовите основные признаки технологии мультимедийных БД.

Обобщение тенденций

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

Уже очевидно, что ветвление архитектур на этом этапе будет происходить, в первую очередь, за счет встраивания системных компонентов в само приложение:

  • Встраиваемые в приложение коммуникационного сервера: HTTP/WS, HTTPS/WSS, TCP/TLS и т.д.
  • Встраиваемые в приложение СУБД с автоматической синхронизацией.
  • По аналогии можно вспомнить и про еще одну функцию ИС, это обработка данных или вычисления. Так что, встраиваемые в приложения систем распределенных вычислений рано или поздно тоже произойдет. Ведь пользовательские устройства в наше время обладают большой вычислительной мощностью и не использовать их для распределенной обработки данных, это непозволительное архитектурное упущение.

Лично я хочу объединить Data-centric архитектуру (которая, по принципу Парето, накроет 80% потребностей полной автоматизацией) с сервером приложений (который даст возможность сделать интеграцию на уровне API или шины событий для оставшихся 20% случаев). Для этого протокол взаимодействия ИС должен поддерживать одновременно 5 типов взаимодействия: RPC, REST, Event BUS, DB Sync, Binary streaming. Над таким комплексным решением и работает сейчас наша команда.

Кроме четырех крупных архитектур можно строить гибриды из комбинации отдельных возможностей:

  • Synchronization — синхронизация структур данных между приложениями в распределенных системах в режиме времени, приближенном к реальному;
  • Offline — возможность работать с частью данных, сохраненных в локальном хранилище в браузере или мобильном приложении, а при выходе в онлайн синхронизировать;
  • Interactivity — возможность двустороннего обмена событиями с сервером и построение реактивных компонентов: UI, курсоров баз данных, логики приложения, обмена по сети и т.д.;
  • Low latency (или High availability) — характеристика готовности обработки запросов и оптимизация времени отклика сервера (не путать с пропускной способностью);
  • Highload — обработка интенсивного потока запросов (request per second), что включает их частоту, размер, приоритет, время ожидания в очереди, время жизни и ресурсы для обслуживания;
  • High connectivity — большое количество конкурентных (одновременных и долгоживущих) соединений клиентов к серверу с возможностью двустороннего обмена данными по инициативе любой из сторон;
  • High interconnection — характеристика интенсивности взаимодействия между конкурентными соединениями, а также размер взаимодействующих групп соединений;
  • Scalability — группа характеристик горизонтального и вертикального масштабирования, обеспечивающих прозрачность масштабирования для программных и аппаратных средств (без переписывания кода);
  • Big data — возможность обрабатывать большие объемы данных, например потоковая обработка данных или построение запросов к распределенным хранилищам;
  • Big memory и in-memory DB — высокая утилизация объемов памяти или перенос баз данных полностью в оперативную память с дополнительными индексами для быстрого исполнения запросов;
  • Integration flexibility — характеристика гибкости и простоты интеграции решений, на базе интроспекции, автоматического связывания интерфейсов, скаффолдинга и динамической интерпретации метамоделей.

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

Доступ к данным

Существует шесть основных методов доступа к данным:

  • Физический последовательный.
  • Индексно-последовательный.
  • Индексно-произвольный.
  • Инвертированный.
  • Прямой.
  • Доступ через хеширование.

Перечисленные методы отличаются друг от друга по двум признакам:

  • Эффективность хранения;
  • Эффективность доступа.

Как правило, эти два признака находятся в обратной зависимости. При эффективном хранении доступ усложняется. И наоборот — меры ускоряющие доступ к данным, приводят к увеличению объемов требуемой для хранения памяти.

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

Одноранговое или пиринговое взаимодействие (#D Peer-to-Peer)

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

Недостатки: Вопрос «доверия» в пиринговых сетях все еще полностью не преодолим. Строить распределенные ИС только на P2P не получится, сервера все равно будут в этой схеме. Пока нет распространенных протоколов, библиотек, фреймворков и других программных средств для реализации в объеме, необходимом для построения прикладных ИС.

Вывод: Элементы одноранговых сетей будут встраиваться в централизованные ИС.

Инвертированный метод доступа

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

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

БД-центрический подход (#C Database-centric)

Преимущества: Очень привлекательно поставить БД вперед приложения и настроить синхронизацию (частичную репликацию) между базами данных. Таким образом, мы имеем СУБД встраиваемые в приложения и работаем не с сервером, а с локальной БД. Для этого уже придумано множество методов: optimistic replication, operational transformation, conflict-free replicated data type, ведь СУБД существуют уже достаточно давно и научились масштабироваться.

Недостатки: Общение между приложениями только через данные явно ограничивает наши возможности. Это редукция всего к работе с базой. А как же передача событий, интеграция на уровне API, вызов удаленных процедур? Обо всем этом нужно забыть при БД-центрическом подходе.

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: