Введение

API классической Mac OS
Data Access Manager (DAM) — это API доступа к базам данных для классической Mac OS, представленный в 1991 году как расширение System 7. По своей концепции DAM был аналогичен ODBC, но получил ограниченное распространение и был прекращен к концу 1990-х годов. Лишь небольшое количество продуктов когда-либо использовали его, хотя он применялся при создании некоторых весьма впечатляющих демо-программ в начале 1990-х. В более поздних версиях классической Mac OS и macOS для этих целей используется ODBC.

Понятия

DAM и ODBC во многом схожи. Основная цель обеих систем заключалась в отправке "запросных строк" поставщику данных, который в ответ (возможно) предоставлял "результирующий набор", состоящий из строк данных. Обе системы должны были преобразовывать данные в соответствующие форматы системы, например, целые числа и строки. Кроме того, обе предоставляли подсистему связи, скрывавшую детали отправки запросов и данных между клиентом и сервером. Как и большинство программного обеспечения Apple, DAM стремился максимально упростить процесс запроса для пользователей – как пользователей приложений, так и программистов, разрабатывающих эти приложения. Особенно заметной особенностью была концепция "документов запросов". Документы запросов могли содержать любое количество предварительно определенных запросов (или других серверных команд) вместе с дополнительным кодом для их изменения перед отправкой на сервер. Например, типичный документ запроса мог содержать запросную строку для входа на сервер базы данных, а в случае успеха – запросить текущую дату с локальной клиентской машины с помощью вызова Mac OS, а затем использовать эту дату в запросе, возвращающем данные об остатках на складе на указанную дату. Документы запросов также могли включать компьютерный код и ресурсы, необходимые для поддержки этого процесса, например, диалоговое окно с запросом имени пользователя и пароля. Приложения могли использовать документы запросов, не зная внутренней структуры запроса. Они просто открывали документ, состоящий из ряда ресурсов, и последовательно выполняли каждый ресурс запроса. DAM обеспечивал выполнение любого необходимого кода в документе без ведома приложения, а результаты в конечном итоге передавались обратно в приложение для отображения. Вся операция была непрозрачной, что позволяло приложениям легко добавить поддержку DAM. DAM также включал два более прямых API: интерфейс высокого уровня и интерфейс низкого уровня. Интерфейс высокого уровня был довольно похож на использование документов запросов, хотя предполагалось, что приложение будет формировать запросы в коде, а не в ресурсах. Интерфейс высокого уровня в целом аналогичен общедоступному интерфейсу ODBC. Интерфейс низкого уровня позволял программисту вмешиваться в любой момент процесса запроса, например, извлекать данные построчно. Одно из ключевых различий между DAM и ODBC возникло скорее случайно. До разработки DAM компания Apple приобрела промежуточное программное обеспечение для баз данных, которое продавала под названием Язык доступа к данным (DAL). DAL по сути представлял собой стандартизированный SQL с трансляторами для различных баз данных, работающих на стороне сервера. В то время стандарты SQL были крайне базовыми и недостаточно поддерживались, DAL решил эту проблему, предоставив единый язык и осуществляя преобразование в другие системы. Клиентское программное обеспечение, включая DAM, могло отправлять запросы на стандартном языке DAL, которые затем переводились и выполнялись независимо от используемой базы данных. В отличие от этого, ODBC изначально разрабатывался как система на основе SQL, основанная на стандартизированном интерфейсе уровня вызовов от X/Open (сейчас часть Open Group). В ODBC каждый источник данных представлялся как SQL-сервер. Для источников данных без сервера, таких как текстовые файлы, локальный SQL-парсер интерпретировал команды и считывал файл. В ODBC все драйверы источников данных должны понимать SQL и переводить его на локальный диалект при необходимости, а также преобразовывать данные в стандартные форматы при их возврате. Это различие делало DAM значительно менее полезным, чем ODBC на практике. Поскольку предполагалось, что DAL будет обеспечивать стандартизацию запросов, DAM не имел слоя, подобного ODBC, для перевода различных диалектов. Чтобы DAM был действительно полезен, пользователю также требовалось приобрести и установить сервер DAL для своей конкретной базы данных. DAL обычно был известен своей медлительностью и высокой стоимостью, что серьезно снижало общую ценность DAM. Кроме того, DAM не стандартизировал язык для доступа к не-SQL источникам данных; адаптер для текстового файла мог использовать не-SQL язык или полностью систему, основанную на вызовах функций. Также простые интерфейсы для текстовых файлов или аналогичных источников данных не входили в базовую комплектацию DAM.

Применение

Одним из основных клиентов DAM была HyperCard, система управления данными и быстрой разработки приложений от Apple. Сочетание отличной системы форм HyperCard с данными из DAM привело к созданию невиданных ранее GUI-приложений, управляемых данными. Наиболее распространенной демонстрацией системы был стек HyperCard, выполняющий запросы к базе данных Baskin Robbins, что ранее было невозможно, поскольку каждый региональный филиал использовал собственные серверы баз данных, которые DAL теперь объединила в единую систему. Повторные заказы на пополнение запасов можно было оформлять, перетаскивая изображения шариков мороженого на графическое отображение текущих складских запасов. Система произвела такое впечатление, что другие производители баз данных начали спешно разрабатывать аналогичные решения; Oracle Corporation немедленно приобрела PLUS у Spinnaker Software, выпустив её сначала как Oracle Card, а затем как Oracle Media Objects. Другие компании пошли по схожему пути, и вскоре интерфейс базы данных, управляемый событиями, стал стандартной функцией большинства систем. Ряд других приложений также использовали эту систему, и, возможно, иронично, наиболее регулярно это делали различные продукты Microsoft Office. В остальном поддержка DAM была довольно редкой, и продукт не получил широкого распространения. Вероятно, это было связано с незавершенностью системы DAM в целом: необходимостью использования промежуточного ПО DAL в большинстве случаев и отсутствием недорогих средств построения запросов к документам (существовали лишь дорогие аналоги), что значительно удорожало использование DAM. Разработка DAM была прекращена в середине 1990-х годов, и система полностью исчезла до выхода Mac OS X. В течение некоторого времени была доступна "классическая" версия ODBC для Mac OS, хотя поддержка была ограничена. Начиная с выпуска OS X 10.2 Jaguar, Apple начала распространять версию кроссплатформенных драйверов ODBC iODBC. Начиная с OS X 10.4 Tiger, Apple представила новую, значительно более продвинутую систему, известную как Core Data. Core Data позволяет разработчикам сериализовать данные в SQLite для обработки, что концептуально аналогично использованию ODBC с не-SQL источниками данных.