ЗАБРАТЬ
Парадигма | Императивный , Декларативный |
---|---|
Семья | дБАЗА |
Разработано | Арден Скотт |
Разработчик | Ричард Мур |
Впервые появился | 1971 год |
Язык реализации | ФОРТРАН |
Платформа | Паспорт безопасности 940 |
Лицензия | Собственный |
Под влиянием | |
dBASE , JPLDIS , RECALL и многие другие. |
RETRIEVE — это система управления базами данных (СУБД), предлагаемая в системах Tymshare компании Tymshare начиная с августа 1971 года. Она была написана на собственном языке SUPER FORTRAN на SDS 940 . Он предлагал базовую функциональность однофайловых нереляционных баз данных с использованием интерактивного языка программирования . Это один из первых примеров программного обеспечения как услуги (SaaS). [ 1 ]
RETRIEVE пользовались большим влиянием и породили ряд относительно прямых клонов. Wang Laboratories Программа RECALL компании Wang 2200 на миникомпьютере была почти идентична программе RETRIEVE, вплоть до того, что различия были подробно описаны на одной странице. JPL создала версию, известную как JPLDIS, для UNIVAC 1108 в 1973 году, которая также была очень похожа.
Уэйн Рэтлифф , многолетний подрядчик JPL, был вдохновлен JPLDIS портировать его на IMSAI 8080 для управления своим футбольным пулом , а затем выпустил его коммерчески как Vulcan для CP/M в 1979 году. Эштон-Тейт лицензировал Vulcan и переиздал его. в 1980 году он получил название dBASE II , что положило начало рынку баз данных микрокомпьютеров . Большая часть исходного синтаксиса RETRIEVE остается неизменной в dBASE и многих клонах xBASE , доживших до 21 века.
История
[ редактировать ]В 1969 году Джим Райан из Tymshare разработал расширенную версию IBM System/360 H-level (258 КБ) FORTRAN , добавив строки и другие функции, которые использовали преимущества их систем SDS 940 . Райан нанял Ричарда Мура и Франка Брейчера для разработки его как СУПЕР ФОРТРАН, и в 1970 году он был запущен в их системах. [ а ] Вскоре после выпуска СУПЕР ФОРТРАНа Арден Скотт попросил Мура использовать СУПЕР ФОРТРАН для разработки своего видения системы управления базами данных (СУБД). Первая версия была готова через несколько недель и сразу же завоевала большую популярность среди клиентов Tymshare. [ 1 ] [ б ]
В 1970-е годы Tymshare начала переводить свои системы с SDS на платформу PDP-10 , в конечном итоге перейдя на TOPS-10 . Это привело к попытке создать совершенно новый механизм базы данных для этой платформы, известный как MAGNUM . MAGNUM представлял собой полноценный механизм реляционной базы данных , и во многих источниках утверждается, что это первая подобная система, предложенная на коммерческой основе, когда она была запущена в эксплуатацию в октябре 1975 года. [ 3 ] Хотя большинство клиентов Tymshare и внутренних пользователей перешли на MAGNUM, к этому времени RETRIEVE была портирована на ряд платформ, и эти версии оставались очень популярными за пределами компании.
В 1970 году Лаборатория реактивного движения (JPL) установила три машины UNIVAC 1108 . Фред Томпсон использовал RETRIEVE для управления базой данных механических калькуляторов в Лаборатории реактивного движения и решил внедрить эту систему у себя, когда появятся модели 1108. В 1971 году он сотрудничал с программистом JPL Джеком Хэтфилдом для создания JPLDIS. Хэтфилд покинул JPL в 1974 году, и проект был передан другому программисту JPL, Джебу Лонгу, который добавил ряд функций. [ 4 ]
В 1973 году был выпущен Wang 2200 — настольный мини-компьютер с кассетным накопителем . [ 5 ] RETRIEVE был портирован на эту платформу под названием RECALL. В отчете армии США различия подробно описаны на одной странице и сделан вывод: «Различия между двумя реализациями очень незначительны». [ 6 ]
Работая в JPL подрядчиком, Уэйн Рэтлифф вошел в офисный футбольный пул . Он не интересовался игрой, но чувствовал, что может выиграть пул, обрабатывая статистику после игры, найденную в газетах. Для этого он начал искать систему баз данных и случайно наткнулся на документацию JPLDIS. Он использовал это как основу для порта PTDOS , собранном из комплекта на своем микрокомпьютере IMSAI 8080 , и назвал получившуюся систему Vulcan (в честь мистера Спока из «Звездного пути» ). Позже она была перенесена на CP/M , когда эта система стала практически универсальной на рынке автобусов С-100 . [ 7 ]
В 1980 году Джордж Тейт увидел рекламу Vulcan, продававшуюся за 49 долларов. [ 8 ] Он заключил лицензионное соглашение с Ratliff, переименовал его в dBASE II , чтобы оно звучало как вторая версия, и выпустил его на рынок за 695 долларов. Система имела успех, и в 1981 году IBM заказала порт на еще не выпущенную PC DOS . [ 9 ] Это был ошеломительный успех, один из трех больших пакетов, наряду с Word Perfect и Lotus 1-2-3 , которые составляли эквивалент офисного пакета на раннем рынке DOS. [ 10 ]
Описание
[ редактировать ]Основные операции
[ редактировать ]RETRIEVE представляла собой нереляционную базу данных, и эта концепция не была введена до 1970 года. Базы данных RETRIEVE содержали одну таблицу, хранящуюся в одном файле, который обычно использовал в качестве имени файла сокращенную форму имени базы данных. Структура таблицы определяется при создании базы данных и позволяет вводить в поля символьные, целочисленные или числовые значения произвольной формы. [ 11 ] База данных могла иметь максимум 98 полей, максимум 72 символа в каждом поле, а общее количество в каждой строке составляло 768 символов или 256 слов. Имена полей должны начинаться с буквы и могут включать дополнительные буквы, цифры, точку и символ @, всего не более 31 символа. [ 12 ]
Система была интерактивной, использовалась командная строка . в ней для взаимодействия с пользователем [ 13 ] Например, чтобы запустить новую базу данных, пользователь должен ввести CREATE
в командной строке, которая затем ответит, попросив пользователя ввести имя базы данных, а затем запросив определения полей. Пустая строка останавливает этот процесс и переводит его в режим ввода данных, позволяя вводить строки. [ 14 ] Любой шаг этой операции можно удалить, предоставив данные в исходной команде, например, если ввести CREATE EMPLOYEES
вместо CREATE
, система больше не запрашивала имя файла. [ 15 ]
Существовало три формата файлов базы данных, которые можно было указать во время CREATE
, нормальный формат символов SYMBOLIC
, BINARY
которые сохраняли числа в своих 24-битных внутренних форматах, и SCRAMBLED
который зашифровал файл с помощью пароля, введенного пользователем. [ 16 ]
Существующие базы данных были загружены с помощью LOAD
или BASE
(они были эквивалентны). [ 17 ] Данные сохранялись по мере изменения, но была и SAVE
команда для записи данных (или их фрагментов) в плоские файлы. [ 18 ] QUIT
вышел из системы и вернулся в базовую операционную систему. [ 17 ]
Получение данных
[ редактировать ]После того как база данных была определена и заполнена или была загружена существующая, данные можно было отобразить с помощью LIST
. Без каких-либо параметров он распечатывал все записи в том порядке, в котором они были введены, их «RECNO», которое печаталось в начале строки. Можно также предоставить список полей для выбора и изменения порядка полей в распечатке, например LIST EMP.NUM,NAME,SALARY
. PRINT
Оператор работал почти идентично, отличаясь только тем, что не выводил RECNO в начале строк. [ 19 ] FAST
был похож на PRINT
, но также подавили заголовки полей. [ 18 ]
Отдельные записи можно было выбирать с использованием «системы адресации номеров записей», которая добавлялась к LIST
или PRINT
. Это был гибкий формат, позволяющий указывать как отдельные RECNO, разделенные запятыми, так и диапазоны с двоеточиями, например: 1,7:20,50 PRINT
распечатывал записи 1, все от 7 до 20, а затем 50. Также включалась псевдозапись $
для представления последней записи, поэтому 100:$ LIST
распечатал все записи начиная со 100. [ 20 ]
Записи также можно выбирать по полям, отвечающим определенным критериям на основе их содержимого, с помощью FOR
синтаксис. Чтобы перечислить всех сотрудников с зарплатой более 40 000 долларов, можно было бы PRINT FOR SALARY>40000
. Тот же синтаксис можно использовать для выбора отдельных записей на основе их содержимого, а не, например, RECNO. LIST FOR NAME="Bob Smith"
. [ 21 ] [ с ] RETRIEVE поддерживает все основные сравнения, =
, <
, >
, <=
, >=
и #
для не-равных, что встречается в некоторых современных BASICах . Что необычно, RETRIEVE также включал в себя английские расширения традиционных сравнений, поэтому можно было использовать либо SALARY>40000
или SALARY GREATER THAN 40000
. Такие выражения могут также включать базовую математику, в том числе +
, -
, *
для умножения, /
для деления и ↑
для возведения в степень. [ 22 ] Их можно дополнительно комбинировать с логическими выражениями, используя AND
, OR
и NOT
. [ 21 ]
Кроме того, SUM
, COUNT
и AVERAGE
работал аналогично LIST
или PRINT
, включая те же концепции выбора записей. Как следует из названия, они выводят одно значение со связанными с ним значениями. Например, COUNT FOR NAME='Bob Smith'
скорее всего, вернет 1, в то время как AVERAGE SALARY FOR SALARY>40000
может вернуть 42500. [ 23 ]
В дополнение к LIST
/ PRINT
/ FAST
, дальнейший выходной оператор: REPORT
. Это работает аналогичным образом, но имеет ряд опций для красивой печати вывода. Его можно вызвать отдельно или с указанными выше квалификаторами, но когда он используется, он переходит в интерактивный режим, в котором задается ряд вопросов о том, куда отправлять выходные данные (где T является терминалом), должен ли он быть одинарным или двойным интервалом, включать заголовки, итоги и т. д. [ 24 ]
Изменение данных
[ редактировать ]Записи можно удалить с помощью DELETE
оператор, используя те же селекторы записей или выражения полей, что и выше. Новые записи были вставлены с помощью APPEND
. APPEND FIELDS
вошел в интерактивный режим, позволяющий пользователю вводить дополнительные записи поле за полем, а не вводить значения, разделенные запятыми, построчно. [ 25 ] APPEND FROM filename
читать данные из текстового файла, разделенного запятыми, в текущую базу данных, уже находящуюся в памяти. [ 26 ] MERGE
использовался для обновления существующих записей; это работало похоже на APPEND
, загружая в текущую базу данных из другого файла, но в данном случае включал дополнительный квалификатор ON
. Например, MERGE ON NAME FROM ADDRESSES
читал бы данные из файла ADDRESSES и искал в этом файле столбец, в котором первой записью было «ИМЯ». Затем он будет обрабатывать файл построчно, ища записи в базе данных с этим ИМЯ, а затем обновляя остальные поля данными из этой строки в АДРЕС. [ 27 ]
RETRIEVE поддерживает два интерактивных метода обновления существующих записей: CHANGE
и REPLACE
. REPLACE
работал аналогично современному эквиваленту SQL , UPDATE
, принимая какое-либо выражение селектора, одно или несколько полей и новые значения. Например, можно REPLACE SALARY=SALARY*1.05 WHERE YEARS.EMP>5
. [ 28 ] Пока CHANGE
в конечном итоге сделал то же самое, используя интерактивный режим. Один вызван CHANGE
без нового значения, например, CHANGE FOR 'Bob Smith' IN NAME
. Система распечатала эту строку, а затем разрешила пользователю редактировать запись. [ 29 ] Например, если существует более одного уникального значения, CHANGE FOR YEARS.EMP>5
, каждое значение печаталось в отдельной строке, а изменения отправлялись во все соответствующие записи. [ 30 ] MODIFY
по сути был идентичен CHANGE
но сначала не распечатывал существующие значения. [ 31 ]
Сортировка не выполнялась во время извлечения, а осуществлялась путем изменения базы данных и перезаписи ее содержимого в отсортированном порядке. Это было достигнуто с помощью SORT BY
, за которым следует до двадцати имен полей. Исходные несортированные данные записываются в файл резервной копии. [ 32 ]
The RESULTS TO
Модификатор можно использовать с любым оператором модификации данных для перенаправления результатов в новую базу данных. Например, APPEND FROM FEBSALES RESULTS TO CURSALES
добавит данные из файла FEBSALES в текущую базу данных, а затем сохранит результаты в CURSALES без обновления уже открытой базы данных. Или можно было бы SORT BY NAME RESULTS TO SORTEMP
. [ 33 ]
Другие команды
[ редактировать ]Включены служебные команды STRUCTURE
который распечатал схему базы данных , и SIZE
который вернул количество записей. [ 34 ]
Программирование ПОЛУЧИТЬ
[ редактировать ]Хотя ПОЛУЧЕНИЕ часто использовалось в интерактивном режиме, система также включала возможность сохранять списки команд в файлы и затем воспроизводить их. [ 35 ] Командные файлы также могут включать ряд других «вспомогательных» операторов, в том числе TYPE 'a string'
для вывода любой строки, HUSH
для подавления командной строки (точка), TALK
чтобы снова включить подсказку, и ECHO ON
и ECHO OFF
чтобы остановить воспроизведение на терминале. [ 36 ]
Эти командные файлы запускались с использованием DO filename
оператор из внутренней командной строки [ 37 ] или COMMAND filename
снаружи ПОЛУЧИТЬ, в EXECUTIVE. [ 38 ] Если сценарий намеревался оставить пользователя в режиме ПОЛУЧИТЬ в конце, можно было бы поместить COMMAND T
в конце «запускает» Терминал, в котором указано, что должно происходить дальше. Сценарии могут быть связаны вместе с COMMAND
для формирования более сложных рабочих процессов. [ 35 ]
При запуске команды внутри файлов работали так же, как если бы их вводил пользователь. Это означает, что если предоставляется оператор, который обычно требует дополнительного пользовательского ввода, например, CHANGE
без параметров интерактивный режим будет вызываться как обычно. Это позволило командным файлам вызывать пользовательский ввод, а затем выполнять дополнительные инструкции. Можно, например, использовать REPLACE ALL WEEK.SAL=SALARY/52
чтобы узнать о последних изменениях в зарплате, позвоните CHANGE HOURS
чтобы система представила запись каждого сотрудника и запросила его часы в неделю, а затем REPLACE ALL PAY=HOURS*WEEK.SAL
для расчета еженедельной зарплаты для всех пользователей и, наконец, REPORT
он отправляет все это на принтер. [ 39 ]
Сравнение с dBASE
[ редактировать ]Несмотря на то, что их разделяло почти десятилетие и в процессе перехода на четыре платформы, dBASE для DOS оставалась очень похожей на RETRIEVE. Рэтлифф заявил, что произошел «своего рода переход от Retieve к JPLDIS и к моей программе, которую я назвал Vulcan». [ 40 ] Джон Уокер , более известный благодаря AutoCAD , также использовал JPLDIS и категорически заявил, что «DBase II, система баз данных Эштона-Тейта, была копией, повторной реализацией пакета, разработанного в Лаборатории реактивного движения под названием JPLDIS». [ 41 ]
LOAD
/ BASE
стал USE
точки в именах полей были заменены двоеточиями, но большинство других команд и функций остались неизменными, за исключением поддержки различий в базовых платформах, таких как числовые форматы. Например, в исходном руководстве пользователя dBASE используется следующий пример: [ 42 ]
use people list
Это идентично инструкциям в ПОЛУЧИТЬ:
LOAD people LIST
Общая работа операторов в обеих системах во многом идентична. Основные различия dBASE связаны с программируемостью; dBASE добавил переменные, может LIST
столбцы, состоящие из формул типа LIST SALARY*1.05
и добавил гораздо более широкий набор функций для управления данными, включая функции для возврата длины строки или типа данных данного поля. [ 43 ]
Примечания
[ редактировать ]- ^ Точно неясно, когда SUPER FORTRAN был запущен в эксплуатацию, но руководство датировано апрелем 1970 года, так что, вероятно, это произошло где-то в этом году. [ 2 ]
- ^ Грегори называет, по-видимому, противоречивые даты выпуска; если бы это было «несколько недель» после SUPER FORTRAN, это означало бы, что это где-то в 1970 году, но руководство датировано 1971 годом, и он использует эту дату в тексте. [ 1 ]
- ^ Строки могут использовать одинарные или двойные кавычки. [ 22 ]
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Jump up to: а б с Григорий 2018 , с. 136.
- ^ Григорий 2018 , с. 127.
- ^ Григорий 2018 , с. 140.
- ^ «Как это началось — JPLDIS: Как пришла идея» . История FoxPro .
- ^ «Компьютер Wang 2200: все, что вам нужно знать» . История-Компьютер . 04.01.2021 . Проверено 18 октября 2022 г.
- ^ Блум 1976 , с. 1.
- ^ Ламмерс 1986 , с. 111.
- ^ Ламмерс 1986 , с. 115.
- ^ Ламмерс 1986 , с. 117.
- ^ «ЭШТОН-ТЕЙТ: Перед лицом тяжелой жизни в мире программного обеспечения» . Лос-Анджелес Таймс . 10 мая 1987 года.
- ^ Руководство 1971 г. , с. 5.
- ^ Руководство 1971 г. , с. 6.
- ^ Видерхольд 2001 , с. 416.
- ^ Руководство 1971 г. , с. 9.
- ^ Руководство 1971 г. , с. 31.
- ^ Руководство 1971 г. , стр. 28–29.
- ^ Jump up to: а б Руководство 1971 года , с. 25.
- ^ Jump up to: а б Руководство 1971 года , с. 47.
- ^ Руководство 1971 г. , с. 14.
- ^ Руководство 1971 г. , с. 15.
- ^ Jump up to: а б Руководство 1971 года , с. 19.
- ^ Jump up to: а б Руководство 1971 года , с. 18.
- ^ Руководство 1971 г. , стр. 54–56.
- ^ Руководство 1971 г. , стр. 67–68.
- ^ Руководство 1971 г. , с. 44.
- ^ Руководство 1971 г. , с. 35.
- ^ Руководство 1971 г. , с. 46.
- ^ Руководство 1971 г. , с. 23.
- ^ Руководство 1971 г. , с. 20.
- ^ Руководство 1971 г. , с. 21.
- ^ Руководство 1971 г. , с. 57.
- ^ Руководство 1971 г. , с. 59.
- ^ Руководство 1971 г. , с. 61.
- ^ Руководство 1971 г. , с. 48.
- ^ Jump up to: а б Руководство 1971 года , с. 79.
- ^ Руководство 1971 г. , с. 84.
- ^ Руководство 1971 г. , с. 80.
- ^ Руководство 1971 г. , с. 83.
- ^ Руководство 1971 г. , с. 89.
- ^ Ламмерс 1986 , с. 114.
- ^ Уолмсли, Кин (19 сентября 2008 г.). «Интервью с Джоном Уокером – Часть 2» . Через интерфейс .
- ^ dBASE 1983 , с. 3.10.
- ^ dBASE 1983 , с. Приложение С.
Библиография
[ редактировать ]- Ламмерс, Сьюзен (1986). «Интервью с Уэйном Рэтлиффом» . Программисты за работой: интервью с 19 программистами, которые сформировали компьютерную индустрию . Майкрософт Пресс. ISBN 9780914845713 . - отрывок доступен на сайте FoxPro History.
- ПОЛУЧИТЬ: Система поиска управленческой информации (PDF) . Тимшер. Август 1971 года.
- Грегори, Натан (2018). Тим до... Лулу. ISBN 9781387304059 .
- Блум, Ховард (ноябрь 1976 г.). ВСПОМИНАНИЕ: Система поиска управленческой информации для Wang 2200 (Технический отчет). Командование материальной частью армии США. Архивировано из оригинала 15 октября 2019 года.
- Руководство пользователя dBASE II (PDF) (Технический отчет). Эштон-Тейт. 1983.
- Каталог авторских прав. Третья серия: 1970 год: январь-июнь . Бюро авторских прав, Библиотека Конгресса. 1972. с. 1300.
- Видерхольд, Джио (2001). «Глава 8: Схемы» (PDF) . Проектирование баз данных (2-е изд.). МакГроу-Хилл. стр. 405–448. ISBN 9780070701328 .