Jump to content

ЗАБРАТЬ

ЗАБРАТЬ
Парадигма Императивный , Декларативный
Семья дБАЗА
Разработано Арден Скотт
Разработчик Ричард Мур
Впервые появился 1971 год ; 53 года назад ( 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 ]

Примечания

[ редактировать ]
  1. ^ Точно неясно, когда SUPER FORTRAN был запущен в эксплуатацию, но руководство датировано апрелем 1970 года, так что, вероятно, это произошло где-то в этом году. [ 2 ]
  2. ^ Грегори называет, по-видимому, противоречивые даты выпуска; если бы это было «несколько недель» после SUPER FORTRAN, это означало бы, что это где-то в 1970 году, но руководство датировано 1971 годом, и он использует эту дату в тексте. [ 1 ]
  3. ^ Строки могут использовать одинарные или двойные кавычки. [ 22 ]
  1. ^ Jump up to: а б с Григорий 2018 , с. 136.
  2. ^ Григорий 2018 , с. 127.
  3. ^ Григорий 2018 , с. 140.
  4. ^ «Как это началось — JPLDIS: Как пришла идея» . История FoxPro .
  5. ^ «Компьютер Wang 2200: все, что вам нужно знать» . История-Компьютер . 04.01.2021 . Проверено 18 октября 2022 г.
  6. ^ Блум 1976 , с. 1.
  7. ^ Ламмерс 1986 , с. 111.
  8. ^ Ламмерс 1986 , с. 115.
  9. ^ Ламмерс 1986 , с. 117.
  10. ^ «ЭШТОН-ТЕЙТ: Перед лицом тяжелой жизни в мире программного обеспечения» . Лос-Анджелес Таймс . 10 мая 1987 года.
  11. ^ Руководство 1971 г. , с. 5.
  12. ^ Руководство 1971 г. , с. 6.
  13. ^ Видерхольд 2001 , с. 416.
  14. ^ Руководство 1971 г. , с. 9.
  15. ^ Руководство 1971 г. , с. 31.
  16. ^ Руководство 1971 г. , стр. 28–29.
  17. ^ Jump up to: а б Руководство 1971 года , с. 25.
  18. ^ Jump up to: а б Руководство 1971 года , с. 47.
  19. ^ Руководство 1971 г. , с. 14.
  20. ^ Руководство 1971 г. , с. 15.
  21. ^ Jump up to: а б Руководство 1971 года , с. 19.
  22. ^ Jump up to: а б Руководство 1971 года , с. 18.
  23. ^ Руководство 1971 г. , стр. 54–56.
  24. ^ Руководство 1971 г. , стр. 67–68.
  25. ^ Руководство 1971 г. , с. 44.
  26. ^ Руководство 1971 г. , с. 35.
  27. ^ Руководство 1971 г. , с. 46.
  28. ^ Руководство 1971 г. , с. 23.
  29. ^ Руководство 1971 г. , с. 20.
  30. ^ Руководство 1971 г. , с. 21.
  31. ^ Руководство 1971 г. , с. 57.
  32. ^ Руководство 1971 г. , с. 59.
  33. ^ Руководство 1971 г. , с. 61.
  34. ^ Руководство 1971 г. , с. 48.
  35. ^ Jump up to: а б Руководство 1971 года , с. 79.
  36. ^ Руководство 1971 г. , с. 84.
  37. ^ Руководство 1971 г. , с. 80.
  38. ^ Руководство 1971 г. , с. 83.
  39. ^ Руководство 1971 г. , с. 89.
  40. ^ Ламмерс 1986 , с. 114.
  41. ^ Уолмсли, Кин (19 сентября 2008 г.). «Интервью с Джоном Уокером – Часть 2» . Через интерфейс .
  42. ^ dBASE 1983 , с. 3.10.
  43. ^ dBASE 1983 , с. Приложение С.

Библиография

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b340a4f05a4b5893d171194a36a2e0db__1690259880
URL1:https://arc.ask3.ru/arc/aa/b3/db/b340a4f05a4b5893d171194a36a2e0db.html
Заголовок, (Title) документа по адресу, URL1:
RETRIEVE - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)